{"type": "func", "start": 6443658548, "end": 6443658785, "name": "IsInExceptionSpec", "pseudocode": "// \n// IsInExceptionSpec from 0x180126d34 to 0x180126e21 (237 bytes)\n// \n// 3 xrefs:\n// > FindHandler<__FrameHandler3> @ 0x180125e40\n// > FindHandler<__FrameHandler3> @ 0x1801260ca\n// > <???> @ 0x180202960\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\nchar __fastcall IsInExceptionSpec(__int64 pCatchableTypeArray, const struct _s_ESTypeList *a2)\n{\n  struct EHExceptionRecord *v3; // r13\n  char v4; // r15\n  int i; // esi\n  int *v6; // r12\n  __int64 v7; // rcx\n  __int64 ThrowImageBase; // rax\n  int v9; // r14d\n  __int64 v10; // rax\n  ThrowInfo *pThrowInfo; // rbx\n  __int64 v12; // rdi\n  __int64 v13; // rcx\n  __int64 ImageBase; // rax\n\n  v3 = (struct EHExceptionRecord *)pCatchableTypeArray;\n  if ( !a2 )\n    abort();\n  v4 = 0;\n  for ( i = 0; i < a2->nCount; ++i )\n  {\n    v6 = (int *)(GetThrowImageBase(pCatchableTypeArray) + v3->params.pThrowInfo->pCatchableTypeArray + 4LL);\n    ThrowImageBase = GetThrowImageBase(v7);\n    pCatchableTypeArray = v3->params.pThrowInfo->pCatchableTypeArray;\n    v9 = *(_DWORD *)(ThrowImageBase + pCatchableTypeArray);\n    if ( v9 > 0 )\n    {\n      while ( 1 )\n      {\n        v10 = GetThrowImageBase(pCatchableTypeArray);\n        pThrowInfo = v3->params.pThrowInfo;\n        v12 = *v6 + v10;\n        ImageBase = GetImageBase(v13);\n        if ( (unsigned int)TypeMatchHelper<__FrameHandler3>(ImageBase + 20LL * i + a2->dispTypeArray, v12, pThrowInfo) )\n          break;\n        --v9;\n        ++v6;\n        if ( v9 <= 0 )\n          goto LABEL_8;\n      }\n      v4 = 1;\n    }\nLABEL_8:\n    ;\n  }\n  return v4;\n}", "assembly": "; \n; IsInExceptionSpec from 0x180126d34 to 0x180126e21 (237 bytes)\n; \n; 3 xrefs:\n; > FindHandler<__FrameHandler3> @ 0x180125e40\n; > FindHandler<__FrameHandler3> @ 0x1801260ca\n; > <???> @ 0x180202960\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, 0x180126d34\nmov     [rsp+arg_10], rbp                                              ; +0x5, 0x180126d39\nmov     [rsp+arg_18], rsi                                              ; +0xa, 0x180126d3e\npush    rdi                                                            ; +0xf, 0x180126d43\npush    r12                                                            ; +0x10, 0x180126d44\npush    r13                                                            ; +0x12, 0x180126d46\npush    r14                                                            ; +0x14, 0x180126d48\npush    r15                                                            ; +0x16, 0x180126d4a\nsub     rsp, 20h                                                       ; +0x18, 0x180126d4c\nmov     rbp, rdx                                                       ; +0x1c, 0x180126d50\nmov     r13, rcx                                                       ; +0x1f, 0x180126d53\ntest    rdx, rdx                                                       ; +0x22, 0x180126d56\njz      loc_180126E1B                                                  ; +0x25, 0x180126d59\nxor     r15b, r15b                                                     ; +0x2b, 0x180126d5f\nxor     esi, esi                                                       ; +0x2e, 0x180126d62\ncmp     [rdx], esi                                                     ; +0x30, 0x180126d64\njle     loc_180126DFB                                                  ; +0x32, 0x180126d66\ncall    _GetThrowImageBase                                             ; +0x38, 0x180126d6c\nmov     rdx, rax                                                       ; +0x3d, 0x180126d71\nmov     rax, [r13+30h]                                                 ; +0x40, 0x180126d74\nmovsxd  r12, dword ptr [rax+0Ch]                                       ; +0x44, 0x180126d78\nadd     r12, 4                                                         ; +0x48, 0x180126d7c\nadd     r12, rdx                                                       ; +0x4c, 0x180126d80\ncall    _GetThrowImageBase                                             ; +0x4f, 0x180126d83\nmov     rdx, rax                                                       ; +0x54, 0x180126d88\nmov     rax, [r13+30h]                                                 ; +0x57, 0x180126d8b\nmovsxd  rcx, dword ptr [rax+0Ch]                                       ; +0x5b, 0x180126d8f\nmov     r14d, [rdx+rcx]                                                ; +0x5f, 0x180126d93\ntest    r14d, r14d                                                     ; +0x63, 0x180126d97\njle     short loc_180126DF0                                            ; +0x66, 0x180126d9a\nmovsxd  rax, esi                                                       ; +0x68, 0x180126d9c\nlea     rax, [rax+rax*4]                                               ; +0x6b, 0x180126d9f\nmov     [rsp+48h+arg_8], rax                                           ; +0x6f, 0x180126da3\ncall    _GetThrowImageBase                                             ; +0x74, 0x180126da8\nmov     rbx, [r13+30h]                                                 ; +0x79, 0x180126dad\nmov     rdi, rax                                                       ; +0x7d, 0x180126db1\nmovsxd  rax, dword ptr [r12]                                           ; +0x80, 0x180126db4\nadd     rdi, rax                                                       ; +0x84, 0x180126db8\ncall    _GetImageBase                                                  ; +0x87, 0x180126dbb\nmov     rdx, [rsp+48h+arg_8]                                           ; +0x8c, 0x180126dc0\nmov     r8, rbx                                                        ; +0x91, 0x180126dc5\nmovsxd  rcx, dword ptr [rbp+4]                                         ; +0x94, 0x180126dc8\nlea     rax, [rax+rdx*4]                                               ; +0x98, 0x180126dcc\nmov     rdx, rdi                                                       ; +0x9c, 0x180126dd0\nadd     rcx, rax                                                       ; +0x9f, 0x180126dd3\ncall    ??$TypeMatchHelper@V__FrameHandler3@@@@YAHPEBU_s_HandlerType@@PEBU_s_CatchableType@@PEBU_s_ThrowInfo@@@Z ; +0xa2, 0x180126dd6\ntest    eax, eax                                                       ; +0xa7, 0x180126ddb\njnz     short loc_180126DED                                            ; +0xa9, 0x180126ddd\ndec     r14d                                                           ; +0xab, 0x180126ddf\nadd     r12, 4                                                         ; +0xae, 0x180126de2\ntest    r14d, r14d                                                     ; +0xb2, 0x180126de6\njg      short loc_180126DA8                                            ; +0xb5, 0x180126de9\njmp     short loc_180126DF0                                            ; +0xb7, 0x180126deb\nmov     r15b, 1                                                        ; +0xb9, 0x180126ded\ninc     esi                                                            ; +0xbc, 0x180126df0\ncmp     esi, [rbp+0]                                                   ; +0xbe, 0x180126df2\njl      loc_180126D6C                                                  ; +0xc1, 0x180126df5\nmov     rbx, [rsp+48h+arg_0]                                           ; +0xc7, 0x180126dfb\nmov     al, r15b                                                       ; +0xcc, 0x180126e00\nmov     rbp, [rsp+48h+arg_10]                                          ; +0xcf, 0x180126e03\nmov     rsi, [rsp+48h+arg_18]                                          ; +0xd4, 0x180126e08\nadd     rsp, 20h                                                       ; +0xd9, 0x180126e0d\npop     r15                                                            ; +0xdd, 0x180126e11\npop     r14                                                            ; +0xdf, 0x180126e13\npop     r13                                                            ; +0xe1, 0x180126e15\npop     r12                                                            ; +0xe3, 0x180126e17\npop     rdi                                                            ; +0xe5, 0x180126e19\nretn                                                                   ; +0xe6, 0x180126e1a\ncall    abort                                                          ; +0xe7, 0x180126e1b\ndb 0CCh                                                                ; +0xec, 0x180126e20", "xrefs": ["FindHandler<__FrameHandler3> @ 0x180125e40", "FindHandler<__FrameHandler3> @ 0x1801260ca", "<???> @ 0x180202960"], "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"}