您的位置:首页 > 其它

windows xp下的NOTEPAD用最新x86插件转换的结果

2013-07-25 15:57 417 查看
windows xp下的NOTEPAD用最新ida x86 1.8插件转换的结果

转换结果非常理想文字限制发一半吧!

大老

博客:http://blog.sina.com.cn/dalao

网站: http://www.40440.cn
qq:79234668

201307
以下是转换结果

/* This file has been generated by the Hex-Rays decompiler.
Copyright (c) 2007-2013 Hex-Rays <info@hex-rays.com>

Detected compiler: Visual C++
*/

#include <windows.h>
#include <defs.h>

//-------------------------------------------------------------------------
// Function declarations

#define __thiscall __cdecl // Test compile in C mode

#define __thiscall __cdecl // Test compile in C mode

HGLOBAL __cdecl FreeGlobal();

LONG __thiscall SetPageSetupDefaults(void *this);

int __stdcall NPSize(int nWidth, int); // idb

int __stdcall NpSaveDialogHookProc(HWND hWndParent, int, HWND hWnd, int); // idb

LRESULT __stdcall GotoAndScrollInView(int a1);

LPWSTR __stdcall SkipProgramName(WCHAR *lpsz);

LRESULT __stdcall UpdateStatusBar(int a1);

LRESULT __stdcall WinEventFunc(int a1, int a2, int a3, int a4, int a5, int a6, int a7);

const WCHAR *__stdcall PFileInPath(LPCWSTR lpsz);

DWORD __stdcall NpResetMenu(HWND hWndNewOwner);

signed int __stdcall MergeStrings(int a1, int a2, int a3);

int __stdcall AlertBox(HWND hWnd, LPCWSTR lpCaption, LPCWSTR lpText, LPCWSTR lpString, UINT uType); // idb

DWORD __cdecl SignalCommDlgError();

__int32 __stdcall ReplaceSel(int a1);

signed int __stdcall GotoDlgProc(HWND hWnd, int a2, HWND a3, int a4);

int __stdcall fDetermineFileType(int lpv, int iSize);

HRESULT __stdcall StringCopyWorkerW(STRSAFE_LPWSTR pszDest, size_t cchDest, size_t *pcchNewDestLength, STRSAFE_PCNZWCH pszSrc, size_t cchToCopy);

signed int __stdcall NpOpenDialogHookProc(DWORD hDlg, int a2, DWORD hWndMain, int a4);

signed int __stdcall CheckSave(int a1);

int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd);

int __stdcall SetTitle(LPCWSTR pcchNewDestLength); // idb

signed int __stdcall NPCommand(WPARAM hWnd, unsigned __int16 a2, int a3);

signed int __cdecl FileDragOpen();

void __stdcall doDrop(HDROP hDrop, HWND hWnd);

signed int __stdcall NPWndProc(HWND hWnd, UINT Msg, WPARAM hDrop, __int32 a4);

LSTATUS __stdcall RegWriteInt(HKEY hKey, LPCWSTR lpValueName, BYTE Data);

LSTATUS __stdcall RegWriteString(HKEY hKey, LPCWSTR lpValueName, LPCWSTR lpData);

int __stdcall RegGetInt(HKEY hKey, LPCWSTR lpValueName, int); // idb

LSTATUS __stdcall RegGetString(HKEY Type, LPCWSTR lpValueName, const void *a3, LPBYTE lpData, DWORD cbData);

LSTATUS __cdecl SaveGlobals();

LSTATUS __cdecl GetGlobals();

// signed int __usercall sub_1003F4C(WCHAR **a1, unsigned __int16 *a2);

LPCWSTR __stdcall GetFileName(LPWSTR lpFileName, LPCWSTR lpString2);

HLOCAL __stdcall SizeStrings(HINSTANCE hInstance);

HLOCAL __stdcall InitStrings(HINSTANCE hInstance);

int __stdcall SkipBlanks(int a1);

signed int __stdcall ProcessSetupOption(WCHAR **a1);

signed int __stdcall ProcessShellOptions(WCHAR **a1, int nCmdShow);

HFILTER __stdcall CreateFilter();

int __stdcall EnumProc(int a1, int a2, int a3, int a4);

// BOOL __usercall sub_10044D7(HINSTANCE a1);

signed int __stdcall NPInit(HINSTANCE hInstance, int a2, __int32 a3, int nCmdShow);

void __stdcall ReverseEndian(int a1, int a2, int a3);

int __stdcall AnsiWriteFile(HANDLE hFile, UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar); // idb

LRESULT __cdecl ClearFmt();

LRESULT __cdecl RestoreFmt();

__int32 __stdcall New(int a1);

WCHAR *__stdcall AddExt(LPCWSTR lpString1);

int __stdcall AlertUser_FileFail(LPCWSTR lpString); // idb

int __stdcall SaveFile(HWND hWnd, LPCWSTR lpString, LPCWSTR lpBuffer); // idb

int __stdcall LoadFile(LPCWSTR lpString, int); // idb

const wchar_t *__stdcall ReverseScan(const WCHAR *a1, const wchar_t *a2, LPCWSTR Str2, int a4);

int __stdcall ForwardScan(wchar_t *lpString1, LPCWSTR Str2, int); // idb

int __stdcall Search(LPCWSTR Str2); // idb

int __stdcall NpReCreate(DWORD hWnd); // idb

BOOL __stdcall AbortProc(int a1, int a2);

int __stdcall GetResolutions(HDC hdc); // idb

HDC __cdecl GetPrinterDCviaDialog();

BOOL __cdecl DestroyAbortWnd();

int __stdcall PageSetupHookProc(HWND hDlg, int, HWND hWndMain, int); // idb

int *__stdcall TranslateString(int a1);

signed int __cdecl GetPrinterDC();

signed int __cdecl GetNonDefPrinterDC();

signed int __stdcall AbortDlgProc(HWND hWnd, int a2, int a3, int a4);

int __stdcall PrintHeaderFooter(HDC hdc, int y); // idb

signed int __stdcall NpPrintGivenDC(HDC a1);

signed int __stdcall NpPrint(int a1);

int __stdcall PrintIt(int a1);

LRESULT __stdcall InsertDateTime(int a1);

signed int __stdcall IsTextUTF8(int a1, int a2);

BOOL __stdcall IsInputTextUnicode(const void *lpv, int iSize);

int __cdecl __security_init_cookie();

// BOOL __usercall __report_gsfailure(int a1, int a2, int a3, int a4, int a5, int a6);

int __stdcall sub_100725F(LPBYTE lpData); // idb

HWND __stdcall HtmlHelpA(HWND hwndCaller, LPCSTR pszFile, UINT uCommand, DWORD_PTR dwData);

// 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 __cdecl WinMainCRTStartup();

// int __cdecl _initterm(_DWORD, _DWORD); weak

unsigned int __cdecl _setdefaultprecision();

int __cdecl _setargv();

// unsigned int __cdecl _controlfp(unsigned int NewValue, unsigned int Mask);

//-------------------------------------------------------------------------

// Data declarations

// extern int __acmdln; weak

// extern int __adjust_fdiv; weak

int s_SaveAsHelpIDs[6] = { 257, 1002, 259, 1002, 0, 0 }; // weak

int s_GotoHelpIDs[4] = { 258, 1003, 0, 0 }; // weak

const WCHAR szOtherStuff = 0u; // idb

int s_PageSetupHelpIDs[10] = { 32, 1001, 30, 1001, 33, 1000, 31, 1000, 0, 0 }; // weak

const WCHAR word_1001840 = 8206u; // idb

int dword_1001844 = 8207; // weak

char ValueName[8] = { '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0' }; // idb

_UNKNOWN __xc_a; // weak

_UNKNOWN __xc_z; // weak

_UNKNOWN __xi_a; // weak

_UNKNOWN __xi_z; // weak

BYTE iPointSize = 120u; // idb

int fUntitled = 1; // weak

int g_ftOpenedAs = 4294967295; // idb

LPCWSTR szDiskError = (LPCWSTR)1; // idb

LPCWSTR szFNF = (LPCWSTR)2; // idb

LPCWSTR szSCBC = (LPCWSTR)3; // idb

LPCWSTR szUntitled = (LPCWSTR)4; // idb

LPCWSTR szNpTitle = (LPCWSTR)5; // idb

LPCWSTR szCFS = (LPCWSTR)6; // idb

LPCWSTR szErrSpace = (LPCWSTR)7; // idb

LPCWSTR szFTL = (LPCWSTR)8; // idb

LPCWSTR szNN = (LPCWSTR)9; // idb

LPCWSTR szCP = (LPCWSTR)0xC; // idb

int szNVF = 13; // weak

LPCWSTR szCREATEERR = (LPCWSTR)0xE; // idb

LPCWSTR szNoWW = (LPCWSTR)0xF; // idb

int szMerge = 16; // weak

LPCWSTR szHelpFile = (LPCWSTR)0x11;

LPCWSTR szAnsiText = (LPCWSTR)0x14; // idb

LPCWSTR szAllFiles = (LPCWSTR)0x15; // idb

int szOpenCaption = 22; // weak

int szSaveCaption = 23; // weak

int szCannotQuit = 24; // weak

LPCWSTR szLoadDrvFail = (LPCWSTR)0x19; // idb

int szACCESSDENY = 26; // weak

LPCWSTR szErrUnicode = (LPCWSTR)0x1B; // idb

LPCWSTR szFontTooBig = (LPCWSTR)0x1C; // idb

wchar_t *szCommDlgErr = (wchar_t *)0x1D; // idb

LPCWSTR szLineError = (LPCWSTR)0x1E; // idb

LPCWSTR szLineTooLarge = (LPCWSTR)0x1F; // idb

LPARAM szFtAnsi = 32; // idb

LPARAM szFtUnicode = 33; // idb

LPARAM szFtUnicodeBe = 34; // idb

LPARAM szFtUtf8 = 35; // idb

wchar_t *szCurrentPage = (wchar_t *)0x24; // idb

wchar_t *szLineCol = (wchar_t *)0x25; // idb

int rgsz[9] =

{

16814132,

16814136,

16814140,

16814144,

16814156,

16814152,

16814148,

16814160,

16814164

}; // weak

__int16 *off_100919C = &szOtherStuff; // weak

int maperror[] = { 65535 }; // weak

int *off_10091A4 = &szErrSpace; // weak

_UNKNOWN BOM_UTF8; // weak

_UNKNOWN unk_10091E4; // weak

_UNKNOWN unk_10091E8; // weak

const WCHAR szFormattedDate = 89u; // idb

const WCHAR szFormattedTime = 89u; // idb

int __security_cookie_complement = 4294919359; // weak

int __security_cookie = 47936; // weak

int __defaultmatherr = 1; // weak

int dword_1009620 = 0; // weak

int dword_1009624 = 0; // weak

const WCHAR FileName = 0u; // idb

HWND hwndNP; // idb

HWND hwndStatus; // idb

HWND hwndEdit; // idb

HWND hDlgFind; // idb

BYTE fStatus; // idb

int fLastStatus; // weak

int dwEmSetHandle; // weak

int fRunBySetup; // weak

WPARAM fWrap; // idb

int fInSaveAsDlg; // weak

BYTE fMLE_is_broken; // idb

WPARAM dwCurrentSelectionStart; // idb

LPARAM dwCurrentSelectionEnd; // idb

const WCHAR String2; // idb

int nHeight; // idb

int nWidth; // idb

int X; // idb

int Y; // idb

int dword_1009A80; // idb

BYTE Data; // idb

LPARAM lParam; // idb

WPARAM wParam; // idb

int fCase; // idb

int fReverse; // weak

HMENU hMenu; // idb

HWND (__stdcall *pHtmlHelpA)(HWND, const char *, unsigned int, unsigned __int32); // weak

int dword_1009AA4; // weak

HMODULE hModule; // idb

int _dowildcard; // weak

int _newmode; // weak

int _commode; // weak

int _fmode;

int iPageNum; // weak

int dxRight; // weak

int dxLeft; // idb

int dyBottom; // weak

int dyTop; // weak

int yPhysOff; // weak

int xPhysOff; // weak

int yPhysRes; // idb

int xPhysRes; // idb

int yPixInch; // weak

int yPrintRes; // weak

int xPrintRes; // weak

struct _SYSTEMTIME PrintTime; // idb

wchar_t chBuff; // idb

const WCHAR word_1009D08; // idb

const WCHAR word_1009F10; // idb

struct tagPOINT rtMargin; // idb

int dword_100A128; // weak

int dword_100A12C; // weak

int yPrintChar; // weak

int fAbort; // weak

HWND hAbortDlgWnd; // idb

int tabSize; // weak

WCHAR szPrinterName; // idb

const WCHAR chPageTextTemp; // idb

const WCHAR word_100A390; // idb

WCHAR chPageText; // idb

WCHAR String1; // idb

HANDLE fp; // idb

int wHlpMsg; // weak

int wFRMsg; // weak

struct tagPSDW g_PageSetupDlg; // idb

struct tagFINDREPLACEW FR; // idb

int g_ftSaveAs; // weak

_UNKNOWN szSaveFilterSpec; // weak

_UNKNOWN szOpenFilterSpec; // weak

struct tagOFNW OFN; // idb

HACCEL hAccel; // idb

HMENU hSysMenuSetup; // idb

int dyStatus; // weak

_UNKNOWN szReplace; // weak

const WCHAR szSearch; // idb

const WCHAR szFileName; // idb

LOGFONTW FontStruct; // idb

HGDIOBJ hFont; // idb

HINSTANCE hInstanceNP; // idb

HCURSOR hWaitCursor; // idb

HCURSOR hStdCursor; // idb

HLOCAL hEdit; // idb

__int16 chMerge; // weak

int lGotoLine; // weak

int __onexitend; // weak

int __onexitbegin; // weak

int _adjust_fdiv; // weak

//----- (01001929) --------------------------------------------------------

HGLOBAL __cdecl FreeGlobal()

{

HGLOBAL result; // eax@3

if ( g_PageSetupDlg.hDevMode )

GlobalFree(g_PageSetupDlg.hDevMode);

result = g_PageSetupDlg.hDevNames;

if ( g_PageSetupDlg.hDevNames )

result = GlobalFree(g_PageSetupDlg.hDevNames);

g_PageSetupDlg.hDevMode = 0;

g_PageSetupDlg.hDevNames = 0;

return result;

}

//----- (0100195D) --------------------------------------------------------

LONG __thiscall SetPageSetupDefaults(void *this)

{

LONG result; // eax@2

void *LCData; // [sp+0h] [bp-4h]@1

LCData = this;

g_PageSetupDlg.lpfnPageSetupHook = (LPPAGESETUPHOOK)PageSetupHookProc;

g_PageSetupDlg.lpPageSetupTemplateName = (LPCWSTR)12;

GetLocaleInfoW(0x400u, 0xDu, (LPWSTR)&LCData, 2);

if ( (_WORD)LCData == 49 )

{

g_PageSetupDlg.rtMargin.top = 1000;

g_PageSetupDlg.rtMargin.bottom = 1000;

g_PageSetupDlg.Flags = 40966;

result = 750;

}

else

{

g_PageSetupDlg.rtMargin.top = 2500;

g_PageSetupDlg.rtMargin.bottom = 2500;

g_PageSetupDlg.Flags = 40970;

result = 2000;

}

g_PageSetupDlg.rtMargin.left = result;

g_PageSetupDlg.rtMargin.right = result;

return result;

}

