[C++] 反编译器

来源:互联网 发布:sql server for mac 编辑:程序博客网 时间:2024/05/18 03:44

各种开源的decompiler都不太好用,目前最好的反编译器是IDA pro。

虽然是收费的,不过破解版很好找。

我试过5.5版本的,还不错。


我把windows notepad进行了反编译,多少算有点可读性:

/* This file has been generated by the Hex-Rays decompiler.   Copyright (c) 2009 Hex-Rays <info@hex-rays.com>   Detected compiler: Visual C++*/#include <windows.h>#include <defs.h>#include <stdarg.h>//-------------------------------------------------------------------------// Data declarations// extern void *acmdln; weakextern const WCHAR szOtherStuff; // idbextern wchar_t aW[3]; // weakextern wchar_t aA[3]; // weakextern const WCHAR TableName[]; // idbextern const WCHAR aCommdlg_help[]; // idbextern const WCHAR String[]; // idbextern wchar_t a_setup[8]; // weakextern wchar_t aP[3]; // weakextern wchar_t aPt[4]; // weakextern wchar_t aSC_txtCSC_C[]; // idbextern wchar_t aSecuritySppGen[32]; // weakextern int dword_1002B48[2]; // weakextern const WCHAR aIpointsize[]; // idbextern const WCHAR aLffacename[]; // idbextern const WCHAR aLfpitchandfami[]; // idbextern const WCHAR aLfquality[]; // idbextern const WCHAR aLfclipprecisio[]; // idbextern const WCHAR aLfoutprecision[]; // idbextern const WCHAR aLfcharset[]; // idbextern const WCHAR aLfstrikeout[]; // idbextern const WCHAR aLfunderline[]; // idbextern const WCHAR aLfitalic[]; // idbextern const WCHAR aLfweight[]; // idbextern const WCHAR aLforientation[]; // idbextern const WCHAR ValueName[]; // idbextern const WCHAR SubKey[]; // idbextern const WCHAR aIwindowposdy[]; // idbextern const WCHAR aIwindowposdx[]; // idbextern const WCHAR aIwindowposy[]; // idbextern const WCHAR aIwindowposx[]; // idbextern const WCHAR aImarginright[]; // idbextern const WCHAR aImarginleft[]; // idbextern const WCHAR aImarginbottom[]; // idbextern const WCHAR aImargintop[]; // idbextern const WCHAR aSztrailer[]; // idbextern const WCHAR aSzheader[]; // idbextern const WCHAR aStatusbar[]; // idbextern const WCHAR aFwrap[]; // idbextern const WCHAR aEdit[]; // idbextern const WCHAR aFmle_is_broken[]; // idbextern const WCHAR aFsavewindowpos[]; // idbextern const WCHAR aSoftwareMicr_0[]; // idbextern wchar_t aLucidaConsole[15]; // weakextern const WCHAR ClassName[]; // idbextern int dword_1003AF0[2]; // weakextern wchar_t aTxt[4]; // weakextern int dword_1003C74[5]; // weakextern wchar_t a_[4]; // weakextern const WCHAR pszPath[]; // idbextern IID riid; // idbextern IID rclsid; // idbextern IID stru_100400C; // idbextern IID stru_100401C; // idbextern IID stru_10043D0; // idbextern IID stru_10043E0; // idbextern wchar_t aNull[7]; // weakextern OLECHAR psz[]; // idbextern wchar_t aHelp_entry_id_[27]; // weakextern int dword_1004748[4]; // weakextern int dword_10049F4[4]; // weakextern int dword_1004A04[2]; // weakextern int dword_1004AF0[4]; // weakextern const WCHAR aSlipupacc[]; // idbextern wchar_t aStringfileinfo[]; // idbextern const WCHAR SubBlock[]; // idbextern wchar_t aSppsvc_exe[12]; // weakextern wchar_t aSlui_exe[10]; // weakextern wchar_t aSppuinotify_dl[17]; // weakextern const WCHAR aSppsvc[]; // idbextern const WCHAR ServiceName[]; // idbextern int dword_1006D38[6]; // weakextern wchar_t aD[]; // idbextern wchar_t a_txt_0[5]; // weakextern int dword_10098B8; // weakextern wchar_t asc_10098BC[3]; // weakextern int dword_1009EE0[2]; // weakextern struct _EXCEPTION_POINTERS ExceptionInfo; // idbextern __int16 word_100C000; // weakextern BYTE Data; // idbextern int dword_100C008; // weakextern int dword_100C00C; // weakextern int dword_100C010; // weakextern int dword_100C014; // weakextern int dword_100C018; // weakextern int dword_100C01C; // weakextern HWND hWnd; // idbextern HWND dword_100C024; // idbextern HWND dword_100C028; // idbextern BYTE dword_100C02C; // idbextern int dword_100C030; // weakextern WPARAM wParam; // idbextern int dword_100C038; // weakextern int dword_100C03C; // weakextern int dword_100C040; // weakextern WPARAM dword_100C044; // idbextern LPARAM lParam; // idbextern int nHeight; // idbextern int nWidth; // idbextern int X; // idbextern int Y; // idbextern int dword_100C05C; // weakextern int dword_100C060; // weakextern int dword_100C064; // weakextern int dword_100C070; // weakextern HANDLE hFile; // idbextern int dword_100C078; // weakextern int dword_100C07C; // weakextern HACCEL hAccTable; // idbextern int dword_100C084; // weakextern HGDIOBJ ho; // idbextern HINSTANCE hInstance; // idbextern HCURSOR hCursor; // idbextern HCURSOR dword_100C094; // idbextern HLOCAL hMem; // idbextern int dword_100C0A4; // weakextern struct tagFINDREPLACEW stru_100C0C0; // idbextern WINDOWPLACEMENT wndpl; // idbextern struct tagPSDW stru_100C140; // idbextern struct tagOFNW stru_100C1A0; // idbextern LOGFONTW lf; // idbextern volatile LONG Destination; // idbextern int (__stdcall *off_100C26C)(int, int, int); // weakextern int (__stdcall *off_100C288)(int, int, int); // weakextern LPCWSTR dword_100C2B0; // idbextern LPCWSTR dword_100C2B4; // idbextern LPCWSTR lpString2; // idbextern LPCVOID lpSource; // idbextern LPCWSTR dword_100C2C4; // idbextern LPCWSTR lpText; // idbextern LPCWSTR szApp; // idbextern LPCWSTR dword_100C2DC; // idbextern int dword_100C2E0; // weakextern LPCWSTR dword_100C2EC; // idbextern int dword_100C2F0; // weakextern LPCWSTR lpszHelp; // idbextern int dword_100C2F8; // weakextern int dword_100C2FC; // weakextern int dword_100C300; // weakextern char Args[]; // idbextern int dword_100C308; // weakextern int dword_100C30C; // weakextern int dword_100C310; // weakextern LPCWSTR dword_100C314; // idbextern LPCWSTR dword_100C318; // idbextern LPCWSTR dword_100C31C; // idbextern LPCWSTR dword_100C320; // idbextern LPCWSTR dword_100C324; // idbextern wchar_t *dword_100C328; // idbextern LPCWSTR lpCaption; // idbextern LPCWSTR dword_100C330; // idbextern LPARAM dword_100C334; // idbextern LPARAM dword_100C338; // idbextern LPARAM dword_100C33C; // idbextern LPARAM dword_100C340; // idbextern wchar_t *dword_100C344; // idbextern wchar_t *Format; // idbextern int dword_100C368; // weakextern int dword_100C370; // weakextern int dword_100C374; // weakextern int dword_100C37C; // weakextern int dword_100C3C0; // weakextern __int16 word_100C44C; // weakextern __int16 word_100C450; // weakextern __int16 word_100C454; // weakextern __int16 word_100C458; // weakextern int dword_100C45C; // weakextern int dword_100C460; // weakextern int dword_100C464; // weakextern int dword_100C468; // weakextern int dword_100C46C; // weakextern int dword_100C470; // weakextern int dword_100C474; // weakextern int dword_100C478; // weakextern __int16 word_100C47C; // weakextern int dword_100C480; // weakextern int dword_100C484; // weakextern __int16 word_100C488; // weakextern WCHAR word_100C6A0; // idbextern _UNKNOWN unk_100C6F0; // weakextern const WCHAR word_100C740; // idbextern BYTE Dst; // idbextern wchar_t word_100C7E0; // idbextern wchar_t Dest; // idbextern int off_100C920[2]; // weakextern _UNKNOWN unk_100C9DC; // weakextern const WCHAR word_100C9E0; // idbextern const WCHAR FileName; // idbextern HWND dword_100CCE8; // idbextern int dword_100CCEC; // weakextern int dword_100CCF0; // weakextern int dword_100CCF4; // weakextern int (__thiscall *dword_100CD0C)(_DWORD); // weakextern int dword_100CD10; // weakextern int *off_100CD14; // weakextern _UNKNOWN unk_100CD50; // weakextern _UNKNOWN unk_100CD54; // weakextern _UNKNOWN unk_100CD58; // weakextern const WCHAR word_100CD60; // idbextern const WCHAR word_100CF68; // idbextern const WCHAR String2; // idbextern const WCHAR word_100D378; // idbextern int dword_100D580; // weakextern const WCHAR word_100D588; // idbextern LPARAM dword_100D790; // idbextern WPARAM dword_100D794; // idbextern int dword_100D798; // weakextern int dword_100D79C; // weakextern HMENU dword_100D7A0; // idbextern volatile LONG Target; // idbextern int dword_100D7A8; // weakextern char dword_100D7AC[]; // idbextern int dword_100D7B0; // weakextern int x; // idbextern int dword_100D7B8; // weakextern int dword_100D7BC; // weakextern int dword_100D7C0; // weakextern int dword_100D7C4; // weakextern int y; // idbextern int dword_100D7CC; // idbextern int dword_100D7D0; // weakextern int dword_100D7D4; // weakextern int dword_100D7D8; // weakextern struct _SYSTEMTIME SystemTime; // idbextern const WCHAR word_100D800; // idbextern const WCHAR word_100DA08; // idbextern const WCHAR word_100DC10; // idbextern struct tagPOINT pt; // idbextern int dword_100DE28; // weakextern int dword_100DE2C; // weakextern int dword_100DE30; // weakextern int dword_100DE34; // weakextern HWND hDlg; // idbextern int dword_100DE3C; // weakextern WCHAR pPrinterName; // idbextern int dword_100E040; // weakextern HMENU hMenu; // idbextern _UNKNOWN unk_100E060; // weakextern int dword_100E160; // weak//-------------------------------------------------------------------------// Function declarations#define __thiscall __cdecl // Test compile in C mode// LSTATUS __stdcall RegSetValueExW(HKEY hKey, LPCWSTR lpValueName, DWORD Reserved, DWORD dwType, const BYTE *lpData, DWORD cbData);// LSTATUS __stdcall RegQueryValueExW(HKEY hKey, LPCWSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData);// LSTATUS __stdcall RegCloseKey(HKEY hKey);// LSTATUS __stdcall RegCreateKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult);// LSTATUS __stdcall RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult);// BOOL __stdcall IsTextUnicode(const void *lpv, int iSize, LPINT lpiResult);// BOOL __stdcall CloseServiceHandle(SC_HANDLE hSCObject);// BOOL __stdcall QueryServiceConfigW(SC_HANDLE hService, LPQUERY_SERVICE_CONFIGW lpServiceConfig, DWORD cbBufSize, LPDWORD pcbBytesNeeded);// SC_HANDLE __stdcall OpenServiceW(SC_HANDLE hSCManager, LPCWSTR lpServiceName, DWORD dwDesiredAccess);// SC_HANDLE __stdcall OpenSCManagerW(LPCWSTR lpMachineName, LPCWSTR lpDatabaseName, DWORD dwDesiredAccess);// int __stdcall FindNLSString(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak// HGLOBAL __stdcall GlobalAlloc(UINT uFlags, SIZE_T dwBytes);// BOOL __stdcall GlobalUnlock(HGLOBAL hMem);// LPVOID __stdcall GlobalLock(HGLOBAL hMem);// int __stdcall GetTimeFormatW(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCWSTR lpFormat, LPWSTR lpTimeStr, int cchTime);// int __stdcall GetDateFormatW(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCWSTR lpFormat, LPWSTR lpDateStr, int cchDate);// void __stdcall GetLocalTime(LPSYSTEMTIME lpSystemTime);// LANGID __stdcall GetUserDefaultUILanguage();// BOOL __stdcall HeapFree(HANDLE hHeap, DWORD dwFlags, LPVOID lpMem);// LPVOID __stdcall HeapAlloc(HANDLE hHeap, DWORD dwFlags, SIZE_T dwBytes);// HANDLE __stdcall GetProcessHeap();// BOOL __stdcall GetFileInformationByHandle(HANDLE hFile, LPBY_HANDLE_FILE_INFORMATION lpFileInformation);// LONG __stdcall InterlockedExchange(volatile LONG *Target, LONG Value);// void __stdcall FreeLibraryAndExitThread(HMODULE hLibModule, DWORD dwExitCode);// DWORD __stdcall GetFileAttributesW(LPCWSTR lpFileName);// BOOL __stdcall Wow64RevertWow64FsRedirection(PVOID OlValue);// BOOL __stdcall Wow64DisableWow64FsRedirection(PVOID *OldValue);// BOOL __stdcall IsWow64Process(HANDLE hProcess, PBOOL Wow64Process);// HANDLE __stdcall GetCurrentProcess();// HANDLE __stdcall CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId);// HMODULE __stdcall LoadLibraryW(LPCWSTR lpLibFileName);// DWORD __stdcall GetModuleFileNameW(HMODULE hModule, LPWCH lpFilename, DWORD nSize);// HANDLE __stdcall CreateFileMappingW(HANDLE hFile, LPSECURITY_ATTRIBUTES lpFileMappingAttributes, DWORD flProtect, DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow, LPCWSTR lpName);// DWORD __stdcall FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, va_list *Arguments);// LPVOID __stdcall MapViewOfFile(HANDLE hFileMappingObject, DWORD dwDesiredAccess, DWORD dwFileOffsetHigh, DWORD dwFileOffsetLow, SIZE_T dwNumberOfBytesToMap);// BOOL __stdcall UnmapViewOfFile(LPCVOID lpBaseAddress);// HLOCAL __stdcall LocalReAlloc(HLOCAL hMem, SIZE_T uBytes, UINT uFlags);// UINT __stdcall GetACP();// BOOL __stdcall DeleteFileW(LPCWSTR lpFileName);// BOOL __stdcall SetEndOfFile(HANDLE hFile);// int __stdcall WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar);// void __stdcall SetLastError(DWORD dwErrCode);// BOOL __stdcall WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped);// DWORD __stdcall GetLastError();// SIZE_T __stdcall LocalSize(HLOCAL hMem);// DWORD __stdcall GetFullPathNameW(LPCWSTR lpFileName, DWORD nBufferLength, LPWSTR lpBuffer, LPWSTR *lpFilePart);// int __stdcall MulDiv(int nNumber, int nNumerator, int nDenominator);// LPWSTR __stdcall GetCommandLineW();// DWORD __stdcall GetCurrentProcessId();// int __stdcall FoldStringW(DWORD dwMapFlags, LPCWSTR lpSrcStr, int cchSrc, LPWSTR lpDestStr, int cchDest);// int __stdcall lstrcmpW(LPCWSTR lpString1, LPCWSTR lpString2);// HANDLE __stdcall FindFirstFileW(LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFindFileData);// BOOL __stdcall FindClose(HANDLE hFindFile);// BOOL __stdcall HeapSetInformation(HANDLE HeapHandle, HEAP_INFORMATION_CLASS HeapInformationClass, PVOID HeapInformation, SIZE_T HeapInformationLength);// BOOL __stdcall TerminateProcess(HANDLE hProcess, UINT uExitCode);// void __stdcall GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime);// DWORD __stdcall GetCurrentThreadId();// DWORD __stdcall GetTickCount();// BOOL __stdcall QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);// HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName);// LPTOP_LEVEL_EXCEPTION_FILTER __stdcall SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter);// void __stdcall GetStartupInfoA(LPSTARTUPINFOA lpStartupInfo);// LONG __stdcall InterlockedCompareExchange(volatile LONG *Destination, LONG Exchange, LONG Comperand);// void __stdcall Sleep(DWORD dwMilliseconds);// LPVOID __stdcall LocalLock(HLOCAL hMem);// BOOL __stdcall LocalUnlock(HLOCAL hMem);// int __stdcall lstrlenW(LPCWSTR lpString);// int __stdcall GetLocaleInfoW(LCID Locale, LCTYPE LCType, LPWSTR lpLCData, int cchData);// HGLOBAL __stdcall GlobalFree(HGLOBAL hMem);// int __stdcall lstrcmpiW(LPCWSTR lpString1, LPCWSTR lpString2);// UINT __stdcall SetErrorMode(UINT uMode);// HANDLE __stdcall CreateFileW(LPCWSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);// BOOL __stdcall ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped);// BOOL __stdcall CloseHandle(HANDLE hObject);// HLOCAL __stdcall LocalAlloc(UINT uFlags, SIZE_T uBytes);// LONG __stdcall InterlockedDecrement(volatile LONG *lpAddend);// HLOCAL __stdcall LocalFree(HLOCAL hMem);// LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend);// BOOL __stdcall GetVersionExW(LPOSVERSIONINFOW lpVersionInformation);// LONG __stdcall UnhandledExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo);// HFONT __stdcall CreateFontIndirectW(const LOGFONTW *lplf);// int __stdcall SetMapMode(HDC hdc, int iMode);// BOOL __stdcall SetViewportExtEx(HDC hdc, int x, int y, LPSIZE lpsz);// BOOL __stdcall SetWindowExtEx(HDC hdc, int x, int y, LPSIZE lpsz);// BOOL __stdcall LPtoDP(HDC hdc, LPPOINT lppt, int c);// int __stdcall SetBkMode(HDC hdc, int mode);// BOOL __stdcall GetTextMetricsW(HDC hdc, LPTEXTMETRICW lptm);// int __stdcall SetAbortProc(HDC hdc, ABORTPROC proc);// int __stdcall StartDocW(HDC hdc, const DOCINFOW *lpdi);// int __stdcall StartPage(HDC hdc);// int __stdcall EndPage(HDC hdc);// int __stdcall AbortDoc(HDC hdc);// int __stdcall EndDoc(HDC hdc);// BOOL __stdcall DeleteDC(HDC hdc);// BOOL __stdcall TextOutW(HDC hdc, int x, int y, LPCWSTR lpString, int c);// BOOL __stdcall GetTextExtentPoint32W(HDC hdc, LPCWSTR lpString, int c, LPSIZE psizl);// HDC __stdcall CreateDCW(LPCWSTR pwszDriver, LPCWSTR pwszDevice, LPCWSTR pszPort, const DEVMODEW *pdm);// HGDIOBJ __stdcall SelectObject(HDC hdc, HGDIOBJ h);// int __stdcall GetTextFaceW(HDC hdc, int c, LPWSTR lpName);// int __stdcall EnumFontsW(HDC hdc, LPCWSTR lpLogfont, FONTENUMPROCW lpProc, LPARAM lParam);// int __stdcall GetDeviceCaps(HDC hdc, int index);// BOOL __stdcall DeleteObject(HGDIOBJ ho);// HWND __stdcall SetActiveWindow(HWND hWnd);// HKL __stdcall GetKeyboardLayout(DWORD idThread);// void __stdcall PostQuitMessage(int nExitCode);// LRESULT __stdcall DefWindowProcW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);// HWND __stdcall GetForegroundWindow();// BOOL __stdcall IsIconic(HWND hWnd);// BOOL __stdcall DestroyWindow(HWND hWnd);// BOOL __stdcall MessageBeep(UINT uType);// BOOL __stdcall GetWindowPlacement(HWND hWnd, WINDOWPLACEMENT *lpwndpl);// LPWSTR __stdcall CharUpperW(LPWSTR lpsz);// ATOM __stdcall RegisterClassExW(const WNDCLASSEXW *);// HANDLE __stdcall LoadImageW(HINSTANCE hInst, LPCWSTR name, UINT type, int cx, int cy, UINT fuLoad);// HCURSOR __stdcall LoadCursorW(HINSTANCE hInstance, LPCWSTR lpCursorName);// LONG __stdcall SetWindowLongW(HWND hWnd, int nIndex, LONG dwNewLong);// HACCEL __stdcall LoadAcceleratorsW(HINSTANCE hInstance, LPCWSTR lpTableName);// HMENU __stdcall GetSystemMenu(HWND hWnd, BOOL bRevert);// BOOL __stdcall SetWindowPlacement(HWND hWnd, const WINDOWPLACEMENT *lpwndpl);// HWND __stdcall CreateWindowExW(DWORD dwExStyle, LPCWSTR lpClassName, LPCWSTR lpWindowName, DWORD dwStyle, int X, int Y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam);// UINT __stdcall RegisterWindowMessageW(LPCWSTR lpString);// BOOL __stdcall UpdateWindow(HWND hWnd);// BOOL __stdcall InvalidateRect(HWND hWnd, const RECT *lpRect, BOOL bErase);// int __stdcall SetScrollPos(HWND hWnd, int nBar, int nPos, BOOL bRedraw);// int __stdcall GetWindowTextLengthW(HWND hWnd);// LONG __stdcall GetWindowLongW(HWND hWnd, int nIndex);// BOOL __stdcall PeekMessageW(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg);// BOOL __stdcall EnableWindow(HWND hWnd, BOOL bEnable);// INT_PTR __stdcall DialogBoxParamW(HINSTANCE hInstance, LPCWSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam);// HWND __stdcall CreateDialogParamW(HINSTANCE hInstance, LPCWSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam);// int __stdcall GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount);// BOOL __stdcall SetWindowPos(HWND hWnd, HWND hWndInsertAfter, int X, int Y, int cx, int cy, UINT uFlags);// HCURSOR __stdcall SetCursor(HCURSOR hCursor);// BOOL __stdcall SetForegroundWindow(HWND hWnd);// HWND __stdcall FindWindowW(LPCWSTR lpClassName, LPCWSTR lpWindowName);// int __stdcall GetSystemMetrics(int nIndex);// BOOL __stdcall MoveWindow(HWND hWnd, int X, int Y, int nWidth, int nHeight, BOOL bRepaint);// LRESULT __stdcall SendMessageW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);// LPWSTR __stdcall CharNextW(LPCWSTR lpsz);// DWORD __stdcall CheckMenuItem(HMENU hMenu, UINT uIDCheckItem, UINT uCheck);// BOOL __stdcall CloseClipboard();// BOOL __stdcall IsClipboardFormatAvailable(UINT format);// BOOL __stdcall OpenClipboard(HWND hWndNewOwner);// UINT __stdcall GetMenuState(HMENU hMenu, UINT uId, UINT uFlags);// BOOL __stdcall EnableMenuItem(HMENU hMenu, UINT uIDEnableItem, UINT uEnable);// HMENU __stdcall GetSubMenu(HMENU hMenu, int nPos);// BOOL __stdcall GetClientRect(HWND hWnd, LPRECT lpRect);// BOOL __stdcall UnhookWinEvent(HWINEVENTHOOK hWinEventHook);// HMENU __stdcall GetMenu(HWND hWnd);// int __stdcall MessageBoxW(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType);// BOOL __stdcall WinHelpW(HWND hWndMain, LPCWSTR lpszHelp, UINT uCommand, ULONG_PTR dwData);// int __stdcall GetDlgCtrlID(HWND hWnd);// HWND __stdcall ChildWindowFromPoint(HWND hWndParent, POINT Point);// HDC __stdcall GetDC(HWND hWnd);// BOOL __stdcall ShowWindow(HWND hWnd, int nCmdShow);// int __stdcall DrawTextExW(HDC hdc, LPWSTR lpchText, int cchText, LPRECT lprc, UINT format, LPDRAWTEXTPARAMS lpdtp);// int __stdcall ReleaseDC(HWND hWnd, HDC hDC);// HICON __stdcall LoadIconW(HINSTANCE hInstance, LPCWSTR lpIconName);// HWINEVENTHOOK __stdcall SetWinEventHook(DWORD eventMin, DWORD eventMax, HMODULE hmodWinEventProc, WINEVENTPROC pfnWinEventProc, DWORD idProcess, DWORD idThread, DWORD dwFlags);// BOOL __stdcall GetMessageW(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax);// BOOL __stdcall PostMessageW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);// BOOL __stdcall IsDialogMessageW(HWND hDlg, LPMSG lpMsg);// int __stdcall TranslateAcceleratorW(HWND hWnd, HACCEL hAccTable, LPMSG lpMsg);// BOOL __stdcall EndDialog(HWND hDlg, INT_PTR nResult);// UINT __stdcall GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int cchMax);// BOOL __stdcall SetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPCWSTR lpString);// HWND __stdcall SetFocus(HWND hWnd);// BOOL __stdcall SetWindowTextW(HWND hWnd, LPCWSTR lpString);// HWND __stdcall GetParent(HWND hWnd);// int __stdcall LoadStringW(HINSTANCE hInstance, UINT uID, LPWSTR lpBuffer, int cchBufferMax);// LRESULT __stdcall SendDlgItemMessageW(HWND hDlg, int nIDDlgItem, UINT Msg, WPARAM wParam, LPARAM lParam);// BOOL __stdcall GetCursorPos(LPPOINT lpPoint);// BOOL __stdcall ScreenToClient(HWND hWnd, LPPOINT lpPoint);// BOOL __stdcall TranslateMessage(const MSG *lpMsg);// HWND __stdcall GetAncestor(HWND hwnd, UINT gaFlags);// LRESULT __stdcall DispatchMessageW(const MSG *lpMsg);// unsigned int __cdecl controlfp(unsigned int NewValue, unsigned int Mask);// int __cdecl vsnwprintf(wchar_t *Dest, size_t Count, const wchar_t *Format, va_list Args);// __int32 __cdecl wtol(const wchar_t *Str);// int __cdecl iswctype(wint_t C, wctype_t Type);// int __cdecl wcsncmp(const wchar_t *Str1, const wchar_t *Str2, size_t MaxCount);// wchar_t *__cdecl wcsrchr(const wchar_t *Str, wchar_t Ch);// void __cdecl exit(int Code);// int __cdecl ismbblead(_DWORD); weak// int cexit(void); weak// void __cdecl exit(int Code);// void __cdecl terminate(); weak// HWND __stdcall ReplaceTextW(LPFINDREPLACEW);// BOOL __stdcall PageSetupDlgW(LPPAGESETUPDLGW);// HRESULT __stdcall PrintDlgExW(LPPRINTDLGEXW);// HWND __stdcall FindTextW(LPFINDREPLACEW);// BOOL __stdcall ChooseFontW(LPCHOOSEFONTW);// BOOL __stdcall GetSaveFileNameW(LPOPENFILENAMEW);// DWORD __stdcall CommDlgExtendedError();// BOOL __stdcall GetOpenFileNameW(LPOPENFILENAMEW);// __int16 __stdcall GetFileTitleW(LPCWSTR, LPWSTR Buf, WORD cchSize);// void __stdcall DragAcceptFiles(HWND hWnd, BOOL fAccept);// void __stdcall SHAddToRecentDocs(UINT uFlags, LPCVOID pv);// HRESULT __stdcall SHGetFolderPathW(HWND hwnd, int csidl, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath);// int __stdcall SHCreateItemFromParsingName(_DWORD, _DWORD, _DWORD, _DWORD); weak// BOOL __stdcall ShellExecuteExW(LPSHELLEXECUTEINFOW lpExecInfo);// UINT __stdcall DragQueryFileW(HDROP hDrop, UINT iFile, LPWSTR lpszFile, UINT cch);// void __stdcall DragFinish(HDROP hDrop);// HRESULT __stdcall CoInitializeEx(LPVOID pvReserved, DWORD dwCoInit);// void __stdcall CoUninitialize();// LPVOID __stdcall CoTaskMemAlloc(SIZE_T cb);// HRESULT __stdcall CoCreateInstance(const IID *const rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, const IID *const riid, LPVOID *ppv);// void __stdcall CoTaskMemFree(LPVOID pv);// HRESULT __stdcall CoInitialize(LPVOID pvReserved);// BOOL __stdcall PathIsFileSpecW(LPCWSTR pszPath);// int __stdcall SHStrDupW(_DWORD, _DWORD); weak// HPROPSHEETPAGE __stdcall CreatePropertySheetPageW(LPCPROPSHEETPAGEW constPropSheetPagePointer);// INT_PTR __stdcall PropertySheetW(LPCPROPSHEETHEADERW);// HWND __stdcall CreateStatusWindowW(LONG style, LPCWSTR lpszText, HWND hwndParent, UINT wID);// int __stdcall COMCTL32_345(_DWORD, _DWORD, _DWORD, _DWORD); weak// void __stdcall SysFreeString(BSTR bstrString);// BSTR __stdcall SysAllocString(const OLECHAR *psz);// int __stdcall RtlInitUnicodeString(_DWORD, _DWORD); weak// int __stdcall NtQueryLicenseValue(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weakWPARAM __cdecl sub_1001405(HINSTANCE hInstance);// signed int __userpurge sub_10014DE<eax>(void *a1<ecx>, int a2<ebx>, HWND hWnd, signed int Msg, WPARAM hDrop, unsigned int lParam);void __thiscall sub_1001564(void *this);// void *__cdecl memset(void *Dst, int Val, size_t Size);signed int sub_10015C3(wchar_t *Dest, unsigned int a2, const wchar_t *Format, ...);// void __userpurge sub_1001620(int a1<ebp>, void (__stdcall *a2)(_DWORD, _DWORD, _DWORD, _DWORD)<esi>, int a3);signed int __stdcall sub_1001664(int a1);int __stdcall loc_100169F(int); // weakLRESULT __stdcall sub_100170A(unsigned int a1);int __stdcall loc_1001799(int); // weakLRESULT __stdcall pfnWinEventProc(int a1, int a2, int a3, int a4, int a5, int a6, int a7);// signed int __userpurge sub_1001809<eax>(void *a1<ecx>, int a2<ebx>, HWND a3, unsigned __int16 a4, int a5);__int32 __cdecl sub_1001963();HGLOBAL __cdecl sub_1001A1C();// void __userpurge sub_1001A4D(const WCHAR *a1<ebx>, int a2<ebp>, int (__stdcall *a3)(_DWORD, _DWORD, _DWORD, _DWORD)<esi>, int a4);// int __usercall sub_1001A72<eax>(int a1<ebp>);DWORD __stdcall sub_1001AA5(HWND hWndNewOwner);int __stdcall loc_1001C23(HWND hWndNewOwner); // weakint __stdcall loc_1001C66(HWND hWndNewOwner); // weakint __stdcall sub_1001E66(HINSTANCE hInstance, int, int nCmdShow); // idb// _DWORD __usercall sub_10023D0<eax>(_DWORD ebp0<ebp>); weakint __stdcall sub_1002409(int nWidth, int); // idb// void *__cdecl memcpy(void *Dst, const void *Src, size_t Size);int __stdcall sub_1002456(LPCWSTR lpString1); // idbsigned int __stdcall sub_1002558(int a1, unsigned int a2, int a3);int __stdcall sub_10025CB(int a1);signed int __stdcall sub_10025EF(WCHAR **a1);int __stdcall sub_1002631(WCHAR **a1, int nCmdShow);int __stdcall loc_100266D(int, int nCmdShow); // weak// signed int __userpurge sub_1002689<eax>(unsigned __int16 *a1<eax>, WCHAR **a2);signed int __stdcall sub_10026D5(wchar_t *Dest, unsigned int a2);int __thiscall sub_1002733(int this);int loc_10027A2(); // weak// int __usercall sub_10027F0<eax>(unsigned int a1<eax>, int a2<ecx>);// int __userpurge sub_1002820<eax>(int a1<ebp>, int a2, int a3);int __stdcall loc_1002B3F(int, int); // weakchar *__cdecl sub_1002B64(int a1, int a2);LPCWSTR __stdcall sub_1002C0D(LPWSTR lpBuffer, LPCWSTR lpFileName, DWORD nBufferLength);LONG __thiscall sub_1002F8B(void *this);// int __cdecl initterm(_DWORD, _DWORD); weakint __cdecl sub_100304B();DWORD __cdecl sub_1003053();LSTATUS __cdecl sub_10030E2();int __stdcall sub_100355B(HKEY hKey, LPCWSTR lpValueName, int); // idb__int32 __stdcall sub_10035B0(HKEY Type, LPCWSTR lpValueName, const void *Src, void *Dst, DWORD cbData);const WCHAR *__cdecl sub_100360C(LPCWSTR lpsz);int __cdecl sub_1003660(unsigned int a1, unsigned int a2);// int __usercall start<eax>(int a1<ebp>);int dword_1003784(); // weakint dword_100378C(); // weakint dword_1003790(); // weakint dword_100379C(); // weakint dword_10037A0(); // weak// ATOM __usercall sub_10037EF<ax>(HINSTANCE a1<esi>);HLOCAL __stdcall sub_1003881(HINSTANCE hInstance);int __stdcall sub_100392D(HINSTANCE hInstance); // idbunsigned int __cdecl sub_1003A48();signed int __cdecl sub_1003A60(signed int a1);// int __userpurge sub_1003A98<eax>(int a1<ebp>, int a2);char *__cdecl sub_1003B0C(int a1, int a2);int __stdcall sub_1003BCD(int a1, int a2, int a3, int a4);int __stdcall sub_1003C46(int a1);signed int __stdcall sub_1003C61(int a1, int a2);// int __userpurge sub_1003C89<eax>(int a1<ebx>, int a2);int __stdcall sub_1003D1B(int a1);int __stdcall sub_1003D6D(int, LPCWSTR pszPath, int, int); // idbint __stdcall sub_1003E75(int, LPCWSTR pszPath); // idbLONG __stdcall sub_1003EA6(int a1);// int __userpurge sub_1003F21<eax>(int a1<ebx>, int a2, int a3);// double __userpurge sub_1004038<st0>(int a1<eax>, int a2<ebp>, int a3<esi>, double result<st0>, int a5, int a6, int a7);signed int __stdcall sub_100405A(int a1, int a2);signed int __stdcall sub_1004073(int a1, int a2);signed int __stdcall sub_10040C4(int a1, int a2, int a3);LONG __stdcall sub_10040FB(int a1);int __stdcall sub_1004116(int a1);signed int __stdcall sub_100414E(int a1);int __cdecl sub_1004194();int __stdcall sub_1004240(HWND hDlg, int, int, int); // idbint __stdcall loc_1004280(HWND hDlg, int, int, int); // weakDWORD __cdecl sub_100432B();int __stdcall sub_10043F5(int a1, int a2);HRESULT __thiscall sub_100449D(void *this);int __stdcall sub_10045A7(int a1);// int __stdcall WinSqmAddToStream(_DWORD, _DWORD, _DWORD, _DWORD); weakint __stdcall sub_1004628(LPCWSTR lpString); // idbLSTATUS __stdcall sub_100478B(HKEY hKey, LPCWSTR lpValueName, LPCWSTR lpData);signed int __stdcall sub_10047BA(int a1, int a2, int a3, int a4);LSTATUS __stdcall sub_100498E(HKEY hKey, LPCWSTR lpValueName, BYTE Data);// void __usercall sub_10056E3(struct _SECURITY_ATTRIBUTES *a1<ebx>, int a2<ebp>, int a3<esi>);void __stdcall sub_10058A7(int a1, int a2);int __stdcall loc_10058B2(int, int); // weakint __stdcall loc_10058BD(int, int); // weakint __stdcall loc_10058D7(int, int); // weakint __stdcall loc_10058EB(int, int); // weakint __stdcall loc_100590F(int, int); // weakint __stdcall loc_1005951(int, int); // weakint __stdcall loc_1005976(int, int); // weakint __stdcall loc_1005A43(int, int); // weakint __stdcall loc_1005AC7(int, int); // weakint __stdcall loc_1005AEB(int, int); // weakint __stdcall loc_1005B5A(int, int); // weakint __stdcall loc_1005B65(int, int); // weakint __stdcall loc_1005B9C(int, int); // weakint __stdcall loc_1005BE2(int, int); // weakint __stdcall loc_1005C0C(int, int); // weak// void __usercall sub_1005D2A(int a1<ebp>, HWND a2<edi>);// int __usercall sub_1006C68<eax>(int a1<ebp>);// void __usercall sub_1006C7C(int a1<ebp>);int loc_1006C97(); // weaksigned int __cdecl sub_1006CB4();LONG __stdcall sub_1006DC0(int a1);LONG __stdcall sub_1006DDA(int a1);int __stdcall sub_1006DF4(int a1, int a2, int a3, int a4);signed int __stdcall sub_1006E12(int a1, int a2, int a3);int __stdcall sub_1006E32(int, LPCWSTR lpFileName); // idbint __stdcall sub_1006F5C(int a1, const WCHAR *lpFileName);LRESULT __stdcall sub_1006FB9(int a1);const WCHAR *__stdcall sub_1007008(LPCWSTR lpsz);int __stdcall sub_1007051(HWND hWnd, LPCWSTR lpCaption, LPCWSTR lpText, LPCWSTR lpString, UINT uType); // idb__int32 __stdcall sub_10070D3(int a1);int __stdcall sub_10071C2(const void *lpv, int iSize);int __stdcall sub_100722E(HWND hWndParent, int, HWND hWnd, int); // idbsigned int __stdcall sub_100739B(DWORD hDlg, int a2, HWND hWnd, int a4);signed int __stdcall DialogFunc(HWND hWnd, int a2, unsigned __int16 a3, int a4);signed int __stdcall sub_10077F3(int a1);signed int __stdcall sub_1007823(int a1, int *a2);signed int __stdcall sub_10078D3(int a1, int a2, LPWSTR *a3);// signed int __usercall sub_1007985<eax>(int a1<ebp>);void __stdcall sub_10079E3(HDROP hDrop, HWND hWnd);int __stdcall Proc(int a1, int a2, int a3, int a4);// int __userpurge sub_1007A58<eax>(int result<eax>, int a2, int a3, int a4);int __stdcall sub_1007A90(HANDLE hFile, UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar); // idbLRESULT __cdecl sub_1007B40();LRESULT __cdecl sub_1007BA2();int __stdcall sub_1007BF6(LPCWSTR lpString); // idb// signed int __userpurge sub_1007C80<eax>(int a1<eax>, int a2<edx>, int a3<ecx>, int a4, int a5);int __stdcall sub_1007CD7(HWND hWnd, LPCWSTR lpString1, LPCWSTR lpBuffer); // idbsigned int __stdcall sub_1007F99(int a1, unsigned int a2, int a3);signed int __stdcall sub_100800F(int a1);int __stdcall sub_10080E4(int lpString, unsigned int a2);int __stdcall sub_1008143(int a1, int a2, int a3, int a4, int a5);int __stdcall sub_100818F(int a1, int a2, int a3, int a4, int a5);signed int __stdcall sub_10081DB(int a1);int __stdcall sub_1008383(DWORD hWnd); // idbint __stdcall sub_10085E5(int a1, int a2, int a3, int a4);size_t __cdecl sub_1008639();bool __stdcall proc(int a1, int a2);int __stdcall sub_100882E(HDC hdc); // idbBOOL __cdecl sub_100888F();signed int __cdecl sub_10088B6();signed int __cdecl sub_1008987();signed int __stdcall sub_1008A63(HWND hWnd, int a2, int a3, int a4);signed int __stdcall sub_1008AEF(int a1, int a2, int a3, int a4);int *__stdcall sub_1008B3E(int a1);int __stdcall sub_1008EF2(HDC hdc, int y); // idbsigned int __stdcall sub_100900D(HDC a1);bool __stdcall sub_10096AE(LCID Locale);bool __stdcall sub_10096F8(int a1);bool __stdcall sub_100973A(bool a1);LRESULT __stdcall sub_100978A(int a1);signed int __stdcall sub_10098C7(int a1, int a2);BOOL __stdcall sub_100991D(const void *lpv, int iSize);// signed int __usercall sub_1009952<eax>(int a1<eax>, int a2<edx>, int a3<edi>);int __stdcall sub_1009989(HWND hwnd, int, __int16, int); // idbvoid __stdcall StartAddress(int a1);signed int __stdcall sub_1009CDF(int a1, int a2, int a3);signed int __stdcall sub_1009D19(int a1, int a2, int a3);int __cdecl sub_1009D73(int a1, int a2, int a3, int a4);int __stdcall sub_1009D9D(int a1);// int __cdecl XcptFilter(_DWORD, _DWORD); weakbool __cdecl sub_1009DF0(int a1);int __cdecl sub_1009E2A(int a1, unsigned int a2);// int __usercall sub_1009E73<eax>(int a1<ebp>);// int __cdecl amsg_exit(_DWORD); weak// BOOL __usercall sub_1009F07<eax>(char _CF<cf>, char _ZF<zf>, char _SF<sf>, char _OF<of>, int a5<eax>, int a6<edx>, int a7<ecx>, int a8<ebx>, int a9<edi>, int a10<esi>, char a11);// int __cdecl except_handler4_common(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); weak// BOOL __stdcall ClosePrinter(HANDLE hPrinter);// BOOL __stdcall GetPrinterDriverW(HANDLE hPrinter, LPWSTR pEnvironment, DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded);// BOOL __stdcall OpenPrinterW(LPWSTR pPrinterName, LPHANDLE phPrinter, LPPRINTER_DEFAULTSW pDefault);// int __stdcall WinSqmIncrementDWORD(_DWORD, _DWORD, _DWORD); weak// BOOL __stdcall VerQueryValueW(LPCVOID pBlock, LPCWSTR lpSubBlock, LPVOID *lplpBuffer, PUINT puLen);// BOOL __stdcall GetFileVersionInfoExW(DWORD dwFlags, LPCWSTR lpwstrFilename, DWORD dwHandle, DWORD dwLen, LPVOID lpData);// DWORD __stdcall GetFileVersionInfoSizeExW(DWORD dwFlags, LPCWSTR lpwstrFilename, LPDWORD lpdwHandle);//----- (01001405) --------------------------------------------------------WPARAM __cdecl sub_1001405(HINSTANCE hInstance){  const WCHAR *v1; // edi@1  int v2; // eax@2  int v3; // ST18_4@2  HWINEVENTHOOK v4; // ebx@3  DWORD v5; // eax@3  struct tagMSG Msg; // [sp+8h] [bp-1Ch]@1  Msg.hwnd = 0;  memset(&Msg.message, 0, 0x18u);  v1 = GetCommandLineW();  HeapSetInformation(0, HeapEnableTerminationOnCorruption, 0, 0);  if ( CoInitializeEx(0, 2u) >= 0 )  {    v2 = (int)sub_100360C(v1);    if ( sub_1001E66(hInstance, v2, v3) )    {      v5 = GetCurrentProcessId();      v4 = SetWinEventHook(0x800Bu, 0x800Bu, 0, (WINEVENTPROC)pfnWinEventProc, v5, 0, 0);      while ( GetMessageW(&Msg, 0, 0, 0) )      {        if ( Msg.message == 80 )          PostMessageW(hWnd, 0x8001u, 0, 0);        if ( !dword_100CCE8 || !IsDialogMessageW(dword_100CCE8, &Msg) )        {          if ( !TranslateAcceleratorW(hWnd, hAccTable, &Msg) )          {            TranslateMessage(&Msg);            DispatchMessageW(&Msg);          }        }      }      sub_1001A1C();      if ( v4 )        UnhookWinEvent(v4);    }    else    {      Msg.wParam = 0;    }    CoUninitialize();  }  return Msg.wParam;}// 1001405: could not find valid save-restore pair for ebx//----- (010014DE) --------------------------------------------------------signed int __userpurge sub_10014DE<eax>(void *a1<ecx>, int a2<ebx>, HWND hWnd, signed int Msg, WPARAM hDrop, unsigned int lParam){  WPARAM v7; // eax@25  LPARAM v8; // ecx@25  WPARAM v9; // eax@29  LRESULT (__stdcall *v10)(HWND, UINT, WPARAM, LPARAM); // edi@56  unsigned int v11; // eax@66  int v12; // ecx@66  int v13; // edx@66  HCURSOR (__stdcall *v14)(HCURSOR); // esi@67  signed int v15; // esi@79  unsigned int v16; // eax@87  UINT v17; // [sp-Ch] [bp-14h]@11  UINT v18; // [sp-Ch] [bp-14h]@33  const WCHAR *v19; // [sp-Ch] [bp-14h]@59  WPARAM v20; // [sp-8h] [bp-10h]@11  WPARAM v21; // [sp-8h] [bp-10h]@33  const WCHAR *v22; // [sp-8h] [bp-10h]@59  LPARAM v23; // [sp-4h] [bp-Ch]@10  LPARAM v24; // [sp-4h] [bp-Ch]@33  HWND v25; // [sp-4h] [bp-Ch]@36  UINT v26; // [sp-4h] [bp-Ch]@59  if ( (unsigned int)Msg > 0x1C )  {    if ( Msg != 273 )    {      if ( Msg == 274 )      {        if ( !dword_100CCEC || (v16 = hDrop & 0xFFF0, v16 != 61472) && v16 != 61504 && v16 != 61520 )          DefWindowProcW(hWnd, 0x112u, hDrop, lParam);        return 0;      }      if ( Msg == 278 )      {        sub_1001AA5(hWnd);        return 0;      }      if ( Msg == 279 )      {        if ( dword_100CCEC )        {          if ( lParam >> 16 )            EnableMenuItem(hMenu, 0xF020u, 3u);        }        return 0;      }      if ( Msg == 563 )      {        sub_10079E3((HDROP)hDrop, hWnd);        return 0;      }      if ( Msg != 793 )      {        if ( Msg != 32769 )        {LABEL_9:          if ( Msg != dword_100C07C )          {            v23 = lParam;LABEL_11:            v20 = hDrop;            v17 = Msg;            return DefWindowProcW(hWnd, v17, v20, v23);          }          v12 = *(_DWORD *)(lParam + 12);          v11 = ~(unsigned __int8)*(_DWORD *)(lParam + 12) & 1;          v13 = (*(_DWORD *)(lParam + 12) >> 2) & 1;          dword_100D79C = ~(unsigned __int8)*(_DWORD *)(lParam + 12) & 1;          dword_100D798 = v13;          if ( v12 & 8 )          {            v14 = SetCursor;            SetCursor(hCursor);          }          else          {            if ( !(v12 & 0x10) )            {              if ( v12 & 0x20 )              {                if ( v11 )                  dword_100D79C = 0;                SetCursor(hCursor);                SendMessageW(dword_100C028, 177u, 0, 0);                if ( !sub_1008639() )                {                  do                    sub_10070D3(0);                  while ( sub_10081DB((int)&word_100C9E0) );                }                SetCursor(dword_100C094);                SendMessageW(dword_100C028, 0xB1u, 0, 0);                SendMessageW(dword_100C028, 0xB7u, 0, 0);                sub_100170A(1u);              }              else              {                if ( v12 & 0x40 )                  dword_100CCE8 = 0;              }              return 0;            }            v14 = SetCursor;            SetCursor(hCursor);            sub_10070D3(1);          }          sub_10081DB((int)&word_100C9E0);          v14(dword_100C094);          return 0;        }        v15 = 0;        if ( ((unsigned int)GetKeyboardLayout(0) & 0x3FF) == 17 )          v15 = 1;        v24 = v15;        v21 = 1;        v18 = 216;LABEL_34:        SendMessageW(dword_100C028, v18, v21, v24);        return 0;      }      if ( ((lParam >> 16) & 0xFFF) == 5 )      {        sub_1001809(a1, a2, hWnd, 0x15u, 0);        return 0;      }    }    if ( (HWND)lParam != dword_100C028      || (v9 = hDrop >> 16, (unsigned __int16)(hDrop >> 16) != 1280) && (a1 = (void *)1281, (_WORD)v9 != 1281) )    {      if ( !sub_1001809(a1, a2, hWnd, hDrop, lParam) )      {        v23 = lParam;        goto LABEL_11;      }      return 0;    }    if ( dword_100C030 == 1 )    {      dword_100C030 = 2;      return 0;    }    v26 = 4112;    v22 = szApp;    v19 = lpText;LABEL_60:    MessageBoxW(::hWnd, v19, v22, v26);    return 0;  }  if ( Msg == 28 )  {    if ( hDrop )    {      v7 = dword_100C044;      v8 = ::lParam;      if ( !dword_100C044 && !::lParam )        return 0;      v10 = SendMessageW;    }    else    {      v10 = SendMessageW;      SendMessageW(dword_100C028, 176u, (WPARAM)&dword_100C044, (LPARAM)&::lParam);      v7 = dword_100C044;      v8 = ::lParam;      if ( dword_100C044 == ::lParam )      {        dword_100C044 = 0;        ::lParam = 0;        return 0;      }    }    v10(dword_100C028, 177u, v7, v8);    v10(dword_100C028, 183u, 0, 0);    return 0;  }  if ( Msg == 2 )  {    PostQuitMessage(0);    return 0;  }  if ( Msg == 5 )  {    if ( !hDrop )      goto LABEL_96;    if ( hDrop == 1 )    {      v23 = lParam;      v20 = 1;      v17 = 5;      return DefWindowProcW(hWnd, v17, v20, v23);    }    if ( hDrop == 2 )LABEL_96:      sub_1002409((signed __int16)lParam, SHIWORD(lParam));    return 0;  }  if ( Msg == 6 )  {    if ( (_WORD)hDrop != 1 && (_WORD)hDrop != 2 || IsIconic(::hWnd) || GetForegroundWindow() != ::hWnd )      return 0;    v25 = GetForegroundWindow();    goto LABEL_37;  }  if ( Msg == 7 )  {    if ( IsIconic(::hWnd) )      return 0;    v25 = dword_100C028;LABEL_37:    SetFocus(v25);    return 0;  }  if ( Msg == 8 )  {    v24 = lParam;    v21 = hDrop;    v18 = 8;    goto LABEL_34;  }  if ( Msg == 16 )  {    sub_1001963();    if ( sub_1001664(0) )    {      DestroyWindow(dword_100C024);      DestroyWindow(::hWnd);      DeleteObject(ho);    }    return 0;  }  if ( Msg != 17 )    goto LABEL_9;  if ( dword_100C038 )  {    MessageBeep(0);    MessageBeep(0);    v26 = 4096;    v22 = szApp;    v19 = dword_100C314;    goto LABEL_60;  }  return sub_1001664(1);}// 100C030: using guessed type int dword_100C030;// 100C038: using guessed type int dword_100C038;// 100C07C: using guessed type int dword_100C07C;// 100CCEC: using guessed type int dword_100CCEC;// 100D798: using guessed type int dword_100D798;// 100D79C: using guessed type int dword_100D79C;//----- (01001564) --------------------------------------------------------void __thiscall sub_1001564(void *this){  JUMPOUT((unsigned int)this, dword_100C010, *(unsigned int *)sub_1009F07);}// 100C010: using guessed type int dword_100C010;//----- (010015C3) --------------------------------------------------------signed int sub_10015C3(wchar_t *Dest, unsigned int a2, const wchar_t *Format, ...){  signed int result; // eax@1  int v4; // eax@4  signed int v5; // ebx@4  int v6; // esi@4  va_list va; // [sp+14h] [bp+14h]@1  va_start(va, Format);  result = 0;  if ( !a2 || a2 > 0x7FFFFFFF )    result = -2147024809;  if ( result >= 0 )  {    v6 = a2 - 1;    v5 = 0;    v4 = vsnwprintf(Dest, a2 - 1, Format, va);    if ( v4 < 0 || v4 > (unsigned int)v6 )    {      v5 = -2147024774;    }    else    {      if ( v4 != v6 )        return v5;    }    Dest[v6] = 0;    return v5;  }  return result;}//----- (01001620) --------------------------------------------------------void __userpurge sub_1001620(int a1<ebp>, void (__stdcall *a2)(_DWORD, _DWORD, _DWORD, _DWORD)<esi>, int a3){  sub_10015C3((wchar_t *)(a1 - 260), 0x80u, Format);  JUMPOUT((unsigned int)dword_100C024, 0, *(unsigned int *)loc_1001799);  a2(dword_100C024, 1035, 1, a1 - 260);  JUMPOUT(*(unsigned int *)loc_1001799);}// 1001799: using guessed type int __stdcall loc_1001799(int);//----- (01001664) --------------------------------------------------------signed int __stdcall sub_1001664(int a1){  JUMPOUT(dword_100C008, 0, *(unsigned int *)sub_1001A4D);  JUMPOUT(SendMessageW(dword_100C028, 0xEu, 0, 0), 0, *(unsigned int *)sub_1001A4D);  return 1;}// 100C008: using guessed type int dword_100C008;//----- (0100170A) --------------------------------------------------------LRESULT __stdcall sub_100170A(unsigned int a1){  LRESULT result; // eax@1  WPARAM v2; // eax@1  unsigned int v3; // edi@1  LPARAM lParam; // [sp+Ch] [bp-10Ch]@1  WPARAM wParam; // [sp+10h] [bp-108h]@1  unsigned int v6; // [sp+114h] [bp-4h]@1  int v7; // [sp+118h] [bp+0h]@1  v6 = (unsigned int)&v7 ^ dword_100C010;  SendMessageW(dword_100C028, 176u, (WPARAM)&wParam, (LPARAM)&lParam);  v2 = SendMessageW(dword_100C028, 0xC9u, wParam, 0);  v3 = v2 + 1;  result = SendMessageW(dword_100C028, 0xBBu, v2, 0);  JUMPOUT(a1, 0, *(unsigned int *)sub_1001620);  JUMPOUT(wParam - result + 1, dword_100C01C, *(unsigned int *)sub_1001620);  JUMPOUT(v3, dword_100C018, *(unsigned int *)sub_1001620);  dword_100C018 = v3;  dword_100C01C = wParam - result + 1;  return result;}// 100C010: using guessed type int dword_100C010;// 100C018: using guessed type int dword_100C018;// 100C01C: using guessed type int dword_100C01C;//----- (010017BB) --------------------------------------------------------LRESULT __stdcall pfnWinEventProc(int a1, int a2, int a3, int a4, int a5, int a6, int a7){  return sub_100170A(0);}//----- (01001809) --------------------------------------------------------signed int __userpurge sub_1001809<eax>(void *a1<ecx>, int a2<ebx>, HWND a3, unsigned __int16 a4, int a5){  int ebp0; // ebp@0  HMENU v7; // eax@15  HMENU v8; // ebx@15  LPARAM v9; // eax@15  HDC v10; // ebx@20  int v11; // eax@21  HFONT v12; // esi@22  const WCHAR *v13; // eax@30  int v14; // esi@30  signed int v15; // eax@31  int v16; // eax@37  signed int v17; // esi@37  DWORD v18; // eax@42  HANDLE v19; // ebx@68  HWND v20; // eax@78  HWND v21; // eax@80  int v22; // eax@86  HMENU v23; // eax@92  HMENU v24; // ebx@92  HMENU v25; // eax@92  HMENU v26; // eax@93  HMENU v27; // eax@93  signed int v28; // esi@96  HWND v29; // [sp-10h] [bp-78h]@74  UINT v30; // [sp-Ch] [bp-74h]@74  UINT v31; // [sp-8h] [bp-70h]@15  WPARAM v32; // [sp-8h] [bp-70h]@74  UINT v33; // [sp-4h] [bp-6Ch]@15  int v34; // [sp-4h] [bp-6Ch]@34  LPARAM v35; // [sp-4h] [bp-6Ch]@74  CHOOSEFONTW v36; // [sp+Ch] [bp-5Ch]@20  struct tagRECT Rect; // [sp+48h] [bp-20h]@95  int v38; // [sp+58h] [bp-10h]@30  HWND hWnd; // [sp+5Ch] [bp-Ch]@1  LPVOID lpFileName; // [sp+60h] [bp-8h]@30  unsigned int v41; // [sp+64h] [bp-4h]@1  int v42; // [sp+68h] [bp+0h]@1  v41 = (unsigned int)&v42 ^ dword_100C010;  hWnd = a3;  JUMPOUT(a4, 0x40u, *(unsigned int *)loc_1001C23);  if ( a4 == 64 )  {    sub_100449D(a1);    return 1;  }  if ( (signed int)a4 > 21 )  {    if ( (signed int)a4 > 26 )    {      if ( a4 == 27 )      {        GetClientRect(::hWnd, &Rect);        if ( *(_DWORD *)&dword_100C02C )        {          *(_DWORD *)&dword_100C02C = 0;          ShowWindow(dword_100C024, 0);          sub_1002409(Rect.right - Rect.left, Rect.bottom - Rect.top);          v28 = 1;        }        else        {          v28 = 1;          *(_DWORD *)&dword_100C02C = 1;          sub_1002409(Rect.right - Rect.left, Rect.bottom - Rect.top);          sub_100170A(1u);          ShowWindow(dword_100C024, 5);        }        dword_100CCF0 = v28;        return 1;      }      if ( a4 != 32 )      {        if ( a4 == 33 )        {          v36.lStructSize = 0;          memset(&v36.hwndOwner, 0, 0x38u);          v10 = GetDC(0);          if ( v10 )          {            v36.lStructSize = 60;            v36.hwndOwner = hWnd;            v36.lpLogFont = &lf;            v11 = GetDeviceCaps(v10, 90);            lf.lfHeight = -MulDiv(*(int *)&Data, v11, 720);            v36.Flags = 16777281;            v36.nFontType = 8192;            ReleaseDC(0, v10);            if ( ChooseFontW(&v36) )            {              SetCursor(hCursor);              v12 = CreateFontIndirectW(&lf);              if ( v12 )              {                DeleteObject(ho);                ho = v12;                SendMessageW(dword_100C028, 0x30u, (WPARAM)v12, 1);                *(_DWORD *)&Data = v36.iPointSize;              }              SetCursor(dword_100C094);              dword_100C03C = 1;            }          }          return 1;        }        return 0;      }      v22 = -(wParam != 0);      if ( sub_1008383((v22 & 0x100000) + 1344274692) )      {        dword_100CCF0 = 1;        wParam = wParam == 0;      }      else      {        MessageBoxW(::hWnd, dword_100C2EC, szApp, 0x30u);      }      if ( !wParam )      {        v26 = GetMenu(::hWnd);        v27 = GetSubMenu(v26, 3);        EnableMenuItem(v27, 0x1Bu, 0);        if ( !dword_100D580 )          return 1;        v35 = 0;        v32 = 27;        v30 = 273;        v29 = hWnd;        goto LABEL_75;      }      dword_100D580 = *(_DWORD *)&dword_100C02C;      if ( *(_DWORD *)&dword_100C02C )        SendMessageW(hWnd, 0x111u, 0x1Bu, 0);      v23 = GetMenu(::hWnd);      v24 = v23;      v25 = GetSubMenu(v23, 3);      CheckMenuItem(v25, 0x1Bu, 0);      v33 = 1;      v31 = 27;      v7 = GetSubMenu(v24, 3);    }    else    {      if ( a4 == 26 )      {        sub_100978A(0);        return 1;      }      if ( a4 == 22 )      {        if ( word_100C9E0 )        {          sub_10081DB((int)&word_100C9E0);          return 1;        }LABEL_84:        v20 = dword_100CCE8;        if ( !dword_100CCE8 )        {          stru_100C0C0.wReplaceWithLen = 0;          stru_100C0C0.Flags = 65537;          stru_100C0C0.lpstrReplaceWith = 0;          stru_100C0C0.lpstrFindWhat = (LPWSTR)&word_100C9E0;          stru_100C0C0.wFindWhatLen = 128;          v21 = FindTextW(&stru_100C0C0);          goto LABEL_81;        }        goto LABEL_79;      }      if ( a4 == 23 )      {        v20 = dword_100CCE8;        if ( !dword_100CCE8 )        {          stru_100C0C0.Flags = 65552;          stru_100C0C0.lpstrReplaceWith = (LPWSTR)&unk_100E060;          stru_100C0C0.wReplaceWithLen = 128;          stru_100C0C0.lpstrFindWhat = (LPWSTR)&word_100C9E0;          stru_100C0C0.wFindWhatLen = 128;          v21 = ReplaceTextW(&stru_100C0C0);LABEL_81:          dword_100CCE8 = v21;          return 1;        }LABEL_79:        SetFocus(v20);        return 1;      }      if ( a4 == 24 )      {        if ( !DialogBoxParamW(hInstance, (LPCWSTR)0xE, ::hWnd, (DLGPROC)DialogFunc, 0) )          sub_1006FB9(dword_100E160);        return 1;      }      if ( a4 != 25 )        return 0;      v8 = GetMenu(::hWnd);      v9 = SendMessageW(dword_100C028, 14u, 0, 0);      SendMessageW(dword_100C028, 0xB1u, 0, v9);      SendMessageW(dword_100C028, 0xB7u, 0, 0);      v33 = 1;      v31 = 25;      v7 = GetSubMenu(v8, 1);    }    EnableMenuItem(v7, v31, v33);    return 1;  }  if ( a4 == 21 )    goto LABEL_84;  if ( (signed int)a4 <= 5 )  {    if ( a4 == 5 )    {      if ( PageSetupDlgW(&stru_100C140) )      {LABEL_72:        sub_1002558((int)&word_100C740, 0x28u, (int)&word_100C6A0);        sub_1002558((int)&Dst, 0x28u, (int)&unk_100C6F0);        dword_100CCF4 = 1;      }      else      {        while ( 1 )        {          v18 = CommDlgExtendedError();          if ( v18 != 4107 )          {            if ( v18 != 4105 && v18 != 4108 )              break;          }          sub_1001A1C();          stru_100C140.hDevNames = 0;          stru_100C140.hDevMode = 0;          if ( PageSetupDlgW(&stru_100C140) )            goto LABEL_72;        }        sub_100432B();      }      return 1;    }    if ( a4 == 1 )    {      sub_100800F(1);    }    else    {      if ( a4 == 2 )      {        if ( !sub_1001664(0) )          return 1;        v38 = dword_100C00C;        v16 = sub_1003F21(a2, (int)hWnd, (int)&lpFileName);        v17 = v16;        if ( v16 >= 0 )          goto LABEL_101;        if ( v16 != -2147023673 )          v17 = sub_1007823((int)hWnd, (int *)&lpFileName);        if ( v17 >= 0 )        {LABEL_101:          v19 = hFile;          hFile = CreateFileW((LPCWSTR)lpFileName, 0x80000000u, 3u, 0, 3u, 0x80u, 0);          if ( !sub_1002820(ebp0, (int)lpFileName, dword_100C00C) )          {            hFile = v19;            v17 = -2147467259;          }          CoTaskMemFree(lpFileName);          if ( v17 >= 0 )            return 1;        }        dword_100C00C = v38;        v34 = v17;      }      else      {        if ( a4 == 3 )        {          dword_100E040 = dword_100C00C;          if ( !dword_100C008 && sub_1007CD7(::hWnd, &FileName, 0) )            return 1;        }        else        {          if ( a4 != 4 )            return 0;        }        v14 = (int)L"*.txt";        v38 = 0;        lpFileName = 0;        v13 = L"*.txt";        if ( !dword_100C008 )          v13 = &FileName;        v15 = sub_1003D6D((int)hWnd, v13, (int)&lpFileName, (int)&v38);        if ( v15 >= 0 )          goto LABEL_102;        if ( v15 != -2147023673 )        {          if ( !dword_100C008 )            v14 = (int)&FileName;          v15 = sub_10078D3((int)hWnd, v14, (LPWSTR *)&lpFileName);        }        if ( v15 >= 0 )        {LABEL_102:          if ( sub_1007CD7(hWnd, (LPCWSTR)lpFileName, (LPCWSTR)1) )            sub_1002558((int)&FileName, 0x104u, (int)lpFileName);          if ( v38 )            (*(void (__stdcall **)(int))(*(_DWORD *)v38 + 8))(v38);          CoTaskMemFree(lpFileName);          return 1;        }        v34 = v15;      }      sub_1003C46(v34);    }    return 1;  }  JUMPOUT(a4 - 6, 0, *(unsigned int *)loc_1004280);  if ( a4 == 7 )    JUMPOUT(*(unsigned int *)loc_1001C66);  if ( a4 == 15 )    return 1;  if ( a4 == 16 )  {    v35 = 0;    v32 = 0;    v30 = 199;    v29 = dword_100C028;LABEL_75:    SendMessageW(v29, v30, v32, v35);    return 1;  }  return 0;}// 1001C23: using guessed type int __stdcall loc_1001C23(HWND hWndNewOwner);// 1001C66: using guessed type int __stdcall loc_1001C66(HWND hWndNewOwner);// 1004280: using guessed type int __stdcall loc_1004280(HWND hDlg, int, int, int);// 100C008: using guessed type int dword_100C008;// 100C00C: using guessed type int dword_100C00C;// 100C010: using guessed type int dword_100C010;// 100C03C: using guessed type int dword_100C03C;// 100CCF0: using guessed type int dword_100CCF0;// 100CCF4: using guessed type int dword_100CCF4;// 100D580: using guessed type int dword_100D580;// 100E040: using guessed type int dword_100E040;// 100E160: using guessed type int dword_100E160;//----- (01001963) --------------------------------------------------------__int32 __cdecl sub_1001963(){  __int32 result; // eax@1  char v1; // zf@2  signed int v2; // ecx@2  char *v3; // edi@2  char *v4; // esi@2  WINDOWPLACEMENT wndpl; // [sp+4h] [bp-34h]@1  int v6; // [sp+30h] [bp-8h]@1  HKEY hKey; // [sp+34h] [bp-4h]@11  v6 = 0;  wndpl.length = 44;  result = GetWindowPlacement(hWnd, &wndpl);  if ( result )  {    v2 = 4;    v3 = (char *)&wndpl.rcNormalPosition;    v4 = (char *)&::wndpl.rcNormalPosition;    result = 0;    v1 = 1;    do    {      if ( !v2 )        break;      v1 = *(_DWORD *)v4 == *(_DWORD *)v3;      v4 += 4;      v3 += 4;      --v2;    }    while ( v1 );    if ( !v1 )    {      v6 = 1;LABEL_11:      result = RegCreateKeyW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Notepad", &hKey);      if ( !result )      {        if ( dword_100C03C )        {          sub_100498E(hKey, L"lfEscapement", LOBYTE(lf.lfEscapement));          sub_100498E(hKey, L"lfOrientation", LOBYTE(lf.lfOrientation));          sub_100498E(hKey, L"lfWeight", LOBYTE(lf.lfWeight));          sub_100498E(hKey, L"lfItalic", lf.lfItalic);          sub_100498E(hKey, L"lfUnderline", lf.lfUnderline);          sub_100498E(hKey, L"lfStrikeOut", lf.lfStrikeOut);          sub_100498E(hKey, L"lfCharSet", lf.lfCharSet);          sub_100498E(hKey, L"lfOutPrecision", lf.lfOutPrecision);          sub_100498E(hKey, L"lfClipPrecision", lf.lfClipPrecision);          sub_100498E(hKey, L"lfQuality", lf.lfQuality);          sub_100498E(hKey, L"lfPitchAndFamily", lf.lfPitchAndFamily);          sub_100478B(hKey, L"lfFaceName", lf.lfFaceName);          sub_100498E(hKey, L"iPointSize", Data);        }        if ( dword_100CCF0 )        {          sub_100498E(hKey, L"fWrap", wParam);          sub_100498E(hKey, L"StatusBar", dword_100C02C);        }        if ( dword_100CCF4 )        {          sub_100478B(hKey, L"szHeader", &word_100C740);          sub_100478B(hKey, L"szTrailer", (LPCWSTR)&Dst);          sub_100498E(hKey, L"iMarginTop", LOBYTE(stru_100C140.rtMargin.top));          sub_100498E(hKey, L"iMarginBottom", LOBYTE(stru_100C140.rtMargin.bottom));          sub_100498E(hKey, L"iMarginLeft", LOBYTE(stru_100C140.rtMargin.left));          sub_100498E(hKey, L"iMarginRight", LOBYTE(stru_100C140.rtMargin.right));        }        if ( v6 )        {          sub_100498E(hKey, L"iWindowPosX", LOBYTE(wndpl.rcNormalPosition.left));          sub_100498E(hKey, L"iWindowPosY", LOBYTE(wndpl.rcNormalPosition.top));          sub_100498E(hKey, L"iWindowPosDX", LOBYTE(wndpl.rcNormalPosition.right) - LOBYTE(wndpl.rcNormalPosition.left));          sub_100498E(hKey, L"iWindowPosDY", LOBYTE(wndpl.rcNormalPosition.bottom) - LOBYTE(wndpl.rcNormalPosition.top));        }        result = RegCloseKey(hKey);      }      return result;    }  }  if ( dword_100CCF4 || dword_100CCF0 || dword_100C03C )    goto LABEL_11;  return result;}// 100C03C: using guessed type int dword_100C03C;// 100CCF0: using guessed type int dword_100CCF0;// 100CCF4: using guessed type int dword_100CCF4;//----- (01001A1C) --------------------------------------------------------HGLOBAL __cdecl sub_1001A1C(){  HGLOBAL result; // eax@2  if ( stru_100C140.hDevMode )    GlobalFree(stru_100C140.hDevMode);  result = stru_100C140.hDevNames;  if ( stru_100C140.hDevNames )    result = GlobalFree(stru_100C140.hDevNames);  stru_100C140.hDevMode = 0;  stru_100C140.hDevNames = 0;  return result;}//----- (01001A4D) --------------------------------------------------------void __userpurge sub_1001A4D(const WCHAR *a1<ebx>, int a2<ebp>, int (__stdcall *a3)(_DWORD, _DWORD, _DWORD, _DWORD)<esi>, int a4){  int v4; // ST10_4@1  const WCHAR *v5; // eax@3  const WCHAR *v6; // edi@3  bool v7; // esi@4  int v8; // eax@4  int v9; // eax@8  signed int v10; // edi@11  int v11; // eax@13  const WCHAR *v12; // ST08_4@13  const WCHAR *v13; // eax@20  if ( a3(dword_100C028, 184, a1, v4) )  {    v5 = lpString2;    v6 = &FileName;    if ( (const WCHAR *)dword_100C008 == a1 )      v5 = &FileName;    v7 = 1;    dword_100C038 = 1;    v8 = sub_1004628(v5);    *(_DWORD *)(a2 - 12) = v8;    dword_100C038 = (int)a1;    if ( v8 == 6 )    {      if ( (const WCHAR *)dword_100C008 != a1 )        goto LABEL_28;      dword_100E040 = dword_100C00C;      v9 = sub_1007CD7(hWnd, &FileName, a1);      v7 = v9 == 0;      if ( !(v9 == 0) )        goto LABEL_2;      if ( (const WCHAR *)dword_100C008 != a1 )LABEL_28:        v6 = L"*.txt";      v10 = SHStrDupW(v6, a2 - 8);      if ( v10 < (signed int)a1 )        goto LABEL_24;      while ( (const WCHAR *)v7 != a1 )      {        v12 = *(const WCHAR **)(a2 - 8);        *(_DWORD *)(a2 - 16) = a1;        v11 = sub_1003D6D((int)hWnd, v12, a2 - 4, a2 - 16);        v10 = v11;        if ( v11 < (signed int)a1 )        {          if ( v11 != -2147023673 )            v10 = sub_10078D3((int)hWnd, *(_DWORD *)(a2 - 8), (LPWSTR *)(a2 - 4));        }        CoTaskMemFree(*(LPVOID *)(a2 - 8));        if ( v10 < (signed int)a1 )          goto LABEL_24;        if ( sub_1007CD7(hWnd, *(LPCWSTR *)(a2 - 4), (LPCWSTR)1) )        {          sub_1002558((int)&FileName, 0x104u, *(_DWORD *)(a2 - 4));          dword_100C00C = dword_100E040;          v7 = 0;        }        else        {          v10 = SHStrDupW(*(_DWORD *)(a2 - 4), a2 - 8);        }        v13 = *(const WCHAR **)(a2 - 16);        if ( v13 != a1 )          (*(void (__cdecl **)(_DWORD))(*(_DWORD *)v13 + 8))(*(_DWORD *)(a2 - 16));        CoTaskMemFree(*(LPVOID *)(a2 - 4));        if ( v10 < (signed int)a1 )          break;      }      if ( v10 < (signed int)a1 )      {LABEL_24:        *(_DWORD *)(a2 - 12) = 2;        if ( v10 == -2147024882 )          MessageBoxW(hWnd, lpText, szApp, 0x1010u);      }    }  }LABEL_2:  JUMPOUT(*(unsigned int *)loc_100169F);}// 10013B4: using guessed type int __stdcall SHStrDupW(_DWORD, _DWORD);// 100169F: using guessed type int __stdcall loc_100169F(int);// 100C008: using guessed type int dword_100C008;// 100C00C: using guessed type int dword_100C00C;// 100C038: using guessed type int dword_100C038;// 100E040: using guessed type int dword_100E040;//----- (01001A72) --------------------------------------------------------int __usercall sub_1001A72<eax>(int a1<ebp>){  sub_1001564((void *)(a1 ^ *(_DWORD *)(a1 - 28)));  return sub_10023D0(a1);}// 10023D0: using guessed type _DWORD __usercall sub_10023D0<eax>(_DWORD ebp0<ebp>);//----- (01001AA5) --------------------------------------------------------DWORD __stdcall sub_1001AA5(HWND hWndNewOwner){  int v1; // eax@1  HMENU v2; // ebx@1  bool v3; // ST0C_4@1  HMENU v4; // eax@1  UINT v5; // ST0C_4@1  HMENU v6; // eax@1  UINT v7; // ST0C_4@1  HMENU v8; // eax@1  HMENU v9; // eax@1  bool v10; // ST0C_4@4  HMENU v11; // eax@4  UINT v13; // ST0C_4@6  HMENU v14; // eax@6  UINT v15; // ST0C_4@6  HMENU v16; // eax@6  bool v17; // ST0C_4@6  HMENU v18; // eax@6  bool v19; // ST0C_4@6  HMENU v20; // eax@6  UINT v21; // ST0C_4@6  HMENU v22; // eax@6  UINT v23; // ST0C_4@6  HMENU v24; // eax@6  HMENU v25; // eax@8  LPARAM lParam; // [sp+Ch] [bp-10h]@1  WPARAM wParam; // [sp+10h] [bp-Ch]@1  int v28; // [sp+14h] [bp-8h]@1  UINT uEnable; // [sp+18h] [bp-4h]@1  v28 = 0;  v2 = GetMenu(hWnd);  SendMessageW(dword_100C028, 0xB0u, (WPARAM)&wParam, (LPARAM)&lParam);  v3 = wParam == lParam;  uEnable = wParam == lParam;  v4 = GetSubMenu(v2, 1);  EnableMenuItem(v4, 768u, v3);  v5 = uEnable;  v6 = GetSubMenu(v2, 1);  EnableMenuItem(v6, 0x301u, v5);  v7 = uEnable;  v8 = GetSubMenu(v2, 1);  EnableMenuItem(v8, 0x303u, v7);  v9 = GetSubMenu(v2, 1);  v1 = GetMenuState(v9, 0x19u, 0);  if ( v1 == 1 )  {    if ( uEnable == 1 )    {      v25 = GetSubMenu(v2, v1);      EnableMenuItem(v25, 0x19u, 0);    }  }  if ( OpenClipboard(hWndNewOwner) )  {    v28 = IsClipboardFormatAvailable(1u);    CloseClipboard();  }  v10 = v28 == 0;  v11 = GetSubMenu(v2, 1);  EnableMenuItem(v11, 0x302u, v10);  uEnable = 1;  if ( SendMessageW(dword_100C028, 0xEu, 0, 0) )    uEnable = 0;  v13 = uEnable;  v14 = GetSubMenu(v2, 1);  EnableMenuItem(v14, 0x15u, v13);  v15 = uEnable;  v16 = GetSubMenu(v2, 1);  EnableMenuItem(v16, 0x16u, v15);  v17 = ::wParam != 0;  v18 = GetSubMenu(v2, 1);  EnableMenuItem(v18, 0x18u, v17);  v19 = SendMessageW(dword_100C028, 0xC6u, 0, 0) == 0;  v20 = GetSubMenu(v2, 1);  EnableMenuItem(v20, 0x10u, v19);  v21 = ::wParam != 0 ? 8 : 0;  v22 = GetSubMenu(v2, 2);  CheckMenuItem(v22, 32u, v21);  v23 = *(_DWORD *)&dword_100C02C != 0 ? 8 : 0;  v24 = GetSubMenu(v2, 3);  return CheckMenuItem(v24, 0x1Bu, v23);}//----- (01001E66) --------------------------------------------------------signed int __stdcall sub_1001E66(HINSTANCE hInstance, int a2, int nCmdShow){  int ebp0; // ebp@0  HACCEL v4; // eax@5  HWND v5; // esi@7  void *v6; // ecx@7  int v7; // eax@16  int v8; // edi@17  int v9; // eax@17  signed int v10; // eax@20  int v11; // ecx@23  HMENU v13; // eax@32  HMENU v14; // eax@32  int v15; // eax@41  int Dst; // [sp+Ch] [bp-A8h]@10  int v17; // [sp+28h] [bp-8Ch]@11  int v18; // [sp+2Ch] [bp-88h]@11  int v19; // [sp+30h] [bp-84h]@11  int v20; // [sp+34h] [bp-80h]@11  struct tagRECT Rect; // [sp+38h] [bp-7Ch]@13  int v22; // [sp+48h] [bp-6Ch]@15  int v23; // [sp+4Ch] [bp-68h]@15  int v24; // [sp+50h] [bp-64h]@15  int v25; // [sp+54h] [bp-60h]@15  LPARAM lParam; // [sp+58h] [bp-5Ch]@15  int v27; // [sp+5Ch] [bp-58h]@15  HINSTANCE v28; // [sp+60h] [bp-54h]@1  __int32 v29; // [sp+64h] [bp-50h]@1  HGDIOBJ wParam; // [sp+68h] [bp-4Ch]@16  HDC hdc; // [sp+6Ch] [bp-48h]@3  WCHAR String1; // [sp+70h] [bp-44h]@16  unsigned int v33; // [sp+B0h] [bp-4h]@1  int v34; // [sp+B4h] [bp+0h]@1  v33 = (unsigned int)&v34 ^ dword_100C010;  v28 = hInstance;  v29 = a2;  dword_100C07C = RegisterWindowMessageW(L"commdlg_FindReplace");  if ( !dword_100C07C )    return 0;  dword_100C078 = RegisterWindowMessageW(L"commdlg_help");  if ( !dword_100C078 )    return 0;  hdc = GetDC(0);  if ( !hdc )    return 0;  if ( !sub_1003881(hInstance) )    return 0;  dword_100C094 = LoadCursorW(0, (LPCWSTR)32513);  hCursor = LoadCursorW(0, (LPCWSTR)0x7F02);  v4 = LoadAcceleratorsW(hInstance, L"MainAcc");  hAccTable = v4;  if ( !hCursor )    return 0;  if ( !v4 )    return 0;  sub_10037EF(hInstance);  ::hInstance = hInstance;  stru_100C140.lStructSize = 84;  stru_100C140.hDevMode = 0;  stru_100C140.hDevNames = 0;  stru_100C140.hInstance = hInstance;  sub_1002F8B(v6);  sub_10030E2();  v5 = CreateWindowExW(0, L"Notepad", &szOtherStuff, 0xCF0000u, X, Y, nWidth, nHeight, 0, 0, hInstance, 0);  hWnd = v5;  stru_100C140.hwndOwner = v5;  if ( !v5 )    return 0;  if ( Y != -2147483648 )  {    if ( X != -2147483648 )    {      memset(&Dst, 0, 0x2Cu);      Dst = 44;      if ( GetWindowPlacement(v5, (WINDOWPLACEMENT *)&Dst) )      {        memset(&wndpl, 0, 0x2Cu);        wndpl.rcNormalPosition.left = X;        wndpl.length = 44;        wndpl.rcNormalPosition.right = v19 + X - v17;        wndpl.rcNormalPosition.top = Y;        wndpl.rcNormalPosition.bottom = v20 + Y - v18;      }      SetWindowPlacement(hWnd, &wndpl);      v5 = hWnd;    }  }  DragAcceptFiles(v5, 1);  GetClientRect(hWnd, &Rect);  dword_100C028 = CreateWindowExW(                    0x200u,                    L"Edit",                    &szOtherStuff,                    ::wParam != 0 ? 1344274692 : 1345323268,                    0,                    0,                    Rect.right,                    Rect.bottom - 100,                    hWnd,                    (HMENU)0xF,                    v28,                    0);  if ( !dword_100C028    || (dword_100C024 = CreateStatusWindowW(                          (*(_DWORD *)&dword_100C02C != 0 ? 0x10000000 : 0) | 0x44800000,                          &szOtherStuff,                          hWnd,                          0x401u),        !dword_100C024) )    return 0;  sub_100170A(1u);  GetClientRect(dword_100C024, (LPRECT)&v22);  dword_100C084 = v25 - v23;  v27 = -1;  lParam = 3 * (v24 - v22) / 4;  SendMessageW(dword_100C024, 1028u, 2u, (LPARAM)&lParam);  SendMessageW(dword_100C028, 0xC8u, ::wParam, 0);  if ( ::wParam )  {    v13 = GetMenu(hWnd);    v14 = GetSubMenu(v13, 3);    EnableMenuItem(v14, 0x1Bu, 1u);  }  v7 = GetDeviceCaps(hdc, 90);  lf.lfHeight = -MulDiv(*(int *)&Data, v7, 720);  ho = CreateFontIndirectW(&lf);  wParam = SelectObject(hdc, ho);  GetTextFaceW(hdc, 32, &String1);  SelectObject(hdc, wParam);  if ( lstrcmpiW(&String1, lf.lfFaceName) )  {    EnumFontsW(hdc, lf.lfFaceName, (FONTENUMPROCW)Proc, (LPARAM)&lf);    DeleteObject(ho);    ho = CreateFontIndirectW(&lf);  }  SendMessageW(dword_100C028, 0x30u, (WPARAM)ho, 0);  ReleaseDC(0, hdc);  word_100C9E0 = 0;  hMem = (HLOCAL)SendMessageW(dword_100C028, 0xBDu, 0, 0);  SendMessageW(dword_100C028, 0xC5u, 0, 0);  sub_1002456(lpString2);  ShowWindow(hWnd, nCmdShow);  SetCursor(dword_100C094);  v9 = sub_10025CB(v29);  dword_100C05C = -1;  v8 = v9;  if ( !sub_1002689(L"/A", (WCHAR **)v9) )  {    dword_100C05C = 0;LABEL_36:    v8 = sub_10025CB(v8 + 4);    goto LABEL_20;  }  if ( !sub_1002689(L"/W", (WCHAR **)v8) )    dword_100C05C = 1;  if ( dword_100C05C != -1 )    goto LABEL_36;LABEL_20:  v10 = sub_10025EF((WCHAR **)v8);  if ( v10 )  {    if ( v10 != 2 )      goto LABEL_23;  }  else  {    if ( sub_1002631((WCHAR **)v8, nCmdShow) )    {      PostMessageW(hWnd, 0x10u, 0, 0);      return 1;    }    if ( !*(_WORD *)v8 )    {LABEL_23:      sub_10026D5(&Dest, 0x50u);      sub_10026D5(&word_100C7E0, 0x50u);      memset(&stru_100C1A0, 0, 0x58u);      stru_100C1A0.hInstance = v28;      stru_100C1A0.lStructSize = 88;      memset(&stru_100C0C0, 0, sizeof(stru_100C0C0));      stru_100C1A0.hwndOwner = hWnd;      stru_100C1A0.nMaxFile = 260;      stru_100C0C0.lStructSize = 40;      stru_100C0C0.hwndOwner = stru_100C1A0.hwndOwner;      SendMessageW(dword_100C028, 0xB0u, (WPARAM)&wParam, (LPARAM)&v29);      SendMessageW(dword_100C028, 0xB1u, (WPARAM)wParam, v29);      SendMessageW(dword_100C028, 0xB7u, 0, 0);      if ( ((unsigned int)GetKeyboardLayout(0) & 0x3FF) == 17 )        SendMessageW(dword_100C028, 0xD8u, 1u, 1);      sub_1002733(v11);      return 1;    }    sub_1002C0D((LPWSTR)&FileName, (LPCWSTR)v8, 0x104u);    hFile = CreateFileW(&FileName, 0x80000000u, 3u, 0, 3u, 0x80u, 0);    if ( hFile != (HANDLE)-1 )    {LABEL_28:      sub_1002820(ebp0, (int)&FileName, dword_100C05C);      goto LABEL_23;    }    if ( GetLastError() != 2 )    {      sub_1007BF6(&FileName);      sub_1002456(lpString2);      sub_1002558((int)&FileName, 0x104u, (int)lpString2);      goto LABEL_30;    }    v15 = sub_1007051(hWnd, szApp, dword_100C2B4, &FileName, 0x33u);    if ( v15 != 2 )    {      if ( v15 == 6 )        hFile = CreateFileW(&FileName, 0xC0000000u, 3u, 0, 4u, 0x80u, 0);LABEL_30:      if ( hFile == (HANDLE)-1 )        goto LABEL_23;      goto LABEL_28;    }  }  return 0;}// 100236C: using guessed type wchar_t aW[3];// 1002374: using guessed type wchar_t aA[3];// 100C010: using guessed type int dword_100C010;// 100C05C: using guessed type int dword_100C05C;// 100C078: using guessed type int dword_100C078;// 100C07C: using guessed type int dword_100C07C;// 100C084: using guessed type int dword_100C084;//----- (010023D0) --------------------------------------------------------#error "10023DB: positive sp value has been found (funcsize=3)"//----- (01002409) --------------------------------------------------------BOOL __stdcall sub_1002409(int nWidth, int a2){  int v2; // eax@1  LPARAM lParam; // [sp+0h] [bp-8h]@3  int v5; // [sp+4h] [bp-4h]@3  v2 = *(_DWORD *)&dword_100C02C;  if ( *(_DWORD *)&dword_100C02C )  {    v5 = -1;    lParam = 3 * nWidth / 4;    SendMessageW(dword_100C024, 1028u, 2u, (LPARAM)&lParam);    SendMessageW(dword_100C024, 5u, 0, 0);    v2 = *(_DWORD *)&dword_100C02C;  }  return MoveWindow(dword_100C028, 0, 0, nWidth, a2 - (v2 != 0 ? dword_100C084 : 0), 1);}// 100C084: using guessed type int dword_100C084;//----- (01002456) --------------------------------------------------------BOOL __stdcall sub_1002456(LPCWSTR lpString1){  WCHAR *v1; // eax@5  char v2; // zf@5  HANDLE v4; // edi@7  va_list Arguments; // [sp+4h] [bp-7CCh]@5  struct _WIN32_FIND_DATAW FindFileData; // [sp+8h] [bp-7C8h]@7  WCHAR String; // [sp+258h] [bp-578h]@5  WCHAR Buf; // [sp+4C4h] [bp-30Ch]@2  wchar_t Dest[128]; // [sp+6CCh] [bp-104h]@1  unsigned int v10; // [sp+7CCh] [bp-4h]@1  int v11; // [sp+7D0h] [bp+0h]@1  v10 = (unsigned int)&v11 ^ dword_100C010;  Dest[0] = 0;  memset(&Dest[1], 0, 0xFEu);  if ( lstrcmpW(lpString1, lpString2) )  {    v4 = FindFirstFileW(lpString1, &FindFileData);    if ( v4 == (HANDLE)-1 )    {      GetFileTitleW(lpString1, &Buf, 0x104u);    }    else    {      GetFileTitleW(FindFileData.cFileName, &Buf, 0x104u);      FindClose(v4);    }  }  else  {    sub_1002558((int)&Buf, 0x104u, (int)lpString2);  }  sub_10015C3(Dest, 0x80u, Format, 1, 1);  if ( dword_100C024 )    SendMessageW(dword_100C024, 0x40Bu, 1u, (LPARAM)Dest);  Arguments = (va_list)&Buf;  v2 = FormatMessageW(0x2400u, lpSource, 0, 0, &String, 0x136u, &Arguments) == 0;  v1 = &String;  if ( v2 )    v1 = &Buf;  return SetWindowTextW(hWnd, v1);}// 100C010: using guessed type int dword_100C010;//----- (01002558) --------------------------------------------------------signed int __stdcall sub_1002558(int a1, unsigned int a2, int a3){  signed int result; // eax@1  int v4; // eax@4  signed int v5; // ebx@4  unsigned int v6; // esi@4  __int16 v7; // cx@6  result = 0;  if ( !a2 || a2 > 0x7FFFFFFF )    result = -2147024809;  if ( result >= 0 )  {    v4 = a1;    v5 = 0;    v6 = a2;    if ( !a2 )      goto LABEL_15;    do    {      if ( !(2147483646 - a2 + v6) )        break;      v7 = *(_WORD *)(a3 - a1 + v4);      if ( !v7 )        break;      *(_WORD *)v4 = v7;      v4 += 2;      --v6;    }    while ( v6 );    if ( !v6 )    {LABEL_15:      v4 -= 2;      v5 = -2147024774;    }    *(_WORD *)v4 = 0;    result = v5;  }  return result;}//----- (010025CB) --------------------------------------------------------int __stdcall sub_10025CB(int a1){  int result; // eax@1  for ( result = a1; *(_WORD *)result == 32 || *(_WORD *)result == 9; result += 2 )    ;  return result;}//----- (010025EF) --------------------------------------------------------signed int __stdcall sub_10025EF(WCHAR **a1){  int ebp0; // ebp@0  signed int result; // eax@2  const WCHAR *v3; // eax@4  DWORD v4; // eax@6  int v5; // eax@7  const WCHAR *v6; // [sp-Ch] [bp-1Ch]@9  int v7; // [sp+Ch] [bp-4h]@1  v7 = 0;  if ( sub_1002689(L"/.SETUP", a1) )    return 0;  dword_100CCEC = 1;  hMenu = GetSystemMenu(hWnd, 0);  hAccTable = LoadAcceleratorsW(hInstance, L"SlipUpAcc");  SetWindowLongW(hWnd, -16, 16580608);  v3 = (const WCHAR *)sub_10025CB((int)((char *)a1 + 14));  if ( !*v3 )    goto LABEL_20;  sub_1002C0D((LPWSTR)&FileName, v3, 0x104u);  hFile = CreateFileW(&FileName, -2147483648u, 3u, 0, 3u, 128u, 0);  if ( hFile == (HANDLE)-1 )  {    v4 = GetLastError() - 2;    if ( v4 )    {      v5 = v4 - 3;      if ( v5 )        v6 = (const WCHAR *)(v5 == 118 ? dword_100C2E0 : dword_100C2B0);      else        v6 = dword_100C31C;      v7 = sub_1007051(hWnd, szApp, v6, &FileName, 0x31u);    }    else    {      v7 = sub_1007051(hWnd, szApp, dword_100C2B4, &FileName, 0x33u);      if ( v7 == 6 )        hFile = CreateFileW(&FileName, 0xC0000000u, 3u, 0, 4u, 0x80u, 0);    }    if ( hFile == (HANDLE)-1 )      return 0;  }  sub_1002820(ebp0, (int)&FileName, dword_100C05C);  result = 2;  if ( v7 != 2 )LABEL_20:    result = 6;  return result;}// 100261C: using guessed type wchar_t a_setup[8];// 100C05C: using guessed type int dword_100C05C;// 100C2E0: using guessed type int dword_100C2E0;// 100CCEC: using guessed type int dword_100CCEC;//----- (01002631) --------------------------------------------------------int __stdcall sub_1002631(WCHAR **a1, int nCmdShow){  int v3; // eax@4  const WCHAR *v4; // esi@6  int v5; // eax@7  int v6; // eax@8  int v7; // eax@9  unsigned int v8; // edx@9  WCHAR v9; // cx@13  unsigned int v10; // [sp+8h] [bp-4h]@1  v10 = 1;  if ( sub_1002689(L"/PT", a1) )  {    if ( sub_1002689(L"/P", a1) )      return 0;    v3 = sub_10025CB((int)(a1 + 1));  }  else  {    v3 = sub_10025CB((int)((char *)a1 + 6));    v10 = 0;  }  v4 = (const WCHAR *)v3;  if ( *(_WORD *)v3 )  {    ShowWindow(hWnd, nCmdShow);    v5 = (int)(sub_1002C0D((LPWSTR)&FileName, v4, 0x104u) + 1);    JUMPOUT(v10, 0, *(unsigned int *)sub_10056E3);    if ( *(_WORD *)v5 )    {      v6 = sub_10025CB(v5);      if ( *(_WORD *)v6 == 34 )      {        v7 = v6 + 2;        v8 = 0;        while ( 1 )        {          v9 = *(_WORD *)v7;          if ( !*(_WORD *)v7 )            break;          if ( v9 == 34 || v8 >= 0xFF )            break;          *(&pPrinterName + v8++) = v9;          v7 += 2;        }        *(&pPrinterName + v8) = 0;        JUMPOUT(*(int *)sub_10056E3);      }    }  }  return 0;}// 1002674: using guessed type wchar_t aP[3];// 100267C: using guessed type wchar_t aPt[4];//----- (01002689) --------------------------------------------------------signed int __userpurge sub_1002689<eax>(unsigned __int16 *a1<eax>, WCHAR **a2){  unsigned __int16 v2; // ax@1  unsigned __int16 *v3; // ebx@1  __int16 v4; // di@2  WCHAR *v5; // eax@2  signed int result; // eax@3  v3 = a1;  v2 = *a1;  if ( v2 )  {    while ( 1 )    {      v4 = (unsigned int)CharUpperW((LPWSTR)v2);      v5 = (WCHAR *)*(_WORD *)a2;      a2 = (WCHAR **)((char *)a2 + 2);      ++v3;      if ( v4 != (unsigned __int16)CharUpperW(v5) )        break;      v2 = *v3;      if ( !*v3 )        goto LABEL_5;    }    result = 1;  }  else  {LABEL_5:    result = 0;  }  return result;}//----- (010026D5) --------------------------------------------------------signed int __stdcall sub_10026D5(wchar_t *Dest, unsigned int a2){  return sub_10015C3(Dest, a2, L"%s%c*.txt%c%s%c*.*%c", *(_DWORD *)Args, 0, 0, dword_100C308, 0, 0);}// 100C308: using guessed type int dword_100C308;//----- (01002733) --------------------------------------------------------int __thiscall sub_1002733(int this){  int result; // eax@1  char v2; // [sp+0h] [bp-1304h]@1  char v3; // [sp+60h] [bp-12A4h]@1  unsigned int v4; // [sp+6Ch] [bp-1298h]@1  unsigned int v5; // [sp+70h] [bp-1294h]@1  sub_10027F0(0x1320u, this);  RtlInitUnicodeString(&v2, L"Security-SPP-GenuineLocalStatus");  result = NtQueryLicenseValue(&v2, &v5, &v4, 4, &v3);  if ( result >= 0 )  {    JUMPOUT(v5, 4u, *(unsigned int *)sub_1005D2A);    JUMPOUT(v4, 0, *(unsigned int *)sub_1005D2A);  }  return result;}// 10013E0: using guessed type int __stdcall RtlInitUnicodeString(_DWORD, _DWORD);// 10013E4: using guessed type int __stdcall NtQueryLicenseValue(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD);// 10027B0: using guessed type wchar_t aSecuritySppGen[32];//----- (010027F0) --------------------------------------------------------int __usercall sub_10027F0<eax>(unsigned int a1<eax>, int a2<ecx>){  unsigned int i; // eax@1  int v3; // ecx@1  int v5; // [sp-4h] [bp-4h]@1  void *v6; // [sp+0h] [bp+0h]@1  int v7; // [sp+0h] [bp+0h]@4  v5 = a2;  v3 = (unsigned int)&v6 >= a1 ? (int)((char *)&v6 - a1) : 0;  for ( i = (unsigned int)&v5 & 0xFFFFF000; v3 < i; i -= 4096 )    ;  return v7;}//----- (01002820) --------------------------------------------------------int __userpurge sub_1002820<eax>(int a1<ebp>, int a2, int a3){  HANDLE v3; // eax@1  unsigned int v4; // ebx@1  unsigned int v5; // edi@1  unsigned int v6; // eax@1  int v7; // esi@3  unsigned int v8; // eax@3  HLOCAL v9; // eax@3  void *v10; // eax@3  unsigned __int16 *v11; // eax@5  unsigned __int16 *v12; // ecx@6  int v13; // edx@7  void *v15; // ebx@10  int v16; // eax@10  sub_1002B64((int)dword_1002B48, 636);  *(_DWORD *)(a1 - 568) = *(_DWORD *)(a1 + 8);  *(_DWORD *)(a1 - 596) = 0;  *(_DWORD *)(a1 - 580) = 0;  *(_DWORD *)(a1 - 564) = 0;  *(_DWORD *)(a1 - 592) = 0;  *(_DWORD *)(a1 - 560) = 0;  JUMPOUT((unsigned int)hFile, 0xFFFFFFFFu, *(unsigned int *)sub_10058A7);  v6 = GetFileInformationByHandle(hFile, (LPBY_HANDLE_FILE_INFORMATION)(a1 - 652));  v5 = *(_DWORD *)(a1 - 616);  *(_DWORD *)(a1 - 584) = v5;  JUMPOUT(v6, 0, *(unsigned int *)loc_10058B2);  JUMPOUT(v5, 0x40000000u, *(unsigned int *)loc_1005C0C);  JUMPOUT(*(_DWORD *)(a1 - 620), 0, *(unsigned int *)loc_1005C0C);  SetCursor(hCursor);  JUMPOUT(v5, 0, *(unsigned int *)loc_10058BD);  v4 = 0;  *(_DWORD *)(a1 - 576) = 0;  v3 = CreateFileMappingW(hFile, 0, 2u, 0, v5, 0);  *(_DWORD *)(a1 - 600) = v3;  if ( v3 )  {    v4 = (unsigned int)MapViewOfFile(v3, 4u, 0, 0, v5);    *(_DWORD *)(a1 - 576) = v4;    CloseHandle(*(HANDLE *)(a1 - 600));  }  CloseHandle(hFile);  hFile = (HANDLE)-1;  JUMPOUT(v4, 0, *(unsigned int *)loc_10058D7);  *(_DWORD *)(a1 - 4) = 0;  *(_DWORD *)(a1 - 572) = v4;  JUMPOUT(*(_DWORD *)(a1 + 12), 0xFFFFFFFFu, *(unsigned int *)loc_1005A43);  v8 = *(_WORD *)v4;  JUMPOUT(v8, 0xBBEFu, *(unsigned int *)loc_100590F);  JUMPOUT(v8, 0xFEFFu, *(unsigned int *)loc_10058EB);  *(_DWORD *)(a1 - 564) = 1;  *(_DWORD *)(a1 - 556) = 1;  v7 = (v5 >> 1) - 1;  *(_DWORD *)(a1 - 552) = v7;  JUMPOUT(*(_DWORD *)(a1 - 564), 0, *(unsigned int *)loc_1005951);  SendMessageW(dword_100C028, 11u, 0, 0);  SendMessageW(dword_100C028, 0xB1u, 0, 0);  SendMessageW(dword_100C028, 0xB7u, 0, 0);  v9 = LocalReAlloc(hMem, 2 * v7 + 2, 2u);  *(_DWORD *)(a1 - 592) = v9;  JUMPOUT((unsigned int)v9, 0, *(unsigned int *)loc_1005976);  v10 = LocalLock(v9);  *(_DWORD *)(a1 - 596) = v10;  JUMPOUT(*(_DWORD *)(a1 - 564), 0, *(unsigned int *)loc_1005AEB);  JUMPOUT(*(_WORD *)v4, 0xFEFFu, *(unsigned int *)loc_1005AC7);  memcpy(v10, (const void *)(v4 + 2), 2 * v7);  dword_100C00C = *(_DWORD *)(a1 - 556);  *(_DWORD *)(a1 - 4) = -2;  if ( v4 != a1 - 588 )    UnmapViewOfFile((LPCVOID)v4);  v11 = *(unsigned __int16 **)(a1 - 596);  if ( v11 )  {    v12 = *(unsigned __int16 **)(a1 - 596);    if ( v5 >> 1 != 1 )    {      v13 = (v5 >> 1) - 1;      do      {        JUMPOUT(*v12, 0, *(unsigned int *)loc_1005B5A);        ++v12;        --v13;      }      while ( v13 );    }    v11[v7] = 0;    JUMPOUT(*v11, 0x2Eu, *(unsigned int *)loc_1005B65);    *(_DWORD *)(a1 - 580) = 0;  }  v15 = *(void **)(a1 - 592);  LocalUnlock(*(HLOCAL *)(a1 - 592));  hMem = v15;  sub_1002558((int)&FileName, 0x104u, *(_DWORD *)(a1 - 568));  sub_1002456(*(LPCWSTR *)(a1 - 568));  dword_100C008 = 0;  dword_100C030 = 1;  SendMessageW(dword_100C028, 0xBCu, (WPARAM)hMem, 0);  JUMPOUT(dword_100C030, 2u, *(unsigned int *)loc_1005B9C);  dword_100C030 = 0;  PostMessageW(dword_100C028, 0xC5u, 0, 0);  JUMPOUT(*(_DWORD *)(a1 - 580), 0, *(unsigned int *)loc_1005BE2);  v16 = SendMessageW(dword_100C028, 0x115u, 0xBEu, 0);  SetScrollPos(hWnd, 1, v16, 1);  SendMessageW(dword_100C028, 0xBu, 1u, 0);  InvalidateRect(dword_100C028, 0, 1);  UpdateWindow(dword_100C028);  SetCursor(dword_100C094);  return sub_1001A72(a1);}// 1002B48: using guessed type int dword_1002B48[2];// 10058B2: using guessed type int __stdcall loc_10058B2(int, int);// 10058BD: using guessed type int __stdcall loc_10058BD(int, int);// 10058D7: using guessed type int __stdcall loc_10058D7(int, int);// 10058EB: using guessed type int __stdcall loc_10058EB(int, int);// 100590F: using guessed type int __stdcall loc_100590F(int, int);// 1005951: using guessed type int __stdcall loc_1005951(int, int);// 1005976: using guessed type int __stdcall loc_1005976(int, int);// 1005A43: using guessed type int __stdcall loc_1005A43(int, int);// 1005AC7: using guessed type int __stdcall loc_1005AC7(int, int);// 1005AEB: using guessed type int __stdcall loc_1005AEB(int, int);// 1005B5A: using guessed type int __stdcall loc_1005B5A(int, int);// 1005B65: using guessed type int __stdcall loc_1005B65(int, int);// 1005B9C: using guessed type int __stdcall loc_1005B9C(int, int);// 1005BE2: using guessed type int __stdcall loc_1005BE2(int, int);// 1005C0C: using guessed type int __stdcall loc_1005C0C(int, int);// 100C008: using guessed type int dword_100C008;// 100C00C: using guessed type int dword_100C00C;// 100C030: using guessed type int dword_100C030;//----- (01002B64) --------------------------------------------------------char *__cdecl sub_1002B64(int a1, int a2){  void *v3; // esp@1  char v4; // [sp-8h] [bp-8h]@1  v3 = alloca(a2);  return &v4;}//----- (01002C0D) --------------------------------------------------------LPCWSTR __stdcall sub_1002C0D(LPWSTR lpBuffer, LPCWSTR lpFileName, DWORD nBufferLength){  LPCWSTR v3; // ebx@1  LPCWSTR v4; // esi@1  HANDLE v5; // eax@5  const WCHAR v7; // dx@10  unsigned int i; // ecx@10  __int16 v9; // ax@14  struct _WIN32_FIND_DATAW FindFileData; // [sp+Ch] [bp-45Ch]@5  __int16 v11[260]; // [sp+25Ch] [bp-20Ch]@13  unsigned int v12; // [sp+464h] [bp-4h]@1  int v13; // [sp+468h] [bp+0h]@1  v12 = (unsigned int)&v13 ^ dword_100C010;  v4 = lpFileName;  v3 = lpFileName;  if ( *lpFileName == 34 || *lpFileName == 39 )  {    v7 = *lpFileName;    for ( i = 0; ; ++i )    {      ++v4;      v9 = *v4;      if ( !*v4 )        break;      if ( v9 == v7 || i >= 0x103 )        break;      v11[i] = v9;    }    v3 = v4;    v11[i] = 0;    v4 = (LPCWSTR)v11;  }  if ( PathIsFileSpecW(v4) )    sub_1002558((int)lpBuffer, nBufferLength, (int)v4);  else    GetFullPathNameW(v4, nBufferLength, lpBuffer, 0);  v5 = FindFirstFileW(lpBuffer, &FindFileData);  if ( v5 != (HANDLE)-1    || (sub_10080E4((int)lpBuffer, nBufferLength), v5 = FindFirstFileW(lpBuffer, &FindFileData), v5 != (HANDLE)-1) )    FindClose(v5);  return v3;}// 100C010: using guessed type int dword_100C010;// 1002C0D: using guessed type __int16 var_20C[260];//----- (01002F8B) --------------------------------------------------------LONG __thiscall sub_1002F8B(void *this){  LONG result; // eax@2  int LCData; // [sp+0h] [bp-4h]@1  LCData = (int)this;  stru_100C140.lpfnPageSetupHook = (LPPAGESETUPHOOK)sub_1004240;  stru_100C140.lpPageSetupTemplateName = (LPCWSTR)12;  GetLocaleInfoW(0x400u, 0xDu, (LPWSTR)&LCData, 2);  if ( (_WORD)LCData == 49 )  {    stru_100C140.rtMargin.top = 1000;    stru_100C140.rtMargin.bottom = 1000;    stru_100C140.Flags = 40966;    result = 750;  }  else  {    stru_100C140.rtMargin.top = 2500;    stru_100C140.rtMargin.bottom = 2500;    stru_100C140.Flags = 40970;    result = 2000;  }  stru_100C140.rtMargin.right = result;  stru_100C140.rtMargin.left = result;  return result;}//----- (0100304B) --------------------------------------------------------int __cdecl sub_100304B(){  return 0;}//----- (01003053) --------------------------------------------------------DWORD __cdecl sub_1003053(){  DWORD result; // eax@2  DWORD v1; // esi@2  DWORD v2; // esi@2  DWORD v3; // esi@2  DWORD v4; // esi@2  LARGE_INTEGER PerformanceCount; // [sp+8h] [bp-10h]@2  struct _FILETIME SystemTimeAsFileTime; // [sp+10h] [bp-8h]@1  SystemTimeAsFileTime.dwLowDateTime = 0;  SystemTimeAsFileTime.dwHighDateTime = 0;  if ( dword_100C010 != -1153374642 && dword_100C010 & 0xFFFF0000 )  {    result = ~dword_100C010;    dword_100C014 = ~dword_100C010;  }  else  {    GetSystemTimeAsFileTime(&SystemTimeAsFileTime);    v2 = GetCurrentProcessId() ^ SystemTimeAsFileTime.dwLowDateTime ^ SystemTimeAsFileTime.dwHighDateTime;    v3 = GetCurrentThreadId() ^ v2;    v4 = GetTickCount() ^ v3;    QueryPerformanceCounter(&PerformanceCount);    result = PerformanceCount.LowPart ^ PerformanceCount.HighPart;    v1 = PerformanceCount.LowPart ^ PerformanceCount.HighPart ^ v4;    if ( v1 == -1153374642 || !(dword_100C010 & 0xFFFF0000) )      v1 = -1153374641;    dword_100C010 = v1;    dword_100C014 = ~v1;  }  return result;}// 100C010: using guessed type int dword_100C010;// 100C014: using guessed type int dword_100C014;//----- (010030E2) --------------------------------------------------------LSTATUS __cdecl sub_10030E2(){  LSTATUS result; // eax@4  int v1; // [sp+Ch] [bp-B0h]@1  HKEY Type; // [sp+10h] [bp-ACh]@2  HKEY hKey; // [sp+14h] [bp-A8h]@1  char Dst; // [sp+1Ch] [bp-A0h]@1  int v5; // [sp+20h] [bp-9Ch]@2  int v6; // [sp+24h] [bp-98h]@2  int v7; // [sp+28h] [bp-94h]@2  unsigned __int8 v8; // [sp+2Ch] [bp-90h]@2  unsigned __int8 v9; // [sp+2Dh] [bp-8Fh]@2  unsigned __int8 v10; // [sp+2Eh] [bp-8Eh]@2  unsigned __int8 v11; // [sp+2Fh] [bp-8Dh]@2  unsigned __int8 v12; // [sp+30h] [bp-8Ch]@2  unsigned __int8 v13; // [sp+31h] [bp-8Bh]@2  unsigned __int8 v14; // [sp+32h] [bp-8Ah]@2  unsigned __int8 v15; // [sp+33h] [bp-89h]@2  char Src; // [sp+74h] [bp-48h]@1  wchar_t v17; // [sp+90h] [bp-2Ch]@1  char v18; // [sp+92h] [bp-2Ah]@1  unsigned int v19; // [sp+B8h] [bp-4h]@1  int v20; // [sp+BCh] [bp+0h]@1  v19 = (unsigned int)&v20 ^ dword_100C010;  memset(&Dst, 0, 0x58u);  memcpy(&Src, L"Lucida Console", 0x1Cu);  v17 = aLucidaConsole[14];  memset(&v18, 0, 0x24u);  v1 = 100;  if ( RegOpenKeyExW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Notepad", 0, 0x20019u, &hKey) )    hKey = 0;  lf.lfWidth = 0;  lf.lfEscapement = sub_100355B(hKey, L"lfEscapement", v5);  lf.lfOrientation = sub_100355B(hKey, L"lfOrientation", v6);  lf.lfWeight = sub_100355B(hKey, L"lfWeight", v7);  lf.lfItalic = sub_100355B(hKey, L"lfItalic", v8);  lf.lfUnderline = sub_100355B(hKey, L"lfUnderline", v9);  lf.lfStrikeOut = sub_100355B(hKey, L"lfStrikeOut", v10);  lf.lfCharSet = sub_100355B(hKey, L"lfCharSet", v11);  lf.lfOutPrecision = sub_100355B(hKey, L"lfOutPrecision", v12);  lf.lfClipPrecision = sub_100355B(hKey, L"lfClipPrecision", v13);  lf.lfQuality = sub_100355B(hKey, L"lfQuality", v14);  lf.lfPitchAndFamily = sub_100355B(hKey, L"lfPitchAndFamily", v15);  if ( !RegOpenKeyExW(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\Notepad\\DefaultFonts", 0, 0x20019u, &Type) )  {    sub_10035B0(Type, L"lfFaceName", L"Lucida Console", &Src, 0x20u);    v1 = sub_100355B(Type, L"iPointSize", 100);    RegCloseKey(Type);  }  sub_10035B0(hKey, L"lfFaceName", &Src, lf.lfFaceName, 0x20u);  *(_DWORD *)&Data = sub_100355B(hKey, L"iPointSize", v1);  wParam = sub_100355B(hKey, L"fWrap", 0);  *(_DWORD *)&dword_100C02C = sub_100355B(hKey, L"StatusBar", 0);  dword_100C060 = sub_100355B(hKey, L"fSaveWindowPositions", 0);  sub_10035B0(hKey, L"szHeader", &word_100C740, (void *)&word_100C740, 0x28u);  sub_10035B0(hKey, L"szTrailer", &::Dst, &::Dst, 0x28u);  stru_100C140.rtMargin.top = sub_100355B(hKey, L"iMarginTop", stru_100C140.rtMargin.top);  stru_100C140.rtMargin.bottom = sub_100355B(hKey, L"iMarginBottom", stru_100C140.rtMargin.bottom);  stru_100C140.rtMargin.left = sub_100355B(hKey, L"iMarginLeft", stru_100C140.rtMargin.left);  stru_100C140.rtMargin.right = sub_100355B(hKey, L"iMarginRight", stru_100C140.rtMargin.right);  Y = sub_100355B(hKey, L"iWindowPosY", -2147483648);  X = sub_100355B(hKey, L"iWindowPosX", -2147483648);  nWidth = sub_100355B(hKey, L"iWindowPosDX", -2147483648);  nHeight = sub_100355B(hKey, L"iWindowPosDY", -2147483648);  result = sub_100355B(hKey, L"fMLE_is_broken", 0);  dword_100C040 = result;  if ( hKey )    result = RegCloseKey(hKey);  return result;}// 1003538: using guessed type wchar_t aLucidaConsole[15];// 100C010: using guessed type int dword_100C010;// 100C040: using guessed type int dword_100C040;// 100C060: using guessed type int dword_100C060;//----- (0100355B) --------------------------------------------------------int __stdcall sub_100355B(HKEY hKey, LPCWSTR lpValueName, int a3){  int result; // eax@4  DWORD cbData; // [sp+0h] [bp-Ch]@1  BYTE Data[4]; // [sp+4h] [bp-8h]@1  DWORD Type; // [sp+8h] [bp-4h]@1  Type = 0;  *(_DWORD *)Data = 1;  cbData = 4;  if ( !hKey || RegQueryValueExW(hKey, lpValueName, 0, &Type, Data, &cbData) || Type != 4 )    result = a3;  else    result = *(_DWORD *)Data;  return result;}//----- (010035B0) --------------------------------------------------------__int32 __stdcall sub_10035B0(HKEY Type, LPCWSTR lpValueName, const void *Src, void *Dst, DWORD cbData){  size_t v5; // esi@1  __int32 result; // eax@2  v5 = 2 * cbData;  cbData *= 2;  if ( !Type    || (result = RegQueryValueExW(Type, lpValueName, 0, (LPDWORD)&Type, (LPBYTE)Dst, &cbData)) != 0    || Type != (HKEY)1 )    result = (__int32)memcpy(Dst, Src, v5);  return result;}//----- (0100360C) --------------------------------------------------------const WCHAR *__cdecl sub_100360C(LPCWSTR lpsz){  const WCHAR *result; // eax@1  const WCHAR v2; // cx@1  bool i; // esi@1  result = lpsz;  v2 = *lpsz;  for ( i = 0; *result; v2 = *result )  {    if ( (v2 == 32 || v2 == 9) && !i )      break;    if ( v2 == 34 )      i = i == 0;    result = CharNextW(result);  }  while ( *result == 32 || *result == 9 )    ++result;  return result;}//----- (01003660) --------------------------------------------------------int __cdecl sub_1003660(unsigned int a1, unsigned int a2){  int result; // eax@1  unsigned int v3; // esi@1  v3 = a1;  result = 0;  while ( v3 < a2 && !result )  {    if ( *(_DWORD *)v3 )      result = (*(int (**)(void))v3)();    v3 += 4;  }  return result;}//----- (01003689) --------------------------------------------------------int __usercall start<eax>(int a1<ebp>){  int v1; // eax@23  signed int v2; // ebx@1  LONG v3; // esi@1  LONG v4; // eax@2  signed int v5; // esi@3  void *i; // esi@12  unsigned __int8 v7; // al@13  sub_1003053();  sub_1003B0C((int)dword_10037A0, 88);  v2 = 0;  *(_DWORD *)(a1 - 28) = 0;  *(_DWORD *)(a1 - 4) = 0;  GetStartupInfoA((LPSTARTUPINFOA)(a1 - 104));  *(_DWORD *)(a1 - 4) = -2;  *(_DWORD *)(a1 - 4) = 1;  v3 = *(_DWORD *)(*MK_FP(__FS__, 24) + 4);  while ( 1 )  {    v4 = InterlockedCompareExchange(&Destination, v3, 0);    if ( !v4 )    {      v5 = 1;      goto LABEL_4;    }    if ( v4 == v3 )      break;    Sleep(0x3E8u);  }  v5 = 1;  v2 = 1;LABEL_4:  if ( dword_100C0A4 == v5 )  {    amsg_exit(31);  }  else  {    if ( dword_100C0A4 )    {      dword_100D7A8 = v5;    }    else    {      dword_100C0A4 = v5;      if ( sub_1003660((unsigned int)dword_1003790, (unsigned int)dword_100379C) )      {        *(_DWORD *)(a1 - 4) = -2;        return sub_10023D0(a1);      }    }  }  if ( dword_100C0A4 == v5 )  {    initterm(dword_1003784, dword_100378C);    dword_100C0A4 = 2;  }  if ( !v2 )    InterlockedExchange(&Destination, 0);  if ( dword_100CD0C )  {    if ( sub_1009E73(a1) )      dword_100CD0C(&dword_100CD0C);  }  for ( i = acmdln; ; i = (char *)i + 1 )  {    *(_DWORD *)(a1 - 32) = i;    v7 = *(_BYTE *)i;    if ( *(_BYTE *)i <= 0x20u )    {      if ( !v7 || !*(_DWORD *)(a1 - 28) )        break;    }    if ( v7 == 34 )      *(_DWORD *)(a1 - 28) = *(_DWORD *)(a1 - 28) == 0;    if ( ismbblead(v7) )    {      i = (char *)i + 1;      *(_DWORD *)(a1 - 32) = i;    }  }  while ( *(_BYTE *)i && *(_BYTE *)i <= 0x20u )  {    i = (char *)i + 1;    *(_DWORD *)(a1 - 32) = i;  }  *(_BYTE *)(a1 - 60) & 1;  v1 = sub_1001405((HINSTANCE)0x1000000);  dword_100C070 = v1;  if ( !dword_100C064 )    exit(v1);  if ( !dword_100D7A8 )    cexit();  *(_DWORD *)(a1 - 4) = -2;  return sub_10023D0(a1);}// 1001310: using guessed type void *acmdln;// 1001318: using guessed type int __cdecl ismbblead(_DWORD);// 1001324: using guessed type int cexit(void);// 10023D0: using guessed type _DWORD __usercall sub_10023D0<eax>(_DWORD ebp0<ebp>);// 1003040: using guessed type int __cdecl initterm(_DWORD, _DWORD);// 1003784: using guessed type int dword_1003784();// 100378C: using guessed type int dword_100378C();// 1003790: using guessed type int dword_1003790();// 100379C: using guessed type int dword_100379C();// 10037A0: using guessed type int dword_10037A0();// 1009F01: using guessed type int __cdecl amsg_exit(_DWORD);// 100C064: using guessed type int dword_100C064;// 100C070: using guessed type int dword_100C070;// 100C0A4: using guessed type int dword_100C0A4;// 100CD0C: using guessed type int (__thiscall *dword_100CD0C)(_DWORD);// 100D7A8: using guessed type int dword_100D7A8;//----- (010037EF) --------------------------------------------------------ATOM __usercall sub_10037EF<ax>(HINSTANCE a1<esi>){  WNDCLASSEXW v2; // [sp+0h] [bp-30h]@1  memset(&v2.style, 0, 0x2Cu);  v2.cbSize = 48;  v2.hCursor = LoadCursorW(0, (LPCWSTR)0x7F01);  v2.hIcon = LoadIconW(a1, (LPCWSTR)2);  v2.hIconSm = LoadImageW(a1, (LPCWSTR)2, 1u, 16, 16, 0);  v2.lpszMenuName = (LPCWSTR)1;  v2.hInstance = a1;  v2.lpszClassName = L"Notepad";  v2.lpfnWndProc = (WNDPROC)sub_10014DE;  v2.hbrBackground = (HBRUSH)6;  return RegisterClassExW(&v2);}//----- (01003881) --------------------------------------------------------HLOCAL __stdcall sub_1003881(HINSTANCE hInstance){  HLOCAL result; // eax@1  WCHAR *v2; // esi@2  int v3; // ebx@3  UINT **v4; // edi@4  int v5; // eax@5  result = (HLOCAL)sub_100392D(hInstance);  if ( result )  {    result = LocalAlloc(0x40u, 2 * (_DWORD)result);    v2 = (WCHAR *)result;    if ( result )    {      v3 = LocalSize(result) >> 1;      if ( v3 )      {        v4 = (UINT **)off_100C920;        while ( 1 )        {          v5 = LoadStringW(hInstance, **v4, v2, v3) + 1;          **v4 = (UINT)v2;          v2 += v5;          if ( v5 > v3 )            break;          ++v4;          v3 -= v5;          if ( (signed int)v4 >= (signed int)&unk_100C9DC )          {            sub_1002558((int)&word_100C740, 0x28u, dword_100C2F8);            sub_1002558((int)&Dst, 0x28u, dword_100C2FC);            word_100C000 = *(_WORD *)dword_100C2F0;            return (HLOCAL)1;          }        }        result = 0;      }      else      {        result = 0;      }    }  }  return result;}// 100C000: using guessed type __int16 word_100C000;// 100C2F0: using guessed type int dword_100C2F0;// 100C2F8: using guessed type int dword_100C2F8;// 100C2FC: using guessed type int dword_100C2FC;// 100C920: using guessed type int off_100C920[2];//----- (0100392D) --------------------------------------------------------int __stdcall sub_100392D(HINSTANCE hInstance){  int v1; // esi@1  int v2; // ebx@3  signed int v3; // edi@3  int v4; // eax@4  SIZE_T i; // [sp-4h] [bp-14h]@1  WCHAR *v7; // [sp+Ch] [bp-4h]@2  v1 = 280;  for ( i = 560; ; i = 2 * v1 )  {    v7 = (WCHAR *)LocalAlloc(0x40u, i);    if ( !v7 )      break;    v3 = 0;    v2 = 0;    do    {      v4 = LoadStringW(hInstance, *(_DWORD *)off_100C920[v3], v7, v1);      if ( v4 >= v1 - 1 )        break;      ++v3;      v2 += v4 + 1;    }    while ( v3 < 47 );    LocalFree(v7);    if ( v3 >= 47 )      return v2;    v1 *= 2;  }  return 0;}// 100C920: using guessed type int off_100C920[2];//----- (01003A48) --------------------------------------------------------unsigned int __cdecl sub_1003A48(){  return controlfp(0x10000u, 0x30000u);}//----- (01003A60) --------------------------------------------------------signed int __cdecl sub_1003A60(signed int a1){  int v1; // eax@1  int ebp0; // ebp@0  int v3; // eax@2  __int16 v4; // ax@3  signed int result; // eax@4  v1 = (int)GetModuleHandleA(0);  if ( !v1 || (v3 = sub_1003A98(ebp0, v1), !v3) )    goto LABEL_10;  v4 = *(_WORD *)(v3 + 92);  if ( v4 == 2 )    return 2;  if ( v4 == 3 )    result = 1;  elseLABEL_10:    result = a1;  return result;}//----- (01003A98) --------------------------------------------------------int __userpurge sub_1003A98<eax>(int a1<ebp>, int a2){  int v2; // ecx@1  unsigned int v3; // edx@4  sub_1003B0C((int)dword_1003AF0, 12);  v2 = *(_DWORD *)(a1 + 8);  if ( v2 )  {    if ( v2 != -1 )    {      *(_DWORD *)(a1 - 4) = 0;      if ( *(_WORD *)v2 == 23117 )      {        v3 = *(_DWORD *)(v2 + 60);        if ( (signed int)v3 >= 0 )        {          if ( v3 < 0x10000000 )          {            *(_DWORD *)(a1 - 28) = v3 + v2;            if ( *(_DWORD *)(v3 + v2) != 17744 )              *(_DWORD *)(a1 - 28) = 0;          }        }      }      *(_DWORD *)(a1 - 4) = -2;    }  }  return sub_10023D0(a1);}// 10023D0: using guessed type _DWORD __usercall sub_10023D0<eax>(_DWORD ebp0<ebp>);// 1003AF0: using guessed type int dword_1003AF0[2];//----- (01003B0C) --------------------------------------------------------char *__cdecl sub_1003B0C(int a1, int a2){  void *v3; // esp@1  char v4; // [sp-8h] [bp-8h]@1  v3 = alloca(a2);  return &v4;}//----- (01003BCD) --------------------------------------------------------int __stdcall sub_1003BCD(int a1, int a2, int a3, int a4){  int v4; // edi@1  int v5; // esi@1  v5 = a2;  v4 = (*(int (__stdcall **)(int, int))(*(_DWORD *)a2 + 68))(a2, a3);  if ( v4 >= 0 )  {    v4 = (*(int (__stdcall **)(int, _DWORD))(*(_DWORD *)v5 + 88))(v5, L"txt");    if ( v4 >= 0 )    {      v4 = sub_1003D1B(v5);      if ( v4 >= 0 )      {        v4 = (*(int (__stdcall **)(int, int *))(*(_DWORD *)v5 + 40))(v5, &a3);        if ( v4 >= 0 )        {          v4 = (*(int (__stdcall **)(int, int))(*(_DWORD *)v5 + 36))(v5, a3 | 0x40);          if ( v4 >= 0 )          {            v4 = (*(int (__stdcall **)(int, int))(*(_DWORD *)v5 + 12))(v5, a1);            if ( v4 >= 0 )            {              v4 = (*(int (__stdcall **)(int, int *))(*(_DWORD *)v5 + 80))(v5, &a2);              if ( v4 >= 0 )              {                v4 = (*(int (__stdcall **)(int, signed int, int))(*(_DWORD *)a2 + 20))(a2, -2147123200, a4);                (*(void (__stdcall **)(int))(*(_DWORD *)a2 + 8))(a2);              }            }          }        }      }    }  }  return v4;}// 1003C6C: using guessed type wchar_t aTxt[4];//----- (01003C46) --------------------------------------------------------int __stdcall sub_1003C46(int a1){  int result; // eax@3  if ( a1 == -2147024882 )    result = MessageBoxW(hWnd, lpText, szApp, 0x1010u);  return result;}//----- (01003C61) --------------------------------------------------------signed int __stdcall sub_1003C61(int a1, int a2){  return -2147467263;}//----- (01003C89) --------------------------------------------------------int __userpurge sub_1003C89<eax>(int a1<ebx>, int a2){  int v2; // edi@1  v2 = (*(int (__stdcall **)(int, signed int, int))(*(_DWORD *)a2 + 104))(a2, 2, dword_100C368);  if ( v2 >= 0 )  {    v2 = (*(int (__stdcall **)(int, signed int, int))(*(_DWORD *)a2 + 24))(a2, 1, a1);    if ( v2 >= 0 )    {      v2 = (*(int (__stdcall **)(int, signed int, _DWORD, LPARAM))(*(_DWORD *)a2 + 76))(a2, 1, 0, dword_100C334);      if ( v2 >= 0 )      {        v2 = (*(int (__stdcall **)(int, signed int, signed int, LPARAM))(*(_DWORD *)a2 + 76))(a2, 1, 1, dword_100C338);        if ( v2 >= 0 )        {          v2 = (*(int (__stdcall **)(_DWORD, _DWORD, signed int, LPARAM))(*(_DWORD *)a2 + 76))(a2, 1, 2, dword_100C33C);          if ( v2 >= 0 )            v2 = (*(int (__stdcall **)(_DWORD, _DWORD, signed int, LPARAM))(*(_DWORD *)a2 + 76))(                   a2,                   1,                   3,                   dword_100C340);        }      }    }    (*(void (__cdecl **)(int))(*(_DWORD *)a2 + 108))(a2);  }  return v2;}// 1003C89: could not find valid save-restore pair for ebx// 100C368: using guessed type int dword_100C368;//----- (01003D1B) --------------------------------------------------------int __stdcall sub_1003D1B(int a1){  int v2; // ecx@1  int v3; // [sp+0h] [bp-10h]@1  int v4; // [sp+4h] [bp-Ch]@1  int v5; // [sp+8h] [bp-8h]@1  int v6; // [sp+Ch] [bp-4h]@1  v3 = *(_DWORD *)Args;  v5 = dword_100C308;  v2 = *(_DWORD *)a1;  v4 = (int)L"*.txt";  v6 = (int)L"*.*";  return (*(int (__stdcall **)(int, signed int, int *))(v2 + 16))(a1, 2, &v3);}// 1003D54: using guessed type wchar_t a_[4];// 100C308: using guessed type int dword_100C308;//----- (01003D6D) --------------------------------------------------------int __stdcall sub_1003D6D(int a1, LPCWSTR pszPath, int a3, int a4){  int v4; // esi@1  LPVOID v6; // eax@12  int v7; // [sp+Ch] [bp-8h]@2  LPVOID ppv; // [sp+10h] [bp-4h]@1  ppv = 0;  v4 = CoCreateInstance(&rclsid, 0, 1u, &riid, &ppv);  if ( v4 >= 0 )  {    *(_DWORD *)a3 = 0;    v7 = 0;    dword_100C038 = 1;    (*(void (__stdcall **)(LPVOID, _DWORD, _DWORD))(*(_DWORD *)ppv + 116))(ppv, 0, 0);    v4 = (**(int (__stdcall ***)(LPVOID, _DWORD, int *))ppv)(ppv, dword_1003C74, &v7);    if ( v4 >= 0 )    {      v4 = sub_1003C89(1, v7);      if ( v4 >= 0 )      {        v4 = (*(int (__stdcall **)(int, signed int, int))(*(_DWORD *)v7 + 100))(               v7,               1,               dword_100C00C != -1 ? dword_100C00C : 0);        if ( v4 >= 0 )        {          sub_1003E75((int)ppv, pszPath);          v4 = sub_1003BCD(a1, (int)ppv, dword_100C310, a3);          if ( v4 >= 0 )          {            v4 = (*(int (__stdcall **)(int, signed int, int *))(*(_DWORD *)v7 + 96))(v7, 1, &a3);            if ( v4 >= 0 )              dword_100E040 = a3;          }        }      }      (*(void (__stdcall **)(int))(*(_DWORD *)v7 + 8))(v7);      if ( v4 >= 0 )      {        if ( a4 )        {          v6 = ppv;          *(_DWORD *)a4 = ppv;          (*(void (__stdcall **)(LPVOID))(*(_DWORD *)v6 + 4))(v6);        }      }    }    (*(void (__stdcall **)(LPVOID))(*(_DWORD *)ppv + 8))(ppv);    dword_100C038 = 0;  }  return v4;}// 1003C74: using guessed type int dword_1003C74[5];// 100C00C: using guessed type int dword_100C00C;// 100C038: using guessed type int dword_100C038;// 100C310: using guessed type int dword_100C310;// 100E040: using guessed type int dword_100E040;//----- (01003E75) --------------------------------------------------------int __stdcall sub_1003E75(int a1, LPCWSTR pszPath){  int v2; // esi@2  if ( PathIsFileSpecW(pszPath) )  {    v2 = (*(int (__stdcall **)(int, LPCWSTR))(*(_DWORD *)a1 + 60))(a1, pszPath);  }  else  {    v2 = SHCreateItemFromParsingName(pszPath, 0, dword_1004AF0, &pszPath);    if ( v2 >= 0 )    {      v2 = (*(int (__stdcall **)(int, LPCWSTR))(*(_DWORD *)a1 + 108))(a1, pszPath);      (*(void (__stdcall **)(LPCWSTR))(*(_DWORD *)pszPath + 8))(pszPath);    }  }  return v2;}// 100136C: using guessed type int __stdcall SHCreateItemFromParsingName(_DWORD, _DWORD, _DWORD, _DWORD);// 1004AF0: using guessed type int dword_1004AF0[4];//----- (01003EA6) --------------------------------------------------------LONG __stdcall sub_1003EA6(int a1){  LONG v1; // edi@1  v1 = InterlockedDecrement((volatile LONG *)(a1 + 8));  if ( !v1 )    LocalFree((HLOCAL)a1);  return v1;}//----- (01003F21) --------------------------------------------------------int __userpurge sub_1003F21<eax>(int a1<ebx>, int a2, int a3){  int v3; // esi@1  int v5; // [sp+4h] [bp-10h]@6  int v6; // [sp+8h] [bp-Ch]@5  int v7; // [sp+Ch] [bp-8h]@2  LPVOID ppv; // [sp+10h] [bp-4h]@1  ppv = 0;  v3 = CoCreateInstance(&stru_100401C, 0, 1u, &stru_100400C, &ppv);  if ( v3 >= 0 )  {    v7 = 0;    v3 = (**(int (__stdcall ***)(LPVOID, _DWORD, int *))ppv)(ppv, dword_1003C74, &v7);    if ( v3 >= 0 )    {      v3 = sub_1003C89(a1, v7);      if ( v3 >= 0 )      {        v3 = (*(int (__stdcall **)(int, signed int, int))(*(_DWORD *)v7 + 100))(               v7,               1,               dword_100C00C != -1 ? dword_100C00C : 0);        if ( v3 >= 0 )        {          v3 = sub_100405A((int)sub_1004038, (int)&v6);          if ( v3 >= 0 )          {            v3 = (*(int (__stdcall **)(LPVOID, int, int *))(*(_DWORD *)ppv + 28))(ppv, v6, &v5);            if ( v3 >= 0 )            {              v3 = sub_1003BCD(a2, (int)ppv, dword_100C30C, a3);              (*(void (__stdcall **)(LPVOID, int))(*(_DWORD *)ppv + 32))(ppv, v5);            }            (*(void (__stdcall **)(int))(*(_DWORD *)v6 + 8))(v6);          }        }      }      (*(void (__stdcall **)(int))(*(_DWORD *)v7 + 8))(v7);    }    (*(void (__stdcall **)(LPVOID))(*(_DWORD *)ppv + 8))(ppv);  }  return v3;}// 1003C74: using guessed type int dword_1003C74[5];// 100C00C: using guessed type int dword_100C00C;// 100C30C: using guessed type int dword_100C30C;//----- (01004038) --------------------------------------------------------double __userpurge sub_1004038<st0>(int a1<eax>, int a2<ebp>, int a3<esi>, double result<st0>, int a5, int a6, int a7){  *(_DWORD *)a1 = (signed int)result;  *(_DWORD *)(a2 + 117) = a3;  return result;}//----- (0100405A) --------------------------------------------------------signed int __stdcall sub_100405A(int a1, int a2){  return sub_1004073(a2, a1);}//----- (01004073) --------------------------------------------------------signed int __stdcall sub_1004073(int a1, int a2){  int v2; // eax@1  signed int v3; // edi@1  int v4; // esi@1  v3 = -2147024882;  v2 = (int)LocalAlloc(0x40u, 0xCu);  v4 = v2;  if ( v2 )  {    *(_DWORD *)v2 = &off_100C288;    *(_DWORD *)(v2 + 4) = &off_100C26C;    *(_DWORD *)(v2 + 8) = 1;    v3 = sub_10040C4(v2, a2, a1);    sub_1003EA6(v4);  }  return v3;}// 100C26C: using guessed type int (__stdcall *off_100C26C)(int, int, int);// 100C288: using guessed type int (__stdcall *off_100C288)(int, int, int);//----- (010040C4) --------------------------------------------------------signed int __stdcall sub_10040C4(int a1, int a2, int a3){  char v3; // zf@1  signed int v4; // ecx@1  double (__userpurge *v5)<st0>(int<eax>, int<ebp>, int<esi>, double<st0>, int, int, int); // edi@1  int v6; // esi@1  int v7; // eax@6  char v9; // zf@9  signed int v10; // ecx@9  int v11; // edi@9  int v12; // esi@9  char v13; // zf@14  signed int v14; // ecx@14  int v15; // edi@14  int v16; // esi@14  v6 = a2;  v4 = 4;  v5 = sub_1004038;  v3 = 1;  do  {    if ( !v4 )      break;    v3 = *(_DWORD *)v6 == *(_DWORD *)v5;    v6 += 4;    v5 = (double (__userpurge *)<st0>(int<eax>, int<ebp>, int<esi>, double<st0>, int, int, int))((char *)v5 + 4);    --v4;  }  while ( v3 );  if ( v3 )    goto LABEL_23;  v12 = a2;  v10 = 4;  v11 = (int)dword_1004A04;  v9 = 1;  do  {    if ( !v10 )      break;    v9 = *(_DWORD *)v12 == *(_DWORD *)v11;    v12 += 4;    v11 += 4;    --v10;  }  while ( v9 );  if ( v9 )  {LABEL_23:    v7 = a1;    *(_DWORD *)a3 = a1;LABEL_7:    sub_10040FB(v7);    return 0;  }  v16 = a2;  v14 = 4;  v15 = (int)dword_10049F4;  v13 = 1;  do  {    if ( !v14 )      break;    v13 = *(_DWORD *)v16 == *(_DWORD *)v15;    v16 += 4;    v15 += 4;    --v14;  }  while ( v13 );  if ( v13 )  {    v7 = a1;    *(_DWORD *)a3 = a1 + 4;    goto LABEL_7;  }  *(_DWORD *)a3 = 0;  return -2147467262;}// 10049F4: using guessed type int dword_10049F4[4];// 1004A04: using guessed type int dword_1004A04[2];//----- (010040FB) --------------------------------------------------------LONG __stdcall sub_10040FB(int a1){  return InterlockedIncrement((volatile LONG *)(a1 + 8));}//----- (01004116) --------------------------------------------------------int __stdcall sub_1004116(int a1){  int result; // eax@1  WCHAR *v2; // ecx@12  DWORD v3; // eax@12  const WCHAR *v4; // eax@14  WCHAR Buffer; // [sp+0h] [bp-324h]@12  unsigned int v6; // [sp+320h] [bp-4h]@1  int v7; // [sp+324h] [bp+0h]@1  v6 = (unsigned int)&v7 ^ dword_100C010;  result = sub_100414E(a1);  if ( result )  {    if ( result != -2 )    {      if ( result != -3 )      {        if ( result == -4 )          result = 112;        if ( result == -5 )          result = 14;        if ( result == -1 )          result = GetLastError();        if ( result )        {          v3 = FormatMessageW(0x1200u, 0, result, 0, &Buffer, 0x190u, 0);          v2 = (WCHAR *)dword_100C2DC;          if ( v3 )            v2 = &Buffer;          v4 = lpString2;          if ( !dword_100C008 )            v4 = &FileName;          result = sub_1007051(hWnd, szApp, v2, v4, 0x30u);        }      }    }  }  return result;}// 100C008: using guessed type int dword_100C008;// 100C010: using guessed type int dword_100C010;//----- (0100414E) --------------------------------------------------------signed int __stdcall sub_100414E(int a1){  signed int v1; // eax@2  signed int result; // eax@4  SetCursor(hCursor);  if ( a1 )  {    if ( a1 == 2 )      v1 = sub_1008987();    else      v1 = sub_10088B6();  }  else  {    v1 = sub_1004194();  }  if ( v1 == -1 )  {    SetCursor(dword_100C094);    result = 0;  }  else  {    result = sub_100900D((HDC)v1);  }  return result;}//----- (01004194) --------------------------------------------------------int __cdecl sub_1004194(){  int Dst; // [sp+Ch] [bp-58h]@3  HWND v2; // [sp+10h] [bp-54h]@3  HGLOBAL v3; // [sp+14h] [bp-50h]@4  HGLOBAL v4; // [sp+18h] [bp-4Ch]@6  int v5; // [sp+1Ch] [bp-48h]@11  int v6; // [sp+20h] [bp-44h]@3  int v7; // [sp+58h] [bp-Ch]@3  int v8; // [sp+5Ch] [bp-8h]@8  int v9; // [sp+60h] [bp-4h]@7  if ( !stru_100C140.hDevNames )  {    stru_100C140.Flags |= 0x480u;    PageSetupDlgW(&stru_100C140);    stru_100C140.Flags &= 0xFFFFFB7Fu;  }  memset(&Dst, 0, 0x54u);  v7 = -1;  v2 = hWnd;  Dst = 84;  v6 = 8651020;  if ( stru_100C140.hDevMode )    v3 = stru_100C140.hDevMode;  if ( stru_100C140.hDevNames )    v4 = stru_100C140.hDevNames;  v9 = -1;  if ( !PrintDlgExW((LPPRINTDLGEXW)&Dst) )  {    if ( v8 == 1 )    {      v9 = v5;    }    else    {      if ( v8 != 2 )        return v9;    }    if ( !stru_100C140.hDevMode )    {      stru_100C140.Flags |= 0x480u;      PageSetupDlgW(&stru_100C140);      stru_100C140.Flags &= 0xFFFFFB7Fu;    }    stru_100C140.hDevMode = v3;    stru_100C140.hDevNames = v4;  }  return v9;}//----- (01004240) --------------------------------------------------------signed int __stdcall sub_1004240(HWND hDlg, int a2, int a3, int a4){  int v5; // edi@5  WCHAR *v6; // esi@5  const WCHAR *v7; // ebx@8  int v8; // edi@8  if ( a2 == 2 )  {    v5 = 30;    v6 = &word_100C6A0;    do    {      GetDlgItemTextW(hDlg, v5, v6, 40);      v6 += 40;      ++v5;    }    while ( (signed int)v6 <= (signed int)&unk_100C6F0 );    return 0;  }  if ( a2 != 272 )    return 0;  v8 = 30;  v7 = &word_100C740;  do  {    SendDlgItemMessageW(hDlg, v8, 0xC5u, 0x27u, 0);    SetDlgItemTextW(hDlg, v8, v7);    v7 += 40;    ++v8;  }  while ( (signed int)v7 <= (signed int)&Dst );  SendDlgItemMessageW(hDlg, 30, 0xB1u, 0, 2555904);  return 1;}//----- (0100432B) --------------------------------------------------------DWORD __cdecl sub_100432B(){  DWORD result; // eax@1  unsigned int v1; // edx@3  wchar_t *v2; // ecx@3  wchar_t Dest; // [sp+0h] [bp-194h]@8  unsigned int v4; // [sp+190h] [bp-4h]@1  int v5; // [sp+194h] [bp+0h]@1  v4 = (unsigned int)&v5 ^ dword_100C010;  result = CommDlgExtendedError();  if ( result )  {    v2 = 0;    v1 = 0;    do    {      if ( result == *(int *)((char *)&dword_100CD10 + v1) )        v2 = (wchar_t *)**(int **)((char *)&off_100CD14 + v1);      v1 += 8;    }    while ( v1 < 0x40 );    if ( !v2 )    {      sub_10015C3(&Dest, 0xC8u, dword_100C328, result);      v2 = &Dest;    }    if ( *v2 )      MessageBoxW(hWnd, v2, szApp, 0x1010u);    result = 1;  }  return result;}// 100C010: using guessed type int dword_100C010;// 100CD10: using guessed type int dword_100CD10;// 100CD14: using guessed type int *off_100CD14;//----- (010043F5) --------------------------------------------------------int __stdcall sub_10043F5(int a1, int a2){  int v2; // ecx@2  int result; // eax@3  if ( !a2 || (v2 = a2, !*(_WORD *)a2) )    v2 = (int)L"(null)";  result = a1;  *(_DWORD *)(a1 + 4) = v2;  *(_DWORD *)a1 = 2;  return result;}// 1004420: using guessed type wchar_t aNull[7];//----- (0100449D) --------------------------------------------------------HRESULT __thiscall sub_100449D(void *this){  HRESULT result; // eax@1  OLECHAR *v2; // esi@2  LPVOID ppv; // [sp+0h] [bp-4h]@1  ppv = this;  result = CoCreateInstance(&stru_10043E0, 0, 0x17u, &stru_10043D0, &ppv);  if ( result >= 0 )  {    sub_10045A7((int)L"HELP_ENTRY_ID_NOTEPAD_HELP");    v2 = SysAllocString(L"mshelp://windows/?id=5d18d5fb-e737-4a73-b6cc-dccc63720231");    if ( v2 )    {      (*(void (__stdcall **)(_DWORD, _DWORD))(*(_DWORD *)ppv + 12))(ppv, v2);      SysFreeString(v2);    }    result = (*(int (__stdcall **)(_DWORD))(*(_DWORD *)ppv + 8))(ppv);  }  return result;}// 100456C: using guessed type wchar_t aHelp_entry_id_[27];//----- (010045A7) --------------------------------------------------------int __stdcall sub_10045A7(int a1){  int v2; // [sp+4h] [bp-8h]@1  int v3; // [sp+8h] [bp-4h]@1  v2 = 0;  v3 = 0;  sub_10043F5((int)&v2, a1);  return WinSqmAddToStream(0, 911, 1, &v2);}// 10045E1: using guessed type int __stdcall WinSqmAddToStream(_DWORD, _DWORD, _DWORD, _DWORD);//----- (01004628) --------------------------------------------------------int __stdcall sub_1004628(LPCWSTR lpString){  int v1; // edi@1  int v2; // eax@4  void *v3; // edi@4  int v4; // esi@4  int v6; // [sp+Ch] [bp-868h]@1  HWND Dst; // [sp+10h] [bp-864h]@1  HINSTANCE v8; // [sp+14h] [bp-860h]@1  int v9; // [sp+1Ch] [bp-858h]@1  int v10; // [sp+20h] [bp-854h]@1  void *v11; // [sp+28h] [bp-84Ch]@5  int v12; // [sp+30h] [bp-844h]@1  int v13; // [sp+34h] [bp-840h]@1  int v14; // [sp+6Ch] [bp-808h]@5  WCHAR String; // [sp+70h] [bp-804h]@1  unsigned int v16; // [sp+870h] [bp-4h]@1  int v17; // [sp+874h] [bp+0h]@1  v16 = (unsigned int)&v17 ^ dword_100C010;  v1 = 0;  memset(&Dst, 0, 0x5Cu);  Dst = hWnd;  v6 = 96;  v8 = hInstance;  v9 = 8;  v10 = 3000;  v12 = 2;  v13 = (int)dword_1004748;  if ( !LoadStringW(hInstance, 0xBB9u, &String, 1024) )    goto LABEL_12;  if ( lpString )    v1 = lstrlenW(lpString);  v4 = lstrlenW(&String) + v1 + 1;  v2 = (int)LocalAlloc(0x40u, 2 * v4);  v3 = (void *)v2;  if ( v2 )  {    sub_10047BA((int)&String, (int)lpString, v2, v4);    v11 = v3;    if ( COMCTL32_345(&v6, &v14, 0, 0) < 0 )      v14 = 6;    LocalFree(v3);  }  else  {LABEL_12:    v14 = 6;  }  return v14;}// 10013C8: using guessed type int __stdcall COMCTL32_345(_DWORD, _DWORD, _DWORD, _DWORD);// 1004748: using guessed type int dword_1004748[4];// 100C010: using guessed type int dword_100C010;//----- (0100478B) --------------------------------------------------------LSTATUS __stdcall sub_100478B(HKEY hKey, LPCWSTR lpValueName, LPCWSTR lpData){  int v4; // eax@1  v4 = lstrlenW(lpData);  return RegSetValueExW(hKey, lpValueName, 0, 1u, (const BYTE *)lpData, 2 * v4 + 2);}//----- (010047BA) --------------------------------------------------------signed int __stdcall sub_10047BA(int a1, int a2, int a3, int a4){  int v4; // eax@1  int v5; // ecx@1  int v6; // ebx@1  unsigned int v7; // edi@1  __int16 v8; // dx@4  int v10; // esi@6  int v11; // ecx@7  v5 = a1;  v4 = a3;  v7 = 0;  v6 = a4 - 1;  while ( *(_WORD *)v5 != word_100C000 && v7 < v6 )  {    *(_WORD *)v4 = *(_WORD *)v5;    v8 = *(_WORD *)v5;    v4 += 2;    ++v7;    v5 += 2;    if ( !v8 )      return 0;  }  v10 = a2;  if ( a2 )  {    while ( *(_WORD *)v10 && v7 < v6 )    {      *(_WORD *)v4 = *(_WORD *)v10;      v4 += 2;      v10 += 2;      ++v7;    }  }  v11 = v5 + 4;  while ( *(_WORD *)v11 && v7 < v6 )  {    *(_WORD *)v4 = *(_WORD *)v11;    v4 += 2;    v11 += 2;    ++v7;  }  *(_WORD *)v4 = 0;  return 1;}// 100C000: using guessed type __int16 word_100C000;//----- (0100498E) --------------------------------------------------------LSTATUS __stdcall sub_100498E(HKEY hKey, LPCWSTR lpValueName, BYTE Data){  return RegSetValueExW(hKey, lpValueName, 0, 4u, &Data, 4u);}//----- (010056E3) --------------------------------------------------------void __usercall sub_10056E3(struct _SECURITY_ATTRIBUTES *a1<ebx>, int a2<ebp>, int a3<esi>){  HANDLE v3; // ST18_4@1  DWORD v4; // eax@2  int v5; // eax@3  int v6; // eax@4  const WCHAR *v7; // eax@6  int v8; // [sp+0h] [bp-4h]@13  hFile = CreateFileW((LPCWSTR)a3, 0x80000000u, 3u, a1, 3u, 0x80u, v3);  if ( hFile == (HANDLE)-1 )  {    v4 = GetLastError() - 2;    if ( v4 )    {      v5 = v4 - 3;      if ( v5 && (v6 = v5 - 60) != 0 )      {        if ( v6 == 58 )          v7 = (const WCHAR *)dword_100C2E0;        else          v7 = dword_100C2B0;      }      else      {        v7 = dword_100C31C;      }    }    else    {      v7 = dword_100C2B4;    }    sub_1007051(hWnd, szApp, v7, (LPCWSTR)a3, 0x30u);  }  else  {    sub_1002820(a2, a3, dword_100C05C);    if ( *(struct _SECURITY_ATTRIBUTES **)(a2 - 4) == a1 )      v8 = 2;    else      v8 = 1;    sub_1004116(v8);  }  JUMPOUT(*(unsigned int *)loc_100266D);}// 100266D: using guessed type int __stdcall loc_100266D(int, int nCmdShow);// 100C05C: using guessed type int dword_100C05C;// 100C2E0: using guessed type int dword_100C2E0;//----- (010058A7) --------------------------------------------------------void __stdcall sub_10058A7(int a1, int a2){  LPCWSTR v2; // ST14_4@1  sub_1007BF6(v2);  JUMPOUT(*(unsigned int *)loc_1002B3F);}// 1002B3F: using guessed type int __stdcall loc_1002B3F(int, int);//----- (01005D2A) --------------------------------------------------------void __usercall sub_1005D2A(int a1<ebp>, HWND a2<edi>){  signed int v2; // ebx@1  HANDLE v3; // eax@1  SC_HANDLE v4; // eax@4  SC_HANDLE v5; // eax@5  SIZE_T v6; // ST14_4@8  HANDLE v7; // eax@8  LPVOID v8; // eax@8  void *v9; // ST14_4@13  HANDLE v10; // eax@13  SC_HANDLE v11; // eax@16  SC_HANDLE v12; // eax@17  struct _QUERY_SERVICE_CONFIGW *v13; // eax@20  SIZE_T v14; // ST14_4@20  HANDLE v15; // eax@20  void *v16; // ST14_4@25  HANDLE v17; // eax@25  DWORD v18; // eax@32  void *v19; // eax@33  const void *v20; // ebx@33  SIZE_T v21; // ST14_4@33  HANDLE v22; // eax@33  size_t v23; // ST14_4@39  const wchar_t *v24; // ST10_4@39  wchar_t *v25; // eax@39  HANDLE v26; // eax@41  DWORD v27; // eax@45  DWORD v28; // ebx@45  void *v29; // eax@46  SIZE_T v30; // ST14_4@46  HANDLE v31; // eax@46  size_t v32; // ST14_4@52  const wchar_t *v33; // ST10_4@52  wchar_t *v34; // eax@52  void *v35; // ST14_4@54  HANDLE v36; // eax@54  DWORD v37; // eax@58  DWORD v38; // ebx@58  void *v39; // eax@59  SIZE_T v40; // ST14_4@59  HANDLE v41; // eax@59  size_t v42; // ST14_4@65  const wchar_t *v43; // ST10_4@65  wchar_t *v44; // eax@65  void *v45; // ST14_4@67  HANDLE v46; // eax@67  signed int v47; // esi@68  SC_HANDLE v48; // eax@71  SC_HANDLE v49; // eax@72  SIZE_T v50; // ST14_4@75  HANDLE v51; // eax@75  LPVOID v52; // eax@75  void *v53; // ST14_4@80  HANDLE v54; // eax@80  SC_HANDLE v55; // eax@83  SC_HANDLE v56; // eax@84  struct _QUERY_SERVICE_CONFIGW *v57; // eax@87  SIZE_T v58; // ST14_4@87  HANDLE v59; // eax@87  void *v60; // ST14_4@92  HANDLE v61; // eax@92  DWORD v62; // eax@99  void *v63; // eax@100  const void *v64; // ebx@100  SIZE_T v65; // ST14_4@100  HANDLE v66; // eax@100  size_t v67; // ST14_4@106  const wchar_t *v68; // ST10_4@106  wchar_t *v69; // eax@106  HANDLE v70; // eax@108  DWORD v71; // eax@112  DWORD v72; // ebx@112  void *v73; // eax@113  SIZE_T v74; // ST14_4@113  HANDLE v75; // eax@113  size_t v76; // ST14_4@119  const wchar_t *v77; // ST10_4@119  wchar_t *v78; // eax@119  void *v79; // ST14_4@121  HANDLE v80; // eax@121  DWORD v81; // eax@125  DWORD v82; // ebx@125  void *v83; // eax@126  SIZE_T v84; // ST14_4@126  HANDLE v85; // eax@126  size_t v86; // ST14_4@132  const wchar_t *v87; // ST10_4@132  wchar_t *v88; // eax@132  void *v89; // ST14_4@134  HANDLE v90; // eax@134  LONG v91; // eax@139  HWND v92; // eax@141  DWORD v93; // eax@143  HANDLE v94; // eax@147  WCHAR *v95; // [sp-8h] [bp-10h]@139  v3 = GetCurrentProcess();  v2 = 260;  if ( IsWow64Process(v3, (PBOOL)(a1 - 4792)) )  {    if ( *(HWND *)(a1 - 4792) == a2 )    {      *(_DWORD *)(a1 - 4748) = a2;      v48 = OpenSCManagerW((LPCWSTR)a2, (LPCWSTR)a2, 1u);      *(_DWORD *)(a1 - 4760) = v48;      if ( v48 != a2 )      {        v49 = OpenServiceW(v48, L"sppuinotify", 1u);        *(_DWORD *)(a1 - 4752) = v49;        if ( v49 != a2 )        {          if ( !QueryServiceConfigW(                  *(SC_HANDLE *)(a1 - 4752),                  (LPQUERY_SERVICE_CONFIGW)a2,                  (DWORD)a2,                  (LPDWORD)(a1 - 4764)) )          {            if ( GetLastError() == 122 )            {              v50 = *(_DWORD *)(a1 - 4764);              v51 = GetProcessHeap();              v52 = HeapAlloc(v51, (DWORD)a2, v50);              *(_DWORD *)(a1 - 4744) = v52;              if ( v52 == a2 )              {                *(_DWORD *)(a1 - 4748) = 1;              }              else              {                if ( QueryServiceConfigW(                       *(SC_HANDLE *)(a1 - 4752),                       *(LPQUERY_SERVICE_CONFIGW *)(a1 - 4744),                       *(_DWORD *)(a1 - 4764),                       (LPDWORD)(a1 - 4764)) )                {                  if ( *(_DWORD *)(*(_DWORD *)(a1 - 4744) + 4) != 4 )                    *(_DWORD *)(a1 - 4748) = 1;                }                v53 = *(void **)(a1 - 4744);                v54 = GetProcessHeap();                HeapFree(v54, (DWORD)a2, v53);              }            }          }          CloseServiceHandle(*(SC_HANDLE *)(a1 - 4752));        }        CloseServiceHandle(*(SC_HANDLE *)(a1 - 4760));        if ( *(HWND *)(a1 - 4748) != a2 )        {          *(_DWORD *)(a1 - 4752) = a2;          v55 = OpenSCManagerW((LPCWSTR)a2, (LPCWSTR)a2, 1u);          *(_DWORD *)(a1 - 4756) = v55;          if ( v55 != a2 )          {            v56 = OpenServiceW(v55, L"sppsvc", 1u);            *(_DWORD *)(a1 - 4744) = v56;            if ( v56 != a2 )            {              if ( !QueryServiceConfigW(v56, (LPQUERY_SERVICE_CONFIGW)a2, (DWORD)a2, (LPDWORD)(a1 - 4748)) )              {                if ( GetLastError() == 122 )                {                  v58 = *(_DWORD *)(a1 - 4748);                  v59 = GetProcessHeap();                  v57 = (struct _QUERY_SERVICE_CONFIGW *)HeapAlloc(v59, (DWORD)a2, v58);                  *(_DWORD *)(a1 - 4760) = v57;                  if ( v57 == a2 )                  {                    *(_DWORD *)(a1 - 4752) = 1;                  }                  else                  {                    if ( QueryServiceConfigW(                           *(SC_HANDLE *)(a1 - 4744),                           v57,                           *(_DWORD *)(a1 - 4748),                           (LPDWORD)(a1 - 4748)) )                    {                      if ( *(_DWORD *)(*(_DWORD *)(a1 - 4760) + 4) != 4 )                        *(_DWORD *)(a1 - 4752) = 1;                    }                    v60 = *(void **)(a1 - 4760);                    v61 = GetProcessHeap();                    HeapFree(v61, (DWORD)a2, v60);                  }                }              }              CloseServiceHandle(*(SC_HANDLE *)(a1 - 4744));            }            CloseServiceHandle(*(SC_HANDLE *)(a1 - 4756));            if ( *(HWND *)(a1 - 4752) != a2 )            {              if ( SHGetFolderPathW(a2, 37, a2, (DWORD)a2, (LPWSTR)(a1 - 1100)) >= 0 )              {                if ( sub_1009CDF(a1 - 3700, 260, a1 - 1100) >= 0 )                {                  if ( sub_1009D19(a1 - 3700, 260, (int)L"\\sppuinotify.dll") >= 0 )                  {                    if ( GetFileAttributesW((LPCWSTR)(a1 - 3700)) != -1 )                    {                      *(_DWORD *)(a1 - 4760) = a2;                      v62 = GetFileVersionInfoSizeExW((DWORD)a2, (LPCWSTR)(a1 - 3700), (LPDWORD)(a1 - 4752));                      *(_DWORD *)(a1 - 4756) = v62;                      if ( v62 > (unsigned int)a2 )                      {                        v65 = v62;                        v66 = GetProcessHeap();                        v63 = HeapAlloc(v66, (DWORD)a2, v65);                        v64 = v63;                        if ( v63 == a2 )                          goto LABEL_153;                        if ( GetFileVersionInfoExW(                               (DWORD)a2,                               (LPCWSTR)(a1 - 3700),                               *(_DWORD *)(a1 - 4752),                               *(_DWORD *)(a1 - 4756),                               v63) )                        {                          if ( VerQueryValueW(                                 v64,                                 L"\\VarFileInfo\\Translation",                                 (LPVOID *)(a1 - 4884),                                 (PUINT)(a1 - 4780)) )                          {                            if ( *(_DWORD *)(a1 - 4780) >= 4u )                            {                              if ( sub_10015C3(                                     (wchar_t *)(a1 - 388),                                     0x30u,                                     L"\\StringFileInfo\\%04x%04x\\OriginalFilename",                                     **(_WORD **)(a1 - 4884),                                     *(_WORD *)(*(_DWORD *)(a1 - 4884) + 2)) >= 0 )                              {                                if ( VerQueryValueW(v64, (LPCWSTR)(a1 - 388), (LPVOID *)(a1 - 4848), (PUINT)(a1 - 4800)) )                                {                                  v67 = *(_DWORD *)(a1 - 4800);                                  v68 = *(const wchar_t **)(a1 - 4848);                                  v69 = wcsrchr((const wchar_t *)(a1 - 3700), 0x5Cu);                                  if ( !wcsncmp(v69 + 1, v68, v67) )                                    *(_DWORD *)(a1 - 4760) = 1;                                }                              }                            }                          }                        }                        v70 = GetProcessHeap();                        HeapFree(v70, (DWORD)a2, (LPVOID)v64);                        if ( *(HWND *)(a1 - 4760) != a2 )                        {LABEL_153:                          if ( sub_1009CDF(a1 - 4220, 260, a1 - 1100) >= 0 )                          {                            if ( sub_1009D19(a1 - 4220, 260, (int)L"\\slui.exe") >= 0 )                            {                              if ( GetFileAttributesW((LPCWSTR)(a1 - 4220)) != -1 )                              {                                *(_DWORD *)(a1 - 4756) = a2;                                v71 = GetFileVersionInfoSizeExW((DWORD)a2, (LPCWSTR)(a1 - 4220), (LPDWORD)(a1 - 4760));                                v72 = v71;                                if ( v71 > (unsigned int)a2 )                                {                                  v74 = v71;                                  v75 = GetProcessHeap();                                  v73 = HeapAlloc(v75, (DWORD)a2, v74);                                  *(_DWORD *)(a1 - 4744) = v73;                                  if ( v73 == a2 )                                    goto LABEL_154;                                  if ( GetFileVersionInfoExW(                                         (DWORD)a2,                                         (LPCWSTR)(a1 - 4220),                                         *(_DWORD *)(a1 - 4760),                                         v72,                                         v73) )                                  {                                    if ( VerQueryValueW(                                           *(LPCVOID *)(a1 - 4744),                                           L"\\VarFileInfo\\Translation",                                           (LPVOID *)(a1 - 4876),                                           (PUINT)(a1 - 4808)) )                                    {                                      if ( *(_DWORD *)(a1 - 4808) >= 4u )                                      {                                        if ( sub_10015C3(                                               (wchar_t *)(a1 - 580),                                               0x30u,                                               L"\\StringFileInfo\\%04x%04x\\OriginalFilename",                                               **(_WORD **)(a1 - 4876),                                               *(_WORD *)(*(_DWORD *)(a1 - 4876) + 2)) >= 0 )                                        {                                          if ( VerQueryValueW(                                                 *(LPCVOID *)(a1 - 4744),                                                 (LPCWSTR)(a1 - 580),                                                 (LPVOID *)(a1 - 4856),                                                 (PUINT)(a1 - 4816)) )                                          {                                            v76 = *(_DWORD *)(a1 - 4816);                                            v77 = *(const wchar_t **)(a1 - 4856);                                            v78 = wcsrchr((const wchar_t *)(a1 - 4220), 0x5Cu);                                            if ( !wcsncmp(v78 + 1, v77, v76) )                                              *(_DWORD *)(a1 - 4756) = 1;                                          }                                        }                                      }                                    }                                  }                                  v79 = *(void **)(a1 - 4744);                                  v80 = GetProcessHeap();                                  HeapFree(v80, (DWORD)a2, v79);                                  if ( *(HWND *)(a1 - 4756) != a2 )                                  {LABEL_154:                                    if ( sub_1009CDF(a1 - 3180, 260, a1 - 1100) >= 0 )                                    {                                      if ( sub_1009D19(a1 - 3180, 260, (int)L"\\sppsvc.exe") >= 0 )                                      {                                        if ( GetFileAttributesW((LPCWSTR)(a1 - 3180)) != -1 )                                        {                                          *(_DWORD *)(a1 - 4756) = a2;                                          v81 = GetFileVersionInfoSizeExW(                                                  (DWORD)a2,                                                  (LPCWSTR)(a1 - 3180),                                                  (LPDWORD)(a1 - 4824));                                          v82 = v81;                                          if ( v81 > (unsigned int)a2 )                                          {                                            v84 = v81;                                            v85 = GetProcessHeap();                                            v83 = HeapAlloc(v85, (DWORD)a2, v84);                                            *(_DWORD *)(a1 - 4744) = v83;                                            if ( v83 == a2 )                                              goto LABEL_150;                                            if ( GetFileVersionInfoExW(                                                   (DWORD)a2,                                                   (LPCWSTR)(a1 - 3180),                                                   *(_DWORD *)(a1 - 4824),                                                   v82,                                                   v83) )                                            {                                              if ( VerQueryValueW(                                                     *(LPCVOID *)(a1 - 4744),                                                     L"\\VarFileInfo\\Translation",                                                     (LPVOID *)(a1 - 4832),                                                     (PUINT)(a1 - 4892)) )                                              {                                                if ( *(_DWORD *)(a1 - 4892) >= 4u )                                                {                                                  if ( sub_10015C3(                                                         (wchar_t *)(a1 - 292),                                                         0x30u,                                                         L"\\StringFileInfo\\%04x%04x\\OriginalFilename",                                                         **(_WORD **)(a1 - 4832),                                                         *(_WORD *)(*(_DWORD *)(a1 - 4832) + 2)) >= 0 )                                                  {                                                    if ( VerQueryValueW(                                                           *(LPCVOID *)(a1 - 4744),                                                           (LPCWSTR)(a1 - 292),                                                           (LPVOID *)(a1 - 4772),                                                           (PUINT)(a1 - 4864)) )                                                    {                                                      v86 = *(_DWORD *)(a1 - 4864);                                                      v87 = *(const wchar_t **)(a1 - 4772);                                                      v88 = wcsrchr((const wchar_t *)(a1 - 3180), 0x5Cu);                                                      if ( !wcsncmp(v88 + 1, v87, v86) )                                                        *(_DWORD *)(a1 - 4756) = 1;                                                    }                                                  }                                                }                                              }                                            }                                            v89 = *(void **)(a1 - 4744);                                            v90 = GetProcessHeap();                                            HeapFree(v90, (DWORD)a2, v89);                                            if ( *(HWND *)(a1 - 4756) != a2 )LABEL_150:                                              JUMPOUT(*(unsigned int *)loc_10027A2);                                          }                                        }                                      }                                    }                                  }                                }                              }                            }                          }                        }                      }                    }                  }                }              }            }          }        }      }      v47 = 0;      goto LABEL_136;    }    if ( Wow64DisableWow64FsRedirection((PVOID *)(a1 - 4840)) )    {      *(_DWORD *)(a1 - 4768) = a2;      v4 = OpenSCManagerW((LPCWSTR)a2, (LPCWSTR)a2, 1u);      *(_DWORD *)(a1 - 4748) = v4;      if ( v4 == a2 )        goto LABEL_155;      v5 = OpenServiceW(v4, L"sppuinotify", 1u);      *(_DWORD *)(a1 - 4764) = v5;      if ( v5 != a2 )      {        if ( !QueryServiceConfigW(                *(SC_HANDLE *)(a1 - 4764),                (LPQUERY_SERVICE_CONFIGW)a2,                (DWORD)a2,                (LPDWORD)(a1 - 4776)) )        {          if ( GetLastError() == 122 )          {            v6 = *(_DWORD *)(a1 - 4776);            v7 = GetProcessHeap();            v8 = HeapAlloc(v7, (DWORD)a2, v6);            *(_DWORD *)(a1 - 4744) = v8;            if ( v8 == a2 )            {              *(_DWORD *)(a1 - 4768) = 1;            }            else            {              if ( QueryServiceConfigW(                     *(SC_HANDLE *)(a1 - 4764),                     *(LPQUERY_SERVICE_CONFIGW *)(a1 - 4744),                     *(_DWORD *)(a1 - 4776),                     (LPDWORD)(a1 - 4776)) )              {                if ( *(_DWORD *)(*(_DWORD *)(a1 - 4744) + 4) != 4 )                  *(_DWORD *)(a1 - 4768) = 1;              }              v9 = *(void **)(a1 - 4744);              v10 = GetProcessHeap();              HeapFree(v10, (DWORD)a2, v9);            }          }        }        CloseServiceHandle(*(SC_HANDLE *)(a1 - 4764));      }      CloseServiceHandle(*(SC_HANDLE *)(a1 - 4748));      if ( *(HWND *)(a1 - 4768) == a2 )        goto LABEL_155;      *(_DWORD *)(a1 - 4764) = a2;      v11 = OpenSCManagerW((LPCWSTR)a2, (LPCWSTR)a2, 1u);      *(_DWORD *)(a1 - 4744) = v11;      if ( v11 == a2 )        goto LABEL_155;      v12 = OpenServiceW(v11, L"sppsvc", 1u);      *(_DWORD *)(a1 - 4752) = v12;      if ( v12 != a2 )      {        if ( !QueryServiceConfigW(v12, (LPQUERY_SERVICE_CONFIGW)a2, (DWORD)a2, (LPDWORD)(a1 - 4768)) )        {          if ( GetLastError() == 122 )          {            v14 = *(_DWORD *)(a1 - 4768);            v15 = GetProcessHeap();            v13 = (struct _QUERY_SERVICE_CONFIGW *)HeapAlloc(v15, (DWORD)a2, v14);            *(_DWORD *)(a1 - 4748) = v13;            if ( v13 == a2 )            {              *(_DWORD *)(a1 - 4764) = 1;            }            else            {              if ( QueryServiceConfigW(*(SC_HANDLE *)(a1 - 4752), v13, *(_DWORD *)(a1 - 4768), (LPDWORD)(a1 - 4768)) )              {                if ( *(_DWORD *)(*(_DWORD *)(a1 - 4748) + 4) != 4 )                  *(_DWORD *)(a1 - 4764) = 1;              }              v16 = *(void **)(a1 - 4748);              v17 = GetProcessHeap();              HeapFree(v17, (DWORD)a2, v16);            }          }        }        CloseServiceHandle(*(SC_HANDLE *)(a1 - 4752));      }      CloseServiceHandle(*(SC_HANDLE *)(a1 - 4744));      if ( *(HWND *)(a1 - 4764) == a2 )        goto LABEL_155;      if ( SHGetFolderPathW(a2, 37, a2, (DWORD)a2, (LPWSTR)(a1 - 4740)) < 0 )        goto LABEL_155;      if ( sub_1009CDF(a1 - 2660, 260, a1 - 4740) < 0 )        goto LABEL_155;      if ( sub_1009D19(a1 - 2660, 260, (int)L"\\sppuinotify.dll") < 0 )        goto LABEL_155;      if ( GetFileAttributesW((LPCWSTR)(a1 - 2660)) == -1 )        goto LABEL_155;      *(_DWORD *)(a1 - 4752) = a2;      v18 = GetFileVersionInfoSizeExW((DWORD)a2, (LPCWSTR)(a1 - 2660), (LPDWORD)(a1 - 4784));      *(_DWORD *)(a1 - 4748) = v18;      if ( v18 <= (unsigned int)a2 )        goto LABEL_155;      v21 = v18;      v22 = GetProcessHeap();      v19 = HeapAlloc(v22, (DWORD)a2, v21);      v20 = v19;      if ( v19 != a2 )      {        if ( GetFileVersionInfoExW((DWORD)a2, (LPCWSTR)(a1 - 2660), *(_DWORD *)(a1 - 4784), *(_DWORD *)(a1 - 4748), v19) )        {          if ( VerQueryValueW(v20, L"\\VarFileInfo\\Translation", (LPVOID *)(a1 - 4796), (PUINT)(a1 - 4788)) )          {            if ( *(_DWORD *)(a1 - 4788) >= 4u )            {              if ( sub_10015C3(                     (wchar_t *)(a1 - 484),                     0x30u,                     L"\\StringFileInfo\\%04x%04x\\OriginalFilename",                     **(_WORD **)(a1 - 4796),                     *(_WORD *)(*(_DWORD *)(a1 - 4796) + 2)) >= 0 )              {                if ( VerQueryValueW(v20, (LPCWSTR)(a1 - 484), (LPVOID *)(a1 - 4812), (PUINT)(a1 - 4804)) )                {                  v23 = *(_DWORD *)(a1 - 4804);                  v24 = *(const wchar_t **)(a1 - 4812);                  v25 = wcsrchr((const wchar_t *)(a1 - 2660), 0x5Cu);                  if ( !wcsncmp(v25 + 1, v24, v23) )                    *(_DWORD *)(a1 - 4752) = 1;                }              }            }          }        }        v26 = GetProcessHeap();        HeapFree(v26, (DWORD)a2, (LPVOID)v20);        if ( *(HWND *)(a1 - 4752) == a2 )          goto LABEL_155;      }      if ( sub_1009CDF(a1 - 1620, 260, a1 - 4740) < 0 )        goto LABEL_155;      if ( sub_1009D19(a1 - 1620, 260, (int)L"\\slui.exe") < 0 )        goto LABEL_155;      if ( GetFileAttributesW((LPCWSTR)(a1 - 1620)) == -1 )        goto LABEL_155;      *(_DWORD *)(a1 - 4748) = a2;      v27 = GetFileVersionInfoSizeExW((DWORD)a2, (LPCWSTR)(a1 - 1620), (LPDWORD)(a1 - 4820));      v28 = v27;      if ( v27 <= (unsigned int)a2 )        goto LABEL_155;      v30 = v27;      v31 = GetProcessHeap();      v29 = HeapAlloc(v31, (DWORD)a2, v30);      *(_DWORD *)(a1 - 4744) = v29;      if ( v29 != a2 )      {        if ( GetFileVersionInfoExW((DWORD)a2, (LPCWSTR)(a1 - 1620), *(_DWORD *)(a1 - 4820), v28, v29) )        {          if ( VerQueryValueW(                 *(LPCVOID *)(a1 - 4744),                 L"\\VarFileInfo\\Translation",                 (LPVOID *)(a1 - 4836),                 (PUINT)(a1 - 4828)) )          {            if ( *(_DWORD *)(a1 - 4828) >= 4u )            {              if ( sub_10015C3(                     (wchar_t *)(a1 - 100),                     0x30u,                     L"\\StringFileInfo\\%04x%04x\\OriginalFilename",                     **(_WORD **)(a1 - 4836),                     *(_WORD *)(*(_DWORD *)(a1 - 4836) + 2)) >= 0 )              {                if ( VerQueryValueW(                       *(LPCVOID *)(a1 - 4744),                       (LPCWSTR)(a1 - 100),                       (LPVOID *)(a1 - 4852),                       (PUINT)(a1 - 4844)) )                {                  v32 = *(_DWORD *)(a1 - 4844);                  v33 = *(const wchar_t **)(a1 - 4852);                  v34 = wcsrchr((const wchar_t *)(a1 - 1620), 0x5Cu);                  if ( !wcsncmp(v34 + 1, v33, v32) )                    *(_DWORD *)(a1 - 4748) = 1;                }              }            }          }        }        v35 = *(void **)(a1 - 4744);        v36 = GetProcessHeap();        HeapFree(v36, (DWORD)a2, v35);        if ( *(HWND *)(a1 - 4748) == a2 )          goto LABEL_155;      }      if ( sub_1009CDF(a1 - 2140, 260, a1 - 4740) < 0 )        goto LABEL_155;      if ( sub_1009D19(a1 - 2140, 260, (int)L"\\sppsvc.exe") < 0 )        goto LABEL_155;      if ( GetFileAttributesW((LPCWSTR)(a1 - 2140)) == -1 )        goto LABEL_155;      *(_DWORD *)(a1 - 4748) = a2;      v37 = GetFileVersionInfoSizeExW((DWORD)a2, (LPCWSTR)(a1 - 2140), (LPDWORD)(a1 - 4860));      v38 = v37;      if ( v37 <= (unsigned int)a2 )        goto LABEL_155;      v40 = v37;      v41 = GetProcessHeap();      v39 = HeapAlloc(v41, (DWORD)a2, v40);      *(_DWORD *)(a1 - 4744) = v39;      if ( v39 == a2 )        goto LABEL_156;      if ( GetFileVersionInfoExW((DWORD)a2, (LPCWSTR)(a1 - 2140), *(_DWORD *)(a1 - 4860), v38, v39) )      {        if ( VerQueryValueW(               *(LPCVOID *)(a1 - 4744),               L"\\VarFileInfo\\Translation",               (LPVOID *)(a1 - 4880),               (PUINT)(a1 - 4872)) )        {          if ( *(_DWORD *)(a1 - 4872) >= 4u )          {            if ( sub_10015C3(                   (wchar_t *)(a1 - 196),                   0x30u,                   L"\\StringFileInfo\\%04x%04x\\OriginalFilename",                   **(_WORD **)(a1 - 4880),                   *(_WORD *)(*(_DWORD *)(a1 - 4880) + 2)) >= 0 )            {              if ( VerQueryValueW(                     *(LPCVOID *)(a1 - 4744),                     (LPCWSTR)(a1 - 196),                     (LPVOID *)(a1 - 4896),                     (PUINT)(a1 - 4888)) )              {                v42 = *(_DWORD *)(a1 - 4888);                v43 = *(const wchar_t **)(a1 - 4896);                v44 = wcsrchr((const wchar_t *)(a1 - 2140), 0x5Cu);                if ( !wcsncmp(v44 + 1, v43, v42) )                  *(_DWORD *)(a1 - 4748) = 1;              }            }          }        }      }      v45 = *(void **)(a1 - 4744);      v46 = GetProcessHeap();      HeapFree(v46, (DWORD)a2, v45);      if ( *(HWND *)(a1 - 4748) == a2 )LABEL_155:        v47 = 0;      elseLABEL_156:        v47 = 1;      Wow64RevertWow64FsRedirection(*(PVOID *)(a1 - 4840));LABEL_136:      if ( (HWND)v47 != a2 )        goto LABEL_150;      v2 = 260;      goto LABEL_138;    }  }LABEL_138:  if ( !GetSystemMetrics(67) )  {    WinSqmIncrementDWORD(a2, 6859, 1);    v91 = InterlockedExchange(&Target, 1);    v95 = (WCHAR *)(a1 - 1100);    if ( v91 )    {      if ( LoadStringW((HINSTANCE)0x1000000, 0xC804u, v95, v2) )      {        v92 = FindWindowW((LPCWSTR)a2, (LPCWSTR)(a1 - 1100));        if ( v92 != a2 )          SetForegroundWindow(v92);      }    }    else    {      v93 = GetModuleFileNameW((HMODULE)0x1000000, v95, v2);      if ( (HWND)v93 != a2 )      {        if ( v93 != v2 || GetLastError() != 122 )        {          if ( LoadLibraryW((LPCWSTR)(a1 - 1100)) )          {            v94 = CreateThread(                    (LPSECURITY_ATTRIBUTES)a2,                    (SIZE_T)a2,                    (LPTHREAD_START_ROUTINE)StartAddress,                    a2,                    (DWORD)a2,                    (LPDWORD)(a1 - 4772));            if ( v94 == a2 )              InterlockedExchange(&Target, (LONG)a2);            else              CloseHandle(v94);          }        }      }    }  }  goto LABEL_150;}// 10027A2: using guessed type int loc_10027A2();// 1006B98: using guessed type wchar_t aSppsvc_exe[12];// 1006BB0: using guessed type wchar_t aSlui_exe[10];// 1006BC4: using guessed type wchar_t aSppuinotify_dl[17];// 100A020: using guessed type int __stdcall WinSqmIncrementDWORD(_DWORD, _DWORD, _DWORD);//----- (01006C68) --------------------------------------------------------int __usercall sub_1006C68<eax>(int a1<ebp>){  int v1; // eax@1  int v3; // ecx@1  v1 = *(_DWORD *)(a1 - 20);  v3 = **(_DWORD **)v1;  *(_DWORD *)(a1 - 36) = v3;  return XcptFilter(v3, v1);}// 1009DE5: using guessed type int __cdecl XcptFilter(_DWORD, _DWORD);//----- (01006C7C) --------------------------------------------------------void __usercall sub_1006C7C(int a1<ebp>){  int v1; // eax@1  v1 = *(_DWORD *)(a1 - 36);  dword_100C070 = *(_DWORD *)(a1 - 36);  JUMPOUT(dword_100C064, 0, *(unsigned int *)loc_1006C97);  exit(v1);}// 1006C97: using guessed type int loc_1006C97();// 100C064: using guessed type int dword_100C064;// 100C070: using guessed type int dword_100C070;//----- (01006CB4) --------------------------------------------------------signed int __cdecl sub_1006CB4(){  return 1;}//----- (01006DC0) --------------------------------------------------------LONG __stdcall sub_1006DC0(int a1){  return sub_10040FB(a1 - 4);}//----- (01006DDA) --------------------------------------------------------LONG __stdcall sub_1006DDA(int a1){  return sub_1003EA6(a1 - 4);}//----- (01006DF4) --------------------------------------------------------int __stdcall sub_1006DF4(int a1, int a2, int a3, int a4){  if ( a3 == 1 )    dword_100C00C = a4;  return 0;}// 100C00C: using guessed type int dword_100C00C;//----- (01006E12) --------------------------------------------------------signed int __stdcall sub_1006E12(int a1, int a2, int a3){  return sub_10040C4(a1 - 4, a2, a3);}//----- (01006E32) --------------------------------------------------------int __stdcall sub_1006E32(int a1, LPCWSTR lpFileName){  HANDLE v2; // eax@2  UINT v4; // [sp+4h] [bp-414h]@2  void *v5; // [sp+8h] [bp-410h]@2  DWORD iSize; // [sp+Ch] [bp-40Ch]@3  int v7; // [sp+10h] [bp-408h]@1  char Buffer; // [sp+14h] [bp-404h]@3  unsigned int v9; // [sp+414h] [bp-4h]@1  int v10; // [sp+418h] [bp+0h]@1  v9 = (unsigned int)&v10 ^ dword_100C010;  v7 = a1;  if ( lstrcmpiW(lpFileName, &String2) )  {    v4 = SetErrorMode(1u);    v2 = CreateFileW(lpFileName, 0x80000000u, 1u, 0, 3u, 0x80u, 0);    v5 = v2;    if ( v2 != (HANDLE)-1 )    {      if ( ReadFile(v2, &Buffer, 0x400u, &iSize, 0) > 0 )      {        if ( iSize )        {          dword_100C00C = sub_10071C2(&Buffer, iSize);          if ( dword_100C00C != -1 )          {            if ( (**(int (__stdcall ***)(int, _DWORD, int *))v7)(v7, dword_1003C74, &v7) >= 0 )            {              (*(void (__stdcall **)(int, signed int, int))(*(_DWORD *)v7 + 100))(v7, 1, dword_100C00C);              (*(void (__stdcall **)(int))(*(_DWORD *)v7 + 8))(v7);            }          }          sub_1002558((int)&String2, 0x104u, (int)lpFileName);        }      }      CloseHandle(v5);    }    SetErrorMode(v4);  }  return 0;}// 1003C74: using guessed type int dword_1003C74[5];// 100C00C: using guessed type int dword_100C00C;// 100C010: using guessed type int dword_100C010;//----- (01006F5C) --------------------------------------------------------int __stdcall sub_1006F5C(int a1, const WCHAR *lpFileName){  int v2; // edi@1  int v3; // esi@1  int v5; // [sp+8h] [bp-4h]@1  v2 = (int)lpFileName;  v3 = (*(int (__stdcall **)(const WCHAR *, int *))(*(_DWORD *)lpFileName + 56))(lpFileName, &v5);  if ( v3 >= 0 )  {    v3 = (*(int (__stdcall **)(int, signed int, const WCHAR **))(*(_DWORD *)v5 + 20))(v5, -2147123200, &lpFileName);    if ( v3 >= 0 )    {      v3 = sub_1006E32(v2, lpFileName);      CoTaskMemFree((LPVOID)lpFileName);    }    (*(void (__stdcall **)(int))(*(_DWORD *)v5 + 8))(v5);  }  return v3;}//----- (01006FB9) --------------------------------------------------------LRESULT __stdcall sub_1006FB9(int a1){  LRESULT result; // eax@1  result = SendMessageW(dword_100C028, 187u, a1 - 1, 0);  if ( result != -1 )  {    SendMessageW(dword_100C028, 0xB1u, result, result);    result = SendMessageW(dword_100C028, 0xB7u, 0, 0);  }  return result;}//----- (01007008) --------------------------------------------------------const WCHAR *__stdcall sub_1007008(LPCWSTR lpsz){  const WCHAR *v1; // eax@1  const WCHAR v2; // cx@1  const WCHAR *v3; // edi@1  v2 = *lpsz;  v3 = lpsz;  v1 = lpsz;  if ( *lpsz )  {    do    {      if ( v2 == 58 || v2 == 92 )        v3 = v1;      v1 = CharNextW(v1);      v2 = *v1;    }    while ( *v1 );    if ( v3 != lpsz )      ++v3;  }  return v3;}//----- (01007051) --------------------------------------------------------int __stdcall sub_1007051(HWND hWnd, LPCWSTR lpCaption, LPCWSTR lpText, LPCWSTR lpString, UINT uType){  int v5; // edi@2  int v6; // eax@4  const WCHAR *v7; // edi@4  int v8; // esi@4  int v9; // esi@5  if ( lpString )    v5 = lstrlenW(lpString);  else    v5 = 0;  v8 = lstrlenW(lpText) + v5 + 1;  v6 = (int)LocalAlloc(0x40u, 2 * v8);  v7 = (const WCHAR *)v6;  if ( v6 )  {    sub_10047BA((int)lpText, (int)lpString, v6, v8);    v9 = MessageBoxW(hWnd, v7, lpCaption, uType);    LocalFree((HLOCAL)v7);  }  else  {    v9 = MessageBoxW(hWnd, lpText, lpCaption, uType);  }  return v9;}//----- (010070D3) --------------------------------------------------------__int32 __stdcall sub_10070D3(int a1){  __int32 result; // eax@1  __int32 v2; // edi@2  int v3; // eax@3  void *v4; // [sp+8h] [bp-14h]@1  int v5; // [sp+Ch] [bp-10h]@1  int v6; // [sp+10h] [bp-Ch]@3  LPARAM lParam; // [sp+14h] [bp-8h]@1  WPARAM wParam; // [sp+18h] [bp-4h]@1  wParam = 0;  lParam = 0;  v5 = lstrlenW(stru_100C0C0.lpstrReplaceWith);  SendMessageW(dword_100C028, 176u, (WPARAM)&wParam, (LPARAM)&lParam);  result = SendMessageW(dword_100C028, 0xBDu, 0, 0);  v4 = (void *)result;  if ( result )  {    result = (__int32)LocalLock((HLOCAL)result);    v2 = result;    if ( result )    {      v3 = sub_100818F(result + 2 * wParam, lParam - wParam, (int)stru_100C0C0.lpstrFindWhat, dword_100D798, (int)&v6);      if ( v3 == v2 + 2 * wParam )      {        if ( v6 == lParam - wParam )        {          SendMessageW(dword_100C028, 0xC2u, 1u, (LPARAM)stru_100C0C0.lpstrReplaceWith);          SendMessageW(dword_100C028, 0xB1u, wParam, wParam + v5);          if ( a1 )            SendMessageW(dword_100C028, 0xB7u, 0, 0);        }      }      result = LocalUnlock(v4);    }  }  return result;}// 100D798: using guessed type int dword_100D798;//----- (010071C2) --------------------------------------------------------int __stdcall sub_10071C2(const void *lpv, int iSize){  int result; // eax@1  int v3; // ecx@2  result = 0;  if ( (unsigned int)iSize > 1 )  {    v3 = *(_WORD *)lpv;    if ( v3 != 48111 )    {      if ( v3 == 65279 )        return 1;      if ( v3 != 65534 )      {        if ( !sub_100991D(lpv, iSize) )          return sub_10098C7((int)lpv, iSize) != 0 ? 3 : 0;        return 1;      }      return 2;    }    if ( (unsigned int)iSize > 2 && *((_BYTE *)lpv + 2) == -65 )      return 3;  }  return result;}//----- (0100722E) --------------------------------------------------------signed int __stdcall sub_100722E(HWND hWndParent, int a2, HWND hWnd, int a4){  LPARAM v4; // ecx@6  HWND v5; // esi@13  int v6; // eax@15  int v7; // eax@18  HWND v9; // [sp-10h] [bp-1Ch]@17  const WCHAR *v10; // [sp-Ch] [bp-18h]@17  UINT v11; // [sp-8h] [bp-14h]@17  ULONG_PTR v12; // [sp-4h] [bp-10h]@17  struct tagPOINT Point; // [sp+4h] [bp-8h]@14  if ( a2 == 83 )  {    v7 = GetDlgCtrlID(*(HWND *)(a4 + 12));    if ( v7 != 257 && v7 != 259 )      return 0;    v12 = (ULONG_PTR)dword_1006D38;    v11 = 12;    v10 = lpszHelp;    v9 = *(HWND *)(a4 + 12);  }  else  {    if ( a2 != 123 )    {      if ( a2 == 272 )      {        SendDlgItemMessageW(hWndParent, 257, 323u, 0, dword_100C334);        SendDlgItemMessageW(hWndParent, 257, 0x143u, 0, dword_100C338);        SendDlgItemMessageW(hWndParent, 257, 0x143u, 0, dword_100C33C);        SendDlgItemMessageW(hWndParent, 257, 0x143u, 0, dword_100C340);        v4 = dword_100C334;        dword_100E040 = dword_100C00C;        switch ( dword_100C00C )        {          case 1:            v4 = dword_100C338;            break;          case 2:            v4 = dword_100C33C;            break;          case 3:            v4 = dword_100C340;            break;        }        SendDlgItemMessageW(hWndParent, 257, 0x14Du, 0xFFFFFFFFu, v4);      }      else      {        if ( a2 == 273 )          dword_100E040 = SendDlgItemMessageW(hWndParent, 257, 0x147u, 0, 0);      }      return 0;    }    v5 = hWnd;    if ( hWndParent == hWnd )    {      GetCursorPos(&Point);      ScreenToClient(hWndParent, &Point);      v5 = ChildWindowFromPoint(hWndParent, Point);    }    v6 = GetDlgCtrlID(v5);    if ( v6 != 257 && v6 != 259 )      return 0;    v12 = (ULONG_PTR)dword_1006D38;    v11 = 10;    v10 = lpszHelp;    v9 = v5;  }  WinHelpW(v9, v10, v11, v12);  return 1;}// 1006D38: using guessed type int dword_1006D38[6];// 100C00C: using guessed type int dword_100C00C;// 100E040: using guessed type int dword_100E040;//----- (0100739B) --------------------------------------------------------signed int __stdcall sub_100739B(DWORD hDlg, int a2, HWND hWnd, int a4){  HWND v4; // ebx@1  LPARAM v5; // ecx@7  int v6; // eax@16  int v7; // eax@19  HWND v9; // eax@24  HANDLE v10; // eax@26  int v11; // eax@29  LPARAM v12; // ecx@29  int v13; // eax@29  int v14; // eax@30  HWND v15; // [sp-10h] [bp-638h]@18  const WCHAR *v16; // [sp-Ch] [bp-634h]@18  UINT v17; // [sp-8h] [bp-630h]@18  ULONG_PTR v18; // [sp-4h] [bp-62Ch]@18  struct tagPOINT Point; // [sp+Ch] [bp-61Ch]@15  HANDLE hObject; // [sp+14h] [bp-614h]@26  DWORD iSize; // [sp+18h] [bp-610h]@1  char Buffer; // [sp+1Ch] [bp-60Ch]@27  LPARAM String1; // [sp+41Ch] [bp-20Ch]@24  unsigned int v24; // [sp+624h] [bp-4h]@1  int v25; // [sp+628h] [bp+0h]@1  v24 = (unsigned int)&v25 ^ dword_100C010;  v4 = hWnd;  iSize = hDlg;  if ( a2 == 78 )  {    if ( *(_DWORD *)(a4 + 8) == -602 )    {      v9 = GetParent((HWND)hDlg);      if ( SendMessageW(v9, 0x465u, 0x104u, (LPARAM)&String1) > 0 )      {        if ( lstrcmpiW((LPCWSTR)&String1, &word_100D588) )        {          v10 = CreateFileW((LPCWSTR)&String1, 0x80000000u, 1u, 0, 3u, 0x80u, 0);          hObject = v10;          if ( v10 != (HANDLE)-1 )          {            if ( ReadFile(v10, &Buffer, 0x400u, &iSize, 0) > 0 )            {              if ( iSize )              {                v13 = sub_10071C2(&Buffer, iSize);                v12 = dword_100C334;                dword_100C00C = v13;                v11 = v13 - 1;                if ( v11 )                {                  v14 = v11 - 1;                  if ( v14 )                  {                    if ( v14 == 1 )                      v12 = dword_100C340;                  }                  else                  {                    v12 = dword_100C33C;                  }                }                else                {                  v12 = dword_100C338;                }                SendDlgItemMessageW((HWND)hDlg, 257, 0x14Du, 0xFFFFFFFFu, v12);                sub_1002558((int)&word_100D588, 0x104u, (int)&String1);              }            }            CloseHandle(hObject);          }        }      }    }    return 0;  }  if ( a2 == 83 )  {    v7 = GetDlgCtrlID(*(HWND *)(a4 + 12));    if ( v7 != 257 && v7 != 259 )      return 0;    v18 = (ULONG_PTR)dword_1006D38;    v17 = 12;    v16 = lpszHelp;    v15 = *(HWND *)(a4 + 12);    goto LABEL_22;  }  if ( a2 == 123 )  {    if ( (HWND)hDlg == hWnd )    {      GetCursorPos(&Point);      ScreenToClient((HWND)hDlg, &Point);      v4 = ChildWindowFromPoint((HWND)hDlg, Point);    }    v6 = GetDlgCtrlID(v4);    if ( v6 != 257 && v6 != 259 )      return 0;    v18 = (ULONG_PTR)dword_1006D38;    v17 = 10;    v16 = lpszHelp;    v15 = v4;LABEL_22:    WinHelpW(v15, v16, v17, v18);    return 1;  }  if ( a2 == 272 )  {    SendDlgItemMessageW((HWND)hDlg, 257, 323u, 0, dword_100C334);    SendDlgItemMessageW((HWND)iSize, 257, 0x143u, 0, dword_100C338);    SendDlgItemMessageW((HWND)iSize, 257, 0x143u, 0, dword_100C33C);    SendDlgItemMessageW((HWND)iSize, 257, 0x143u, 0, dword_100C340);    v5 = dword_100C334;    switch ( dword_100C00C )    {      case 1:        v5 = dword_100C338;        break;      case 2:        v5 = dword_100C33C;        break;      case 3:        v5 = dword_100C340;        break;    }    SendDlgItemMessageW((HWND)iSize, 257, 0x14Du, 0xFFFFFFFFu, v5);  }  else  {    if ( a2 == 273 )      dword_100C00C = SendDlgItemMessageW((HWND)hDlg, 257, 0x147u, 0, 0);  }  return 0;}// 1006D38: using guessed type int dword_1006D38[6];// 100C00C: using guessed type int dword_100C00C;// 100C010: using guessed type int dword_100C010;//----- (0100765B) --------------------------------------------------------signed int __stdcall DialogFunc(HWND hWnd, int a2, unsigned __int16 a3, int a4){  int v4; // eax@9  int v5; // ST10_4@9  LRESULT v6; // eax@12  LRESULT v8; // eax@14  INT_PTR v9; // [sp-4h] [bp-E4h]@7  LPARAM lParam; // [sp+Ch] [bp-D4h]@14  WPARAM wParam; // [sp+10h] [bp-D0h]@14  WCHAR SrcStr; // [sp+14h] [bp-CCh]@9  unsigned int v13; // [sp+DCh] [bp-4h]@1  int v14; // [sp+E0h] [bp+0h]@1  v13 = (unsigned int)&v14 ^ dword_100C010;  if ( a2 == 272 )  {    SendMessageW(dword_100C028, 176u, (WPARAM)&wParam, (LPARAM)&lParam);    v8 = SendMessageW(dword_100C028, 0xC9u, wParam, 0);    sub_10015C3(&SrcStr, 0x64u, L"%d", v8 + 1);    SetDlgItemTextW(hWnd, 258, &SrcStr);    SetFocus(hWnd);    return 1;  }  if ( a2 != 273 )    return 0;  if ( a3 == 1 )  {    GetDlgItemTextW(hWnd, 258, &SrcStr, 100);    FoldStringW(0x80u, &SrcStr, -1, &SrcStr, 100);    dword_100E160 = wtol(&SrcStr);    v4 = ((int (__thiscall *)(int, HWND, signed int, int, _DWORD))SendMessageW)(           v5,           dword_100C028,           187,           dword_100E160 - 1,           0);    if ( dword_100E160 && v4 != -1 )    {      v9 = 0;      goto LABEL_8;    }    MessageBoxW(hWnd, dword_100C330, lpCaption, 0);    v6 = SendMessageW(dword_100C028, 0xBAu, 0, 0);    sub_10015C3(&SrcStr, 0x64u, L"%d", v6);    SetDlgItemTextW(hWnd, 258, &SrcStr);    SetFocus(hWnd);    return 0;  }  if ( a3 == 2 )  {    v9 = 1;LABEL_8:    EndDialog(hWnd, v9);    return 1;  }  if ( a3 != 258 )    return 0;  return 1;}// 100C010: using guessed type int dword_100C010;// 100E160: using guessed type int dword_100E160;//----- (010077F3) --------------------------------------------------------signed int __stdcall sub_10077F3(int a1){  signed int result; // eax@1  result = 0;  if ( !a1 )  {    if ( CommDlgExtendedError() )    {      sub_100432B();      result = -2147467259;    }    else    {      result = -2147023673;    }  }  return result;}//----- (01007823) --------------------------------------------------------signed int __stdcall sub_1007823(int a1, int *a2){  signed int v2; // edi@1  WCHAR *v3; // eax@2  int v4; // eax@3  v2 = -2147467259;  if ( a2 )  {    v3 = (WCHAR *)CoTaskMemAlloc(0x208u);    *a2 = (int)v3;    if ( v3 )    {      stru_100C1A0.lpstrFile = v3;      sub_1002558(*a2, 0x104u, (int)L"*.txt");      stru_100C1A0.lpstrTitle = (LPCWSTR)dword_100C30C;      stru_100C1A0.lpstrFilter = &Dest;      stru_100C1A0.lpstrDefExt = L"txt";      stru_100C1A0.Flags = 8917092;      stru_100C1A0.nFilterIndex = 1;      stru_100C1A0.lpTemplateName = (LPCWSTR)15;      stru_100C1A0.lpfnHook = (LPOFNHOOKPROC)sub_100739B;      v4 = GetOpenFileNameW(&stru_100C1A0);      v2 = sub_10077F3(v4);      if ( v2 < 0 )        CoTaskMemFree((LPVOID)*a2);    }  }  return v2;}// 1003C6C: using guessed type wchar_t aTxt[4];// 100C30C: using guessed type int dword_100C30C;//----- (010078D3) --------------------------------------------------------signed int __stdcall sub_10078D3(int a1, int a2, LPWSTR *a3){  signed int v3; // edi@1  int v4; // eax@2  int v5; // eax@3  v3 = -2147467259;  if ( a3 )  {    v4 = (int)CoTaskMemAlloc(0x208u);    *a3 = (LPWSTR)v4;    if ( v4 )    {      sub_1002558(v4, 0x104u, a2);      stru_100C1A0.lpstrFile = *a3;      stru_100C1A0.lpstrTitle = (LPCWSTR)dword_100C310;      stru_100C1A0.Flags = 8947814;      stru_100C1A0.lpTemplateName = (LPCWSTR)15;      stru_100C1A0.lpfnHook = (LPOFNHOOKPROC)sub_100722E;      stru_100C1A0.lpstrFilter = &word_100C7E0;      stru_100C1A0.lpstrDefExt = L"txt";      dword_100C038 = 1;      stru_100C1A0.nFilterIndex = 1;      v5 = GetSaveFileNameW(&stru_100C1A0);      v3 = sub_10077F3(v5);      if ( v3 < 0 )        CoTaskMemFree(*a3);    }  }  return v3;}// 1003C6C: using guessed type wchar_t aTxt[4];// 100C038: using guessed type int dword_100C038;// 100C310: using guessed type int dword_100C310;//----- (01007985) --------------------------------------------------------signed int __usercall sub_1007985<eax>(int a1<ebp>){  signed int result; // eax@1  HANDLE v2; // edi@1  v2 = hFile;  result = sub_1001664(0);  if ( result )  {    hFile = CreateFileW(&word_100D378, 0x80000000u, 3u, 0, 3u, 0x80u, 0);    if ( hFile == (HANDLE)-1 )    {      result = sub_1007BF6(&word_100D378);    }    else    {      result = sub_1002820(a1, (int)&word_100D378, -1);      if ( result )        return result;    }    hFile = v2;  }  return result;}//----- (010079E3) --------------------------------------------------------void __stdcall sub_10079E3(HDROP hDrop, HWND hWnd){  int ebp0; // ebp@0  if ( DragQueryFileW(hDrop, -1u, 0, 0) )  {    DragQueryFileW(hDrop, 0, (LPWSTR)&word_100D378, 0x104u);    SetActiveWindow(hWnd);    sub_1007985(ebp0);    SHAddToRecentDocs(3u, &word_100D378);  }  DragFinish(hDrop);}//----- (01007A3C) --------------------------------------------------------int __stdcall Proc(int a1, int a2, int a3, int a4){  *(_BYTE *)(a4 + 23) = *(_BYTE *)(a1 + 23);  return 0;}//----- (01007A58) --------------------------------------------------------int __userpurge sub_1007A58<eax>(int result<eax>, int a2, int a3, int a4){  int v4; // edx@1  int v5; // ecx@2  v4 = a4;  if ( a4 )  {    result = a3;    v5 = a2;    do    {      *(_WORD *)v5 = (*(_WORD *)result << 8) ^ *(_BYTE *)(result + 1);      v5 += 2;      result += 2;      --v4;    }    while ( v4 );  }  return result;}//----- (01007A90) --------------------------------------------------------signed int __stdcall sub_1007A90(HANDLE hFile, UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar){  int v6; // edi@5  HLOCAL v7; // eax@6  int v8; // esi@9  DWORD NumberOfBytesWritten; // [sp+4h] [bp-10h]@10  char v10; // [sp+8h] [bp-Ch]@4  LPCVOID hMem; // [sp+Ch] [bp-8h]@6  LPBOOL lpUsedDefaultChar; // [sp+10h] [bp-4h]@3  if ( !cchWideChar )    return 1;  lpUsedDefaultChar = 0;  if ( CodePage != 65001 )    lpUsedDefaultChar = (LPBOOL)&v10;  v6 = WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, 0, 0, 0, lpUsedDefaultChar);  if ( !v6 )    return 0;  v7 = LocalAlloc(0x40u, v6 + 1);  hMem = v7;  if ( !v7 )  {    SetLastError(8u);    return 0;  }  v8 = WideCharToMultiByte(CodePage, dwFlags, lpWideCharStr, cchWideChar, (LPSTR)v7, v6, 0, lpUsedDefaultChar);  if ( v8 )    v8 = WriteFile(hFile, hMem, v6, &NumberOfBytesWritten, 0);  LocalFree((HLOCAL)hMem);  return v8;}//----- (01007B40) --------------------------------------------------------LRESULT __cdecl sub_1007B40(){  LRESULT result; // eax@5  if ( wParam )  {    if ( dword_100C040 )    {      sub_1006FB9(1);    }    else    {      SendMessageW(dword_100C028, 0xB0u, (WPARAM)&dword_100D794, (LPARAM)&dword_100D790);      SendMessageW(dword_100C028, 0xB1u, 0, 0);    }    result = SendMessageW(dword_100C028, 0xC8u, 0, 0);  }  return result;}// 100C040: using guessed type int dword_100C040;//----- (01007BA2) --------------------------------------------------------LRESULT __cdecl sub_1007BA2(){  LRESULT result; // eax@1  result = 0;  if ( wParam )  {    if ( dword_100C040 )    {      result = sub_1008383(0x50200104u);    }    else    {      SendMessageW(dword_100C028, 200u, 1u, 0);      result = SendMessageW(dword_100C028, 0xB1u, dword_100D794, dword_100D790);    }  }  return result;}// 100C040: using guessed type int dword_100C040;//----- (01007BF6) --------------------------------------------------------int __stdcall sub_1007BF6(LPCWSTR lpString){  DWORD v1; // eax@1  int result; // eax@2  WCHAR Text; // [sp+4h] [bp-204h]@1  unsigned int v4; // [sp+204h] [bp-4h]@1  int v5; // [sp+208h] [bp+0h]@1  v4 = (unsigned int)&v5 ^ dword_100C010;  v1 = GetLastError();  if ( FormatMessageW(0x1200u, 0, v1, 0, &Text, 0x100u, 0) )    result = MessageBoxW(hWnd, &Text, szApp, 0x30u);  else    result = sub_1007051(hWnd, szApp, dword_100C2B0, lpString, 0x30u);  return result;}// 100C010: using guessed type int dword_100C010;//----- (01007C80) --------------------------------------------------------signed int __userpurge sub_1007C80<eax>(int a1<eax>, int a2<edx>, int a3<ecx>, int a4, int a5){  signed int result; // eax@1  int v6; // ebx@1  int v7; // edi@1  int v8; // esi@1  v6 = a1;  v8 = a2;  result = 0;  v7 = 0;  if ( !a2 )    goto LABEL_11;  do  {    if ( !a5 )      break;    if ( !*(_WORD *)v6 )      break;    *(_WORD *)a3 = *(_WORD *)v6;    a3 += 2;    v6 += 2;    --v8;    --a5;    ++v7;  }  while ( v8 );  if ( !v8 )  {LABEL_11:    a3 -= 2;    --v7;    result = -2147024774;  }  *(_WORD *)a3 = 0;  if ( a4 )    *(_DWORD *)a4 = v7;  return result;}//----- (01007CD7) --------------------------------------------------------signed int __stdcall sub_1007CD7(HWND hWnd, LPCWSTR lpString1, LPCWSTR lpBuffer){  DWORD v3; // eax@1  DWORD v5; // eax@8  bool v6; // ecx@8  LRESULT v7; // eax@10  int v8; // ebx@10  BOOL *v9; // eax@17  DWORD v10; // edi@17  int v11; // eax@19  BOOL v12; // eax@24  int v13; // edi@25  int v14; // eax@25  bool v15; // [sp+4h] [bp-14h]@8  BOOL UsedDefaultChar; // [sp+8h] [bp-10h]@1  HLOCAL hMem; // [sp+Ch] [bp-Ch]@10  UINT CodePage; // [sp+10h] [bp-8h]@17  DWORD NumberOfBytesWritten; // [sp+14h] [bp-4h]@15  const void *v20; // [sp+28h] [bp+10h]@11  v3 = 1;  UsedDefaultChar = 0;  if ( lpBuffer )    v3 = 3;  hFile = CreateFileW(lpString1, 0xC0000000u, v3, 0, 4u, 0x80u, 0);  if ( hFile == (HANDLE)-1 )  {    if ( lpBuffer || GetLastError() != 5 )      sub_1007BF6(lpString1);    return 0;  }  v5 = GetLastError();  v6 = v5 != 183;  v15 = v5 != 183;  if ( wParam )    sub_1007B40();  v8 = ((int (__thiscall *)(bool, HWND, signed int, _DWORD, _DWORD))SendMessageW)(v6, dword_100C028, 14, 0, 0);  v7 = SendMessageW(dword_100C028, 0xBDu, 0, 0);  hMem = (HLOCAL)v7;  if ( !v7 || (v20 = LocalLock((HLOCAL)v7), !v20) )    goto LABEL_30;  if ( dword_100E040 == 1 )  {    WriteFile(hFile, &unk_100CD54, 2u, &NumberOfBytesWritten, 0);    v12 = WriteFile(hFile, v20, 2 * v8, &NumberOfBytesWritten, 0);  }  else  {    if ( dword_100E040 == 2 )    {      v14 = WriteFile(hFile, &unk_100CD58, 2u, &NumberOfBytesWritten, 0);      sub_1007A58(v14, (int)v20, (int)v20, v8);      v13 = WriteFile(hFile, v20, 2 * v8, &NumberOfBytesWritten, 0);      sub_1007A58(v13, (int)v20, (int)v20, v8);      goto LABEL_28;    }    if ( dword_100E040 == 3 )      WriteFile(hFile, &unk_100CD50, 3u, &NumberOfBytesWritten, 0);    if ( dword_100E040 == 3 )    {      v9 = 0;      CodePage = 65001;      v10 = 0;    }    else    {      CodePage = GetACP();      v9 = &UsedDefaultChar;      v10 = 1024;    }    v11 = WideCharToMultiByte(CodePage, v10, (LPCWSTR)v20, v8, 0, 0, 0, v9);    if ( UsedDefaultChar || v8 && !v11 )    {      if ( sub_1007051(hWnd, szApp, dword_100C320, lpString1, 0x31u) == 2 )      {LABEL_31:        SetCursor(dword_100C094);        CloseHandle(hFile);        hFile = (HANDLE)-1;        if ( hMem )          LocalUnlock(hMem);        if ( v15 )          DeleteFileW(lpString1);        if ( wParam )          sub_1007BA2();        return 0;      }      v10 = 0;    }    v12 = sub_1007A90(hFile, CodePage, v10, (LPCWSTR)v20, v8);  }  v13 = v12;LABEL_28:  if ( !v13 )  {    SetCursor(dword_100C094);LABEL_30:    sub_1007BF6(lpString1);    goto LABEL_31;  }  SetEndOfFile(hFile);  dword_100C00C = dword_100E040;  SendMessageW(dword_100C028, 0xB9u, 0, 0);  sub_1002456(lpString1);  dword_100C008 = 0;  CloseHandle(hFile);  hFile = (HANDLE)-1;  LocalUnlock(hMem);  if ( wParam )    sub_1007BA2();  SetCursor(dword_100C094);  return 1;}// 100C008: using guessed type int dword_100C008;// 100C00C: using guessed type int dword_100C00C;// 100E040: using guessed type int dword_100E040;//----- (01007F99) --------------------------------------------------------signed int __stdcall sub_1007F99(int a1, unsigned int a2, int a3){  signed int result; // eax@1  unsigned int v4; // edx@1  int v5; // eax@5  int v6; // ecx@5  unsigned int v7; // esi@5  signed int v8; // [sp+14h] [bp+Ch]@5  v4 = a2;  result = 0;  if ( !a2 || a2 > 0x7FFFFFFF )    result = -2147024809;  if ( result < 0 )  {    v6 = 0;  }  else  {    v8 = 0;    v6 = 0;    v7 = v4;    v5 = a1;    if ( !v4 )      goto LABEL_17;    do    {      if ( !*(_WORD *)v5 )        break;      v5 += 2;      --v7;    }    while ( v7 );    if ( v7 )      v6 = v4 - v7;    elseLABEL_17:      v8 = -2147024809;    result = v8;  }  if ( result >= 0 )    result = sub_1007C80(a3, v4 - v6, a1 + 2 * v6, 0, 2147483647);  return result;}//----- (0100800F) --------------------------------------------------------signed int __stdcall sub_100800F(int a1){  signed int result; // eax@2  HLOCAL v2; // eax@3  if ( !a1 || (result = sub_1001664(0)) != 0 )  {    SendMessageW(dword_100C028, 12u, 0, (LPARAM)&szOtherStuff);    dword_100C008 = 1;    sub_1002558((int)&FileName, 0x104u, (int)lpString2);    sub_1002456(&FileName);    SendMessageW(dword_100C028, 0xB1u, 0, 0);    SendMessageW(dword_100C028, 0xB7u, 0, 0);    v2 = LocalReAlloc(hMem, 2u, 2u);    if ( v2 )      hMem = v2;    *(_WORD *)LocalLock(hMem) = 0;    LocalUnlock(hMem);    SendMessageW(dword_100C028, 0xBCu, (WPARAM)hMem, 0);    result = 0;    word_100C9E0 = 0;  }  return result;}// 100C008: using guessed type int dword_100C008;//----- (010080E4) --------------------------------------------------------int __stdcall sub_10080E4(int lpString, unsigned int a2){  int result; // eax@1  unsigned int i; // ecx@1  int v4; // edx@6  result = lstrlenW((LPCWSTR)lpString);  for ( i = lpString + 2 * result; ; i -= 2 )  {    v4 = *(_WORD *)i;    if ( v4 == 46 )      break;    if ( v4 == 92 || v4 == 58 || i <= lpString )      break;  }  if ( *(_WORD *)i != 46 )  {    result += 5;    if ( (unsigned int)result <= 0x104 )      result = sub_1007F99(lpString, a2, (int)L".txt");  }  return result;}// 1008134: using guessed type wchar_t a_txt_0[5];//----- (01008143) --------------------------------------------------------int __stdcall sub_1008143(int a1, int a2, int a3, int a4, int a5){  int v5; // eax@1  int result; // eax@3  v5 = FindNLSString(1024, a4 == 0 | 0x800000, a1, a2, a3, -1, a5);  if ( v5 == -1 || *(_DWORD *)a5 < 1 )    result = 0;  else    result = a1 + 2 * v5;  return result;}// 100102C: using guessed type int __stdcall FindNLSString(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);//----- (0100818F) --------------------------------------------------------int __stdcall sub_100818F(int a1, int a2, int a3, int a4, int a5){  int v5; // eax@1  int result; // eax@3  v5 = FindNLSString(1024, a4 == 0 | 0x400000, a1, a2, a3, -1, a5);  if ( v5 == -1 || *(_DWORD *)a5 < 1 )    result = 0;  else    result = a1 + 2 * v5;  return result;}// 100102C: using guessed type int __stdcall FindNLSString(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);//----- (010081DB) --------------------------------------------------------signed int __stdcall sub_10081DB(int a1){  signed int result; // eax@2  HMENU v2; // eax@3  HMENU v3; // eax@3  LRESULT v4; // eax@5  int v5; // ebx@6  int v6; // eax@9  int v7; // eax@11  int v8; // eax@12  int v9; // esi@13  HWND v10; // eax@15  HCURSOR v11; // edi@15  HMENU v12; // eax@19  HMENU v13; // [sp+4h] [bp-1Ch]@3  void *v14; // [sp+8h] [bp-18h]@5  signed int v15; // [sp+Ch] [bp-14h]@1  signed int v16; // [sp+10h] [bp-10h]@1  int v17; // [sp+14h] [bp-Ch]@11  WPARAM wParam; // [sp+18h] [bp-8h]@3  LPARAM lParam; // [sp+1Ch] [bp-4h]@3  v15 = 0;  v16 = 0;  if ( *(_WORD *)a1 )  {    SendMessageW(dword_100C028, 176u, (WPARAM)&wParam, (LPARAM)&lParam);    v2 = GetMenu(hWnd);    v13 = v2;    v3 = GetSubMenu(v2, 1);    if ( GetMenuState(v3, 0x19u, 0) == 1 )    {      v16 = 1;      lParam = 0;    }    v4 = SendMessageW(dword_100C028, 0xBDu, 0, 0);    v14 = (void *)v4;    if ( v4 && (v5 = (int)LocalLock((HLOCAL)v4)) != 0 )    {      if ( dword_100D79C )      {        v6 = lParam;        if ( wParam != lParam )          v6 = lParam - 1;        v7 = sub_1008143(v5, v6, a1, dword_100D798, (int)&v17);      }      else      {        v8 = GetWindowTextLengthW(dword_100C028);        v7 = sub_100818F(v5 + 2 * lParam, v8 - lParam, a1, dword_100D798, (int)&v17);      }      v9 = v7;      LocalUnlock(v14);      if ( v9 )      {        wParam = (v9 - v5) >> 1;        SendMessageW(dword_100C028, 0xB1u, wParam, wParam + v17);        if ( v16 )        {          v12 = GetSubMenu(v13, 1);          EnableMenuItem(v12, 0x19u, 0);        }        if ( !(stru_100C0C0.Flags & 0x20) )        {          SendMessageW(dword_100C028, 0xB7u, 0, 0);          sub_100170A(1u);        }        v15 = 1;      }      else      {        if ( !(stru_100C0C0.Flags & 0x20) )        {          v11 = SetCursor(dword_100C094);          v10 = dword_100CCE8;          if ( !dword_100CCE8 )            v10 = hWnd;          sub_1007051(v10, szApp, dword_100C2C4, &word_100C9E0, 0x40u);          SetCursor(v11);        }      }      result = v15;    }    else    {      result = 0;    }  }  else  {    result = 0;  }  return result;}// 100D798: using guessed type int dword_100D798;// 100D79C: using guessed type int dword_100D79C;//----- (01008383) --------------------------------------------------------signed int __stdcall sub_1008383(DWORD hWnd){  LONG v2; // eax@12  struct tagRECT Rect; // [sp+Ch] [bp-38h]@8  int v4; // [sp+1Ch] [bp-28h]@17  int v5; // [sp+20h] [bp-24h]@17  int v6; // [sp+24h] [bp-20h]@17  int v7; // [sp+28h] [bp-1Ch]@17  WPARAM wParam; // [sp+2Ch] [bp-18h]@3  LPARAM lParam; // [sp+30h] [bp-14h]@8  LRESULT v10; // [sp+34h] [bp-10h]@3  DWORD v11; // [sp+38h] [bp-Ch]@1  HCURSOR hCursor; // [sp+3Ch] [bp-8h]@1  HLOCAL hMem; // [sp+40h] [bp-4h]@3  HWND v14; // [sp+4Ch] [bp+8h]@8  v11 = (hWnd >> 20) & 1;  hCursor = SetCursor(::hCursor);  if ( (hWnd >> 20) & 1 )  {    sub_1006FB9(1);    SendMessageW(dword_100C028, 0xC8u, 0, 0);  }  wParam = SendMessageW(dword_100C028, 0xB8u, 0, 0) != 0;  v10 = SendMessageW(dword_100C028, 0xEu, 0, 0);  hMem = LocalAlloc(2u, 2 * v10 + 2);  if ( !hMem )  {    if ( v11 )      SendMessageW(dword_100C028, 0xC8u, 1u, 0);    SetCursor(hCursor);    return 0;  }  GetClientRect(::hWnd, &Rect);  lParam = (LPARAM)LocalLock(hMem);  SendMessageW(dword_100C028, 0xDu, v10 + 1, lParam);  v14 = CreateWindowExW(          0x200u,          L"Edit",          &szOtherStuff,          hWnd,          0,          0,          Rect.right,          Rect.bottom,          ::hWnd,          (HMENU)0xF,          hInstance,          0);  if ( !v14 )  {    SetCursor(hCursor);    if ( v11 )      SendMessageW(dword_100C028, 0xC8u, 1u, 0);LABEL_11:    LocalUnlock(hMem);    LocalFree(hMem);    return 0;  }  v2 = GetWindowLongW(dword_100C028, -20);  SetWindowLongW(v14, -20, v2 | 0x200);  SendMessageW(v14, 0x30u, (WPARAM)ho, 1);  if ( !SendMessageW(v14, 0xCu, 0, lParam) )  {    SetCursor(hCursor);    if ( v11 )      SendMessageW(dword_100C028, 0xC8u, 1u, 0);    DestroyWindow(v14);    goto LABEL_11;  }  LocalUnlock(hMem);  LocalFree(hMem);  DestroyWindow(dword_100C028);  dword_100C028 = v14;  ::hMem = (HLOCAL)SendMessageW(v14, 0xBDu, 0, 0);  PostMessageW(dword_100C028, 0xC5u, 0, 0);  ShowWindow(::hWnd, 5);  SendMessageW(dword_100C028, 0xB9u, wParam, 0);  SetFocus(dword_100C028);  SetCursor(hCursor);  if ( *(_DWORD *)&dword_100C02C )  {    GetClientRect(::hWnd, (LPRECT)&v4);    sub_1002409(v6 - v4, v7 - v5);    sub_100170A(1u);    ShowWindow(dword_100C024, 5);  }  return 1;}//----- (010085E5) --------------------------------------------------------int __stdcall sub_10085E5(int a1, int a2, int a3, int a4){  int v4; // eax@1  int v5; // ebx@1  int v6; // eax@2  int v7; // ecx@3  int v9; // [sp+Ch] [bp-4h]@1  v4 = a1;  v5 = 0;  v9 = 0;  *(_DWORD *)a4 = 0;  while ( 1 )  {    v6 = sub_100818F(v4, a2 - ((v4 - a1) >> 1), a3, dword_100D798, (int)&v9);    if ( !v6 )      break;    v7 = v9;    ++v5;    *(_DWORD *)a4 += v9;    v4 = v6 + 2 * v7;  }  return v5;}// 100D798: using guessed type int dword_100D798;//----- (01008639) --------------------------------------------------------size_t __cdecl sub_1008639(){  LRESULT v0; // eax@1  size_t result; // eax@2  int v2; // eax@4  int v3; // ebx@4  int v4; // edi@4  int v5; // eax@4  int v6; // eax@7  int v7; // esi@7  int v8; // eax@7  HGLOBAL v9; // edi@8  int v10; // eax@11  int v11; // ebx@11  int v12; // eax@11  int v13; // ST2C_4@11  void *v14; // edi@11  char v15; // zf@11  void *v16; // [sp+4h] [bp-24h]@1  LPARAM v17; // [sp+8h] [bp-20h]@4  int v18; // [sp+10h] [bp-18h]@4  int v19; // [sp+14h] [bp-14h]@7  size_t Size; // [sp+18h] [bp-10h]@1  HGLOBAL hMem; // [sp+1Ch] [bp-Ch]@8  int v22; // [sp+20h] [bp-8h]@7  void *Src; // [sp+24h] [bp-4h]@3  Size = 0;  v0 = SendMessageW(dword_100C028, 0xBDu, 0, 0);  v16 = (void *)v0;  if ( v0 && (Src = LocalLock((HLOCAL)v0)) != 0 )  {    v5 = GetWindowTextLengthW(dword_100C028);    v4 = v5;    v17 = v5;    v2 = sub_10085E5((int)Src, v5, (int)&word_100C9E0, (int)&v18);    v3 = v2;    if ( v2 )    {      if ( v2 > 1 )      {        v8 = lstrlenW(stru_100C0C0.lpstrReplaceWith);        v19 = v8;        v22 = v4;        v6 = v4 + v3 * v8 - v18;        v7 = 2 * v6 + 2;        if ( v7 > 0 )        {          v9 = GlobalAlloc(0, 2 * v6 + 2);          hMem = v9;          if ( v9 )          {            if ( v3 > 0 )            {              Size = 2 * v19;              v18 = v3;              do              {                v10 = sub_100818F((int)Src, v22, (int)&word_100C9E0, dword_100D798, (int)&v19);                v11 = v10;                v12 = (v10 - (_DWORD)Src) >> 1;                v22 -= v12 + v19;                v13 = 2 * v12;                memcpy(v9, Src, 2 * v12);                v14 = (char *)v9 + v13;                memcpy(v14, stru_100C0C0.lpstrReplaceWith, Size);                v9 = (char *)v14 + Size;                v15 = v18-- == 1;                Src = (void *)(v11 + 2 * v19);              }              while ( !v15 );            }            memcpy(v9, Src, v7 - 2 * ((signed int)(v9 - hMem) >> 1));            SendMessageW(dword_100C028, 177u, 0, v17);            SendMessageW(dword_100C028, 0xC2u, 1u, (LPARAM)hMem);            GlobalFree(hMem);            Size = 1;          }        }      }    }    else    {      Size = 1;    }    LocalUnlock(v16);    result = Size;  }  else  {    result = 0;  }  return result;}// 100D798: using guessed type int dword_100D798;//----- (010087C5) --------------------------------------------------------bool __stdcall proc(int a1, int a2){  struct tagMSG Msg; // [sp+4h] [bp-1Ch]@2  while ( !dword_100DE34 && PeekMessageW(&Msg, 0, 0, 0, 1u) )  {    if ( !hDlg || !IsDialogMessageW(hDlg, &Msg) )    {      TranslateMessage(&Msg);      DispatchMessageW(&Msg);    }  }  return dword_100DE34 == 0;}// 100DE34: using guessed type int dword_100DE34;//----- (0100882E) --------------------------------------------------------int __stdcall sub_100882E(HDC hdc){  int result; // eax@1  dword_100D7D8 = GetDeviceCaps(hdc, 8);  dword_100D7D4 = GetDeviceCaps(hdc, 10);  dword_100D7D0 = GetDeviceCaps(hdc, 90);  dword_100D7CC = GetDeviceCaps(hdc, 110);  y = GetDeviceCaps(hdc, 111);  dword_100D7C4 = GetDeviceCaps(hdc, 112);  result = GetDeviceCaps(hdc, 113);  dword_100D7C0 = result;  return result;}// 100D7C0: using guessed type int dword_100D7C0;// 100D7C4: using guessed type int dword_100D7C4;// 100D7D0: using guessed type int dword_100D7D0;// 100D7D4: using guessed type int dword_100D7D4;// 100D7D8: using guessed type int dword_100D7D8;//----- (0100888F) --------------------------------------------------------BOOL __cdecl sub_100888F(){  BOOL result; // eax@1  EnableWindow(hWnd, 1);  result = DestroyWindow(hDlg);  hDlg = 0;  return result;}//----- (010088B6) --------------------------------------------------------signed int __cdecl sub_10088B6(){  signed int result; // eax@3  const DEVMODEW *v1; // eax@4  LPVOID v2; // esi@4  HDC v3; // edi@6  if ( stru_100C140.hDevNames    || (stru_100C140.Flags |= 0x400u,        PageSetupDlgW(&stru_100C140),        stru_100C140.Flags &= 0xFFFFFBFFu,        stru_100C140.hDevNames) )  {    v2 = GlobalLock(stru_100C140.hDevNames);    v1 = 0;    if ( stru_100C140.hDevMode )      v1 = (const DEVMODEW *)GlobalLock(stru_100C140.hDevMode);    v3 = CreateDCW((LPCWSTR)v2 + *(_WORD *)v2, (LPCWSTR)v2 + *((_WORD *)v2 + 1), 0, v1);    GlobalUnlock(stru_100C140.hDevNames);    if ( stru_100C140.hDevMode )      GlobalUnlock(stru_100C140.hDevMode);    if ( v3 )    {      result = (signed int)v3;    }    else    {      MessageBoxW(hWnd, dword_100C318, szApp, 0x30u);      result = -1;    }  }  else  {    MessageBoxW(hWnd, dword_100C318, szApp, 0x30u);    result = -1;  }  return result;}//----- (01008987) --------------------------------------------------------signed int __cdecl sub_1008987(){  HLOCAL v1; // esi@3  HDC v2; // edi@7  DWORD pcbNeeded; // [sp+8h] [bp-8h]@3  HANDLE hPrinter; // [sp+Ch] [bp-4h]@1  if ( !OpenPrinterW(&pPrinterName, &hPrinter, 0) )    return -1;  GetPrinterDriverW(hPrinter, 0, 1u, 0, 0, &pcbNeeded);  v1 = LocalAlloc(0x40u, pcbNeeded);  if ( !v1 )    goto LABEL_6;  if ( !GetPrinterDriverW(hPrinter, 0, 1u, (LPBYTE)v1, pcbNeeded, &pcbNeeded) )  {    LocalFree(v1);LABEL_6:    ClosePrinter(hPrinter);    return -1;  }  stru_100C140.Flags |= 0x400u;  PageSetupDlgW(&stru_100C140);  stru_100C140.Flags &= 0xFFFFFBFFu;  v2 = CreateDCW(*(LPCWSTR *)v1, &pPrinterName, 0, 0);  LocalFree(v1);  ClosePrinter(hPrinter);  if ( !v2 )  {    MessageBoxW(hWnd, dword_100C318, szApp, 0x30u);    return -1;  }  return (signed int)v2;}//----- (01008A63) --------------------------------------------------------signed int __stdcall sub_1008A63(HWND hWnd, int a2, int a3, int a4){  LPCWSTR v5; // eax@8  if ( a2 == 272 )  {    dword_100D7A0 = GetSystemMenu(hWnd, 0);    if ( dword_100C008 )      v5 = lpString2;    else      v5 = sub_1007008(&FileName);    SetDlgItemTextW(hWnd, 20, v5);    SetFocus(hWnd);  }  else  {    if ( a2 == 273 )    {      dword_100DE34 = 1;      sub_100888F();    }    else    {      if ( a2 != 278 )        return 0;      EnableMenuItem(dword_100D7A0, 0xF060u, 1u);    }  }  return 1;}// 100C008: using guessed type int dword_100C008;// 100DE34: using guessed type int dword_100DE34;//----- (01008AEF) --------------------------------------------------------signed int __stdcall sub_1008AEF(int a1, int a2, int a3, int a4){  signed int result; // eax@1  result = 0;  if ( !a2 || (unsigned int)a2 > 0x7FFFFFFF )    result = -2147024809;  if ( result >= 0 )  {    if ( (unsigned int)a4 <= 0x7FFFFFFE )    {      result = sub_1007C80(a3, a2, a1, 0, a4);    }    else    {      result = -2147024809;      *(_WORD *)a1 = 0;    }  }  return result;}//----- (01008B3E) --------------------------------------------------------int *__stdcall sub_1008B3E(int a1){  const WCHAR v1; // cx@1  int *result; // eax@2  int *v3; // edx@4  int v4; // edi@4  int *v5; // ebx@6  int v6; // edi@6  int v7; // edx@8  int v8; // edx@9  __int16 v9; // cx@9  int v10; // eax@29  int v11; // eax@31  int v12; // eax@32  int v13; // edx@34  char v14; // zf@34  wint_t v15; // ax@35  int v16; // edx@35  int v17; // edx@36  signed int v18; // ecx@50  int v19; // edx@51  const WCHAR *v20; // [sp-8h] [bp-238h]@30  int v21; // [sp-4h] [bp-234h]@30  int v22; // [sp+Ch] [bp-224h]@1  int v23; // [sp+10h] [bp-220h]@1  int v24; // [sp+14h] [bp-21Ch]@1  int v25; // [sp+18h] [bp-218h]@29  int v26; // [sp+1Ch] [bp-214h]@1  int v27; // [sp+20h] [bp-210h]@1  const WCHAR Buf; // [sp+24h] [bp-20Ch]@38  unsigned int v29; // [sp+22Ch] [bp-4h]@1  int v30; // [sp+230h] [bp+0h]@1  v29 = (unsigned int)&v30 ^ dword_100C010;  v1 = *(_WORD *)a1;  v27 = a1;  v26 = 1;  v22 = 0;  v23 = 0;  v24 = 0;  if ( v1 )  {    result = (int *)dword_100C300;LABEL_5:    if ( v1 )      goto LABEL_3;    while ( 1 )    {      v5 = &v22 + v26;      v6 = *v5;      if ( (unsigned int)*v5 >= 0x104 || v6 < 0 )        return result;      v7 = v27;      if ( *(_WORD *)v27 == 38 )        break;LABEL_49:      v1 = *(_WORD *)v7;      if ( !*(_WORD *)v7 )        goto LABEL_50;LABEL_3:      if ( v1 != 38 )      {        v27 += 2;        v3 = &v22 + v26;        v4 = *v3;        *(&word_100D800 + *v3 + 260 * v26) = v1;        v1 = *(_WORD *)v27;        *v3 = v4 + 1;        goto LABEL_5;      }    }    v8 = v27 + 2;    v9 = *(_WORD *)(v27 + 2);    v27 += 2;    if ( v9 == *(_WORD *)result || v9 == *((_WORD *)result + 1) )    {      if ( dword_100C008 )        sub_1002558((int)&Buf, 0x104u, (int)lpString2);      else        GetFileTitleW(&FileName, (LPWSTR)&Buf, 0x104u);      if ( v6 + lstrlenW(&Buf) >= 260 )        goto LABEL_47;      sub_1002558((int)(&word_100D800 + v6 + 260 * v26), 260 - v6, (int)&Buf);      v11 = v6 + lstrlenW(&Buf);      goto LABEL_46;    }    if ( v9 == *((_WORD *)result + 2) || v9 == *((_WORD *)result + 3) )    {      v25 = 0;      v13 = v8 + 2;      v14 = *(_WORD *)v13 == 43;      v27 = v13;      if ( v14 )      {        v16 = v13 + 2;        v15 = *(_WORD *)v16;        v27 = v16;        while ( iswctype(v15, 4u) )        {          v17 = *(_WORD *)v27;          v27 += 2;          v15 = *(_WORD *)v27;          v25 = 10 * v25 + v17 - 48;        }      }      sub_10015C3((wchar_t *)&Buf, 0x104u, L"%d", v25 + *(_DWORD *)dword_100D7AC);      if ( v6 + lstrlenW(&Buf) < 260 )      {        sub_1002558((int)(&word_100D800 + v6 + 260 * v26), 260 - v6, (int)&Buf);        *v5 = v6 + lstrlenW(&Buf);      }      v27 -= 2;      goto LABEL_47;    }    if ( v9 == *((_WORD *)result + 4) || v9 == *((_WORD *)result + 5) )    {      v12 = lstrlenW(&word_100CF68);      v25 = v6 + v12;      if ( v6 + v12 < 260 )      {        v21 = v12;        v20 = &word_100CF68;        goto LABEL_31;      }    }    else    {      if ( v9 != *((_WORD *)result + 6) && v9 != *((_WORD *)result + 7) )      {        if ( v9 == 38 )        {          if ( v6 + 1 < 260 )          {            *(&word_100D800 + v6 + 260 * v26) = 38;            *v5 = v6 + 1;          }        }        else        {          if ( v9 == *((_WORD *)result + 8) || v9 == *((_WORD *)result + 9) )          {            v26 = 1;          }          else          {            if ( v9 == *((_WORD *)result + 10) || v9 == *((_WORD *)result + 11) )            {              v26 = 2;            }            else            {              if ( v9 == *((_WORD *)result + 12) || v9 == *((_WORD *)result + 13) )                v26 = 0;            }          }        }        goto LABEL_48;      }      v10 = lstrlenW(&word_100CD60);      v25 = v6 + v10;      if ( v6 + v10 < 260 )      {        v21 = v10;        v20 = &word_100CD60;LABEL_31:        sub_1008AEF((int)(&word_100D800 + v6 + 260 * v26), 260 - v6, (int)v20, v21);        v11 = v25;LABEL_46:        *v5 = v11;        goto LABEL_47;      }    }LABEL_47:    result = (int *)dword_100C300;LABEL_48:    v7 = v27 + 2;    v27 += 2;    goto LABEL_49;  }LABEL_50:  v18 = 0;  result = &v22;  do  {    v19 = v18 + *result;    v18 += 260;    ++result;    *(&word_100D800 + v19) = 0;  }  while ( v18 <= 520 );  return result;}// 100C008: using guessed type int dword_100C008;// 100C010: using guessed type int dword_100C010;// 100C300: using guessed type int dword_100C300;//----- (01008EF2) --------------------------------------------------------signed int __stdcall sub_1008EF2(HDC hdc, int y){  __int16 v2; // bx@1  signed int result; // eax@2  int v4; // eax@4  int v5; // eax@7  int v6; // eax@9  int v7; // edi@9  int v8; // eax@9  int v9; // eax@11  int v10; // edi@11  int v11; // eax@11  struct tagSIZE psizl; // [sp+4h] [bp-8h]@9  int v13; // [sp+18h] [bp+Ch]@6  v2 = 0;  if ( *(&word_100C740 + 40 * y) )  {    sub_1008B3E((int)(&word_100C740 + 40 * y));    if ( y )      v4 = dword_100D7D4 - dword_100DE30 - dword_100D7B8;    else      v4 = dword_100D7BC;    v13 = v4;    if ( word_100D800 )    {      v5 = lstrlenW(&word_100D800);      TextOutW(hdc, x, v13, &word_100D800, v5);    }    if ( word_100DA08 )    {      v6 = lstrlenW(&word_100DA08);      GetTextExtentPoint32W(hdc, &word_100DA08, v6, &psizl);      v7 = (x + dword_100D7D8 - dword_100D7B0) / 2 - psizl.cx / 2;      v8 = lstrlenW(&word_100DA08);      TextOutW(hdc, v7, v13, &word_100DA08, v8);      v2 = 0;    }    if ( word_100DC10 != v2 )    {      v9 = lstrlenW(&word_100DC10);      GetTextExtentPoint32W(hdc, &word_100DC10, v9, &psizl);      v10 = dword_100D7D8 - dword_100D7B0 - psizl.cx;      v11 = lstrlenW(&word_100DC10);      TextOutW(hdc, v10, v13, &word_100DC10, v11);    }    result = 1;  }  else  {    result = 0;  }  return result;}// 100D7B0: using guessed type int dword_100D7B0;// 100D7B8: using guessed type int dword_100D7B8;// 100D7BC: using guessed type int dword_100D7BC;// 100D7D4: using guessed type int dword_100D7D4;// 100D7D8: using guessed type int dword_100D7D8;// 100DE30: using guessed type int dword_100DE30;//----- (0100900D) --------------------------------------------------------signed int __stdcall sub_100900D(HDC a1){  HFONT v1; // eax@1  DWORD v2; // esi@1  HDC v3; // ST0C_4@1  HFONT v4; // eax@5  HGDIOBJ v5; // eax@5  __int32 v6; // eax@16  DWORD v7; // edi@21  LRESULT v8; // eax@22  int v9; // ebx@31  signed int result; // eax@59  struct tagTEXTMETRICW tm; // [sp+Ch] [bp-3C8h]@3  struct tagDRAWTEXTPARAMS dtp; // [sp+48h] [bp-38Ch]@34  int v13; // [sp+5Ch] [bp-378h]@25  WCHAR *v14; // [sp+60h] [bp-374h]@25  int v15; // [sp+64h] [bp-370h]@25  int v16; // [sp+68h] [bp-36Ch]@25  int v17; // [sp+6Ch] [bp-368h]@25  struct tagRECT rc; // [sp+70h] [bp-364h]@27  int v19; // [sp+80h] [bp-354h]@27  HLOCAL hMem; // [sp+84h] [bp-350h]@1  int v21; // [sp+88h] [bp-34Ch]@1  HGDIOBJ ho; // [sp+8Ch] [bp-348h]@1  int v23; // [sp+90h] [bp-344h]@1  HGDIOBJ h; // [sp+94h] [bp-340h]@1  LPCWSTR lpchText; // [sp+98h] [bp-33Ch]@1  HDC hdc; // [sp+9Ch] [bp-338h]@1  LOGFONTW lf; // [sp+A0h] [bp-334h]@1  WCHAR String; // [sp+FCh] [bp-2D8h]@24  wchar_t Dest; // [sp+304h] [bp-D0h]@34  unsigned int v30; // [sp+3D0h] [bp-4h]@1  int v31; // [sp+3D4h] [bp+0h]@1  v30 = (unsigned int)&v31 ^ dword_100C010;  hdc = a1;  hMem = 0;  h = 0;  v23 = 0;  v21 = 0;  lpchText = 0;  dword_100DE34 = 0;  hDlg = 0;  SetCursor(hCursor);  sub_100882E(a1);  GetLocalTime(&SystemTime);  GetDateFormatW(0x400u, 2u, &SystemTime, 0, (LPWSTR)&word_100CD60, 260);  GetTimeFormatW(0x400u, 0, &SystemTime, 0, (LPWSTR)&word_100CF68, 260);  memcpy(&lf, &::lf, sizeof(lf));  lf.lfWidth = 0;  lf.lfHeight = *(_DWORD *)&Data * dword_100D7D0 / -720;  ((void (__fastcall *)(signed int, int, HDC, signed int))SetMapMode)(    -720,    *(_DWORD *)&Data * dword_100D7D0 % -720,    a1,    8);  SetViewportExtEx(a1, dword_100D7CC, y, 0);  SetWindowExtEx(a1, stru_100C140.ptPaperSize.x, stru_100C140.ptPaperSize.y, 0);  pt.x = stru_100C140.rtMargin.left;  pt.y = stru_100C140.rtMargin.top;  *((_DWORD *)&pt + 2) = stru_100C140.rtMargin.right;  v3 = hdc;  *((_DWORD *)&pt + 3) = stru_100C140.rtMargin.bottom;  LPtoDP(v3, &pt, 2);  SetMapMode(hdc, 1);  v1 = CreateFontIndirectW(&lf);  ho = v1;  v2 = 0;  if ( !v1    || (h = SelectObject(hdc, v1), !h)    || (SetBkMode(hdc, 1), !GetTextMetricsW(hdc, &tm))    || !(tm.tmPitchAndFamily & 6)    && ((v5 = SelectObject(hdc, h),         DeleteObject(v5),         memset(lf.lfFaceName, 0, 0x40u),         v4 = CreateFontIndirectW(&lf),         ho = v4,         !v4)     || (h = SelectObject(hdc, v4), !h)     || !GetTextMetricsW(hdc, &tm)) )    goto LABEL_54;  dword_100DE3C = 8 * tm.tmAveCharWidth;  dword_100DE30 = tm.tmHeight + tm.tmExternalLeading;  x = pt.x - dword_100D7C4;  if ( pt.x - dword_100D7C4 <= 0 )    x = 0;  dword_100D7B0 = dword_100DE28 + dword_100D7D8 - dword_100D7CC + dword_100D7C4;  if ( dword_100DE28 + dword_100D7D8 - dword_100D7CC + dword_100D7C4 <= 0 )    dword_100D7B0 = 0;  dword_100D7BC = pt.y - dword_100D7C0;  if ( pt.y - dword_100D7C0 <= 0 )    dword_100D7BC = 0;  dword_100D7B8 = dword_100DE2C + dword_100D7D4 - y + dword_100D7C0;  if ( dword_100DE2C + dword_100D7D4 - y + dword_100D7C0 <= 0 )    dword_100D7B8 = 0;  v6 = (dword_100D7D4 - dword_100D7B8 - dword_100D7BC) / (tm.tmHeight + tm.tmExternalLeading);  if ( word_100C740 )    --v6;  if ( *(_WORD *)&Dst )    --v6;  if ( v6 <= 0 )  {LABEL_53:    MessageBoxW(hWnd, dword_100C324, szApp, 0x30u);    SetLastError(v2);LABEL_54:    v7 = GetLastError();    goto LABEL_41;  }  v7 = SetAbortProc(hdc, (ABORTPROC)proc);  if ( (signed int)v7 < 0 )    goto LABEL_41;  v8 = SendMessageW(dword_100C028, 0xBDu, 0, 0);  hMem = (HLOCAL)v8;  if ( !v8    || (lpchText = (LPCWSTR)LocalLock((HLOCAL)v8), !lpchText)    || (GetWindowTextW(hWnd, &String, 260),        EnableWindow(hWnd, 0),        hDlg = CreateDialogParamW(hInstance, (LPCWSTR)0xB, hWnd, (DLGPROC)sub_1008A63, 0),        !hDlg) )    goto LABEL_54;  v13 = 20;  v14 = &String;  v15 = 0;  v16 = 0;  v17 = 0;  SetLastError(0);  if ( StartDocW(hdc, (const DOCINFOW *)&v13) > 0 )  {    v21 = 1;    *(_DWORD *)dword_100D7AC = 1;    rc.left = x;    v19 = 0;    rc.right = dword_100D7D8 - dword_100D7B0;    rc.top = dword_100D7BC;    v23 = 0;    rc.bottom = dword_100D7D4 - dword_100D7B8;    if ( word_100C740 )      rc.top += dword_100DE30;    if ( *(_WORD *)&Dst )      rc.bottom = dword_100D7D4 - dword_100D7B8 - dword_100DE30;    v9 = lstrlenW(lpchText);    if ( GetWindowLongW(dword_100C028, -20) & 0x2000 )      v19 = 131074;    while ( 1 )    {      if ( dword_100DE34 || v9 <= 0 )      {        v7 = 0;        goto LABEL_40;      }      sub_10015C3(&Dest, 0x65u, dword_100C344, *(_DWORD *)dword_100D7AC);      SetDlgItemTextW(hDlg, 21, &Dest);      sub_1008EF2(hdc, 0);      dtp.iLeftMargin = 0;      dtp.iRightMargin = 0;      dtp.uiLengthDrawn = 0;      dtp.cbSize = 20;      dtp.iTabLength = dword_100DE3C;      if ( StartPage(hdc) <= 0        || (v23 = 1,            DrawTextExW(hdc, (LPWSTR)lpchText, v9, &rc, v19 | 0x2850, &dtp),            sub_1008EF2(hdc, 1),            EndPage(hdc) <= 0) )        goto LABEL_26;      v23 = 0;      ++*(_DWORD *)dword_100D7AC;      if ( !dtp.uiLengthDrawn )        break;      lpchText += dtp.uiLengthDrawn;      v9 -= dtp.uiLengthDrawn;    }    v2 = 0;    goto LABEL_53;  }LABEL_26:  v7 = GetLastError();LABEL_40:  v2 = 0;LABEL_41:  if ( h != (HGDIOBJ)v2 )  {    SelectObject(hdc, h);    DeleteObject(ho);  }  if ( lpchText != (LPCWSTR)v2 )    LocalUnlock(hMem);  if ( v23 != v2 )  {    if ( EndPage(hdc) <= 0 )    {      if ( v7 == v2 )        v7 = GetLastError();    }  }  if ( v21 != v2 )  {    if ( dword_100DE34 == v2 )    {      if ( EndDoc(hdc) <= 0 )      {        if ( v7 == v2 )          v7 = GetLastError();      }    }    else    {      AbortDoc(hdc);    }  }  DeleteDC(hdc);  sub_100888F();  SetCursor(dword_100C094);  if ( dword_100DE34 == v2 )    result = v7;  else    result = -3;  return result;}// 100C010: using guessed type int dword_100C010;// 100D7B0: using guessed type int dword_100D7B0;// 100D7B8: using guessed type int dword_100D7B8;// 100D7BC: using guessed type int dword_100D7BC;// 100D7C0: using guessed type int dword_100D7C0;// 100D7C4: using guessed type int dword_100D7C4;// 100D7D0: using guessed type int dword_100D7D0;// 100D7D4: using guessed type int dword_100D7D4;// 100D7D8: using guessed type int dword_100D7D8;// 100DE28: using guessed type int dword_100DE28;// 100DE2C: using guessed type int dword_100DE2C;// 100DE30: using guessed type int dword_100DE30;// 100DE34: using guessed type int dword_100DE34;// 100DE3C: using guessed type int dword_100DE3C;//----- (010096AE) --------------------------------------------------------bool __stdcall sub_10096AE(LCID Locale){  WCHAR LCData; // [sp+0h] [bp-24h]@1  int v3; // [sp+Eh] [bp-16h]@2  unsigned int v4; // [sp+20h] [bp-4h]@1  int v5; // [sp+24h] [bp+0h]@1  v4 = (unsigned int)&v5 ^ dword_100C010;  return GetLocaleInfoW(Locale, 0x58u, &LCData, 16) && v3 & 0x800;}// 100C010: using guessed type int dword_100C010;//----- (010096F8) --------------------------------------------------------bool __stdcall sub_10096F8(int a1){  LANGID v1; // ax@2  bool result; // eax@2  if ( a1 == 1 )  {    v1 = GetUserDefaultUILanguage();    result = sub_10096AE(v1);  }  else  {    result = a1 == 6 || a1 == 23 || a1 == 10 || a1 == 8;  }  return result;}//----- (0100973A) --------------------------------------------------------bool __stdcall sub_100973A(bool a1){  bool result; // eax@1  char v2; // zf@2  WCHAR LCData[2]; // [sp+4h] [bp-4h]@1  *(_DWORD *)LCData = 1;  result = sub_10096AE(0x400u);  if ( result )  {    GetLocaleInfoW(0x400u, 0x20001009u, LCData, 2);    v2 = sub_10096F8(*(int *)LCData) == 0;    result = a1;    if ( v2 )      *(_DWORD *)a1 |= 0x10u;    else      *(_DWORD *)a1 |= 0x20u;  }  return result;}//----- (0100978A) --------------------------------------------------------LRESULT __stdcall sub_100978A(int a1){  struct _SYSTEMTIME SystemTime; // [sp+8h] [bp-3ECh]@1  DWORD dwFlags; // [sp+18h] [bp-3DCh]@1  WCHAR DateStr; // [sp+1Ch] [bp-3D8h]@1  _WORD lParam[330]; // [sp+BCh] [bp-338h]@1  WCHAR TimeStr; // [sp+350h] [bp-A4h]@1  unsigned int v7; // [sp+3F0h] [bp-4h]@1  int v8; // [sp+3F4h] [bp+0h]@1  v7 = (unsigned int)&v8 ^ dword_100C010;  lParam[0] = 0;  memset(&lParam[1], 0, 0x292u);  dwFlags = 1;  GetLocalTime(&SystemTime);  sub_100973A((bool)&dwFlags);  GetDateFormatW(0x400u, dwFlags, &SystemTime, 0, &DateStr, 80);  GetTimeFormatW(0x400u, 2u, &SystemTime, 0, &TimeStr, 80);  if ( a1 )    sub_1007F99((int)lParam, 0x14Au, (int)L"\r\n");  sub_1007F99((int)lParam, 0x14Au, (int)&TimeStr);  sub_1007F99((int)lParam, 0x14Au, (int)&dword_10098B8);  sub_1007F99((int)lParam, 0x14Au, (int)&DateStr);  if ( a1 )    sub_1007F99((int)lParam, 0x14Au, (int)L"\r\n");  return SendMessageW(dword_100C028, 0xC2u, 1u, (LPARAM)lParam);}// 10098B8: using guessed type int dword_10098B8;// 10098BC: using guessed type wchar_t asc_10098BC[3];// 100C010: using guessed type int dword_100C010;//----- (010098C7) --------------------------------------------------------signed int __stdcall sub_10098C7(int a1, int a2){  int v2; // edx@1  int v3; // ecx@1  signed int v4; // esi@1  unsigned __int8 v5; // al@2  signed int result; // eax@8  v3 = 0;  v4 = 1;  v2 = 0;  if ( a2 <= 0 )    goto LABEL_8;  do  {    v5 = *(_BYTE *)(v3 + a1);    if ( (char)v5 < 0 )      v4 = 0;    if ( v2 )    {      if ( (v5 & 0xC0) != -128 )        goto LABEL_8;      --v2;    }    else    {      if ( v5 >= 0x80u )      {        do        {          v5 *= 2;          ++v2;        }        while ( (char)v5 < 0 );        --v2;        if ( !v2 )          goto LABEL_8;      }    }    ++v3;  }  while ( v3 < a2 );  if ( v2 || v4 )LABEL_8:    result = 0;  else    result = 1;  return result;}//----- (0100991D) --------------------------------------------------------BOOL __stdcall sub_100991D(const void *lpv, int iSize){  BOOL result; // eax@1  int iResult; // [sp+0h] [bp-4h]@1  iResult = -1;  result = IsTextUnicode(lpv, iSize, &iResult);  if ( result )  {    if ( iResult == 2 )    {      if ( iSize < 100 )        result = 0;    }  }  return result;}//----- (01009952) --------------------------------------------------------signed int __usercall sub_1009952<eax>(int a1<eax>, int a2<edx>, int a3<edi>){  signed int result; // eax@1  int v4; // ecx@1  int v5; // esi@1  v5 = a1;  result = 0;  v4 = a2;  if ( !a2 )    goto LABEL_12;  do  {    if ( !*(_WORD *)v5 )      break;    v5 += 2;    --a2;  }  while ( a2 );  if ( !a2 )LABEL_12:    result = -2147024809;  if ( a3 )  {    if ( result < 0 )      *(_DWORD *)a3 = 0;    else      *(_DWORD *)a3 = v4 - a2;  }  return result;}//----- (01009989) --------------------------------------------------------signed int __stdcall sub_1009989(HWND hwnd, int a2, __int16 a3, int a4){  BOOL v4; // eax@6  signed int v5; // edi@6  HWND v7; // eax@14  HWND v8; // eax@14  OLECHAR *v9; // edi@18  int v10; // eax@22  struct _SHELLEXECUTEINFOW ExecInfo; // [sp+Ch] [bp-368h]@12  HWND ppv; // [sp+48h] [bp-32Ch]@1  struct _OSVERSIONINFOW VersionInformation; // [sp+4Ch] [bp-328h]@6  char v14; // [sp+166h] [bp-20Eh]@7  WCHAR Buffer; // [sp+168h] [bp-20Ch]@11  unsigned int v16; // [sp+370h] [bp-4h]@1  int v17; // [sp+374h] [bp+0h]@1  v16 = (unsigned int)&v17 ^ dword_100C010;  ppv = GetAncestor(hwnd, 2u);  if ( a2 == 78 )  {    v10 = *(_DWORD *)(a4 + 8);    if ( (v10 == -4 || v10 == -2) && *(_DWORD *)(a4 + 4) == 51202 )    {      v5 = 1;      if ( LoadStringW((HINSTANCE)0x1000000, 0xC808u, &Buffer, 260) )      {        memset(&ExecInfo.fMask, 0, 0x38u);        ExecInfo.lpFile = &Buffer;        ExecInfo.cbSize = 60;        ExecInfo.nShow = 1;        ExecInfo.fMask = 256;        ShellExecuteExW(&ExecInfo);      }      return v5;    }    return 0;  }  if ( a2 == 83 )  {    ppv = 0;    if ( CoInitialize(0) >= 0 )    {      if ( CoCreateInstance(&stru_10043E0, 0, 0x17u, &stru_10043D0, (LPVOID *)&ppv) >= 0 )      {        if ( LoadStringW((HINSTANCE)0x1000000, 0xC805u, &Buffer, 260) )        {          v9 = SysAllocString(&Buffer);          if ( v9 )          {            (*(void (__stdcall **)(HWND, OLECHAR *))(*(_DWORD *)ppv + 16))(ppv, v9);            SysFreeString(v9);          }        }        (*(void (__stdcall **)(HWND))(*(_DWORD *)ppv + 8))(ppv);      }      CoUninitialize();    }    return 0;  }  if ( a2 == 272 )  {    v7 = GetParent(hwnd);    PostMessageW(v7, 1162u, 16u, 20);    v8 = GetParent(hwnd);    PostMessageW(v8, 0x48Bu, 0x10u, 17);    SetWindowPos(ppv, HWND_MESSAGE|0x2, 0, 0, 0, 0, 3u);    return 1;  }  if ( a2 != 273 || a3 != -14335 )    return 0;  SetWindowPos(ppv, (HWND)0xFFFFFFFE, 0, 0, 0, 0, 3u);  VersionInformation.dwOSVersionInfoSize = 284;  v4 = GetVersionExW(&VersionInformation);  v5 = 1;  if ( v4 )    v4 = v14 == 3 || v14 == 2;  if ( LoadStringW((HINSTANCE)0x1000000, 51207 - (v4 != 0), &Buffer, 260) )  {    memset(&ExecInfo.fMask, 0, 0x38u);    ExecInfo.lpFile = &Buffer;    ExecInfo.cbSize = 60;    ExecInfo.nShow = 1;    ExecInfo.fMask = 256;    ShellExecuteExW(&ExecInfo);  }  PostMessageW(ppv, 0x10u, 0, 0);  return v5;}// 100C010: using guessed type int dword_100C010;//----- (01009C2A) --------------------------------------------------------void __stdcall StartAddress(int a1){  const PROPSHEETPAGEW_V3 constPropSheetPagePointer; // [sp+8h] [bp-70h]@1  const PROPSHEETHEADERW_V2 v2; // [sp+40h] [bp-38h]@2  HPROPSHEETPAGE v3; // [sp+74h] [bp-4h]@1  memset(&constPropSheetPagePointer.dwFlags, 0, 0x34u);  constPropSheetPagePointer.dwSize = 56;  constPropSheetPagePointer.dwFlags = 4096;  constPropSheetPagePointer.hInstance = (HINSTANCE)16777216;  constPropSheetPagePointer.pszTemplate = (LPCWSTR)51200;  constPropSheetPagePointer.pfnDlgProc = (DLGPROC)sub_1009989;  constPropSheetPagePointer.pszHeaderTitle = (LPCWSTR)51203;  constPropSheetPagePointer.lParam = 0;  v3 = CreatePropertySheetPageW(&constPropSheetPagePointer);  if ( v3 )  {    memset(&v2.dwFlags, 0, 0x30u);    v2.ppsp = (LPCPROPSHEETPAGEW)&v3;    v2.dwSize = 52;    v2.dwFlags = 16416;    v2.hwndParent = 0;    v2.hInstance = (HINSTANCE)16777216;    v2.pszCaption = (LPCWSTR)51204;    v2.nPages = 1;    PropertySheetW(&v2);  }  InterlockedExchange(&Target, 0);  FreeLibraryAndExitThread((HMODULE)0x1000000, 0);}//----- (01009CDF) --------------------------------------------------------signed int __stdcall sub_1009CDF(int a1, int a2, int a3){  signed int result; // eax@1  result = 0;  if ( !a2 || (unsigned int)a2 > 0x7FFFFFFF )    result = -2147024809;  if ( result >= 0 )    result = sub_1007C80(a3, a2, a1, 0, 2147483646);  return result;}//----- (01009D19) --------------------------------------------------------signed int __stdcall sub_1009D19(int a1, int a2, int a3){  signed int result; // eax@1  int v4; // ebx@4  int v5; // ecx@5  result = 0;  if ( !a2 || (unsigned int)a2 > 0x7FFFFFFF )    result = -2147024809;  v4 = a1;  if ( result < 0 )  {    v5 = 0;  }  else  {    result = sub_1009952(a1, a2, (int)&a1);    v5 = a1;  }  if ( result >= 0 )    result = sub_1007C80(a3, a2 - v5, v4 + 2 * v5, 0, 2147483647);  return result;}//----- (01009D73) --------------------------------------------------------int __cdecl sub_1009D73(int a1, int a2, int a3, int a4){  return except_handler4_common(&dword_100C010, sub_1001564, a1, a2, a3, a4);}// 1009FF1: using guessed type int __cdecl except_handler4_common(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);// 100C010: using guessed type int dword_100C010;//----- (01009D9D) --------------------------------------------------------int __stdcall sub_1009D9D(int a1){  _DWORD *v1; // eax@1  int v2; // eax@3  v1 = *(_DWORD **)a1;  if ( **(_DWORD **)a1 == -529697949 )  {    if ( v1[4] == 3 )    {      v2 = v1[5];      if ( v2 == 429065504 || v2 == 429065505 || v2 == 429065506 || v2 == 26820608 )        terminate();    }  }  return 0;}// 100132C: using guessed type void __cdecl terminate();//----- (01009DF0) --------------------------------------------------------bool __cdecl sub_1009DF0(int a1){  bool result; // eax@2  int v2; // eax@3  if ( *(_WORD *)a1 != 23117 || (v2 = a1 + *(_DWORD *)(a1 + 60), *(_DWORD *)v2 != 17744) )    result = 0;  else    result = *(_WORD *)(v2 + 24) == 267;  return result;}//----- (01009E2A) --------------------------------------------------------int __cdecl sub_1009E2A(int a1, unsigned int a2){  int result; // eax@1  unsigned int v3; // edx@1  unsigned int v4; // esi@1  int v5; // ecx@1  unsigned int v6; // ecx@2  v5 = a1 + *(_DWORD *)(a1 + 60);  v4 = *(_WORD *)(v5 + 6);  v3 = 0;  result = *(_WORD *)(v5 + 20) + v5 + 24;  if ( *(_WORD *)(v5 + 6) )  {    while ( 1 )    {      v6 = *(_DWORD *)(result + 12);      if ( a2 >= v6 )      {        if ( a2 < v6 + *(_DWORD *)(result + 8) )          break;      }      ++v3;      result += 40;      if ( v3 >= v4 )        goto LABEL_5;    }  }  else  {LABEL_5:    result = 0;  }  return result;}//----- (01009E73) --------------------------------------------------------int __usercall sub_1009E73<eax>(int a1<ebp>){  sub_1003B0C((int)dword_1009EE0, 8);  *(_DWORD *)(a1 - 4) = 0;  if ( sub_1009DF0(16777216) && sub_1009E2A(16777216, *(_DWORD *)(a1 + 8) - 16777216) )    *(_DWORD *)(a1 - 4) = -2;  else    *(_DWORD *)(a1 - 4) = -2;  return sub_10023D0(a1);}// 10023D0: using guessed type _DWORD __usercall sub_10023D0<eax>(_DWORD ebp0<ebp>);// 1009EE0: using guessed type int dword_1009EE0[2];//----- (01009F07) --------------------------------------------------------BOOL __usercall sub_1009F07<eax>(char _CF<cf>, char _ZF<zf>, char _SF<sf>, char _OF<of>, int a5<eax>, int a6<edx>, int a7<ecx>, int a8<ebx>, int a9<edi>, int a10<esi>, char a11){  int v12; // ST04_4@1  int v13; // ST330_4@1  HANDLE v14; // eax@1  int v15; // [sp+32Ch] [bp+4h]@1  dword_100C470 = a5;  dword_100C46C = a7;  dword_100C468 = a6;  dword_100C464 = a8;  dword_100C460 = a10;  dword_100C45C = a9;  word_100C488 = __SS__;  word_100C47C = __CS__;  word_100C458 = __DS__;  word_100C454 = __ES__;  word_100C450 = __FS__;  word_100C44C = __GS__;  __asm { pushf }  dword_100C480 = v12;  dword_100C474 = v13;  dword_100C478 = v15;  dword_100C484 = (int)&a11;  dword_100C3C0 = 65537;  dword_100C37C = dword_100C478;  dword_100C370 = -1073740791;  dword_100C374 = 1;  SetUnhandledExceptionFilter(0);  UnhandledExceptionFilter(&ExceptionInfo);  v14 = GetCurrentProcess();  return TerminateProcess(v14, 0xC0000409u);}// 100C370: using guessed type int dword_100C370;// 100C374: using guessed type int dword_100C374;// 100C37C: using guessed type int dword_100C37C;// 100C3C0: using guessed type int dword_100C3C0;// 100C44C: using guessed type __int16 word_100C44C;// 100C450: using guessed type __int16 word_100C450;// 100C454: using guessed type __int16 word_100C454;// 100C458: using guessed type __int16 word_100C458;// 100C45C: using guessed type int dword_100C45C;// 100C460: using guessed type int dword_100C460;// 100C464: using guessed type int dword_100C464;// 100C468: using guessed type int dword_100C468;// 100C46C: using guessed type int dword_100C46C;// 100C470: using guessed type int dword_100C470;// 100C474: using guessed type int dword_100C474;// 100C478: using guessed type int dword_100C478;// 100C47C: using guessed type __int16 word_100C47C;// 100C480: using guessed type int dword_100C480;// 100C484: using guessed type int dword_100C484;// 100C488: using guessed type __int16 word_100C488;#error "There were 1 decompilation failure(s) on 140 function(s)"



3 0
原创粉丝点击