{"type": "func", "start": 6443654424, "end": 6443655645, "name": "FindHandler<__FrameHandler3>", "pseudocode": "// \n// FindHandler<__FrameHandler3> from 0x180125d18 to 0x1801261dd (1221 bytes)\n// \n// 2 xrefs:\n// > __InternalCxxFrameHandler<__FrameHandler3> @ 0x180126744\n// > <???> @ 0x1802028d0\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 FindHandler<__FrameHandler3>(\n        struct EHExceptionRecord *a1,\n        unsigned __int64 *a2,\n        struct _CONTEXT *a3,\n        struct _xDISPATCHER_CONTEXT *a4,\n        struct _s_FuncInfo *a5,\n        char a6,\n        int a7,\n        __int64 a8)\n{\n  unsigned __int64 *v8; // r12\n  __ehstate_t HandlerSearchState; // eax\n  __int64 dispESTypeList; // rcx\n  int v13; // r14d\n  __int64 result; // rax\n  __int64 v15; // rcx\n  __int64 v16; // rcx\n  __int64 v17; // rcx\n  const struct _s_ESTypeList *v18; // r15\n  __int64 v19; // rcx\n  unsigned int v20; // r13d\n  __int64 v21; // r9\n  unsigned int v22; // r12d\n  __int64 v23; // rax\n  __int64 v24; // r8\n  __m128i v25; // xmm0\n  __int64 v26; // rdx\n  unsigned __int64 v27; // r15\n  __int64 ThrowImageBase; // rax\n  ThrowInfo *pThrowInfo; // rcx\n  __int64 v30; // rax\n  ThrowInfo *v31; // r8\n  __int64 ImageBase; // rax\n  const struct _s_ESTypeList *v33; // rdx\n  unsigned __int64 *EstablisherFrame; // rax\n  __int64 v35; // rcx\n  int v36; // [rsp+50h] [rbp-B0h]\n  char v37; // [rsp+60h] [rbp-A0h]\n  int v38; // [rsp+64h] [rbp-9Ch]\n  int *v40; // [rsp+70h] [rbp-90h]\n  __int64 v41; // [rsp+78h] [rbp-88h]\n  unsigned __int64 v43; // [rsp+88h] [rbp-78h] BYREF\n  __int64 v44; // [rsp+90h] [rbp-70h]\n  int v45[2]; // [rsp+98h] [rbp-68h]\n  __int64 v46[2]; // [rsp+A0h] [rbp-60h] BYREF\n  int v47; // [rsp+B0h] [rbp-50h]\n  _QWORD v48[2]; // [rsp+B8h] [rbp-48h] BYREF\n  __int128 v49; // [rsp+C8h] [rbp-38h]\n  __int128 v50; // [rsp+D8h] [rbp-28h] BYREF\n  unsigned int v51; // [rsp+F0h] [rbp-10h]\n  struct _s_HandlerType pExceptionObject; // [rsp+F8h] [rbp-8h] BYREF\n\n  v8 = a2;\n  *(_QWORD *)v45 = a8;\n  v37 = 0;\n  HandlerSearchState = __FrameHandler3::GetHandlerSearchState(a2, a4, a5);\n  v13 = HandlerSearchState;\n  if ( HandlerSearchState < -1 || HandlerSearchState >= a5->maxState )\n    goto LABEL_53;\n  if ( a1->ExceptionCode == -529697949\n    && a1->NumberParameters == 4\n    && a1->params.magicNumber - 429065504 <= 2\n    && !a1->params.pThrowInfo )\n  {\n    result = _vcrt_getptd(dispESTypeList);\n    if ( !*(_QWORD *)(result + 32) )\n      return result;\n    a1 = *(struct EHExceptionRecord **)(_vcrt_getptd(v15) + 32);\n    v37 = 1;\n    a3 = *(struct _CONTEXT **)(_vcrt_getptd(v16) + 40);\n    SetThrowImageBase((__int64)a1->params.pThrowImageBase);\n    if ( a1->ExceptionCode == -529697949\n      && a1->NumberParameters == 4\n      && a1->params.magicNumber - 429065504 <= 2\n      && !a1->params.pThrowInfo )\n    {\n      goto LABEL_53;\n    }\n    if ( *(_QWORD *)(_vcrt_getptd(v17) + 56) )\n    {\n      v18 = *(const struct _s_ESTypeList **)(_vcrt_getptd(dispESTypeList) + 56);\n      *(_QWORD *)(_vcrt_getptd(v19) + 56) = 0;\n      if ( !IsInExceptionSpec(a1, v18) )\n      {\n        if ( Is_bad_exception_allowed(v18) )\n        {\n          _DestructExceptionObject((__int64)a1);\n          sub_1801267AC(&pExceptionObject);\n          throw (std::bad_exception *)&pExceptionObject;\n        }\n        terminate();\n      }\n    }\n  }\n  v48[1] = a4->ImageBase;\n  v48[0] = a5;\n  if ( a1->ExceptionCode == -529697949 && a1->NumberParameters == 4 && a1->params.magicNumber - 429065504 <= 2 )\n  {\n    v20 = 0;\n    if ( a5->nTryBlocks )\n    {\n      __FrameHandler3::GetRangeOfTrysToCheck(&v50, (__int64)v48, v13, a4, a5);\n      v49 = v50;\n      if ( DWORD2(v50) < v51 )\n      {\n        v21 = v50;\n        v22 = DWORD2(v49);\n        v41 = v50;\n        do\n        {\n          v23 = *(_QWORD *)(v21 + 8);\n          v24 = *(int *)(*(_QWORD *)v49 + 16LL) + 20LL * v22;\n          v25 = *(__m128i *)(v24 + v23);\n          dispESTypeList = *(int *)(v24 + v23 + 16);\n          v47 = *(_DWORD *)(v24 + v23 + 16);\n          *(__m128i *)v46 = v25;\n          if ( _mm_cvtsi128_si32(v25) <= v13 && v13 <= SHIDWORD(v46[0]) )\n          {\n            v26 = a4->ImageBase + dispESTypeList;\n            v27 = HIDWORD(v46[1]);\n            v44 = v26;\n            if ( HIDWORD(v46[1]) )\n            {\n              while ( 1 )\n              {\n                pExceptionObject = *(struct _s_HandlerType *)(v26 + 20LL * v20);\n                ThrowImageBase = GetThrowImageBase(5LL * v20);\n                pThrowInfo = a1->params.pThrowInfo;\n                v40 = (int *)(pThrowInfo->pCatchableTypeArray + ThrowImageBase + 4);\n                dispESTypeList = *(unsigned int *)(GetThrowImageBase((__int64)pThrowInfo)\n                                                 + pThrowInfo->pCatchableTypeArray);\n                v38 = dispESTypeList;\n                if ( (int)dispESTypeList > 0 )\n                  break;\nLABEL_28:\n                if ( ++v20 == (_DWORD)v27 )\n                  goto LABEL_31;\n                v26 = v44;\n              }\n              while ( 1 )\n              {\n                v30 = GetThrowImageBase(dispESTypeList);\n                v31 = a1->params.pThrowInfo;\n                v43 = *v40 + v30;\n                if ( (unsigned int)TypeMatchHelper<__FrameHandler3>(&pExceptionObject, v43, v31) )\n                  break;\n                ++v40;\n                if ( --v38 <= 0 )\n                  goto LABEL_28;\n              }\n              LOBYTE(v36) = v37;\n              CatchIt<__FrameHandler3>(a1, a2, a3, a4, a5, &pExceptionObject, v43, (int *)v46, a7, v45[0], v36, a6);\nLABEL_31:\n              v21 = v41;\n            }\n            v20 = 0;\n          }\n          ++v22;\n        }\n        while ( v22 < v51 );\n        v8 = a2;\n      }\n    }\n    if ( (*(_DWORD *)a5 & 0x1FFFFFFFu) >= 0x19930521 )\n    {\n      if ( a5->dispESTypeList\n        && (ImageBase = GetImageBase(dispESTypeList), dispESTypeList = a5->dispESTypeList, dispESTypeList + ImageBase)\n        || (a5->EHFlags & 4) != 0 && !__FrameHandler3::ExecutionInCatch(a4, a5) )\n      {\n        if ( (a5->EHFlags & 4) != 0 )\n        {\n          *(_QWORD *)(_vcrt_getptd(dispESTypeList) + 32) = a1;\n          *(_QWORD *)(_vcrt_getptd(v35) + 40) = a3;\n          terminate();\n        }\n        if ( a5->dispESTypeList )\n          v33 = (const struct _s_ESTypeList *)(a5->dispESTypeList + GetImageBase(dispESTypeList));\n        else\n          v33 = nullptr;\n        if ( !IsInExceptionSpec(a1, v33) )\n        {\n          EstablisherFrame = _GetEstablisherFrame(v8, a4, a5, &v43);\n          __FrameHandler3::UnwindNestedFrames(\n            (void **)v8,\n            a1,\n            a3,\n            EstablisherFrame,\n            nullptr,\n            a5,\n            -1,\n            -1,\n            nullptr,\n            a4,\n            a6);\n        }\n      }\n    }\n  }\n  else if ( a5->nTryBlocks )\n  {\n    if ( a6 )\n      goto LABEL_53;\n    FindHandlerForForeignException<__FrameHandler3>(a1, a5, v13, a7, a8);\n  }\n  result = _vcrt_getptd(dispESTypeList);\n  if ( *(_QWORD *)(result + 56) )\nLABEL_53:\n    abort();\n  return result;\n}", "assembly": "; \n; FindHandler<__FrameHandler3> from 0x180125d18 to 0x1801261dd (1221 bytes)\n; \n; 2 xrefs:\n; > __InternalCxxFrameHandler<__FrameHandler3> @ 0x180126744\n; > <???> @ 0x1802028d0\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    rbp                                                            ; +0x0, 0x180125d18\npush    rbx                                                            ; +0x2, 0x180125d1a\npush    rsi                                                            ; +0x3, 0x180125d1b\npush    rdi                                                            ; +0x4, 0x180125d1c\npush    r12                                                            ; +0x5, 0x180125d1d\npush    r13                                                            ; +0x7, 0x180125d1f\npush    r14                                                            ; +0x9, 0x180125d21\npush    r15                                                            ; +0xb, 0x180125d23\nlea     rbp, [rsp-28h]                                                 ; +0xd, 0x180125d25\nsub     rsp, 128h                                                      ; +0x12, 0x180125d2a\nmov     rax, cs:__security_cookie                                      ; +0x19, 0x180125d31\nxor     rax, rsp                                                       ; +0x20, 0x180125d38\nmov     [rbp+60h+var_50], rax                                          ; +0x23, 0x180125d3b\nmov     rdi, [rbp+60h+arg_20]                                          ; +0x27, 0x180125d3f\nmov     r12, rdx                                                       ; +0x2e, 0x180125d46\nmov     r13, [rbp+60h+arg_38]                                          ; +0x31, 0x180125d49\nmov     r15, r8                                                        ; +0x38, 0x180125d50\nmov     [rsp+160h+var_F8], r8                                          ; +0x3b, 0x180125d53\nmov     rbx, rcx                                                       ; +0x40, 0x180125d58\nmov     [rbp+60h+var_E0], rdx                                          ; +0x43, 0x180125d5b\nmov     r8, rdi; struct _s_FuncInfo *                                  ; +0x47, 0x180125d5f\nmov     rcx, r12; unsigned __int64 *                                   ; +0x4a, 0x180125d62\nmov     qword ptr [rbp+60h+var_C8], r13                                ; +0x4d, 0x180125d65\nmov     rdx, r9; struct _xDISPATCHER_CONTEXT *                         ; +0x51, 0x180125d69\nmov     byte ptr [rsp+160h+var_100], 0                                 ; +0x54, 0x180125d6c\nmov     rsi, r9                                                        ; +0x59, 0x180125d71\ncall    ?GetHandlerSearchState@__FrameHandler3@@SAHPEA_KPEAU_xDISPATCHER_CONTEXT@@PEBU_s_FuncInfo@@@Z ; +0x5c, 0x180125d74\nmov     r14d, eax                                                      ; +0x61, 0x180125d79\ncmp     eax, 0FFFFFFFFh                                                ; +0x64, 0x180125d7c\njl      loc_1801261D7                                                  ; +0x67, 0x180125d7f\ncmp     eax, [rdi+4]                                                   ; +0x6d, 0x180125d85\njge     loc_1801261D7                                                  ; +0x70, 0x180125d88\ncmp     dword ptr [rbx], 0E06D7363h                                    ; +0x76, 0x180125d8e\njnz     loc_180125E63                                                  ; +0x7c, 0x180125d94\ncmp     dword ptr [rbx+18h], 4                                         ; +0x82, 0x180125d9a\njnz     loc_180125E63                                                  ; +0x86, 0x180125d9e\nmov     eax, [rbx+20h]                                                 ; +0x8c, 0x180125da4\nsub     eax, 19930520h                                                 ; +0x8f, 0x180125da7\ncmp     eax, 2                                                         ; +0x94, 0x180125dac\nja      loc_180125E63                                                  ; +0x97, 0x180125daf\ncmp     qword ptr [rbx+30h], 0                                         ; +0x9d, 0x180125db5\njnz     loc_180125E63                                                  ; +0xa2, 0x180125dba\ncall    __vcrt_getptd                                                  ; +0xa8, 0x180125dc0\ncmp     qword ptr [rax+20h], 0                                         ; +0xad, 0x180125dc5\njz      loc_180126170                                                  ; +0xb2, 0x180125dca\ncall    __vcrt_getptd                                                  ; +0xb8, 0x180125dd0\nmov     rbx, [rax+20h]                                                 ; +0xbd, 0x180125dd5\ncall    __vcrt_getptd                                                  ; +0xc1, 0x180125dd9\nmov     rcx, [rbx+38h]                                                 ; +0xc6, 0x180125dde\nmov     byte ptr [rsp+160h+var_100], 1                                 ; +0xca, 0x180125de2\nmov     r15, [rax+28h]                                                 ; +0xcf, 0x180125de7\nmov     [rsp+160h+var_F8], r15                                         ; +0xd3, 0x180125deb\ncall    _SetThrowImageBase                                             ; +0xd8, 0x180125df0\ncmp     dword ptr [rbx], 0E06D7363h                                    ; +0xdd, 0x180125df5\njnz     short loc_180125E1B                                            ; +0xe3, 0x180125dfb\ncmp     dword ptr [rbx+18h], 4                                         ; +0xe5, 0x180125dfd\njnz     short loc_180125E1B                                            ; +0xe9, 0x180125e01\nmov     eax, [rbx+20h]                                                 ; +0xeb, 0x180125e03\nsub     eax, 19930520h                                                 ; +0xee, 0x180125e06\ncmp     eax, 2                                                         ; +0xf3, 0x180125e0b\nja      short loc_180125E1B                                            ; +0xf6, 0x180125e0e\ncmp     qword ptr [rbx+30h], 0                                         ; +0xf8, 0x180125e10\njz      loc_1801261D7                                                  ; +0xfd, 0x180125e15\ncall    __vcrt_getptd                                                  ; +0x103, 0x180125e1b\ncmp     qword ptr [rax+38h], 0                                         ; +0x108, 0x180125e20\njz      short loc_180125E63                                            ; +0x10d, 0x180125e25\ncall    __vcrt_getptd                                                  ; +0x10f, 0x180125e27\nmov     r15, [rax+38h]                                                 ; +0x114, 0x180125e2c\ncall    __vcrt_getptd                                                  ; +0x118, 0x180125e30\nmov     rdx, r15; struct _s_ESTypeList *                               ; +0x11d, 0x180125e35\nmov     rcx, rbx; struct EHExceptionRecord *                           ; +0x120, 0x180125e38\nand     qword ptr [rax+38h], 0                                         ; +0x123, 0x180125e3b\ncall    ?IsInExceptionSpec@@YAEPEAUEHExceptionRecord@@PEBU_s_ESTypeList@@@Z ; +0x128, 0x180125e40\ntest    al, al                                                         ; +0x12d, 0x180125e45\njnz     short loc_180125E5E                                            ; +0x12f, 0x180125e47\nmov     rcx, r15; struct _s_ESTypeList *                               ; +0x131, 0x180125e49\ncall    ?Is_bad_exception_allowed@@YAEPEBU_s_ESTypeList@@@Z            ; +0x134, 0x180125e4c\ntest    al, al                                                         ; +0x139, 0x180125e51\njz      loc_1801261B4                                                  ; +0x13b, 0x180125e53\njmp     loc_180126190                                                  ; +0x141, 0x180125e59\nmov     r15, [rsp+160h+var_F8]                                         ; +0x146, 0x180125e5e\nmov     rax, [rsi+8]                                                   ; +0x14b, 0x180125e63\nmov     [rbp+60h+var_A0], rax                                          ; +0x14f, 0x180125e67\nmov     [rbp+60h+var_A8], rdi                                          ; +0x153, 0x180125e6b\ncmp     dword ptr [rbx], 0E06D7363h                                    ; +0x157, 0x180125e6f\njnz     loc_180126127                                                  ; +0x15d, 0x180125e75\ncmp     dword ptr [rbx+18h], 4                                         ; +0x163, 0x180125e7b\njnz     loc_180126127                                                  ; +0x167, 0x180125e7f\nmov     eax, [rbx+20h]                                                 ; +0x16d, 0x180125e85\nsub     eax, 19930520h                                                 ; +0x170, 0x180125e88\ncmp     eax, 2                                                         ; +0x175, 0x180125e8d\nja      loc_180126127                                                  ; +0x178, 0x180125e90\nxor     r13d, r13d                                                     ; +0x17e, 0x180125e96\ncmp     [rdi+0Ch], r13d                                                ; +0x181, 0x180125e99\njbe     loc_180126058                                                  ; +0x185, 0x180125e9d\nmov     eax, [rbp+60h+arg_30]                                          ; +0x18b, 0x180125ea3\nlea     rdx, [rbp+60h+var_A8]                                          ; +0x191, 0x180125ea9\nmov     dword ptr [rsp+160h+var_138], eax                              ; +0x195, 0x180125ead\nlea     rcx, [rbp+60h+var_88]                                          ; +0x199, 0x180125eb1\nmov     r9, rsi                                                        ; +0x19d, 0x180125eb5\nmov     [rsp+160h+var_140], rdi                                        ; +0x1a0, 0x180125eb8\nmov     r8d, r14d                                                      ; +0x1a5, 0x180125ebd\ncall    ?GetRangeOfTrysToCheck@__FrameHandler3@@SA?AU?$pair@Viterator@TryBlockMap@__FrameHandler3@@V123@@std@@AEAVTryBlockMap@1@HPEAU_xDISPATCHER_CONTEXT@@PEBU_s_FuncInfo@@H@Z ; +0x1a8, 0x180125ec0\nmovups  xmm0, [rbp+60h+var_88]                                         ; +0x1ad, 0x180125ec5\nmovdqu  [rbp+60h+var_98], xmm0                                         ; +0x1b1, 0x180125ec9\npsrldq  xmm0, 8                                                        ; +0x1b6, 0x180125ece\nmovd    eax, xmm0                                                      ; +0x1bb, 0x180125ed3\ncmp     eax, [rbp+60h+var_70]                                          ; +0x1bf, 0x180125ed7\njnb     loc_180126058                                                  ; +0x1c2, 0x180125eda\nmov     r9, qword ptr [rbp+60h+var_88]                                 ; +0x1c8, 0x180125ee0\nmov     r12d, dword ptr [rbp+60h+var_98+8]                             ; +0x1cc, 0x180125ee4\nmov     [rsp+160h+var_E8], r9                                          ; +0x1d0, 0x180125ee8\nmov     rax, qword ptr [rbp+60h+var_98]                                ; +0x1d5, 0x180125eed\nmov     rax, [rax]                                                     ; +0x1d9, 0x180125ef1\nmovsxd  rdx, dword ptr [rax+10h]                                       ; +0x1dc, 0x180125ef4\nmov     eax, r12d                                                      ; +0x1e0, 0x180125ef8\nlea     rcx, [rax+rax*4]                                               ; +0x1e3, 0x180125efb\nmov     rax, [r9+8]                                                    ; +0x1e7, 0x180125eff\nlea     r8, [rdx+rcx*4]                                                ; +0x1eb, 0x180125f03\nmovups  xmm0, xmmword ptr [r8+rax]                                     ; +0x1ef, 0x180125f07\nmovsxd  rcx, dword ptr [r8+rax+10h]                                    ; +0x1f4, 0x180125f0c\nmov     [rbp+60h+var_B0], ecx                                          ; +0x1f9, 0x180125f11\nmovd    eax, xmm0                                                      ; +0x1fc, 0x180125f14\nmovups  xmmword ptr [rbp+60h+var_C0], xmm0                             ; +0x200, 0x180125f18\ncmp     eax, r14d                                                      ; +0x204, 0x180125f1c\njg      loc_180126047                                                  ; +0x207, 0x180125f1f\nmov     rax, [rbp+60h+var_C0]                                          ; +0x20d, 0x180125f25\nshr     rax, 20h                                                       ; +0x211, 0x180125f29\ncmp     r14d, eax                                                      ; +0x215, 0x180125f2d\njg      loc_180126047                                                  ; +0x218, 0x180125f30\nmov     r15, [rbp+60h+var_C0+8]                                        ; +0x21e, 0x180125f36\nmov     rdx, rcx                                                       ; +0x222, 0x180125f3a\nadd     rdx, [rsi+8]                                                   ; +0x225, 0x180125f3d\nshr     r15, 20h                                                       ; +0x229, 0x180125f41\nmov     [rbp+60h+var_D0], rdx                                          ; +0x22d, 0x180125f45\ntest    r15d, r15d                                                     ; +0x231, 0x180125f49\njz      $NextTryBlock$110                                              ; +0x234, 0x180125f4c\nmov     eax, r13d                                                      ; +0x23a, 0x180125f52\nlea     rcx, [rax+rax*4]                                               ; +0x23d, 0x180125f55\nmovups  xmm0, xmmword ptr [rdx+rcx*4]                                  ; +0x241, 0x180125f59\nmovups  [rbp+60h+pExceptionObject], xmm0                               ; +0x245, 0x180125f5d\nmov     eax, [rdx+rcx*4+10h]                                           ; +0x249, 0x180125f61\nmov     [rbp+60h+var_58], eax                                          ; +0x24d, 0x180125f65\ncall    _GetThrowImageBase                                             ; +0x250, 0x180125f68\nmov     rcx, [rbx+30h]                                                 ; +0x255, 0x180125f6d\nadd     rax, 4                                                         ; +0x259, 0x180125f71\nmovsxd  rdx, dword ptr [rcx+0Ch]                                       ; +0x25d, 0x180125f75\nadd     rax, rdx                                                       ; +0x261, 0x180125f79\nmov     [rsp+160h+var_F0], rax                                         ; +0x264, 0x180125f7c\ncall    _GetThrowImageBase                                             ; +0x269, 0x180125f81\nmov     rcx, [rbx+30h]                                                 ; +0x26e, 0x180125f86\nmovsxd  rdx, dword ptr [rcx+0Ch]                                       ; +0x272, 0x180125f8a\nmov     ecx, [rax+rdx]                                                 ; +0x276, 0x180125f8e\nmov     [rsp+160h+var_FC], ecx                                         ; +0x279, 0x180125f91\ntest    ecx, ecx                                                       ; +0x27d, 0x180125f95\njle     short loc_180125FD5                                            ; +0x27f, 0x180125f97\ncall    _GetThrowImageBase                                             ; +0x281, 0x180125f99\nmov     rcx, [rsp+160h+var_F0]                                         ; +0x286, 0x180125f9e\nmov     r8, [rbx+30h]                                                  ; +0x28b, 0x180125fa3\nmovsxd  rcx, dword ptr [rcx]                                           ; +0x28f, 0x180125fa7\nadd     rax, rcx                                                       ; +0x292, 0x180125faa\nlea     rcx, [rbp+60h+pExceptionObject]                                ; +0x295, 0x180125fad\nmov     rdx, rax                                                       ; +0x299, 0x180125fb1\nmov     [rbp+60h+var_D8], rax                                          ; +0x29c, 0x180125fb4\ncall    ??$TypeMatchHelper@V__FrameHandler3@@@@YAHPEBU_s_HandlerType@@PEBU_s_CatchableType@@PEBU_s_ThrowInfo@@@Z ; +0x2a0, 0x180125fb8\ntest    eax, eax                                                       ; +0x2a5, 0x180125fbd\njnz     short loc_180125FE6                                            ; +0x2a7, 0x180125fbf\nmov     eax, [rsp+160h+var_FC]                                         ; +0x2a9, 0x180125fc1\nadd     [rsp+160h+var_F0], 4                                           ; +0x2ad, 0x180125fc5\ndec     eax                                                            ; +0x2b3, 0x180125fcb\nmov     [rsp+160h+var_FC], eax                                         ; +0x2b5, 0x180125fcd\ntest    eax, eax                                                       ; +0x2b9, 0x180125fd1\njg      short loc_180125F99                                            ; +0x2bb, 0x180125fd3\ninc     r13d                                                           ; +0x2bd, 0x180125fd5\ncmp     r13d, r15d                                                     ; +0x2c0, 0x180125fd8\njz      short loc_18012603F                                            ; +0x2c3, 0x180125fdb\nmov     rdx, [rbp+60h+var_D0]                                          ; +0x2c5, 0x180125fdd\njmp     loc_180125F52                                                  ; +0x2c9, 0x180125fe1\nmov     al, [rbp+60h+arg_28]                                           ; +0x2ce, 0x180125fe6\nmov     r9, rsi                                                        ; +0x2d4, 0x180125fec\nmov     r8, [rsp+160h+var_F8]                                          ; +0x2d7, 0x180125fef\nmov     rcx, rbx; struct EHExceptionRecord *                           ; +0x2dc, 0x180125ff4\nmov     rdx, [rbp+60h+var_E0]; unsigned __int64 *                      ; +0x2df, 0x180125ff7\nmov     [rsp+160h+var_108], al; char                                   ; +0x2e3, 0x180125ffb\nmov     al, byte ptr [rsp+160h+var_100]                                ; +0x2e7, 0x180125fff\nmov     [rsp+160h+var_110], al; int                                    ; +0x2eb, 0x180126003\nmov     rax, qword ptr [rbp+60h+var_C8]                                ; +0x2ef, 0x180126007\nmov     [rsp+160h+var_118], rax; int                                   ; +0x2f3, 0x18012600b\nmov     eax, [rbp+60h+arg_30]                                          ; +0x2f8, 0x180126010\nmov     dword ptr [rsp+160h+var_120], eax; int                         ; +0x2fe, 0x180126016\nlea     rax, [rbp+60h+var_C0]                                          ; +0x302, 0x18012601a\nmov     [rsp+160h+var_128], rax; __int64                               ; +0x306, 0x18012601e\nmov     rax, [rbp+60h+var_D8]                                          ; +0x30b, 0x180126023\nmov     [rsp+160h+var_130], rax; __int64                               ; +0x30f, 0x180126027\nlea     rax, [rbp+60h+pExceptionObject]                                ; +0x314, 0x18012602c\nmov     [rsp+160h+var_138], rax; struct _s_HandlerType *               ; +0x318, 0x180126030\nmov     [rsp+160h+var_140], rdi; struct _s_FuncInfo *                  ; +0x31d, 0x180126035\ncall    ??$CatchIt@V__FrameHandler3@@@@YAXPEAUEHExceptionRecord@@PEA_KPEAU_CONTEXT@@PEAU_xDISPATCHER_CONTEXT@@PEBU_s_FuncInfo@@PEBU_s_HandlerType@@PEBU_s_CatchableType@@PEBU_s_TryBlockMapEntry@@H1EE@Z ; +0x322, 0x18012603a\nmov     r9, [rsp+160h+var_E8]                                          ; +0x327, 0x18012603f\nxor     r13d, r13d                                                     ; +0x32c, 0x180126044\ninc     r12d                                                           ; +0x32f, 0x180126047\ncmp     r12d, [rbp+60h+var_70]                                         ; +0x332, 0x18012604a\njb      loc_180125EED                                                  ; +0x336, 0x18012604e\nmov     r12, [rbp+60h+var_E0]                                          ; +0x33c, 0x180126054\nmov     eax, [rdi]                                                     ; +0x340, 0x180126058\nand     eax, 1FFFFFFFh                                                 ; +0x342, 0x18012605a\ncmp     eax, 19930521h                                                 ; +0x347, 0x18012605f\njb      loc_180126164                                                  ; +0x34c, 0x180126064\ncmp     [rdi+20h], r13d                                                ; +0x352, 0x18012606a\njz      short loc_18012607E                                            ; +0x356, 0x18012606e\ncall    _GetImageBase                                                  ; +0x358, 0x180126070\nmovsxd  rcx, dword ptr [rdi+20h]                                       ; +0x35d, 0x180126075\nadd     rax, rcx                                                       ; +0x361, 0x180126079\njnz     short loc_18012609F                                            ; +0x364, 0x18012607c\nmov     eax, [rdi+24h]                                                 ; +0x366, 0x18012607e\nshr     eax, 2                                                         ; +0x369, 0x180126081\ntest    al, 1                                                          ; +0x36c, 0x180126084\njz      loc_180126164                                                  ; +0x36e, 0x180126086\nmov     rdx, rdi; struct _s_FuncInfo *                                 ; +0x374, 0x18012608c\nmov     rcx, rsi; struct _xDISPATCHER_CONTEXT *                        ; +0x377, 0x18012608f\ncall    ?ExecutionInCatch@__FrameHandler3@@SA_NPEAU_xDISPATCHER_CONTEXT@@PEBU_s_FuncInfo@@@Z ; +0x37a, 0x180126092\ntest    al, al                                                         ; +0x37f, 0x180126097\njnz     loc_180126164                                                  ; +0x381, 0x180126099\nmov     eax, [rdi+24h]                                                 ; +0x387, 0x18012609f\nshr     eax, 2                                                         ; +0x38a, 0x1801260a2\ntest    al, 1                                                          ; +0x38d, 0x1801260a5\njnz     loc_1801261BA                                                  ; +0x38f, 0x1801260a7\ncmp     [rdi+20h], r13d                                                ; +0x395, 0x1801260ad\njz      short loc_1801260C4                                            ; +0x399, 0x1801260b1\ncall    _GetImageBase                                                  ; +0x39b, 0x1801260b3\nmov     rdx, rax                                                       ; +0x3a0, 0x1801260b8\nmovsxd  rax, dword ptr [rdi+20h]                                       ; +0x3a3, 0x1801260bb\nadd     rdx, rax                                                       ; +0x3a7, 0x1801260bf\njmp     short loc_1801260C7                                            ; +0x3aa, 0x1801260c2\nmov     rdx, r13; struct _s_ESTypeList *                               ; +0x3ac, 0x1801260c4\nmov     rcx, rbx; struct EHExceptionRecord *                           ; +0x3af, 0x1801260c7\ncall    ?IsInExceptionSpec@@YAEPEAUEHExceptionRecord@@PEBU_s_ESTypeList@@@Z ; +0x3b2, 0x1801260ca\ntest    al, al                                                         ; +0x3b7, 0x1801260cf\njnz     loc_180126164                                                  ; +0x3b9, 0x1801260d1\nlea     r9, [rbp+60h+var_D8]; unsigned __int64 *                       ; +0x3bf, 0x1801260d7\nmov     r8, rdi; struct _s_FuncInfo *                                  ; +0x3c3, 0x1801260db\nmov     rdx, rsi; struct _xDISPATCHER_CONTEXT *                        ; +0x3c6, 0x1801260de\nmov     rcx, r12; unsigned __int64 *                                   ; +0x3c9, 0x1801260e1\ncall    ?_GetEstablisherFrame@@YAPEA_KPEA_KPEAU_xDISPATCHER_CONTEXT@@PEBU_s_FuncInfo@@0@Z ; +0x3cc, 0x1801260e4\nmov     cl, [rbp+60h+arg_28]                                           ; +0x3d1, 0x1801260e9\nmov     r9, rax; unsigned __int64 *                                    ; +0x3d7, 0x1801260ef\nmov     r8, [rsp+160h+var_F8]; struct _CONTEXT *                       ; +0x3da, 0x1801260f2\nmov     rdx, rbx; struct EHExceptionRecord *                           ; +0x3df, 0x1801260f7\nmov     [rsp+160h+var_110], cl; char                                   ; +0x3e2, 0x1801260fa\nor      ecx, 0FFFFFFFFh                                                ; +0x3e6, 0x1801260fe\nmov     [rsp+160h+var_118], rsi; struct _xDISPATCHER_CONTEXT *         ; +0x3e9, 0x180126101\nmov     [rsp+160h+var_120], r13; struct _s_HandlerType *               ; +0x3ee, 0x180126106\nmov     dword ptr [rsp+160h+var_128], ecx; int                         ; +0x3f3, 0x18012610b\nmov     dword ptr [rsp+160h+var_130], ecx; int                         ; +0x3f7, 0x18012610f\nmov     rcx, r12; unsigned __int64 *                                   ; +0x3fb, 0x180126113\nmov     [rsp+160h+var_138], rdi; struct _s_FuncInfo *                  ; +0x3fe, 0x180126116\nmov     [rsp+160h+var_140], r13; void *                                ; +0x403, 0x18012611b\ncall    ?UnwindNestedFrames@__FrameHandler3@@SAXPEA_KPEAUEHExceptionRecord@@PEAU_CONTEXT@@0PEAXPEBU_s_FuncInfo@@HHPEBU_s_HandlerType@@PEAU_xDISPATCHER_CONTEXT@@E@Z ; +0x408, 0x180126120\njmp     short loc_180126164                                            ; +0x40d, 0x180126125\ncmp     dword ptr [rdi+0Ch], 0                                         ; +0x40f, 0x180126127\njbe     short loc_180126164                                            ; +0x413, 0x18012612b\ncmp     [rbp+60h+arg_28], 0                                            ; +0x415, 0x18012612d\njnz     loc_1801261D7                                                  ; +0x41c, 0x180126134\nmov     eax, [rbp+60h+arg_30]                                          ; +0x422, 0x18012613a\nmov     r9, rsi                                                        ; +0x428, 0x180126140\nmov     [rsp+160h+var_128], r13; int                                   ; +0x42b, 0x180126143\nmov     r8, r15                                                        ; +0x430, 0x180126148\nmov     dword ptr [rsp+160h+var_130], eax; int                         ; +0x433, 0x18012614b\nmov     rdx, r12                                                       ; +0x437, 0x18012614f\nmov     dword ptr [rsp+160h+var_138], r14d; int                        ; +0x43a, 0x180126152\nmov     rcx, rbx; struct EHExceptionRecord *                           ; +0x43f, 0x180126157\nmov     [rsp+160h+var_140], rdi; struct _s_FuncInfo *                  ; +0x442, 0x18012615a\ncall    ??$FindHandlerForForeignException@V__FrameHandler3@@@@YAXPEAUEHExceptionRecord@@PEA_KPEAU_CONTEXT@@PEAU_xDISPATCHER_CONTEXT@@PEBU_s_FuncInfo@@HH1@Z ; +0x447, 0x18012615f\ncall    __vcrt_getptd                                                  ; +0x44c, 0x180126164\ncmp     qword ptr [rax+38h], 0                                         ; +0x451, 0x180126169\njnz     short loc_1801261D7                                            ; +0x456, 0x18012616e\nmov     rcx, [rbp+60h+var_50]                                          ; +0x458, 0x180126170\nxor     rcx, rsp; StackCookie                                          ; +0x45c, 0x180126174\ncall    __security_check_cookie                                        ; +0x45f, 0x180126177\nadd     rsp, 128h                                                      ; +0x464, 0x18012617c\npop     r15                                                            ; +0x46b, 0x180126183\npop     r14                                                            ; +0x46d, 0x180126185\npop     r13                                                            ; +0x46f, 0x180126187\npop     r12                                                            ; +0x471, 0x180126189\npop     rdi                                                            ; +0x473, 0x18012618b\npop     rsi                                                            ; +0x474, 0x18012618c\npop     rbx                                                            ; +0x475, 0x18012618d\npop     rbp                                                            ; +0x476, 0x18012618e\nretn                                                                   ; +0x477, 0x18012618f\nmov     dl, 1                                                          ; +0x478, 0x180126190\nmov     rcx, rbx                                                       ; +0x47a, 0x180126192\ncall    __DestructExceptionObject                                      ; +0x47d, 0x180126195\nlea     rcx, [rbp+60h+pExceptionObject]                                ; +0x482, 0x18012619a\ncall    sub_1801267AC                                                  ; +0x486, 0x18012619e\nlea     rdx, __TI2?AVbad_exception@std@@; pThrowInfo                   ; +0x48b, 0x1801261a3\nlea     rcx, [rbp+60h+pExceptionObject]; pExceptionObject              ; +0x492, 0x1801261aa\ncall    _CxxThrowException                                             ; +0x496, 0x1801261ae\nalign 4                                                                ; +0x49b, 0x1801261b3\ncall    terminate                                                      ; +0x49c, 0x1801261b4\nalign 2                                                                ; +0x4a1, 0x1801261b9\ncall    __vcrt_getptd                                                  ; +0x4a2, 0x1801261ba\nmov     [rax+20h], rbx                                                 ; +0x4a7, 0x1801261bf\ncall    __vcrt_getptd                                                  ; +0x4ab, 0x1801261c3\nmov     rcx, [rsp+160h+var_F8]                                         ; +0x4b0, 0x1801261c8\nmov     [rax+28h], rcx                                                 ; +0x4b5, 0x1801261cd\ncall    terminate                                                      ; +0x4b9, 0x1801261d1\ndb 0CCh                                                                ; +0x4be, 0x1801261d6\ncall    abort                                                          ; +0x4bf, 0x1801261d7\ndb 0CCh                                                                ; +0x4c4, 0x1801261dc", "xrefs": ["__InternalCxxFrameHandler<__FrameHandler3> @ 0x180126744", "<???> @ 0x1802028d0"], "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"}