//----- (010019E0) --------------------------------------------------------

BOOL __stdcall NPSize(int nWidth, int a2)

{

InvalidateRect(hwndEdit, 0, 1);

return MoveWindow(hwndEdit, 0, 0, nWidth, a2 - (*(_DWORD *)&fStatus != 0 ? dyStatus : 0), 1);

}

// 100A6E0: using guessed type int dyStatus;

//----- (01001A28) --------------------------------------------------------

signed int __stdcall NpSaveDialogHookProc(HWND hWndParent, int a2, HWND hWnd, int a4)

{

LPARAM v4; // ecx@6

HWND v5; // esi@13

int v6; // eax@15

int v7; // eax@18

struct tagPOINT Point; // [sp+4h] [bp-8h]@14

if ( a2 == 83 )

{

v7 = GetDlgCtrlID(*(HWND *)(a4 + 12));

if ( v7 != 257 && v7 != 259 )

return 0;

WinHelpW(*(HWND *)(a4 + 12), szHelpFile, 0xCu, (ULONG_PTR)s_SaveAsHelpIDs);

}

else

{

if ( a2 != 123 )

{

if ( a2 == 272 )

{

SendDlgItemMessageW(hWndParent, 257, 0x143u, 0, szFtAnsi);

SendDlgItemMessageW(hWndParent, 257, 0x143u, 0, szFtUnicode);

SendDlgItemMessageW(hWndParent, 257, 0x143u, 0, szFtUnicodeBe);

SendDlgItemMessageW(hWndParent, 257, 0x143u, 0, szFtUtf8);

v4 = szFtAnsi;

g_ftSaveAs = g_ftOpenedAs;

switch ( g_ftOpenedAs )

{

case 1:

v4 = szFtUnicode;

break;

case 2:

v4 = szFtUnicodeBe;

break;

case 3:

v4 = szFtUtf8;

break;

}

SendDlgItemMessageW(hWndParent, 257, 0x14Du, 0xFFFFFFFF, v4);

}

else if ( a2 == 273 )

{

g_ftSaveAs = 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;

WinHelpW(v5, szHelpFile, 0xAu, (ULONG_PTR)s_SaveAsHelpIDs);

}

return 1;

}

// 100136C: using guessed type int s_SaveAsHelpIDs[6];

// 100A528: using guessed type int g_ftSaveAs;

//----- (01001B99) --------------------------------------------------------

LRESULT __stdcall GotoAndScrollInView(int a1)

{

LRESULT result; // eax@1

result = SendMessageW(hwndEdit, 0xBBu, a1 - 1, 0);

if ( result != -1 )

{

SendMessageW(hwndEdit, 0xB1u, result, result);

result = SendMessageW(hwndEdit, 0xB7u, 0, 0);

}

return result;

}

//----- (01001BE8) --------------------------------------------------------

LPWSTR __stdcall SkipProgramName(WCHAR *lpsz)

{

LPWSTR result; // eax@1

int v2; // esi@1

const WCHAR v3; // cx@8

result = lpsz;

v2 = 0;

while ( 1 )

{

v3 = *result;

if ( !*result || (v3 == 32 || v3 == 9) && !v2 )

break;

if ( v3 == 34 )

v2 = v2 == 0;

result = CharNextW(result);

}

while ( *result == 32 || *result == 9 )

++result;

return result;

}

//----- (01001C42) --------------------------------------------------------

LRESULT __stdcall UpdateStatusBar(int a1)

{

WPARAM v1; // eax@1

int v2; // edi@1

LRESULT result; // eax@1

unsigned int v4; // ebx@1

LPARAM lParam; // [sp+Ch] [bp-10Ch]@1

WPARAM wParam; // [sp+10h] [bp-108h]@1

wchar_t Dest; // [sp+14h] [bp-104h]@4

__int16 v8; // [sp+112h] [bp-6h]@4

SendMessageW(hwndEdit, 0xB0u, (WPARAM)&wParam, (LPARAM)&lParam);

v1 = SendMessageW(hwndEdit, 0xC9u, wParam, 0);

v2 = v1 + 1;

result = SendMessageW(hwndEdit, 0xBBu, v1, 0);

v4 = wParam - result + 1;

if ( a1 || v4 != dword_1009624 || v2 != dword_1009620 )

{

__snwprintf(&Dest, 0x7Fu, szLineCol, v2, wParam - result + 1);

result = (LRESULT)hwndStatus;

v8 = 0;

if ( hwndStatus )

result = SendMessageW(hwndStatus, 0x40Bu, 1u, (LPARAM)&Dest);

}

dword_1009620 = v2;

dword_1009624 = v4;

return result;

}

// 1009620: using guessed type int dword_1009620;

// 1009624: using guessed type int dword_1009624;

//----- (01001D1C) --------------------------------------------------------

LRESULT __stdcall WinEventFunc(int a1, int a2, int a3, int a4, int a5, int a6, int a7)

{

return UpdateStatusBar(0);

}

//----- (01001D2B) --------------------------------------------------------

const WCHAR *__stdcall PFileInPath(LPCWSTR lpsz)

{

const WCHAR v1; // cx@1

const WCHAR *v2; // edi@1

const WCHAR *v3; // eax@1

v1 = *lpsz;

v2 = lpsz;

v3 = lpsz;

if ( *lpsz )

{

do

{

if ( v1 == 58 || v1 == 92 )

v2 = v3;

v3 = CharNextW(v3);

v1 = *v3;

}

while ( *v3 );

if ( v2 != lpsz )

++v2;

}

return v2;

}

//----- (01001D73) --------------------------------------------------------

DWORD __stdcall NpResetMenu(HWND hWndNewOwner)

{

HMENU v1; // ebx@1

UINT v2; // ST0C_4@1

HMENU v3; // eax@1

UINT v4; // ST0C_4@1

HMENU v5; // eax@1

UINT v6; // ST0C_4@1

HMENU v7; // eax@1

HMENU v8; // eax@1

HMENU v9; // eax@3

UINT v10; // ST0C_4@6

HMENU v11; // eax@6

UINT v12; // ST0C_4@8

HMENU v13; // eax@8

UINT v14; // ST0C_4@8

HMENU v15; // eax@8

UINT v16; // ST0C_4@8

HMENU v17; // eax@8

UINT v18; // ST0C_4@8

HMENU v19; // eax@8

UINT v20; // ST0C_4@8

HMENU v21; // eax@8

UINT v22; // ST0C_4@8

HMENU v23; // eax@8

LPARAM lParam; // [sp+Ch] [bp-10h]@1

WPARAM wParam; // [sp+10h] [bp-Ch]@1

int v27; // [sp+14h] [bp-8h]@1

UINT uEnable; // [sp+18h] [bp-4h]@1

v27 = 0;

v1 = GetMenu(hwndNP);

SendMessageW(hwndEdit, 0xB0u, (WPARAM)&wParam, (LPARAM)&lParam);

v2 = wParam == lParam;

uEnable = wParam == lParam;

v3 = GetSubMenu(v1, 1);

EnableMenuItem(v3, 0x300u, v2);

v4 = uEnable;

v5 = GetSubMenu(v1, 1);

EnableMenuItem(v5, 0x301u, v4);

v6 = uEnable;

v7 = GetSubMenu(v1, 1);

EnableMenuItem(v7, 0x303u, v6);

v8 = GetSubMenu(v1, 1);

if ( GetMenuState(v8, 0x19u, 0) == 1 && uEnable == 1 )

{

v9 = GetSubMenu(v1, 1);

EnableMenuItem(v9, 0x19u, 0);

}

if ( OpenClipboard(hWndNewOwner) )

{

v27 = IsClipboardFormatAvailable(1u);

CloseClipboard();

}

v10 = v27 == 0;

v11 = GetSubMenu(v1, 1);

EnableMenuItem(v11, 0x302u, v10);

uEnable = 1;

if ( SendMessageW(hwndEdit, 0xEu, 0, 0) )

uEnable = 0;

v12 = uEnable;

v13 = GetSubMenu(v1, 1);

EnableMenuItem(v13, 0x15u, v12);

v14 = uEnable;

v15 = GetSubMenu(v1, 1);

EnableMenuItem(v15, 0x16u, v14);

v16 = fWrap != 0;

v17 = GetSubMenu(v1, 1);

EnableMenuItem(v17, 0x18u, v16);

v18 = SendMessageW(hwndEdit, 0xC6u, 0, 0) == 0;

v19 = GetSubMenu(v1, 1);

EnableMenuItem(v19, 0x10u, v18);

v20 = fWrap != 0 ? 8 : 0;

v21 = GetSubMenu(v1, 2);

CheckMenuItem(v21, 0x20u, v20);

v22 = *(_DWORD *)&fStatus != 0 ? 8 : 0;

v23 = GetSubMenu(v1, 3);

return CheckMenuItem(v23, 0x1Bu, v22);

}

//----- (01001F02) --------------------------------------------------------

signed int __stdcall MergeStrings(int a1, int a2, int a3)

{

int v3; // ecx@1

int v4; // eax@1

__int16 v5; // dx@2

int v6; // esi@4

int v8; // ecx@9

__int16 v9; // dx@10

v3 = a1;

v4 = a3;

while ( *(_WORD *)v3 != chMerge )

{

*(_WORD *)v4 = *(_WORD *)v3;

v5 = *(_WORD *)v3;

v4 += 2;

v3 += 2;

if ( !v5 )

return 0;

}

v6 = a2;

if ( a2 )

{

while ( *(_WORD *)v6 )

{

*(_WORD *)v4 = *(_WORD *)v6;

v4 += 2;

v6 += 2;

}

}

v8 = v3 + 4;

do

{

v9 = *(_WORD *)v8;

*(_WORD *)v4 = *(_WORD *)v8;

v4 += 2;

v8 += 2;

}

while ( v9 );

return 1;

}

// 100AB90: using guessed type __int16 chMerge;

//----- (01001F70) --------------------------------------------------------

int __stdcall AlertBox(HWND hWnd, LPCWSTR lpCaption, LPCWSTR lpText, LPCWSTR lpString, UINT uType)

{

int v5; // edi@2

int v6; // eax@4

int v7; // eax@4

const WCHAR *v8; // esi@4

int v9; // edi@5

if ( lpString )

v5 = lstrlenW(lpString);

else

v5 = 0;

v6 = lstrlenW(lpText);

v7 = (int)LocalAlloc(0x40u, 2 * (v5 + v6) + 2);

v8 = (const WCHAR *)v7;

if ( v7 )

{

MergeStrings((int)lpText, (int)lpString, v7);

v9 = MessageBoxW(hWnd, v8, lpCaption, uType);

LocalFree((HLOCAL)v8);

}

else

{

v9 = MessageBoxW(hWnd, lpText, lpCaption, uType);

}

return v9;

}

//----- (01001FF0) --------------------------------------------------------

DWORD __cdecl SignalCommDlgError()

{

DWORD result; // eax@1

wchar_t *v1; // ecx@2

unsigned int v2; // edx@2

wchar_t Dest; // [sp+0h] [bp-194h]@7

result = CommDlgExtendedError();

if ( result )

{

v1 = 0;

v2 = 0;

do

{

if ( result == maperror[v2] )

v1 = (wchar_t *)*(&off_10091A4)[v2];

v2 += 2;

}

while ( v2 < 16 );

if ( !v1 )

{

__snwprintf(&Dest, 0xC7u, szCommDlgErr, result);

v1 = &Dest;

}

if ( *v1 )

MessageBoxW(hwndNP, v1, szNN, 0x1010u);

result = 1;

}

return result;

}

// 10091A0: using guessed type int maperror[];

// 10091A4: using guessed type int *off_10091A4;

//----- (0100207F) --------------------------------------------------------

__int32 __stdcall ReplaceSel(int a1)

{

__int32 result; // eax@1

__int32 v2; // edi@2

WPARAM v3; // eax@3

void *hMem; // [sp+8h] [bp-14h]@1

int v5; // [sp+Ch] [bp-10h]@1

LPARAM lParam; // [sp+10h] [bp-Ch]@1

WPARAM wParam; // [sp+14h] [bp-8h]@1

size_t cchCount1; // [sp+18h] [bp-4h]@1

v5 = lstrlenW(FR.lpstrReplaceWith);

cchCount1 = lstrlenW(FR.lpstrFindWhat);

SendMessageW(hwndEdit, 0xB0u, (WPARAM)&wParam, (LPARAM)&lParam);

result = SendMessageW(hwndEdit, 0xBDu, 0, 0);

hMem = (void *)result;

if ( result )

{

result = (__int32)LocalLock((HLOCAL)result);

v2 = result;

if ( result )

{

v3 = wParam;

if ( lParam - wParam != cchCount1 )

return LocalUnlock(hMem);

if ( fCase )

{

if ( !_wcsncmp(FR.lpstrFindWhat, (const wchar_t *)(v2 + 2 * wParam), cchCount1) )

goto LABEL_9;

if ( fCase )

return LocalUnlock(hMem);

v3 = wParam;

}

if ( CompareStringW(0x400u, 0x10001001u, FR.lpstrFindWhat, cchCount1, (PCNZWCH)(v2 + 2 * v3), cchCount1) == 2 )

{

LABEL_9:

SendMessageW(hwndEdit, 0xC2u, 1u, (LPARAM)FR.lpstrReplaceWith);

SendMessageW(hwndEdit, 0xB1u, wParam, wParam + v5);

if ( a1 )

SendMessageW(hwndEdit, 0xB7u, 0, 0);

return LocalUnlock(hMem);

}

return LocalUnlock(hMem);

}

}

return result;

}

//----- (010021A6) --------------------------------------------------------

signed int __stdcall GotoDlgProc(HWND hWnd, int a2, HWND a3, int a4)

{

LRESULT v5; // eax@11

LRESULT v6; // eax@14

HWND v7; // eax@15

HWND v8; // edi@15

LONG v9; // eax@15

LRESULT v10; // eax@15

LPARAM lParam; // [sp+Ch] [bp-D4h]@15

WPARAM wParam; // [sp+10h] [bp-D0h]@15

WCHAR SrcStr; // [sp+14h] [bp-CCh]@11

if ( a2 == 83 )

{

WinHelpW(*(HWND *)(a4 + 12), szHelpFile, 0xCu, (ULONG_PTR)s_GotoHelpIDs);

return 0;

}

if ( a2 == 123 )

{

WinHelpW(a3, szHelpFile, 0xAu, (ULONG_PTR)s_GotoHelpIDs);

return 0;

}

if ( a2 == 272 )

{

v7 = GetDlgItem(hWnd, 258);

v8 = v7;

v9 = GetWindowLongW(v7, -16);

SetWindowLongW(v8, -16, v9 | 0x2000);

SendMessageW(hwndEdit, 0xB0u, (WPARAM)&wParam, (LPARAM)&lParam);

v10 = SendMessageW(hwndEdit, 0xC9u, wParam, 0);

_wsprintfW(&SrcStr, L"%d", v10 + 1);

SetDlgItemTextW(hWnd, 258, &SrcStr);

SetFocus(hWnd);

return 1;

}

if ( a2 != 273 )

return 0;

if ( (unsigned __int16)a3 == 1 )

{

GetDlgItemTextW(hWnd, 258, &SrcStr, 100);

FoldStringW(0x80u, &SrcStr, -1, &SrcStr, 100);

lGotoLine = __wtol(&SrcStr);

v5 = SendMessageW(hwndEdit, 0xBBu, lGotoLine - 1, 0);

if ( !lGotoLine || v5 == -1 )

{

MessageBoxW(hWnd, szLineTooLarge, szLineError, 0);

v6 = SendMessageW(hwndEdit, 0xBAu, 0, 0);

_wsprintfW(&SrcStr, L"%d", v6);

SetDlgItemTextW(hWnd, 258, &SrcStr);

SetFocus(hWnd);

return 0;

}

EndDialog(hWnd, 0);

return 1;

}

if ( (unsigned __int16)a3 == 2 )

{

EndDialog(hWnd, 1);

return 1;

}

if ( (unsigned __int16)a3 == 258 )

return 1;

return 0;

}

// 1001384: using guessed type int s_GotoHelpIDs[4];

// 100AB94: using guessed type int lGotoLine;

//----- (0100239D) --------------------------------------------------------

int __stdcall fDetermineFileType(int lpv, int iSize)

{

int result; // eax@1

int v3; // ecx@2

result = 0;

if ( (unsigned int)iSize <= 1 )

return result;

v3 = *(_WORD *)lpv;

if ( v3 == 48111 )

{

if ( (unsigned int)iSize <= 2 || *(_BYTE *)(lpv + 2) != -65 )

return result;

return 3;

}

if ( v3 == 65279 )

return 1;

if ( v3 == 65534 )

return 2;

if ( IsInputTextUnicode((const void *)lpv, iSize) )

return 1;

return IsTextUTF8(lpv, iSize) != 0 ? 3 : 0;

}

//----- (01002409) --------------------------------------------------------

HRESULT __stdcall StringCopyWorkerW(STRSAFE_LPWSTR pszDest, size_t cchDest, size_t *pcchNewDestLength, STRSAFE_PCNZWCH pszSrc, size_t cchToCopy)

{

HRESULT result; // eax@1

STRSAFE_LPWSTR v6; // edx@3

size_t *v7; // esi@3

result = 0;

if ( cchDest )

{

v6 = pszDest;

v7 = pcchNewDestLength;

do

{

if ( !*(_WORD *)v7 )

break;

*v6 = *(_WORD *)v7;

++v6;

v7 = (size_t *)((char *)v7 + 2);

--cchDest;

}

while ( cchDest );

if ( !cchDest )

{

--v6;

result = -2147024774;

}

*v6 = 0;

}

else

{

result = -2147024809;

}

return result;

}

// 1002409: inconsistent function type and number of purged bytes

//----- (01002452) --------------------------------------------------------

signed int __stdcall NpOpenDialogHookProc(DWORD hDlg, int a2, DWORD hWndMain, int a4)

{

HWND v4; // ebx@1

LPARAM v5; // ecx@7

int v6; // eax@16

int v8; // eax@20

HWND v9; // eax@24

HANDLE v10; // eax@26

int v11; // eax@29

LPARAM v12; // ecx@29

int v13; // eax@29

int v14; // eax@30

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

v4 = (HWND)hWndMain;

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, &String2) )

{

v10 = CreateFileW((LPCWSTR)&String1, 0x80000000, 1u, 0, 3u, 0x80u, 0);

hObject = v10;

if ( v10 != (HANDLE)-1 )

{

if ( ReadFile(v10, &Buffer, 0x400u, &iSize, 0) > 0 && iSize )

{

v11 = fDetermineFileType((int)&Buffer, iSize);

v12 = szFtAnsi;

g_ftOpenedAs = v11;

v13 = v11 - 1;

if ( v13 )

{

v14 = v13 - 1;

if ( v14 )

{

if ( v14 == 1 )

v12 = szFtUtf8;

}

else

{

v12 = szFtUnicodeBe;

}

}

else

{

v12 = szFtUnicode;

}

SendDlgItemMessageW((HWND)hDlg, 257, 0x14Du, 0xFFFFFFFF, v12);

lstrcpyW((LPWSTR)&String2, (LPCWSTR)&String1);

}

CloseHandle(hObject);

}

}

}

}

