// // CWin32InputBox::InitDialog from 0x18001e2f0 to 0x18001e67c (908 bytes) // // 4 xrefs: // > CWin32InputBox::DlgProc @ 0x18001e7e2 // > @ 0x18002faa4 // > @ 0x18002fdf8 // > @ 0x18004b0f4 // // This function is hookable on this platform! // // Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA // Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings // void __fastcall CWin32InputBox::InitDialog(CWin32InputBox *this) { unsigned __int64 i; // rbx size_t v3; // rbx size_t v4; // r8 _BYTE *v5; // rdx __int64 v6; // rax void *v7; // rcx size_t v8; // r8 _BYTE *v9; // rdx __int64 v10; // rax void *v11; // rcx HWND DlgItem; // r14 HWND v13; // rax __int64 v14; // rdx HWND v15; // rcx HWND v16; // rsi _BYTE *v17; // rdx __int64 v18; // rax void *v19; // rcx __int128 v20; // [rsp+40h] [rbp-39h] BYREF __int64 v21; // [rsp+50h] [rbp-29h] __int64 v22; // [rsp+58h] [rbp-21h] struct tagRECT Rect; // [rsp+68h] [rbp-11h] BYREF struct tagRECT v24; // [rsp+78h] [rbp-1h] BYREF void *Block[3]; // [rsp+88h] [rbp+Fh] BYREF unsigned __int64 v26; // [rsp+A0h] [rbp+27h] struct tagRECT v27; // [rsp+A8h] [rbp+2Fh] BYREF for ( i = 0; i < 2; ++i ) SetDlgItemTextW(*(HWND *)(*(_QWORD *)this + 104LL), *(_DWORD *)((char *)&unk_1800234D8 + i * 8), off_1800234E8[i]); v3 = -1; v4 = -1; v5 = *(_BYTE **)(*(_QWORD *)this + 48LL); v20 = 0; v21 = 0; v22 = 0; do ++v4; while ( v5[v4] ); sub_180003AB0(&v20, v5, v4); v6 = CWin32InputBox::Utf8ToAnsi(Block); if ( *(_QWORD *)(v6 + 24) > 0xFu ) v6 = *(_QWORD *)v6; SetWindowTextA(*(HWND *)(*(_QWORD *)this + 104LL), (LPCSTR)v6); if ( v26 > 0xF ) { v7 = Block[0]; if ( v26 + 1 >= 0x1000 ) { v7 = *((void **)Block[0] - 1); if ( (unsigned __int64)((char *)Block[0] - (char *)v7 - 8) > 0x1F ) invalid_parameter_noinfo_noreturn(); } j_j_free(v7); } v8 = -1; v9 = *(_BYTE **)(*(_QWORD *)this + 56LL); v20 = 0; v21 = 0; v22 = 0; do ++v8; while ( v9[v8] ); sub_180003AB0(&v20, v9, v8); v10 = CWin32InputBox::Utf8ToAnsi(Block); if ( *(_QWORD *)(v10 + 24) > 0xFu ) v10 = *(_QWORD *)v10; SetDlgItemTextA(*(HWND *)(*(_QWORD *)this + 104LL), 1000, (LPCSTR)v10); if ( v26 > 0xF ) { v11 = Block[0]; if ( v26 + 1 >= 0x1000 ) { v11 = *((void **)Block[0] - 1); if ( (unsigned __int64)((char *)Block[0] - (char *)v11 - 8) > 0x1F ) invalid_parameter_noinfo_noreturn(); } j_j_free(v11); } DlgItem = GetDlgItem(*(HWND *)(*(_QWORD *)this + 104LL), 1001); v13 = GetDlgItem(*(HWND *)(*(_QWORD *)this + 104LL), 1002); v14 = *(_QWORD *)this; v15 = DlgItem; v16 = v13; if ( **(_BYTE **)this ) v15 = v13; *((_QWORD *)this + 1) = v15; v17 = *(_BYTE **)(v14 + 64); v20 = 0; v21 = 0; v22 = 0; do ++v3; while ( v17[v3] ); sub_180003AB0(&v20, v17, v3); v18 = CWin32InputBox::Utf8ToAnsi(Block); if ( *(_QWORD *)(v18 + 24) > 0xFu ) v18 = *(_QWORD *)v18; SetWindowTextA(*((HWND *)this + 1), (LPCSTR)v18); if ( v26 > 0xF ) { v19 = Block[0]; if ( v26 + 1 >= 0x1000 ) { v19 = *((void **)Block[0] - 1); if ( (unsigned __int64)((char *)Block[0] - (char *)v19 - 8) > 0x1F ) invalid_parameter_noinfo_noreturn(); } j_j_free(v19); } GetWindowRect(*(HWND *)(*(_QWORD *)this + 104LL), &Rect); GetWindowRect(DlgItem, &v24); GetWindowRect(v16, &v27); if ( **(_BYTE **)this ) { ShowWindow(DlgItem, 0); SetWindowPos(v16, (HWND)0xFFFFFFFFFFFFFFFELL, v24.left - Rect.left, 2 * v24.top - v24.bottom - Rect.top, 0, 0, 5u); SetWindowPos( *(HWND *)(*(_QWORD *)this + 104LL), (HWND)0xFFFFFFFFFFFFFFFELL, 0, 0, Rect.right - Rect.left, v24.top + Rect.bottom - v24.bottom - Rect.top, 2u); } else { SetWindowPos( *(HWND *)(*(_QWORD *)this + 104LL), (HWND)0xFFFFFFFFFFFFFFFELL, 0, 0, Rect.right - Rect.left, v24.bottom - Rect.top + 5, 2u); ShowWindow(v16, 0); } }