{"type": "func", "start": 6443711020, "end": 6443711315, "name": "_handle_error", "pseudocode": "// \n// _handle_error from 0x180133a2c to 0x180133b53 (295 bytes)\n// \n// 2 xrefs:\n// > _log_special_common @ 0x180133e14\n// > <???> @ 0x1802031b8\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\ndouble __fastcall handle_error(\n        __int64 a1,\n        int a2,\n        __int64 a3,\n        int a4,\n        int a5,\n        unsigned int a6,\n        double a7,\n        __int64 a8,\n        int a9)\n{\n  BOOL v13; // eax\n  __int64 v14; // xmm6_8\n  __int64 v16; // [rsp+48h] [rbp-A1h] BYREF\n  double v17[2]; // [rsp+50h] [rbp-99h] BYREF\n  _QWORD v18[8]; // [rsp+68h] [rbp-81h] BYREF\n  unsigned int v19; // [rsp+A8h] [rbp-41h]\n\n  v16 = ctrlfp(8064, 65472);\n  *(_QWORD *)&v17[1] = a3;\n  *(_QWORD *)&v17[0] = a3;\n  v13 = exception_enabled(a5, v16);\n  v14 = a8;\n  if ( !v13 )\n  {\n    if ( a9 == 2 )\n    {\n      v18[6] = a8;\n      v19 = v19 & 0xFFFFFFE0 | 3;\n    }\n    raise_exc((int)v18, (int)&v16, a5, a2, (__int64)&a7, (__int64)v17);\n  }\n  if ( (unsigned __int8)_acrt_has_user_matherr() && a4 )\n    return call_matherr(a4, a6, a1, a7, v14, v17[0], v16);\n  set_errno_from_matherr(a4);\n  ctrlfp(v16, 65472);\n  return v17[0];\n}", "assembly": "; \n; _handle_error from 0x180133a2c to 0x180133b53 (295 bytes)\n; \n; 2 xrefs:\n; > _log_special_common @ 0x180133e14\n; > <???> @ 0x1802031b8\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, 0x180133a2c\npush    rbp                                                            ; +0x3, 0x180133a2f\npush    rbx                                                            ; +0x4, 0x180133a30\npush    rsi                                                            ; +0x5, 0x180133a31\npush    rdi                                                            ; +0x6, 0x180133a32\npush    r14                                                            ; +0x7, 0x180133a33\nlea     rbp, [rax-37h]                                                 ; +0x9, 0x180133a35\nsub     rsp, 0F0h                                                      ; +0xd, 0x180133a39\nmovaps  xmmword ptr [rax-38h], xmm6                                    ; +0x14, 0x180133a40\nmov     rax, cs:__security_cookie                                      ; +0x18, 0x180133a44\nxor     rax, rsp                                                       ; +0x1f, 0x180133a4b\nmov     [rbp+2Fh+var_40], rax                                          ; +0x22, 0x180133a4e\nmov     esi, edx                                                       ; +0x26, 0x180133a52\nmov     r14, rcx                                                       ; +0x28, 0x180133a54\nmov     edx, 0FFC0h                                                    ; +0x2b, 0x180133a57\nmov     ecx, 1F80h                                                     ; +0x30, 0x180133a5c\nmov     edi, r9d                                                       ; +0x35, 0x180133a61\nmov     rbx, r8                                                        ; +0x38, 0x180133a64\ncall    _ctrlfp                                                        ; +0x3b, 0x180133a67\nmov     ecx, [rbp+2Fh+arg_20]                                          ; +0x40, 0x180133a6c\nmov     [rsp+110h+var_D0], rax                                         ; +0x43, 0x180133a6f\nmov     [rsp+110h+var_C8+8], rbx                                       ; +0x48, 0x180133a74\nmovsd   xmm0, [rsp+110h+var_C8+8]                                      ; +0x4d, 0x180133a79\nmov     rdx, [rsp+110h+var_D0]                                         ; +0x53, 0x180133a7f\nmovsd   [rsp+110h+var_C8], xmm0                                        ; +0x58, 0x180133a84\ncall    _exception_enabled                                             ; +0x5e, 0x180133a8a\nmovsd   xmm6, [rbp+2Fh+arg_38]                                         ; +0x63, 0x180133a8f\ntest    eax, eax                                                       ; +0x68, 0x180133a94\njnz     short loc_180133AD8                                            ; +0x6a, 0x180133a96\ncmp     [rbp+2Fh+arg_40], 2                                            ; +0x6c, 0x180133a98\njnz     short loc_180133AAF                                            ; +0x70, 0x180133a9c\nmov     eax, [rbp+2Fh+var_70]                                          ; +0x72, 0x180133a9e\nand     eax, 0FFFFFFE3h                                                ; +0x75, 0x180133aa1\nmovsd   [rbp+2Fh+var_80], xmm6                                         ; +0x78, 0x180133aa4\nor      eax, 3                                                         ; +0x7d, 0x180133aa9\nmov     [rbp+2Fh+var_70], eax                                          ; +0x80, 0x180133aac\nmov     r8d, [rbp+2Fh+arg_20]                                          ; +0x83, 0x180133aaf\nlea     rax, [rsp+110h+var_C8]                                         ; +0x87, 0x180133ab3\nmov     [rsp+110h+var_E8], rax                                         ; +0x8c, 0x180133ab8\nlea     rdx, [rsp+110h+var_D0]                                         ; +0x91, 0x180133abd\nlea     rax, [rbp+2Fh+arg_30]                                          ; +0x96, 0x180133ac2\nmov     r9d, esi                                                       ; +0x9a, 0x180133ac6\nlea     rcx, [rsp+60h]                                                 ; +0x9d, 0x180133ac9\nmov     [rsp+110h+var_F0], rax                                         ; +0xa2, 0x180133ace\ncall    _raise_exc                                                     ; +0xa7, 0x180133ad3\ncall    __acrt_has_user_matherr                                        ; +0xac, 0x180133ad8\ntest    al, al                                                         ; +0xb1, 0x180133add\njz      short loc_180133B15                                            ; +0xb3, 0x180133adf\ntest    edi, edi                                                       ; +0xb5, 0x180133ae1\njz      short loc_180133B15                                            ; +0xb7, 0x180133ae3\nmov     rax, [rsp+110h+var_D0]                                         ; +0xb9, 0x180133ae5\nmov     r8, r14                                                        ; +0xbe, 0x180133aea\nmovsd   xmm0, [rsp+110h+var_C8]                                        ; +0xc1, 0x180133aed\nmov     ecx, edi                                                       ; +0xc7, 0x180133af3\nmovsd   xmm3, [rbp+2Fh+arg_30]                                         ; +0xc9, 0x180133af5\nmov     edx, [rbp+2Fh+arg_28]                                          ; +0xce, 0x180133afa\nmov     [rsp+30h], rax                                                 ; +0xd1, 0x180133afd\nmovsd   [rsp+110h+var_E8], xmm0                                        ; +0xd6, 0x180133b02\nmovsd   [rsp+110h+var_F0], xmm6                                        ; +0xdc, 0x180133b08\ncall    _call_matherr                                                  ; +0xe2, 0x180133b0e\njmp     short loc_180133B31                                            ; +0xe7, 0x180133b13\nmov     ecx, edi                                                       ; +0xe9, 0x180133b15\ncall    _set_errno_from_matherr                                        ; +0xeb, 0x180133b17\nmov     rcx, [rsp+110h+var_D0]                                         ; +0xf0, 0x180133b1c\nmov     edx, 0FFC0h                                                    ; +0xf5, 0x180133b21\ncall    _ctrlfp                                                        ; +0xfa, 0x180133b26\nmovsd   xmm0, [rsp+110h+var_C8]                                        ; +0xff, 0x180133b2b\nmov     rcx, [rbp+2Fh+var_40]                                          ; +0x105, 0x180133b31\nxor     rcx, rsp; StackCookie                                          ; +0x109, 0x180133b35\ncall    __security_check_cookie                                        ; +0x10c, 0x180133b38\nmovaps  xmm6, [rsp+110h+var_38+8]                                      ; +0x111, 0x180133b3d\nadd     rsp, 0F0h                                                      ; +0x119, 0x180133b45\npop     r14                                                            ; +0x120, 0x180133b4c\npop     rdi                                                            ; +0x122, 0x180133b4e\npop     rsi                                                            ; +0x123, 0x180133b4f\npop     rbx                                                            ; +0x124, 0x180133b50\npop     rbp                                                            ; +0x125, 0x180133b51\nretn                                                                   ; +0x126, 0x180133b52", "xrefs": ["_log_special_common @ 0x180133e14", "<???> @ 0x1802031b8"], "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"}