return 0;

}

if ( a2 != 83 )

{

if ( a2 != 123 )

{

if ( a2 == 272 )

{

SendDlgItemMessageW((HWND)hDlg, 257, 0x143u, 0, szFtAnsi);

SendDlgItemMessageW((HWND)iSize, 257, 0x143u, 0, szFtUnicode);

SendDlgItemMessageW((HWND)iSize, 257, 0x143u, 0, szFtUnicodeBe);

SendDlgItemMessageW((HWND)iSize, 257, 0x143u, 0, szFtUtf8);

v5 = szFtAnsi;

switch ( g_ftOpenedAs )

{

case 1:

v5 = szFtUnicode;

break;

case 2:

v5 = szFtUnicodeBe;

break;

case 3:

v5 = szFtUtf8;

break;

}

SendDlgItemMessageW((HWND)iSize, 257, 0x14Du, 0xFFFFFFFF, v5);

}

else if ( a2 == 273 )

{

g_ftOpenedAs = SendDlgItemMessageW((HWND)hDlg, 257, 0x147u, 0, 0);

}

return 0;

}

if ( hDlg == hWndMain )

{

GetCursorPos(&Point);

ScreenToClient((HWND)hDlg, &Point);

v4 = ChildWindowFromPoint((HWND)hDlg, Point);

}

v6 = GetDlgCtrlID(v4);

if ( v6 != 257 && v6 != 259 )

return 0;

WinHelpW(v4, szHelpFile, 0xAu, (ULONG_PTR)s_SaveAsHelpIDs);

return 1;

}

v8 = GetDlgCtrlID(*(HWND *)(a4 + 12));

if ( v8 == 257 || v8 == 259 )

{

WinHelpW(*(HWND *)(a4 + 12), szHelpFile, 0xCu, (ULONG_PTR)s_SaveAsHelpIDs);

return 1;

}

return 0;

}

// 100136C: using guessed type int s_SaveAsHelpIDs[6];

//----- (0100270F) --------------------------------------------------------

signed int __stdcall CheckSave(int a1)

{

const WCHAR *v1; // eax@4

int v3; // [sp+Ch] [bp-210h]@1

WCHAR String2; // [sp+10h] [bp-20Ch]@1

char v5; // [sp+12h] [bp-20Ah]@1

__int16 v6; // [sp+216h] [bp-6h]@1

String2 = 0;

memset(&v5, 0, 0x204u);

v6 = 0;

v3 = 1;

if ( fUntitled && !SendMessageW(hwndEdit, 0xEu, 0, 0) )

return 1;

if ( SendMessageW(hwndEdit, 0xB8u, 0, 0) )

{

v1 = szUntitled;

if ( !fUntitled )

v1 = &szFileName;

fInSaveAsDlg = 1;

v3 = AlertBox(hwndNP, szNN, szSCBC, v1, (a1 != 0 ? 0x1000 : 0) | 0x33);

fInSaveAsDlg = 0;

if ( v3 == 6 )

{

if ( fUntitled )

{

lstrcpyW(&String2, L"*.txt");

goto LABEL_15;

}

g_ftSaveAs = g_ftOpenedAs;

if ( SaveFile(hwndNP, &szFileName, 0) )

return 1;

lstrcpyW(&String2, &szFileName);

LABEL_15:

while ( 1 )

{

OFN.lpstrFile = &String2;

fInSaveAsDlg = 1;

OFN.nFilterIndex = 1;

OFN.lpstrDefExt = L"txt";

OFN.lpstrFilter = (LPCWSTR)&szSaveFilterSpec;

OFN.lpfnHook = (LPOFNHOOKPROC)NpSaveDialogHookProc;

OFN.lpTemplateName = L"NpEncodingDialog";

OFN.Flags = 8947814;

OFN.lpstrTitle = (LPCWSTR)szSaveCaption;

if ( !GetSaveFileNameW(&OFN) )

break;

lstrcpyW(&String2, OFN.lpstrFile);

if ( SaveFile(hwndNP, &String2, (LPCWSTR)1) )

{

lstrcpyW((LPWSTR)&szFileName, &String2);

g_ftOpenedAs = g_ftSaveAs;

goto LABEL_18;

}

lstrcpyW(&String2, &szFileName);

}

v3 = 2;

if ( CommDlgExtendedError() )

MessageBoxW(hwndNP, szErrSpace, szNN, 0x1010u);

LABEL_18:

fInSaveAsDlg = 0;

}

}

return v3 != 2;

}

// 10013A0: using guessed type wchar_t aNpencodingdial[17];

// 10013C4: using guessed type wchar_t aTxt[4];

// 100901C: using guessed type int fUntitled;

// 1009090: using guessed type int szSaveCaption;

// 1009854: using guessed type int fInSaveAsDlg;

// 100A528: using guessed type int g_ftSaveAs;

//----- (01002936) --------------------------------------------------------

int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)

{

WCHAR *v4; // edi@1

int v5; // eax@1

FARPROC v6; // eax@1

__int32 v7; // eax@3

DWORD v8; // eax@5

HWINEVENTHOOK v9; // ebx@5

struct tagMSG Msg; // [sp+8h] [bp-20h]@4

FARPROC v12; // [sp+24h] [bp-4h]@1

v4 = GetCommandLineW();

v5 = GetSystemMetrics(41);

v6 = GetProcAddress((HMODULE)v5, "RegisterPenApp");

v12 = v6;

if ( v6 )

((void (__stdcall *)(_DWORD, _DWORD))v6)(1, 1);

v7 = (__int32)SkipProgramName(v4);

if ( NPInit(hInstance, (int)hPrevInstance, v7, nShowCmd) )

{

v8 = GetCurrentProcessId();

v9 = SetWinEventHook(0x800Bu, 0x800Bu, 0, (WINEVENTPROC)WinEventFunc, v8, 0, 0);

while ( GetMessageW(&Msg, 0, 0, 0) )

{

if ( Msg.message == 80 )

PostMessageW(hwndNP, 0x8001u, 0, 0);

if ( (!hDlgFind || !IsDialogMessageW(hDlgFind, &Msg)) && !TranslateAcceleratorW(hwndNP, hAccel, &Msg) )

{

TranslateMessage(&Msg);

DispatchMessageW(&Msg);

}

}

FreeGlobal();

LocalFree(hEdit);

if ( v9 )

UnhookWinEvent(v9);

}

else

{

Msg.wParam = 0;

}

if ( v12 )

((void (__stdcall *)(_DWORD, _DWORD))v12)(1, 0);

return Msg.wParam;

}

//----- (01002A55) --------------------------------------------------------

BOOL __stdcall SetTitle(LPCWSTR pcchNewDestLength)

{

HANDLE v1; // edi@3

WORD v2; // si@4

const wchar_t *v4; // [sp+0h] [bp-7D0h]@0

size_t v5; // [sp+4h] [bp-7CCh]@0

struct _WIN32_FIND_DATAW FindFileData; // [sp+8h] [bp-7C8h]@3

const WCHAR v7; // [sp+258h] [bp-578h]@4

wchar_t String; // [sp+460h] [bp-370h]@2

wchar_t lParam; // [sp+6CCh] [bp-104h]@1

char v10; // [sp+6CEh] [bp-102h]@1

__int16 v11; // [sp+7CAh] [bp-6h]@1

lParam = 0;

memset(&v10, 0, 0xFCu);

v11 = 0;

if ( lstrcmpW(pcchNewDestLength, szUntitled) )

{

GetFileAttributesW(pcchNewDestLength);

v1 = FindFirstFileW(pcchNewDestLength, &FindFileData);

if ( v1 == (HANDLE)-1 )

{

v2 = 260;

StringCopyWorkerW((STRSAFE_LPWSTR)&v7, 0x104u, (size_t *)pcchNewDestLength, v4, v5);

}

else

{

v2 = 260;

StringCopyWorkerW((STRSAFE_LPWSTR)&v7, 0x104u, (size_t *)FindFileData.cFileName, v4, v5);

FindClose(v1);

}

GetFileTitleW(&v7, &String, v2);

}

else

{

StringCopyWorkerW(&String, 0x136u, (size_t *)szUntitled, v4, v5);

}

__snwprintf(&lParam, 0x7Fu, szLineCol, 1, 1);

if ( hwndStatus )

SendMessageW(hwndStatus, 0x40Bu, 1u, (LPARAM)&lParam);

lstrcatW(&String, szNpTitle);

return SetWindowTextW(hwndNP, &String);

}

//----- (01002B87) --------------------------------------------------------

signed int __stdcall NPCommand(WPARAM hWnd, unsigned __int16 a2, int a3)

