{"type": "func", "start": 6443656184, "end": 6443656501, "name": "TypeMatchHelper<__FrameHandler3>", "pseudocode": "// \n// TypeMatchHelper<__FrameHandler3> from 0x1801263f8 to 0x180126535 (317 bytes)\n// \n// 3 xrefs:\n// > FindHandler<__FrameHandler3> @ 0x180125fb8\n// > IsInExceptionSpec @ 0x180126dd6\n// > <???> @ 0x1802028e8\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 TypeMatchHelper<__FrameHandler3>(__int64 a1, __int64 a2, _BYTE *a3)\n{\n  unsigned int v3; // ebx\n  __int64 v7; // rsi\n  __int64 v8; // rcx\n  __int64 v9; // rsi\n  __int64 v10; // rcx\n  __int64 v11; // rsi\n  __int64 v12; // rcx\n  __int64 v13; // rsi\n  __int64 v14; // r8\n  unsigned __int8 *v15; // rax\n  __int64 v16; // r8\n  int v17; // edx\n  int v18; // ecx\n\n  v3 = 0;\n  if ( !*(_DWORD *)(a1 + 4) )\n    return 1;\n  v7 = *(int *)(a1 + 4);\n  if ( !(v7 + GetImageBase(a1)) )\n    return 1;\n  if ( (_DWORD)v7 )\n  {\n    v9 = *(int *)(a1 + 4);\n    v10 = v9 + GetImageBase(v8);\n  }\n  else\n  {\n    v10 = 0;\n    LODWORD(v9) = 0;\n  }\n  if ( !*(_BYTE *)(v10 + 16) || *(char *)a1 < 0 && (*(_BYTE *)a2 & 0x10) != 0 )\n    return 1;\n  if ( (_DWORD)v9 )\n    v11 = *(int *)(a1 + 4) + GetImageBase(v10);\n  else\n    v11 = 0;\n  v12 = *(int *)(a2 + 4) + GetThrowImageBase(v10);\n  if ( v11 != v12 )\n  {\n    v13 = *(_DWORD *)(a1 + 4) ? *(int *)(a1 + 4) + GetImageBase(v12) : 0LL;\n    v14 = GetThrowImageBase(v12) + *(int *)(a2 + 4) + 16LL;\n    v15 = (unsigned __int8 *)(v13 + 16);\n    v16 = v14 - (v13 + 16);\n    do\n    {\n      v17 = v15[v16];\n      v18 = *v15 - v17;\n      if ( v18 )\n        break;\n      ++v15;\n    }\n    while ( v17 );\n    if ( v18 )\n      return 0;\n  }\n  if ( ((*(_BYTE *)a2 & 2) == 0 || (*(_BYTE *)a1 & 8) != 0)\n    && ((*a3 & 1) == 0 || (*(_BYTE *)a1 & 1) != 0)\n    && ((*a3 & 4) == 0 || (*(_BYTE *)a1 & 4) != 0)\n    && ((*a3 & 2) == 0 || (*(_BYTE *)a1 & 2) != 0) )\n  {\n    return 1;\n  }\n  return v3;\n}", "assembly": "; \n; TypeMatchHelper<__FrameHandler3> from 0x1801263f8 to 0x180126535 (317 bytes)\n; \n; 3 xrefs:\n; > FindHandler<__FrameHandler3> @ 0x180125fb8\n; > IsInExceptionSpec @ 0x180126dd6\n; > <???> @ 0x1802028e8\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, 0x1801263f8\nmov     [rax+8], rbx                                                   ; +0x3, 0x1801263fb\nmov     [rax+10h], rbp                                                 ; +0x7, 0x1801263ff\nmov     [rax+18h], rsi                                                 ; +0xb, 0x180126403\nmov     [rax+20h], rdi                                                 ; +0xf, 0x180126407\npush    r14                                                            ; +0x13, 0x18012640b\nsub     rsp, 20h                                                       ; +0x15, 0x18012640d\nxor     ebx, ebx                                                       ; +0x19, 0x180126411\nmov     r14, r8                                                        ; +0x1b, 0x180126413\nmov     rbp, rdx                                                       ; +0x1e, 0x180126416\nmov     rdi, rcx                                                       ; +0x21, 0x180126419\ncmp     [rcx+4], ebx                                                   ; +0x24, 0x18012641c\njz      loc_180126515                                                  ; +0x27, 0x18012641f\nmovsxd  rsi, dword ptr [rcx+4]                                         ; +0x2d, 0x180126425\ncall    _GetImageBase                                                  ; +0x31, 0x180126429\nmov     r9, rax                                                        ; +0x36, 0x18012642e\nadd     r9, rsi                                                        ; +0x39, 0x180126431\njz      loc_180126515                                                  ; +0x3c, 0x180126434\ntest    esi, esi                                                       ; +0x42, 0x18012643a\njz      short loc_18012644D                                            ; +0x44, 0x18012643c\nmovsxd  rsi, dword ptr [rdi+4]                                         ; +0x46, 0x18012643e\ncall    _GetImageBase                                                  ; +0x4a, 0x180126442\nlea     rcx, [rsi+rax]                                                 ; +0x4f, 0x180126447\njmp     short loc_180126452                                            ; +0x53, 0x18012644b\nmov     rcx, rbx                                                       ; +0x55, 0x18012644d\nmov     esi, ebx                                                       ; +0x58, 0x180126450\ncmp     [rcx+10h], bl                                                  ; +0x5a, 0x180126452\njz      loc_180126515                                                  ; +0x5d, 0x180126455\ntest    byte ptr [rdi], 80h                                            ; +0x63, 0x18012645b\njz      short loc_18012646A                                            ; +0x66, 0x18012645e\ntest    byte ptr [rbp+0], 10h                                          ; +0x68, 0x180126460\njnz     loc_180126515                                                  ; +0x6c, 0x180126464\ntest    esi, esi                                                       ; +0x72, 0x18012646a\njz      short loc_18012647F                                            ; +0x74, 0x18012646c\ncall    _GetImageBase                                                  ; +0x76, 0x18012646e\nmov     rsi, rax                                                       ; +0x7b, 0x180126473\nmovsxd  rax, dword ptr [rdi+4]                                         ; +0x7e, 0x180126476\nadd     rsi, rax                                                       ; +0x82, 0x18012647a\njmp     short loc_180126482                                            ; +0x85, 0x18012647d\nmov     rsi, rbx                                                       ; +0x87, 0x18012647f\ncall    _GetThrowImageBase                                             ; +0x8a, 0x180126482\nmov     rcx, rax                                                       ; +0x8f, 0x180126487\nmovsxd  rax, dword ptr [rbp+4]                                         ; +0x92, 0x18012648a\nadd     rcx, rax                                                       ; +0x96, 0x18012648e\ncmp     rsi, rcx                                                       ; +0x99, 0x180126491\njz      short loc_1801264E1                                            ; +0x9c, 0x180126494\ncmp     [rdi+4], ebx                                                   ; +0x9e, 0x180126496\njz      short loc_1801264AC                                            ; +0xa1, 0x180126499\ncall    _GetImageBase                                                  ; +0xa3, 0x18012649b\nmov     rsi, rax                                                       ; +0xa8, 0x1801264a0\nmovsxd  rax, dword ptr [rdi+4]                                         ; +0xab, 0x1801264a3\nadd     rsi, rax                                                       ; +0xaf, 0x1801264a7\njmp     short loc_1801264AF                                            ; +0xb2, 0x1801264aa\nmov     rsi, rbx                                                       ; +0xb4, 0x1801264ac\ncall    _GetThrowImageBase                                             ; +0xb7, 0x1801264af\nmovsxd  r8, dword ptr [rbp+4]                                          ; +0xbc, 0x1801264b4\nadd     r8, 10h                                                        ; +0xc0, 0x1801264b8\nadd     r8, rax                                                        ; +0xc4, 0x1801264bc\nlea     rax, [rsi+10h]                                                 ; +0xc7, 0x1801264bf\nsub     r8, rax                                                        ; +0xcb, 0x1801264c3\nmovzx   ecx, byte ptr [rax]                                            ; +0xce, 0x1801264c6\nmovzx   edx, byte ptr [rax+r8]                                         ; +0xd1, 0x1801264c9\nsub     ecx, edx                                                       ; +0xd6, 0x1801264ce\njnz     short loc_1801264D9                                            ; +0xd8, 0x1801264d0\ninc     rax                                                            ; +0xda, 0x1801264d2\ntest    edx, edx                                                       ; +0xdd, 0x1801264d5\njnz     short loc_1801264C6                                            ; +0xdf, 0x1801264d7\ntest    ecx, ecx                                                       ; +0xe1, 0x1801264d9\njz      short loc_1801264E1                                            ; +0xe3, 0x1801264db\nxor     eax, eax                                                       ; +0xe5, 0x1801264dd\njmp     short loc_18012651A                                            ; +0xe7, 0x1801264df\nmov     al, 2                                                          ; +0xe9, 0x1801264e1\ntest    [rbp+0], al                                                    ; +0xeb, 0x1801264e3\njz      short loc_1801264ED                                            ; +0xee, 0x1801264e6\ntest    byte ptr [rdi], 8                                              ; +0xf0, 0x1801264e8\njz      short loc_180126511                                            ; +0xf3, 0x1801264eb\ntest    byte ptr [r14], 1                                              ; +0xf5, 0x1801264ed\njz      short loc_1801264F8                                            ; +0xf9, 0x1801264f1\ntest    byte ptr [rdi], 1                                              ; +0xfb, 0x1801264f3\njz      short loc_180126511                                            ; +0xfe, 0x1801264f6\ntest    byte ptr [r14], 4                                              ; +0x100, 0x1801264f8\njz      short loc_180126503                                            ; +0x104, 0x1801264fc\ntest    byte ptr [rdi], 4                                              ; +0x106, 0x1801264fe\njz      short loc_180126511                                            ; +0x109, 0x180126501\ntest    [r14], al                                                      ; +0x10b, 0x180126503\njz      short loc_18012650C                                            ; +0x10e, 0x180126506\ntest    [rdi], al                                                      ; +0x110, 0x180126508\njz      short loc_180126511                                            ; +0x112, 0x18012650a\nmov     ebx, 1                                                         ; +0x114, 0x18012650c\nmov     eax, ebx                                                       ; +0x119, 0x180126511\njmp     short loc_18012651A                                            ; +0x11b, 0x180126513\nmov     eax, 1                                                         ; +0x11d, 0x180126515\nmov     rbx, [rsp+28h+arg_0]                                           ; +0x122, 0x18012651a\nmov     rbp, [rsp+28h+arg_8]                                           ; +0x127, 0x18012651f\nmov     rsi, [rsp+28h+arg_10]                                          ; +0x12c, 0x180126524\nmov     rdi, [rsp+28h+arg_18]                                          ; +0x131, 0x180126529\nadd     rsp, 20h                                                       ; +0x136, 0x18012652e\npop     r14                                                            ; +0x13a, 0x180126532\nretn                                                                   ; +0x13c, 0x180126534", "xrefs": ["FindHandler<__FrameHandler3> @ 0x180125fb8", "IsInExceptionSpec @ 0x180126dd6", "<???> @ 0x1802028e8"], "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"}