{"type": "func", "start": 6443654212, "end": 6443654421, "name": "CatchIt<__FrameHandler3>", "pseudocode": "// \n// CatchIt<__FrameHandler3> from 0x180125c44 to 0x180125d15 (209 bytes)\n// \n// 4 xrefs:\n// > FindHandler<__FrameHandler3> @ 0x18012603a\n// > FindHandlerForForeignException<__FrameHandler3> @ 0x1801263d0\n// > <???> @ 0x1802028b8\n// > <???> @ 0x1802028c4\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\nvoid __fastcall CatchIt<__FrameHandler3>(\n        struct EHExceptionRecord *a1,\n        unsigned __int64 *a2,\n        struct _CONTEXT *a3,\n        struct _xDISPATCHER_CONTEXT *a4,\n        struct _s_FuncInfo *a5,\n        struct _s_HandlerType *a6,\n        __int64 a7,\n        int *a8,\n        int a9,\n        int a10,\n        int a11,\n        char a12)\n{\n  const struct _s_FuncInfo *v12; // r13\n  __int64 *EstablisherFrame; // rax\n  unsigned __int64 *v17; // r14\n  struct _s_HandlerType *v18; // rsi\n  int v19; // ebx\n  int v20; // edi\n  __int64 ImageBase; // rax\n  unsigned __int64 v22; // [rsp+A8h] [rbp+10h] BYREF\n  struct _CONTEXT *v23; // [rsp+B0h] [rbp+18h]\n\n  v23 = a3;\n  v12 = a5;\n  EstablisherFrame = (__int64 *)_GetEstablisherFrame(a2, a4, a5, &v22);\n  v17 = (unsigned __int64 *)EstablisherFrame;\n  v18 = a6;\n  if ( a7 )\n    BuildCatchObjectInternal<__FrameHandler3>((__int64)a1, EstablisherFrame, (int *)a6, a7);\n  v19 = a8[2];\n  v20 = *a8;\n  ImageBase = GetImageBase((__int64)a8);\n  __FrameHandler3::UnwindNestedFrames(\n    (void **)a2,\n    a1,\n    v23,\n    v17,\n    (void *)(v18->dispOfHandler + ImageBase),\n    v12,\n    v20,\n    v19,\n    v18,\n    a4,\n    a12);\n}", "assembly": "; \n; CatchIt<__FrameHandler3> from 0x180125c44 to 0x180125d15 (209 bytes)\n; \n; 4 xrefs:\n; > FindHandler<__FrameHandler3> @ 0x18012603a\n; > FindHandlerForForeignException<__FrameHandler3> @ 0x1801263d0\n; > <???> @ 0x1802028b8\n; > <???> @ 0x1802028c4\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     rax, rsp                                                       ; +0x0, 0x180125c44\nmov     [rax+8], rbx                                                   ; +0x3, 0x180125c47\nmov     [rax+18h], r8                                                  ; +0x7, 0x180125c4b\npush    rbp                                                            ; +0xb, 0x180125c4f\npush    rsi                                                            ; +0xc, 0x180125c50\npush    rdi                                                            ; +0xd, 0x180125c51\npush    r12                                                            ; +0xe, 0x180125c52\npush    r13                                                            ; +0x10, 0x180125c54\npush    r14                                                            ; +0x12, 0x180125c56\npush    r15                                                            ; +0x14, 0x180125c58\nsub     rsp, 60h                                                       ; +0x16, 0x180125c5a\nmov     r13, [rsp+98h+arg_20]                                          ; +0x1a, 0x180125c5e\nmov     r15, r9                                                        ; +0x22, 0x180125c66\nmov     r12, rdx                                                       ; +0x25, 0x180125c69\nlea     r9, [rax+10h]; unsigned __int64 *                              ; +0x28, 0x180125c6c\nmov     rbp, rcx                                                       ; +0x2c, 0x180125c70\nmov     r8, r13; struct _s_FuncInfo *                                  ; +0x2f, 0x180125c73\nmov     rdx, r15; struct _xDISPATCHER_CONTEXT *                        ; +0x32, 0x180125c76\nmov     rcx, r12; unsigned __int64 *                                   ; +0x35, 0x180125c79\ncall    ?_GetEstablisherFrame@@YAPEA_KPEA_KPEAU_xDISPATCHER_CONTEXT@@PEBU_s_FuncInfo@@0@Z ; +0x38, 0x180125c7c\nmov     r9, [rsp+98h+arg_30]                                           ; +0x3d, 0x180125c81\nmov     r14, rax                                                       ; +0x45, 0x180125c89\nmov     rsi, [rsp+98h+arg_28]                                          ; +0x48, 0x180125c8c\ntest    r9, r9                                                         ; +0x50, 0x180125c94\njz      short loc_180125CA7                                            ; +0x53, 0x180125c97\nmov     r8, rsi                                                        ; +0x55, 0x180125c99\nmov     rdx, rax                                                       ; +0x58, 0x180125c9c\nmov     rcx, rbp                                                       ; +0x5b, 0x180125c9f\ncall    ??$BuildCatchObjectInternal@V__FrameHandler3@@@@YAXPEAUEHExceptionRecord@@PEAXPEBU_s_HandlerType@@PEBU_s_CatchableType@@@Z ; +0x5e, 0x180125ca2\nmov     rcx, [rsp+98h+arg_38]                                          ; +0x63, 0x180125ca7\nmov     ebx, [rcx+8]                                                   ; +0x6b, 0x180125caf\nmov     edi, [rcx]                                                     ; +0x6e, 0x180125cb2\ncall    _GetImageBase                                                  ; +0x70, 0x180125cb4\nmovsxd  rcx, dword ptr [rsi+0Ch]                                       ; +0x75, 0x180125cb9\nmov     r9, r14; unsigned __int64 *                                    ; +0x79, 0x180125cbd\nmov     r8, [rsp+98h+arg_10]; struct _CONTEXT *                        ; +0x7c, 0x180125cc0\nadd     rax, rcx                                                       ; +0x84, 0x180125cc8\nmov     cl, [rsp+98h+arg_58]                                           ; +0x87, 0x180125ccb\nmov     rdx, rbp; struct EHExceptionRecord *                           ; +0x8e, 0x180125cd2\nmov     [rsp+98h+var_48], cl; char                                     ; +0x91, 0x180125cd5\nmov     rcx, r12; unsigned __int64 *                                   ; +0x95, 0x180125cd9\nmov     [rsp+98h+var_50], r15; struct _xDISPATCHER_CONTEXT *           ; +0x98, 0x180125cdc\nmov     [rsp+98h+var_58], rsi; struct _s_HandlerType *                 ; +0x9d, 0x180125ce1\nmov     [rsp+98h+var_60], ebx; int                                     ; +0xa2, 0x180125ce6\nmov     [rsp+98h+var_68], edi; int                                     ; +0xa6, 0x180125cea\nmov     [rsp+98h+var_70], r13; struct _s_FuncInfo *                    ; +0xaa, 0x180125cee\nmov     [rsp+98h+var_78], rax; void *                                  ; +0xaf, 0x180125cf3\ncall    ?UnwindNestedFrames@__FrameHandler3@@SAXPEA_KPEAUEHExceptionRecord@@PEAU_CONTEXT@@0PEAXPEBU_s_FuncInfo@@HHPEBU_s_HandlerType@@PEAU_xDISPATCHER_CONTEXT@@E@Z ; +0xb4, 0x180125cf8\nmov     rbx, [rsp+98h+arg_0]                                           ; +0xb9, 0x180125cfd\nadd     rsp, 60h                                                       ; +0xc1, 0x180125d05\npop     r15                                                            ; +0xc5, 0x180125d09\npop     r14                                                            ; +0xc7, 0x180125d0b\npop     r13                                                            ; +0xc9, 0x180125d0d\npop     r12                                                            ; +0xcb, 0x180125d0f\npop     rdi                                                            ; +0xcd, 0x180125d11\npop     rsi                                                            ; +0xce, 0x180125d12\npop     rbp                                                            ; +0xcf, 0x180125d13\nretn                                                                   ; +0xd0, 0x180125d14", "xrefs": ["FindHandler<__FrameHandler3> @ 0x18012603a", "FindHandlerForForeignException<__FrameHandler3> @ 0x1801263d0", "<???> @ 0x1802028b8", "<???> @ 0x1802028c4"], "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"}