{

int v4; // ebx@23

HANDLE v5; // edi@24

DWORD v6; // eax@30

HMENU v7; // ebx@51

LPARAM v8; // eax@51

HMENU v9; // eax@51

HWND v10; // eax@55

HWND v11; // eax@57

HDC v12; // ebx@67

int v13; // eax@68

HFONT v14; // edi@69

int v15; // eax@72

HMENU v16; // eax@78

HMENU v17; // edi@78

HMENU v18; // eax@78

HMENU v19; // eax@79

HMENU v20; // eax@79

HWND v21; // eax@84

HWND v22; // eax@91

HICON v23; // eax@94

HWND v24; // [sp-10h] [bp-27Ch]@40

HWND v25; // [sp-10h] [bp-27Ch]@42

UINT v26; // [sp-Ch] [bp-278h]@40

UINT v27; // [sp-Ch] [bp-278h]@42

WPARAM v28; // [sp-8h] [bp-274h]@40

UINT v29; // [sp-8h] [bp-274h]@51

struct tagCHOOSEFONTW v30; // [sp+Ch] [bp-260h]@68

LPARAM lParam; // [sp+48h] [bp-224h]@90

struct tagRECT Rect; // [sp+4Ch] [bp-220h]@81

WPARAM wParam; // [sp+5Ch] [bp-210h]@1

WCHAR String2; // [sp+60h] [bp-20Ch]@1

char v35; // [sp+62h] [bp-20Ah]@1

__int16 v36; // [sp+266h] [bp-6h]@1

String2 = 0;

memset(&v35, 0, 0x204u);

v36 = 0;

wParam = hWnd;

if ( (signed int)a2 > 64 )

{

if ( a2 == 65 )

{

v23 = LoadIconW(hInstanceNP, (LPCWSTR)2);

ShellAboutW(hwndNP, szNN, &szOtherStuff, v23);

return 1;

}

if ( (signed int)a2 <= 767 )

return 0;

if ( (signed int)a2 > 769 )

{

if ( a2 == 770 )

{

LABEL_91:

v22 = GetFocus();

if ( v22 != hwndEdit && v22 != hwndNP )

return 1;

v27 = a2;

v25 = hwndEdit;

goto LABEL_43;

}

if ( a2 != 771 )

return 0;

}

SendMessageW(hwndEdit, 0xB0u, (WPARAM)&wParam, (LPARAM)&lParam);

if ( wParam == lParam )

return 1;

goto LABEL_91;

}

if ( a2 == 64 )

{

v21 = GetDesktopWindow();

HtmlHelpA(v21, "notepad.chm", 0, 0);

return 1;

}

if ( (signed int)a2 > 21 )

{

if ( (signed int)a2 > 26 )

{

if ( a2 == 27 )

{

GetClientRect(hwndNP, &Rect);

if ( *(_DWORD *)&fStatus )

{

*(_DWORD *)&fStatus = 0;

ShowWindow(hwndStatus, 0);

NPSize(Rect.right - Rect.left, Rect.bottom - Rect.top);

}

else

{

*(_DWORD *)&fStatus = 1;

NPSize(Rect.right - Rect.left, Rect.bottom - Rect.top);

UpdateStatusBar(1);

ShowWindow(hwndStatus, 5);

}

return 1;

}

if ( a2 != 32 )

{

if ( a2 != 33 )

return 0;

v12 = GetDC(0);

if ( v12 )

{

v30.lStructSize = 60;

v30.hwndOwner = (HWND)wParam;

v30.lpLogFont = &FontStruct;

v13 = GetDeviceCaps(v12, 90);

FontStruct.lfHeight = -MulDiv(*(int *)&iPointSize, v13, 720);

v30.Flags = 16777281;

v30.rgbColors = 0;

v30.lCustData = 0;

v30.lpfnHook = 0;

v30.lpTemplateName = 0;

v30.hInstance = 0;

v30.lpszStyle = 0;

v30.nFontType = 0x2000;

v30.nSizeMin = 0;

v30.nSizeMax = 0;

ReleaseDC(0, v12);

if ( ChooseFontW(&v30) )

{

SetCursor(hWaitCursor);

v14 = CreateFontIndirectW(&FontStruct);

if ( v14 )

{

DeleteObject(hFont);

hFont = v14;

SendMessageW(hwndEdit, 0x30u, (WPARAM)v14, 1);

*(_DWORD *)&iPointSize = v30.iPointSize;

}

SetCursor(hStdCursor);

}

}

return 1;

}

v15 = -(fWrap != 0);

if ( NpReCreate((v15 & 0x100000) + 1344274692) )

fWrap = fWrap == 0;

else

MessageBoxW(hwndNP, szNoWW, szNN, 0x30u);

if ( !fWrap )

{

v19 = GetMenu(hwndNP);

v20 = GetSubMenu(v19, 3);

EnableMenuItem(v20, 0x1Bu, 0);

if ( !fLastStatus )

return 1;

v28 = 27;

v26 = 273;

v24 = (HWND)wParam;

goto LABEL_41;

}

fLastStatus = *(_DWORD *)&fStatus;

if ( *(_DWORD *)&fStatus )

SendMessageW((HWND)wParam, 0x111u, 0x1Bu, 0);

v16 = GetMenu(hwndNP);

v17 = v16;

v18 = GetSubMenu(v16, 3);

CheckMenuItem(v18, 0x1Bu, 0);

v29 = 27;

v9 = GetSubMenu(v17, 3);

}

else

{

if ( a2 == 26 )

{

InsertDateTime(0);

return 1;

}

if ( a2 == 22 )

{

if ( szSearch )

{

Search(&szSearch);

return 1;

}

LABEL_61:

v10 = hDlgFind;

if ( !hDlgFind )

{

FR.Flags = 65537;

FR.lpstrReplaceWith = 0;

FR.wReplaceWithLen = 0;

FR.lpstrFindWhat = (LPWSTR)&szSearch;

FR.wFindWhatLen = 128;

v11 = FindTextW(&FR);

goto LABEL_58;

}

goto LABEL_56;

}

if ( a2 == 23 )

{

v10 = hDlgFind;

if ( !hDlgFind )

{

FR.Flags = 65552;

FR.lpstrReplaceWith = (LPWSTR)&szReplace;

FR.wReplaceWithLen = 128;

FR.lpstrFindWhat = (LPWSTR)&szSearch;

FR.wFindWhatLen = 128;

v11 = ReplaceTextW(&FR);

LABEL_58:

hDlgFind = v11;

return 1;

}

LABEL_56:

SetFocus(v10);

return 1;

}

if ( a2 == 24 )

{

if ( !DialogBoxParamW(hInstanceNP, (LPCWSTR)0xE, hwndNP, (DLGPROC)GotoDlgProc, 0) )

GotoAndScrollInView(lGotoLine);

return 1;

}

if ( a2 != 25 )

return 0;

v7 = GetMenu(hwndNP);

v8 = SendMessageW(hwndEdit, 0xEu, 0, 0);

SendMessageW(hwndEdit, 0xB1u, 0, v8);

SendMessageW(hwndEdit, 0xB7u, 0, 0);

v29 = 25;

v9 = GetSubMenu(v7, 1);

}

EnableMenuItem(v9, v29, 1u);

return 1;

}

if ( a2 == 21 )

goto LABEL_61;

if ( (signed int)a2 > 5 )

{

if ( a2 == 6 )

{

PrintIt(0);

return 1;

}

if ( a2 != 7 )

{

if ( a2 == 15 )

return 1;

if ( a2 != 16 )

return 0;

v28 = 0;

v26 = 199;

v24 = hwndEdit;

LABEL_41:

SendMessageW(v24, v26, v28, 0);

return 1;

}

v27 = 16;

v25 = (HWND)hWnd;

LABEL_43:

PostMessageW(v25, v27, 0, 0);

return 1;

}

if ( a2 == 5 )

{

while ( !PageSetupDlgW(&g_PageSetupDlg) )

{

v6 = CommDlgExtendedError();

if ( v6 != 4107 && v6 != 4105 && v6 != 4108 )

goto LABEL_27;

FreeGlobal();

g_PageSetupDlg.hDevNames = 0;

g_PageSetupDlg.hDevMode = 0;

}

lstrcpyW(&chPageText, &chPageTextTemp);

lstrcpyW(&String1, &word_100A390);

return 1;

}

if ( a2 == 1 )

{

New(1);

}

else

{

if ( a2 == 2 )

{

if ( CheckSave(0) )

{

v4 = g_ftOpenedAs;

OFN.lpstrFile = &String2;

lstrcpyW(&String2, L"*.txt");

OFN.lpstrTitle = (LPCWSTR)szOpenCaption;

OFN.lpstrFilter = (LPCWSTR)&szOpenFilterSpec;

OFN.lpstrDefExt = L"txt";

OFN.Flags = 8917092;

OFN.nFilterIndex = 1;

OFN.lpTemplateName = L"NpEncodingDialog";

OFN.lpfnHook = (LPOFNHOOKPROC)NpOpenDialogHookProc;

if ( GetOpenFileNameW(&OFN) )

{

v5 = fp;

fp = CreateFileW(&String2, 0x80000000, 3u, 0, 3u, 0x80u, 0);

if ( !LoadFile(&String2, g_ftOpenedAs) )

{

fp = v5;

g_ftOpenedAs = v4;

}

}

else

{

g_ftOpenedAs = v4;

LABEL_27:

SignalCommDlgError();

}

}

return 1;

}

if ( a2 != 3 )

{

if ( a2 != 4 )

return 0;

goto LABEL_14;

}

g_ftSaveAs = g_ftOpenedAs;

if ( fUntitled || !SaveFile(hwndNP, &szFileName, 0) )

{

LABEL_14:

OFN.lpstrFile = &String2;

OFN.lpstrTitle = (LPCWSTR)szSaveCaption;

OFN.Flags = 8947814;

OFN.lpTemplateName = L"NpEncodingDialog";

OFN.lpfnHook = (LPOFNHOOKPROC)NpSaveDialogHookProc;

OFN.lpstrFilter = (LPCWSTR)&szSaveFilterSpec;

OFN.lpstrDefExt = L"txt";

if ( fUntitled )

lstrcpyW(&String2, L"*.txt");

else

lstrcpynW(&String2, &szFileName, 260);

fInSaveAsDlg = 1;

OFN.nFilterIndex = 1;

if ( GetSaveFileNameW(&OFN) )

{

if ( SaveFile((HWND)wParam, &String2, (LPCWSTR)1) )

{

lstrcpynW((LPWSTR)&szFileName, &String2, 260);

g_ftOpenedAs = g_ftSaveAs;

}

}

else

{

SignalCommDlgError();

}

fInSaveAsDlg = 0;

return 1;

}

}

return 1;

}

// 10013A0: using guessed type wchar_t aNpencodingdial[17];

// 10013C4: using guessed type wchar_t aTxt[4];

// 100901C: using guessed type int fUntitled;

// 100908C: using guessed type int szOpenCaption;

// 1009090: using guessed type int szSaveCaption;

// 1009844: using guessed type int fLastStatus;

// 1009854: using guessed type int fInSaveAsDlg;

// 100A528: using guessed type int g_ftSaveAs;

// 100AB94: using guessed type int lGotoLine;

//----- (0100337E) --------------------------------------------------------

signed int __cdecl FileDragOpen()

{

HANDLE v0; // edi@1

signed int result; // eax@1

v0 = fp;

result = CheckSave(0);

if ( result )

{

fp = CreateFileW(&FileName, 0x80000000, 3u, 0, 3u, 0x80u, 0);

if ( fp == (HANDLE)-1 )

{

result = AlertUser_FileFail(&FileName);

}

else

{

result = LoadFile(&FileName, -1);

if ( result )

return result;

}

fp = v0;

}

return result;

}

//----- (010033DC) --------------------------------------------------------

void __stdcall doDrop(HDROP hDrop, HWND hWnd)

{

if ( DragQueryFileW(hDrop, 0xFFFFFFFF, 0, 0) )

{

DragQueryFileW(hDrop, 0, (LPWSTR)&FileName, 0x104u);

SetActiveWindow(hWnd);

FileDragOpen();

}

DragFinish(hDrop);

}

//----- (01003429) --------------------------------------------------------

signed int __stdcall NPWndProc(HWND hWnd, UINT Msg, WPARAM hDrop, __int32 a4)

{

HWND v4; // ST10_4@15

WPARAM v6; // eax@37

LPARAM v7; // ecx@37

void (__stdcall *v8)(HWND, UINT, WPARAM, LPARAM); // edi@39

int v9; // ecx@51

int v10; // eax@51

int v11; // esi@51

void (__stdcall *v12)(HCURSOR); // esi@52

LPARAM v13; // esi@67

LPARAM v14; // [sp-4h] [bp-14h]@64

LPARAM lParam; // [sp+8h] [bp-8h]@21

int v16; // [sp+Ch] [bp-4h]@21

if ( Msg > 0x1C )

{

if ( Msg != 273 )

{

if ( Msg == 274 )

{

if ( !fRunBySetup || hDrop != 61472 && hDrop != 61504 && hDrop != 61520 )

DefWindowProcW(hWnd, 0x112u, hDrop, a4);

return 0;

}

if ( Msg == 278 )

{

NpResetMenu(hWnd);

return 0;

}

if ( Msg == 279 )

{

if ( fRunBySetup && HIWORD(a4) )

EnableMenuItem(hSysMenuSetup, 0xF020u, 3u);

return 0;

}

if ( Msg == 563 )

{

doDrop((HDROP)hDrop, hWnd);

return 0;

}

if ( Msg != 793 )

{

if ( Msg == 32769 )

{

v13 = 0;

if ( ((unsigned int)GetKeyboardLayout(0) & 0x3FF) == 17 )

v13 = 1;

SendMessageW(hwndEdit, 0xD8u, 1u, v13);

return 0;

}

LABEL_50:

if ( Msg == wFRMsg )

{

v9 = *(_DWORD *)(a4 + 12);

v10 = ~(unsigned __int8)*(_DWORD *)(a4 + 12) & 1;

v11 = (*(_DWORD *)(a4 + 12) >> 2) & 1;

fReverse = ~(unsigned __int8)*(_DWORD *)(a4 + 12) & 1;

fCase = v11;

if ( v9 & 8 )

{

v12 = SetCursor;

SetCursor(hWaitCursor);

}

else

{

if ( !(v9 & 0x10) )

{

if ( v9 & 0x20 )

{

if ( v10 )

fReverse = 0;

SetCursor(hWaitCursor);

SendMessageW(hwndEdit, 0xB1u, 0, 0);

do

ReplaceSel(0);

while ( Search(&szSearch) );

SetCursor(hStdCursor);

SendMessageW(hwndEdit, 0xB1u, 0, 0);

SendMessageW(hwndEdit, 0xB7u, 0, 0);

UpdateStatusBar(1);

}

else if ( v9 & 0x40 )

{

hDlgFind = 0;

}

return 0;

}

v12 = SetCursor;

SetCursor(hWaitCursor);

ReplaceSel(1);

}

Search(&szSearch);

v12(hStdCursor);

return 0;

}

v14 = a4;

return DefWindowProcW(hWnd, Msg, hDrop, v14);

}

if ( (HIWORD(a4) & 0xFFF) == 5 )

{

NPCommand((WPARAM)hWnd, 0x15u, 0);

return 0;

}

}

if ( (HWND)a4 == hwndEdit && (HIWORD(hDrop) == 1280 || HIWORD(hDrop) == 1281) )

{

if ( dwEmSetHandle == 1 )

dwEmSetHandle = 2;

else

MessageBoxW(hwndNP, szErrSpace, szNN, 0x1010u);

return 0;

}

if ( !NPCommand((WPARAM)hWnd, hDrop, a4) )

{

v14 = a4;

return DefWindowProcW(hWnd, Msg, hDrop, v14);

}

return 0;

}

if ( Msg == 28 )

{

if ( hDrop )

{

v6 = dwCurrentSelectionStart;

v7 = dwCurrentSelectionEnd;

if ( !dwCurrentSelectionStart && !dwCurrentSelectionEnd )

return 0;

v8 = SendMessageW;

}

else

{

v8 = SendMessageW;

SendMessageW(hwndEdit, 0xB0u, (WPARAM)&dwCurrentSelectionStart, (LPARAM)&dwCurrentSelectionEnd);

v6 = dwCurrentSelectionStart;

v7 = dwCurrentSelectionEnd;

if ( dwCurrentSelectionStart == dwCurrentSelectionEnd )

{

dwCurrentSelectionStart = 0;

dwCurrentSelectionEnd = 0;

return 0;

}

}

v8(hwndEdit, 0xB1u, v6, v7);

v8(hwndEdit, 0xB7u, 0, 0);

return 0;

}

if ( Msg <= 8 )

{

if ( Msg == 8 )

{

SendMessageW(hwndEdit, 8u, hDrop, a4);

return 0;

}

if ( Msg == 2 )

{

PostQuitMessage(0);

return 0;

}

if ( Msg == 5 )

{

if ( hDrop )

{

if ( hDrop == 1 )

return DefWindowProcW(hWnd, 5u, 1u, a4);

if ( hDrop != 2 )

return 0;

}

SendMessageW(hwndStatus, 5u, 0, 0);

v16 = -1;

lParam = 3 * (signed __int16)a4 / 4;

SendMessageW(hwndStatus, 0x404u, 2u, (LPARAM)&lParam);

NPSize((signed __int16)a4, SHIWORD(a4));

return 0;

}

if ( Msg == 6 )

{

if ( ((_WORD)hDrop == 1 || (_WORD)hDrop == 2) && !IsIconic(hwndNP) && GetForegroundWindow() == hwndNP )

{

v4 = GetForegroundWindow();

SetFocus(v4);

}

return 0;

}

if ( Msg == 7 )

{

if ( !IsIconic(hwndNP) )

SetFocus(hwndEdit);

return 0;

}

goto LABEL_50;

}

if ( Msg == 16 )

{

SaveGlobals();

if ( CheckSave(0) )

{

if ( !WinHelpW(hwndNP, szHelpFile, 2u, 0) )

MessageBoxW(hwndNP, szErrSpace, szNN, 0x1010u);

DestroyWindow(hwndStatus);

DestroyWindow(hwndNP);

DeleteObject(hFont);

}

return 0;

}

if ( Msg != 17 )

{

if ( Msg == 26 )

return 0;

goto LABEL_50;

}

if ( fInSaveAsDlg )

{

MessageBeep(0);

MessageBeep(0);

MessageBoxW(hwndNP, (LPCWSTR)szCannotQuit, szNN, 0x1000u);

return 0;

}

return CheckSave(1);

}

