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