{"type": "func", "start": 6443654020, "end": 6443654212, "name": "BuildCatchObjectInternal<__FrameHandler3>", "pseudocode": "// \n// BuildCatchObjectInternal<__FrameHandler3> from 0x180125b84 to 0x180125c44 (192 bytes)\n// \n// 2 xrefs:\n// > CatchIt<__FrameHandler3> @ 0x180125ca2\n// > <???> @ 0x1802028b8\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\n__int64 __fastcall BuildCatchObjectInternal<__FrameHandler3>(__int64 a1, __int64 *a2, int *a3, __int64 a4)\n{\n  __int64 v6; // rbx\n  __int64 *v7; // rsi\n  __int64 result; // rax\n  __int64 v9; // rcx\n  __int64 v10; // r14\n  __int64 v11; // rcx\n  __int64 v12; // r14\n\n  v6 = 0;\n  if ( *a3 >= 0 )\n    v7 = (__int64 *)(*a2 + a3[2]);\n  else\n    v7 = a2;\n  result = (unsigned int)sub_180125984(a1, a2, a3, a4) - 1;\n  if ( (_DWORD)result )\n  {\n    if ( (_DWORD)result == 1 )\n    {\n      v10 = _AdjustPointer(*(_QWORD *)(a1 + 40), (int *)(a4 + 8));\n      if ( *(_DWORD *)(a4 + 24) )\n        v6 = GetThrowImageBase(v9) + *(int *)(a4 + 24);\n      return unknown_libname_21(v7, v6, v10, 1);\n    }\n  }\n  else\n  {\n    v12 = _AdjustPointer(*(_QWORD *)(a1 + 40), (int *)(a4 + 8));\n    if ( *(_DWORD *)(a4 + 24) )\n      v6 = GetThrowImageBase(v11) + *(int *)(a4 + 24);\n    return unknown_libname_20(v7, v6, v12);\n  }\n  return result;\n}", "assembly": "; \n; BuildCatchObjectInternal<__FrameHandler3> from 0x180125b84 to 0x180125c44 (192 bytes)\n; \n; 2 xrefs:\n; > CatchIt<__FrameHandler3> @ 0x180125ca2\n; > <???> @ 0x1802028b8\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\nmov     [rsp+arg_0], rbx                                               ; +0x0, 0x180125b84\nmov     [rsp+arg_8], rsi                                               ; +0x5, 0x180125b89\nmov     [rsp+arg_10], rdi                                              ; +0xa, 0x180125b8e\npush    r14                                                            ; +0xf, 0x180125b93\nsub     rsp, 20h                                                       ; +0x11, 0x180125b95\nmov     rdi, r9                                                        ; +0x15, 0x180125b99\nmov     r14, rcx                                                       ; +0x18, 0x180125b9c\nxor     ebx, ebx                                                       ; +0x1b, 0x180125b9f\ncmp     [r8], ebx                                                      ; +0x1d, 0x180125ba1\njge     short loc_180125BAB                                            ; +0x20, 0x180125ba4\nmov     rsi, rdx                                                       ; +0x22, 0x180125ba6\njmp     short loc_180125BB2                                            ; +0x25, 0x180125ba9\nmovsxd  rsi, dword ptr [r8+8]                                          ; +0x27, 0x180125bab\nadd     rsi, [rdx]                                                     ; +0x2b, 0x180125baf\ncall    sub_180125984                                                  ; +0x2e, 0x180125bb2\nsub     eax, 1                                                         ; +0x33, 0x180125bb7\njz      short loc_180125BF8                                            ; +0x36, 0x180125bba\ncmp     eax, 1                                                         ; +0x38, 0x180125bbc\njnz     short loc_180125C28                                            ; +0x3b, 0x180125bbf\nlea     rdx, [rdi+8]                                                   ; +0x3d, 0x180125bc1\nmov     rcx, [r14+28h]                                                 ; +0x41, 0x180125bc5\ncall    __AdjustPointer                                                ; +0x45, 0x180125bc9\nmov     r14, rax                                                       ; +0x4a, 0x180125bce\ncmp     [rdi+18h], ebx                                                 ; +0x4d, 0x180125bd1\njz      short loc_180125BE2                                            ; +0x50, 0x180125bd4\ncall    _GetThrowImageBase                                             ; +0x52, 0x180125bd6\nmovsxd  rbx, dword ptr [rdi+18h]                                       ; +0x57, 0x180125bdb\nadd     rbx, rax                                                       ; +0x5b, 0x180125bdf\nmov     r9d, 1                                                         ; +0x5e, 0x180125be2\nmov     r8, r14                                                        ; +0x64, 0x180125be8\nmov     rdx, rbx                                                       ; +0x67, 0x180125beb\nmov     rcx, rsi                                                       ; +0x6a, 0x180125bee\ncall    unknown_libname_21; Microsoft VisualC v14 64bit runtime        ; +0x6d, 0x180125bf1\njmp     short loc_180125C28                                            ; +0x72, 0x180125bf6\nlea     rdx, [rdi+8]                                                   ; +0x74, 0x180125bf8\nmov     rcx, [r14+28h]                                                 ; +0x78, 0x180125bfc\ncall    __AdjustPointer                                                ; +0x7c, 0x180125c00\nmov     r14, rax                                                       ; +0x81, 0x180125c05\ncmp     [rdi+18h], ebx                                                 ; +0x84, 0x180125c08\njz      short loc_180125C19                                            ; +0x87, 0x180125c0b\ncall    _GetThrowImageBase                                             ; +0x89, 0x180125c0d\nmovsxd  rbx, dword ptr [rdi+18h]                                       ; +0x8e, 0x180125c12\nadd     rbx, rax                                                       ; +0x92, 0x180125c16\nmov     r8, r14                                                        ; +0x95, 0x180125c19\nmov     rdx, rbx                                                       ; +0x98, 0x180125c1c\nmov     rcx, rsi                                                       ; +0x9b, 0x180125c1f\ncall    unknown_libname_20; Microsoft VisualC v14 64bit runtime        ; +0x9e, 0x180125c22\nnop                                                                    ; +0xa3, 0x180125c27\nmov     rbx, [rsp+28h+arg_0]                                           ; +0xa4, 0x180125c28\nmov     rsi, [rsp+28h+arg_8]                                           ; +0xa9, 0x180125c2d\nmov     rdi, [rsp+28h+arg_10]                                          ; +0xae, 0x180125c32\nadd     rsp, 20h                                                       ; +0xb3, 0x180125c37\npop     r14                                                            ; +0xb7, 0x180125c3b\nretn                                                                   ; +0xb9, 0x180125c3d\ncall    abort                                                          ; +0xba, 0x180125c3e\nalign 4                                                                ; +0xbf, 0x180125c43", "xrefs": ["CatchIt<__FrameHandler3> @ 0x180125ca2", "<???> @ 0x1802028b8"], "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"}