// 1009094: using guessed type int szCannotQuit;

// 1009848: using guessed type int dwEmSetHandle;

// 100984C: using guessed type int fRunBySetup;

// 1009854: using guessed type int fInSaveAsDlg;

// 1009A94: using guessed type int fReverse;

// 100A488: using guessed type int wFRMsg;

//----- (0100393A) --------------------------------------------------------

LSTATUS __stdcall RegWriteInt(HKEY hKey, LPCWSTR lpValueName, BYTE Data)

{

return RegSetValueExW(hKey, lpValueName, 0, 4u, &Data, 4u);

}

//----- (0100395E) --------------------------------------------------------

LSTATUS __stdcall RegWriteString(HKEY hKey, LPCWSTR lpValueName, LPCWSTR lpData)

{

int v3; // eax@1

v3 = lstrlenW(lpData);

return RegSetValueExW(hKey, lpValueName, 0, 1u, (const BYTE *)lpData, 2 * v3 + 2);

}

//----- (0100398D) --------------------------------------------------------

int __stdcall RegGetInt(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 = *(_DWORD *)Data;

else

result = a3;

return result;

}

//----- (010039E2) --------------------------------------------------------

LSTATUS __stdcall RegGetString(HKEY Type, LPCWSTR lpValueName, const void *a3, LPBYTE lpData, DWORD cbData)

{

unsigned int v5; // esi@1

LPBYTE v6; // edi@1

LSTATUS result; // eax@2

v5 = 2 * cbData;

v6 = lpData;

cbData *= 2;

if ( !Type

|| (result = RegQueryValueExW(Type, lpValueName, 0, (LPDWORD)&Type, lpData, &cbData)) != 0

|| Type != (HKEY)1 )

{

result = v5;

memcpy(v6, a3, v5);

}

return result;

}

//----- (01003A39) --------------------------------------------------------

LSTATUS __cdecl SaveGlobals()

{

LSTATUS result; // eax@1

WINDOWPLACEMENT wndpl; // [sp+0h] [bp-30h]@2

HKEY hKey; // [sp+2Ch] [bp-4h]@1

result = RegCreateKeyW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Notepad", &hKey);

if ( !result )

{

RegWriteInt(hKey, L"lfEscapement", LOBYTE(FontStruct.lfEscapement));

RegWriteInt(hKey, L"lfOrientation", LOBYTE(FontStruct.lfOrientation));

RegWriteInt(hKey, L"lfWeight", LOBYTE(FontStruct.lfWeight));

RegWriteInt(hKey, L"lfItalic", FontStruct.lfItalic);

RegWriteInt(hKey, L"lfUnderline", FontStruct.lfUnderline);

RegWriteInt(hKey, L"lfStrikeOut", FontStruct.lfStrikeOut);

RegWriteInt(hKey, L"lfCharSet", FontStruct.lfCharSet);

RegWriteInt(hKey, L"lfOutPrecision", FontStruct.lfOutPrecision);

RegWriteInt(hKey, L"lfClipPrecision", FontStruct.lfClipPrecision);

RegWriteInt(hKey, L"lfQuality", FontStruct.lfQuality);

RegWriteInt(hKey, L"lfPitchAndFamily", FontStruct.lfPitchAndFamily);

RegWriteInt(hKey, L"iPointSize", iPointSize);

RegWriteInt(hKey, L"fWrap", fWrap);

RegWriteInt(hKey, L"StatusBar", fStatus);

RegWriteInt(hKey, L"fSaveWindowPositions", Data);

RegWriteString(hKey, L"lfFaceName", FontStruct.lfFaceName);

RegWriteString(hKey, L"szHeader", &chPageText);

RegWriteString(hKey, L"szTrailer", &String1);

RegWriteInt(hKey, L"iMarginTop", LOBYTE(g_PageSetupDlg.rtMargin.top));

RegWriteInt(hKey, L"iMarginBottom", LOBYTE(g_PageSetupDlg.rtMargin.bottom));

RegWriteInt(hKey, L"iMarginLeft", LOBYTE(g_PageSetupDlg.rtMargin.left));

RegWriteInt(hKey, L"iMarginRight", LOBYTE(g_PageSetupDlg.rtMargin.right));

RegWriteInt(hKey, L"fMLE_is_broken", fMLE_is_broken);

wndpl.length = 44;

if ( GetWindowPlacement(hwndNP, &wndpl) )

{

RegWriteInt(hKey, L"iWindowPosX", LOBYTE(wndpl.rcNormalPosition.left));

RegWriteInt(hKey, L"iWindowPosY", LOBYTE(wndpl.rcNormalPosition.top));

RegWriteInt(hKey, L"iWindowPosDX", LOBYTE(wndpl.rcNormalPosition.right) - LOBYTE(wndpl.rcNormalPosition.left));

RegWriteInt(hKey, L"iWindowPosDY", LOBYTE(wndpl.rcNormalPosition.bottom) - LOBYTE(wndpl.rcNormalPosition.top));

}

result = RegCloseKey(hKey);

}

return result;

}

//----- (01003C92) --------------------------------------------------------

LSTATUS __cdecl GetGlobals()

{

HGDIOBJ v0; // eax@1

LSTATUS result; // eax@5

HKEY hKey; // [sp+8h] [bp-64h]@3

char pv; // [sp+Ch] [bp-60h]@2

int v4; // [sp+14h] [bp-58h]@5

int v5; // [sp+18h] [bp-54h]@5

int v6; // [sp+1Ch] [bp-50h]@5

unsigned __int8 v7; // [sp+20h] [bp-4Ch]@5

unsigned __int8 v8; // [sp+21h] [bp-4Bh]@5

unsigned __int8 v9; // [sp+22h] [bp-4Ah]@5

unsigned __int8 v10; // [sp+23h] [bp-49h]@5

unsigned __int8 v11; // [sp+24h] [bp-48h]@5

unsigned __int8 v12; // [sp+25h] [bp-47h]@5

unsigned __int8 v13; // [sp+26h] [bp-46h]@5

unsigned __int8 v14; // [sp+27h] [bp-45h]@5

v0 = GetStockObject(16);

if ( v0 )

GetObjectW(v0, 92, &pv);

if ( RegCreateKeyW(HKEY_CURRENT_USER, L"Software\\Microsoft\\Notepad", &hKey) )

hKey = 0;

FontStruct.lfWidth = 0;

FontStruct.lfEscapement = RegGetInt(hKey, L"lfEscapement", v4);

FontStruct.lfOrientation = RegGetInt(hKey, L"lfOrientation", v5);

FontStruct.lfWeight = RegGetInt(hKey, L"lfWeight", v6);

FontStruct.lfItalic = RegGetInt(hKey, L"lfItalic", v7);

FontStruct.lfUnderline = RegGetInt(hKey, L"lfUnderline", v8);

FontStruct.lfStrikeOut = RegGetInt(hKey, L"lfStrikeOut", v9);

FontStruct.lfCharSet = RegGetInt(hKey, L"lfCharSet", v10);

FontStruct.lfOutPrecision = RegGetInt(hKey, L"lfOutPrecision", v11);

FontStruct.lfClipPrecision = RegGetInt(hKey, L"lfClipPrecision", v12);

FontStruct.lfQuality = RegGetInt(hKey, L"lfQuality", v13);

FontStruct.lfPitchAndFamily = RegGetInt(hKey, L"lfPitchAndFamily", v14);

RegGetString(hKey, L"lfFaceName", L"Lucida Console", (LPBYTE)FontStruct.lfFaceName, 0x20u);

*(_DWORD *)&iPointSize = RegGetInt(hKey, L"iPointSize", 100);

fWrap = RegGetInt(hKey, L"fWrap", 0);

*(_DWORD *)&fStatus = RegGetInt(hKey, L"StatusBar", 0);

*(_DWORD *)&Data = RegGetInt(hKey, L"fSaveWindowPositions", 0);

RegGetString(hKey, L"szHeader", &chPageText, (LPBYTE)&chPageText, 0x28u);

RegGetString(hKey, L"szTrailer", &String1, (LPBYTE)&String1, 0x28u);

g_PageSetupDlg.rtMargin.top = RegGetInt(hKey, L"iMarginTop", g_PageSetupDlg.rtMargin.top);

g_PageSetupDlg.rtMargin.bottom = RegGetInt(hKey, L"iMarginBottom", g_PageSetupDlg.rtMargin.bottom);

g_PageSetupDlg.rtMargin.left = RegGetInt(hKey, L"iMarginLeft", g_PageSetupDlg.rtMargin.left);

g_PageSetupDlg.rtMargin.right = RegGetInt(hKey, L"iMarginRight", g_PageSetupDlg.rtMargin.right);

Y = RegGetInt(hKey, L"iWindowPosY", 2147483648);

X = RegGetInt(hKey, L"iWindowPosX", 2147483648);

nWidth = RegGetInt(hKey, L"iWindowPosDX", 2147483648);

nHeight = RegGetInt(hKey, L"iWindowPosDY", 2147483648);

result = RegGetInt(hKey, L"fMLE_is_broken", 0);

*(_DWORD *)&fMLE_is_broken = result;

if ( hKey )

result = RegCloseKey(hKey);

return result;

}

// 10016DC: using guessed type wchar_t aLucidaConsole[15];

//----- (01003F4C) --------------------------------------------------------

signed int __usercall sub_1003F4C(WCHAR **a1, unsigned __int16 *a2)

{

unsigned __int16 *v2; // edi@1

WCHAR **v3; // ebx@1

unsigned __int16 v4; // ax@1

__int16 v5; // ST10_2@2

WCHAR *v6; // eax@2

signed int result; // eax@4

v2 = a2;

v3 = a1;

v4 = *a2;

if ( *a2 )

{

while ( 1 )

{

v5 = (unsigned int)CharUpperW((LPWSTR)v4);

v6 = (WCHAR *)*(_WORD *)v3;

++v2;

v3 = (WCHAR **)((char *)v3 + 2);

if ( v5 != (unsigned __int16)CharUpperW(v6) )

break;

v4 = *v2;

if ( !*v2 )

goto LABEL_4;

}

result = 1;

}

else

{

LABEL_4:

result = 0;

}

return result;

}

//----- (01003F99) --------------------------------------------------------

LPCWSTR __stdcall GetFileName(LPWSTR lpFileName, LPCWSTR lpString2)

{

LPCWSTR i; // esi@1

LPWSTR v3; // ecx@1

unsigned int v4; // edx@4

const WCHAR v5; // di@4

WCHAR v6; // ax@8

HANDLE v7; // eax@10

struct _WIN32_FIND_DATAW FindFileData; // [sp+Ch] [bp-254h]@10

i = lpString2;

v3 = lpFileName;

if ( *lpString2 == 34 || *lpString2 == 39 )

{

v4 = 0;

v5 = *lpString2;

for ( i = lpString2 + 1; ; ++i )

{

v6 = *i;

if ( !*i || v6 == v5 || v4 >= 0x104 )

break;

*v3 = v6;

++v3;

++v4;

}

*v3 = 0;

}

else

{

lstrcpynW(lpFileName, lpString2, 260);

}

v7 = FindFirstFileW(lpFileName, &FindFileData);

if ( v7 != (HANDLE)-1 || (AddExt(lpFileName), v7 = FindFirstFileW(lpFileName, &FindFileData), v7 != (HANDLE)-1) )

FindClose(v7);

return i;

}

// 1009604: using guessed type int __security_cookie;

//----- (01004047) --------------------------------------------------------

HLOCAL __stdcall SizeStrings(HINSTANCE hInstance)

{

int v1; // esi@1

signed int v2; // edi@2

int v3; // ebx@2

int v4; // eax@3

HLOCAL result; // eax@1

WCHAR *hMem; // [sp+Ch] [bp-4h]@7

v1 = 280;

for ( result = LocalAlloc(0x40u, 0x230u); ; result = LocalAlloc(0x40u, 2 * v1) )

{

hMem = (WCHAR *)result;

if ( !result )

break;

v2 = 0;

v3 = 0;

do

{

v4 = LoadStringW(hInstance, *(_DWORD *)rgsz[v2], hMem, v1);

if ( v4 >= v1 - 1 )

break;

++v2;

v3 += v4 + 1;

}

while ( v2 < 45 );

LocalFree(hMem);

if ( v2 >= 45 )

return (HLOCAL)v3;

v1 *= 2;

}

return result;

}

// 10090E8: using guessed type int rgsz[9];

//----- (010040BA) --------------------------------------------------------

HLOCAL __stdcall InitStrings(HINSTANCE hInstance)

{

HLOCAL result; // eax@1

WCHAR *v2; // esi@2

int v3; // ebx@3

UINT **v4; // edi@5

int v5; // eax@6

result = SizeStrings(hInstance);

if ( result )

{

result = LocalAlloc(0x40u, 2 * (_DWORD)result);

v2 = (WCHAR *)result;

if ( result )

{

v3 = LocalSize(result) >> 1;

if ( v3 )

{

v4 = (UINT **)rgsz;

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)&off_100919C )

{

lstrcpynW(&chPageText, *(&szHelpFile + 1), 40);

lstrcpynW(&String1, *(&szHelpFile + 2), 40);

chMerge = *(_WORD *)szMerge;

return (HLOCAL)1;

}

}

MessageBoxW(0, L"Out of RC string space!!", L"DEV Error!", 0);

result = 0;

}

else

{

result = 0;

}

}

}

return result;

}

// 1009070: using guessed type int szMerge;

// 10090E8: using guessed type int rgsz[9];

// 100919C: using guessed type __int16 *off_100919C;

// 100AB90: using guessed type __int16 chMerge;

//----- (0100417A) --------------------------------------------------------

int __stdcall SkipBlanks(int a1)

{

int result; // eax@1

for ( result = a1; *(_WORD *)result == 32 || *(_WORD *)result == 9; result += 2 )

;

return result;

}

//----- (0100419E) --------------------------------------------------------

signed int __stdcall ProcessSetupOption(WCHAR **a1)

{

const WCHAR *v1; // eax@2

DWORD v2; // eax@4

int v3; // eax@5

int v4; // eax@7

signed int result; // eax@14

int v6; // [sp+Ch] [bp-4h]@1

v6 = 0;

if ( !sub_1003F4C(a1, L"/.SETUP") )

{

fRunBySetup = 1;

hSysMenuSetup = GetSystemMenu(hwndNP, 0);

hAccel = LoadAcceleratorsW(hInstanceNP, L"SlipUpAcc");

SetWindowLongW(hwndNP, -16, 16580608);

v1 = (const WCHAR *)SkipBlanks((int)((char *)a1 + 14));

if ( !*v1 )

return 6;

GetFileName((LPWSTR)&szFileName, v1);

fp = CreateFileW(&szFileName, 0x80000000, 3u, 0, 3u, 0x80u, 0);

if ( fp != (HANDLE)-1 )

goto LABEL_19;

v2 = GetLastError() - 2;

if ( v2 )

{

v3 = v2 - 3;

if ( v3 )

v4 = v3 == 118 ? AlertBox(hwndNP, szNN, (LPCWSTR)szNVF, &szFileName, 0x31u) : AlertBox(

hwndNP,

szNN,

szDiskError,

&szFileName,

0x31u);

else

v4 = AlertBox(hwndNP, szNN, (LPCWSTR)szACCESSDENY, &szFileName, 0x31u);

v6 = v4;

}

else

{

v6 = AlertBox(hwndNP, szNN, szFNF, &szFileName, 0x33u);

if ( v6 == 6 )

fp = CreateFileW(&szFileName, 0xC0000000, 3u, 0, 4u, 0x80u, 0);

}

if ( fp != (HANDLE)-1 )

{

LABEL_19:

LoadFile(&szFileName, dword_1009A80);

result = 2;

if ( v6 == 2 )

return result;

return 6;

}

}

return 0;

}

