{"type": "func", "start": 6443652292, "end": 6443652611, "name": "__FrameHandler3::GetRangeOfTrysToCheck", "pseudocode": "// \n// __FrameHandler3::GetRangeOfTrysToCheck from 0x1801254c4 to 0x180125603 (319 bytes)\n// \n// 3 xrefs:\n// > FindHandler<__FrameHandler3> @ 0x180125ec0\n// > FindHandlerForForeignException<__FrameHandler3> @ 0x1801262d1\n// > <???> @ 0x180202810\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_OWORD *__fastcall __FrameHandler3::GetRangeOfTrysToCheck(\n        _OWORD *a1,\n        __int64 a2,\n        int a3,\n        struct _xDISPATCHER_CONTEXT *a4,\n        struct _s_FuncInfo *a5)\n{\n  unsigned int nTryBlocks; // r14d\n  int v10; // eax\n  int v11; // r10d\n  int v12; // esi\n  __int64 ImageBase; // r8\n  __int64 dispTryBlockMap; // r11\n  int v15; // r9d\n  int v16; // r13d\n  unsigned int v17; // edx\n  __int64 v18; // rbx\n  __int64 v19; // rax\n  __int64 v20; // rdx\n  _DWORD *v21; // rcx\n  unsigned int i; // r8d\n  int v23; // eax\n  int v24; // eax\n  __int128 v26; // [rsp+20h] [rbp-48h]\n  __int128 v27; // [rsp+30h] [rbp-38h]\n\n  nTryBlocks = a5->nTryBlocks;\n  v10 = __FrameHandler3::StateFromControlPc(a5, a4);\n  v11 = 0;\n  v12 = v10;\n  if ( !nTryBlocks )\n    abort();\n  ImageBase = a4->ImageBase;\n  dispTryBlockMap = a5->dispTryBlockMap;\n  v15 = -1;\n  v16 = -1;\n  v17 = nTryBlocks;\n  while ( 1 )\n  {\n    v18 = v17 - 1;\n    v19 = ImageBase + 20 * v18;\n    if ( v12 > *(_DWORD *)(v19 + dispTryBlockMap + 4) && v12 <= *(_DWORD *)(v19 + dispTryBlockMap + 8) )\n      break;\n    --v17;\n    if ( !(_DWORD)v18 )\n    {\n      v20 = 0;\n      goto LABEL_8;\n    }\n  }\n  v20 = ImageBase + dispTryBlockMap + 20LL * (v17 - 1);\nLABEL_8:\n  v21 = (_DWORD *)(ImageBase + dispTryBlockMap);\n  for ( i = 0; i < nTryBlocks; ++i )\n  {\n    if ( (!v20 || *v21 > *(_DWORD *)(v20 + 4) && v21[1] <= *(_DWORD *)(v20 + 8)) && a3 >= *v21 && a3 <= v21[1] )\n    {\n      v23 = i;\n      v16 = i;\n      if ( v15 != -1 )\n        v23 = v15;\n      v15 = v23;\n    }\n    v21 += 5;\n  }\n  *(_QWORD *)&v26 = a2;\n  v24 = 0;\n  *(_QWORD *)&v27 = a2;\n  if ( v15 != -1 )\n    v24 = v15;\n  DWORD2(v26) = v24;\n  if ( v15 != -1 )\n    v11 = v16 + 1;\n  DWORD2(v27) = v11;\n  *a1 = v26;\n  a1[1] = v27;\n  return a1;\n}", "assembly": "; \n; __FrameHandler3::GetRangeOfTrysToCheck from 0x1801254c4 to 0x180125603 (319 bytes)\n; \n; 3 xrefs:\n; > FindHandler<__FrameHandler3> @ 0x180125ec0\n; > FindHandlerForForeignException<__FrameHandler3> @ 0x1801262d1\n; > <???> @ 0x180202810\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, 0x1801254c4\nmov     [rsp+arg_8], rbp                                               ; +0x5, 0x1801254c9\nmov     [rsp+arg_10], rsi                                              ; +0xa, 0x1801254ce\npush    rdi                                                            ; +0xf, 0x1801254d3\npush    r12                                                            ; +0x10, 0x1801254d4\npush    r13                                                            ; +0x12, 0x1801254d6\npush    r14                                                            ; +0x14, 0x1801254d8\npush    r15                                                            ; +0x16, 0x1801254da\nsub     rsp, 40h                                                       ; +0x18, 0x1801254dc\nmov     rbx, [rsp+68h+arg_20]                                          ; +0x1c, 0x1801254e0\nmov     r12, rdx                                                       ; +0x24, 0x1801254e8\nmov     rbp, rcx                                                       ; +0x27, 0x1801254eb\nmov     rdx, r9; struct _xDISPATCHER_CONTEXT *                         ; +0x2a, 0x1801254ee\nmov     rcx, rbx; struct _s_FuncInfo *                                 ; +0x2d, 0x1801254f1\nmov     rdi, r9                                                        ; +0x30, 0x1801254f4\nmov     r15d, r8d                                                      ; +0x33, 0x1801254f7\nmov     r14d, [rbx+0Ch]                                                ; +0x36, 0x1801254fa\ncall    ?StateFromControlPc@__FrameHandler3@@SAHPEBU_s_FuncInfo@@PEAU_xDISPATCHER_CONTEXT@@@Z ; +0x3a, 0x1801254fe\nxor     r10d, r10d                                                     ; +0x3f, 0x180125503\nmov     esi, eax                                                       ; +0x42, 0x180125506\ntest    r14d, r14d                                                     ; +0x44, 0x180125508\njz      loc_1801255FD                                                  ; +0x47, 0x18012550b\nmov     r8, [rdi+8]                                                    ; +0x4d, 0x180125511\nor      eax, 0FFFFFFFFh                                                ; +0x51, 0x180125515\nmovsxd  r11, dword ptr [rbx+10h]                                       ; +0x54, 0x180125518\nmov     r9d, eax                                                       ; +0x58, 0x18012551c\nmov     r13d, eax                                                      ; +0x5b, 0x18012551f\nmov     edx, r14d                                                      ; +0x5e, 0x180125522\nlea     ebx, [rdx-1]                                                   ; +0x61, 0x180125525\nlea     rcx, [rbx+rbx*4]                                               ; +0x64, 0x180125528\nlea     rax, [r8+rcx*4]                                                ; +0x68, 0x18012552c\ncmp     esi, [rax+r11+4]                                               ; +0x6c, 0x180125530\njle     short loc_18012553E                                            ; +0x71, 0x180125535\ncmp     esi, [rax+r11+8]                                               ; +0x73, 0x180125537\njle     short loc_18012554A                                            ; +0x78, 0x18012553c\nmov     edx, ebx                                                       ; +0x7a, 0x18012553e\nmov     eax, ebx                                                       ; +0x7c, 0x180125540\ntest    ebx, ebx                                                       ; +0x7e, 0x180125542\njnz     short loc_180125525                                            ; +0x80, 0x180125544\ntest    eax, eax                                                       ; +0x82, 0x180125546\njz      short loc_18012555A                                            ; +0x84, 0x180125548\nlea     eax, [rdx-1]                                                   ; +0x86, 0x18012554a\nlea     rax, [rax+rax*4]                                               ; +0x89, 0x18012554d\nlea     rdx, [r11+rax*4]                                               ; +0x8d, 0x180125551\nadd     rdx, r8                                                        ; +0x91, 0x180125555\njmp     short loc_18012555D                                            ; +0x94, 0x180125558\nmov     rdx, r10                                                       ; +0x96, 0x18012555a\nlea     rcx, [r8+r11]                                                  ; +0x99, 0x18012555d\nmov     r8d, r10d                                                      ; +0x9d, 0x180125561\nor      r11d, 0FFFFFFFFh                                               ; +0xa0, 0x180125564\ntest    rdx, rdx                                                       ; +0xa4, 0x180125568\njz      short loc_18012557C                                            ; +0xa7, 0x18012556b\nmov     eax, [rdx+4]                                                   ; +0xa9, 0x18012556d\ncmp     [rcx], eax                                                     ; +0xac, 0x180125570\njle     short loc_180125597                                            ; +0xae, 0x180125572\nmov     eax, [rdx+8]                                                   ; +0xb0, 0x180125574\ncmp     [rcx+4], eax                                                   ; +0xb3, 0x180125577\njg      short loc_180125597                                            ; +0xb6, 0x18012557a\ncmp     r15d, [rcx]                                                    ; +0xb8, 0x18012557c\njl      short loc_180125597                                            ; +0xbb, 0x18012557f\ncmp     r15d, [rcx+4]                                                  ; +0xbd, 0x180125581\njg      short loc_180125597                                            ; +0xc1, 0x180125585\ncmp     r9d, r11d                                                      ; +0xc3, 0x180125587\nmov     eax, r8d                                                       ; +0xc6, 0x18012558a\nmov     r13d, r8d                                                      ; +0xc9, 0x18012558d\ncmovnz  eax, r9d                                                       ; +0xcc, 0x180125590\nmov     r9d, eax                                                       ; +0xd0, 0x180125594\ninc     r8d                                                            ; +0xd3, 0x180125597\nadd     rcx, 14h                                                       ; +0xd6, 0x18012559a\ncmp     r8d, r14d                                                      ; +0xda, 0x18012559e\njb      short loc_180125568                                            ; +0xdd, 0x1801255a1\ncmp     r9d, r11d                                                      ; +0xdf, 0x1801255a3\nmov     qword ptr [rsp+68h+var_48], r12                                ; +0xe2, 0x1801255a6\nmov     eax, r10d                                                      ; +0xe7, 0x1801255ab\nmov     qword ptr [rsp+68h+var_38], r12                                ; +0xea, 0x1801255ae\ncmovnz  eax, r9d                                                       ; +0xef, 0x1801255b3\nlea     r11, [rsp+68h+var_28]                                          ; +0xf3, 0x1801255b7\nmov     rbx, [r11+30h]                                                 ; +0xf8, 0x1801255bc\nmov     rsi, [r11+40h]                                                 ; +0xfc, 0x1801255c0\nmov     dword ptr [rsp+68h+var_48+8], eax                              ; +0x100, 0x1801255c4\nlea     eax, [r13+1]                                                   ; +0x104, 0x1801255c8\nmovups  xmm0, [rsp+68h+var_48]                                         ; +0x108, 0x1801255cc\ncmovnz  r10d, eax                                                      ; +0x10d, 0x1801255d1\nmov     rax, rbp                                                       ; +0x111, 0x1801255d5\nmov     dword ptr [rsp+68h+var_38+8], r10d                             ; +0x114, 0x1801255d8\nmovups  xmm1, [rsp+68h+var_38]                                         ; +0x119, 0x1801255dd\nmovdqu  xmmword ptr [rbp+0], xmm0                                      ; +0x11e, 0x1801255e2\nmovdqu  xmmword ptr [rbp+10h], xmm1                                    ; +0x123, 0x1801255e7\nmov     rbp, [r11+38h]                                                 ; +0x128, 0x1801255ec\nmov     rsp, r11                                                       ; +0x12c, 0x1801255f0\npop     r15                                                            ; +0x12f, 0x1801255f3\npop     r14                                                            ; +0x131, 0x1801255f5\npop     r13                                                            ; +0x133, 0x1801255f7\npop     r12                                                            ; +0x135, 0x1801255f9\npop     rdi                                                            ; +0x137, 0x1801255fb\nretn                                                                   ; +0x138, 0x1801255fc\ncall    abort                                                          ; +0x139, 0x1801255fd\ndb 0CCh                                                                ; +0x13e, 0x180125602", "xrefs": ["FindHandler<__FrameHandler3> @ 0x180125ec0", "FindHandlerForForeignException<__FrameHandler3> @ 0x1801262d1", "<???> @ 0x180202810"], "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"}