// ref: 0x10004054 BOOL __stdcall UiCopyProtError(int *pdwResult) { int v1; // eax int v2; // eax char Buffer[128]; // [esp+0h] [ebp-80h] if (DiabloUI_GetSpawned()) LoadStringA(ghUiInst, 0x3Fu, Buffer, 127); else LoadStringA(ghUiInst, 0x1Bu, Buffer, 127); v1 = (int)SDrawGetFrameWindow(NULL); v2 = SDlgDialogBoxParam(ghUiInst, "OKCANCEL_DIALOG", v1, CopyProt_WndProc, (int)Buffer); if (pdwResult) *pdwResult = v2; return 1; } // 10010382: using guessed type DWORD __stdcall SDrawGetFrameWindow(); // ref: 0x100040AF LRESULT __stdcall CopyProt_WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { HWND v4; // ecx int v5; // edx HWND v6; // eax LONG v7; // eax HWND v9; // eax if (Msg == 2) { CopyProt_FreeCopyResrcs(); Fade_UpdatePaletteRange(10); return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); } if (Msg <= 0x103) return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); if (Msg <= 0x105) { v9 = (HWND)SDrawGetFrameWindow(NULL); SendMessageA(v9, Msg, wParam, lParam); return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); } if (Msg == 272) { CopyProt_LoadCopyStuff(hWnd, lParam); return 1; } if (Msg != 273) return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); switch ((unsigned short)wParam) { case 1u: v6 = GetFocus(); v7 = GetWindowLongA(v6, -12); v4 = hWnd; if (v7 == 1109) { v5 = 1; goto LABEL_13; } goto LABEL_12; case 2u: v4 = hWnd; LABEL_12: v5 = 2; goto LABEL_13; case 0x455u: v4 = hWnd; v5 = 1; LABEL_13: CopyProt_EndCopyDlg(v4, v5); break; } return (LRESULT)SDlgDefDialogProc(hWnd, Msg, (HDC)wParam, (HWND)lParam); } // 10010382: using guessed type DWORD __stdcall SDrawGetFrameWindow(); // ref: 0x10004173 void __cdecl CopyProt_FreeCopyResrcs() { if (copyprot_artpal) { FreeResource(copyprot_artpal); copyprot_artpal = 0; } if (copyprot_btnart) { FreeResource(copyprot_btnart); copyprot_btnart = 0; } if (copyprot_popupart) { FreeResource(copyprot_popupart); copyprot_popupart = 0; } } // ref: 0x100041B5 BOOL __fastcall CopyProt_LoadCopyStuff(HWND hWnd, int a2) { HRSRC v2; // eax HRSRC v3; // eax HRSRC v4; // eax void *v5; // edi void *v6; // ebx HWND v7; // eax PALETTEENTRY pPalEntries[256]; // [esp+Ch] [ebp-420h] int msgs[3]; // [esp+40Ch] [ebp-20h] DWORD data[2]; // [esp+418h] [ebp-14h] LPCSTR lpString; // [esp+420h] [ebp-Ch] void *v13; // [esp+424h] [ebp-8h] msgs[2] = 0; lpString = (LPCSTR)a2; data[0] = 112; data[1] = 140; msgs[0] = 1109; msgs[1] = 2; v2 = FindResourceA(ghUiInst, "IDR_POPUPART", "ART_FILES"); copyprot_popupart = LoadResource(ghUiInst, v2); v3 = FindResourceA(ghUiInst, "IDR_BTNART", "ART_FILES"); copyprot_btnart = LoadResource(ghUiInst, v3); v4 = FindResourceA(ghUiInst, "IDR_ARTPAL", "ART_FILES"); copyprot_artpal = LoadResource(ghUiInst, v4); v5 = LockResource(copyprot_popupart); v6 = LockResource(copyprot_btnart); v13 = LockResource(copyprot_artpal); if (v5) SDlgSetBitmapI(hWnd, 0, &nullcharacter, -1, 1, v5, 0, 284, 148, -1); ShowCursor(TRUE); Fade_SetInputWindow(hWnd); if (v6) local_FitButtonDlg(hWnd, msgs, v6, data); if (v13) { memcpy(pPalEntries, v13, 0x400u); SDrawUpdatePalette(0, 0x100u, pPalEntries, 1); } v7 = GetDlgItem(hWnd, 1026); SetWindowTextA(v7, lpString); return 1; } // ref: 0x1000430C void __fastcall CopyProt_EndCopyDlg(HWND hWnd, int a2) { ShowCursor(FALSE); SDlgEndDialog(hWnd, (HANDLE)a2); } // ref: 0x10004329 void __cdecl CopyProt_cpp_init() { CopyProt_cpp_float = CopyProt_cpp_float_value; } // 1001F3F8: using guessed type int CopyProt_cpp_float_value; // 10029620: using guessed type int CopyProt_cpp_float;