// 100175C: using guessed type wchar_t a_setup[8];

// 1009064: using guessed type int szNVF;

// 100909C: using guessed type int szACCESSDENY;

// 100984C: using guessed type int fRunBySetup;

//----- (010042F9) --------------------------------------------------------

signed int __stdcall ProcessShellOptions(WCHAR **a1, int nCmdShow)

{

int v2; // eax@2

const WCHAR *v3; // esi@5

int v4; // eax@6

int v5; // eax@8

int v6; // eax@9

unsigned int v7; // edx@9

WCHAR v8; // cx@13

DWORD v9; // eax@16

int v10; // eax@17

int v11; // eax@18

const WCHAR *v12; // eax@20

signed int v14; // [sp+8h] [bp-4h]@1

v14 = 1;

if ( sub_1003F4C(a1, L"/PT") )

{

if ( sub_1003F4C(a1, L"/P") )

return 0;

v2 = SkipBlanks((int)(a1 + 1));

}

else

{

v2 = SkipBlanks((int)((char *)a1 + 6));

v14 = 0;

}

v3 = (const WCHAR *)v2;

if ( !*(_WORD *)v2 )

return 0;

ShowWindow(hwndNP, nCmdShow);

v4 = (int)(GetFileName((LPWSTR)&szFileName, v3) + 1);

if ( !v14 )

{

if ( *(_WORD *)v4 )

{

v5 = SkipBlanks(v4);

if ( *(_WORD *)v5 == 34 )

{

v6 = v5 + 2;

v7 = 0;

while ( 1 )

{

v8 = *(_WORD *)v6;

if ( !*(_WORD *)v6 || v8 == 34 || v7 >= 0xFF )

break;

*(&szPrinterName + v7++) = v8;

v6 += 2;

}

*(&szPrinterName + v7) = 0;

goto LABEL_15;

}

}

return 0;

}

LABEL_15:

fp = CreateFileW(&szFileName, 0x80000000, 3u, 0, 3u, 0x80u, 0);

if ( fp == (HANDLE)-1 )

{

v9 = GetLastError() - 2;

if ( v9 )

{

v10 = v9 - 3;

if ( v10 && (v11 = v10 - 60) != 0 )

{

if ( v11 == 58 )

v12 = (const WCHAR *)szNVF;

else

v12 = szDiskError;

}

else

{

v12 = (const WCHAR *)szACCESSDENY;

}

}

else

{

v12 = szFNF;

}

AlertBox(hwndNP, szNN, v12, &szFileName, 0x30u);

}

else

{

LoadFile(&szFileName, dword_1009A80);

if ( v14 )

PrintIt(1);

else

PrintIt(2);

}

return 1;

}

// 100176C: using guessed type wchar_t aP[3];

// 1001774: using guessed type wchar_t aPt[4];

// 1009064: using guessed type int szNVF;

// 100909C: using guessed type int szACCESSDENY;

//----- (01004458) --------------------------------------------------------

HFILTER __stdcall CreateFilter()

{

WCHAR *v0; // ebx@1

WCHAR *v1; // ebx@1

WCHAR *v2; // ebx@1

HFILTER result; // eax@1

WCHAR *lpString; // [sp+14h] [bp+8h]@0

lstrcpyW(lpString, szAnsiText);

v0 = &lpString[lstrlenW(lpString) + 1];

lstrcpyW(v0, L"*.txt");

v1 = &v0[lstrlenW(v0) + 1];

lstrcpyW(v1, szAllFiles);

v2 = &v1[lstrlenW(v1) + 1];

lstrcpyW(v2, L"*.*");

result = (HFILTER)lstrlenW(v2);

v2[(_DWORD)result + 1] = 0;

return result;

}

// 1004458: inconsistent function type and number of purged bytes

//----- (010044BB) --------------------------------------------------------

int __stdcall EnumProc(int a1, int a2, int a3, int a4)

{

*(_BYTE *)(a4 + 23) = *(_BYTE *)(a1 + 23);

return 0;

}

//----- (010044D7) --------------------------------------------------------

BOOL __usercall sub_10044D7(HINSTANCE a1)

{

int v1; // eax@1

WNDCLASSEXW v3; // [sp+4h] [bp-30h]@1

v3.cbSize = 48;

v1 = GetSystemMetrics(41);

v3.hCursor = LoadCursorW(0, (LPCWSTR)(32513 - (v1 != 0)));

v3.hIcon = LoadIconW(a1, (LPCWSTR)2);

v3.hIconSm = LoadImageW(a1, (LPCWSTR)2, 1u, 16, 16, 0);

v3.lpszMenuName = (LPCWSTR)1;

v3.hInstance = a1;

v3.lpszClassName = L"Notepad";

v3.lpfnWndProc = (WNDPROC)NPWndProc;

v3.hbrBackground = (HBRUSH)6;

v3.style = 0;

v3.cbClsExtra = 0;

v3.cbWndExtra = 0;

return RegisterClassExW(&v3) != 0;

}

//----- (01004565) --------------------------------------------------------

signed int __stdcall NPInit(HINSTANCE hInstance, int a2, __int32 a3, int nCmdShow)

{

int v4; // eax@5

HACCEL v5; // eax@5

void *v6; // ecx@5

HWND v7; // edx@9

HMENU v8; // eax@16

HMENU v9; // eax@16

int v10; // eax@17

int v11; // eax@19

int v12; // edi@19

signed int v13; // eax@25

int v15; // eax@34

WINDOWPLACEMENT wndpl; // [sp+Ch] [bp-A8h]@12

struct tagRECT Rect; // [sp+38h] [bp-7Ch]@13

int v18; // [sp+48h] [bp-6Ch]@15

int v19; // [sp+4Ch] [bp-68h]@15

int v20; // [sp+50h] [bp-64h]@15

int v21; // [sp+54h] [bp-60h]@15

LPARAM lParam; // [sp+58h] [bp-5Ch]@15

int v23; // [sp+5Ch] [bp-58h]@15

HINSTANCE v24; // [sp+60h] [bp-54h]@1

__int32 v25; // [sp+64h] [bp-50h]@1

HGDIOBJ wParam; // [sp+68h] [bp-4Ch]@17

HDC hDC; // [sp+6Ch] [bp-48h]@3

WCHAR String1; // [sp+70h] [bp-44h]@17

v24 = hInstance;

v25 = a3;

wFRMsg = RegisterWindowMessageW(L"commdlg_FindReplace");

if ( !wFRMsg )

return 0;

wHlpMsg = RegisterWindowMessageW(L"commdlg_help");

if ( !wHlpMsg )

return 0;

hDC = GetDC(0);

if ( !hDC )

return 0;

if ( !InitStrings(hInstance) )

return 0;

v4 = GetSystemMetrics(41);

hStdCursor = LoadCursorW(0, (LPCWSTR)(32513 - (v4 != 0)));

hWaitCursor = LoadCursorW(0, (LPCWSTR)0x7F02);

v5 = LoadAcceleratorsW(hInstance, L"MainAcc");

hAccel = v5;

if ( !hWaitCursor || !v5 || !a2 && !sub_10044D7(hInstance) )

return 0;

hInstanceNP = hInstance;

g_PageSetupDlg.lStructSize = 84;

g_PageSetupDlg.hDevMode = 0;

g_PageSetupDlg.hDevNames = 0;

g_PageSetupDlg.hInstance = hInstance;

SetPageSetupDefaults(v6);

GetGlobals();

v7 = CreateWindowExW(0, L"Notepad", &szOtherStuff, 0xCF0000u, X, Y, nWidth, nHeight, 0, 0, hInstance, 0);

hwndNP = v7;

g_PageSetupDlg.hwndOwner = v7;

if ( !v7 )

return 0;

if ( nWidth != 2147483648 && nHeight != 2147483648 )

{

memset(&wndpl, 0, sizeof(wndpl));

wndpl.rcNormalPosition.left = X;

wndpl.rcNormalPosition.right = nWidth + X;

wndpl.rcNormalPosition.top = Y;

wndpl.rcNormalPosition.bottom = nHeight + Y;

wndpl.length = 44;

SetWindowPlacement(v7, &wndpl);

v7 = hwndNP;

}

DragAcceptFiles(v7, 1);

GetClientRect(hwndNP, &Rect);

hwndEdit = CreateWindowExW(

0x200u,

L"Edit",

&szOtherStuff,

fWrap != 0 ? 1344274692 : 1345323268,

0,

0,

Rect.right,

Rect.bottom - 100,

hwndNP,

(HMENU)0xF,

v24,

0);

if ( !hwndEdit )

return 0;

hwndStatus = CreateStatusWindowW(

(*(_DWORD *)&fStatus != 0 ? 0x10000000 : 0) | 0x44800000,

&szOtherStuff,

hwndNP,

0x401u);

if ( !hwndStatus )

return 0;

UpdateStatusBar(1);

GetClientRect(hwndStatus, (LPRECT)&v18);

dyStatus = v21 - v19;

v23 = -1;

lParam = 3 * (v20 - v18) / 4;

SendMessageW(hwndStatus, 0x404u, 2u, (LPARAM)&lParam);

SendMessageW(hwndEdit, 0xC8u, fWrap, 0);

if ( fWrap )

{

v8 = GetMenu(hwndNP);

v9 = GetSubMenu(v8, 3);

EnableMenuItem(v9, 0x1Bu, 1u);

}

v10 = GetDeviceCaps(hDC, 90);

FontStruct.lfHeight = -MulDiv(*(int *)&iPointSize, v10, 720);

hFont = CreateFontIndirectW(&FontStruct);

wParam = SelectObject(hDC, hFont);

GetTextFaceW(hDC, 32, &String1);

SelectObject(hDC, wParam);

if ( lstrcmpiW(&String1, FontStruct.lfFaceName) )

{

EnumFontsW(hDC, FontStruct.lfFaceName, (FONTENUMPROCW)EnumProc, (LPARAM)&FontStruct);

DeleteObject(hFont);

hFont = CreateFontIndirectW(&FontStruct);

}

SendMessageW(hwndEdit, 0x30u, (WPARAM)hFont, 0);

ReleaseDC(0, hDC);

szSearch = 0;

hEdit = LocalAlloc(0x42u, 2u);

PostMessageW(hwndEdit, 0xC5u, 0, 0);

SetTitle(szUntitled);

ShowWindow(hwndNP, nCmdShow);

SetCursor(hStdCursor);

v11 = SkipBlanks(v25);

dword_1009A80 = -1;

v12 = v11;

if ( !sub_1003F4C((WCHAR **)v11, L"/A") )

{

dword_1009A80 = 0;

LABEL_24:

v12 = SkipBlanks(v12 + 4);

goto LABEL_25;

}

if ( !sub_1003F4C((WCHAR **)v12, L"/W") )

dword_1009A80 = 1;

if ( dword_1009A80 != -1 )

goto LABEL_24;

LABEL_25:

v13 = ProcessSetupOption((WCHAR **)v12);

if ( v13 )

{

if ( v13 == 2 )

return 0;

LABEL_40:

CreateFilter();

CreateFilter();

memset(&OFN, 0, 0x58u);

OFN.hInstance = v24;

memset(&FR, 0, sizeof(FR));

OFN.lStructSize = 88;

OFN.hwndOwner = hwndNP;

OFN.nMaxFile = 260;

FR.lStructSize = 40;

FR.hwndOwner = hwndNP;

SendMessageW(hwndEdit, 0xB0u, (WPARAM)&wParam, (LPARAM)&v25);

SendMessageW(hwndEdit, 0xB1u, (WPARAM)wParam, v25);

SendMessageW(hwndEdit, 0xB7u, 0, 0);

if ( ((unsigned int)GetKeyboardLayout(0) & 0x3FF) == 17 )

SendMessageW(hwndEdit, 0xD8u, 1u, 1);

return 1;

}

if ( !ProcessShellOptions((WCHAR **)v12, nCmdShow) )

{

if ( *(_WORD *)v12 )

{

GetFileName((LPWSTR)&szFileName, (LPCWSTR)v12);

fp = CreateFileW(&szFileName, 0x80000000, 3u, 0, 3u, 0x80u, 0);

if ( fp != (HANDLE)-1 )

goto LABEL_45;

if ( GetLastError() == 2 )

{

v15 = AlertBox(hwndNP, szNN, szFNF, &szFileName, 0x33u);

if ( v15 == 2 )

return 0;

if ( v15 == 6 )

fp = CreateFileW(&szFileName, 0xC0000000, 3u, 0, 4u, 0x80u, 0);

}

else

{

AlertUser_FileFail(&szFileName);

SetTitle(szUntitled);

lstrcpyW((LPWSTR)&szFileName, szUntitled);

}

if ( fp != (HANDLE)-1 )

LABEL_45:

LoadFile(&szFileName, dword_1009A80);

}

goto LABEL_40;

}

PostMessageW(hwndNP, 0x10u, 0, 0);

return 1;

}

// 1001784: using guessed type wchar_t aW[3];

// 100178C: using guessed type wchar_t aA[3];

// 100A484: using guessed type int wHlpMsg;

// 100A488: using guessed type int wFRMsg;

// 100A6E0: using guessed type int dyStatus;

//----- (01004B65) --------------------------------------------------------

void __stdcall ReverseEndian(int a1, int a2, int a3)

{

int v3; // esi@1

int v4; // eax@2

int v5; // ecx@2

__int16 v6; // bx@3

v3 = a3;

if ( a3 )

{

v4 = a2;

v5 = a1;

do

{

LOBYTE(v6) = 0;

HIBYTE(v6) = *(_BYTE *)v4;

*(_WORD *)v5 = v6 ^ *(_BYTE *)(v4 + 1);

v5 += 2;

v4 += 2;

--v3;

}

while ( v3 );

}

}

//----- (01004B99) --------------------------------------------------------

signed int __stdcall AnsiWriteFile(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;

}

//----- (01004C49) --------------------------------------------------------

LRESULT __cdecl ClearFmt()

{

LRESULT result; // eax@5

if ( fWrap )

{

if ( *(_DWORD *)&fMLE_is_broken )

{

GotoAndScrollInView(1);

}

else

{

SendMessageW(hwndEdit, 0xB0u, (WPARAM)&wParam, (LPARAM)&lParam);

SendMessageW(hwndEdit, 0xB1u, 0, 0);

}

result = SendMessageW(hwndEdit, 0xC8u, 0, 0);

}

return result;

}

//----- (01004CAB) --------------------------------------------------------

LRESULT __cdecl RestoreFmt()

{

LRESULT result; // eax@1

result = 0;

if ( fWrap )

{

if ( *(_DWORD *)&fMLE_is_broken )

{

result = NpReCreate(0x50200104u);

}

else

{

SendMessageW(hwndEdit, 0xC8u, 1u, 0);

result = SendMessageW(hwndEdit, 0xB1u, wParam, lParam);

}

}

return result;

}

