{"type": "func", "start": 6442573776, "end": 6442574110, "name": "CWin32InputBox::InputBoxEx", "pseudocode": "// \n// CWin32InputBox::InputBoxEx from 0x18001dfd0 to 0x18001e11e (334 bytes)\n// \n// 4 xrefs:\n// > <???> @ 0x18002fa3c\n// > <???> @ 0x18002fa50\n// > <???> @ 0x18002fdf8\n// > <???> @ 0x18004b0c4\n// \n// This function is hookable on this platform!\n// \n// Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA\n// Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings\n// \n\nINT_PTR __fastcall CWin32InputBox::InputBoxEx(struct WIN32INPUTBOX_PARAM *a1)\n{\n  __int64 v3; // rax\n  HMODULE v4; // rdi\n  HRSRC ResourceW; // rax\n  DLGTEMPLATE *Resource; // rdx\n  int v7; // eax\n  int v8; // ecx\n  int v9; // ecx\n  int v10; // ecx\n  __int16 v11; // ax\n  __int16 v12; // ax\n  int v13; // ecx\n  DWORD style; // eax\n  int v15; // eax\n  __int16 v16; // ax\n  __int16 v17; // ax\n  HWND v18; // r8\n  HINSTANCE v19; // rcx\n  LPARAM dwInitParam[3]; // [rsp+30h] [rbp-18h] BYREF\n  DLGTEMPLATE *v21; // [rsp+50h] [rbp+8h]\n\n  if ( !*((_QWORD *)a1 + 8) )\n  {\n    SetLastError(0x57u);\n    return 0;\n  }\n  v3 = *((_QWORD *)a1 + 2);\n  if ( v3 )\n  {\n    v4 = *((HMODULE *)a1 + 11);\n    ResourceW = FindResourceW(v4, (LPCWSTR)(unsigned __int16)v3, (LPCWSTR)5);\n    if ( !ResourceW )\n      return 0;\n    Resource = (DLGTEMPLATE *)LoadResource(v4, ResourceW);\n    if ( !Resource )\n      return 0;\n  }\n  else\n  {\n    Resource = v21;\n    if ( *((_QWORD *)a1 + 1) )\n      Resource = *((DLGTEMPLATE **)a1 + 1);\n  }\n  if ( LOWORD(Resource->style) == 1 && HIWORD(Resource->style) == 0xFFFF && Resource )\n  {\n    v7 = *((_DWORD *)a1 + 9) | *(_DWORD *)&Resource->cdit;\n    v8 = *(_DWORD *)&Resource->y;\n    *(_DWORD *)&Resource->cdit = v7;\n    v9 = *((_DWORD *)a1 + 7) | v8;\n    *(_DWORD *)&Resource->y = v9;\n    *(_DWORD *)&Resource->cdit = *((_DWORD *)a1 + 10) & v7;\n    v10 = *((_DWORD *)a1 + 8) & v9;\n    *(_DWORD *)&Resource->y = v10;\n    if ( *((_BYTE *)a1 + 24) )\n      *(_DWORD *)&Resource->y = v10 | 0x800;\n    v11 = *((_WORD *)a1 + 48);\n    if ( v11 != -1 )\n      LOWORD(Resource[1].style) = v11;\n    v12 = *((_WORD *)a1 + 49);\n    if ( v12 != -1 )\n      HIWORD(Resource[1].style) = v12;\n  }\n  else\n  {\n    v13 = *((_DWORD *)a1 + 9) | Resource->dwExtendedStyle;\n    Resource->dwExtendedStyle = v13;\n    Resource->style |= *((_DWORD *)a1 + 7);\n    style = Resource->style;\n    Resource->dwExtendedStyle = *((_DWORD *)a1 + 10) & v13;\n    v15 = *((_DWORD *)a1 + 8) & style;\n    Resource->style = v15;\n    if ( *((_BYTE *)a1 + 24) )\n      Resource->style = v15 | 0x800;\n    v16 = *((_WORD *)a1 + 48);\n    if ( v16 != -1 )\n      Resource->x = v16;\n    v17 = *((_WORD *)a1 + 49);\n    if ( v17 != -1 )\n      Resource->y = v17;\n  }\n  v18 = *((HWND *)a1 + 10);\n  v19 = *((HINSTANCE *)a1 + 11);\n  dwInitParam[0] = (LPARAM)a1;\n  return DialogBoxIndirectParamW(v19, Resource, v18, CWin32InputBox::DlgProc, (LPARAM)dwInitParam);\n}", "assembly": "; \n; CWin32InputBox::InputBoxEx from 0x18001dfd0 to 0x18001e11e (334 bytes)\n; \n; 4 xrefs:\n; > <???> @ 0x18002fa3c\n; > <???> @ 0x18002fa50\n; > <???> @ 0x18002fdf8\n; > <???> @ 0x18004b0c4\n; \n; This function is hookable on this platform!\n; \n; Using BromaIDA 8.0.0 @ https:;github.com/Stazzical/BromaIDA\n; Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https:;github.com/geode-sdk/bindings\n; \n\npush    rbx                                                            ; +0x0, 0x18001dfd0\nsub     rsp, 40h                                                       ; +0x2, 0x18001dfd2\ncmp     qword ptr [rcx+40h], 0                                         ; +0x6, 0x18001dfd6\nmov     rbx, rcx                                                       ; +0xb, 0x18001dfdb\njnz     short loc_18001DFF3                                            ; +0xe, 0x18001dfde\nmov     ecx, 57h ; 'W'; dwErrCode                                      ; +0x10, 0x18001dfe0\ncall    cs:SetLastError                                                ; +0x15, 0x18001dfe5\nxor     eax, eax                                                       ; +0x1b, 0x18001dfeb\nadd     rsp, 40h                                                       ; +0x1d, 0x18001dfed\npop     rbx                                                            ; +0x21, 0x18001dff1\nretn                                                                   ; +0x22, 0x18001dff2\nmov     rax, [rcx+10h]                                                 ; +0x23, 0x18001dff3\nmov     [rsp+48h+arg_8], rdi                                           ; +0x27, 0x18001dff7\ntest    rax, rax                                                       ; +0x2c, 0x18001dffc\njz      short loc_18001E03D                                            ; +0x2f, 0x18001dfff\nmov     rdi, [rcx+58h]                                                 ; +0x31, 0x18001e001\nmov     r8d, 5; lpType                                                 ; +0x35, 0x18001e005\nmov     rcx, rdi; hModule                                              ; +0x3b, 0x18001e00b\nmovzx   edx, ax; lpName                                                ; +0x3e, 0x18001e00e\ncall    cs:FindResourceW                                               ; +0x41, 0x18001e011\ntest    rax, rax                                                       ; +0x47, 0x18001e017\njz      short loc_18001E030                                            ; +0x4a, 0x18001e01a\nmov     rdx, rax; hResInfo                                             ; +0x4c, 0x18001e01c\nmov     rcx, rdi; hModule                                              ; +0x4f, 0x18001e01f\ncall    cs:LoadResource                                                ; +0x52, 0x18001e022\nmov     rdx, rax                                                       ; +0x58, 0x18001e028\ntest    rax, rax                                                       ; +0x5b, 0x18001e02b\njnz     short loc_18001E04D                                            ; +0x5e, 0x18001e02e\nmov     rdi, [rsp+48h+arg_8]                                           ; +0x60, 0x18001e030\nxor     eax, eax                                                       ; +0x65, 0x18001e035\nadd     rsp, 40h                                                       ; +0x67, 0x18001e037\npop     rbx                                                            ; +0x6b, 0x18001e03b\nretn                                                                   ; +0x6c, 0x18001e03c\nmov     rax, [rcx+8]                                                   ; +0x6d, 0x18001e03d\nmov     rdx, [rsp+48h+arg_0]                                           ; +0x71, 0x18001e041\ntest    rax, rax                                                       ; +0x76, 0x18001e046\ncmovnz  rdx, rax; hDialogTemplate                                      ; +0x79, 0x18001e049\ncmp     word ptr [rdx], 1                                              ; +0x7d, 0x18001e04d\njnz     short loc_18001E0AC                                            ; +0x81, 0x18001e051\nmov     eax, 0FFFFh                                                    ; +0x83, 0x18001e053\ncmp     [rdx+2], ax                                                    ; +0x88, 0x18001e058\njnz     short loc_18001E0AC                                            ; +0x8c, 0x18001e05c\ntest    rdx, rdx                                                       ; +0x8e, 0x18001e05e\njz      short loc_18001E0AC                                            ; +0x91, 0x18001e061\nmov     eax, [rdx+8]                                                   ; +0x93, 0x18001e063\nor      eax, [rbx+24h]                                                 ; +0x96, 0x18001e066\nmov     ecx, [rdx+0Ch]                                                 ; +0x99, 0x18001e069\nmov     [rdx+8], eax                                                   ; +0x9c, 0x18001e06c\nor      ecx, [rbx+1Ch]                                                 ; +0x9f, 0x18001e06f\nmov     [rdx+0Ch], ecx                                                 ; +0xa2, 0x18001e072\nand     eax, [rbx+28h]                                                 ; +0xa5, 0x18001e075\nmov     [rdx+8], eax                                                   ; +0xa8, 0x18001e078\nand     ecx, [rbx+20h]                                                 ; +0xab, 0x18001e07b\nmov     [rdx+0Ch], ecx                                                 ; +0xae, 0x18001e07e\ncmp     byte ptr [rbx+18h], 0                                          ; +0xb1, 0x18001e081\njz      short loc_18001E08E                                            ; +0xb5, 0x18001e085\nbts     ecx, 0Bh                                                       ; +0xb7, 0x18001e087\nmov     [rdx+0Ch], ecx                                                 ; +0xbb, 0x18001e08b\nmovzx   eax, word ptr [rbx+60h]                                        ; +0xbe, 0x18001e08e\ncmp     ax, 0FFFFh                                                     ; +0xc2, 0x18001e092\njz      short loc_18001E09C                                            ; +0xc6, 0x18001e096\nmov     [rdx+12h], ax                                                  ; +0xc8, 0x18001e098\nmovzx   eax, word ptr [rbx+62h]                                        ; +0xcc, 0x18001e09c\ncmp     ax, 0FFFFh                                                     ; +0xd0, 0x18001e0a0\njz      short loc_18001E0EF                                            ; +0xd4, 0x18001e0a4\nmov     [rdx+14h], ax                                                  ; +0xd6, 0x18001e0a6\njmp     short loc_18001E0EF                                            ; +0xda, 0x18001e0aa\nmov     ecx, [rdx+4]                                                   ; +0xdc, 0x18001e0ac\nor      ecx, [rbx+24h]                                                 ; +0xdf, 0x18001e0af\nmov     [rdx+4], ecx                                                   ; +0xe2, 0x18001e0b2\nmov     eax, [rbx+1Ch]                                                 ; +0xe5, 0x18001e0b5\nor      [rdx], eax                                                     ; +0xe8, 0x18001e0b8\nand     ecx, [rbx+28h]                                                 ; +0xea, 0x18001e0ba\nmov     eax, [rdx]                                                     ; +0xed, 0x18001e0bd\nmov     [rdx+4], ecx                                                   ; +0xef, 0x18001e0bf\nand     eax, [rbx+20h]                                                 ; +0xf2, 0x18001e0c2\nmov     [rdx], eax                                                     ; +0xf5, 0x18001e0c5\ncmp     byte ptr [rbx+18h], 0                                          ; +0xf7, 0x18001e0c7\njz      short loc_18001E0D3                                            ; +0xfb, 0x18001e0cb\nbts     eax, 0Bh                                                       ; +0xfd, 0x18001e0cd\nmov     [rdx], eax                                                     ; +0x101, 0x18001e0d1\nmovzx   eax, word ptr [rbx+60h]                                        ; +0x103, 0x18001e0d3\ncmp     ax, 0FFFFh                                                     ; +0x107, 0x18001e0d7\njz      short loc_18001E0E1                                            ; +0x10b, 0x18001e0db\nmov     [rdx+0Ah], ax                                                  ; +0x10d, 0x18001e0dd\nmovzx   eax, word ptr [rbx+62h]                                        ; +0x111, 0x18001e0e1\ncmp     ax, 0FFFFh                                                     ; +0x115, 0x18001e0e5\njz      short loc_18001E0EF                                            ; +0x119, 0x18001e0e9\nmov     [rdx+0Ch], ax                                                  ; +0x11b, 0x18001e0eb\nmov     r8, [rbx+50h]; hWndParent                                      ; +0x11f, 0x18001e0ef\nlea     rax, [rsp+48h+var_18]                                          ; +0x123, 0x18001e0f3\nmov     rcx, [rbx+58h]; hInstance                                      ; +0x128, 0x18001e0f8\nlea     r9, ?DlgProc@CWin32InputBox@@CA_JPEAUHWND__@@I_K_J@Z; lpDialogFunc ; +0x12c, 0x18001e0fc\nmov     [rsp+48h+dwInitParam], rax; dwInitParam                        ; +0x133, 0x18001e103\nmov     [rsp+48h+var_18], rbx                                          ; +0x138, 0x18001e108\ncall    cs:DialogBoxIndirectParamW                                     ; +0x13d, 0x18001e10d\nmov     rdi, [rsp+48h+arg_8]                                           ; +0x143, 0x18001e113\nadd     rsp, 40h                                                       ; +0x148, 0x18001e118\npop     rbx                                                            ; +0x14c, 0x18001e11c\nretn                                                                   ; +0x14d, 0x18001e11d", "xrefs": ["<???> @ 0x18002fa3c", "<???> @ 0x18002fa50", "<???> @ 0x18002fdf8", "<???> @ 0x18004b0c4"], "is_objc": false, "is_arm32": false, "is_arm64": false, "bida_info": "8.0.0 @ https://github.com/Stazzical/BromaIDA", "bindings_info": "commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings"}