//----- (01004CFF) --------------------------------------------------------

__int32 __stdcall New(int a1)

{

__int32 result; // eax@2

HLOCAL v2; // eax@3

if ( !a1 || (result = CheckSave(0)) != 0 )

{

SendMessageW(hwndEdit, 0xCu, 0, (LPARAM)&szOtherStuff);

fUntitled = 1;

lstrcpyW((LPWSTR)&szFileName, szUntitled);

SetTitle(&szFileName);

SendMessageW(hwndEdit, 0xB1u, 0, 0);

SendMessageW(hwndEdit, 0xB7u, 0, 0);

v2 = LocalReAlloc(hEdit, 2u, 2u);

if ( v2 )

hEdit = v2;

*(_WORD *)LocalLock(hEdit) = 0;

LocalUnlock(hEdit);

result = SendMessageW(hwndEdit, 0xBCu, (WPARAM)hEdit, 0);

szSearch = 0;

}

return result;

}

// 100901C: using guessed type int fUntitled;

//----- (01004DCD) --------------------------------------------------------

WCHAR *__stdcall AddExt(LPCWSTR lpString1)

{

WCHAR *result; // eax@1

unsigned int i; // ecx@1

int v3; // edx@6

result = (WCHAR *)lstrlenW(lpString1);

for ( i = (unsigned int)&lpString1[(_DWORD)result]; ; i -= 2 )

{

v3 = *(_WORD *)i;

if ( v3 == 46 || v3 == 92 || v3 == 58 || i <= (unsigned int)lpString1 )

break;

}

if ( *(_WORD *)i != 46 )

{

result = (WCHAR *)((char *)result + 5);

if ( (unsigned int)result <= 0x104 )

result = lstrcatW((LPWSTR)lpString1, L".txt");

}

return result;

}

//----- (01004E20) --------------------------------------------------------

int __stdcall AlertUser_FileFail(LPCWSTR lpString)

{

DWORD v1; // ST0C_4@1

DWORD v2; // eax@1

int result; // eax@2

WCHAR Text; // [sp+4h] [bp-204h]@1

v1 = GetUserDefaultUILanguage();

v2 = GetLastError();

if ( FormatMessageW(0x1200u, 0, v2, v1, &Text, 0x100u, 0) )

result = MessageBoxW(hwndNP, &Text, szNN, 0x30u);

else

result = AlertBox(hwndNP, szNN, szDiskError, lpString, 0x30u);

return result;

}

//----- (01004EAE) --------------------------------------------------------

signed int __stdcall SaveFile(HWND hWnd, LPCWSTR lpString, LPCWSTR lpBuffer)

{

HANDLE v3; // eax@2

int v5; // ebx@9

LRESULT v6; // eax@9

BOOL *v7; // eax@16

DWORD v8; // edi@16

int v9; // eax@18

BOOL v10; // eax@23

BOOL v11; // edi@24

int v12; // [sp+4h] [bp-14h]@5

BOOL UsedDefaultChar; // [sp+8h] [bp-10h]@1

HLOCAL hMem; // [sp+Ch] [bp-Ch]@9

UINT CodePage; // [sp+10h] [bp-8h]@16

DWORD NumberOfBytesWritten; // [sp+14h] [bp-4h]@14

const void *lpBuffera; // [sp+28h] [bp+10h]@10

UsedDefaultChar = 0;

if ( lpBuffer )

v3 = CreateFileW(lpString, 0xC0000000, 3u, 0, 4u, 0x80u, 0);

else

v3 = CreateFileW(lpString, 0xC0000000, 1u, 0, 4u, 0x80u, 0);

fp = v3;

if ( v3 == (HANDLE)-1 || (v12 = GetLastError() != 183, fp == (HANDLE)-1) )

{

AlertBox(hWnd, szNN, szCREATEERR, lpString, 0x30u);

return 0;

}

if ( fWrap )

ClearFmt();

v5 = SendMessageW(hwndEdit, 0xEu, 0, 0);

v6 = SendMessageW(hwndEdit, 0xBDu, 0, 0);

hMem = (HLOCAL)v6;

if ( !v6 )

goto LABEL_29;

lpBuffera = LocalLock((HLOCAL)v6);

if ( !lpBuffera )

goto LABEL_29;

if ( g_ftSaveAs == 1 )

{

WriteFile(fp, &unk_10091E4, 2u, &NumberOfBytesWritten, 0);

v10 = WriteFile(fp, lpBuffera, 2 * v5, &NumberOfBytesWritten, 0);

}

else

{

if ( g_ftSaveAs == 2 )

{

WriteFile(fp, &unk_10091E8, 2u, &NumberOfBytesWritten, 0);

ReverseEndian((int)lpBuffera, (int)lpBuffera, v5);

v11 = WriteFile(fp, lpBuffera, 2 * v5, &NumberOfBytesWritten, 0);

ReverseEndian((int)lpBuffera, (int)lpBuffera, v5);

goto LABEL_27;

}

if ( g_ftSaveAs == 3 )

WriteFile(fp, &BOM_UTF8, 3u, &NumberOfBytesWritten, 0);

if ( g_ftSaveAs == 3 )

{

v7 = 0;

CodePage = 65001;

v8 = 0;

}

else

{

CodePage = GetACP();

v7 = &UsedDefaultChar;

v8 = 1024;

}

v9 = WideCharToMultiByte(CodePage, v8, (LPCWSTR)lpBuffera, v5, 0, 0, 0, v7);

if ( UsedDefaultChar || v5 && !v9 )

{

if ( AlertBox(hWnd, szNN, szErrUnicode, lpString, 0x31u) == 2 )

{

LABEL_30:

SetCursor(hStdCursor);

CloseHandle(fp);

fp = (HANDLE)-1;

if ( hMem )

LocalUnlock(hMem);

if ( v12 )

DeleteFileW(lpString);

if ( fWrap )

RestoreFmt();

return 0;

}

v8 = 0;

}

v10 = AnsiWriteFile(fp, CodePage, v8, (LPCWSTR)lpBuffera, v5);

}

v11 = v10;

LABEL_27:

if ( !v11 )

{

SetCursor(hStdCursor);

LABEL_29:

AlertUser_FileFail(lpString);

goto LABEL_30;

}

SetEndOfFile(fp);

g_ftOpenedAs = g_ftSaveAs;

SendMessageW(hwndEdit, 0xB9u, 0, 0);

SetTitle(lpString);

fUntitled = 0;

CloseHandle(fp);

fp = (HANDLE)-1;

LocalUnlock(hMem);

if ( fWrap )

RestoreFmt();

SetCursor(hStdCursor);

return 1;

}

// 100901C: using guessed type int fUntitled;

// 100A528: using guessed type int g_ftSaveAs;

//----- (01005179) --------------------------------------------------------

signed int __stdcall LoadFile(LPCWSTR lpString, int a2)

{

BOOL v2; // eax@3

unsigned int v3; // esi@3

int v4; // edi@8

HANDLE v5; // eax@8

int v6; // eax@16

unsigned __int32 v7; // ebx@20

void (__stdcall *v8)(HWND, UINT, WPARAM, LPARAM); // esi@32

HLOCAL v9; // eax@32

bool v10; // zf@44

int v11; // eax@49

const void *v12; // esi@51

int v13; // eax@57

int v14; // ecx@60

unsigned __int32 v15; // edx@61

__int16 v16; // cx@65

int v17; // eax@65

__int16 v18; // cx@66

int v19; // eax@66

__int16 v20; // cx@67

int v21; // eax@67

int v22; // eax@76

struct _BY_HANDLE_FILE_INFORMATION FileInformation; // [sp+Ch] [bp-290h]@3

HANDLE hObject; // [sp+40h] [bp-25Ch]@8

int v26; // [sp+44h] [bp-258h]@24

int cbMultiByte; // [sp+48h] [bp-254h]@3

int v28; // [sp+4Ch] [bp-250h]@1

__int16 v29; // [sp+50h] [bp-24Ch]@10

HLOCAL hMem; // [sp+54h] [bp-248h]@1

LPCSTR lpMultiByteStr; // [sp+58h] [bp-244h]@15

LPCWSTR pcchNewDestLength; // [sp+5Ch] [bp-240h]@1

LPVOID v33; // [sp+60h] [bp-23Ch]@8

int v34; // [sp+64h] [bp-238h]@1

int v35; // [sp+68h] [bp-234h]@1

UINT CodePage; // [sp+6Ch] [bp-230h]@1

int v37; // [sp+70h] [bp-22Ch]@19

int wParam; // [sp+74h] [bp-228h]@29

WCHAR String; // [sp+78h] [bp-224h]@33

CPPEH_RECORD ms_exc; // [sp+284h] [bp-18h]@15

pcchNewDestLength = lpString;

v35 = 0;

v28 = 0;

v34 = 0;

hMem = 0;

CodePage = 0;

if ( fp == (HANDLE)-1 )

{

AlertUser_FileFail(lpString);

return 0;

}

v2 = GetFileInformationByHandle(fp, &FileInformation);

v3 = FileInformation.nFileSizeLow;

cbMultiByte = FileInformation.nFileSizeLow;

if ( !v2 )

{

AlertUser_FileFail(lpString);

LABEL_78:

CloseHandle(fp);

fp = (HANDLE)-1;

return 0;

}

if ( FileInformation.nFileSizeLow >= 0x40000000 || FileInformation.nFileSizeHigh )

{

AlertBox(hwndNP, szNN, szFTL, lpString, 0x30u);

goto LABEL_78;

}

SetCursor(hWaitCursor);

if ( v3 )

{

v4 = 0;

v33 = 0;

v5 = CreateFileMappingW(fp, 0, 2u, 0, v3, 0);

hObject = v5;

if ( !v5 )

goto LABEL_12;

v33 = MapViewOfFile(v5, 4u, 0, 0, v3);

CloseHandle(hObject);

}

else

{

v33 = &v29;

v29 = 0;

}

v4 = (int)v33;

LABEL_12:

CloseHandle(fp);

fp = (HANDLE)-1;

if ( !v4 )

{

SetCursor(hStdCursor);

AlertUser_FileFail(pcchNewDestLength);

return 0;

}

ms_exc.registration.TryLevel = 0;

lpMultiByteStr = (LPCSTR)v4;

if ( a2 != -1 )

{

if ( a2 == 1 )

{

v34 = 1;

v37 = 1;

v7 = v3 >> 1;

wParam = v3 >> 1;

v10 = *(_WORD *)v4 == -257;

}

else

{

if ( a2 != 2 )

{

if ( a2 != 3 )

goto LABEL_39;

v26 = 1;

CodePage = 65001;

v37 = 3;

if ( v3 <= 2 || *(_WORD *)v4 != -17425 || *(_BYTE *)(v4 + 2) != -65 )

goto LABEL_29;

goto LABEL_43;

}

v34 = 1;

v37 = 1;

v7 = v3 >> 1;

wParam = v3 >> 1;

v10 = *(_WORD *)v4 == -2;

}

if ( !v10 )

goto LABEL_30;

goto LABEL_47;

}

v6 = *(_WORD *)v4;

if ( v6 == 48111 )

{

if ( v3 <= 2 || *(_BYTE *)(v4 + 2) != -65 )

goto LABEL_25;

v26 = 1;

CodePage = 65001;

v37 = 3;

LABEL_43:

lpMultiByteStr = (LPCSTR)(v4 + 3);

v3 -= 3;

cbMultiByte = v3;

goto LABEL_29;

}

if ( v6 == 65279 )

{

v34 = 1;

v37 = 1;

goto LABEL_20;

}

if ( v6 == 65534 )

{

v34 = 1;

v37 = 2;

LABEL_20:

v7 = v3 >> 1;

LABEL_47:

--v7;

goto LABEL_48;

}

LABEL_25:

v34 = IsInputTextUnicode((const void *)v4, v3);

if ( !v34 )

{

v26 = IsTextUTF8(v4, v3);

if ( v26 )

{

v37 = 3;

CodePage = 65001;

LABEL_29:

v7 = wParam;

goto LABEL_30;

}

LABEL_39:

v37 = 0;

CodePage = 0;

goto LABEL_29;

}

v37 = 1;

v7 = v3 >> 1;

LABEL_48:

wParam = v7;

LABEL_30:

if ( !v34 )

{

v7 = MultiByteToWideChar(CodePage, 0, lpMultiByteStr, v3, 0, 0);

wParam = v7;

}

v8 = SendMessageW;

SendMessageW(hwndEdit, 0xBu, 0, 0);

SendMessageW(hwndEdit, 0xB1u, 0, 0);

SendMessageW(hwndEdit, 0xB7u, 0, 0);

v9 = LocalReAlloc(hEdit, 2 * v7 + 2, 2u);

hMem = v9;

if ( !v9 )

{

lstrcpyW(&String, pcchNewDestLength);

New(0);

SetCursor(hStdCursor);

AlertBox(hwndNP, szNN, szFTL, &String, 0x30u);

if ( (__int16 *)v4 != &v29 )

UnmapViewOfFile((LPCVOID)v4);

SendMessageW(hwndEdit, 0xBu, 0, 0);

ms_exc.registration.TryLevel = -1;

return 0;

}

v11 = (int)LocalLock(v9);

v35 = v11;

if ( v34 )

{

if ( *(_WORD *)v4 == -257 )

{

v12 = (const void *)(v4 + 2);

}

else

{

if ( *(_WORD *)v4 == -2 )

{

ReverseEndian(v11, v4 + 2, v7);

goto LABEL_57;

}

v12 = (const void *)v4;

}

memcpy((void *)v11, v12, 2 * v7);

v4 = (int)v33;

v8 = SendMessageW;

}

else

{

v7 = MultiByteToWideChar(CodePage, 0, lpMultiByteStr, cbMultiByte, (LPWSTR)v11, v7);

wParam = v7;

}

LABEL_57:

v13 = v35;

g_ftOpenedAs = v37;

ms_exc.registration.TryLevel = -1;

if ( (__int16 *)v4 != &v29 )

{

UnmapViewOfFile((LPCVOID)v4);

v13 = v35;

}

if ( v13 )

{

v14 = v13;

if ( v7 > 0 )

{

v15 = v7;

do

{

if ( !*(_WORD *)v14 )

*(_WORD *)v14 = 32;

v14 += 2;

--v15;

}

while ( v15 );

}

*(_WORD *)(v13 + 2 * v7) = 0;

v16 = *(_WORD *)v13;

v17 = v13 + 2;

if ( v16 != 46

|| (v18 = *(_WORD *)v17, v19 = v17 + 2, v18 != 76)

|| (v20 = *(_WORD *)v19, v21 = v19 + 2, v20 != 79)

|| (v10 = *(_WORD *)v21 == 71, v28 = 1, !v10) )

v28 = 0;

}

if ( hMem )

{

LocalUnlock(hMem);

hEdit = hMem;

}

lstrcpyW((LPWSTR)&szFileName, pcchNewDestLength);

SetTitle(pcchNewDestLength);

fUntitled = 0;

dwEmSetHandle = 1;

v8(hwndEdit, 0xBCu, (WPARAM)hEdit, 0);

if ( dwEmSetHandle == 2 )

{

SetCursor(hStdCursor);

dwEmSetHandle = 0;

AlertBox(hwndNP, szNN, szFTL, pcchNewDestLength, 0x30u);

New(0);

v8(hwndEdit, 0xBu, 1u, 0);

return 0;

}

dwEmSetHandle = 0;

PostMessageW(hwndEdit, 0xC5u, 0, 0);

if ( v28 )

{

v8(hwndEdit, 0xB1u, v7, v7);

v8(hwndEdit, 0xB7u, 0, 0);

InsertDateTime(1);

}

v22 = ((LRESULT (__stdcall *)(HWND, UINT, WPARAM, LPARAM))v8)(hwndEdit, 0x115u, 0xBEu, 0);

SetScrollPos(hwndNP, 1, v22, 1);

v8(hwndEdit, 0xBu, 1u, 0);

InvalidateRect(hwndEdit, 0, 1);

UpdateWindow(hwndEdit);

SetCursor(hStdCursor);

return 1;

}

// 100901C: using guessed type int fUntitled;

// 1009848: using guessed type int dwEmSetHandle;

//----- (0100580B) --------------------------------------------------------

const wchar_t *__stdcall ReverseScan(const WCHAR *a1, const wchar_t *a2, LPCWSTR Str2, int a4)

{

LPCWSTR v4; // esi@1

const wchar_t *v5; // ebx@1

const wchar_t v6; // ax@3

bool v7; // zf@4

bool v8; // zf@9

__int16 v10; // [sp+Ch] [bp-8h]@1

__int16 v11; // [sp+10h] [bp-4h]@1

int Str2a; // [sp+24h] [bp+10h]@1

v4 = Str2;

v11 = (unsigned int)CharUpperW((LPWSTR)*Str2);

v10 = (unsigned int)CharLowerW((LPWSTR)*Str2);

v5 = a2;

Str2a = lstrlenW(Str2);

if ( !a2 )

v5 = &a1[lstrlenW(a1)];

while ( 1 )

{

if ( v5 == a1 )

return 0;

--v5;

v6 = *v5;

if ( a4 )

{

v7 = v6 == *v4;

}

else

{

if ( v6 == v11 )

goto LABEL_10;

v7 = v6 == v10;

}

if ( v7 )

{

if ( a4 )

{

v8 = _wcsncmp(v5, v4, Str2a) == 0;

goto LABEL_11;

}

LABEL_10:

v8 = CompareStringW(0x400u, 0x10001001u, v5, Str2a, v4, Str2a) == 2;

LABEL_11:

if ( v8 )

return v5;

}

}

}

//----- (010058B8) --------------------------------------------------------

int __stdcall ForwardScan(wchar_t *lpString1, LPCWSTR Str2, int a3)

{

LPCWSTR v3; // esi@1

int v4; // ebx@1

wchar_t *v5; // edi@1

bool v6; // zf@4

const wchar_t v7; // ax@10

__int16 v9; // [sp+Ch] [bp-4h]@1

LPWSTR Str2a; // [sp+1Ch] [bp+Ch]@1

v3 = Str2;

v4 = lstrlenW(Str2);

Str2a = CharUpperW((LPWSTR)*Str2);

v5 = lpString1;

v9 = (unsigned int)CharLowerW((LPWSTR)*v3);

while ( 1 )

{

v7 = *v5;

if ( !*v5 )

return *v5 != 0 ? (int)v5 : 0;

if ( a3 )

{

if ( v7 != *v3 )

goto LABEL_9;

v6 = _wcsncmp(v5, v3, v4) == 0;

}

else

{

if ( v7 != (_WORD)Str2a && v7 != v9 )

goto LABEL_9;

v6 = CompareStringW(0x400u, 0x10001001u, v5, v4, v3, v4) == 2;

}

if ( v6 )

return *v5 != 0 ? (int)v5 : 0;

LABEL_9:

++v5;

}

}

//----- (0100594C) --------------------------------------------------------

signed int __stdcall Search(LPCWSTR Str2)

{

signed int result; // eax@2

HMENU v2; // eax@3

HMENU v3; // eax@3

LRESULT v4; // eax@5

LPVOID v5; // edi@6

LRESULT v6; // eax@9

WPARAM i; // ecx@9

const wchar_t *v8; // ebx@12

HCURSOR v9; // edi@17

HWND v10; // eax@17

int v11; // eax@20

HMENU v12; // eax@21

HMENU hMenu; // [sp+4h] [bp-24h]@3

void *hMem; // [sp+8h] [bp-20h]@5

int v15; // [sp+Ch] [bp-1Ch]@10

signed int v16; // [sp+10h] [bp-18h]@1

signed int v17; // [sp+14h] [bp-14h]@1

LPARAM lParam; // [sp+18h] [bp-10h]@3

int v19; // [sp+1Ch] [bp-Ch]@10

WPARAM v20; // [sp+20h] [bp-8h]@9

WPARAM wParam; // [sp+24h] [bp-4h]@3

v16 = 0;

v17 = 0;

if ( *Str2 )

{

SendMessageW(hwndEdit, 0xB0u, (WPARAM)&wParam, (LPARAM)&lParam);

v2 = GetMenu(hwndNP);

hMenu = v2;

v3 = GetSubMenu(v2, 1);

if ( GetMenuState(v3, 0x19u, 0) == 1 )

{

v17 = 1;

lParam = 0;

wParam = 0;

}

v4 = SendMessageW(hwndEdit, 0xBDu, 0, 0);

hMem = (void *)v4;

if ( v4 && (v5 = LocalLock((HLOCAL)v4)) != 0 )

{

if ( fReverse )

{

v20 = SendMessageW(hwndEdit, 0xC9u, wParam, 0);

v6 = SendMessageW(hwndEdit, 0xBBu, v20, 0);

for ( i = wParam; ; i = v15 )

{

v19 = v6;

v8 = ReverseScan((const WCHAR *)v5 + v6, (const wchar_t *)v5 + i, Str2, fCase);

if ( v8 )

break;

v15 = v19;

if ( !v20 )

break;

--v20;

v6 = SendMessageW(hwndEdit, 0xBBu, v20, 0);

}

}

else

{

v8 = (const wchar_t *)ForwardScan((wchar_t *)v5 + lParam, Str2, fCase);

}

LocalUnlock(hMem);

if ( v8 )

{

wParam = ((char *)v8 - (_BYTE *)v5) >> 1;

v11 = lstrlenW(Str2);

SendMessageW(hwndEdit, 0xB1u, wParam, wParam + v11);

if ( v17 )

{

v12 = GetSubMenu(hMenu, 1);

EnableMenuItem(v12, 0x19u, 0);

}

if ( !(FR.Flags & 0x20) )

{

SendMessageW(hwndEdit, 0xB7u, 0, 0);

UpdateStatusBar(1);

}

v16 = 1;

}

else if ( !(FR.Flags & 0x20) )

{

v9 = SetCursor(hStdCursor);

v10 = hDlgFind;

if ( !hDlgFind )

v10 = hwndNP;

AlertBox(v10, szNN, szCFS, &szSearch, 0x40u);

SetCursor(v9);

}

result = v16;

}

else

{

result = 0;

}

}

else

{

result = 0;

}

return result;

}

// 1009A94: using guessed type int fReverse;

//----- (01005B41) --------------------------------------------------------

signed int __stdcall NpReCreate(DWORD hWnd)

{

LONG v1; // eax@10

struct tagRECT Rect; // [sp+Ch] [bp-38h]@7

int v4; // [sp+1Ch] [bp-28h]@19

int v5; // [sp+20h] [bp-24h]@19

int v6; // [sp+24h] [bp-20h]@19

int v7; // [sp+28h] [bp-1Ch]@19

WPARAM wParam; // [sp+2Ch] [bp-18h]@3

LPARAM lParam; // [sp+30h] [bp-14h]@7

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 hWnda; // [sp+4Ch] [bp+8h]@7

v11 = (hWnd >> 20) & 1;

hCursor = SetCursor(hWaitCursor);

if ( v11 )

{

GotoAndScrollInView(1);

SendMessageW(hwndEdit, 0xC8u, 0, 0);

}

wParam = SendMessageW(hwndEdit, 0xB8u, 0, 0) != 0;

v10 = SendMessageW(hwndEdit, 0xEu, 0, 0);

hMem = LocalAlloc(2u, 2 * v10 + 2);

if ( !hMem )

{

if ( v11 )

SendMessageW(hwndEdit, 0xC8u, 1u, 0);

SetCursor(hCursor);

return 0;

}

GetClientRect(hwndNP, &Rect);

lParam = (LPARAM)LocalLock(hMem);

SendMessageW(hwndEdit, 0xDu, v10 + 1, lParam);

hWnda = CreateWindowExW(

0x200u,

L"Edit",

&szOtherStuff,

hWnd,

0,

0,

Rect.right,

Rect.bottom,

hwndNP,

(HMENU)0xF,

hInstanceNP,

0);

if ( !hWnda )

{

SetCursor(hCursor);

if ( v11 )

SendMessageW(hwndEdit, 0xC8u, 1u, 0);

LABEL_14:

LocalUnlock(hMem);

LocalFree(hMem);

return 0;

}

v1 = GetWindowLongW(hwndEdit, -20);

SetWindowLongW(hWnda, -20, v1 | 0x200);

SendMessageW(hWnda, 0x30u, (WPARAM)hFont, 1);

if ( !SendMessageW(hWnda, 0xCu, 0, lParam) )

{

SetCursor(hCursor);

if ( v11 )

SendMessageW(hwndEdit, 0xC8u, 1u, 0);

DestroyWindow(hWnda);

goto LABEL_14;

}

LocalUnlock(hMem);

DestroyWindow(hwndEdit);

hwndEdit = hWnda;

if ( hEdit )

LocalFree(hEdit);

hEdit = hMem;

PostMessageW(hwndEdit, 0xC5u, 0, 0);

ShowWindow(hwndNP, 5);

SendMessageW(hwndEdit, 0xB9u, wParam, 0);

SetFocus(hwndEdit);

SetCursor(hCursor);

if ( *(_DWORD *)&fStatus )

{

GetClientRect(hwndNP, (LPRECT)&v4);

NPSize(v6 - v4, v7 - v5);

UpdateStatusBar(1);

ShowWindow(hwndStatus, 5);

}

return 1;

}

//----- (01005DA3) --------------------------------------------------------

BOOL __stdcall AbortProc(int a1, int a2)

{

struct tagMSG Msg; // [sp+4h] [bp-1Ch]@2

while ( !fAbort && PeekMessageW(&Msg, 0, 0, 0, 1u) )

{

if ( !hAbortDlgWnd || !IsDialogMessageW(hAbortDlgWnd, &Msg) )

{

TranslateMessage(&Msg);

DispatchMessageW(&Msg);

}

}

return fAbort == 0;

}

// 100A134: using guessed type int fAbort;

//----- (01005E0C) --------------------------------------------------------

int __stdcall GetResolutions(HDC hdc)

{

int result; // eax@1

xPrintRes = GetDeviceCaps(hdc, 8);

yPrintRes = GetDeviceCaps(hdc, 10);

yPixInch = GetDeviceCaps(hdc, 90);

xPhysRes = GetDeviceCaps(hdc, 110);

yPhysRes = GetDeviceCaps(hdc, 111);

xPhysOff = GetDeviceCaps(hdc, 112);

result = GetDeviceCaps(hdc, 113);

yPhysOff = result;

return result;

}

// 1009AD0: using guessed type int yPhysOff;

// 1009AD4: using guessed type int xPhysOff;

// 1009AE0: using guessed type int yPixInch;

// 1009AE4: using guessed type int yPrintRes;

// 1009AE8: using guessed type int xPrintRes;

//----- (01005E6D) --------------------------------------------------------

HDC __cdecl GetPrinterDCviaDialog()

{

HGLOBAL v0; // edx@1

HDC v1; // edi@3

struct tagPDEXW pPD; // [sp+Ch] [bp-54h]@3

v0 = g_PageSetupDlg.hDevNames;

if ( !g_PageSetupDlg.hDevNames )

{

LOWORD(g_PageSetupDlg.Flags) |= 0x480u;

PageSetupDlgW(&g_PageSetupDlg);

g_PageSetupDlg.Flags &= 0xFFFFFB7F;

v0 = g_PageSetupDlg.hDevNames;

}

memset(&pPD, 0, sizeof(pPD));

pPD.hwndOwner = hwndNP;

v1 = (HDC)-1;

pPD.lStructSize = 84;

pPD.nStartPage = -1;

pPD.Flags = 8651020;

if ( g_PageSetupDlg.hDevMode )

pPD.hDevMode = g_PageSetupDlg.hDevMode;

if ( v0 )

pPD.hDevNames = v0;

if ( !PrintDlgExW(&pPD) )

{

if ( pPD.dwResultAction == 1 )

{

v1 = pPD.hDC;

}

else if ( pPD.dwResultAction != 2 )

{

return v1;

}

if ( !g_PageSetupDlg.hDevMode )

{

LOWORD(g_PageSetupDlg.Flags) |= 0x480u;

PageSetupDlgW(&g_PageSetupDlg);

g_PageSetupDlg.Flags &= 0xFFFFFB7F;

}

g_PageSetupDlg.hDevMode = pPD.hDevMode;

g_PageSetupDlg.hDevNames = pPD.hDevNames;

}

return v1;

}

//----- (01005F3C) --------------------------------------------------------

BOOL __cdecl DestroyAbortWnd()

{

BOOL result; // eax@1

EnableWindow(hwndNP, 1);

result = DestroyWindow(hAbortDlgWnd);

hAbortDlgWnd = 0;

return result;

}

//----- (01005F63) --------------------------------------------------------

signed int __stdcall PageSetupHookProc(HWND hDlg, int a2, HWND hWndMain, int a4)

{

int v4; // edi@5

const WCHAR *v5; // ebx@5

HWND v7; // esi@8

int v8; // eax@10

int v9; // eax@14

int v10; // edi@17

WCHAR *v11; // esi@17

struct tagPOINT Point; // [sp+8h] [bp-8h]@9

if ( a2 == 2 )

{

v10 = 30;

v11 = (WCHAR *)&chPageTextTemp;

do

{

GetDlgItemTextW(hDlg, v10, v11, 40);

v11 += 40;

++v10;

}

while ( (signed int)v11 <= (signed int)&word_100A390 );

return 0;

}

if ( a2 == 83 )

{

v9 = GetDlgCtrlID(*(HWND *)(a4 + 12));

if ( v9 < 30 || v9 > 33 )

return 0;

WinHelpW(*(HWND *)(a4 + 12), szHelpFile, 0xCu, (ULONG_PTR)s_PageSetupHelpIDs);

return 1;

}

if ( a2 == 123 )

{

v7 = hWndMain;

if ( hDlg == hWndMain )

{

GetCursorPos(&Point);

ScreenToClient(hDlg, &Point);

v7 = ChildWindowFromPoint(hDlg, Point);

}

v8 = GetDlgCtrlID(v7);

if ( v8 < 30 || v8 > 33 )

return 0;

WinHelpW(v7, szHelpFile, 0xAu, (ULONG_PTR)s_PageSetupHelpIDs);

return 1;

}

if ( a2 != 272 )

return 0;

v4 = 30;

v5 = &chPageText;

do

{

SendDlgItemMessageW(hDlg, v4, 0xC5u, 0x27u, 0);

SetDlgItemTextW(hDlg, v4, v5);

v5 += 40;

++v4;

}

while ( (signed int)v5 <= (signed int)&String1 );

SendDlgItemMessageW(hDlg, 30, 0xB1u, 0, 2555904);

return 1;

}

因字符限制发部分结果。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: